---
layout: default
---

<!--

    Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements.  See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership.  The ASF licenses this file
    to you under the Apache License, Version 2.0 (the
    "License"); you may not use this file except in compliance
    with the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing,
    software distributed under the License is distributed on an
    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    KIND, either express or implied.  See the License for the
    specific language governing permissions and limitations
    under the License.

-->

<div class="docs-container container-fluid">
  <div class="row">
    <nav class="sidebar-nav col-sm-3 col-lg-3">
      {% include sidebar-ja.html %}
    </nav>

    <article class="col-sm-7 col-lg-7">
      <section class="docs-header">
        <h1 class="docs-title">{{ page.title }}</h1>
        {% if page.lead %}<span class="docs-lead">{{ page.lead }}</span>{% endif %}
        <hr />
      </section>

      <section class="content">
        {{ content }}
      </section>
    </article>

    <nav class="toc-bar col-sm-2 col-lg-2">
      <div id="toc"></div>
    </nav>
  </div>
</div>
