Skip to content
index.html 61.5 KiB
Newer Older
            Service Ordering
          </label>
          <ul class="md-nav__list" data-md-scrollfix>
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../../service_ordering/ordering_services/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    Ordering Services from catalogs
  </span>
  

      </a>
    </li>
  

              
            
          </ul>
        </nav>
      
    </li>
  

    
      
      
  
  
  
  
    
    
    
    
    <li class="md-nav__item md-nav__item--nested">
      
        
        
        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6" >
        
          
          <label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0">
            
  
  <span class="md-ellipsis">
    Design & Architecture
  </span>
  

            <span class="md-nav__icon md-icon"></span>
          </label>
        
        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
          <label class="md-nav__title" for="__nav_6">
            <span class="md-nav__icon md-icon"></span>
            Design & Architecture
          </label>
          <ul class="md-nav__list" data-md-scrollfix>
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../../architecture/architecture/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    Architecture
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../../architecture/cridge/cridge_introduction/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    CRIDGE
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../../architecture/messagebus/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    Message bus
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../../architecture/oauth/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    Authentication
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    
    
    
    
    <li class="md-nav__item md-nav__item--nested">
      
        
        
        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6_6" >
        
          
          <label class="md-nav__link" for="__nav_6_6" id="__nav_6_6_label" tabindex="0">
            
  
  <span class="md-ellipsis">
    APIs
  </span>
  

            <span class="md-nav__icon md-icon"></span>
          </label>
        
        <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_6_6_label" aria-expanded="false">
          <label class="md-nav__title" for="__nav_6_6">
            <span class="md-nav__icon md-icon"></span>
            APIs
          </label>
          <ul class="md-nav__list" data-md-scrollfix>
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../../architecture/tmfapi/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    TMF API
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../../architecture/nfvapi/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    NFV API
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../../architecture/centrallog/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    Central logging
  </span>
  

      </a>
    </li>
  

              
            
          </ul>
        </nav>
      
    </li>
  

    
      
      
  
  
  
  
    
    
    
    
    <li class="md-nav__item md-nav__item--nested">
      
        
        
        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7" >
        
          
          <label class="md-nav__link" for="__nav_7" id="__nav_7_label" tabindex="0">
            
  
  <span class="md-ellipsis">
    Contributing to OSL
  </span>
  

            <span class="md-nav__icon md-icon"></span>
          </label>
        
        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false">
          <label class="md-nav__title" for="__nav_7">
            <span class="md-nav__icon md-icon"></span>
            Contributing to OSL
          </label>
          <ul class="md-nav__list" data-md-scrollfix>
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../../contributing/developing/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    Developing
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../../contributing/documenting/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    Documenting
  </span>
  

      </a>
    </li>
  

    
  </ul>
</nav>
                  </div>
                </div>
              </div>
            
            
              
              <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
                <div class="md-sidebar__scrollwrap">
                  <div class="md-sidebar__inner">
                    

<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
  
  
  
    
  
  
    <label class="md-nav__title" for="__toc">
      <span class="md-nav__icon md-icon"></span>
      Table of contents
    </label>
    <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
      
        <li class="md-nav__item">
  <a href="#introduction-in-openslice-lcm" class="md-nav__link">
    <span class="md-ellipsis">
      Introduction in OpenSlice LCM
    </span>
  </a>
  
    <nav class="md-nav" aria-label="Introduction in OpenSlice LCM">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#0-preparation-phase" class="md-nav__link">
    <span class="md-ellipsis">
      0. Preparation Phase
    </span>
  </a>
  
    <nav class="md-nav" aria-label="0. Preparation Phase">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#service-design" class="md-nav__link">
    <span class="md-ellipsis">
      Service Design:
    </span>
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
          <li class="md-nav__item">
  <a href="#1-instantiation-phase" class="md-nav__link">
    <span class="md-ellipsis">
      1. Instantiation Phase
    </span>
  </a>
  
    <nav class="md-nav" aria-label="1. Instantiation Phase">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#service-instantiation" class="md-nav__link">
    <span class="md-ellipsis">
      Service Instantiation:
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#service-deployment" class="md-nav__link">
    <span class="md-ellipsis">
      Service Deployment:
    </span>
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
          <li class="md-nav__item">
  <a href="#2-operation-phase" class="md-nav__link">
    <span class="md-ellipsis">
      2. Operation Phase
    </span>
  </a>
  
    <nav class="md-nav" aria-label="2. Operation Phase">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#service-operation" class="md-nav__link">
    <span class="md-ellipsis">
      Service Operation:
    </span>
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
          <li class="md-nav__item">
  <a href="#3-decommissioning-phase" class="md-nav__link">
    <span class="md-ellipsis">
      3. Decommissioning Phase
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#high-level-example-enhanced-mobile-broadband-embb-service-lifecycle" class="md-nav__link">
    <span class="md-ellipsis">
      High level example: Enhanced Mobile Broadband (eMBB) Service Lifecycle
    </span>
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
      
        <li class="md-nav__item">
  <a href="#probe-further" class="md-nav__link">
    <span class="md-ellipsis">
      Probe further
    </span>
  </a>
  
