<!--
	Copyright 2018 The Go Authors. All rights reserved.
	Use of this source code is governed by a BSD-style
	license that can be found in the LICENSE file.
-->
<!--
	Note: Static (i.e., not template-generated) href and id
	attributes start with "pkg-" to make it impossible for
	them to conflict with generated attributes (some of which
	correspond to Go identifiers).
-->
{{$pkg := .Data}}

{{with $pkg.Dirs}}
	{{/* DirList entries are numbers and strings - no need for FSet */}}
	{{if $pkg.PDoc}}
		<h2 id="pkg-subdirectories">Subdirectories</h2>
	{{end}}
		<div id="manual-nav">
			<dl>
				<dt><a href="#stdlib">Standard library</a></dt>
				<dt><a href="#other">Other packages</a></dt>
				<dd><a href="#subrepo">Sub-repositories</a></dd>
				<dd><a href="#community">Community</a></dd>
			</dl>
		</div>

		<div id="stdlib" class="toggleVisible">
			<div class="collapsed">
				<h2 class="toggleButton" title="Click to show Standard library section">Standard library ▹</h2>
			</div>
			<div class="expanded">
				<h2 class="toggleButton" title="Click to hide Standard library section">Standard library ▾</h2>
				<img alt="" class="gopher" src="/doc/gopher/pkg.png"/>
				<div class="pkg-dir">
					<table>
						<tr>
							<th class="pkg-name">Name</th>
							<th class="pkg-synopsis">Synopsis</th>
						</tr>

						{{range .}}
							<tr>
							{{if $pkg.DirFlat}}
								{{if .HasPkg}}
										<td class="pkg-name">
											<a href="{{.Path}}/{{$pkg.ModeQuery}}">{{.Path}}</a>
										</td>
								{{end}}
							{{else}}
									<td class="pkg-name" style="padding-left: {{mul .Depth 20}}px;">
										<a href="{{.Path}}/{{$pkg.ModeQuery}}">{{.Name}}</a>
									</td>
							{{end}}
							<td class="pkg-synopsis">
								{{.Synopsis}}
							</td>
							</tr>
						{{end}}
					</table>
				</div> <!-- .pkg-dir -->
			</div> <!-- .expanded -->
		</div> <!-- #stdlib .toggleVisible -->

	<h2 id="other">Other packages</h2>
	<h3 id="subrepo">Sub-repositories</h3>
	<p>
	These packages are part of the Go Project but outside the main Go tree.
	They are developed under looser <a href="/doc/go1compat">compatibility requirements</a> than the Go core.
	Install them with "<a href="/cmd/go/#hdr-Download_and_install_packages_and_dependencies">go get</a>".
	</p>
	<ul>
		<li><a href="//pkg.go.dev/golang.org/x/benchmarks">benchmarks</a> — benchmarks to measure Go as it is developed.</li>
		<li><a href="//pkg.go.dev/golang.org/x/blog">blog</a> — <a href="//blog.golang.org">blog.golang.org</a>'s implementation.</li>
		<li><a href="//pkg.go.dev/golang.org/x/build">build</a> — <a href="//build.golang.org">build.golang.org</a>'s implementation.</li>
		<li><a href="//pkg.go.dev/golang.org/x/crypto">crypto</a> — additional cryptography packages.</li>
		<li><a href="//pkg.go.dev/golang.org/x/debug">debug</a> — an experimental debugger for Go.</li>
		<li><a href="//pkg.go.dev/golang.org/x/image">image</a> — additional imaging packages.</li>
		<li><a href="//pkg.go.dev/golang.org/x/mobile">mobile</a> — experimental support for Go on mobile platforms.</li>
		<li><a href="//pkg.go.dev/golang.org/x/net">net</a> — additional networking packages.</li>
		<li><a href="//pkg.go.dev/golang.org/x/perf">perf</a> — packages and tools for performance measurement, storage, and analysis.</li>
		<li><a href="//pkg.go.dev/golang.org/x/pkgsite">pkgsite</a> — home of the pkg.go.dev website.</li>
		<li><a href="//pkg.go.dev/golang.org/x/review">review</a> — a tool for working with Gerrit code reviews.</li>
		<li><a href="//pkg.go.dev/golang.org/x/sync">sync</a> — additional concurrency primitives.</li>
		<li><a href="//pkg.go.dev/golang.org/x/sys">sys</a> — packages for making system calls.</li>
		<li><a href="//pkg.go.dev/golang.org/x/text">text</a> — packages for working with text.</li>
		<li><a href="//pkg.go.dev/golang.org/x/time">time</a> — additional time packages.</li>
		<li><a href="//pkg.go.dev/golang.org/x/tools">tools</a> — godoc, goimports, gorename, and other tools.</li>
		<li><a href="//pkg.go.dev/golang.org/x/tour">tour</a> — <a href="//tour.golang.org">tour.golang.org</a>'s implementation.</li>
		<li><a href="//pkg.go.dev/golang.org/x/exp">exp</a> — experimental and deprecated packages (handle with care; may change without warning).</li>
	</ul>

	<h3 id="community">Community</h3>
	<p>
	These services can help you find Open Source packages provided by the community.
	</p>
	<ul>
		<li><a href="//pkg.go.dev">Pkg.go.dev</a> - the Go package discovery site.</li>
		<li><a href="/wiki/Projects">Projects at the Go Wiki</a> - a curated list of Go projects.</li>
	</ul>
{{end}}
