<!--
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 id="sub-nav" class="js-sidenav nav-container" role="navigation">
<a class="sidenav-title" data-behavior="SubMenuMobile">Doc Index</a>
  <div class="nav-content">
  <ul>
    <li>
      <a href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/about-client-users-guide.html">Apache Geode Native Documentation</a>
    </li>
    <li class="has_submenu">
      <a href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/getting-started/getting-started-nc-client.html">Getting Started with the Native Library</a>
      <ul>
        <li>
          <a href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/getting-started/getting-started-nc-client.html#set_up_dev_environment">Set Up Your Development Environment</a>
        </li>
        <li>
          <a href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/getting-started/getting-started-nc-client.html#establish_cluster_access">Establish Access to a <%=vars.product_name%> Cluster</a>
        </li>
        <li>
          <a href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/getting-started/getting-started-nc-client.html#app_dev_walkthroughs">Application Development Walkthroughs</a>
        </li>
        <li>
          <a href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/getting-started/getting-started-nc-client.html#programming_examples">Programming Examples</a>
        </li>
        <li>
          <a href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/getting-started/put-get-example.html">Put/Get/Remove Examples</a>
        </li>
      </ul>
    </li>
    <li class="has_submenu">
      <a href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/configuring/configuration.html">Configuring a Client Application</a>
      <ul>
        <li>
          <a href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/configuring/system-level-configuration.html">System Level Configuration</a>
        </li>
      </ul>
    </li>

    <li>
      <a href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/configuring/config-client-cache.html">Configuring the Client Cache</a>
    </li>
    <li class="has_submenu">
      <a href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/regions/regions.html">Configuring Regions</a>
      <ul>
        <li>
        <a href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/regions/registering-interest-for-entries.html">Registering Interest for Entries</a>
        </li>
        <li>
        <a href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/regions/region-attributes.html">Region Attributes</a>
        </li>
      </ul>
    </li>

    <li class="has_submenu">
      <a href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/serialization/data-serialization.html">Serializing Data</a>
      <ul>
        <li class="has_submenu">
          <a href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/serialization/dotnet-serialization/dotnet-pdx-serialization.html">Geode PDX Serialization</a>
          <ul>
            <li>
              <a href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/serialization/dotnet-serialization/dotnet-pdx-autoserializer.html">Using the Geode PDX Autoserializer</a>
            </li>
            <li>
              <a href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/serialization/dotnet-serialization/serialize-using-ipdxserializable.html">Using the IPdxSerializable Interface</a>
            </li>
            <li>
              <a href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/serialization/dotnet-serialization/pdx-serializable-examples.html">IPdxSerializable Examples</a>
            </li>
          </ul>
        </li>
      </ul>
    </li>

    <li>
      <a href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/remote-queries.html">Remote Queries</a>
    </li>

    <li>
      <a href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/continuous-queries.html">Continuous Queries</a>
    </li>

    <li class="has_submenu">
      <a href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/security/security.html">Security: Authentication and Encryption</a>
      <ul>
        <li>
        <a href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/security/authentication.html">Authentication</a>
        </li>
        <li>
        <a href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/security/sslclientserver.html">TLS/SSL Client-Server Communication Encryption</a>
        </li>
      </ul>
    </li>

    <li>
      <a href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/function-execution.html">Function Execution</a>
    </li>

    <li>
      <a href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/transactions.html">Transactions</a>
    </li>
    <li>
      <a href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/configuring/sysprops.html">System Properties</a>
    </li>
    <li>
      <a href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/client-cache-ref.html">Client Cache XML Reference</a>
    </li>
  </ul>
  </div>
</div>