</li>
      
    </ul>
  
</nav>
                  </div>
                </div>
              </div>
            
          
          
            <div class="md-content" data-md-component="content">
              <article class="md-content__inner md-typeset">
                
                  


<h1 id="lifecycle-management-lcm">Lifecycle Management - LCM</h1>
<p><strong>Intended Audience: OpenSlice Service Designers</strong></p>
<p>Lifecycle Management: The orchestration framework handles the activation, termination and any necessary modifications throughout the service lifecycle.</p>
<p>In OpenSlice the Lifecycle of a service follows in general the concept of Network Slice lifecycle as defined by 3GPP.</p>
<p><a class="glightbox" href="../lcm/img01.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="lcm" src="../lcm/img01.png" /></a></p>
<h2 id="introduction-in-openslice-lcm">Introduction in OpenSlice LCM</h2>
<p>OpenSlice adopted the LCM model by 3GPP and mapped to the TMF model service state. Next we discuss briefly the process and the relationships.</p>
<p>The lifecycle of a service, particularly in the context of Network Service lifecycle encompasses several stages that ensure the service is effectively planned, deployed, managed, and eventually decommissioned. </p>
<p>Here is an overview of these stages and relationships with OpenSlice:</p>
<h3 id="0-preparation-phase">0. Preparation Phase</h3>
<p>This phase is performed by Service Designers</p>
<h4 id="service-design">Service Design:</h4>
<ul>
<li><strong>Requirements Gathering:</strong> Collect service requirements from stakeholders, including performance metrics, quality of service (QoS), security needs, and geographical coverage.</li>
<li><strong>Service Specification:</strong> Define the service in terms of functionalities, attributes, and dependencies. This can be formalized using standardized templates such as the GSMA Generic Slice Template (GST).</li>
<li><strong>Resource Planning:</strong> Identify and plan the required resources, including network functions, computing power, storage, and connectivity, inclluding network function configurations.</li>
<li><strong>Expose to Service Catalog</strong>:  Expose to service catalog for user ordering.</li>
</ul>
<p><strong>Next phases are handled by the Service Orchestrator after a service is scheduled for instantiation</strong></p>
<p><strong>If it is a bundle of services, each services follows its own Lifecycle!</strong></p>
<h3 id="1-instantiation-phase">1. Instantiation Phase</h3>
<h4 id="service-instantiation">Service Instantiation:</h4>
<ul>
<li><strong>Configuration:</strong> Configure the network service according to the specifications including the user requirements from the service order, ensuring that all components are correctly set up to provide the desired service.</li>
<li><strong>Resource Allocation - Feasibility check:</strong> Allocate the necessary physical and virtual resources based on the service specification. This includes any containerized resources, virtual network functions (VNFs) and software-defined networking (SDN) components. (This step is not performed in OpenSlice)</li>
<li>OpenSlice Service Orchestrator creates the services at "RESERVED" state</li>
<li><strong>User Notification:</strong>  There could be an email notification from the system (if Bugzilla is configured)</li>
</ul>
<h4 id="service-deployment">Service Deployment:</h4>
<ul>
<li><strong>Activation:</strong> OpenSlice Service Orchestrator activates the network service and makes the service available to the end-users. This may involve:</li>
<li>Create any related services that the service depends on</li>
<li>Contacting all related controllers during provisioning, e.g. Kubernetes controllers, Kubernetes operators, MANO Orchestrators, RAN controllers, SDN Controlles, or other external services (e.g. via REST calls)</li>
<li>Scheduling instantiation, Resolving dependencies and passing paramemters between controllers,</li>
<li>setting up user accounts, provisioning access credentials -this is performed either offline or via other services.</li>
<li>OpenSlice Service Orchestrator if everything is succesful puts the service at "ACTIVE" state</li>
<li><strong>User Notification:</strong>  There could be an email notification from the system (if Bugzilla is configured)</li>
</ul>
<h3 id="2-operation-phase">2. Operation Phase</h3>
<h4 id="service-operation">Service Operation:</h4>
<ul>
<li><strong>Lifecycle Management:</strong> Manage the network slice throughout its lifecycle, including scaling, reconfiguration, and adaptation to changing requirements. </li>
<li>In OpenSlice this is performed with Lifecycle management Rules (see next)</li>
</ul>
<p>In this phase the Service Designer can define several aspects.  <strong>Be aware that these are NOT performed automatically by OpenSlice - further examples and future enhancements will address these</strong>. This could include:</p>
<ul>
<li><strong>Monitoring:</strong> Continuously monitor the service for performance, availability, and compliance with SLAs. Utilize tools for real-time tracking and alerts for any anomalies or performance degradation.</li>
<li><strong>Maintenance:</strong> Conduct regular maintenance activities, including software updates, patching, and optimization to ensure the service runs smoothly.</li>
<li><strong>Scaling:</strong> Dynamically scale the resources up or down based on the demand and performance requirements.</li>
<li><strong>Fault Management:</strong> Detect and resolve faults in the network slice to minimize downtime and maintain service quality.</li>
</ul>
<h3 id="3-decommissioning-phase">3. Decommissioning Phase</h3>
<ul>
<li><strong>Service Termination:</strong> Service Orchestrator terminates the network service. This may involve:</li>
<li>Terminate any related services that the service depends on</li>
<li>Contacting all related controllers during termination to release resources, e.g. Kubernetes controllers, Kubernetes operators, MANO Orchestrators, RAN controllers, SDN Controlles, or other external services (e.g. via REST calls)</li>
<li>Scheduling termination, Resolving dependencies and passing paramemters between controllers</li>
<li>OpenSlice Service Orchestrator, if everything is succesful, puts the service at "TERMINATED" state</li>
<li><strong>User Notification:</strong>  There could be an email notification from the system (if Bugzilla is configured)</li>
</ul>
<h3 id="high-level-example-enhanced-mobile-broadband-embb-service-lifecycle">High level example: Enhanced Mobile Broadband (eMBB) Service Lifecycle</h3>
<ol>
<li>
<p><strong>Preparation:</strong></p>
</li>
<li>
<p>Define eMBB service requirements for high bandwidth and low latency.</p>
</li>
<li>Create an eMBB service specification template specifying related services and resources to Kubernetes Operators, VNFs for content delivery and traffic management.</li>
<li>
<p>Expose to catalog</p>
</li>
<li>
<p><strong>Instantiation:</strong></p>
</li>
<li>
<p>Instantiate other services and allocate resources such as edge computing nodes and high-capacity links.</p>
</li>
<li>
<p>Configure the service to prioritize video streaming traffic.</p>
</li>
<li>
<p><strong>Operation:</strong></p>
</li>
<li>
<p>Monitor the service to ensure it meets high-bandwidth requirements.</p>
</li>
<li>
<p>Scale up resources during peak usage periods, such as live sports events.</p>
</li>
<li>
<p><strong>Decommissioning:</strong></p>
</li>
<li>
<p>Notify users about service termination.</p>
</li>
<li>Decommission the network service, reclaiming resources for other services.</li>
</ol>
<h2 id="probe-further">Probe further</h2>
<ul>
<li>See 3GPP <a href="https://portal.3gpp.org/desktopmodules/Specifications/SpecificationDetails.aspx?specificationId=3091">Lifecycle</a></li>
</ul>












                
              </article>
            </div>
          
          
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
        </div>
        
          <button type="button" class="md-top md-icon" data-md-component="top" hidden>
  
  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg>
  Back to top
</button>
        
      </main>
      
        <footer class="md-footer">
  
    
      
      <nav class="md-footer__inner md-grid" aria-label="Footer" >
        
          
          <a href="../so_intro/" class="md-footer__link md-footer__link--prev" aria-label="Previous: Introduction">
            <div class="md-footer__button md-icon">
              
              <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
            </div>
            <div class="md-footer__title">
              <span class="md-footer__direction">
                Previous
              </span>
              <div class="md-ellipsis">
                Introduction
              </div>
            </div>
          </a>
        
        
          
          <a href="../lcm_rules_intro/" class="md-footer__link md-footer__link--next" aria-label="Next: LCM Rules Introduction">
            <div class="md-footer__title">
              <span class="md-footer__direction">
                Next
              </span>
              <div class="md-ellipsis">
                LCM Rules Introduction
              </div>
            </div>
            <div class="md-footer__button md-icon">
              
              <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11z"/></svg>
            </div>
          </a>
        
      </nav>
    
  
  <div class="md-footer-meta md-typeset">
    <div class="md-footer-meta__inner md-grid">
      <div class="md-copyright">
  
    <div class="md-copyright__highlight">
      Copyright &copy; 2025 ETSI OSL
    </div>
  
  
    Made with
    <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
      Material for MkDocs
    </a>
  
</div>
      
        <div class="md-social">
  
    
    
    
    
      
      
    
    <a href="https://osl.etsi.org/" target="_blank" rel="noopener" title="osl.etsi.org" class="md-social__link">
      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M352 256c0 22.2-1.2 43.6-3.3 64H163.4c-2.2-20.4-3.3-41.8-3.3-64s1.2-43.6 3.3-64h185.3c2.2 20.4 3.3 41.8 3.3 64m28.8-64h123.1c5.3 20.5 8.1 41.9 8.1 64s-2.8 43.5-8.1 64H380.8c2.1-20.6 3.2-42 3.2-64s-1.1-43.4-3.2-64m112.6-32H376.7c-10-63.9-29.8-117.4-55.3-151.6 78.3 20.7 142 77.5 171.9 151.6zm-149.1 0H167.7c6.1-36.4 15.5-68.6 27-94.7 10.5-23.6 22.2-40.7 33.5-51.5C239.4 3.2 248.7 0 256 0s16.6 3.2 27.8 13.8c11.3 10.8 23 27.9 33.5 51.5 11.6 26 20.9 58.2 27 94.7m-209 0H18.6c30-74.1 93.6-130.9 172-151.6-25.5 34.2-45.3 87.7-55.3 151.6M8.1 192h123.1c-2.1 20.6-3.2 42-3.2 64s1.1 43.4 3.2 64H8.1C2.8 299.5 0 278.1 0 256s2.8-43.5 8.1-64m186.6 254.6c-11.6-26-20.9-58.2-27-94.6h176.6c-6.1 36.4-15.5 68.6-27 94.6-10.5 23.6-22.2 40.7-33.5 51.5-11.2 10.7-20.5 13.9-27.8 13.9s-16.6-3.2-27.8-13.8c-11.3-10.8-23-27.9-33.5-51.5zM135.3 352c10 63.9 29.8 117.4 55.3 151.6-78.4-20.7-142-77.5-172-151.6zm358.1 0c-30 74.1-93.6 130.9-171.9 151.6 25.5-34.2 45.2-87.7 55.3-151.6h116.7z"/></svg>
    </a>
  
    
    
    
    
      
      
    
    <a href="https://labs.etsi.org/rep/osl" target="_blank" rel="noopener" title="labs.etsi.org" class="md-social__link">
      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="m503.5 204.6-.7-1.8-69.7-181.78c-1.4-3.57-3.9-6.59-7.2-8.64-2.4-1.55-5.1-2.515-8-2.81s-5.7.083-8.4 1.11c-2.7 1.02-5.1 2.66-7.1 4.78-1.9 2.12-3.3 4.67-4.1 7.44l-47 144H160.8l-47.1-144c-.8-2.77-2.2-5.31-4.1-7.43-2-2.12-4.4-3.75-7.1-4.77a18.1 18.1 0 0 0-8.38-1.113 18.4 18.4 0 0 0-8.04 2.793 18.1 18.1 0 0 0-7.16 8.64L9.267 202.8l-.724 1.8a129.57 129.57 0 0 0-3.52 82c7.747 26.9 24.047 50.7 46.447 67.6l.27.2.59.4 105.97 79.5 52.6 39.7 32 24.2c3.7 1.9 8.3 4.3 13 4.3s9.3-2.4 13-4.3l32-24.2 52.6-39.7 106.7-79.9.3-.3c22.4-16.9 38.7-40.6 45.6-67.5 8.6-27 7.4-55.8-2.6-82"/></svg>
    </a>
  
    
    
    
    
      
      
    
    <a href="https://www.linkedin.com/company/openslice/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link">
      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5m282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg>
    </a>
  
    
    
    
    
      
      
    
    <a href="https://twitter.com/OpensliceOSS" target="_blank" rel="noopener" title="twitter.com" class="md-social__link">
      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M389.2 48h70.6L305.6 224.2 487 464H345L233.7 318.6 106.5 464H35.8l164.9-188.5L26.8 48h145.6l100.5 132.9zm-24.8 373.8h39.1L151.1 88h-42z"/></svg>
    </a>
  
</div>
      
    </div>
  </div>
</footer>
      
    </div>
    <div class="md-dialog" data-md-component="dialog">
      <div class="md-dialog__inner md-typeset"></div>
    </div>
    
      <div class="md-progress" data-md-component="progress" role="progressbar"></div>
    
    
    <script id="__config" type="application/json">{"base": "../..", "features": ["navigation.instant", "navigation.instant.progress", "navigation.top", "navigation.footer", "navigation.path", "search", "search.highlight", "content.code.copy"], "search": "../../assets/javascripts/workers/search.f8cc74c7.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": {"provider": "mike"}}</script>
    
    
      <script src="../../assets/javascripts/bundle.f13b1293.min.js"></script>
      
    
  <script id="init-glightbox">const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": true, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "slide"});
document$.subscribe(() => { lightbox.reload() });
</script></body>
</html>