[PATCH] Remove old build artifacts from repo

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]



The releases/ subdirectory contains latex build artifacts. The idea was
to use it when creating a changebar version of the document, but it is a
little difficult to manage as part of the repo. The old document is
always available in a previous git tag anyway, so the build products can
be regenerated. So, drop the releases directory entirely.

Signed-off-by: Grant Likely <grant.likely@xxxxxxx>
---
 Makefile                                           |    3 +-
 release/latex/Makefile                             |   78 -
 release/latex/devicetree-logo.png                  |  Bin 27987 -> 0 bytes
 release/latex/devicetree-specification.tex         | 4840 --------------------
 release/latex/fncychap.sty                         |  683 ---
 ...iz-1d3954672eca688030b49a13a35b6714d9abdcd5.pdf |  Bin 19470 -> 0 bytes
 ...iz-23a197b43ca822bb92fb1a341bdd04b0845caa29.pdf |  Bin 14813 -> 0 bytes
 ...iz-8bc6c34d442f7e613c5d327992e204083ddaf50f.pdf |  Bin 8688 -> 0 bytes
 ...iz-e69f9031183bd8d3b6636722c922fcb66d4843c4.pdf |  Bin 12918 -> 0 bytes
 release/latex/newfloat.sty                         |  737 ---
 release/latex/python.ist                           |   11 -
 release/latex/sphinx.sty                           |  641 ---
 release/latex/sphinxhowto.cls                      |  104 -
 release/latex/sphinxmanual.cls                     |  148 -
 release/latex/tabulary.sty                         |  452 --
 15 files changed, 1 insertion(+), 7696 deletions(-)
 delete mode 100644 release/latex/Makefile
 delete mode 100644 release/latex/devicetree-logo.png
 delete mode 100644 release/latex/devicetree-specification.tex
 delete mode 100644 release/latex/fncychap.sty
 delete mode 100644 release/latex/graphviz-1d3954672eca688030b49a13a35b6714d9abdcd5.pdf
 delete mode 100644 release/latex/graphviz-23a197b43ca822bb92fb1a341bdd04b0845caa29.pdf
 delete mode 100644 release/latex/graphviz-8bc6c34d442f7e613c5d327992e204083ddaf50f.pdf
 delete mode 100644 release/latex/graphviz-e69f9031183bd8d3b6636722c922fcb66d4843c4.pdf
 delete mode 100644 release/latex/newfloat.sty
 delete mode 100644 release/latex/python.ist
 delete mode 100644 release/latex/sphinx.sty
 delete mode 100644 release/latex/sphinxhowto.cls
 delete mode 100644 release/latex/sphinxmanual.cls
 delete mode 100644 release/latex/tabulary.sty

diff --git a/Makefile b/Makefile
index 8e3bd9f..d8eb85e 100644
--- a/Makefile
+++ b/Makefile
@@ -5,7 +5,6 @@
 SPHINXOPTS    =
 SPHINXBUILD   = sphinx-build
 PAPER         =
-RELEASEDIR    = release
 BUILDDIR      = build
 LATEXDIFF     = latexdiff
 
@@ -145,7 +144,7 @@ latex:
 latexdiff:
 	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
 	@echo "Generating LaTeX changebars..."
-	$(LATEXDIFF) --type=CULINECHBAR $(RELEASEDIR)/latex/devicetree-specification.tex $(BUILDDIR)/latex/devicetree-specification.tex > $(BUILDDIR)/latex/devicetree-specification-changebars.tex
+	$(LATEXDIFF) --type=CULINECHBAR $(BUILDDIR)/latex-previous/devicetree-specification.tex $(BUILDDIR)/latex/devicetree-specification.tex > $(BUILDDIR)/latex/devicetree-specification-changebars.tex
 	@echo "Running LaTeX files through pdflatex..."
 	$(MAKE) -C $(BUILDDIR)/latex all-pdf
 	@echo
diff --git a/release/latex/Makefile b/release/latex/Makefile
deleted file mode 100644
index d748006..0000000
--- a/release/latex/Makefile
+++ /dev/null
@@ -1,78 +0,0 @@
-# Makefile for Sphinx LaTeX output
-
-ALLDOCS = $(basename $(wildcard *.tex))
-ALLPDF = $(addsuffix .pdf,$(ALLDOCS))
-ALLDVI = $(addsuffix .dvi,$(ALLDOCS))
-
-# Prefix for archive names
-ARCHIVEPRREFIX =
-# Additional LaTeX options
-LATEXOPTS =
-# format: pdf or dvi
-FMT = pdf
-
-LATEX = latex
-PDFLATEX = pdflatex
-MAKEINDEX = makeindex
-
-all: $(ALLPDF)
-all-pdf: $(ALLPDF)
-all-dvi: $(ALLDVI)
-all-ps: all-dvi
-	for f in *.dvi; do dvips $$f; done
-
-all-pdf-ja:
-	for f in *.pdf *.png *.gif *.jpg *.jpeg; do extractbb $$f; done
-	for f in *.tex; do platex -kanji=utf8 $(LATEXOPTS) $$f; done
-	for f in *.tex; do platex -kanji=utf8 $(LATEXOPTS) $$f; done
-	for f in *.tex; do platex -kanji=utf8 $(LATEXOPTS) $$f; done
-	-for f in *.idx; do mendex -U -f -d "`basename $$f .idx`.dic" -s python.ist $$f; done
-	for f in *.tex; do platex -kanji=utf8 $(LATEXOPTS) $$f; done
-	for f in *.tex; do platex -kanji=utf8 $(LATEXOPTS) $$f; done
-	for f in *.dvi; do dvipdfmx $$f; done
-
-zip: all-$(FMT)
-	mkdir $(ARCHIVEPREFIX)docs-$(FMT)
-	cp $(ALLPDF) $(ARCHIVEPREFIX)docs-$(FMT)
-	zip -q -r -9 $(ARCHIVEPREFIX)docs-$(FMT).zip $(ARCHIVEPREFIX)docs-$(FMT)
-	rm -r $(ARCHIVEPREFIX)docs-$(FMT)
-
-tar: all-$(FMT)
-	mkdir $(ARCHIVEPREFIX)docs-$(FMT)
-	cp $(ALLPDF) $(ARCHIVEPREFIX)docs-$(FMT)
-	tar cf $(ARCHIVEPREFIX)docs-$(FMT).tar $(ARCHIVEPREFIX)docs-$(FMT)
-	rm -r $(ARCHIVEPREFIX)docs-$(FMT)
-
-gz: tar
-	gzip -9 < $(ARCHIVEPREFIX)docs-$(FMT).tar > $(ARCHIVEPREFIX)docs-$(FMT).tar.gz
-
-bz2: tar
-	bzip2 -9 -k $(ARCHIVEPREFIX)docs-$(FMT).tar
-
-xz: tar
-	xz -9 -k $(ARCHIVEPREFIX)docs-$(FMT).tar
-
-# The number of LaTeX runs is quite conservative, but I don't expect it
-# to get run often, so the little extra time won't hurt.
-%.dvi: %.tex
-	$(LATEX) $(LATEXOPTS) '$<'
-	$(LATEX) $(LATEXOPTS) '$<'
-	$(LATEX) $(LATEXOPTS) '$<'
-	-$(MAKEINDEX) -s python.ist '$(basename $<).idx'
-	$(LATEX) $(LATEXOPTS) '$<'
-	$(LATEX) $(LATEXOPTS) '$<'
-
-%.pdf: %.tex
-	$(PDFLATEX) $(LATEXOPTS) '$<'
-	$(PDFLATEX) $(LATEXOPTS) '$<'
-	$(PDFLATEX) $(LATEXOPTS) '$<'
-	-$(MAKEINDEX) -s python.ist '$(basename $<).idx'
-	$(PDFLATEX) $(LATEXOPTS) '$<'
-	$(PDFLATEX) $(LATEXOPTS) '$<'
-
-clean:
-	rm -f *.log *.ind *.aux *.toc *.syn *.idx *.out *.ilg *.pla *.ps *.tar *.tar.gz *.tar.bz2 *.tar.xz $(ALLPDF) $(ALLDVI)
-
-.PHONY: all all-pdf all-dvi all-ps clean zip tar gz bz2 xz
-.PHONY: all-pdf-ja
-
diff --git a/release/latex/devicetree-logo.png b/release/latex/devicetree-logo.png
deleted file mode 100644
index e00bb33a7f152660c417c250f0ae71581db01326..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 27987
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
I2e*s=4Qbt_g#Z8m

diff --git a/release/latex/devicetree-specification.tex b/release/latex/devicetree-specification.tex
deleted file mode 100644
index 0bea934..0000000
--- a/release/latex/devicetree-specification.tex
+++ /dev/null
@@ -1,4840 +0,0 @@
-% Generated by Sphinx.
-\def\sphinxdocclass{report}
-\documentclass[a4paper,10pt,oneside]{sphinxmanual}
-
-\usepackage[utf8]{inputenc}
-\ifdefined\DeclareUnicodeCharacter
-  \DeclareUnicodeCharacter{00A0}{\nobreakspace}
-\else\fi
-\usepackage{cmap}
-\usepackage[T1]{fontenc}
-\usepackage{amsmath,amssymb}
-\usepackage[english]{babel}
-\usepackage{times}
-\usepackage[Bjarne]{fncychap}
-\usepackage{longtable}
-\usepackage{sphinx}
-\usepackage{multirow}
-\usepackage{eqparbox}
-
-
-\addto\captionsenglish{\renewcommand{\figurename}{Fig. }}
-\addto\captionsenglish{\renewcommand{\tablename}{Table }}
-\SetupFloatingEnvironment{literal-block}{name=Listing }
-
-\addto\extrasenglish{\def\pageautorefname{page}}
-
-\setcounter{tocdepth}{2}
-
-
-\title{Devicetree Specification}
-\date{24 May 2016}
-\release{0.1}
-\author{devicetree.org}
-\newcommand{\sphinxlogo}{\includegraphics{devicetree-logo.png}\par}
-\renewcommand{\releasename}{Release}
-\makeindex
-
-\makeatletter
-\def\PYG@reset{\let\PYG@it=\relax \let\PYG@bf=\relax%
-    \let\PYG@ul=\relax \let\PYG@tc=\relax%
-    \let\PYG@bc=\relax \let\PYG@ff=\relax}
-\def\PYG@tok#1{\csname PYG@tok@#1\endcsname}
-\def\PYG@toks#1+{\ifx\relax#1\empty\else%
-    \PYG@tok{#1}\expandafter\PYG@toks\fi}
-\def\PYG@do#1{\PYG@bc{\PYG@tc{\PYG@ul{%
-    \PYG@it{\PYG@bf{\PYG@ff{#1}}}}}}}
-\def\PYG#1#2{\PYG@reset\PYG@toks#1+\relax+\PYG@do{#2}}
-
-\expandafter\def\csname PYG@tok@gd\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.63,0.00,0.00}{##1}}}
-\expandafter\def\csname PYG@tok@gu\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.50,0.00,0.50}{##1}}}
-\expandafter\def\csname PYG@tok@gt\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.27,0.87}{##1}}}
-\expandafter\def\csname PYG@tok@gs\endcsname{\let\PYG@bf=\textbf}
-\expandafter\def\csname PYG@tok@gr\endcsname{\def\PYG@tc##1{\textcolor[rgb]{1.00,0.00,0.00}{##1}}}
-\expandafter\def\csname PYG@tok@cm\endcsname{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.25,0.50,0.56}{##1}}}
-\expandafter\def\csname PYG@tok@vg\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.38,0.84}{##1}}}
-\expandafter\def\csname PYG@tok@vi\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.38,0.84}{##1}}}
-\expandafter\def\csname PYG@tok@mh\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}}
-\expandafter\def\csname PYG@tok@cs\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.50,0.56}{##1}}\def\PYG@bc##1{\setlength{\fboxsep}{0pt}\colorbox[rgb]{1.00,0.94,0.94}{\strut ##1}}}
-\expandafter\def\csname PYG@tok@ge\endcsname{\let\PYG@it=\textit}
-\expandafter\def\csname PYG@tok@vc\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.38,0.84}{##1}}}
-\expandafter\def\csname PYG@tok@il\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}}
-\expandafter\def\csname PYG@tok@go\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.20,0.20,0.20}{##1}}}
-\expandafter\def\csname PYG@tok@cp\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
-\expandafter\def\csname PYG@tok@gi\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.63,0.00}{##1}}}
-\expandafter\def\csname PYG@tok@gh\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.00,0.50}{##1}}}
-\expandafter\def\csname PYG@tok@ni\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.84,0.33,0.22}{##1}}}
-\expandafter\def\csname PYG@tok@nl\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.13,0.44}{##1}}}
-\expandafter\def\csname PYG@tok@nn\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.05,0.52,0.71}{##1}}}
-\expandafter\def\csname PYG@tok@no\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.38,0.68,0.84}{##1}}}
-\expandafter\def\csname PYG@tok@na\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}}
-\expandafter\def\csname PYG@tok@nb\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
-\expandafter\def\csname PYG@tok@nc\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.05,0.52,0.71}{##1}}}
-\expandafter\def\csname PYG@tok@nd\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.33,0.33,0.33}{##1}}}
-\expandafter\def\csname PYG@tok@ne\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
-\expandafter\def\csname PYG@tok@nf\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.02,0.16,0.49}{##1}}}
-\expandafter\def\csname PYG@tok@si\endcsname{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.44,0.63,0.82}{##1}}}
-\expandafter\def\csname PYG@tok@s2\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}}
-\expandafter\def\csname PYG@tok@nt\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.02,0.16,0.45}{##1}}}
-\expandafter\def\csname PYG@tok@nv\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.38,0.84}{##1}}}
-\expandafter\def\csname PYG@tok@s1\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}}
-\expandafter\def\csname PYG@tok@ch\endcsname{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.25,0.50,0.56}{##1}}}
-\expandafter\def\csname PYG@tok@m\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}}
-\expandafter\def\csname PYG@tok@gp\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.78,0.36,0.04}{##1}}}
-\expandafter\def\csname PYG@tok@sh\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}}
-\expandafter\def\csname PYG@tok@ow\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
-\expandafter\def\csname PYG@tok@sx\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.78,0.36,0.04}{##1}}}
-\expandafter\def\csname PYG@tok@bp\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
-\expandafter\def\csname PYG@tok@c1\endcsname{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.25,0.50,0.56}{##1}}}
-\expandafter\def\csname PYG@tok@o\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
-\expandafter\def\csname PYG@tok@kc\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
-\expandafter\def\csname PYG@tok@c\endcsname{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.25,0.50,0.56}{##1}}}
-\expandafter\def\csname PYG@tok@mf\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}}
-\expandafter\def\csname PYG@tok@err\endcsname{\def\PYG@bc##1{\setlength{\fboxsep}{0pt}\fcolorbox[rgb]{1.00,0.00,0.00}{1,1,1}{\strut ##1}}}
-\expandafter\def\csname PYG@tok@mb\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}}
-\expandafter\def\csname PYG@tok@ss\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.32,0.47,0.09}{##1}}}
-\expandafter\def\csname PYG@tok@sr\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.14,0.33,0.53}{##1}}}
-\expandafter\def\csname PYG@tok@mo\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}}
-\expandafter\def\csname PYG@tok@kd\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
-\expandafter\def\csname PYG@tok@mi\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}}
-\expandafter\def\csname PYG@tok@kn\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
-\expandafter\def\csname PYG@tok@cpf\endcsname{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.25,0.50,0.56}{##1}}}
-\expandafter\def\csname PYG@tok@kr\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
-\expandafter\def\csname PYG@tok@s\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}}
-\expandafter\def\csname PYG@tok@kp\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
-\expandafter\def\csname PYG@tok@w\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.73,0.73}{##1}}}
-\expandafter\def\csname PYG@tok@kt\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.56,0.13,0.00}{##1}}}
-\expandafter\def\csname PYG@tok@sc\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}}
-\expandafter\def\csname PYG@tok@sb\endcsname{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}}
-\expandafter\def\csname PYG@tok@k\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
-\expandafter\def\csname PYG@tok@se\endcsname{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}}
-\expandafter\def\csname PYG@tok@sd\endcsname{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}}
-
-\def\PYGZbs{\char`\\}
-\def\PYGZus{\char`\_}
-\def\PYGZob{\char`\{}
-\def\PYGZcb{\char`\}}
-\def\PYGZca{\char`\^}
-\def\PYGZam{\char`\&}
-\def\PYGZlt{\char`\<}
-\def\PYGZgt{\char`\>}
-\def\PYGZsh{\char`\#}
-\def\PYGZpc{\char`\%}
-\def\PYGZdl{\char`\$}
-\def\PYGZhy{\char`\-}
-\def\PYGZsq{\char`\'}
-\def\PYGZdq{\char`\"}
-\def\PYGZti{\char`\~}
-% for compatibility with earlier versions
-\def\PYGZat{@}
-\def\PYGZlb{[}
-\def\PYGZrb{]}
-\makeatother
-
-\renewcommand\PYGZsq{\textquotesingle}
-
-\begin{document}
-
-\maketitle
-\tableofcontents
-\phantomsection\label{index::doc}
-
-
-\textbf{Copyright}
-
-\begin{DUlineblock}{0em}
-\item[] Copyright 2008,2011 Power.org, Inc.
-\item[] Copyright 2008,2011 Freescale Semiconductor, Inc.
-\item[] Copyright 2008,2011 International Business Machines Corporation.
-\item[] Copyright 2016 Linaro, Ltd.
-\item[] Copyright 2016 ARM Ltd.
-\end{DUlineblock}
-
-The Linaro and devicetree.org word marks and the Linaro and
-devicetree.org logos and related marks are trademarks and service marks
-licensed by Linaro Ltd. Implementation of certain elements of this
-document may require licenses under third party intellectual property
-rights, including without limitation, patent rights. Linaro and its
-Members are not, and shall not be held, responsible in any manner for
-identifying or failing to identify any or all such third party
-intellectual property rights.
-
-The Power Architecture and Power.org word marks and the Power and
-Power.org logos and related marks are trademarks and service marks
-licensed by Power.org. Implementation of certain elements of this
-document may require licenses under third party intellectual property
-rights, including without limitation, patent rights. Power.org and its
-Members are not, and shall not be held, responsible in any manner for
-identifying or failing to identify any or all such third party
-intellectual property rights.
-
-THIS SPECIFICATION PROVIDED ``AS IS'' AND WITHOUT ANY WARRANTY
-OF ANY KIND, INCLUDING, WITHOUT LIMITATION, ANY EXPRESS OR IMPLIED
-WARRANTY OF NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A
-PARTICULAR PURPOSE. IN NO EVENT SHALL LINARO OR ANY MEMBER OF
-LINARO BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, EXEMPLARY,
-PUNITIVE, OR CONSEQUENTIAL DAMAGES, INCLUDING, WITHOUT LIMITATION, LOST
-PROFITS, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-Questions pertaining to this document, or the terms or conditions of its
-provision, should be addressed to:
-
-\begin{DUlineblock}{0em}
-\item[] Linaro, Ltd
-\item[] Harston Mill,
-\item[] Royston Road,
-\item[] Harston CB22 7GG
-\item[] Attn: Devicetree.org Board Secretary
-\end{DUlineblock}
-
-\textbf{License Information}
-
-Licensed 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
-
-\url{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.
-\newpage
-\textbf{Acknowledgements}
-
-The devicetree.org Technical Steering Committee would like
-thank the many individuals and companies that contributed to the
-development this specification through writing, technical discussions
-and reviews.
-
-We want to thank the power.org Platform Architecture Technical Subcommittee who
-developed and published ePAPR. The text of ePAPR was used as the starting
-point for this document.
-
-Significant aspects of the Devicetree Specification are based on work done by
-the Open Firmware Working Group which developed bindings for IEEE-1275.
-We would like to acknowledge their contributions.
-
-We would also like to acknowledge the contribution of the PowerPC and ARM Linux
-communities that developed and implemented the flattened devicetree concept.
-\phantomsection\label{revhistory:revision-history}
-
-\begin{threeparttable}
-\capstart\caption{Revision History}\label{revhistory:id1}
-\begin{tabulary}{\linewidth}{| l l J |}
-\hline
-\textsf{\relax 
-Revision
-} & \textsf{\relax 
-Date
-} & \textsf{\relax 
-Description
-}\\
-\hline
-DTSpec 0.1
- & 
-2016-MAY-24
- & 
-Initial prerelease version. Imported ePAPR text
-into reStructured Text format and removed Power ISA
-specific elements.
-\\
-\hline\end{tabulary}
-
-\end{threeparttable}
-
-
-
-\chapter{Introduction}
-\label{introduction:chapter-introduction}\label{introduction:introduction}\label{introduction::doc}\label{introduction:welcome-to-devicetree-specification-s-documentation}
-
-\section{Purpose and Scope}
-\label{introduction:purpose-and-scope}
-To initialize and boot a computer system, various software components
-interact. Firmware might perform low-level initialization of the system
-hardware before passing control to software such as an operating system,
-bootloader, or hypervisor. Bootloaders and hypervisors can, in turn,
-load and transfer control to operating systems. Standard, consistent
-interfaces and conventions facilitate the interactions between these
-software components.  In this document the term boot program is used to
-generically refer to a software component that initializes the system
-state and executes another software component referred to as a \emph{client
-program}. Examples of a boot programs include: firmware, bootloaders, and
-hypervisors. Examples of a client program include: bootloaders,
-hypervisors, operating systems, and special purpose programs. A piece of
-software may be both a client program and a boot program  (e.g. a hypervisor).
-
-This specification, the Devicetree Specification (DTSpec),
-provides a complete boot program to client program
-interface definition, combined with minimum system requirements that
-facilitate the development of a wide variety of systems.
-
-This specification is targeted towards the requirements of embedded
-systems. An embedded system typically consists of system hardware, an
-operating system, and application software that are custom designed to
-perform a fixed, specific set of tasks. This is unlike general purpose
-computers, which are designed to be customized by a user with a variety
-of software and I/O devices. Other characteristics of embedded systems
-may include:
-\begin{itemize}
-\item {} 
-a fixed set of I/O devices, possibly highly customized for the
-application
-
-\item {} 
-a system board optimized for size and cost
-
-\item {} 
-limited user interface
-
-\item {} 
-resource constraints like limited memory and limited nonvolatile storage
-
-\item {} 
-real-time constraints
-
-\item {} 
-use of a wide variety of operating systems, including Linux,
-real-time operating systems, and custom or proprietary operating
-systems
-
-\end{itemize}
-
-\textbf{Organization of this Document}
-\begin{itemize}
-\item {} 
-Chapter {\hyperref[introduction:chapter\string-introduction]{\crossref{\DUrole{std,std-ref}{1}}}} introduces the architecture being
-specified by DTSpec.
-
-\item {} 
-Chapter {\hyperref[devicetree\string-basics:chapter\string-devicetree]{\crossref{\DUrole{std,std-ref}{2}}}} introduces the devicetree concept
-and describes its logical structure and standard properties.
-
-\item {} 
-Chapter {\hyperref[devicenodes:chapter\string-device\string-node\string-requirements]{\crossref{\DUrole{std,std-ref}{3}}}} specifies the
-definition of a base set of device nodes required by DTSpec-compliant
-devicetrees.
-
-\item {} 
-Chapter {\hyperref[device\string-bindings:chapter\string-device\string-bindings]{\crossref{\DUrole{std,std-ref}{4}}}} describes device bindings for
-certain classes of devices and specific device types.
-
-\item {} 
-Chapter {\hyperref[flattened\string-format:chapter\string-fdt\string-structure]{\crossref{\DUrole{std,std-ref}{5}}}} specifies the physical structure
-of devicetrees.
-
-\end{itemize}
-
-\textbf{Conventions Used in this Document}
-
-The word \emph{shall} is used to indicate mandatory requirements strictly to
-be followed in order to conform to the standard and from which no
-deviation is permitted (\emph{shall} equals \emph{is required to}).
-
-The word \emph{should} is used to indicate that among several possibilities
-one is recommended as particularly suitable, without mentioning or
-excluding others; or that a certain course of action is preferred but
-not necessarily required; or that (in the negative form) a certain
-course of action is deprecated but not prohibited (\emph{should} equals \emph{is
-recommended that}).
-
-The word \emph{may} is used to indicate a course of action permissible within
-the limits of the standard (\emph{may} equals \emph{is permitted}).
-
-Examples of devicetree constructs are frequently shown in \emph{Devicetree
-Syntax} form. See section {\hyperref[source\string-language:chapter\string-devicetree\string-source\string-format]{\crossref{\DUrole{std,std-ref}{6}}}} for
-an overview of this syntax.
-
-
-\section{Relationship to IEEE™ 1275 and ePAPR}
-\label{introduction:relationship-to-ieee-1275-and-epapr}
-DTSpec is loosely related to the IEEE 1275 Open Firmware
-standard—\emph{IEEE Standard for Boot (Initialization Configuration)
-Firmware: Core Requirements and Practices} \phantomsection\label{introduction:id1}{\hyperref[references:ieee1275]{\crossref{{[}IEEE1275{]}}}}.
-
-The original IEEE 1275 specification and its derivatives such as CHRP \phantomsection\label{introduction:id2}{\hyperref[references:chrp]{\crossref{{[}CHRP{]}}}}
-and PAPR \phantomsection\label{introduction:id3}{\hyperref[references:papr]{\crossref{{[}PAPR{]}}}} address problems of general purpose computers, such as how a
-single version of an operating system can work on several different
-computers within the same family and the problem of loading an operating
-system from user-installed I/O devices.
-
-Because of the nature of embedded systems, some of these problems faced
-by open, general purpose computers do not apply. Notable features of the
-IEEE 1275 specification that are omitted from the DTSpec include:
-\begin{itemize}
-\item {} 
-Plug-in device drivers
-
-\item {} 
-FCode
-
-\item {} 
-The programmable Open Firmware user interface based on Forth
-
-\item {} 
-FCode debugging
-
-\item {} 
-Operating system debugging
-
-\end{itemize}
-
-What is retained from IEEE-1275 are concepts from the devicetree
-architecture by which a boot program can describe and communicate system
-hardware information to client program, thus eliminating the need for
-the client program to have hard-coded descriptions of system hardware.
-
-This specification partially supersedes the ePAPR {[}EPAPR{]} specification.
-ePAPR documents how devicetree is used by the PowerISA, and covers both
-general concepts, as well as PowerISA specific bindings.
-The text of this document was derived from ePAPR, but either removes architecture specific bindings, or moves them into an appendix.
-
-
-\section{32-bit and 64-bit Support}
-\label{introduction:bit-and-64-bit-support}
-The DTSpec supports CPUs with both 32-bit and 64-bit addressing
-capabilities. Where applicable, sections of the DTSpec describe any
-requirements or considerations for 32-bit and 64-bit addressing.
-
-
-\section{Definition of Terms}
-\label{introduction:definition-of-terms}\begin{description}
-\item[{AMP\index{AMP|textbf}}] \leavevmode\phantomsection\label{introduction:term-amp}
-Asymmetric Multiprocessing. Computer available CPUs are partitioned into
-groups, each running a distinct operating system image. The CPUs
-may or not may not be identical.
-
-\item[{boot CPU\index{boot CPU|textbf}}] \leavevmode\phantomsection\label{introduction:term-boot-cpu}
-The first CPU which a boot program directs to a client program’s
-entry point.
-
-\item[{Book III-E\index{Book III-E|textbf}}] \leavevmode\phantomsection\label{introduction:term-book-iii-e}
-Embedded Environment. Section of the Power ISA defining supervisor
-instructions and related facilities used in embedded Power processor
-implementations.
-
-\item[{boot program\index{boot program|textbf}}] \leavevmode\phantomsection\label{introduction:term-boot-program}
-Used to generically refer to a software component that initializes
-the system state and executes another software component referred to
-as a client program. Examples of a boot programs include: firmware,
-bootloaders, and hypervisors.
-
-\item[{client program\index{client program|textbf}}] \leavevmode\phantomsection\label{introduction:term-client-program}
-Program that typically contains application or operating system
-software. Examples of a client program include: bootloaders,
-hypervisors, operating systems, and special purpose programs.
-
-\item[{cell\index{cell|textbf}}] \leavevmode\phantomsection\label{introduction:term-cell}
-A unit of information consisting of 32 bits.
-
-\item[{DMA\index{DMA|textbf}}] \leavevmode\phantomsection\label{introduction:term-dma}
-Direct memory access
-
-\item[{DTB\index{DTB|textbf}}] \leavevmode\phantomsection\label{introduction:term-dtb}
-Devicetree blob. Compact binary representation of the devicetree.
-
-\item[{DTC\index{DTC|textbf}}] \leavevmode\phantomsection\label{introduction:term-dtc}
-Devicetree compiler. An open source tool used to create DTB files
-from DTS files.
-
-\item[{DTS\index{DTS|textbf}}] \leavevmode\phantomsection\label{introduction:term-dts}
-Devicetree syntax. A textual representation of a devicetree
-consumed by the DTC. See Appendix A Devicetree Source Format
-(version 1).
-
-\item[{effective address\index{effective address|textbf}}] \leavevmode\phantomsection\label{introduction:term-effective-address}
-Memory address as computed by processor storage access or branch
-instruction.
-
-\item[{physical address\index{physical address|textbf}}] \leavevmode\phantomsection\label{introduction:term-physical-address}
-Address used by the processor to access external device, typically a
-memory controller.
-
-\item[{Power ISA\index{Power ISA|textbf}}] \leavevmode\phantomsection\label{introduction:term-power-isa}
-Power Instruction Set Architecture.
-
-\item[{interrupt specifier\index{interrupt specifier|textbf}}] \leavevmode\phantomsection\label{introduction:term-interrupt-specifier}
-A property value that describes an interrupt. Typically information
-that specifies an interrupt number and sensitivity and triggering
-mechanism is included.
-
-\item[{secondary CPU\index{secondary CPU|textbf}}] \leavevmode\phantomsection\label{introduction:term-secondary-cpu}
-CPUs other than the boot CPU that belong to the client program are
-considered \emph{secondary CPUs}.
-
-\item[{SMP\index{SMP|textbf}}] \leavevmode\phantomsection\label{introduction:term-smp}
-Symmetric multiprocessing. A computer architecture where two or more
-identical CPUs can share memory and IO and operate under a single operating
-system.
-
-\item[{SoC\index{SoC|textbf}}] \leavevmode\phantomsection\label{introduction:term-soc}
-System on a chip. A single computer chip integrating one or more CPU
-core as well as number of other peripherals.
-
-\item[{unit address\index{unit address|textbf}}] \leavevmode\phantomsection\label{introduction:term-unit-address}
-The part of a node name specifying the node’s address in the address
-space of the parent node.
-
-\item[{quiescent CPU\index{quiescent CPU|textbf}}] \leavevmode\phantomsection\label{introduction:term-quiescent-cpu}
-A quiescent CPU is in a state where it cannot interfere with the
-normal operation of other CPUs, nor can its state be affected by the
-normal operation of other running CPUs, except by an explicit method
-for enabling or re-enabling the quiescent CPU.
-
-\end{description}
-
-
-\chapter{The Devicetree}
-\label{devicetree-basics:chapter-devicetree}\label{devicetree-basics:the-devicetree}\label{devicetree-basics::doc}
-
-\section{Overview}
-\label{devicetree-basics:overview}
-DTSpec specifies a construct called a \emph{devicetree} to describe
-system hardware. A boot program loads a devicetree into a client
-program’s memory and passes a pointer to the devicetree to the client.
-
-This chapter describes the logical structure of the devicetree and
-specifies a base set of properties for use in describing device nodes.
-Chapter {\hyperref[devicenodes:chapter\string-device\string-node\string-requirements]{\crossref{\DUrole{std,std-ref}{3}}}} specifies certain device nodes
-required by a DTSpec compliant
-devicetree. Chapter 6 describes the DTSpec defined device bindings— the
-requirements for representing certain device types classes of devices.
-Chapter 8 describes the in-memory encoding of the devicetree.
-
-A devicetree is a tree data structure with nodes that describe the
-devices in a system. Each node has property/value pairs that describe
-the characteristics of the device being represented. Each node has
-exactly one parent except for the root node, which has no parent.
-
-An DTSpec-compliant devicetree describes device information in a system
-that cannot necessarily be dynamically detected by a client program. For
-example, the architecture of PCI enables a client to probe and detect
-attached devices, and thus devicetree nodes describing PCI devices
-might not be required. However, a device node is required to describe a
-PCI host bridge device in the system if it cannot be detected by
-probing.
-
-\textbf{Example}
-
-\hyperref[devicetree-basics:example-simple-devicetree]{Fig. \ref{devicetree-basics:example-simple-devicetree}} shows an example representation of a
-simple devicetree that is nearly
-complete enough to boot a simple operating system, with the platform
-type, CPU, and memory described. Device nodes are shown with properties
-and values shown beside the node.
-\begin{figure}[htbp]
-\centering
-\capstart
-
-\includegraphics{graphviz-e69f9031183bd8d3b6636722c922fcb66d4843c4.pdf}
-\caption{Devicetree Example}\label{devicetree-basics:example-simple-devicetree}\label{devicetree-basics:id3}\end{figure}
-
-
-\section{Devicetree Structure and Conventions}
-\label{devicetree-basics:devicetree-structure-and-conventions}
-
-\subsection{Node Names}
-\label{devicetree-basics:node-names}\label{devicetree-basics:sect-node-names}
-
-\subsubsection{Node Name Requirements}
-\label{devicetree-basics:node-name-requirements}
-Each node in the devicetree is named according to the following
-convention:
-\begin{quote}
-
-\code{node-name@unit-address}
-\end{quote}
-
-The \emph{node-name} component specifies the name of the node. It shall be 1
-to 31 characters in length and consist solely of characters from the set
-of characters in \hyperref[devicetree-basics:node-name-characters]{Table \ref{devicetree-basics:node-name-characters}}.
-
-
-\begin{threeparttable}
-\capstart\caption{Valid characters for node names}\label{devicetree-basics:node-name-characters}\label{devicetree-basics:id4}
-\begin{tabulary}{\linewidth}{| c p{8cm} |}
-\hline
-\textsf{\relax 
-Character
-} & \textsf{\relax 
-Description
-}\\
-\hline
-\code{0-9}
- & 
-digit
-\\
-\hline
-\code{a-z}
- & 
-lowercase letter
-\\
-\hline
-\code{A-Z}
- & 
-uppercase letter
-\\
-\hline
-\code{,}
- & 
-comma
-\\
-\hline
-\code{.}
- & 
-period
-\\
-\hline
-\code{\_}
- & 
-underscore
-\\
-\hline
-\code{+}
- & 
-plus sign
-\\
-\hline
-\code{-}
- & 
-dash
-\\
-\hline\end{tabulary}
-
-\end{threeparttable}
-
-
-The \emph{node-name} shall start with a lower or uppercase character and
-should describe the general class of device.
-
-The \emph{unit-address} component of the name is specific to the bus type on
-which the node sits. It consists of one or more ASCII characters from
-the set of characters in \hyperref[devicetree-basics:node-name-characters]{Table \ref{devicetree-basics:node-name-characters}}. The
-unit-address must match the first
-address specified in the \emph{reg} property of the node. If the node has no
-\emph{reg} property, the \emph{@unit-address} must be omitted and the
-\emph{node-name} alone differentiates the node from other nodes at the same
-level in the tree. The binding for a particular bus may specify
-additional, more specific requirements for the format of \emph{reg} and the
-\emph{unit-address}.
-
-The root node does not have a node-name or unit-address. It is
-identified by a forward slash (/).
-\begin{figure}[htbp]
-\centering
-\capstart
-
-\includegraphics{graphviz-8bc6c34d442f7e613c5d327992e204083ddaf50f.pdf}
-\caption{Examples of Node Names}\label{devicetree-basics:example-nodenames}\label{devicetree-basics:id5}\end{figure}
-
-In \hyperref[devicetree-basics:example-nodenames]{Fig. \ref{devicetree-basics:example-nodenames}}:
-\begin{itemize}
-\item {} 
-The nodes with the name cpu are distinguished by their unit-address
-values of 0 and 1.
-
-\item {} 
-The nodes with the name Ethernet are distinguished by their
-unit-address values of FE001000 and FE002000.
-
-\end{itemize}
-
-
-\subsection{Generic Names Recommendation}
-\label{devicetree-basics:generic-names-recommendation}
-The name of a node should be somewhat generic, reflecting the function
-of the device and not its precise programming model. If appropriate, the
-name should be one of the following choices:
-\begin{itemize}\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}
-\item {} 
-atm
-
-\item {} 
-cache-controller
-
-\item {} 
-compact-flash
-
-\item {} 
-can
-
-\item {} 
-cpu
-
-\item {} 
-crypto
-
-\item {} 
-disk
-
-\item {} 
-display
-
-\item {} 
-dma-controller
-
-\item {} 
-ethernet
-
-\item {} 
-ethernet-phy
-
-\item {} 
-fdc
-
-\item {} 
-flash
-
-\item {} 
-gpio
-
-\item {} 
-i2c
-
-\item {} 
-ide
-
-\item {} 
-interrupt-controller
-
-\item {} 
-isa
-
-\item {} 
-keyboard
-
-\item {} 
-mdio
-
-\item {} 
-memory
-
-\item {} 
-memory-controller
-
-\item {} 
-mouse
-
-\item {} 
-nvram
-
-\item {} 
-parallel
-
-\item {} 
-pc-card
-
-\item {} 
-pci
-
-\item {} 
-pcie
-
-\item {} 
-rtc
-
-\item {} 
-sata
-
-\item {} 
-scsi
-
-\item {} 
-serial
-
-\item {} 
-sound
-
-\item {} 
-spi
-
-\item {} 
-timer
-
-\item {} 
-usb
-
-\item {} 
-vme
-
-\item {} 
-watchdog
-
-\end{itemize}
-
-
-\subsection{Path Names}
-\label{devicetree-basics:path-names}
-A node in the devicetree can be uniquely identified by specifying the
-full path from the root node, through all descendant nodes, to the
-desired node.
-
-The convention for specifying a device path is:
-\begin{quote}
-
-\code{/node-name-1/node-name-2/node-name-N}
-\end{quote}
-
-For example, in \hyperref[devicetree-basics:example-nodenames]{Fig. \ref{devicetree-basics:example-nodenames}}, the device path to cpu \#1 would be:
-\begin{quote}
-
-\code{/cpus/cpu@1}
-\end{quote}
-
-The path to the root node is /.
-
-A unit address may be omitted if the full path to the node is
-unambiguous.
-
-If a client program encounters an ambiguous path, its behavior is
-undefined.
-
-
-\subsection{Properties}
-\label{devicetree-basics:properties}
-Each node in the devicetree has properties that describe the
-characteristics of the node. Properties consist of a name and a value.
-
-
-\subsubsection{Property Names}
-\label{devicetree-basics:property-names}
-Property names are strings of 1 to 31 characters from the characters show in
-\hyperref[devicetree-basics:property-name-characters]{Table \ref{devicetree-basics:property-name-characters}}
-
-
-\begin{threeparttable}
-\capstart\caption{Valid characters for property names}\label{devicetree-basics:property-name-characters}\label{devicetree-basics:id6}
-\begin{tabulary}{\linewidth}{| c p{8cm} |}
-\hline
-\textsf{\relax 
-Character
-} & \textsf{\relax 
-Description
-}\\
-\hline
-\code{0-9}
- & 
-digit
-\\
-\hline
-\code{a-z}
- & 
-lowercase letter
-\\
-\hline
-\code{A-Z}
- & 
-uppercase letter
-\\
-\hline
-\code{,}
- & 
-comma
-\\
-\hline
-\code{.}
- & 
-period
-\\
-\hline
-\code{\_}
- & 
-underscore
-\\
-\hline
-\code{+}
- & 
-plus sign
-\\
-\hline
-\code{?}
- & 
-question mark
-\\
-\hline
-\code{\#}
- & 
-hash
-\\
-\hline\end{tabulary}
-
-\end{threeparttable}
-
-
-Nonstandard property names should specify a unique string prefix, such
-as a stock ticker symbol, identifying the name of the company or
-organization that defined the property. Examples:
-\begin{quote}
-
-\begin{DUlineblock}{0em}
-\item[] \code{fsl,channel-fifo-len}
-\item[] \code{ibm,ppc-interrupt-server\#s}
-\item[] \code{linux,network-index}
-\end{DUlineblock}
-\end{quote}
-
-
-\subsubsection{Property Values}
-\label{devicetree-basics:sect-property-values}\label{devicetree-basics:property-values}
-A property value is an array of zero or more bytes that contain
-information associated with the property.
-
-Properties might have an empty value if conveying true-false
-information. In this case, the presence or absence of the property is
-sufficiently descriptive.
-
-\hyperref[devicetree-basics:property-values-table]{Table \ref{devicetree-basics:property-values-table}} describes the set of basic value types defined by the DTSpec.
-
-\begin{longtable}{| p{4cm} p{12cm} |}
-\caption{Property values}\label{devicetree-basics:property-values-table}\\
-\hline
-\textsf{\relax 
-Value
-} & \textsf{\relax 
-Description
-}\\
-\hline\endfirsthead
-
-\multicolumn{2}{c}%
-{{\tablecontinued{\tablename\ \thetable{} -- continued from previous page}}} \\
-\hline
-\textsf{\relax 
-Value
-} & \textsf{\relax 
-Description
-}\\
-\hline\endhead
-
-\hline \multicolumn{2}{|r|}{{\tablecontinued{Continued on next page}}} \\ \hline
-\endfoot
-
-\endlastfoot
-
-
-\code{\textless{}empty\textgreater{}}
- & 
-Value is empty. Used for conveying true-false information, when
-the presence or absence of the property itself is sufficiently
-descriptive.
-\\
-\hline
-\code{\textless{}u32\textgreater{}}
- & 
-A 32-bit integer in big-endian format. Example: the 32-bit value
-0x11223344 would be represented in memory as:
-\begin{quote}
-
-\begin{OriginalVerbatim}[commandchars=\\\{\}]
-address    11
-address+1  22
-address+2  33
-address+3  44
-\end{OriginalVerbatim}
-\end{quote}
-\\
-\hline
-\code{\textless{}u64\textgreater{}}
- & 
-Represents a 64-bit integer in big-endian format. Consists of
-two \code{\textless{}u32\textgreater{}} values where the first value contains the most
-significant bits of the integer and the second value contains
-the least significant bits.
-
-Example: the 64-bit value 0x1122334455667788 would be
-represented as two cells as: \code{\textless{}0x11223344 0x55667788\textgreater{}}.
-
-The value would be represented in memory as:
-\begin{quote}
-
-\begin{OriginalVerbatim}[commandchars=\\\{\}]
-  address  11
-address+1  22
-address+2  33
-address+3  44
-address+4  55
-address+5  66
-address+6  77
-address+7  88
-\end{OriginalVerbatim}
-\end{quote}
-\\
-\hline
-\code{\textless{}string\textgreater{}}
- & 
-Strings are printable and null-terminated. Example: the string
-``hello'' would be represented in memory as:
-\begin{quote}
-
-\begin{OriginalVerbatim}[commandchars=\\\{\}]
-  address  68  \PYGZsq{}h\PYGZsq{}
-address+1  65  \PYGZsq{}e\PYGZsq{}
-address+2  6C  \PYGZsq{}l\PYGZsq{}
-address+3  6C  \PYGZsq{}l\PYGZsq{}
-address+4  6F  \PYGZsq{}o\PYGZsq{}
-address+5  00  \PYGZsq{}\PYGZbs{}0\PYGZsq{}
-\end{OriginalVerbatim}
-\end{quote}
-\\
-\hline
-\code{\textless{}prop-encoded-array\textgreater{}}
- & 
-Format is specific to the property. See the property definition.
-\\
-\hline
-\code{\textless{}phandle\textgreater{}}
- & 
-A \code{\textless{}u32\textgreater{}} value. A \emph{phandle} value is a way to reference another
-node in the devicetree. Any node that can be referenced defines
-a phandle property with a unique \code{\textless{}u32\textgreater{}} value. That number
-is used for the value of properties with a phandle value
-type.
-\\
-\hline
-\code{\textless{}stringlist\textgreater{}}
- & 
-A list of \code{\textless{}string\textgreater{}} values concatenated together.
-
-Example: The string list ``hello'',''world'' would be represented in
-memory as:
-\begin{quote}
-
-\begin{OriginalVerbatim}[commandchars=\\\{\}]
-   address  68  \PYGZsq{}h\PYGZsq{}
- address+1  65  \PYGZsq{}e\PYGZsq{}
- address+2  6C  \PYGZsq{}l\PYGZsq{}
- address+3  6C  \PYGZsq{}l\PYGZsq{}
- address+4  6F  \PYGZsq{}o\PYGZsq{}
- address+5  00  \PYGZsq{}\PYGZbs{}0\PYGZsq{}
- address+6  77  \PYGZsq{}w\PYGZsq{}
- address+7  6f  \PYGZsq{}o\PYGZsq{}
- address+8  72  \PYGZsq{}r\PYGZsq{}
- address+9  6C  \PYGZsq{}l\PYGZsq{}
-address+10  64  \PYGZsq{}d\PYGZsq{}
-address+11  00  \PYGZsq{}\PYGZbs{}0\PYGZsq{}
-\end{OriginalVerbatim}
-\end{quote}
-\\
-\hline\end{longtable}
-
-
-
-\section{Standard Properties}
-\label{devicetree-basics:standard-properties}\label{devicetree-basics:sect-standard-properties}
-DTSpec specifies a set of standard properties for device nodes. These
-properties are described in detail in this section. Device nodes defined
-by DTSpec (see Chapter {\hyperref[devicenodes:chapter\string-device\string-node\string-requirements]{\crossref{\DUrole{std,std-ref}{3}}}}) may specify
-additional requirements or constraints regarding the use of the standard
-properties. Chapter {\hyperref[device\string-bindings:chapter\string-device\string-bindings]{\crossref{\DUrole{std,std-ref}{4}}}} describes the representation
-of specific devices may also specify additional requirements.
-
-\begin{notice}{note}{Note:}
-All examples of devicetree nodes in this document use the
-\textsc{DTS} (Devicetree Source) format for specifying nodes and properties.
-\end{notice}
-
-
-\subsection{compatible}
-\label{devicetree-basics:compatible}\label{devicetree-basics:sect-standard-properties-compatible}
-Property name: \code{compatible}
-
-Value type: \code{\textless{}stringlist\textgreater{}}
-
-Description:
-\begin{quote}
-
-The \emph{compatible} property value consists of one or more strings that
-define the specific programming model for the device. This list of
-strings should be used by a client program for device driver selection.
-The property value consists of a concatenated list of null terminated
-strings, from most specific to most general. They allow a device to
-express its compatibility with a family of similar devices, potentially
-allowing a single device driver to match against several devices.
-
-The recommended format is \code{"manufacturer,model"}, where
-\code{manufacturer} is a string describing the name of the manufacturer
-(such as a stock ticker symbol), and \code{model} specifies the model
-number.
-\end{quote}
-
-Example:
-\begin{quote}
-
-\code{compatible = "fsl,mpc8641-uart", "ns16550";}
-
-In this example, an operating system would first try to locate a device
-driver that supported fsl,mpc8641-uart. If a driver was not found, it
-would then try to locate a driver that supported the more general
-ns16550 device type.
-\end{quote}
-
-
-\subsection{model}
-\label{devicetree-basics:model}
-Property name: \code{model}
-
-Value type: \code{\textless{}stringlist\textgreater{}}
-
-Description:
-\begin{quote}
-
-The model property value is a \code{\textless{}string\textgreater{}} that specifies the manufacturer’s
-model number of the device.
-
-The recommended format is: \code{"manufacturer,model"}, where
-\code{manufacturer} is a string describing the name of the manufacturer
-(such as a stock ticker symbol), and model specifies the model number.
-\end{quote}
-
-Example:
-\begin{quote}
-
-\code{model = "fsl,MPC8349EMITX";}
-\end{quote}
-
-
-\subsection{phandle}
-\label{devicetree-basics:sect-standard-properties-phandle}\label{devicetree-basics:phandle}
-Property name: \code{phandle}
-
-Value type: \code{\textless{}u32\textgreater{}}
-
-Description:
-\begin{quote}
-
-The \emph{phandle} property specifies a numerical identifier for a node that
-is unique within the devicetree. The \emph{phandle} property value is used
-by other nodes that need to refer to the node associated with the
-property.
-\end{quote}
-
-Example:
-\begin{quote}
-
-See the following devicetree excerpt:
-
-\begin{Verbatim}[commandchars=\\\{\}]
-pic@10000000 \PYGZob{}
-   phandle = \PYGZlt{}1\PYGZgt{};
-   interrupt\PYGZhy{}controller;
-\PYGZcb{};
-\end{Verbatim}
-
-A \emph{phandle} value of 1 is defined. Another device node could reference
-the pic node with a phandle value of 1:
-
-\begin{Verbatim}[commandchars=\\\{\}]
-interrupt\PYGZhy{}parent = \PYGZlt{}1\PYGZgt{};
-\end{Verbatim}
-\end{quote}
-
-\begin{notice}{note}{Note:}
-Older versions of devicetrees may be encountered that contain a
-deprecated form of this property called \code{linux,phandle}. For
-compatibility, a client program might want to support \code{linux,phandle}
-if a \code{phandle} property is not present. The meaning and use of the two
-properties is identical.
-\end{notice}
-
-\begin{notice}{note}{Note:}
-Most devicetrees in \textsc{DTS} (see Appendix A) will not
-contain explicit phandle properties. The DTC tool automatically inserts
-the \code{phandle} properties when the DTS is compiled into the binary DTB
-format.
-\end{notice}
-
-
-\subsection{status}
-\label{devicetree-basics:status}
-Property name: \code{status}
-
-Value type: \code{\textless{}string\textgreater{}}
-
-Description:
-\begin{quote}
-
-The \code{status} property indicates the operational status of a device.
-Valid values are listed and defined in \hyperref[devicetree-basics:table-prop-status-values]{Table \ref{devicetree-basics:table-prop-status-values}}.
-\end{quote}
-
-
-\begin{threeparttable}
-\capstart\caption{Values for status property}\label{devicetree-basics:table-prop-status-values}\label{devicetree-basics:id8}
-\begin{tabulary}{\linewidth}{| l J |}
-\hline
-\textsf{\relax 
-Value
-} & \textsf{\relax 
-Description
-}\\
-\hline
-\code{"okay"}
- & 
-Indicates the device is operational
-\\
-\hline
-\code{"disabled"}
- & 
-Indicates that the device is not presently operational, but it
-might become operational in the future (for example, something
-is not plugged in, or switched off).
-
-Refer to the device binding for details on what disabled means
-for a given device.
-\\
-\hline
-\code{"fail"}
- & 
-Indicates that the device is not operational. A serious error
-was detected in the device, and it is unlikely to become
-operational without repair.
-\\
-\hline
-\code{"fail-sss"}
- & 
-Indicates that the device is not operational. A serious error
-was detected in the device and it is unlikely to become
-operational without repair. The sss portion of the value is
-specific to the device and indicates the error condition
-detected.
-\\
-\hline\end{tabulary}
-
-\end{threeparttable}
-
-
-
-\subsection{\#address-cells and \#size-cells}
-\label{devicetree-basics:address-cells-and-size-cells}
-Property name: \code{\#address-cells}, \code{\#size-cells}
-
-Value type: \code{\textless{}u32\textgreater{}}
-
-Description:
-\begin{quote}
-
-The \emph{\#address-cells} and \emph{\#size-cells} properties may be used in any
-device node that has children in the devicetree hierarchy and describes
-how child device nodes should be addressed. The \emph{\#address-cells}
-property defines the number of \code{\textless{}u32\textgreater{}} cells used to encode the address
-field in a child node's \emph{reg} property. The \emph{\#size-cells} property
-defines the number of \code{\textless{}u32\textgreater{}} cells used to encode the size field in a
-child node’s \emph{reg} property.
-
-The \emph{\#address-cells} and \emph{\#size-cells} properties are not inherited from
-ancestors in the devicetree. They shall be explicitly defined.
-
-An DTSpec-compliant boot program shall supply \emph{\#address-cells} and
-\emph{\#size-cells} on all nodes that have children.
-
-If missing, a client program should assume a default value of 2 for
-\emph{\#address-cells}, and a value of 1 for \emph{\#size-cells}.
-\end{quote}
-
-Example:
-\begin{quote}
-
-See the following devicetree excerpt:
-
-\begin{Verbatim}[commandchars=\\\{\}]
-soc \PYGZob{}
-   \PYGZsh{}address\PYGZhy{}cells = \PYGZlt{}1\PYGZgt{};
-   \PYGZsh{}size\PYGZhy{}cells = \PYGZlt{}1\PYGZgt{};
-
-   serial \PYGZob{}
-      compatible = \PYGZdq{}ns16550\PYGZdq{};
-      reg = \PYGZlt{}0x4600 0x100\PYGZgt{};
-      clock\PYGZhy{}frequency = \PYGZlt{}0\PYGZgt{};
-      interrupts = \PYGZlt{}0xA 0x8\PYGZgt{};
-      interrupt\PYGZhy{}parent = \PYGZlt{}\PYGZam{}ipic\PYGZgt{};
-   \PYGZcb{};
-\PYGZcb{};
-\end{Verbatim}
-
-In this example, the \emph{\#address-cells} and \emph{\#size-cells} properties of the soc node
-are both set to 1. This setting specifies that one cell is required to
-represent an address and one cell is required to represent the size of
-nodes that are children of this node.
-
-The serial device \emph{reg} property necessarily follows this specification
-set in the parent (soc) node—the address is represented by a single cell
-(0x4600), and the size is represented by a single cell (0x100).
-\end{quote}
-
-
-\subsection{reg}
-\label{devicetree-basics:reg}
-Property name: \code{reg}
-
-Property value: \code{\textless{}prop-encoded-array\textgreater{}} encoded as an arbitraty number of (\emph{address}, \emph{length}) pairs.
-
-Description:
-\begin{quote}
-
-The \emph{reg} property describes the address of the device’s resources
-within the address space defined by its parent bus. Most commonly this
-means the offsets and lengths of memory-mapped IO register blocks, but
-may have a different meaning on some bus types. Addresses in the address
-space defined by root node are cpu real addresses.
-
-The value is a \emph{\textless{}prop-encoded-array\textgreater{}}, composed of an arbitrary number
-of pairs of address and length, \emph{\textless{}address length\textgreater{}}. The number of
-\emph{\textless{}u32\textgreater{}} cells required to specify the address and length are
-bus-specific and are specified by the \emph{\#address-cells} and \emph{\#size-cells}
-properties in the parent of the device node. If the parent node
-specifies a value of 0 for \emph{\#size-cells}, the length field in the value
-of \emph{reg} shall be omitted.
-\end{quote}
-
-Example:
-\begin{quote}
-
-Suppose a device within a system-on-a-chip had two blocks of registers, a
-32-byte block at offset 0x3000 in the SOC and a 256-byte block at offset
-0xFE00. The \emph{reg} property would be encoded as follows (assuming
-\emph{\#address-cells} and \emph{\#size-cells} values of 1):
-\begin{quote}
-
-\code{reg = \textless{}0x3000 0x20 0xFE00 0x100\textgreater{};}
-\end{quote}
-\end{quote}
-
-
-\subsection{virtual-reg}
-\label{devicetree-basics:sect-standard-properties-virtual-reg}\label{devicetree-basics:virtual-reg}
-Property name: \code{virtual-reg}
-
-Value type: \code{\textless{}u32\textgreater{}}
-
-Description:
-\begin{quote}
-
-The \emph{virtual-reg} property specifies an effective address that maps to
-the first physical address specified in the \emph{reg} property of the device
-node. This property enables boot programs to provide client programs
-with virtual-to-physical mappings that have been set up.
-\end{quote}
-
-
-\subsection{ranges}
-\label{devicetree-basics:ranges}\label{devicetree-basics:sect-standard-properties-ranges}
-Property name: \code{ranges}
-
-Value type: \code{\textless{}empty\textgreater{}} or \code{\textless{}prop-encoded-array\textgreater{}} encoded as an arbitrary number of
-(\emph{child-bus-address}, \emph{parent-bus-address}, \emph{length}) triplets.
-
-Description:
-\begin{quote}
-
-The \emph{ranges} property provides a means of defining a mapping or
-translation between the address space of the bus (the child address
-space) and the address space of the bus node’s parent (the parent
-address space).
-
-The format of the value of the \emph{ranges} property is an arbitrary number
-of triplets of (\emph{child-bus-address}, \emph{parent-bus-address}, \emph{length})
-\begin{itemize}
-\item {} 
-The \emph{child-bus-address} is a physical address within the child bus'
-address space. The number of cells to represent the address is bus
-dependent and can be determined from the \emph{\#address-cells} of this node
-(the node in which the \emph{ranges} property appears).
-
-\item {} 
-The \emph{parent-bus-address} is a physical address within the parent bus'
-address space. The number of cells to represent the parent address is
-bus dependent and can be determined from the \emph{\#address-cells} property
-of the node that defines the parent’s address space.
-
-\item {} 
-The \emph{length} specifies the size of the range in the child’s address space. The number
-of cells to represent the size can be determined from the \emph{\#size-cells}
-of this node (the node in which the \emph{ranges} property appears).
-
-\end{itemize}
-
-If the property is defined with an \code{\textless{}empty\textgreater{}} value, it specifies that the
-parent and child address space is identical, and no address translation
-is required.
-
-If the property is not present in a bus node, it is assumed that no
-mapping exists between children of the node and the parent address
-space.
-\end{quote}
-
-Address Translation Example:
-\begin{quote}
-
-\begin{Verbatim}[commandchars=\\\{\}]
-soc \PYGZob{}
-   compatible = \PYGZdq{}simple\PYGZhy{}bus\PYGZdq{};
-   \PYGZsh{}address\PYGZhy{}cells = \PYGZlt{}1\PYGZgt{};
-   \PYGZsh{}size\PYGZhy{}cells = \PYGZlt{}1\PYGZgt{};
-   ranges = \PYGZlt{}0x0 0xe0000000 0x00100000\PYGZgt{};
-
-   serial \PYGZob{}
-      device\PYGZus{}type = \PYGZdq{}serial\PYGZdq{};
-      compatible = \PYGZdq{}ns16550\PYGZdq{};
-      reg = \PYGZlt{}0x4600 0x100\PYGZgt{};
-      clock\PYGZhy{}frequency = \PYGZlt{}0\PYGZgt{};
-      interrupts = \PYGZlt{}0xA 0x8\PYGZgt{};
-      interrupt\PYGZhy{}parent = \PYGZlt{} \PYGZam{}ipic \PYGZgt{};
-   \PYGZcb{};
-\PYGZcb{};
-\end{Verbatim}
-
-The \code{soc} node specifies a \emph{ranges} property of
-\begin{quote}
-
-\code{\textless{}0x0 0xe0000000 0x00100000\textgreater{};}
-\end{quote}
-
-This property value specifies that for an 1024KB range of address space,
-a child node addressed at physical 0x0 maps to a parent address of
-physical 0xe0000000. With this mapping, the \code{serial} device node can
-be addressed by a load or store at address 0xe0004600, an offset of
-0x4600 (specified in \emph{reg}) plus the 0xe0000000 mapping specified in
-\emph{ranges}.
-\end{quote}
-
-
-\subsection{dma-ranges}
-\label{devicetree-basics:dma-ranges}
-Property name: \code{dma-ranges}
-
-Value type: \code{\textless{}empty\textgreater{}} or \code{\textless{}prop-encoded-array\textgreater{}} encoded as an arbitrary number of
-(\emph{child-bus-address}, \emph{parent-bus-address}, \emph{length}) triplets.
-
-Description:
-\begin{quote}
-
-The \emph{dma-ranges} property is used to describe the direct memory access
-(DMA) structure of a memory-mapped bus whose devicetree parent can be
-accessed from DMA operations originating from the bus. It provides a
-means of defining a mapping or translation between the physical address
-space of the bus and the physical address space of the parent of the
-bus.
-
-The format of the value of the \emph{dma-ranges} property is an arbitrary
-number of triplets of (\emph{child-bus-address}, \emph{parent-bus-address},
-\emph{length}). Each triplet specified describes a contiguous DMA address
-range.
-\begin{itemize}
-\item {} 
-The \emph{child-bus-address} is a physical address within the child bus'
-address space. The number of cells to represent the address depends
-on the bus and can be determined from the \emph{\#address-cells} of this
-node (the node in which the \emph{dma-ranges} property appears).
-
-\item {} 
-The \emph{parent-bus-address} is a physical address within the parent bus'
-address space. The number of cells to represent the parent address is
-bus dependent and can be determined from the \emph{\#address-cells}
-property of the node that defines the parent’s address space.
-
-\item {} 
-The \emph{length} specifies the size of the range in the child’s address
-space. The number of cells to represent the size can be determined
-from the \emph{\#size-cells} of this node (the node in which the dma-ranges
-property appears).
-
-\end{itemize}
-\end{quote}
-
-
-\subsection{name (deprecated)}
-\label{devicetree-basics:name-deprecated}
-Property name: \code{name}
-
-Value type: \code{\textless{}string\textgreater{}}
-
-Description:
-\begin{quote}
-
-The \emph{name} property is a string specifying the name of the node. This
-property is deprecated, and its use is not recommended. However, it
-might be used in older non-DTSpec-compliant devicetrees. Operating
-system should determine a node’s name based on the \emph{name} component of
-the node name (see section {\hyperref[devicetree\string-basics:sect\string-node\string-names]{\crossref{\DUrole{std,std-ref}{2.2.1}}}}).
-\end{quote}
-
-
-\subsection{device\_type (deprecated)}
-\label{devicetree-basics:device-type-deprecated}
-Property name: \code{device\_type}
-
-Value type: \code{\textless{}string\textgreater{}}
-
-Description:
-\begin{quote}
-
-The \emph{device\_type} property was used in IEEE 1275 to describe the
-device’s FCode programming model. Because DTSpec does not have FCode, new
-use of the property is deprecated, and it should be included only on cpu
-and memory nodes for compatibility with IEEE 1275–derived devicetrees.
-\end{quote}
-
-
-\section{Interrupts and Interrupt Mapping}
-\label{devicetree-basics:sect-interrupts}\label{devicetree-basics:interrupts-and-interrupt-mapping}
-DTSpec adopts the interrupt tree model of representing interrupts
-specified in \emph{Open Firmware Recommended Practice: Interrupt Mapping,
-Version 0.9} \phantomsection\label{devicetree-basics:id1}{\hyperref[references:b7]{\crossref{{[}b7{]}}}}. Within the devicetree a logical interrupt tree exists
-that represents the hierarchy and routing of interrupts in the platform
-hardware. While generically referred to as an interrupt tree it is more
-technically a directed acyclic graph.
-
-The physical wiring of an interrupt source to an interrupt controller is
-represented in the devicetree with the \emph{interrupt-parent} property.
-Nodes that represent interrupt-generating devices contain an
-\emph{interrupt-parent} property which has a \emph{phandle} value that points to
-the device to which the device’s interrupts are routed, typically an
-interrupt controller. If an interrupt-generating device does not have an
-\emph{interrupt-parent} property, its interrupt parent is assumed to be its
-devicetree parent.
-
-Each interrupt generating device contains an \emph{interrupts} property with
-a value describing one or more interrupt sources for that device. Each
-source is represented with information called an \emph{interrupt specifier}.
-The format and meaning of an \emph{interrupt specifier} is interrupt domain
-specific, i.e., it is dependent on properties on the node at the root of
-its interrupt domain. The \emph{\#interrupt-cells} property is used by the
-root of an interrupt domain to define the number of \code{\textless{}u32\textgreater{}} values
-needed to encode an interrupt specifier. For example, for an Open PIC
-interrupt controller, an interrupt-specifer takes two 32-bit values and
-consists of an interrupt number and level/sense information for the
-interrupt.
-
-An interrupt domain is the context in which an interrupt specifier is
-interpreted. The root of the domain is either (1) an interrupt
-controller or (2) an interrupt nexus.
-\begin{enumerate}
-\item {} 
-An \emph{interrupt controller} is physical device and will need a driver
-to handle interrupts routed through it. It may also cascade into
-another interrupt domain. An interrupt controller is specified by the
-presence of an \emph{interrupt-controller} property on that node in the
-devicetree.
-
-\item {} 
-An \emph{interrupt nexus} defines a translation between one interrupt
-domain and another. The translation is based on both domain-specific
-and bus-specific information. This translation between domains is
-performed with the \emph{interrupt-map} property. For example, a PCI
-controller device node could be an interrupt nexus that defines a
-translation from the PCI interrupt namespace (INTA, INTB, etc.) to an
-interrupt controller with Interrupt Request (IRQ) numbers.
-
-\end{enumerate}
-
-The root of the interrupt tree is determined when traversal of the
-interrupt tree reaches an interrupt controller node without an
-\emph{interrupts} property and thus no explicit interrupt parent.
-
-See \hyperref[devicetree-basics:example-interrupt-tree]{Fig. \ref{devicetree-basics:example-interrupt-tree}} for an example of a graphical
-representation of a devicetree with interrupt parent relationships shown. It
-shows both the natural structure of the devicetree as well as where each node
-sits in the logical interrupt tree.
-\begin{figure}[htbp]
-\centering
-\capstart
-
-\includegraphics{graphviz-1d3954672eca688030b49a13a35b6714d9abdcd5.pdf}
-\caption{Example of the interrupt tree}\label{devicetree-basics:example-interrupt-tree}\label{devicetree-basics:id9}\end{figure}
-
-In the example shown in \hyperref[devicetree-basics:example-interrupt-tree]{Fig. \ref{devicetree-basics:example-interrupt-tree}}:
-\begin{itemize}
-\item {} 
-The \code{open-pic} interrupt controller is the root of the interrupt tree.
-
-\item {} 
-The interrupt tree root has three children—devices that route their
-interrupts directly to the \code{open-pic}
-\begin{itemize}
-\item {} 
-device1
-
-\item {} 
-PCI host controller
-
-\item {} 
-GPIO Controller
-
-\end{itemize}
-
-\item {} 
-Three interrupt domains exist; one rooted at the \code{open-pic} node,
-one at the \code{PCI host bridge} node, and one at the
-\code{GPIO Controller} node.
-
-\item {} 
-There are two nexus nodes; one at the \code{PCI host bridge} and one at
-the \code{GPIO controller}.
-
-\end{itemize}
-
-
-\subsection{Properties for Interrupt Generating Devices}
-\label{devicetree-basics:properties-for-interrupt-generating-devices}
-
-\subsubsection{interrupts}
-\label{devicetree-basics:interrupts}
-Property: \code{interrupts}
-
-Value type: \code{\textless{}prop-encoded-array\textgreater{}} encoded as arbitrary number of
-interrupt specifiers
-
-Description:
-\begin{quote}
-
-The \emph{interrupts} property of a device node defines the interrupt or
-interrupts that are generated by the device. The value of the
-\emph{interrupts} property consists of an arbitrary number of interrupt
-specifiers. The format of an interrupt specifier is defined by the
-binding of the interrupt domain root.
-\end{quote}
-
-Example:
-\begin{quote}
-
-A common definition of an interrupt specifier in an open PIC–compatible
-interrupt domain consists of two cells; an interrupt number and
-level/sense information. See the following example, which defines a
-single interrupt specifier, with an interrupt number of 0xA and
-level/sense encoding of 8.
-\begin{quote}
-
-\code{interrupts = \textless{}0xA 8\textgreater{};}
-\end{quote}
-\end{quote}
-
-
-\subsubsection{interrupt-parent}
-\label{devicetree-basics:interrupt-parent}
-Property: \code{interrupt-parent}
-
-Value type: \code{\textless{}phandle\textgreater{}}
-
-Description:
-\begin{quote}
-
-Because the hierarchy of the nodes in the interrupt tree might not match
-the devicetree, the \emph{interrupt-parent} property is available to make
-the definition of an interrupt parent explicit. The value is the phandle
-to the interrupt parent. If this property is missing from a device, its
-interrupt parent is assumed to be its devicetree parent.
-\end{quote}
-
-
-\subsection{Properties for Interrupt Controllers}
-\label{devicetree-basics:properties-for-interrupt-controllers}
-
-\subsubsection{\#interrupt-cells}
-\label{devicetree-basics:interrupt-cells}
-Property: \code{\#interrupt-cells}
-
-Value type: \code{\textless{}u32\textgreater{}}
-
-Description:
-\begin{quote}
-
-The \emph{\#interrupt-cells} property defines the number of cells required to
-encode an interrupt specifier for an interrupt domain.
-\end{quote}
-
-
-\subsubsection{interrupt-controller}
-\label{devicetree-basics:interrupt-controller}
-Property: \code{interrupt-controller}
-
-Value type: \code{\textless{}empty\textgreater{}}
-
-Description:
-\begin{quote}
-
-The presence of an \emph{interrupt-controller} property defines a node as an
-interrupt controller node.
-\end{quote}
-
-
-\subsection{Interrupt Nexus Properties}
-\label{devicetree-basics:interrupt-nexus-properties}
-An interrupt nexus node shall have an \emph{\#interrupt-cells} property.
-
-
-\subsubsection{interrupt-map}
-\label{devicetree-basics:interrupt-map}
-Property: \code{interrupt-map}
-
-Value type: \code{\textless{}prop-encoded-array\textgreater{}} encoded as an arbitrary number of
-interrupt mapping entries.
-
-Description:
-\begin{quote}
-
-An \emph{interrupt-map} is a property on a nexus node that bridges one
-interrupt domain with a set of parent interrupt domains and specifies
-how interrupt specifiers in the child domain are mapped to their
-respective parent domains.
-
-The interrupt map is a table where each row is a mapping entry
-consisting of five components: \emph{child unit address}, \emph{child interrupt
-specifier}, \emph{interrupt-parent}, \emph{parent unit address}, \emph{parent interrupt
-specifier}.
-\begin{description}
-\item[{child unit address}] \leavevmode
-The unit address of the child node being mapped. The number of
-32-bit cells required to specify this is described by the
-\emph{\#address-cells} property of the bus node on which the child is
-located.
-
-\item[{child interrupt specifier}] \leavevmode
-The interrupt specifier of the child node being mapped. The number
-of 32-bit cells required to specify this component is described by
-the \emph{\#interrupt-cells} property of this node—the nexus node
-containing the \emph{interrupt-map} property.
-
-\item[{interrupt-parent}] \leavevmode
-A single \emph{\textless{}phandle\textgreater{}} value that points to the interrupt parent to
-which the child domain is being mapped.
-
-\item[{parent unit address}] \leavevmode
-The unit address in the domain of the interrupt parent. The number
-of 32-bit cells required to specify this address is described by the
-\emph{\#address-cells} property of the node pointed to by the
-interrupt-parent field.
-
-\item[{parent interrupt specifier}] \leavevmode
-The interrupt specifier in the parent domain. The number of 32-bit
-cells required to specify this component is described by the
-\emph{\#interrupt-cells} property of this node—the nexus node containing
-the \emph{interrupt-map} property.
-
-\end{description}
-
-Lookups are performed on the interrupt mapping table by matching a
-unit-address/interrupt specifier pair against the child components in
-the interrupt-map. Because some fields in the unit interrupt specifier
-may not be relevant, a mask is applied before the lookup is done. This
-mask is defined in the \emph{interrupt-map-mask} property (see section
-{\hyperref[devicetree\string-basics:sect\string-interrupt\string-map\string-mask]{\crossref{\DUrole{std,std-ref}{2.4.3.2}}}}).
-
-\begin{notice}{note}{Note:}
-Both the child node and the interrupt parent node are required to
-have \emph{\#address-cells} and \emph{\#interrupt-cells} properties defined. If a
-unit address component is not required, \emph{\#address-cells} shall be
-explicitly defined to be zero.
-\end{notice}
-\end{quote}
-
-
-\subsubsection{interrupt-map-mask}
-\label{devicetree-basics:sect-interrupt-map-mask}\label{devicetree-basics:interrupt-map-mask}
-Property: \code{interrupt-map-mask}
-
-Value type: \code{\textless{}prop-encoded-array\textgreater{}} encoded as a bit mask
-
-Description:
-\begin{quote}
-
-An \emph{interrupt-map-mask} property is specified for a nexus node in the
-interrupt tree. This property specifies a mask that is applied to the
-incoming unit interrupt specifier being looked up in the table specified
-in the \emph{interrupt-map} property.
-\end{quote}
-
-
-\subsubsection{\#interrupt-cells}
-\label{devicetree-basics:id2}
-Property: \code{\#interrupt-cells}
-
-Value type: \code{\textless{}u32\textgreater{}}
-
-Description:
-\begin{quote}
-
-The \emph{\#interrupt-cells} property defines the number of cells required to
-encode an interrupt specifier for an interrupt domain.
-\end{quote}
-
-
-\subsection{Interrupt Mapping Example}
-\label{devicetree-basics:interrupt-mapping-example}
-The following shows the representation of a fragment of a devicetree with
-a PCI bus controller and a sample interrupt map for describing the
-interrupt routing for two PCI slots (IDSEL 0x11,0x12). The INTA, INTB,
-INTC, and INTD pins for slots 1 and 2 are wired to the Open PIC
-interrupt controller.
-\phantomsection\label{devicetree-basics:example-interrupt-mapping}
-\def\SphinxLiteralBlockLabel{\label{devicetree-basics:example-interrupt-mapping}}
-\begin{Verbatim}[commandchars=\\\{\}]
-soc \PYGZob{}
-   compatible = \PYGZdq{}simple\PYGZhy{}bus\PYGZdq{};
-   \PYGZsh{}address\PYGZhy{}cells = \PYGZlt{}1\PYGZgt{};
-   \PYGZsh{}size\PYGZhy{}cells = \PYGZlt{}1\PYGZgt{};
-
-   open\PYGZhy{}pic \PYGZob{}
-      clock\PYGZhy{}frequency = \PYGZlt{}0\PYGZgt{};
-      interrupt\PYGZhy{}controller;
-      \PYGZsh{}address\PYGZhy{}cells = \PYGZlt{}0\PYGZgt{};
-      \PYGZsh{}interrupt\PYGZhy{}cells = \PYGZlt{}2\PYGZgt{};
-   \PYGZcb{};
-
-   pci \PYGZob{}
-      \PYGZsh{}interrupt\PYGZhy{}cells = \PYGZlt{}1\PYGZgt{};
-      \PYGZsh{}size\PYGZhy{}cells = \PYGZlt{}2\PYGZgt{};
-      \PYGZsh{}address\PYGZhy{}cells = \PYGZlt{}3\PYGZgt{};
-      interrupt\PYGZhy{}map\PYGZhy{}mask = \PYGZlt{}0xf800 0 0 7\PYGZgt{};
-      interrupt\PYGZhy{}map = \PYGZlt{}
-         /* IDSEL 0x11 \PYGZhy{} PCI slot 1 */
-         0x8800 0 0 1 \PYGZam{}open\PYGZhy{}pic 2 1 /* INTA */
-         0x8800 0 0 2 \PYGZam{}open\PYGZhy{}pic 3 1 /* INTB */
-         0x8800 0 0 3 \PYGZam{}open\PYGZhy{}pic 4 1 /* INTC */
-         0x8800 0 0 4 \PYGZam{}open\PYGZhy{}pic 1 1 /* INTD */
-         /* IDSEL 0x12 \PYGZhy{} PCI slot 2 */
-         0x9000 0 0 1 \PYGZam{}open\PYGZhy{}pic 3 1 /* INTA */
-         0x9000 0 0 2 \PYGZam{}open\PYGZhy{}pic 4 1 /* INTB */
-         0x9000 0 0 3 \PYGZam{}open\PYGZhy{}pic 1 1 /* INTC */
-         0x9000 0 0 4 \PYGZam{}open\PYGZhy{}pic 2 1 /* INTD */
-      \PYGZgt{};
-   \PYGZcb{};
-\PYGZcb{};
-\end{Verbatim}
-\let\SphinxLiteralBlockLabel\empty
-
-One Open PIC interrupt controller is represented and is identified as an
-interrupt controller with an \emph{interrupt-controller} property.
-
-Each row in the interrupt-map table consists of five parts: a child unit
-address and interrupt specifier, which is mapped to an \emph{interrupt-parent}
-node with a specified parent unit address and interrupt specifier.
-\begin{itemize}
-\item {} 
-For example, the first row of the interrupt-map table specifies the
-mapping for INTA of slot 1. The components of that row are shown here
-
-\begin{DUlineblock}{0em}
-\item[] child unit address: \code{0x8800 0 0}
-\item[] child interrupt specifier: \code{1}
-\item[] interrupt parent: \code{\&open-pic}
-\item[] parent unit address: (empty because \code{\#address-cells = \textless{}0\textgreater{}} in the
-open-pic node)
-\item[] parent interrupt specifier: \code{2 1}
-\end{DUlineblock}
-\begin{itemize}
-\item {} 
-The child unit address is \code{\textless{}0x8800 0 0\textgreater{}}. This value is encoded
-with three 32-bit cells, which is determined by the value of the
-\emph{\#address-cells} property (value of 3) of the PCI controller. The
-three cells represent the PCI address as described by the binding for
-the PCI bus.
-\begin{itemize}
-\item {} 
-The encoding includes the bus number (0x0 \textless{}\textless{} 16), device number
-(0x11 \textless{}\textless{} 11), and function number (0x0 \textless{}\textless{} 8).
-
-\end{itemize}
-
-\item {} 
-The child interrupt specifier is \code{\textless{}1\textgreater{}}, which specifies INTA as
-described by the PCI binding. This takes one 32-bit cell as specified
-by the \emph{\#interrupt-cells} property (value of 1) of the PCI
-controller, which is the child interrupt domain.
-
-\item {} 
-The interrupt parent is specified by a phandle which points to the
-interrupt parent of the slot, the Open PIC interrupt controller.
-
-\item {} 
-The parent has no unit address because the parent interrupt domain
-(the open-pic node) has an \emph{\#address-cells} value of \code{\textless{}0\textgreater{}}.
-
-\item {} 
-The parent interrupt specifier is \code{\textless{}2 1\textgreater{}}. The number of cells to
-represent the interrupt specifier (two cells) is determined by the
-\emph{\#interrupt-cells} property on the interrupt parent, the open-pic
-node.
-\begin{itemize}
-\item {} 
-The value \code{\textless{}2 1\textgreater{}} is a value specified by the device binding for
-the Open PIC interrupt controller (see section
-{\hyperref[device\string-bindings:sect\string-bindings\string-simple\string-bus]{\crossref{\DUrole{std,std-ref}{4.5}}}}). The value \code{\textless{}2\textgreater{}} specifies the
-physical interrupt source number on the interrupt controller to
-which INTA is wired. The value \code{\textless{}1\textgreater{}} specifies the level/sense
-encoding.
-
-\end{itemize}
-
-\end{itemize}
-
-\end{itemize}
-
-In this example, the interrupt-map-mask property has a value of \code{\textless{}0xf800
-0 0 7\textgreater{}}. This mask is applied to a child unit interrupt specifier before
-performing a lookup in the interruptmap table.
-
-To perform a lookup of the open-pic interrupt source number for INTB for
-IDSEL 0x12 (slot 2), function 0x3, the following steps would be
-performed:
-\begin{itemize}
-\item {} 
-The child unit address and interrupt specifier form the value
-\code{\textless{}0x9300 0 0 2\textgreater{}}.
-\begin{itemize}
-\item {} 
-The encoding of the address includes the bus number (0x0 \textless{}\textless{} 16),
-device number (0x12 \textless{}\textless{} 11), and function number (0x3 \textless{}\textless{} 8).
-
-\item {} 
-The interrupt specifier is 2, which is the encoding for INTB as
-per the PCI binding.
-
-\end{itemize}
-
-\item {} 
-The interrupt-map-mask value \code{\textless{}0xf800 0 0 7\textgreater{}} is applied, giving a
-result of \code{\textless{}0x9000 0 0 2\textgreater{}}.
-
-\item {} 
-That result is looked up in the \emph{interrupt-map} table, which maps to
-the parent interrupt specifier \code{\textless{}4 1\textgreater{}}.
-
-\end{itemize}
-
-
-\chapter{Device Node Requirements}
-\label{devicenodes:chapter-device-node-requirements}\label{devicenodes:device-node-requirements}\label{devicenodes::doc}
-
-\section{Base Device Node Types}
-\label{devicenodes:base-device-node-types}
-The sections that follow specify the requirements for the base set of
-device nodes required in an DTSpec-compliant devicetree.
-
-All devicetrees shall have a root node and the following nodes shall be
-present at the root of all devicetrees:
-\begin{itemize}
-\item {} 
-One \code{/cpus} node
-
-\item {} 
-At least one \code{memory} node
-
-\end{itemize}
-
-
-\section{Root node}
-\label{devicenodes:root-node}
-The devicetree has a single root node of which all other device nodes
-are descendants. The full path to the root node is \code{/}.
-
-
-\begin{threeparttable}
-\capstart\caption{Root Node Properties}\label{devicenodes:id2}
-\begin{tabulary}{\linewidth}{| l c l J |}
-\hline
-\textsf{\relax 
-Property Name
-} & \textsf{\relax 
-Usage
-} & \textsf{\relax 
-Value Type
-} & \textsf{\relax 
-Definition
-}\\
-\hline
-\code{\#address-cells}
- & 
-R
- & 
-\code{\textless{}u32\textgreater{}}
- & 
-Specifies the number of \code{\textless{}u32\textgreater{}} cells to
-represent the address in the \code{reg} property in
-children of root.
-\\
-\hline
-\code{\#size-cells}
- & 
-R
- & 
-\code{\textless{}u32\textgreater{}}
- & 
-Specifies the number of \code{\textless{}u32\textgreater{}} cells to
-represent the size in the \code{reg} property in
-children of root.
-\\
-\hline
-\code{model}
- & 
-R
- & 
-\code{\textless{}string\textgreater{}}
- & 
-Specifies a string that uniquely identifies
-the model of the system board. The recommended
-format is ``manufacturer,model-number''.
-\\
-\hline
-\code{compatible}
- & 
-R
- & 
-\code{\textless{}stringlist\textgreater{}}
- & 
-Specifies a list of platform architectures
-with which this platform is compatible. This
-property can be used by operating systems in
-selecting platform specific code. The
-recommended form of the property value is:
-
-\code{"manufacturer,model"}
-
-For example:
-
-\code{compatible = "fsl,mpc8572ds"}
-\\
-\hline \multicolumn{4}{|l|}{
-Usage legend: R=Required, O=Optional, OR=Optional but Recommended, SD=See Definition
-}\\
-\hline\end{tabulary}
-
-\end{threeparttable}
-
-
-\begin{notice}{note}{Note:}
-All other standard properties (section
-{\hyperref[devicetree\string-basics:sect\string-standard\string-properties]{\crossref{\DUrole{std,std-ref}{2.3}}}}) are allowed but are optional.
-\end{notice}
-
-
-\section{\texttt{/aliases} node}
-\label{devicenodes:aliases-node}
-A devicetree may have an aliases node (\code{/aliases}) that defines one or
-more alias properties. The alias node shall be at the root of the devicetree
-and have the node name \code{/aliases}.
-
-Each property of the \code{/aliases} node defines an alias. The property name
-specifies the alias name. The property value specifies the full path to
-a node in the devicetree. For example, the property serial0 =
-\code{"/simple-bus@fe000000/serial@llc500"} defines the alias serial0.
-
-Alias names shall be a lowercase text strings of 1 to 31 characters from
-the following set of characters.
-
-
-\begin{threeparttable}
-\capstart\caption{Valid characters for alias names}\label{devicenodes:id3}
-\begin{tabulary}{\linewidth}{| c p{8cm} |}
-\hline
-\textsf{\relax 
-Character
-} & \textsf{\relax 
-Description
-}\\
-\hline
-0-9
- & 
-digit
-\\
-\hline
-a-z
- & 
-lowercase letter
-\\
-\hline
--
- & 
-dash
-\\
-\hline\end{tabulary}
-
-\end{threeparttable}
-
-
-An alias value is a device path and is encoded as a string. The value
-represents the full path to a node, but the path does not need to refer
-to a leaf node.
-
-A client program may use an alias property name to refer to a full
-device path as all or part of its string value. A client program, when
-considering a string as a device path, shall detect and use the alias.
-
-\textbf{Example}
-
-\begin{Verbatim}[commandchars=\\\{\}]
-aliases \PYGZob{}
-    serial0 = \PYGZdq{}/simple\PYGZhy{}bus@fe000000/serial@llc500\PYGZdq{};
-    ethernet0 = \PYGZdq{}/simple\PYGZhy{}bus@fe000000/ethernet@31c000\PYGZdq{};
-\PYGZcb{}
-\end{Verbatim}
-
-Given the alias serial0, a client program can look at the aliases node
-and determine the alias refers to the device path
-\code{/simple-bus@fe000000/serial@llc500}.
-
-
-\section{\texttt{/memory} node}
-\label{devicenodes:memory-node}
-A memory device node is required for all devicetrees and describes the
-physical memory layout for the system. If a system has multiple ranges
-of memory, multiple memory nodes can be created, or the ranges can be
-specified in the \emph{reg} property of a single memory node.
-
-The name component of the node name (see section {\hyperref[devicetree\string-basics:sect\string-node\string-names]{\crossref{\DUrole{std,std-ref}{2.2.1}}}})
-shall be memory.
-
-The client program may access memory not covered by any memory
-reservations (see section {\hyperref[flattened\string-format:sect\string-fdt\string-memory\string-reservation\string-block]{\crossref{\DUrole{std,std-ref}{5.3}}}})
-using any storage attributes it chooses. However, before changing the
-storage attributes used to access a real page, the client program is
-responsible for performing actions required by the architecture and
-implementation, possibly including flushing the real page from the
-caches. The boot program is responsible for ensuring that, without
-taking any action associated with a change in storage attributes, the
-client program can safely access all memory (including memory covered by
-memory reservations) as WIMG = 0b001x. That is:
-\begin{itemize}
-\item {} 
-not Write Through Required
-
-\item {} 
-not Caching Inhibited
-
-\item {} 
-Memory Coherence
-
-\item {} 
-Required either not Guarded or Guarded
-
-\end{itemize}
-
-If the VLE storage attribute is supported, with VLE=0.
-
-
-\begin{threeparttable}
-\capstart\caption{\texttt{/memory} Node Properties}\label{devicenodes:id4}
-\begin{tabulary}{\linewidth}{| l c l J |}
-\hline
-\textsf{\relax 
-Property Name
-} & \textsf{\relax 
-Usage
-} & \textsf{\relax 
-Value Type
-} & \textsf{\relax 
-Definition
-}\\
-\hline
-\code{device\_type}
- & 
-R
- & 
-\code{\textless{}string\textgreater{}}
- & 
-Value shall be ``memory''
-\\
-\hline
-\code{reg}
- & 
-R
- & 
-\code{\textless{}prop-encoded-array\textgreater{}}
- & 
-Consists of an arbitrary number of address and
-size pairs that specify the physical address
-and size of the memory ranges.
-\\
-\hline
-\code{initial-mapped-area}
- & 
-O
- & 
-\code{\textless{}prop-encoded-array\textgreater{}}
- & 
-Specifies the address and size of the Initial
-Mapped Area
-
-Is a prop-encoded-array consisting of a
-triplet of (effective address, physical
-address, size). The effective and physical
-address shall each be 64-bit (\code{\textless{}u64\textgreater{}} value),
-and the size shall be 32-bits (\code{\textless{}u32\textgreater{}} value).
-\\
-\hline \multicolumn{4}{|l|}{
-Usage legend: R=Required, O=Optional, OR=Optional but Recommended, SD=See Definition
-}\\
-\hline\end{tabulary}
-
-\end{threeparttable}
-
-
-\begin{notice}{note}{Note:}
-All other standard properties (section
-{\hyperref[devicetree\string-basics:sect\string-standard\string-properties]{\crossref{\DUrole{std,std-ref}{2.3}}}}) are allowed but are optional.
-\end{notice}
-
-\textbf{Examples}
-
-Given a 64-bit Power system with the following physical memory layout:
-\begin{itemize}
-\item {} 
-RAM: starting address 0x0, length 0x80000000 (2GB)
-
-\item {} 
-RAM: starting address 0x100000000, length 0x100000000 (4GB)
-
-\end{itemize}
-
-Memory nodes could be defined as follows, assuming \code{\#address-cells = \textless{}2\textgreater{}}
-and \code{\#size-cells = \textless{}2\textgreater{}}.
-
-\textbf{Example \#1}
-
-\begin{Verbatim}[commandchars=\\\{\}]
-memory@0 \PYGZob{}
-    device\PYGZus{}type = \PYGZdq{}memory\PYGZdq{};
-    reg = \PYGZlt{}0x000000000 0x00000000 0x00000000 0x80000000
-           0x000000001 0x00000000 0x00000001 0x00000000\PYGZgt{};
-\PYGZcb{};
-\end{Verbatim}
-
-\textbf{Example \#2}
-
-\begin{Verbatim}[commandchars=\\\{\}]
-memory@0 \PYGZob{}
-    device\PYGZus{}type = \PYGZdq{}memory\PYGZdq{};
-    reg = \PYGZlt{}0x000000000 0x00000000 0x00000000 0x80000000\PYGZgt{};
-\PYGZcb{};
-memory@100000000 \PYGZob{}
-    device\PYGZus{}type = \PYGZdq{}memory\PYGZdq{};
-    reg = \PYGZlt{}0x000000001 0x00000000 0x00000001 0x00000000\PYGZgt{};
-\PYGZcb{};
-\end{Verbatim}
-
-The \code{reg} property is used to define the address and size of the two
-memory ranges. The 2 GB I/O region is skipped. Note that the
-\code{\#address-cells} and \code{\#size-cells} properties of the root node specify a
-value of 2, which means that two 32-bit cells are required to define the
-address and length for the \code{reg} property of the memory node.
-
-
-\section{\texttt{/chosen} Node}
-\label{devicenodes:chosen-node}
-The \code{/chosen} node does not represent a real device in the system but
-describes parameters chosen or specified by the system firmware at run
-time. It shall be a child of the root node.
-
-
-\begin{threeparttable}
-\capstart\caption{\texttt{/chosen} Node Properties}\label{devicenodes:id5}
-\begin{tabulary}{\linewidth}{| l c l J |}
-\hline
-\textsf{\relax 
-Property Name
-} & \textsf{\relax 
-Usage
-} & \textsf{\relax 
-Value Type
-} & \textsf{\relax 
-Definition
-}\\
-\hline
-\code{bootargs}
- & 
-O
- & 
-\code{\textless{}string\textgreater{}}
- & 
-A string that specifies the boot arguments for
-the client program. The value could
-potentially be a null string if no boot
-arguments are required.
-\\
-\hline
-\code{stdout-path}
- & 
-O
- & 
-\code{\textless{}string\textgreater{}}
- & 
-A string that specifies the full path to the
-node representing the device to be used for
-boot console output. If the character '':'' is
-present in the value it terminates the path.
-The value may be an alias.
-If the stdin-path property is not specified,
-stdout-path should be assumed to define the
-input device.
-\\
-\hline
-\code{stdin-path}
- & 
-O
- & 
-\code{\textless{}string\textgreater{}}
- & 
-A string that specifies the full path to the
-node representing the device to be used for
-boot console input. If the character '':'' is
-present in the value it terminates the path.
-The value may be an alias.
-\\
-\hline \multicolumn{4}{|l|}{
-Usage legend: R=Required, O=Optional, OR=Optional but Recommended, SD=See Definition
-}\\
-\hline\end{tabulary}
-
-\end{threeparttable}
-
-
-\begin{notice}{note}{Note:}
-All other standard properties (section
-{\hyperref[devicetree\string-basics:sect\string-standard\string-properties]{\crossref{\DUrole{std,std-ref}{2.3}}}}) are allowed but are optional.
-\end{notice}
-
-\textbf{Example}
-
-\begin{Verbatim}[commandchars=\\\{\}]
-chosen \PYGZob{}
-    bootargs = \PYGZdq{}root=/dev/nfs rw nfsroot=192.168.1.1 console=ttyS0,115200\PYGZdq{};
-\PYGZcb{};
-\end{Verbatim}
-
-Older versions of devicetrees may be encountered that contain a
-deprecated form of the stdout-path property called linux,stdout-path.
-For compatibility, a client program might want to support
-linux,stdout-path if a stdout-path property is not present. The meaning
-and use of the two properties is identical.
-
-
-\section{\texttt{/cpus} Node Properties}
-\label{devicenodes:cpus-node-properties}
-A cpus node is required for all devicetrees. It does not represent a
-real device in the system, but acts as a container for child cpu nodes
-which represent the systems CPUs.
-
-
-\begin{threeparttable}
-\capstart\caption{\texttt{/cpus} Node Properties}\label{devicenodes:id6}
-\begin{tabulary}{\linewidth}{| l c l J |}
-\hline
-\textsf{\relax 
-Property Name
-} & \textsf{\relax 
-Usage
-} & \textsf{\relax 
-Value Type
-} & \textsf{\relax 
-Definition
-}\\
-\hline
-\code{\#address-cells}
- & 
-R
- & 
-\code{\textless{}u32\textgreater{}}
- & 
-The value specifies how many cells each
-element of the \code{reg} property array takes in
-children of this node.
-\\
-\hline
-\code{\#size-cells}
- & 
-R
- & 
-\code{\textless{}u32\textgreater{}}
- & 
-Value shall be 0. Specifies that no size is
-required in the \code{reg} property in children of
-this node.
-\\
-\hline \multicolumn{4}{|l|}{
-Usage legend: R=Required, O=Optional, OR=Optional but Recommended, SD=See Definition
-}\\
-\hline\end{tabulary}
-
-\end{threeparttable}
-
-
-\begin{notice}{note}{Note:}
-All other standard properties (section
-{\hyperref[devicetree\string-basics:sect\string-standard\string-properties]{\crossref{\DUrole{std,std-ref}{2.3}}}}) are allowed but are optional.
-\end{notice}
-
-The cpus node may contain properties that are common across CPU nodes.
-See section {\hyperref[devicenodes:sect\string-cpus\string-cpu\string-node\string-properties]{\crossref{\DUrole{std,std-ref}{3.7}}}} for details.
-
-For an example, see section {\hyperref[devicenodes:sect\string-cpu\string-node\string-example]{\crossref{\DUrole{std,std-ref}{3.8.1}}}}.
-
-
-\section{\texttt{/cpus/cpu*} Node Properties}
-\label{devicenodes:sect-cpus-cpu-node-properties}\label{devicenodes:cpus-cpu-node-properties}
-A cpu node represents a hardware execution block that is sufficiently
-independent that it is capable of running an operating system without
-interfering with other CPUs possibly running other operating systems.
-
-Hardware threads that share an MMU would generally be represented under
-one cpu node. If other more complex CPU topographies are designed, the
-binding for the CPU must describe the topography (e.g. threads that
-don’t share an MMU).
-
-CPUs and threads are numbered through a unified number-space that should
-match as closely as possible the interrupt controller’s numbering of
-CPUs/threads.
-
-Properties that have identical values across CPU nodes may be placed in
-the cpus node instead. A client program must first examine a specific
-CPU node, but if an expected property is not found then it should look
-at the parent cpus node. This results in a less verbose representation
-of properties which are identical across all CPUs.
-
-The node name for every cpu node should be \code{cpu}.
-
-
-\subsection{General Properties of \texttt{/cpus/cpu*} nodes}
-\label{devicenodes:general-properties-of-cpus-cpu-nodes}
-The following table describes the general properties of CPU nodes. Some
-of the properties described in \hyperref[devicenodes:table-cpu-node-props]{Table \ref{devicenodes:table-cpu-node-props}} are select
-standard properties with specific applicable detail.
-
-\begin{longtable}{| p{1.5cm} p{1cm} p{2.5cm} p{9.0cm} |}
-\caption{\texttt{/cpus/cpu*} Node General Properties}\label{devicenodes:table-cpu-node-props}\\
-\hline
-\textsf{\relax 
-Property Name
-} & \textsf{\relax 
-Usage
-} & \textsf{\relax 
-Value Type
-} & \textsf{\relax 
-Definition
-}\\
-\hline\endfirsthead
-
-\multicolumn{4}{c}%
-{{\tablecontinued{\tablename\ \thetable{} -- continued from previous page}}} \\
-\hline
-\textsf{\relax 
-Property Name
-} & \textsf{\relax 
-Usage
-} & \textsf{\relax 
-Value Type
-} & \textsf{\relax 
-Definition
-}\\
-\hline\endhead
-
-\hline \multicolumn{4}{|r|}{{\tablecontinued{Continued on next page}}} \\ \hline
-\endfoot
-
-\endlastfoot
-
-
-\code{device\_type}
- & 
-\begin{DUlineblock}{0em}
-\item[] R
-\end{DUlineblock}
- & 
-\begin{DUlineblock}{0em}
-\item[] \code{\textless{}string\textgreater{}}
-\end{DUlineblock}
- & 
-Value shall be \code{"cpu"}.
-\\
-\hline
-\code{reg}
- & 
-R
- & 
-array
- & 
-The value of \emph{reg} is a \code{\textless{}prop-encoded-array\textgreater{}}
-that defines a unique CPU/thread id for the
-CPU/threads represented by the CPU node.
-
-If a CPU supports more than one thread (i.e.
-multiple streams of execution) the \emph{reg}
-property is an array with 1 element per
-thread. The \emph{\#address-cells} on the \code{/cpus} node
-specifies how many cells each element of the
-array takes. Software can determine the number
-of threads by dividing the size of \emph{reg} by
-the parent node's \emph{\#address-cells}.
-
-If a CPU/thread can be the target of an
-external interrupt the \emph{reg} property value
-must be a unique CPU/thread id that is
-addressable by the interrupt controller.
-
-If a CPU/thread cannot be the target of an
-external interrupt, then \emph{reg} must be unique
-and out of bounds of the range addressed by
-the interrupt controller
-
-If a CPU/thread's PIR is modifiable, a client
-program should modify PIR to match the \emph{reg}
-property value. If PIR cannot be modified and
-the PIR value is distinct from the interrupt
-controller numberspace, the CPUs binding may
-define a binding-specific representation of
-PIR values if desired.
-\\
-\hline
-\code{clock-frequency}
- & 
-\begin{DUlineblock}{0em}
-\item[] R
-\end{DUlineblock}
- & 
-\begin{DUlineblock}{0em}
-\item[] array
-\end{DUlineblock}
- & 
-Specifies the current clock speed of the CPU
-in Hertz. The value is a \code{\textless{}prop-encoded-array\textgreater{}}
-in one of two forms:
-\begin{itemize}
-\item {} 
-A 32-bit integer consisting of one \code{\textless{}u32\textgreater{}}
-specifying the frequency.
-
-\item {} 
-A 64-bit integer represented as a \code{\textless{}u64\textgreater{}}
-specifying the frequency.
-
-\end{itemize}
-\\
-\hline
-\code{timebase-frequency}
- & 
-\begin{DUlineblock}{0em}
-\item[] R
-\end{DUlineblock}
- & 
-\begin{DUlineblock}{0em}
-\item[] array
-\end{DUlineblock}
- & 
-Specifies the current frequency at which the
-timebase and decrementer registers are updated
-(in Hertz). The value is a
-\textless{}prop-encoded-array\textgreater{} in one of two forms:
-\begin{itemize}
-\item {} 
-A 32-bit integer consisting of one \code{\textless{}u32\textgreater{}}
-specifying the frequency.
-
-\item {} 
-A 64-bit integer represented as a \code{\textless{}u64\textgreater{}}.
-
-\end{itemize}
-\\
-\hline
-\code{status}
- & 
-SD
- & 
-\code{\textless{}string\textgreater{}}
- & 
-A standard property describing the state of a
-CPU. This property shall be present for nodes
-representing CPUs in a symmetric
-multiprocessing (SMP) configuration. For a CPU
-node the meaning of the \code{"okay"} and
-\code{"disabled"} values are as follows:
-\begin{description}
-\item[{\code{"okay"} :}] \leavevmode
-The CPU is running.
-
-\item[{\code{"disabled"} :}] \leavevmode
-The CPU is in a quiescent state.
-
-\end{description}
-
-A quiescent CPU is in a state where it cannot
-interfere with the normal operation of other
-CPUs, nor can its state be affected by the
-normal operation of other running CPUs, except
-by an explicit method for enabling or
-reenabling the quiescent CPU (see the
-enable-method property).
-
-In particular, a running CPU shall be able to
-issue broadcast TLB invalidates without
-affecting a quiescent CPU.
-
-Examples: A quiescent CPU could be in a spin
-loop, held in reset, and electrically isolated
-from the system bus or in another
-implementation dependent state.
-\\
-\hline
-\code{enable-method}
- & 
-\begin{DUlineblock}{0em}
-\item[] SD
-\end{DUlineblock}
- & 
-\begin{DUlineblock}{0em}
-\item[] \code{\textless{}stringlist\textgreater{}}
-\end{DUlineblock}
- & 
-Describes the method by which a CPU in a
-disabled state is enabled. This property is
-required for CPUs with a status property with
-a value of \code{"disabled"}. The value consists of
-one or more strings that define the method to
-release this CPU. If a client program
-recognizes any of the methods, it may use it.
-The value shall be one of the following:
-\begin{description}
-\item[{\code{"spin-table"} :}] \leavevmode
-The CPU is enabled with the
-spin table method defined in the DTSpec.
-
-\item[{\code{"{[}vendor{]},{[}method{]}"} :}] \leavevmode
-Implementation dependent string that
-describes the method by which a CPU is
-released from a \code{"disabled"} state. The
-required format is: \code{"{[}vendor{]},{[}method{]}"},
-where vendor is a string describing the name of
-the manufacturer and method is a string
-describing the vendorspecific mechanism.
-
-\end{description}
-
-Example: \code{"fsl,MPC8572DS"}
-
-\begin{notice}{note}{Note:}
-Other methods may be added to later
-revisions of the DTSpec specification.
-\end{notice}
-\\
-\hline
-\code{cpu-release-addr}
- & 
-\begin{DUlineblock}{0em}
-\item[] SD
-\end{DUlineblock}
- & 
-\begin{DUlineblock}{0em}
-\item[] \code{\textless{}u64\textgreater{}}
-\end{DUlineblock}
- & 
-The cpu-release-addr property is required for
-cpu nodes that have an enable-method property
-value of \code{"spin-table"}. The value specifies the
-physical address of a spin table entry that
-releases a secondary CPU from its spin loop.
-\\
-\hline \multicolumn{4}{|l|}{
-Usage legend: R=Required, O=Optional, OR=Optional but Recommended, SD=See Definition
-}\\
-\hline\end{longtable}
-
-
-\begin{notice}{note}{Note:}
-All other standard properties (section
-{\hyperref[devicetree\string-basics:sect\string-standard\string-properties]{\crossref{\DUrole{std,std-ref}{2.3}}}}) are allowed but are optional.
-\end{notice}
-
-\begin{longtable}{| p{1.5cm} p{1cm} p{2.5cm} p{9.0cm} |}
-\caption{\texttt{/cpus/cpu*} Node Power ISA Properties}\\
-\hline
-\textsf{\relax 
-Property Name
-} & \textsf{\relax 
-Usage
-} & \textsf{\relax 
-Value Type
-} & \textsf{\relax 
-Definition
-}\\
-\hline\endfirsthead
-
-\multicolumn{4}{c}%
-{{\tablecontinued{\tablename\ \thetable{} -- continued from previous page}}} \\
-\hline
-\textsf{\relax 
-Property Name
-} & \textsf{\relax 
-Usage
-} & \textsf{\relax 
-Value Type
-} & \textsf{\relax 
-Definition
-}\\
-\hline\endhead
-
-\hline \multicolumn{4}{|r|}{{\tablecontinued{Continued on next page}}} \\ \hline
-\endfoot
-
-\endlastfoot
-
-
-\code{power-isa-version}
- & 
-\begin{DUlineblock}{0em}
-\item[] O
-\end{DUlineblock}
- & 
-\begin{DUlineblock}{0em}
-\item[] \code{\textless{}string\textgreater{}}
-\end{DUlineblock}
- & 
-A string that specifies the numerical portion
-of the Power ISA version string. For example,
-for an implementation complying with Power ISA
-Version 2.06, the value of this property would
-be \code{"2.06"}.
-\\
-\hline
-\code{power-isa-*}
- & 
-\begin{DUlineblock}{0em}
-\item[] O
-\end{DUlineblock}
- & 
-\begin{DUlineblock}{0em}
-\item[] \code{\textless{}empty\textgreater{}}
-\end{DUlineblock}
- & 
-If the \code{power-isa-version} property exists, then
-for each category from the Categories section
-of Book I of the Power ISA version indicated,
-the existence of a property named
-\code{power-isa-{[}CAT{]}}, where \code{{[}CAT{]}} is the
-abbreviated category name with all uppercase
-letters converted to lowercase, indicates that
-the category is supported by the
-implementation.
-
-For example, if the power-isa-version property
-exists and its value is \code{"2.06"} and the
-power-isa-e.hv property exists, then the
-implementation supports
-{[}Category:Embedded.Hypervisor{]} as defined in
-Power ISA Version 2.06.
-\\
-\hline
-\code{cache-op-block-size}
- & 
-\begin{DUlineblock}{0em}
-\item[] SD
-\end{DUlineblock}
- & 
-\begin{DUlineblock}{0em}
-\item[] \code{\textless{}u32\textgreater{}}
-\end{DUlineblock}
- & 
-Specifies the block size in bytes upon which
-cache block instructions operate (e.g., dcbz).
-Required if different than the L1 cache block
-size.
-\\
-\hline
-\code{reservation-granule-size}
- & 
-\begin{DUlineblock}{0em}
-\item[] SD
-\end{DUlineblock}
- & 
-\begin{DUlineblock}{0em}
-\item[] \code{\textless{}u32\textgreater{}}
-\end{DUlineblock}
- & 
-Specifies the reservation granule size
-supported by this processor in bytes.
-\\
-\hline
-\code{mmu-type}
- & 
-O
- & 
-\code{\textless{}string\textgreater{}}
- & 
-Specifies the CPU’s MMU type.
-
-Valid values are shown below:
-\begin{itemize}
-\item {} 
-\code{"mpc8xx"}
-
-\item {} 
-\code{"ppc40x"}
-
-\item {} 
-\code{"ppc440"}
-
-\item {} 
-\code{"ppc476"}
-
-\item {} 
-\code{"power-embedded"}
-
-\item {} 
-\code{"powerpc-classic"}
-
-\item {} 
-\code{"power-server-stab"}
-
-\item {} 
-\code{"power-server-slb"}
-
-\item {} 
-\code{"none"}
-
-\end{itemize}
-\\
-\hline \multicolumn{4}{|l|}{
-Usage legend: R=Required, O=Optional, OR=Optional but Recommended, SD=See Definition
-}\\
-\hline\end{longtable}
-
-
-\begin{notice}{note}{Note:}
-All other standard properties (section
-{\hyperref[devicetree\string-basics:sect\string-standard\string-properties]{\crossref{\DUrole{std,std-ref}{2.3}}}}) are allowed but are optional.
-\end{notice}
-
-Older versions of devicetree may be encountered that contain a
-bus-frequency property on CPU nodes. For compatibility, a client-program
-might want to support bus-frequency. The format of the value is
-identical to that of clock-frequency. The recommended practice is to
-represent the frequency of a bus on the bus node using a clock-frequency
-property.
-
-
-\subsection{TLB Properties}
-\label{devicenodes:tlb-properties}
-The following properties of a cpu node describe the translate look-aside
-buffer in the processor’s MMU.
-
-
-\begin{threeparttable}
-\capstart\caption{\texttt{/cpu/cpu*} Node Power ISA TLB Properties}\label{devicenodes:id9}
-\begin{tabulary}{\linewidth}{| l c l J |}
-\hline
-\textsf{\relax 
-Property Name
-} & \textsf{\relax 
-Usage
-} & \textsf{\relax 
-Value Type
-} & \textsf{\relax 
-Definition
-}\\
-\hline
-\code{tlb-split}
- & 
-SD
- & 
-\code{\textless{}empty\textgreater{}}
- & 
-If present specifies that the TLB has a split
-configuration, with separate TLBs for
-instructions and data. If absent, specifies
-that the TLB has a unified configuration.
-Required for a CPU with a TLB in a split
-configuration.
-\\
-\hline
-\code{tlb-size}
- & 
-SD
- & 
-\code{\textless{}u32\textgreater{}}
- & 
-Specifies the number of entries in the TLB.
-Required for a CPU with a unified TLB for
-instruction and data addresses.
-\\
-\hline
-\code{tlb-sets}
- & 
-SD
- & 
-\code{\textless{}u32\textgreater{}}
- & 
-Specifies the number of associativity sets in
-the TLB. Required for a CPU with a unified TLB
-for instruction and data addresses.
-\\
-\hline
-\code{d-tlb-size}
- & 
-SD
- & 
-\code{\textless{}u32\textgreater{}}
- & 
-Specifies the number of entries in the data
-TLB. Required for a CPU with a split TLB
-configuration.
-\\
-\hline
-\code{d-tlb-sets}
- & 
-SD
- & 
-\code{\textless{}u32\textgreater{}}
- & 
-Specifies the number of associativity sets in
-the data TLB. Required for a CPU with a split
-TLB configuration.
-\\
-\hline
-\code{i-tlb-size}
- & 
-SD
- & 
-\code{\textless{}u32\textgreater{}}
- & 
-Specifies the number of entries in the
-instruction TLB. Required for a CPU with a
-split TLB configuration.
-\\
-\hline
-\code{i-tlb-sets}
- & 
-SD
- & 
-\code{\textless{}u32\textgreater{}}
- & 
-Specifies the number of associativity sets in
-the instruction TLB. Required for a CPU with a
-split TLB configuration.
-\\
-\hline \multicolumn{4}{|l|}{
-Usage legend: R=Required, O=Optional, OR=Optional but Recommended, SD=See Definition
-}\\
-\hline\end{tabulary}
-
-\end{threeparttable}
-
-
-\begin{notice}{note}{Note:}
-All other standard properties (section
-{\hyperref[devicetree\string-basics:sect\string-standard\string-properties]{\crossref{\DUrole{std,std-ref}{2.3}}}}) are allowed but are optional.
-\end{notice}
-
-
-\subsection{Internal (L1) Cache Properties}
-\label{devicenodes:internal-l1-cache-properties}
-The following properties of a cpu node describe the processor’s internal
-(L1) cache.
-
-
-\begin{threeparttable}
-\capstart\caption{\texttt{/cpu/cpu*} Node Power ISA Cache Properties}\label{devicenodes:id10}
-\begin{tabulary}{\linewidth}{| l c l J |}
-\hline
-\textsf{\relax 
-Property Name
-} & \textsf{\relax 
-Usage
-} & \textsf{\relax 
-Value Type
-} & \textsf{\relax 
-Definition
-}\\
-\hline
-\code{cache-unified}
- & 
-SD
- & 
-\code{\textless{}empty\textgreater{}}
- & 
-If present, specifies the cache has a unified
-organization. If not present, specifies that
-the cache has a Harvard architecture with
-separate caches for instructions and data.
-\\
-\hline
-\code{cache-size}
- & 
-SD
- & 
-\code{\textless{}u32\textgreater{}}
- & 
-Specifies the size in bytes of a unified
-cache. Required if the cache is unified
-(combined instructions and data).
-\\
-\hline
-\code{cache-sets}
- & 
-SD
- & 
-\code{\textless{}u32\textgreater{}}
- & 
-Specifies the number of associativity sets in
-a unified cache. Required if the cache is
-unified (combined instructions and data)
-\\
-\hline
-\code{cache-block-size}
- & 
-SD
- & 
-\code{\textless{}u32\textgreater{}}
- & 
-Specifies the block size in bytes of a unified
-cache. Required if the processor has a unified
-cache (combined instructions and data)
-\\
-\hline
-\code{cache-line-size}
- & 
-SD
- & 
-\code{\textless{}u32\textgreater{}}
- & 
-Specifies the line size in bytes of a unified
-cache, if different than the cache block size
-Required if the processor has a unified cache
-(combined instructions and data).
-\\
-\hline
-\code{i-cache-size}
- & 
-SD
- & 
-\code{\textless{}u32\textgreater{}}
- & 
-Specifies the size in bytes of the instruction
-cache. Required if the cpu has a separate
-cache for instructions.
-\\
-\hline
-\code{i-cache-sets}
- & 
-SD
- & 
-\code{\textless{}u32\textgreater{}}
- & 
-Specifies the number of associativity sets in
-the instruction cache. Required if the cpu has
-a separate cache for instructions.
-\\
-\hline
-\code{i-cache-block-size}
- & 
-SD
- & 
-\code{\textless{}u32\textgreater{}}
- & 
-Specifies the block size in bytes of the
-instruction cache. Required if the cpu has a
-separate cache for instructions.
-\\
-\hline
-\code{i-cache-line-size}
- & 
-SD
- & 
-\code{\textless{}u32\textgreater{}}
- & 
-Specifies the line size in bytes of the
-instruction cache, if different than the cache
-block size. Required if the cpu has a separate
-cache for instructions.
-\\
-\hline
-\code{d-cache-size}
- & 
-SD
- & 
-\code{\textless{}u32\textgreater{}}
- & 
-Specifies the size in bytes of the data cache.
-Required if the cpu has a separate cache for
-data.
-\\
-\hline
-\code{d-cache-sets}
- & 
-SD
- & 
-\code{\textless{}u32\textgreater{}}
- & 
-Specifies the number of associativity sets in
-the data cache. Required if the cpu has a
-separate cache for data.
-\\
-\hline
-\code{d-cache-block-size}
- & 
-SD
- & 
-\code{\textless{}u32\textgreater{}}
- & 
-Specifies the block size in bytes of the data
-cache. Required if the cpu has a separate
-cache for data.
-\\
-\hline
-\code{d-cache-line-size}
- & 
-SD
- & 
-\code{\textless{}u32\textgreater{}}
- & 
-Specifies the line size in bytes of the data
-cache, if different than the cache block size.
-Required if the cpu has a separate cache for
-data.
-\\
-\hline
-\code{next-level-cache}
- & 
-SD
- & 
-\code{\textless{}phandle\textgreater{}}
- & 
-If present, indicates that another level of
-cache exists. The value is the phandle of the
-next level of cache. The phandle value type is
-fully described in section {\hyperref[devicetree\string-basics:sect\string-standard\string-properties\string-phandle]{\crossref{\DUrole{std,std-ref}{2.3.3}}}}.
-\\
-\hline \multicolumn{4}{|l|}{
-Usage legend: R=Required, O=Optional, OR=Optional but Recommended, SD=See Definition
-}\\
-\hline\end{tabulary}
-
-\end{threeparttable}
-
-
-\begin{notice}{note}{Note:}
-All other standard properties (section
-{\hyperref[devicetree\string-basics:sect\string-standard\string-properties]{\crossref{\DUrole{std,std-ref}{2.3}}}}) are allowed but are optional.
-\end{notice}
-
-Older versions of devicetrees may be encountered that contain a
-deprecated form of the next-level-cache property called \code{l2-cache}.
-For compatibility, a client-program may wish to support \code{l2-cache}
-if a next-level-cache property is not present.
-The meaning and use of the two properties is identical.
-
-
-\subsection{Example}
-\label{devicenodes:sect-cpu-node-example}\label{devicenodes:example}
-Here is an example of a \code{/cpus} node with one child cpu node:
-
-\begin{Verbatim}[commandchars=\\\{\}]
-cpus \PYGZob{}
-    \PYGZsh{}address\PYGZhy{}cells = \PYGZlt{}1\PYGZgt{};
-    \PYGZsh{}size\PYGZhy{}cells = \PYGZlt{}0\PYGZgt{};
-    cpu@0 \PYGZob{}
-        device\PYGZus{}type = \PYGZdq{}cpu\PYGZdq{};
-        reg = \PYGZlt{}0\PYGZgt{};
-        d\PYGZhy{}cache\PYGZhy{}block\PYGZhy{}size = \PYGZlt{}32\PYGZgt{}; // L1 \PYGZhy{} 32 bytes
-        i\PYGZhy{}cache\PYGZhy{}block\PYGZhy{}size = \PYGZlt{}32\PYGZgt{}; // L1 \PYGZhy{} 32 bytes
-        d\PYGZhy{}cache\PYGZhy{}size = \PYGZlt{}0x8000\PYGZgt{}; // L1, 32K
-        i\PYGZhy{}cache\PYGZhy{}size = \PYGZlt{}0x8000\PYGZgt{}; // L1, 32K
-        timebase\PYGZhy{}frequency = \PYGZlt{}82500000\PYGZgt{}; // 82.5 MHz
-        clock\PYGZhy{}frequency = \PYGZlt{}825000000\PYGZgt{}; // 825 MHz
-    \PYGZcb{};
-\PYGZcb{};
-\end{Verbatim}
-
-
-\section{Multi-level and Shared Cache Nodes (\texttt{/cpus/cpu*/l?-cache})}
-\label{devicenodes:multi-level-and-shared-cache-nodes-cpus-cpu-l-cache}
-Processors and systems may implement additional levels of cache hierarchy.
-For example, second-level (L2) or third-level (L3) caches.
-These caches can potentially be tightly integrated to the CPU or
-possibly shared between multiple CPUs.
-
-A device node with a compatible value of \code{"cache"} describes these types
-of caches.
-
-The cache node shall define a phandle property, and all cpu nodes or
-cache nodes that are associated with or share the cache each shall
-contain a next-level-cache property that specifies the phandle to the
-cache node.
-
-A cache node may be represented under a CPU node or any other
-appropriate location in the devicetree.
-
-Multiple-level and shared caches are represented with the properties in
-Table 3-9. The L1 cache properties are described in Table 3-8.
-
-
-\begin{threeparttable}
-\capstart\caption{\texttt{/cpu/cpu*/l?-cache} Node Power ISA Multiple-level and Shared Cache Properties}\label{devicenodes:id11}
-\begin{tabulary}{\linewidth}{| l c l J |}
-\hline
-\textsf{\relax 
-Property Name
-} & \textsf{\relax 
-Usage
-} & \textsf{\relax 
-Value Type
-} & \textsf{\relax 
-Definition
-}\\
-\hline
-\code{compatible}
- & 
-R
- & 
-\code{\textless{}string\textgreater{}}
- & 
-A standard property. The value shall include
-the string \code{"cache"}.
-\\
-\hline
-\code{cache-level}
- & 
-R
- & 
-\code{\textless{}u32\textgreater{}}
- & 
-Specifies the level in the cache hierarchy.
-For example, a level 2 cache has a value of 2.
-\\
-\hline \multicolumn{4}{|l|}{
-Usage legend: R=Required, O=Optional, OR=Optional but Recommended, SD=See Definition
-}\\
-\hline\end{tabulary}
-
-\end{threeparttable}
-
-
-\begin{notice}{note}{Note:}
-All other standard properties (section
-{\hyperref[devicetree\string-basics:sect\string-standard\string-properties]{\crossref{\DUrole{std,std-ref}{2.3}}}}) are allowed but are optional.
-\end{notice}
-
-
-\subsection{Example}
-\label{devicenodes:id1}
-See the following example of a devicetree representation of two CPUs,
-each with their own on-chip L2 and a shared L3.
-
-\begin{Verbatim}[commandchars=\\\{\}]
-cpus \PYGZob{}
-    \PYGZsh{}address\PYGZhy{}cells = \PYGZlt{}1\PYGZgt{};
-    \PYGZsh{}size\PYGZhy{}cells = \PYGZlt{}0\PYGZgt{};
-    cpu@0 \PYGZob{}
-        device\PYGZus{}type = \PYGZdq{}cpu\PYGZdq{};
-        reg = \PYGZlt{}0\PYGZgt{};
-        cache\PYGZhy{}unified;
-        cache\PYGZhy{}size = \PYGZlt{}0x8000\PYGZgt{}; // L1, 32KB
-        cache\PYGZhy{}block\PYGZhy{}size = \PYGZlt{}32\PYGZgt{};
-        timebase\PYGZhy{}frequency = \PYGZlt{}82500000\PYGZgt{}; // 82.5 MHz
-        next\PYGZhy{}level\PYGZhy{}cache = \PYGZlt{}\PYGZam{}L2\PYGZus{}0\PYGZgt{}; // phandle to L2
-
-        L2\PYGZus{}0:l2\PYGZhy{}cache \PYGZob{}
-            compatible = \PYGZdq{}cache\PYGZdq{};
-            cache\PYGZhy{}unified;
-            cache\PYGZhy{}size = \PYGZlt{}0x40000\PYGZgt{}; // 256 KB
-
-            cache\PYGZhy{}sets = \PYGZlt{}1024\PYGZgt{};
-            cache\PYGZhy{}block\PYGZhy{}size = \PYGZlt{}32\PYGZgt{};
-            cache\PYGZhy{}level = \PYGZlt{}2\PYGZgt{};
-            next\PYGZhy{}level\PYGZhy{}cache = \PYGZlt{}\PYGZam{}L3\PYGZgt{}; // phandle to L3
-
-            L3:l3\PYGZhy{}cache \PYGZob{}
-                compatible = \PYGZdq{}cache\PYGZdq{};
-                cache\PYGZhy{}unified;
-                cache\PYGZhy{}size = \PYGZlt{}0x40000\PYGZgt{}; // 256 KB
-                cache\PYGZhy{}sets = \PYGZlt{}0x400\PYGZgt{}; // 1024
-                cache\PYGZhy{}block\PYGZhy{}size =
-                cache\PYGZhy{}level = \PYGZlt{}3\PYGZgt{};
-            \PYGZcb{};
-        \PYGZcb{};
-    \PYGZcb{};
-
-    cpu@1 \PYGZob{}
-        device\PYGZus{}type = \PYGZdq{}cpu\PYGZdq{};
-        reg = \PYGZlt{}0\PYGZgt{};
-        cache\PYGZhy{}unified;
-        cache\PYGZhy{}block\PYGZhy{}size = \PYGZlt{}32\PYGZgt{};
-        cache\PYGZhy{}size = \PYGZlt{}0x8000\PYGZgt{}; // L1, 32KB
-        timebase\PYGZhy{}frequency = \PYGZlt{}82500000\PYGZgt{}; // 82.5 MHz
-        clock\PYGZhy{}frequency = \PYGZlt{}825000000\PYGZgt{}; // 825 MHz
-        cache\PYGZhy{}level = \PYGZlt{}2\PYGZgt{};
-        next\PYGZhy{}level\PYGZhy{}cache = \PYGZlt{}\PYGZam{}L2\PYGZus{}1\PYGZgt{}; // phandle to L2
-        L2\PYGZus{}1:l2\PYGZhy{}cache \PYGZob{}
-            compatible = \PYGZdq{}cache\PYGZdq{};
-            cache\PYGZhy{}unified;
-            cache\PYGZhy{}size = \PYGZlt{}0x40000\PYGZgt{}; // 256 KB
-            cache\PYGZhy{}sets = \PYGZlt{}0x400\PYGZgt{}; // 1024
-            cache\PYGZhy{}line\PYGZhy{}size = \PYGZlt{}32\PYGZgt{} // 32 bytes
-            next\PYGZhy{}level\PYGZhy{}cache = \PYGZlt{}\PYGZam{}L3\PYGZgt{}; // phandle to L3
-        \PYGZcb{};
-    \PYGZcb{};
-\PYGZcb{};
-\end{Verbatim}
-
-
-\chapter{Device Bindings}
-\label{device-bindings::doc}\label{device-bindings:device-bindings}\label{device-bindings:chapter-device-bindings}
-This chapter contains requirements, known as bindings, for how specific
-types and classes of devices are represented in the devicetree. The
-compatible property of a device node describes the specific binding (or
-bindings) to which the node complies.
-
-Bindings may be defined as extensions of other each. For example a new
-bus type could be defined as an extension of the simple-bus binding. In
-this case, the compatible property would contain several strings
-identifying each binding—from the most specific to the most general (see
-section {\hyperref[devicetree\string-basics:sect\string-standard\string-properties\string-compatible]{\crossref{\DUrole{std,std-ref}{2.3.1}}}}, compatible).
-
-
-\section{Binding Guidelines}
-\label{device-bindings:binding-guidelines}
-
-\subsection{General Principles}
-\label{device-bindings:general-principles}
-When creating a new devicetree representation for a device, a binding
-should be created that fully describes the required properties and value
-of the device. This set of properties shall be sufficiently descriptive
-to provide device drivers with needed attributes of the device.
-
-Some recommended practices include:
-\begin{enumerate}
-\item {} 
-Define a compatible string using the conventions described in section
-{\hyperref[devicetree\string-basics:sect\string-standard\string-properties\string-compatible]{\crossref{\DUrole{std,std-ref}{2.3.1}}}}.
-
-\item {} 
-Use the standard properties (defined in sections
-{\hyperref[devicetree\string-basics:sect\string-standard\string-properties]{\crossref{\DUrole{std,std-ref}{2.3}}}} and {\hyperref[devicetree\string-basics:sect\string-interrupts]{\crossref{\DUrole{std,std-ref}{2.4}}}}) as
-applicable for the new device. This usage typically includes the
-\code{reg} and \code{interrupts} properties at a minimum.
-
-\item {} 
-Use the conventions specified in section {\hyperref[device\string-bindings:chapter\string-device\string-bindings]{\crossref{\DUrole{std,std-ref}{4}}}}
-(Device Bindings) if the new device fits into one the DTSpec defined
-device classes.
-
-\item {} 
-Use the miscellaneous property conventions specified in section
-{\hyperref[device\string-bindings:sect\string-misc\string-properties]{\crossref{\DUrole{std,std-ref}{4.1.2}}}}, if applicable.
-
-\item {} 
-If new properties are needed by the binding, the recommended format
-for property names is: \code{"\textless{}company\textgreater{},\textless{}property-name\textgreater{}"}, where \code{\textless{}company\textgreater{}}
-is an OUI or short unique string like a stock ticker that identifies
-the creator of the binding.
-
-Example: \code{"ibm,ppc-interrupt-server\#s"}
-
-\end{enumerate}
-
-
-\subsection{Miscellaneous Properties}
-\label{device-bindings:sect-misc-properties}\label{device-bindings:miscellaneous-properties}
-This section defines a list of helpful properties that might be
-applicable to many types of devices and device classes. They are defined
-here to facilitate standardization of names and usage.
-
-
-\subsubsection{\texttt{clock-frequency} Property}
-\label{device-bindings:clock-frequency-property}
-
-\begin{threeparttable}
-\capstart\caption{\texttt{clock-frequency} Property}\label{device-bindings:id3}
-\begin{tabulary}{\linewidth}{| l J |}
-\hline
-\textsf{\relax 
-Property
-} & \textsf{\relax 
-\code{clock-frequency}
-}\\
-\hline
-Value type
- & 
-\code{\textless{}prop-encoded-array\textgreater{}}
-\\
-\hline
-Description
- & 
-Specifies the frequency of a clock in Hz. The value is a
-\code{\textless{}prop-encoded-array\textgreater{}} in one of two forms:
-
-a 32-bit integer consisting of one \code{\textless{}u32\textgreater{}} specifying the
-frequency
-
-a 64-bit integer represented as a \code{\textless{}u64\textgreater{}} specifying the
-frequency
-\\
-\hline\end{tabulary}
-
-\end{threeparttable}
-
-
-
-\subsubsection{\texttt{reg-shift} Property}
-\label{device-bindings:reg-shift-property}
-
-\begin{threeparttable}
-\capstart\caption{\texttt{reg-shift} Property}\label{device-bindings:id4}
-\begin{tabulary}{\linewidth}{| l J |}
-\hline
-\textsf{\relax 
-Property
-} & \textsf{\relax 
-\code{reg-shift}
-}\\
-\hline
-Value type
- & 
-\code{\textless{}u32\textgreater{}}
-\\
-\hline
-Description
- & 
-The \code{reg-shift} property provides a mechanism to represent
-devices that are identical in most respects except for the
-number of bytes between registers. The \code{reg-shift} property
-specifies in bytes how far the discrete device registers are
-separated from each other. The individual register location
-is calculated by using following formula: ``registers address''
-\textless{}\textless{} reg-shift. If unspecified, the default value is 0.
-
-For example, in a system where 16540 UART registers are
-located at addresses 0x0, 0x4, 0x8, 0xC, 0x10, 0x14, 0x18,
-and 0x1C, a \code{reg-shift = \textless{}2\textgreater{}}
-property would be used to specify register locations.
-\\
-\hline\end{tabulary}
-
-\end{threeparttable}
-
-
-
-\subsubsection{\texttt{label} Property}
-\label{device-bindings:label-property}
-
-\begin{threeparttable}
-\capstart\caption{\texttt{label} Property}\label{device-bindings:id5}
-\begin{tabulary}{\linewidth}{| l J |}
-\hline
-\textsf{\relax 
-Property
-} & \textsf{\relax 
-\code{label}
-}\\
-\hline
-Value type
- & 
-\code{\textless{}string\textgreater{}}
-\\
-\hline
-Descriptio
- & 
-The label property defines a human readable string describing
-a device. The binding for a given device specifies the exact
-meaning of the property for that device.
-\\
-\hline\end{tabulary}
-
-\end{threeparttable}
-
-
-
-\section{Serial devices}
-\label{device-bindings:serial-devices}
-
-\subsection{Serial Class Binding}
-\label{device-bindings:serial-class-binding}
-The class of serial devices consists of various types of point to point
-serial line devices. Examples of serial line devices include the 8250
-UART, 16550 UART, HDLC device, and BISYNC device. In most cases hardware
-compatible with the RS-232 standard fit into the serial device class.
-
-I$^{\text{2}}$C and SPI (Serial Peripheral Interface) devices shall not
-be represented as serial port devices because they have their own
-specific representation.
-
-
-\subsubsection{\texttt{clock-frequency} Property}
-\label{device-bindings:id1}
-
-\begin{threeparttable}
-\capstart\caption{\texttt{clock-frequecy} Property}\label{device-bindings:id6}
-\begin{tabulary}{\linewidth}{| l J |}
-\hline
-\textsf{\relax 
-Property
-} & \textsf{\relax 
-\code{clock-frequency}
-}\\
-\hline
-Value type
- & 
-\code{\textless{}u32\textgreater{}}
-\\
-\hline
-Description
- & 
-Specifies the frequency in Hertz of the baud rate generator's
-input clock.
-\\
-\hline
-Example
- & 
-\code{clock-frequency = \textless{}100000000\textgreater{};}
-\\
-\hline\end{tabulary}
-
-\end{threeparttable}
-
-
-
-\subsubsection{\texttt{current-speed} Property}
-\label{device-bindings:current-speed-property}
-
-\begin{threeparttable}
-\capstart\caption{\texttt{current-speed} Property}\label{device-bindings:id7}
-\begin{tabulary}{\linewidth}{l J}
-\hline
-\textsf{\relax 
-Property
-} & \textsf{\relax 
-\code{current-speed}
-}\\
-\hline
-Value type
- & 
-\code{\textless{}u32\textgreater{}}
-\\
-\hline
-Description
- & 
-Specifies the current speed of a serial device in bits per
-second. A boot program should set this property if it has
-initialized the serial device.
-\\
-\hline
-Example
- & 
-115,200 Baud: \code{current-speed = \textless{}115200\textgreater{};}
-\\
-\hline\end{tabulary}
-
-\end{threeparttable}
-
-
-
-\subsection{National Semiconductor 16450/16550 Compatible UART Requirements}
-\label{device-bindings:national-semiconductor-16450-16550-compatible-uart-requirements}
-Serial devices compatible to the National Semiconductor 16450/16550 UART
-(Universal Asynchronous Receiver Transmitter) should be represented in
-the devicetree using following properties.
-
-
-\begin{threeparttable}
-\capstart\caption{ns16550 UART Properties}\label{device-bindings:id8}
-\begin{tabulary}{\linewidth}{l c l J}
-\hline
-\textsf{\relax 
-Property Name
-} & \textsf{\relax 
-Usage
-} & \textsf{\relax 
-Value Type
-} & \textsf{\relax 
-Definition
-}\\
-\hline
-\code{compatible}
- & 
-R
- & 
-\textless{}string list\textgreater{}
- & 
-Value shall include ``ns16550''.
-\\
-\hline
-\code{clock-frequency}
- & 
-R
- & 
-\code{\textless{}u32\textgreater{}}
- & 
-Specifies the frequency (in Hz) of the baud
-rate generator’s input clock
-\\
-\hline
-\code{current-speed}
- & 
-OR
- & 
-\code{\textless{}u32\textgreater{}}
- & 
-Specifies current serial device speed in bits
-per second
-\\
-\hline
-\code{reg}
- & 
-R
- & 
-\code{\textless{}prop encoded
-array\textgreater{}}
- & 
-Specifies the physical address of the
-registers device within the address space of
-the parent bus
-\\
-\hline
-\code{interrupts}
- & 
-OR
- & 
-\code{\textless{}prop encoded
-array\textgreater{}}
- & 
-Specifies the interrupts generated by this
-device. The value of the interrupts property
-consists of one or more interrupt specifiers.
-The format of an interrupt specifier is
-defined by the binding document describing the
-node’s interrupt parent.
-\\
-\hline
-\code{reg-shift}
- & 
-O
- & 
-\code{\textless{}u32\textgreater{}}
- & 
-Specifies in bytes how far the discrete device
-registers are separated from each other. The
-individual register location is calculated by
-using following formula: \code{"registers address"
-\textless{}\textless{} reg-shift}. If unspecified, the default
-value is 0.
-\\
-\hline
-\code{virtual-reg}
- & 
-SD
- & 
-\code{\textless{}u32\textgreater{}}
-or
-\code{\textless{}u64\textgreater{}}
- & 
-See section {\hyperref[devicetree\string-basics:sect\string-standard\string-properties\string-virtual\string-reg]{\crossref{\DUrole{std,std-ref}{2.3.7}}}}.
-Specifies an effective address that maps to the
-first physical address specified in the \code{reg}
-property. This property is required if this
-device node is the system’s console.
-\\
-\hline \multicolumn{4}{|l|}{
-Usage legend: R=Required, O=Optional, OR=Optional but Recommended, SD=See Definition
-}\\
-\hline\end{tabulary}
-
-\end{threeparttable}
-
-
-\begin{notice}{note}{Note:}
-All other standard properties (section
-{\hyperref[devicetree\string-basics:sect\string-standard\string-properties]{\crossref{\DUrole{std,std-ref}{2.3}}}}) are allowed but are optional.
-\end{notice}
-
-
-\section{Network devices}
-\label{device-bindings:network-devices}
-Network devices are packet oriented communication devices. Devices in
-this class are assumed to implement the data link layer (layer 2) of the
-seven-layer OSI model and use Media Access Control (MAC) addresses.
-Examples of network devices include Ethernet, FDDI, 802.11, and
-Token-Ring.
-
-
-\subsection{Network Class Binding}
-\label{device-bindings:network-class-binding}
-
-\subsubsection{\texttt{address-bits} Property}
-\label{device-bindings:address-bits-property}
-
-\begin{threeparttable}
-\capstart\caption{\texttt{address-bits} Property}\label{device-bindings:id9}
-\begin{tabulary}{\linewidth}{| l J |}
-\hline
-\textsf{\relax 
-Property
-} & \textsf{\relax 
-\code{address-bits}
-}\\
-\hline
-Value type
- & 
-\code{\textless{}u32\textgreater{}}
-\\
-\hline
-Description
- & 
-Specifies number of address bits required to address the
-device described by this node. This property specifies number
-of bits in MAC address. If unspecified, the default value is 48.
-\\
-\hline
-Example
- & 
-\code{address-bits = \textless{}48\textgreater{};}
-\\
-\hline\end{tabulary}
-
-\end{threeparttable}
-
-
-
-\subsubsection{\texttt{local-mac-address} Property}
-\label{device-bindings:local-mac-address-property}
-
-\begin{threeparttable}
-\capstart\caption{\texttt{local-mac-address} Property}\label{device-bindings:id10}
-\begin{tabulary}{\linewidth}{| l J |}
-\hline
-\textsf{\relax 
-Property
-} & \textsf{\relax 
-\code{local-mac-address}
-}\\
-\hline
-Value type
- & 
-\code{\textless{}prop-encoded-array\textgreater{}} encoded as an array of hex numbers
-\\
-\hline
-Description
- & 
-Specifies MAC address that was assigned to the network device
-described by the node containing this property.
-\\
-\hline
-Example
- & 
-\code{local-mac-address = {[} 0x00 0x00 0x12 0x34 0x56 0x78{]};}
-\\
-\hline\end{tabulary}
-
-\end{threeparttable}
-
-
-
-\subsubsection{\texttt{mac-address} Property}
-\label{device-bindings:mac-address-property}
-
-\begin{threeparttable}
-\capstart\caption{\texttt{mac-address} Property}\label{device-bindings:id11}
-\begin{tabulary}{\linewidth}{| l J |}
-\hline
-\textsf{\relax 
-Property
-} & \textsf{\relax 
-\code{mac-address}
-}\\
-\hline
-Value type
- & 
-\code{\textless{}prop-encoded-array\textgreater{}} encoded as an array of hex numbers
-\\
-\hline
-Description
- & 
-Specifies the MAC address that was last used by the boot
-program. This property should be used in cases where the MAC
-address assigned to the device by the boot program is
-different from the local-mac-address property. This property
-shall be used only if the value differs from
-local-mac-address property value.
-\\
-\hline
-Example
- & 
-\code{mac-address = {[} 0x01 0x02 0x03 0x04 0x05 0x06 {]};}
-\\
-\hline\end{tabulary}
-
-\end{threeparttable}
-
-
-
-\subsubsection{\texttt{max-frame-size} Property}
-\label{device-bindings:max-frame-size-property}
-
-\begin{threeparttable}
-\capstart\caption{\texttt{max-frame-size} Property}\label{device-bindings:id12}
-\begin{tabulary}{\linewidth}{| l J |}
-\hline
-\textsf{\relax 
-Property
-} & \textsf{\relax 
-\code{max-frame-size}
-}\\
-\hline
-Value type
- & 
-\code{\textless{}u32\textgreater{}}
-\\
-\hline
-Descriptio
- & 
-Specifies maximum packet length in bytes that the physical
-interface can send and receive.
-\\
-\hline
-Example
- & 
-\code{max-frame-size = \textless{}1518\textgreater{};}
-\\
-\hline\end{tabulary}
-
-\end{threeparttable}
-
-
-
-\subsection{Ethernet specific considerations}
-\label{device-bindings:ethernet-specific-considerations}
-Network devices based on the IEEE 802.3 collections of LAN standards
-(collectively referred to as Ethernet) may be represented in the devicetree
-using following properties, in addition to properties specified of
-the network device class.
-
-The properties listed in this section augment the properties listed in
-the network device class.
-
-
-\subsubsection{\texttt{max-speed} Property}
-\label{device-bindings:max-speed-property}
-
-\begin{threeparttable}
-\capstart\caption{\texttt{max-speed} Property}\label{device-bindings:id13}
-\begin{tabulary}{\linewidth}{| l J |}
-\hline
-\textsf{\relax 
-Property
-} & \textsf{\relax 
-\code{max-speed}
-}\\
-\hline
-Value type
- & 
-\code{\textless{}u32\textgreater{}}
-\\
-\hline
-Description
- & 
-Specifies maximum speed (specified in megabits per second)
-supported the device.
-\\
-\hline
-Example
- & 
-\code{max-speed = \textless{}1000\textgreater{};}
-\\
-\hline\end{tabulary}
-
-\end{threeparttable}
-
-
-
-\subsubsection{\texttt{phy-connection-type} Property}
-\label{device-bindings:phy-connection-type-property}
-
-\begin{threeparttable}
-\capstart\caption{\texttt{phy-connection-type} Property}\label{device-bindings:id14}
-\begin{tabulary}{\linewidth}{| l J |}
-\hline
-\textsf{\relax 
-Property
-} & \textsf{\relax 
-\code{phy-connection-type}
-}\\
-\hline
-Value type
- & 
-\code{\textless{}string\textgreater{}}
-\\
-\hline
-Description
- & 
-Specifies interface type between the Ethernet device and a
-physical layer (PHY) device. The value of this property is
-specific to the implementation.
-
-Recommended values are shown in the following table.
-\\
-\hline
-Example
- & 
-\code{phy-connection-type = "mii";}
-\\
-\hline\end{tabulary}
-
-\end{threeparttable}
-
-
-
-\begin{threeparttable}
-\capstart\caption{Defined values for the \texttt{phy-connection-type} Property}\label{device-bindings:id15}
-\begin{tabulary}{\linewidth}{| l J |}
-\hline
-\textsf{\relax 
-Connection type
-} & \textsf{\relax 
-Value
-}\\
-\hline
-Media Independent Interface
- & 
-\code{mii}
-\\
-\hline
-Reduced Media Independent Interface
- & 
-\code{rmii}
-\\
-\hline
-Gigabit Media Independent Interface
- & 
-\code{gmii}
-\\
-\hline
-Reduced Gigabit Media Independent
- & 
-\code{rgmii}
-\\
-\hline
-rgmii with internal delay
- & 
-\code{rgmii-id}
-\\
-\hline
-rgmii with internal delay on TX only
- & 
-\code{rgmii-txid}
-\\
-\hline
-rgmii with internal delay on RX only
- & 
-\code{rgmii-rxid}
-\\
-\hline
-Ten Bit Interface
- & 
-\code{tbi}
-\\
-\hline
-Reduced Ten Bit Interface
- & 
-\code{rtbi}
-\\
-\hline
-Serial Media Independent Interface
- & 
-\code{smii}
-\\
-\hline
-Serial Gigabit Media Independent Interface
- & 
-\code{sgmii}
-\\
-\hline
-Reverse Media Independent Interface
- & 
-\code{rev-mii}
-\\
-\hline
-10 Gigabits Media Independent Interface
- & 
-\code{xgmii}
-\\
-\hline
-Multimedia over Coaxial
- & 
-\code{moca}
-\\
-\hline
-Quad Serial Gigabit Media Independent Interface
- & 
-\code{qsgmii}
-\\
-\hline\end{tabulary}
-
-\end{threeparttable}
-
-
-
-\subsubsection{\texttt{phy-handle} Property}
-\label{device-bindings:phy-handle-property}
-
-\begin{threeparttable}
-\capstart\caption{\texttt{phy-handle} Property}\label{device-bindings:id16}
-\begin{tabulary}{\linewidth}{| l J |}
-\hline
-\textsf{\relax 
-Property
-} & \textsf{\relax 
-\code{phy-handle}
-}\\
-\hline
-Value type
- & 
-\code{\textless{}phandle\textgreater{}}
-\\
-\hline
-Description
- & 
-Specifies a reference to a node representing a physical layer
-(PHY) device connected to this Ethernet device. This property
-is required in case where the Ethernet device is connected a
-physical layer device.
-\\
-\hline
-Example
- & 
-\code{phy-handle = \textless{}\&PHY0\textgreater{};}
-\\
-\hline\end{tabulary}
-
-\end{threeparttable}
-
-
-
-\section{Power ISA Open PIC Interrupt Controllers}
-\label{device-bindings:power-isa-open-pic-interrupt-controllers}
-This section specifies the requirements for representing Open PIC
-compatible interrupt controllers. An Open PIC interrupt controller
-implements the Open PIC architecture (developed jointly by AMD and
-Cyrix) and specified in The Open Programmable Interrupt Controller (PIC)
-Register Interface Specification Revision 1.2 \phantomsection\label{device-bindings:id2}{\hyperref[references:b18]{\crossref{{[}b18{]}}}}.
-
-Interrupt specifiers in an Open PIC interrupt domain are encoded with
-two cells. The first cell defines the interrupt number. The second cell
-defines the sense and level information.
-
-Sense and level information shall be encoded as follows in interrupt
-specifiers:
-\begin{quote}
-
-\begin{Verbatim}[commandchars=\\\{\}]
-0 = low to high edge sensitive type enabled
-1 = active low level sensitive type enabled
-2 = active high level sensitive type enabled
-3 = high to low edge sensitive type enabled
-\end{Verbatim}
-\end{quote}
-
-
-\begin{threeparttable}
-\capstart\caption{Open-PIC properties}\label{device-bindings:id17}
-\begin{tabulary}{\linewidth}{| l c l J |}
-\hline
-\textsf{\relax 
-Property Name
-} & \textsf{\relax 
-Usage
-} & \textsf{\relax 
-Value Type
-} & \textsf{\relax 
-Definition
-}\\
-\hline
-\code{compatible}
- & 
-R
- & 
-\code{\textless{}string\textgreater{}}
- & 
-Value shall include \code{"open-pic"}
-\\
-\hline
-\code{reg}
- & 
-R
- & 
-\code{\textless{}prop encoded
-array\textgreater{}}
- & 
-Specifies the physical address of the
-registers device within the address space of
-the parent bus
-\\
-\hline
-\code{interrupt-controller}
- & 
-R
- & 
-\code{\textless{}empty\textgreater{}}
- & 
-Specifies that this node is an interrupt controller
-\\
-\hline
-\code{\#interrupt-cells}
- & 
-R
- & 
-\code{\textless{}u32\textgreater{}}
- & 
-Shall be 2.
-\\
-\hline
-\code{\#address-cells}
- & 
-R
- & 
-\code{\textless{}u32\textgreater{}}
- & 
-Shall be 0.
-\\
-\hline \multicolumn{4}{|l|}{
-Usage legend: R=Required, O=Optional, OR=Optional but Recommended, SD=See Definition
-}\\
-\hline\end{tabulary}
-
-\end{threeparttable}
-
-
-\begin{notice}{note}{Note:}
-All other standard properties (section
-{\hyperref[devicetree\string-basics:sect\string-standard\string-properties]{\crossref{\DUrole{std,std-ref}{2.3}}}}) are allowed but are optional.
-\end{notice}
-
-
-\section{\texttt{simple-bus} Compatible Value}
-\label{device-bindings:simple-bus-compatible-value}\label{device-bindings:sect-bindings-simple-bus}
-System-on-a-chip processors may have an internal I/O bus that cannot be
-probed for devices. The devices on the bus can be accessed directly
-without additional configuration required. This type of bus is
-represented as a node with a compatible value of ``simple-bus''.
-
-
-\begin{threeparttable}
-\capstart\caption{\texttt{simple-bus} Compatible Node Properties}\label{device-bindings:id18}
-\begin{tabulary}{\linewidth}{| l c l J |}
-\hline
-\textsf{\relax 
-Property Name
-} & \textsf{\relax 
-Usage
-} & \textsf{\relax 
-Value Type
-} & \textsf{\relax 
-Definition
-}\\
-\hline
-\code{compatible}
- & 
-R
- & 
-\code{\textless{}string\textgreater{}}
- & 
-Value shall include ``simple-bus''.
-\\
-\hline
-\code{ranges}
- & 
-R
- & 
-\code{\textless{}prop encoded
-array\textgreater{}}
- & 
-This property represents the mapping between
-parent address to child address spaces (see
-section {\hyperref[devicetree\string-basics:sect\string-standard\string-properties\string-ranges]{\crossref{\DUrole{std,std-ref}{2.3.8}}}},
-ranges).
-\\
-\hline \multicolumn{4}{|l|}{
-Usage legend: R=Required, O=Optional, OR=Optional but Recommended, SD=See Definition
-}\\
-\hline\end{tabulary}
-
-\end{threeparttable}
-
-
-
-\chapter{Flat Devicetree Physical Structure}
-\label{flattened-format:flat-devicetree-physical-structure}\label{flattened-format::doc}\label{flattened-format:chapter-fdt-structure}
-With the exception of platforms using IEEE1275 Open Firmware {[}IEEE1275{]}, the
-devicetree data is contained within a single single, linear, pointerless data
-structure known as the flattened devicetree or devicetree blob.
-
-This data structure consists of a small header
-(see section {\hyperref[flattened\string-format:sect\string-fdt\string-header]{\crossref{\DUrole{std,std-ref}{5.2}}}}),
-followed by three variable sized sections:
-the memory reservation block (see section {\hyperref[flattened\string-format:sect\string-fdt\string-memory\string-reservation\string-block]{\crossref{\DUrole{std,std-ref}{5.3}}}}),
-the structure block (see secton {\hyperref[flattened\string-format:sect\string-fdt\string-structure\string-block]{\crossref{\DUrole{std,std-ref}{5.4}}}}),
-and the strings block (see section {\hyperref[flattened\string-format:sect\string-fdt\string-strings\string-block]{\crossref{\DUrole{std,std-ref}{5.5}}}}).
-These should be present in the flattened devicetree in that order.
-Thus, the devicetree structure as a whole, when loaded into memory at address,
-will resemble the diagram in \hyperref[flattened-format:figure-device-tree-structure]{Fig. \ref{flattened-format:figure-device-tree-structure}}
-(lower addresses are at the top of the diagram).
-\begin{figure}[htbp]
-\centering
-\capstart
-
-\includegraphics{graphviz-23a197b43ca822bb92fb1a341bdd04b0845caa29.pdf}
-\caption{Devicetree .dtb Structure}\label{flattened-format:figure-device-tree-structure}\label{flattened-format:id1}\end{figure}
-
-The (free space) sections may not be present, though in some cases they
-might be required to satisfy the alignment constraints of the individual
-blocks (see section {\hyperref[flattened\string-format:sect\string-fdt\string-alignment]{\crossref{\DUrole{std,std-ref}{5.6}}}}).
-
-
-\section{Versioning}
-\label{flattened-format:sect-fdt-versioning}\label{flattened-format:versioning}
-Several versions of the flattened devicetree structure have been defined since
-the original definition of the format. Fields in the header give the version,
-so that the client program can determine if the devicetree is encoded in a
-compatible format.
-
-This document describes only version 17 of the format. DTSpec compliant boot
-programs shall provide a devicetree of version 17 or later, and should provide
-a devicetree of a version that is backwards compatible with version 16.
-DTSpec compliant client programs shall accept devicetrees of any version
-backwards compatible with version 17 and may accept other versions as well.
-
-\begin{notice}{note}{Note:}
-The version is with respect to the binary structure of the device
-tree, not its content.
-\end{notice}
-
-
-\section{Header}
-\label{flattened-format:sect-fdt-header}\label{flattened-format:header}
-The layout of the header for the devicetree is defined by the following
-C structure. All the header fields are 32-bit integers, stored in
-big-endian format.
-
-\textbf{Flattened Devicetree Header Fields}
-
-\begin{Verbatim}[commandchars=\\\{\}]
-struct fdt\PYGZus{}header \PYGZob{}
-    uint32\PYGZus{}t magic;
-    uint32\PYGZus{}t totalsize;
-    uint32\PYGZus{}t off\PYGZus{}dt\PYGZus{}struct;
-    uint32\PYGZus{}t off\PYGZus{}dt\PYGZus{}strings;
-    uint32\PYGZus{}t off\PYGZus{}mem\PYGZus{}rsvmap;
-    uint32\PYGZus{}t version;
-    uint32\PYGZus{}t last\PYGZus{}comp\PYGZus{}version;
-    uint32\PYGZus{}t boot\PYGZus{}cpuid\PYGZus{}phys;
-    uint32\PYGZus{}t size\PYGZus{}dt\PYGZus{}strings;
-    uint32\PYGZus{}t size\PYGZus{}dt\PYGZus{}struct;
-\PYGZcb{};
-\end{Verbatim}
-\begin{description}
-\item[{\code{magic}}] \leavevmode
-This field shall contain the value 0xd00dfeed (big-endian).
-
-\item[{\code{totalsize}}] \leavevmode
-This field shall contain the total size of the devicetree data
-structure. This size shall encompass all sections of the structure:
-the header, the memory reservation block, structure block and
-strings block, as well as any free space gaps between the blocks or
-after the final block.
-
-\item[{\code{off\_dt\_struct}}] \leavevmode
-This field shall contain the offset in bytes of the structure block
-(see section {\hyperref[flattened\string-format:sect\string-fdt\string-structure\string-block]{\crossref{\DUrole{std,std-ref}{5.4}}}}) from the beginning of the header.
-
-\item[{\code{off\_dt\_strings}}] \leavevmode
-This field shall contain the offset in bytes of the strings block
-(see section {\hyperref[flattened\string-format:sect\string-fdt\string-strings\string-block]{\crossref{\DUrole{std,std-ref}{5.5}}}}) from the beginning of the header.
-
-\item[{\code{off\_mem\_rsvmap}}] \leavevmode
-This field shall contain the offset in bytes of the memory
-reservation block (see section {\hyperref[flattened\string-format:sect\string-fdt\string-memory\string-reservation\string-block]{\crossref{\DUrole{std,std-ref}{5.3}}}})
-from the beginning of the header.
-
-\item[{\code{version}}] \leavevmode
-This field shall contain the version of the devicetree data
-structure. The version is 17 if using the structure as defined in
-this document. An DTSpec boot program may provide the devicetree of
-a later version, in which case this field shall contain the version
-number defined in whichever later document gives the details of that
-version.
-
-\item[{\code{last\_comp\_version}}] \leavevmode
-This field shall contain the lowest version of the devicetree data
-structure with which the version used is backwards compatible. So,
-for the structure as defined in this document (version 17), this
-field shall contain 16 because version 17 is backwards compatible
-with version 16, but not earlier versions. As per section
-{\hyperref[flattened\string-format:sect\string-fdt\string-versioning]{\crossref{\DUrole{std,std-ref}{5.1}}}}, a DTSpec boot program should provide a
-devicetree in a format which is backwards compatible with version
-16, and thus this field shall always contain 16.
-
-\item[{\code{boot\_cpuid\_phys}}] \leavevmode
-This field shall contain the physical ID of the system’s boot CPU.
-It shall be identical to the physical ID given in the \code{reg} property
-of that CPU node within the devicetree.
-
-\item[{\code{size\_dt\_strings}}] \leavevmode
-This field shall contain the length in bytes of the strings block
-section of the devicetree blob.
-
-\item[{\code{size\_dt\_struct}}] \leavevmode
-This field shall contain the length in bytes of the structure block
-section of the devicetree blob.
-
-\end{description}
-
-
-\section{Memory Reservation Block}
-\label{flattened-format:memory-reservation-block}\label{flattened-format:sect-fdt-memory-reservation-block}
-
-\subsection{Purpose}
-\label{flattened-format:purpose}
-The \emph{memory reservation block} provides the client program with a list
-of areas in physical memory which are \emph{reserved}; that is, which shall
-not be used for general memory allocations. It is used to protect vital
-data structures from being overwritten by the client program. For
-example, on some systems with an IOMMU, the TCE (translation control
-entry) tables initialized by a DTSpec boot program would need to be
-protected in this manner. Likewise, any boot program code or data used
-during the client program’s runtime would need to be reserved (e.g.,
-RTAS on Open Firmware platforms). DTSpec does not require the boot
-program to provide any such runtime components, but it does not prohibit
-implementations from doing so as an extension.
-
-More specifically, a client program shall not access memory in a
-reserved region unless other information provided by the boot program
-explicitly indicates that it shall do so. The client program may then
-access the indicated section of the reserved memory in the indicated
-manner. Methods by which the boot program can indicate to the client
-program specific uses for reserved memory may appear in this document,
-in optional extensions to it, or in platform-specific documentation.
-
-The reserved regions supplied by a boot program may, but are not
-required to, encompass the devicetree blob itself. The client program
-shall ensure that it does not overwrite this data structure before it is
-used, whether or not it is in the reserved areas.
-
-Any memory that is declared in a memory node and is accessed by the boot
-program or caused to be accessed by the boot program after client entry
-must be reserved. Examples of this type of access include (e.g.,
-speculative memory reads through a non-guarded virtual page).
-
-This requirement is necessary because any memory that is not reserved
-may be accessed by the client program with arbitrary storage attributes.
-
-Any accesses to reserved memory by or caused by the boot program must be
-done as not Caching Inhibited and Memory Coherence Required (i.e., WIMG
-= 0bx01x), and additionally for Book III-S implementations as not Write
-Through Required (i.e., WIMG = 0b001x). Further, if the VLE storage
-attribute is supported, all accesses to reserved memory must be done as
-VLE=0.
-
-This requirement is necessary because the client program is permitted to
-map memory with storage attributes specified as not Write Through
-Required, not Caching Inhibited, and Memory Coherence Required (i.e.,
-WIMG = 0b001x), and VLE=0 where supported. The client program may use
-large virtual pages that contain reserved memory. However, the client
-program may not modify reserved memory, so the boot program may perform
-accesses to reserved memory as Write Through Required where conflicting
-values for this storage attribute are architecturally permissible.
-
-
-\subsection{Format}
-\label{flattened-format:format}
-The memory reservation block consists of a list of pairs of 64-bit
-big-endian integers, each pair being represented by the following C
-structure.
-
-\begin{Verbatim}[commandchars=\\\{\}]
-struct fdt\PYGZus{}reserve\PYGZus{}entry \PYGZob{}
-    uint64\PYGZus{}t address;
-    uint64\PYGZus{}t size;
-\PYGZcb{};
-\end{Verbatim}
-
-Each pair gives the physical address and size of a reserved memory
-region. These given regions shall not overlap each other. The list of
-reserved blocks shall be terminated with an entry where both address and
-size are equal to 0. Note that the address and size values are always
-64-bit. On 32-bit CPUs the upper 32-bits of the value are ignored.
-
-Each uint64\_t in the memory reservation block, and thus the memory
-reservation block as a whole, shall be located at an 8-byte aligned
-offset from the beginning of the devicetree blob (see section
-{\hyperref[flattened\string-format:sect\string-fdt\string-alignment]{\crossref{\DUrole{std,std-ref}{5.6}}}}).
-
-
-\section{Structure Block}
-\label{flattened-format:sect-fdt-structure-block}\label{flattened-format:structure-block}
-The structure block describes the structure and contents of the devicetree
-itself. It is composed of a sequence of tokens with data, as
-described in 0. These are organized into a linear tree structure, as
-described in 0.
-
-Each token in the structure block, and thus the structure block itself,
-shall be located at a 4-byte aligned offset from the beginning of the
-devicetree blob (see {\hyperref[flattened\string-format:sect\string-fdt\string-alignment]{\crossref{\DUrole{std,std-ref}{5.6}}}}).
-
-
-\subsection{Lexical structure}
-\label{flattened-format:lexical-structure}\label{flattened-format:sect-fdt-lexical-structure}
-The structure block is composed of a sequence of pieces, each beginning
-with a token, that is, a bigendian 32-bit integer. Some tokens are
-followed by extra data, the format of which is determined by the token
-value. All tokens shall be aligned on a 32-bit boundary, which may
-require padding bytes (with a value of 0x0) to be inserted after the
-previous token’s data.
-
-The five token types are as follows:
-\begin{description}
-\item[{\code{FDT\_BEGIN\_NODE} (0x00000001)}] \leavevmode
-The FDT\_BEGIN\_NODE token marks the beginning of a node’s
-representation. It shall be followed by the node’s unit name as
-extra data. The name is stored as a null-terminated string, and
-shall include the unit address (see section {\hyperref[devicetree\string-basics:sect\string-node\string-names]{\crossref{\DUrole{std,std-ref}{2.2.1}}}}), if any.
-The node name is followed by zeroed padding bytes, if necessary for
-alignment, and then the next token, which may be any token except
-FDT\_END.
-
-\item[{\code{FDT\_END\_NODE} (0x00000002)}] \leavevmode
-The FDT\_END\_NODE token marks the end of a node’s representation.
-This token has no extra data; so it is followed immediately by the
-next token, which may be any token except FDT\_PROP.
-
-\item[{\code{FDT\_PROP} (0x00000003)}] \leavevmode
-The FDT\_PROP token marks the beginning of the representation of one
-property in the devicetree. It shall be followed by extra data
-describing the property. This data consists first of the property’s
-length and name represented as the following C structure:
-
-\begin{Verbatim}[commandchars=\\\{\}]
-struct \PYGZob{}
-    uint32\PYGZus{}t len;
-    uint32\PYGZus{}t nameoff;
-\PYGZcb{}
-\end{Verbatim}
-
-Both the fields in this structure are 32-bit big-endian integers.
-\begin{itemize}
-\item {} 
-len gives the length of the property’s value in bytes (which may be
-zero, indicating an empty property, see section {\hyperref[devicetree\string-basics:sect\string-property\string-values]{\crossref{\DUrole{std,std-ref}{2.2.4.2}}}}).
-
-\item {} 
-nameoff gives an offset into the strings block
-(see section {\hyperref[flattened\string-format:sect\string-fdt\string-strings\string-block]{\crossref{\DUrole{std,std-ref}{5.5}}}})
-at which the property’s name is stored as a null-terminated string.
-
-\end{itemize}
-
-After this structure, the property’s value is given as a byte string of
-length len. This value is followed by zeroed padding bytes (if
-necessary) to align to the next 32-bit boundary and then the next token,
-which may be any token except FDT\_END.
-
-\item[{\code{FDT\_NOP} (0x00000004)}] \leavevmode
-The FDT\_NOP token will be ignored by any program parsing the device
-tree. This token has no extra data; so it is followed immediately by
-the next token, which can be any valid token. A property or node
-definition in the tree can be overwritten with FDT\_NOP tokens to
-remove it from the tree without needing to move other sections of
-the tree’s representation in the devicetree blob.
-
-\item[{\code{FDT\_END} (0x00000009)}] \leavevmode
-The FDT\_END token marks the end of the structure block. There shall
-be only one FDT\_END token, and it shall be the last token in the
-structure block. It has no extra data; so the byte immediately after
-the FDT\_END token has offset from the beginning of the structure
-block equal to the value of the size\_dt\_struct field in the device
-tree blob header.
-
-\end{description}
-
-
-\subsection{Tree structure}
-\label{flattened-format:tree-structure}
-The devicetree structure is represented as a linear tree: the
-representation of each node begins with an FDT\_BEGIN\_NODE token and
-ends with an FDT\_END\_NODE token. The node’s properties and subnodes
-(if any) are represented before the FDT\_END\_NODE, so that the
-FDT\_BEGIN\_NODE and FDT\_END\_NODE tokens for those subnodes are nested
-within those of the parent.
-
-The structure block as a whole consists of the root node’s
-representation (which contains the representations for all other nodes),
-followed by an FDT\_END token to mark the end of the structure block as
-a whole.
-
-More precisely, each node’s representation consists of the following
-components:
-\begin{itemize}
-\item {} 
-(optionally) any number of FDT\_NOP tokens
-
-\item {} 
-FDT\_BEGIN\_NODE token
-\begin{itemize}
-\item {} 
-The node’s name as a null-terminated string
-
-\item {} 
-{[}zeroed padding bytes to align to a 4-byte boundary{]}
-
-\end{itemize}
-
-\item {} 
-For each property of the node:
-\begin{itemize}
-\item {} 
-(optionally) any number of FDT\_NOP tokens
-
-\item {} 
-FDT\_PROP token
-\begin{itemize}
-\item {} 
-property information as given in section {\hyperref[flattened\string-format:sect\string-fdt\string-lexical\string-structure]{\crossref{\DUrole{std,std-ref}{5.4.1}}}}
-
-\item {} 
-{[}zeroed padding bytes to align to a 4-byte boundary{]}
-
-\end{itemize}
-
-\end{itemize}
-
-\item {} 
-Representations of all child nodes in this format
-
-\item {} 
-(optionally) any number of FDT\_NOP tokens
-
-\item {} 
-FDT\_END\_NODE token
-
-\end{itemize}
-
-Note that this process requires that all property definitions for a
-particular node precede any subnode definitions for that node. Although
-the structure would not be ambiguous if properties and subnodes were
-intermingled, the code needed to process a flat tree is simplified by
-this requirement.
-
-
-\section{Strings Block}
-\label{flattened-format:strings-block}\label{flattened-format:sect-fdt-strings-block}
-The strings block contains strings representing all the property names
-used in the tree. These nullterminated strings are simply concatenated
-together in this section, and referred to from the structure block by an
-offset into the strings block.
-
-The strings block has no alignment constraints and may appear at any
-offset from the beginning of the devicetree blob.
-
-
-\section{Alignment}
-\label{flattened-format:alignment}\label{flattened-format:sect-fdt-alignment}
-For the data in the memory reservation and structure blocks to be used
-without unaligned memory accesses, they shall lie at suitably aligned
-memory addresses. Specifically, the memory reservation block shall be
-aligned to an 8-byte boundary and the structure block to a 4-byte
-boundary.
-
-Furthermore, the devicetree blob as a whole can be relocated without
-destroying the alignment of the subblocks.
-
-As described in the previous sections, the structure and strings blocks
-shall have aligned offsets from the beginning of the devicetree blob.
-To ensure the in-memory alignment of the blocks, it is sufficient to
-ensure that the devicetree as a whole is loaded at an address aligned
-to the largest alignment of any of the subblocks, that is, to an 8-byte
-boundary. A DTSpec compliant boot
-program shall load the devicetree blob at such an aligned address
-before passing it to the client program. If an DTSpec client program
-relocates the devicetree blob in memory, it should only do so to
-another 8-byte aligned address.
-
-
-\chapter{Devicetree Source Format (version 1)}
-\label{source-language:chapter-devicetree-source-format}\label{source-language:devicetree-source-format-version-1}\label{source-language::doc}
-The Devicetree Source (DTS) format is a textual representation of a
-devicetree in a form that can be processed by dtc into a binary
-devicetree in the form expected by the kernel. The following description is
-not a formal syntax definition of DTS, but describes the basic
-constructs used to represent devicetrees.
-
-
-\section{Node and property definitions}
-\label{source-language:node-and-property-definitions}
-Devicetree nodes are defined with a node name and unit address with
-braces marking the start and end of the node definition. They may be
-preceded by a label.
-
-\begin{Verbatim}[commandchars=\\\{\}]
-[label:] node\PYGZhy{}name[@unit\PYGZhy{}address] \PYGZob{}
-    [properties definitions]
-    [child nodes]
-\PYGZcb{}
-\end{Verbatim}
-
-Nodes may contain property definitions and/or child node definitions. If
-both are present, properties shall come before child nodes.
-
-Property definitions are name value pairs in the form:
-
-\begin{Verbatim}[commandchars=\\\{\}]
-[label:] property\PYGZhy{}name = value;
-\end{Verbatim}
-
-except for properties with empty (zero length) value which have the
-form:
-
-\begin{Verbatim}[commandchars=\\\{\}]
-[label:] property\PYGZhy{}name;
-\end{Verbatim}
-
-Property values may be defined as an array of 32-bit integer cells, as
-null-terminated strings, as bytestrings or a combination of these.
-\begin{itemize}
-\item {} 
-Arrays of cells are represented by angle brackets surrounding a space
-separated list of C-style integers. Example:
-
-\end{itemize}
-
-\begin{Verbatim}[commandchars=\\\{\}]
-interrupts = \PYGZlt{}17 0xc\PYGZgt{};
-\end{Verbatim}
-\begin{itemize}
-\item {} 
-A 64-bit value is represented with two 32-bit cells. Example:
-
-\end{itemize}
-
-\begin{Verbatim}[commandchars=\\\{\}]
-clock\PYGZhy{}frequency = \PYGZlt{}0x00000001 0x00000000\PYGZgt{};
-\end{Verbatim}
-\begin{itemize}
-\item {} 
-A null-terminated string value is represented using double quotes
-(the property value is considered to include the terminating NULL
-character). Example:
-
-\end{itemize}
-
-\begin{Verbatim}[commandchars=\\\{\}]
-compatible = \PYGZdq{}simple\PYGZhy{}bus\PYGZdq{};
-\end{Verbatim}
-\begin{itemize}
-\item {} 
-A bytestring is enclosed in square brackets {[} {]} with each byte
-represented by two hexadecimal digits. Spaces between each byte are
-optional. Example:
-
-\end{itemize}
-
-\begin{Verbatim}[commandchars=\\\{\}]
-local\PYGZhy{}mac\PYGZhy{}address = [00 00 12 34 56 78];
-\end{Verbatim}
-
-or equivalently:
-
-\begin{Verbatim}[commandchars=\\\{\}]
-local\PYGZhy{}mac\PYGZhy{}address = [000012345678];
-\end{Verbatim}
-\begin{itemize}
-\item {} 
-Values may have several comma-separated components, which are
-concatenated together. Example:
-
-\end{itemize}
-
-\begin{Verbatim}[commandchars=\\\{\}]
-compatible = \PYGZdq{}ns16550\PYGZdq{}, \PYGZdq{}ns8250\PYGZdq{};
-example = \PYGZlt{}0xf00f0000 19\PYGZgt{}, \PYGZdq{}a strange property format\PYGZdq{};
-\end{Verbatim}
-\begin{itemize}
-\item {} 
-In a cell array a reference to another node will be expanded to that
-node’s phandle. References may be \& followed by a node’s label.
-Example:
-
-\end{itemize}
-
-\begin{Verbatim}[commandchars=\\\{\}]
-interrupt\PYGZhy{}parent = \PYGZlt{} \PYGZam{}mpic \PYGZgt{};
-\end{Verbatim}
-
-or they may be \& followed by a node’s full path in braces. Example:
-
-\begin{Verbatim}[commandchars=\\\{\}]
-interrupt\PYGZhy{}parent = \PYGZlt{} \PYGZam{}\PYGZob{}/soc/interrupt\PYGZhy{}controller@40000\PYGZcb{} \PYGZgt{};
-\end{Verbatim}
-\begin{itemize}
-\item {} 
-Outside a cell array, a reference to another node will be expanded to
-that node’s full path. Example:
-
-\end{itemize}
-
-\begin{Verbatim}[commandchars=\\\{\}]
-ethernet0 = \PYGZam{}EMAC0;
-\end{Verbatim}
-\begin{itemize}
-\item {} 
-Labels may also appear before or after any component of a property
-value, or between cells of a cell array, or between bytes of a
-bytestring. Examples:
-
-\end{itemize}
-
-\begin{Verbatim}[commandchars=\\\{\}]
-reg = reglabel: \PYGZlt{}0 sizelabel: 0x1000000\PYGZgt{};
-prop = [ab cd ef byte4: 00 ff fe];
-str = start: \PYGZdq{}string value\PYGZdq{} end: ;
-\end{Verbatim}
-
-
-\section{File layout}
-\label{source-language:file-layout}
-\textbf{Version 1 DTS files have the overall layout:}
-
-\begin{Verbatim}[commandchars=\\\{\}]
-/dts\PYGZhy{}v1/;
-[memory reservations]
-    / \PYGZob{}
-        [property definitions]
-        [child nodes]
-    \PYGZcb{};
-\end{Verbatim}
-
-The /dts-v1/; shall be present to identify the file as a version 1 DTS
-(dts files without this tag will be treated by dtc as being in the
-obsolete version 0, which uses a different format for integers in
-addition to other small but incompatible changes).
-
-Memory reservations define an entry for the devicetree blob’s memory
-reservation table. They have the form: e.g., /memreserve/ \textless{}address\textgreater{}
-\textless{}length\textgreater{}; Where \textless{}address\textgreater{} and \textless{}length\textgreater{} are 64-bit C-style integers.
-\begin{itemize}
-\item {} 
-The / \{ \}; section defines the root node of the devicetree.
-
-\item {} 
-C style (/* ... */) and C++ style (//) comments are supported.
-
-\end{itemize}
-
-\begin{thebibliography}{IEEE1275}
-\bibitem[b1]{b1}{\phantomsection\label{references:b1} 
-\emph{Power ISA™}, Version 2.06 Revision B, July 23, 2010. It is
-available from power.org (\url{http://power.org})
-}
-\bibitem[IEEE1275]{IEEE1275}{\phantomsection\label{references:ieee1275} 
-\emph{Boot (Initialization Configuration) Firmware: Core Requirements
-and Practices}, 1994, This is the core standard (also known as IEEE
-1275) that defines the devicetree concept adopted by the DTSpec and
-ePAPR. It is available from Global Engineering (\url{http://global.ihs.com/}).
-}
-\bibitem[b3]{b3}{\phantomsection\label{references:b3} 
-\emph{PowerPC Processor Binding to IEEE 1275-1994 Standard for Boot
-(Initialization, Configuration) Firmware}, Version 2.1, Open Firmware
-Working Group,
-(\url{http://playground.sun.com/1275/bindings/ppc/release/ppc-2\_1.html}),
-1996, This document specifies the PowerPC processor specific binding
-to the base standard.
-}
-\bibitem[b4]{b4}{\phantomsection\label{references:b4} 
-\emph{booting-without-of.txt}, Ben Herrenschmidt, Becky Bruce, et
-al., From the Linux kernel source tree (\url{http://www.kernel.org/}),
-Describes the devicetree as used by the Linux kernel.
-}
-\bibitem[b5]{b5}{\phantomsection\label{references:b5} 
-\emph{Device Trees Everywhere}, David Gibson and Ben Herrenschmidt
-(\url{http://ozlabs.org/~dgibson/home/papers/dtc-paper.pdf}), An overview
-of the concept of the devicetree and devicetree compiler.
-}
-\bibitem[b6]{b6}{\phantomsection\label{references:b6} 
-\emph{PCI Bus Binding to: IEEE Std 1275-1994 Standard for Boot
-(Initialization Configuration) Firmware}, Revision 2.1, Open Firmware
-Working Group, 1998
-(\url{http://playground.sun.com/1275/bindings/pci/pci2\_1.pdf})
-}
-\bibitem[b7]{b7}{\phantomsection\label{references:b7} 
-\emph{Open Firmware Recommended Practice: Interrupt Mapping}, Version
-0.9, Open Firmware Working Group, 1996
-(\url{http://playground.sun.com/1275/practice/imap/imap0\_9d.pdf})
-}
-\bibitem[b8]{b8}{\phantomsection\label{references:b8} 
-\emph{Open Firmware Recommended Practice: Device Support Extensions},
-Version 1.0, Open Firmware Working Group, 1997,
-(\url{http://playground.sun.com/1275/practice/devicex/dse1\_0a.html}) This
-document describes the binding for various device types such as
-network, RTC, keyboard, sound, etc.
-}
-\bibitem[b9]{b9}{\phantomsection\label{references:b9} 
-\emph{Open Firmware Recommended Practice: Universal Serial Bus
-Binding to IEEE 1275}, Version 1, Open Firmware Working Group, 1998
-(\url{http://playground.sun.com/1275/bindings/usb/usb-1\_0.ps})
-}
-\bibitem[CHRP]{CHRP}{\phantomsection\label{references:chrp} 
-\emph{PowerPC Microprocessor Common Hardware Reference Platform
-(CHRP) Binding}, Version 1.8, Open Firmware Working Group, 1998
-(\url{http://playground.sun.com/1275/bindings/chrp/chrp1\_8a.ps}). This
-document specifies the properties for Open PIC-compatible interrupt
-controllers.
-}
-\bibitem[b11]{b11}{\phantomsection\label{references:b11} 
-\emph{CHRP ISA Interrupt Controller Device Binding}, Unapproved
-Draft version 1.1, Open Firmware Working Group, Aug 19, 1996
-(\url{http://playground.sun.com/1275/bindings/devices/postscript/isa-pic-1\_1d.ps})
-}
-\bibitem[b12]{b12}{\phantomsection\label{references:b12} 
-\emph{The Open Programmable Interrupt Controller (PIC) Register
-Interface Specification}, Revision 1.2, Advanced Micro Devices and
-Cyrix Corporation, October 1995
-}
-\bibitem[b13]{b13}{\phantomsection\label{references:b13} 
-\emph{PCI Local Bus Specification}, Revision 2.2, PCI Special
-Interest Group
-}
-\bibitem[b14]{b14}{\phantomsection\label{references:b14} 
-\emph{PCI Express Base Specification}, Revision 1.0a, PCI Special
-Interest Group
-}
-\bibitem[b15]{b15}{\phantomsection\label{references:b15} 
-\emph{PCI-Express Binding to OF}, P1275 Openboot Working Group
-Proposal, 18 August 2004
-}
-\bibitem[PAPR]{PAPR}{\phantomsection\label{references:papr} 
-\emph{Power.org Standard for Power Architecture Platform
-Requirements}, power.org
-}
-\bibitem[b17]{b17}{\phantomsection\label{references:b17} 
-\emph{System V Application Binary Interface, Edition 4.1}, Published
-by The Santa Cruz Operation, Inc., 1997
-}
-\bibitem[b18]{b18}{\phantomsection\label{references:b18} 
-\emph{The Open Programmable Interrupt Controller (PIC) Register
-Interface Specification Revision 1.2}, AMD and Cyrix, October 1995
-}
-\bibitem[b19]{b19}{\phantomsection\label{references:b19} 
-\emph{RFC 2119, Key words for use in RFCs to Indicate Requirement
-Levels}, \url{http://www.ietf.org/rfc/rfc2119.txt}
-}
-\bibitem[b20]{b20}{\phantomsection\label{references:b20} 
-\emph{64-bit PowerPC ELF Application Binary Interface Supplement
-1.9}, Ian Lance Taylor, 2004
-}
-\bibitem[EPAPR]{EPAPR}{\phantomsection\label{references:epapr} 
-\emph{Power.org Standard for Embedded Power Architecture
-Platform Requirements}, power.org, 2011,
-\url{https://www.power.org/documentation/power-org-standard-for-embedded-power-architecture-platform-requirements-epapr-v1-1-2/}
-}
-\bibitem[ARMv8]{ARMv8}{\phantomsection\label{references:armv8} 
-\emph{ARM DDI 0487 ARM(c) Architecture Reference Manual,
-ARMv8 for ARMv8-A architecture profile}, ARM,
-\url{http://infocenter.arm.com/help/topic/com.arm.doc.ddi0487a.h/index.html}
-}
-\end{thebibliography}
-
-
-
-\renewcommand{\indexname}{Index}
-\printindex
-\end{document}
diff --git a/release/latex/fncychap.sty b/release/latex/fncychap.sty
deleted file mode 100644
index 9a56c04..0000000
--- a/release/latex/fncychap.sty
+++ /dev/null
@@ -1,683 +0,0 @@
-%%% Copyright   Ulf A. Lindgren
-%%%
-%%% Note        Premission is granted to modify this file under
-%%%             the condition that it is saved using another
-%%%             file and package name.
-%%%
-%%% Revision    1.1 (1997)
-%%%
-%%%             Jan. 8th Modified package name base date option
-%%%             Jan. 22th Modified FmN and FmTi for error in book.cls
-%%%                  \MakeUppercase{#}->{\MakeUppercase#}
-%%%             Apr. 6th Modified Lenny option to prevent undesired 
-%%%                  skip of line.
-%%%             Nov. 8th Fixed \@chapapp for AMS
-%%%
-%%% Revision    1.2 (1998)
-%%%
-%%%             Feb. 11th Fixed appendix problem related to Bjarne
-%%%             Aug. 11th Fixed problem related to 11pt and 12pt 
-%%%                  suggested by Tomas Lundberg. THANKS!
-%%%
-%%% Revision    1.3 (2004)
-%%%             Sep. 20th problem with frontmatter, mainmatter and
-%%%                  backmatter, pointed out by Lapo Mori
-%%%
-%%% Revision    1.31 (2004)
-%%%             Sep. 21th problem with the Rejne definition streched text
-%%%                  caused ugly gaps in the vrule aligned with the title
-%%%                  text. Kindly pointed out to me by Hendri Adriaens
-%%%
-%%% Revision    1.32 (2005)
-%%%             Jun. 23th compatibility problem with the KOMA class 'scrbook.cls'
-%%%                  a remedy is a redefinition of '\@schapter' in
-%%%                  line with that used in KOMA. The problem was pointed
-%%%                  out to me by Mikkel Holm Olsen
-%%%
-%%% Revision    1.33 (2005)
-%%%             Aug. 9th misspelled ``TWELV'' corrected, the error was pointed
-%%%                  out to me by George Pearson
-%%%
-%%% Revision    1.34 (2007)
-%%%             Added an alternative to Lenny provided by Peter
-%%%             Osborne (2005-11-28)
-%%%             Corrected front, main and back matter, based on input
-%%%             from Bas van Gils (2006-04-24)
-%%%             Jul. 30th Added Bjornstrup option provided by Jean-Marc
-%%%             Francois (2007-01-05).
-%%%             Reverted to \MakeUppercase{#} see rev 1.1, solved
-%%%             problem with MakeUppercase and MakeLowercase pointed
-%%%             out by Marco Feuerstein  (2007-06-06) 
-
-
-%%% Last modified   Jul. 2007
-
-\NeedsTeXFormat{LaTeX2e}[1995/12/01]
-\ProvidesPackage{fncychap}
-             [2007/07/30 v1.34
-                 LaTeX package (Revised chapters)]
-
-%%%% For conditional inclusion of color
-\newif\ifusecolor
-\usecolorfalse
-
-
-
-%%%% DEFINITION OF Chapapp variables
-\newcommand{\CNV}{\huge\bfseries}
-\newcommand{\ChNameVar}[1]{\renewcommand{\CNV}{#1}}
-
-
-%%%% DEFINITION OF TheChapter variables
-\newcommand{\CNoV}{\huge\bfseries}
-\newcommand{\ChNumVar}[1]{\renewcommand{\CNoV}{#1}}
-
-\newif\ifUCN
-\UCNfalse
-\newif\ifLCN
-\LCNfalse
-\def\ChNameLowerCase{\LCNtrue\UCNfalse}
-\def\ChNameUpperCase{\UCNtrue\LCNfalse}
-\def\ChNameAsIs{\UCNfalse\LCNfalse}
-
-%%%%% Fix for AMSBook 971008
-
-\@ifundefined{@chapapp}{\let\@chapapp\chaptername}{}
-
-
-%%%%% Fix for Bjarne and appendix 980211
-
-\newif\ifinapp
-\inappfalse
-\renewcommand\appendix{\par
-  \setcounter{chapter}{0}%
-  \setcounter{section}{0}%
-  \inapptrue%
-  \renewcommand\@chapapp{\appendixname}%
-  \renewcommand\thechapter{\@Alph\c@chapter}}
-
-%%%%% Fix for frontmatter, mainmatter, and backmatter 040920
-
-\@ifundefined{@mainmatter}{\newif\if@mainmatter \@mainmattertrue}{}
-
-%%%%%
-
-
-
-\newcommand{\FmN}[1]{%
-\ifUCN
-   {\MakeUppercase{#1}}\LCNfalse
-\else
-   \ifLCN
-      {\MakeLowercase{#1}}\UCNfalse
-   \else #1
-   \fi
-\fi}
-
-
-%%%% DEFINITION OF Title variables
-\newcommand{\CTV}{\Huge\bfseries}
-\newcommand{\ChTitleVar}[1]{\renewcommand{\CTV}{#1}}
-
-%%%% DEFINITION OF the basic rule width
-\newlength{\RW}
-\setlength{\RW}{1pt}
-\newcommand{\ChRuleWidth}[1]{\setlength{\RW}{#1}}
-
-\newif\ifUCT
-\UCTfalse
-\newif\ifLCT
-\LCTfalse
-\def\ChTitleLowerCase{\LCTtrue\UCTfalse}
-\def\ChTitleUpperCase{\UCTtrue\LCTfalse}
-\def\ChTitleAsIs{\UCTfalse\LCTfalse}
-\newcommand{\FmTi}[1]{%
-\ifUCT
-   {\MakeUppercase{#1}}\LCTfalse
-\else
-   \ifLCT
-      {\MakeLowercase{#1}}\UCTfalse
-   \else {#1}
-   \fi
-\fi}
-
-
-
-\newlength{\mylen}
-\newlength{\myhi}
-\newlength{\px}
-\newlength{\py}
-\newlength{\pyy}
-\newlength{\pxx}
-
-
-\def\mghrulefill#1{\leavevmode\leaders\hrule\@height #1\hfill\kern\z@}
-
-\newcommand{\DOCH}{%
-  \CNV\FmN{\@chapapp}\space \CNoV\thechapter
-  \par\nobreak
-  \vskip 20\p@
-  }
-\newcommand{\DOTI}[1]{%
-    \CTV\FmTi{#1}\par\nobreak
-    \vskip 40\p@
-    }
-\newcommand{\DOTIS}[1]{%
-    \CTV\FmTi{#1}\par\nobreak
-    \vskip 40\p@
-    }
-
-%%%%%% SONNY DEF
-
-\DeclareOption{Sonny}{%
-  \ChNameVar{\Large\sf}
-  \ChNumVar{\Huge}
-  \ChTitleVar{\Large\sf}
-  \ChRuleWidth{0.5pt}
-  \ChNameUpperCase
-  \renewcommand{\DOCH}{%
-    \raggedleft
-    \CNV\FmN{\@chapapp}\space \CNoV\thechapter
-    \par\nobreak
-    \vskip 40\p@}
-  \renewcommand{\DOTI}[1]{%
-    \CTV\raggedleft\mghrulefill{\RW}\par\nobreak
-    \vskip 5\p@
-    \CTV\FmTi{#1}\par\nobreak
-    \mghrulefill{\RW}\par\nobreak
-    \vskip 40\p@}
-  \renewcommand{\DOTIS}[1]{%
-    \CTV\raggedleft\mghrulefill{\RW}\par\nobreak
-    \vskip 5\p@
-    \CTV\FmTi{#1}\par\nobreak
-    \mghrulefill{\RW}\par\nobreak
-    \vskip 40\p@}
-}
-
-%%%%%% LENNY DEF
-
-\DeclareOption{Lenny}{%
-
-  \ChNameVar{\fontsize{14}{16}\usefont{OT1}{phv}{m}{n}\selectfont}
-  \ChNumVar{\fontsize{60}{62}\usefont{OT1}{ptm}{m}{n}\selectfont}
-  \ChTitleVar{\Huge\bfseries\rm}
-  \ChRuleWidth{1pt}
-  \renewcommand{\DOCH}{%
-    \settowidth{\px}{\CNV\FmN{\@chapapp}}
-    \addtolength{\px}{2pt}
-    \settoheight{\py}{\CNV\FmN{\@chapapp}}
-    \addtolength{\py}{1pt}
-
-    \settowidth{\mylen}{\CNV\FmN{\@chapapp}\space\CNoV\thechapter}
-    \addtolength{\mylen}{1pt}
-    \settowidth{\pxx}{\CNoV\thechapter}
-    \addtolength{\pxx}{-1pt}
-
-    \settoheight{\pyy}{\CNoV\thechapter}
-    \addtolength{\pyy}{-2pt}
-    \setlength{\myhi}{\pyy}
-    \addtolength{\myhi}{-1\py}
-    \par
-    \parbox[b]{\textwidth}{%
-    \rule[\py]{\RW}{\myhi}%
-    \hskip -\RW%
-    \rule[\pyy]{\px}{\RW}%
-    \hskip -\px%
-    \raggedright%
-    \CNV\FmN{\@chapapp}\space\CNoV\thechapter%
-    \hskip1pt%
-    \mghrulefill{\RW}%
-    \rule{\RW}{\pyy}\par\nobreak%
-    \vskip -\baselineskip%
-    \vskip -\pyy%
-    \hskip \mylen%
-    \mghrulefill{\RW}\par\nobreak%
-    \vskip \pyy}%
-    \vskip 20\p@}
- 
-
-  \renewcommand{\DOTI}[1]{%
-    \raggedright
-    \CTV\FmTi{#1}\par\nobreak
-    \vskip 40\p@}
-
-  \renewcommand{\DOTIS}[1]{%
-    \raggedright
-    \CTV\FmTi{#1}\par\nobreak
-    \vskip 40\p@}
- }
-
-%%%%%% Peter Osbornes' version of LENNY DEF
-
-\DeclareOption{PetersLenny}{%
-
-% five new lengths 
-\newlength{\bl}                           %  bottom left   : orig \space
-\setlength{\bl}{6pt}
-\newcommand{\BL}[1]{\setlength{\bl}{#1}}
-\newlength{\br}                           %  bottom right  : orig 1pt
-\setlength{\br}{1pt}
-\newcommand{\BR}[1]{\setlength{\br}{#1}}
-\newlength{\tl}                           %  top left      : orig 2pt
-\setlength{\tl}{2pt}
-\newcommand{\TL}[1]{\setlength{\tl}{#1}}
-\newlength{\trr}                           %  top right      :orig 1pt 
-\setlength{\trr}{1pt}
-\newcommand{\TR}[1]{\setlength{\trr}{#1}}
-\newlength{\blrule}                           %  top right      :orig 1pt 
-\setlength{\trr}{0pt}
-\newcommand{\BLrule}[1]{\setlength{\blrule}{#1}}
-
-
-  \ChNameVar{\fontsize{14}{16}\usefont{OT1}{phv}{m}{n}\selectfont}
-  \ChNumVar{\fontsize{60}{62}\usefont{OT1}{ptm}{m}{n}\selectfont}
-  \ChTitleVar{\Huge\bfseries\rm}
-  \ChRuleWidth{1pt}
-\renewcommand{\DOCH}{%
-
-
-%%%%%%%                                   tweaks for 1--9 and A--Z
-\ifcase\c@chapter\relax%
-\or\BL{-3pt}\TL{-4pt}\BR{0pt}\TR{-6pt}%1
-\or\BL{0pt}\TL{-4pt}\BR{2pt}\TR{-4pt}%2
-\or\BL{0pt}\TL{-4pt}\BR{2pt}\TR{-4pt}%3
-\or\BL{0pt}\TL{5pt}\BR{2pt}\TR{-4pt}%4
-\or\BL{0pt}\TL{3pt}\BR{2pt}\TR{-4pt}%5
-\or\BL{-1pt}\TL{0pt}\BR{2pt}\TR{-2pt}%6
-\or\BL{0pt}\TL{-3pt}\BR{2pt}\TR{-2pt}%7
-\or\BL{0pt}\TL{-3pt}\BR{2pt}\TR{-2pt}%8
-\or\BL{0pt}\TL{-3pt}\BR{-4pt}\TR{-2pt}%9
-\or\BL{-3pt}\TL{-3pt}\BR{2pt}\TR{-7pt}%10
-\or\BL{-6pt}\TL{-6pt}\BR{0pt}\TR{-9pt}%11
-\or\BL{-6pt}\TL{-6pt}\BR{2pt}\TR{-7pt}%12
-\or\BL{-5pt}\TL{-5pt}\BR{0pt}\TR{-9pt}%13
-\or\BL{-6pt}\TL{-6pt}\BR{0pt}\TR{-9pt}%14
-\or\BL{-3pt}\TL{-3pt}\BR{3pt}\TR{-6pt}%15
-\or\BL{-3pt}\TL{-3pt}\BR{3pt}\TR{-6pt}%16
-\or\BL{-5pt}\TL{-3pt}\BR{-8pt}\TR{-6pt}%17
-\or\BL{-5pt}\TL{-5pt}\BR{0pt}\TR{-9pt}%18
-\or\BL{-3pt}\TL{-3pt}\BR{-6pt}\TR{-9pt}%19
-\or\BL{0pt}\TL{0pt}\BR{0pt}\TR{-5pt}%20
-\fi
-
-\ifinapp\ifcase\c@chapter\relax%
-\or\BL{0pt}\TL{14pt}\BR{5pt}\TR{-19pt}%A
-\or\BL{0pt}\TL{-5pt}\BR{-3pt}\TR{-8pt}%B
-\or\BL{-3pt}\TL{-2pt}\BR{1pt}\TR{-6pt}\BLrule{0pt}%C
-\or\BL{0pt}\TL{-5pt}\BR{-3pt}\TR{-8pt}\BLrule{0pt}%D
-\or\BL{0pt}\TL{-5pt}\BR{2pt}\TR{-3pt}%E
-\or\BL{0pt}\TL{-5pt}\BR{-10pt}\TR{-1pt}%F
-\or\BL{-3pt}\TL{0pt}\BR{0pt}\TR{-7pt}%G
-\or\BL{0pt}\TL{-5pt}\BR{3pt}\TR{-1pt}%H
-\or\BL{0pt}\TL{-5pt}\BR{3pt}\TR{-1pt}%I
-\or\BL{2pt}\TL{0pt}\BR{-3pt}\TR{1pt}%J
-\or\BL{0pt}\TL{-5pt}\BR{3pt}\TR{-1pt}%K
-\or\BL{0pt}\TL{-5pt}\BR{2pt}\TR{-19pt}%L
-\or\BL{0pt}\TL{-5pt}\BR{3pt}\TR{-1pt}%M
-\or\BL{0pt}\TL{-5pt}\BR{-2pt}\TR{-1pt}%N
-\or\BL{-3pt}\TL{-2pt}\BR{-3pt}\TR{-11pt}%O
-\or\BL{0pt}\TL{-5pt}\BR{-9pt}\TR{-3pt}%P
-\or\BL{-3pt}\TL{-2pt}\BR{-3pt}\TR{-11pt}%Q
-\or\BL{0pt}\TL{-5pt}\BR{4pt}\TR{-8pt}%R
-\or\BL{-2pt}\TL{-2pt}\BR{-2pt}\TR{-7pt}%S
-\or\BL{-3pt}\TL{0pt}\BR{-5pt}\TR{4pt}\BLrule{8pt}%T
-\or\BL{-7pt}\TL{-11pt}\BR{-5pt}\TR{-7pt}\BLrule{0pt}%U
-\or\BL{-14pt}\TL{-5pt}\BR{-14pt}\TR{-1pt}\BLrule{14pt}%V
-\or\BL{-10pt}\TL{-9pt}\BR{-13pt}\TR{-3pt}\BLrule{7pt}%W
-\or\BL{0pt}\TL{-5pt}\BR{3pt}\TR{-1pt}\BLrule{0pt}%X
-\or\BL{-6pt}\TL{-4pt}\BR{-7pt}\TR{1pt}\BLrule{7pt}%Y
-\or\BL{0pt}\TL{-5pt}\BR{3pt}\TR{-1pt}\BLrule{0pt}%Z
-\fi\fi
-%%%%%%%
-    \settowidth{\px}{\CNV\FmN{\@chapapp}}
-    \addtolength{\px}{\tl}        %MOD change 2pt to \tl
-    \settoheight{\py}{\CNV\FmN{\@chapapp}}
-    \addtolength{\py}{1pt}
-
-    \settowidth{\mylen}{\CNV\FmN{\@chapapp}\space\CNoV\thechapter}
-    \addtolength{\mylen}{\trr}% MOD change 1pt to \tr
-    \settowidth{\pxx}{\CNoV\thechapter}
-    \addtolength{\pxx}{-1pt}
-
-    \settoheight{\pyy}{\CNoV\thechapter}
-    \addtolength{\pyy}{-2pt}
-    \setlength{\myhi}{\pyy}
-    \addtolength{\myhi}{-1\py}
-    \par
-    \parbox[b]{\textwidth}{%
-    \rule[\py]{\RW}{\myhi}%
-    \hskip -\RW%
-    \rule[\pyy]{\px}{\RW}% 
-    \hskip -\px%
-    \raggedright%
-    \CNV\FmN{\@chapapp}\rule{\blrule}{\RW}\hskip\bl\CNoV\thechapter%MOD 
-%    \CNV\FmN{\@chapapp}\space\CNoV\thechapter                     %ORIGINAL
-    \hskip\br%                           %MOD 1pt to \br
-    \mghrulefill{\RW}% 
-    \rule{\RW}{\pyy}\par\nobreak% 
-    \vskip -\baselineskip%
-    \vskip -\pyy%
-    \hskip \mylen%
-    \mghrulefill{\RW}\par\nobreak%
-    \vskip \pyy}%
-    \vskip 20\p@}
- 
-
-  \renewcommand{\DOTI}[1]{%
-    \raggedright
-    \CTV\FmTi{#1}\par\nobreak
-    \vskip 40\p@}
-
-  \renewcommand{\DOTIS}[1]{%
-    \raggedright
-    \CTV\FmTi{#1}\par\nobreak
-    \vskip 40\p@}
- }
-
-
-%
-
-
-%%%%%% BJORNSTRUP DEF
-
-\DeclareOption{Bjornstrup}{%
-  \usecolortrue
-  % pzc (Zapf Chancelery) is nice.  ppl (Palatino) is cool too.
-  \ChNumVar{\fontsize{76}{80}\usefont{OT1}{pzc}{m}{n}\selectfont}
-  \ChTitleVar{\raggedleft\Large\sffamily\bfseries}
-
-  \setlength{\myhi}{10pt}         % Space between grey box border and text
-  \setlength{\mylen}{\textwidth}
-  \addtolength{\mylen}{-2\myhi}
-  \renewcommand{\DOCH}{%
-    \settowidth{\py}{\CNoV\thechapter}
-    \addtolength{\py}{-10pt}      % Amount of space by which the
-%                                  % number is shifted right
-    \fboxsep=0pt%
-    \colorbox[gray]{.85}{\rule{0pt}{40pt}\parbox[b]{\textwidth}{\hfill}}%
-    \kern-\py\raise20pt%
-    \hbox{\color[gray]{.5}\CNoV\thechapter}\\%
-  }
-  
-  \renewcommand{\DOTI}[1]{%
-    \nointerlineskip\raggedright%
-    \fboxsep=\myhi%
-    \vskip-1ex%
-    \colorbox[gray]{.85}{\parbox[t]{\mylen}{\CTV\FmTi{#1}}}\par\nobreak%
-    \vskip 40\p@%
-  }
-
-  \renewcommand{\DOTIS}[1]{%
-    \fboxsep=0pt
-    \colorbox[gray]{.85}{\rule{0pt}{40pt}\parbox[b]{\textwidth}{\hfill}}\\%
-    \nointerlineskip\raggedright%
-    \fboxsep=\myhi%
-    \colorbox[gray]{.85}{\parbox[t]{\mylen}{\CTV\FmTi{#1}}}\par\nobreak%
-    \vskip 40\p@%
-  }
-}
-
-
-%%%%%%% GLENN DEF
-
-
-\DeclareOption{Glenn}{%
-  \ChNameVar{\bfseries\Large\sf}
-  \ChNumVar{\Huge}
-  \ChTitleVar{\bfseries\Large\rm}
-  \ChRuleWidth{1pt}
-  \ChNameUpperCase
-  \ChTitleUpperCase
-  \renewcommand{\DOCH}{%
-    \settoheight{\myhi}{\CTV\FmTi{Test}}
-    \setlength{\py}{\baselineskip}
-    \addtolength{\py}{\RW}
-    \addtolength{\py}{\myhi}
-    \setlength{\pyy}{\py}
-    \addtolength{\pyy}{-1\RW}
-     
-    \raggedright
-    \CNV\FmN{\@chapapp}\space\CNoV\thechapter
-    \hskip 3pt\mghrulefill{\RW}\rule[-1\pyy]{2\RW}{\py}\par\nobreak}
-
-  \renewcommand{\DOTI}[1]{%
-    \addtolength{\pyy}{-4pt}
-    \settoheight{\myhi}{\CTV\FmTi{#1}}
-    \addtolength{\myhi}{\py}
-    \addtolength{\myhi}{-1\RW}
-    \vskip -1\pyy
-    \rule{2\RW}{\myhi}\mghrulefill{\RW}\hskip 2pt
-    \raggedleft\CTV\FmTi{#1}\par\nobreak
-    \vskip 80\p@}
-
-\newlength{\backskip}
-  \renewcommand{\DOTIS}[1]{%
-%    \setlength{\py}{10pt}
-%    \setlength{\pyy}{\py}
-%    \addtolength{\pyy}{\RW}
-%    \setlength{\myhi}{\baselineskip}
-%    \addtolength{\myhi}{\pyy}
-%    \mghrulefill{\RW}\rule[-1\py]{2\RW}{\pyy}\par\nobreak
-%    \addtolength{}{}
-%\vskip -1\baselineskip
-%    \rule{2\RW}{\myhi}\mghrulefill{\RW}\hskip 2pt
-%    \raggedleft\CTV\FmTi{#1}\par\nobreak
-%    \vskip 60\p@}
-%% Fix suggested by Tomas Lundberg
-    \setlength{\py}{25pt}  % eller vad man vill
-    \setlength{\pyy}{\py}
-    \setlength{\backskip}{\py}
-    \addtolength{\backskip}{2pt}
-    \addtolength{\pyy}{\RW}
-    \setlength{\myhi}{\baselineskip}
-    \addtolength{\myhi}{\pyy}
-    \mghrulefill{\RW}\rule[-1\py]{2\RW}{\pyy}\par\nobreak
-    \vskip -1\backskip
-    \rule{2\RW}{\myhi}\mghrulefill{\RW}\hskip 3pt %
-    \raggedleft\CTV\FmTi{#1}\par\nobreak
-    \vskip 40\p@}
- }
-
-%%%%%%% CONNY DEF
-
-\DeclareOption{Conny}{%
-  \ChNameUpperCase
-  \ChTitleUpperCase  
-  \ChNameVar{\centering\Huge\rm\bfseries}
-  \ChNumVar{\Huge}
-  \ChTitleVar{\centering\Huge\rm}
-  \ChRuleWidth{2pt}
-
-  \renewcommand{\DOCH}{%
-    \mghrulefill{3\RW}\par\nobreak
-    \vskip -0.5\baselineskip
-    \mghrulefill{\RW}\par\nobreak
-    \CNV\FmN{\@chapapp}\space \CNoV\thechapter
-    \par\nobreak
-    \vskip -0.5\baselineskip
-   }
-  \renewcommand{\DOTI}[1]{%
-    \mghrulefill{\RW}\par\nobreak
-    \CTV\FmTi{#1}\par\nobreak
-    \vskip 60\p@
-    }
-  \renewcommand{\DOTIS}[1]{%
-    \mghrulefill{\RW}\par\nobreak
-    \CTV\FmTi{#1}\par\nobreak
-    \vskip 60\p@
-    }
-  }
-
-%%%%%%% REJNE DEF
-
-\DeclareOption{Rejne}{%
-
-  \ChNameUpperCase
-  \ChTitleUpperCase  
-  \ChNameVar{\centering\Large\rm}
-  \ChNumVar{\Huge}
-  \ChTitleVar{\centering\Huge\rm}
-  \ChRuleWidth{1pt}
-  \renewcommand{\DOCH}{%
-    \settoheight{\py}{\CNoV\thechapter}
-    \parskip=0pt plus 1pt % Set parskip to default, just in case v1.31
-    \addtolength{\py}{-1pt}
-    \CNV\FmN{\@chapapp}\par\nobreak
-    \vskip 20\p@
-    \setlength{\myhi}{2\baselineskip}
-    \setlength{\px}{\myhi}
-    \addtolength{\px}{-1\RW}
-    \rule[-1\px]{\RW}{\myhi}\mghrulefill{\RW}\hskip
-    10pt\raisebox{-0.5\py}{\CNoV\thechapter}\hskip 10pt\mghrulefill{\RW}\rule[-1\px]{\RW}{\myhi}\par\nobreak
-     \vskip -3\p@% Added -2pt vskip to correct for streched text v1.31
-    }
-  \renewcommand{\DOTI}[1]{%
-    \setlength{\mylen}{\textwidth}
-    \parskip=0pt plus 1pt % Set parskip to default, just in case v1.31
-    \addtolength{\mylen}{-2\RW}
-    {\vrule width\RW}\parbox{\mylen}{\CTV\FmTi{#1}}{\vrule width\RW}\par\nobreak%
-    \vskip -3pt\rule{\RW}{2\baselineskip}\mghrulefill{\RW}\rule{\RW}{2\baselineskip}%
-    \vskip 60\p@% Added -2pt in vskip to correct for streched text v1.31
-    }
-  \renewcommand{\DOTIS}[1]{%
-    \setlength{\py}{\fboxrule}
-    \setlength{\fboxrule}{\RW}
-    \setlength{\mylen}{\textwidth}
-    \addtolength{\mylen}{-2\RW}
-    \fbox{\parbox{\mylen}{\vskip 2\baselineskip\CTV\FmTi{#1}\par\nobreak\vskip \baselineskip}} 
-    \setlength{\fboxrule}{\py}
-    \vskip 60\p@
-    }
-  }
-
-
-%%%%%%% BJARNE DEF
-
-\DeclareOption{Bjarne}{%
-  \ChNameUpperCase
-  \ChTitleUpperCase  
-  \ChNameVar{\raggedleft\normalsize\rm}
-  \ChNumVar{\raggedleft \bfseries\Large}
-  \ChTitleVar{\raggedleft \Large\rm}
-  \ChRuleWidth{1pt}
-
-
-%% Note thechapter -> c@chapter fix appendix bug
-%% Fixed misspelled 12
-
-  \newcounter{AlphaCnt}
-  \newcounter{AlphaDecCnt}
-  \newcommand{\AlphaNo}{%
-    \ifcase\number\theAlphaCnt
-      \ifnum\c@chapter=0
-        ZERO\else{}\fi
-    \or ONE\or TWO\or THREE\or FOUR\or FIVE
-    \or SIX\or SEVEN\or EIGHT\or NINE\or TEN
-    \or ELEVEN\or TWELVE\or THIRTEEN\or FOURTEEN\or FIFTEEN
-    \or SIXTEEN\or SEVENTEEN\or EIGHTEEN\or NINETEEN\fi
-}
-
-  \newcommand{\AlphaDecNo}{%
-    \setcounter{AlphaDecCnt}{0}
-    \@whilenum\number\theAlphaCnt>0\do
-      {\addtocounter{AlphaCnt}{-10}
-       \addtocounter{AlphaDecCnt}{1}}
-     \ifnum\number\theAlphaCnt=0
-     \else
-       \addtocounter{AlphaDecCnt}{-1}
-       \addtocounter{AlphaCnt}{10}
-     \fi
-     
-     
-    \ifcase\number\theAlphaDecCnt\or TEN\or TWENTY\or THIRTY\or
-    FORTY\or FIFTY\or SIXTY\or SEVENTY\or EIGHTY\or NINETY\fi
-    }
-  \newcommand{\TheAlphaChapter}{%
-    
-    \ifinapp 
-      \thechapter
-    \else
-      \setcounter{AlphaCnt}{\c@chapter}
-      \ifnum\c@chapter<20
-        \AlphaNo
-      \else
-        \AlphaDecNo\AlphaNo
-      \fi
-    \fi
-    }  
-  \renewcommand{\DOCH}{%
-    \mghrulefill{\RW}\par\nobreak
-    \CNV\FmN{\@chapapp}\par\nobreak 
-    \CNoV\TheAlphaChapter\par\nobreak
-    \vskip -1\baselineskip\vskip 5pt\mghrulefill{\RW}\par\nobreak
-    \vskip 20\p@
-    }
-  \renewcommand{\DOTI}[1]{%
-    \CTV\FmTi{#1}\par\nobreak
-    \vskip 40\p@
-    }
-  \renewcommand{\DOTIS}[1]{%
-    \CTV\FmTi{#1}\par\nobreak
-    \vskip 40\p@
-    }
-}
-
-\DeclareOption*{%
-  \PackageWarning{fancychapter}{unknown style option}
-  }
-
-\ProcessOptions* \relax
-
-\ifusecolor
-  \RequirePackage{color} 
-\fi
-\def\@makechapterhead#1{%
-  \vspace*{50\p@}%
-  {\parindent \z@ \raggedright \normalfont
-    \ifnum \c@secnumdepth >\m@ne
-      \if@mainmatter%%%%% Fix for frontmatter, mainmatter, and backmatter 040920
-        \DOCH
-      \fi
-    \fi
-    \interlinepenalty\@M
-    \if@mainmatter%%%%% Fix for frontmatter, mainmatter, and backmatter 060424
-      \DOTI{#1}%
-    \else%
-      \DOTIS{#1}%
-    \fi
-  }}
-
-
-%%% Begin: To avoid problem with scrbook.cls (fncychap version 1.32)
-
-%%OUT:
-%\def\@schapter#1{\if@twocolumn
-%                   \@topnewpage[\@makeschapterhead{#1}]%
-%                 \else
-%                   \@makeschapterhead{#1}%
-%                   \@afterheading
-%                 \fi}
-
-%%IN:
-\def\@schapter#1{%
-\if@twocolumn%
-  \@makeschapterhead{#1}%
-\else%
-  \@makeschapterhead{#1}%
-  \@afterheading%
-\fi}
-
-%%% End: To avoid problem with scrbook.cls (fncychap version 1.32)
-
-\def\@makeschapterhead#1{%
-  \vspace*{50\p@}%
-  {\parindent \z@ \raggedright
-    \normalfont
-    \interlinepenalty\@M
-    \DOTIS{#1}
-    \vskip 40\p@
-  }}
-
-\endinput
-
-
diff --git a/release/latex/graphviz-1d3954672eca688030b49a13a35b6714d9abdcd5.pdf b/release/latex/graphviz-1d3954672eca688030b49a13a35b6714d9abdcd5.pdf
deleted file mode 100644
index 86a5844e363ec4fbcbfecf062581eedb2463534d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 19470
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
PGW@|pXlqlPtPuYLN0=3+

diff --git a/release/latex/graphviz-23a197b43ca822bb92fb1a341bdd04b0845caa29.pdf b/release/latex/graphviz-23a197b43ca822bb92fb1a341bdd04b0845caa29.pdf
deleted file mode 100644
index 71540b9bc2f34ff2b0d7137e8ca3c90ed710d244..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 14813
zcmcJ$Wl$a4*6)pbaDu~v;O_1k++7#$vT(N$++BlPkl+^F-5ml1cL*Bvh3vD>v!8R`
zs(ZiOhMwK?-(%XCV{}nP|Hu`^B<PtL*b&I<Pbwb}SOH7`dm}3ZK0W}Wtf`&3vju?d
zRZ>O(004{<mNw3&px3Jn(AiYX)Y#s{6hS}$!O0n93baLV&umMSvtMCC`h0ee#U~A0
zoJTkE%cWB>rxW?a+d6{8CE@skrADLPl%HUH{E5p)F!RoEuwfY`Gotpy%N*3Z8T$<r
zOW<Y6FxWV|KeI@H9Q+f){4j(cgZ#lZBDDF{tecC+J6GVQdTy|SBKNtgQkR|Tcz=f&
zEV9oJr}y52c_3;j<uJ3I^NPco=<hP7nU~G3%4@{wsIw)X>rk}rb0fc4#Y~%LZnmn>
zK_?-=Jxm(HeyL?OSr1XqHPE!qx~<_9k2AEbrK+g-AkwNrdDQ*h8DhD<Wi|$;&6mZ(
z#eVX@JV?n6=4%~nQI7i<ZkRpyQ*cTZjCC6e&Q-kp*F>$0ptfeaiP-_ybo@qhrTz~L
z;XlT=?Md}Q9AaOjSqadLtb|ZafHyqXw+X-$q?H}#Newe%%6Z3aSx*LYwHYANj_`CA
zweH7`tZjZBipi?c6nC#vvAba1=#d|c0&Q&JM!0>P`USm&jF!rrbdAOmEl<^r6J_c5
zm_DO?`w;C5eA1kb;n^d&2lh}$e&25=JlIkfk<-5-H_0%rex$#LbHjhp-|c5o4$pk2
zB^>3HmE=XE;cN`kE9TX6k(|+NKF7ST&wEga$0be#EQ)!V8FjkG_f$2iM=-TB`PVML
z-o3@gTTr}RU&Dfpll|@aTaD%4(eo!>#NC}GRh(aA1;EGmCcGYuK&ICUfKgN!zzkqC
z2ELZB5%l`tuaZ&1-p=_S)@Jlf^h^Nuza#L~==JwsgK_+OFaV>fhl44AQ4wfv`e$H8
zAjtH!ALhT?G0K^~hL(uEJ3!}EVgj&myq)X-y+78XuVcQNI|1H;|F1}w1lhYd{9_(}
z_5Vlxdm$>Xqk@2TP7ZHl8GHOKO97lgE`Mh6wp!6wD=|}7OJh@INs%{`e=Sql)XClj
zWNhjLcypQZKUT&0TK|s(<ofrt{{Is2ZJ56@l^MXy$<F#`Nq-3}0A?m`=6@=z0CqO^
z|CO^RUZ$$LYYpTK!L6d3r>F7`h^OjJ)((iMt0YaW!BFt0sH=KG)((vn>pr)>%}=Kf
zGf!2LU-0tB)2vVUZ*{FFeELg>#ihy~vz2B?yP(K+49|uKhkLtWRqJY49i5b1zNt8G
zB$=y1Yc+wd|I`JOmS(5b(3$kZ1Iw8O<8IaDUc7vADrsUJT)d_S0FUoEM8~GzQ5~9r
zL)Cz5E&bNyzT<Kau%V+{eIeN27=>kXb7cZo4Cm$Y<k8X6Z21NLat&9Yq%l`eSZsdB
z+dVuog2;C9XbwXK4yvyC2CMvp-=#B4XmYe+0bAp?0~_8EY-?K~8}Pm%J35&`$e5Ki
zcF7+3ov}{rJH_GQ`QfRlF2au=<R8xH>_xP2*W0<k6Fc1iUa^-tQhsueYb?~T=7^I9
z_1_$7t067v^z;aSr>2dqEAMuw$TIB8-T*XqIpw9LyjUG!Ti300!Ti?~$jdW@i|qTn
zSYAT1R~C8Q7rkDJBb$@jmd>F4&FrE_4{y}v?Etu8evz;|JX{cCQMP(QLT8P18)tRU
zgII$@-TmDo;|NgP;KIbR^l5(9ikHq%Pf3roHa7OVM^B8%2DDC-EAKW=jE<2ZT6kIm
zyxU%6A9*3Z)j*7u%jyMC01#=tI@gcwfw8{@zXeu*t(}9-VL+VGQ3;^y5Pb2R_HznM
z3u>#_TkpY&IuQ~wb2O$k59xRu>K^>%rYt+U2|1Y&mlOdzIN0BVU}EY)8<i3Tx&L4<
z*7@QLo|+U@@htO$IFaRM7g^|spX$YY`%4+r;PEqx8>FRgYsUM#v&YeJ<Vy9T9L}xB
zk!(-8Ogj5<@7C&P$(3iFXM^1*!OJ6ihKqGsKm6+s>O@d&{nOVJwwG@h=VJ=}H=Ud^
z;5z{w{HE5&kL#4UD_TpQ&k8foD-Lp#g5!rTVw77}kLpn+ZNVpkI>;ssptzcQFcy^t
z5PSV2<I3}gTswOhP(ytUEH!VF=96y>7_OF<=JRbqdSOy&6#rn~&e)RQj?j(SOFLa{
zL0f51T2dQyY*YfG#qqJtF}$G%D;Yi|<zxodoolQR@iPyikQs#+>_Q{8kR+#u!N$rG
z^dkotFMjM&-_)J0+j_U3IG3jXXmtNLz)L5#`Dk5f{w4g`_{$6K?hX`7>y!GC(c#7;
zCoCgp?9!cmFQf^_Z~P00G`W{xU+giP8(420*eh7?1oLND6Id3VM{sWc(PY0)PG<Gj
z0*&Lfz-o9ca9#aG=Q(k2-fofKifF&iMwhG?fBU1BNAPC<(aJZ`?yWfW6K!Y==6eZz
zX{ac&8@F$BeLBi)Klv?K-8`4kD3pT&Q0eqJr`9~YVAwR3l3wL|$tS?McH5CDci7*P
z4wMh~u<`=)+&WxLzez^(%>vCMejf-seb=Y7KxkJ*^7$7MI9paN?fPKKtt1nrVrKG;
z`#jx=iV%w+Px)@OHCGtawBt>v;w2=)Y|XE`B?!K6Ea2zH${L@gg7q^N`0AKv`$OM7
z?&inKthh{wU~>%l0(lug(D?3Km(tok#xY`n$6EF8dwey#XMXe+hO-KDf*ahYQk_?f
z`JXQe7358n?F;hg%s1T9vJ5WEG-vV@=JYBcFXxKUpV9odHNPsF*b?o~aocde-98_!
z=FZ~BXj?%*vM<pnrv1cP*N3QMUP7lFJ=R0E&T$qS$*(^x-_G=@pmVh?x@L~Z*f*S%
z+&>LCdlBv6%d{|4q~6nANV`MQTh2xV=My44p44rAZcTCCo-GCvI9<Nn*@fw@(neTI
z!w!!lY6Zqe0Is@jaVyzN2Fl&lYbX<}E2Q6@46+1ic}xO-^|WbP@a!$gaS1Cyf=Wv(
zG2s=<T4!x%$@p8}&2v&TaMbhtJS1e3yP#Jx6_~2d@TdMz-^o5Nx`{W<vx;e%G!N!#
zF)!wIX<R73eqp1Y2~pFqeJ=yXIwCt^61n6;Di`Q2=gkCt&SEpGKhwncJp~44wuh|%
z9hhhxe6E}0M;uf3op+uG1JzCRv=K3)Mrpqd1=btWA8f@$7t4G+_<*kN$`iG^jY=|p
z_3}55&S0Og0c5Kwn3YKp0+Fc*^xWL?JoBL3;xhDb6Te3%oc_KBnY0;^u*>Wkm+VSk
z^E92cvZQu$s=n}o5jWD9eM<<(Rj;^#uMVn12m#AJRq;gS;<}IXb@Xt4IEPcLHv6|D
zw;d>Iq(VCqo@@Oy9`5v;tlN|_=rwmm4Et87Micoxw0pPxwQd($x##myKU)WE__>qn
zpcS~7iY{3>o<*2LqIYUv(r`sVCK~Ezk#mfqFXun#GI?uU^Y=PPVMIB_l<YGAt`nau
zrH*gqvrkR(G8>;9&`s0*iWW4jKK@K@TC1+&F*|{LaEJ(s(o<c2&cF3>Q{b%Ug7Kk*
ztfgB{|1$p`o^#-d_eNV7W)EdW%r(kdt^mRC=|)6m7hH}yy{QMUzeN{^(Aiz59m`y6
zfAOohyjR*c=%lS&hUhxBE$ab6xP3r<#}5@Z*hAu}&9AC)Wuz=c+hV^FHB*g#a#UeO
zh#-4%Ijx8H@7kh>(EQ5c59Uk#frEeOeddCuq<#4tS%8iNYRQXxL`bz~4WbH<;`>qj
zxy+1RY-}<V>*tGbtoUCZ*O5~6^u()PLo*h~=gcAz-@JW6>l4nxeoPN)zm_OycvI(L
z&>QG%N+UV92~oN>@4T`P_Hn)qp4kXk8V<QlRu!AEe3b6x-lUXqa~cd_KjV|}6q&<K
zZDDY4Yo1OuK16T%Z62rMy;Vwc`7^g$Pup&D*p+j)PxqLns-xGsBXapj+l2I{OJCQ+
zmD=82z-X0W2rk$=9Z~&UrAd&mwez9w=)}Y4t{$T~VeOmf9`8X67=n2ZZ|;}qfS=Q8
z>W18cW9)AE>$MK{$5Bt2m8L6|fsdyGQn2-+v~%(qGHuNqAAdV^-JQVd0}m<L8g)C8
zj8{)JTeL+MK~`xMPq8aIWoM{l28C=bo-`?Pi=N40T+nb}>zs_LF@$Pu(e?XhwMgUU
zo=ZQ1W_m<wCj1ddR4RH!93yv<{U#y4SN4S#0mG(nY)9?#6DkHHG#hwYJ*VP?s&JA7
zYJZZX3(z*U7bQjJuQ$?1*4$t*9q_Piqszn{EYGK#>T*-f<7=OH1pD5C7U<6816sRS
zu<^^C27RBGGDsa_ZoxD2G$%>w>I?O3(qPKd$0Jxrudhrb7)_ZbVTOS^3^B}~`tlO?
zzb&Qc;!1zt;7?uYLPGl)F7tfCHZ{G#j9s{Sw`g<t!A@Snhntzr6XjsbXh2~j0FjO|
zGZiYz3#TS?RaF6cBxbl3wOx20b0lOWa`PO;R-Wr@A`>Tb*Xv@DjS;%zLd=ht2p?fW
zE$Mw#ZEw2Gc#?U@(WcI*vU05O#$D=?*cA)Vw8pA>BvQ6dXGYak3y{+mtYQWw^e8fD
zVpr2Crf{HOg!r&68528vmX7IYMd5fU<-fneemX*4|FaQ}X1lD*`(A~)&4|I|4#}8P
zjxc!nfH{L2CdwypwZ>E9AlNNrrD;)o2~J=>?4+|I_YmJn0f1=W(cj*gzuWiti&Rct
zIU$+Od3d2)HZ?B?)07WhW?(J8d6{y<sE0<mr3cQheujUpY{rmv#mbH$lo!!umkDl)
zE~pPiAiKRh-vupa#P`9s0;aWT*~N9r{3~xZOSvChBoapv*Y~}PwgW?>EuqHypy$dR
z1@|QdG4Zbq#J51!OcyDNHTknzHg6F~S0N7p${dr!Pw4y-&2&Cr&p0E1<R`ACD~fFe
zE_cLCgLh|C$JyGuM5xmE3KvcvObdF|J;a$GM{67y;6Dn)4HusHs^FlLd)i{r<d0P|
zZLf&NC}^!Dy0e5qzH}2ASbgWuUqU94>A9>Hljd?c5>11|{_O!O)#gk2&FeD58;QQ4
z0d-I0xROEFEa`&R0;!Iwi^Tl2J>=_x{Il}(o00u?T7`hT@$p8Q_FX1h)EGgW!9d=q
zNxV7WM?kK-m?f~>eJ=^n2ax@6Ygmr`{<=*T&#98~&_=@)D%{vxHtH~PQ-J@lsS@Vr
zr!{f!>|zI=V&t^n6j?jN*O?+e>(r1*jhEo~8zplTh-4U*cJHo!Bz2>x<9O;2WQT$>
zI1ao$ku3c}n@W^)vg}yHQ)cH(pdh^{N03Vwm~cK@&f)DSKcYCgnarU6PCiLImv8OR
z)y6baAeM`ZO$<ROQI!62fCH>hFAOf`Fza9V9b+264s}?1u*OxbP$Rn-`Ndu_=rH3p
zJUlKh2S-Jxn<iRe%E*<TKMP>7S4JCwDv#wC*>l`0kBw-d>?(;zr%qRY(y8F;iq+hv
zdu|>z5PCj@a20m?Q@$NFr*Lw+m=K!LjV?>wNg+dGu%%^BcC&d!(4RO8Dj6y#J=IUL
z>#$d&l!Wij|0@^rp=9}sD?gS?txR7acD1JXU^1gp2D+0WC}@IlhHEG!QOllOLFVyB
zRCL>_f(_er4EC{-gjlMa#xdIgm`ku9!BDWUgx2y+S+8?Px40)0o}Lwq3FQ&&V~p~`
zTyEc>+uo9f)@Y*(yy8IyIS0lpq4Q~$vUM2iSNf3?PmxdzRAh8bgqM=hU{FSaer%kv
zC*e?dybiW{;Zo5IG!ZH8fs)Z(VE8b^wXQ}L;`(gQwNFBeh>;e}H#qCQhpG2~LmAVq
z_a!nJp9IkIfXSWv0)^p4X0hrqgW7w$=6D4L9`W$SbY86|-*g{jI)h_XF!<@^%+&2$
zoj3NzC+@|mPf95SBA`}NuaNz?c;t6Y*m~IW`)%)VaB$_VXjUtjPiJ&#0L_zXbR_pc
znK7Iw+hP~z@<hzqcF~b$ar}{Q@>NJ&WauV3lu?6v4*kQlAKVhBrAhq@(NygN+$Fc=
z84G#0ekOn?mzT23osAJplFf&$#AGdDW?ibuMt|>QD_gnX^$AnbhZ|Va5Y$Z~fNe)_
z53w1A7nBkVCn|~Ey%1~9<`XTqLpCTeSVwgxXX?ThU+HWuh|my#c<>_iR-PCPXe9d7
zbWS?PMn3XxWQqm4`7!s=VQr?1Uc^URt*Y*feYJ`AQl#V~m#9|#BKfb--{gb#v5j_w
z>uJ(DgEzFRYf=-k{)F7JnliHAx>}Q-mo*%hve$=+bU)MagEM4(l5dW*OvjWvs?7-<
z=;f|-YGi?vk@tyYj?x<Ntn`zG?U6PXK6{WqDNf8O>>L^5$wtgVHfqBsAo?As*d5?V
zR{Eo#B~ZB~s#NyEj(zTdN9z1YD{SyUbHbS0Bz?-1RO|y$_Gi$#HDqH0!9ZUdc@eBB
z8<&Z0<9-m8`1o--3awGkz4ZJCoHOS%?fqY)Nxs)HY*j{1flfa$TFlzgo2&c1gl0K{
zI7@|tah{rKe5(AmpzfyfdDEDJF*34tR%^@lzHY9TmU*pwBWS@zL2D2=!nL=}EQS#v
z+}hxDNtm~+WDzUVy=L(oaOKH~T=iN*V<qv^85-xAx)6CUM(mMnR@BO^ytY402FV_*
zrKQArMT@oPuaa`TT;r{uIIjq-ol&i7=@xnhW+HelPy|s(rZbCClFu1%v$@35r%OUI
zu95chZegMqsA4*Uc#@k@4jpjgFHKCBz=l*>amB~Wyy~j^42GDe%K6Z-hSU{l8cQ-G
zf5r8E@AI6D`h`5Ln5rc)9D312JPi`6p~ARafHSBe-;C0(*FS9#aSWC9E=`!DtE6iy
z2*r;IdIG3??<JZLjE<}14hgFPL6;P0>x#U9*$D{oj2P9RU@A>XRT|&GN#Oh5a|pVD
z$iKgD{!RsrG>S;88n<o&Hz6%~fl$gm!-pSnsz)B}q~(hHyZoNPN2Ed9cuMzviTktp
zn4G2il2fU^gtDk>!VO6b1#yC2ainHeSU$ZwFmp;Us$({mmu$)0?Y+yWT%t|xPp9=E
z4aY5*nd_<BhQaDSx4mn4{^{Yw2+^=1s@-H(o{<Cy32*>U7IGyydkn$d^-eao8<mfu
zk?_+cYw$uoaBwerHx6~SoFU;TrlmfVf0^P*Y7rV=>GmTy{Ra_-Sq#S*i7>NpWix^X
zJsTB?0KEvXZ&MjG7mG42z+YzX%4r*@oy<u>k8n(NbSPnJFd@&iH6r6w_gwBKEx&v?
z4yRfWf+Q@uLbg_30JjaI4Zgl13~4T%QS@c5u3av%JqVP1S*=Wbel(*kt<j`7X=*<X
zVQAKTEbetggkMt`ry&ciV~hISME{vt4H2SlzqPw8OC>S=4t#k0ppSHMGqJKE0^@A@
zBc9i65}{mXe88dPmorYv><+*$MQM1&Zxz=(GmCA=(4fY${GZLD_?90NajUb6<i?H0
zb2)ICLR{A5mb3&HU7YGr40>=F8f8K{B_duTS4T?_=Ah|tJ`lPEk#JE|q@R&0c<B@N
zbfk`!db%l_mE4Tf((d6+DG@I-o_Sxg);fT9eACF^=cmXQ&?YrG?6%;#CElP(C?_Ry
z=%pCiV!IAfAiqFZ8<>KpG3_q$%^~VjTT}EJu&$)7B#F~?z1*OLzWemld~tvca%MZa
zFC1Kx6s*%Cv10u-q7?9R6E|clt^(yE3WH3X>db<=AuZ!#r@nEUe*5q%qct4cj;1IT
zy-|M_Nvt2;Ofx;&C*odyO;PFv4M@yxkhy~ImG9ndTsaA$pL)WGs}-CAJ_>)sY?gik
z;mfuIM@=@j&3LRsI=a-o)+#e-sutGHN09ploci18BIM+{)CH!)T)mpYPFegh1+A+l
zb;$d;RwsiT@!QI%x(_!trYl8W<-P0d3vuo}2};~48su<amJh+KYPolH3e*GKJ5MEf
z=1CoMN|M{3yoOw=i|~&X=xv5MNJv)FL&_MeFhN>kjAp4mKeMwz*WGsFQmMYtg~2F?
zc{<jgm_9x$BZz!v%au!@m8Z*H81&lK;vXEzO53G9GZBx+Rt<hos6+68g8n(g3h|+c
zWBFrC0;n6aKP`VrqGf!>mTsf6lwPX4MNKkJiVId`Z=aMrs(&VWuUKnvZs>_+@MLRb
zt@V4L>SDEZi$P+o({Dw-!cU%kY1{gEN|AT!uYaF26!kp|L8Ybd9oWT%Nr<26&ru?7
zc6N5)5QDD0CCmKPG1e~;jjZ`amLv`?VpCYo$JZOdq$yJ_)GOX2ud=6*VZo9s!Vqu*
z68z1z8lmkFJp!>08ze@N8jexh@74QPv3&^oQ}DS1M}~`Ll>`vq5m#X!erlGDQSG^q
ziJWTn5-hNCGheRAybJ6uhjEc%%Le;V?B3}ILSWiSgHt+&&zu)arU2s|3N_isJ|hTC
z^btnSB3&7QVddoMM@=kD8xnPbei;1pi)=i&EL35pkSI<ZO4u9t6xLxR*&c*Dq-({y
zUX7(#!>re{d6U0!^E7BgI`=&=+g=L-921kBHpsflM^DuG@Nw^Fw)wbC1cUQpu(nt~
zDJSZ2Uka{1kPOy;?As0N0_V@Pj2p_UxGyJP^M0am5K<VV#&nv<p;azX=|vwDrMPC4
z)2PGX=ncZ)%#G8oByO7L@cXLKhO2*|08P~S3JfSSQfj9B;I(bO|0og>QP_UkNwyT`
zQN?lCr_bSrmpkT@I0iM++;g9heitzV9=k4UxG~aBNd{#&6KCrjkQGA8Veo@D%2{&K
zVU}0uovCV)S*le52H_(FB*E?`yJ_1omfe^?ybr{?&B#yiDnan?oD#(|qR?97ufIMk
z@dc3PP7d7(1)93&upu6#QyGSR*?TH=@8PC-8sjFdZtA@%CB;t7yx!08Ewa$@(g49V
z!Dx0$e;i5G<tOMiS($KcP@3y;{xVq-2#;R1ArwU}IX>UtiQ3a^@<TMCXSd>DNRI!I
za0xW4zL1Ca#IrpIvyBgR<I#R`jix^4tT?k|Y`i=^0MP@X9*yqIvWQ#2(NaohEWmm+
z^A1q%*2y+fuoY#^0!p>dS6VBwvObCEu$Oxp+sq~P)@qTWqHcogr(^P7#ASE!AaNO9
zfG|&H%srw6W*RCf+4iAbDCQ$?*Y@dAzfb;pA)W`Q;$;on-gAT5!)d-|Nk_2xn8&mg
zzXO?Ii{knvxsW!ws+eM4sVb^7<iQFKO2OM~a`1O3=B;#z*X9X>-YRFndMdC*==ewk
z{3K4W#6(nORb|xSGVllj2`R?rRG_L%GwF*DnenN;{;FEm$MbGEOzqW+K^JAZp}8dn
zzgW|!yD-!Cw08+NLLT+aDxQL&x&4UKEgR1{>I+~3wJMa^hvw5*!W2^?c^S$+`i))&
z4wS?Ga4tMlyBW;+LslnV`2;LYK({>1u1DRt{IRpv?ZeGz+#Jgy3A;vg6y<QuqwG2)
zyUVUnh{y+r3ygPF#=z}}xb7ZdaZl5iq^BmH{(8cEZgC|e!+2DVvRqt+d?fmr(yG0o
z%}S+es<1kf(%}>+j*odb$m4m^6KeP@RZJ{6;H@bi9%>JaL!9ik8K?0eb&4Nl>wLnW
z2?ahgFmTADUc|5R<oiO2P7f^^S#Mv#p^3^&7bcc!>~3;F-YyekKsKqE;>%et!Pr-0
zBr6}g1}9y7BUur>Qk3&dk=zwwt6lv{G}6Y?fNa~YdC^DJ;P->fT3hd89ul8Mqe9uR
zVE!}r$ENj3c7%BJBn;{J{LM@{>Y;K!!*PF}gYy@XpT9u0FfPGZ4++kC&l~NDX5M}u
z^ccY~Fswcy1&|7hDj1~x{2e)S0afap?dt2->~PJB7Y9F`{5z@2Q3Gv4ghRyq;+H05
zS@d?7SyG->pv}q&SV>&6v$)#S%5;jO(l?;L^OD?ZsATe}wNm2O028D0u(^?wWH74M
zI8Lb-Rk0ZT%mXDj36)j?j>!}KjfE)2cz5`@_dRDQB?yFD=J+3$s%>6sVlH^%w^5j4
zZ2d}pctJ<GnrksRBen7{pZ{VDmCz5~$2)Q-GroYr#<k>UAdU+BoP5O{9!4M;)pk^!
zLl{sih9e(i5akwZGc<<^>n4bz`0@B_K6avjzDS9A?ZKB;Nu9~MgrXUd;gq}dO5Vj9
z1=Ks8y%YC@Lz{vT0e(2U4LPX^%L;%xJ8TcE(|LkszD;5V3lhUI0<VPa03yzD$+c6M
z&0!V(FQ?yq)mAPk;rDdLd|f3wsW@>Jv3TFSmf|D6v##Qsu_GC0jVvh+c%&aQgx<qF
zMh~j(8%i&k<|xmnmo=8|!2Dp3l-1xTE<GVwoT(iMzw>Ok7R9KG3eBDlStxU=V#^dv
zmS`b6*R-zw0)`E*!PYMxt)euNk~{T*TdXTGu~f;oyf=xbfl9JM$&j+XR8!C8RCWD;
zM%16WG{h~yCgH1ZQL)7O<YGcu*h(_wz2Wz*a3q2&^a4K1Ea6pr<rvNjTOj%Fku(g-
z+<N#-whP~j^45@>o)Y4~)5ienkDpL9n%_+ecIIw#e3|O#xx3T<GO8x33Quj0bhRUW
z^oXM?EKaB#%|Y`blbYx-M1!nR{;X}^SbteN-ahOUZfqf4m1XY>zt>0rdK3j46)NjE
zO_)Upspj4JsIdC$t5kx;y|LD>BDZ3_Syai{gyD*IHg#*q3`3;i>DY`7Pe&#&gsp7a
zD1y)!4M&u!Ku8q3zSf&nlX=zHH8x`Mj~X?w?mH@raJ>i2<af~4C|M9YtDh_PU}K>N
ze5)WIztI%P=GkSbbs7NkOzXMx83^pz9zM0nF4W0OWVFqs?Ma(wWlnr!RmDwx5!#`k
z<v}73ZJVt}XUkCw4#3K*5Rw{8INjk9Yt>KKJtN~bSIDygC-eCp5}`Fv_no0YDQzRS
zKbq0o$||c&dD4HOEC_pamDH=g36Z@xT-P?OH*i9x`d4@)LIc-0iu@UrW)WB28EtlV
z8XJi5tTap4M|x%-^9yx<-Zlq)$n}i&jA2=c#%hDyQ+%X#pR{P0xF*QZ*+>FU5MiX?
zOXD{30P0=fC#ge96?f)4NPHgMWDsLeLot%kDcNHv%)@R2a?EUj#|J)(;s!$(?&Hf5
zVPDNd$5`h3Cg`BwkObHSJktUtWSL4%koi>%A}=#pM$@!d*`dO_8h&Vg0j;yb4Ix(e
zffSwTRfF@+`VAI*V%NCbHK*;C$(D_6Sy}Gr(FNJh&=8CxD3lKaTE0TigsGDO3oOi`
z)DBEm>=~nB19+%ANGlVZ8JGIV9ERs>yfW1a*x<jKGss<9sk4)BbydyTajJ<|*xb!K
zR^gm!Oz;>}a|KbTH#cza_Ey;tynE{rPtXa=mo}c;4KAXZ_`Tw^CEx*SfeQpCJQs7m
zAB=3SSW5)j5oYu^v%fqP2c^w40T4m0z?exK1Cco+bBnAFmNv}Y;9FB(nz9goxNcIq
zn)p#eBdw@F0-vdbPVz#Uwa)ON@2xREW)p1c6pHO;B2M=>gfj}XT{#KSWK3M-@G~Hh
zY%*%osNL0F6jC3udl&_qAaP(~LgBIPkHzVz(0Uf~b+gnn&yl<^U<jRd!YE2tzO;s;
z9~BXVlx`!Qe#bM>mp%}oWNLqaL7NVf9?%r$5mC4kA50<Q{n5~t?P0>Y2Vc2$#oF)7
ztg2qp$Tc}?C|r(HG^*6B(G}VDagBR5Bl6uw(A_K+MdLbTQFxGjqIhSNeN7`z)I@9~
zRy*7KaK-XkVKZWDH)x(Xl_bZu{FHH)yxakL=J%_C31(ulk{o&2`<Z!|8C2xGl5<a!
z<~S5|n#$^&-f88<s~A^1-NRo(9c>9Z7Jo#g&q9@QfVqg@1T9Ko@~->;iWD(y=!Uks
za*Ut9go2cEF*Z;;6B?1%l&9W>_Q1!EfgX2Mu*Ma2SDx{QZr7?Cg4acN*W{5mM?z?W
zDb>Fb5v>0Z!Z*-|{8C!OF-8+Aai@zq(EMe;*Lqvn^>EASU_ujU9yU~0l2qj6Oe8#}
z=J0i;GZ9ae#Q{+X0!pZF(TWAXV9mnzac62YF-L!NK+SV!>%J>Lb;IT+5dwzEvlu@J
zQw|Xh&)j?RUUnrr+ZLd;Tl5PRo%l!}nQjSe&#~V9Gc$#J7|dXD7cbSBcjm%l58-8~
z%9iIuv!zof%YNLDEmB7zTG;1c+N4#H;)(|`HTiJ<n3+~0!l*v~?|x^8xxOlPB|1-h
zOEvW~I_+H%ULhbsk>A(831w?nL4}sfEMLKAg%TQF9z`D?wC$hzFG@jyu`x4pf?gh-
zh@GUy9q%Sm&Tcd=9fb<bCv`QDuJg@VKu{FqfNVPQxshC>31vx5pguVKer7fv-h9~b
zXd!pC@bgTt*F*!Z$QQxh>?8j4EIxD%tdKze8AYKZ0`BvniTj+z!S;K51Mv^t40a2<
zBep}pl9O7d?#=3(T`|RX&`R?+4B+jYlGOC@cgF@}R&$7|iB7f`##-7qK_$yue(<XB
zjiMObmZVdg`8RuU7U^JC%W#Y7O#1H>*<c<M_)zv5hvuN%9LsU|1;%n?$$wsl0w)ON
zzkjbH&w2!)IYzQW{kFX&<fog@vBp|Z6srddAT6eR<fO$VV;OoT>bf(uGrl6fSVEsN
z(D9HhUM5>S_?~pH5`#T>Cle7xnY@!)l){LZJ+tbd@*9y_ieyfUt>t)R(37JPf=5|u
zBYMBSfL|;HS~!3j@;4~9%;E0GPK%&7p{MuqAQ$GCIGQzH@cz@Fltm?k1q$_5rm6Aj
zb~4`$f^T1fZFE$5=p>KXjZSY7kg&rmr!C8ls&hq7_-ncDtmqOyp+m7&yo)VW0ejkD
zWI?Y;VSAGMJYl{>VXzmOeo8N97M9yA@|s8pb5WDSSFRnXy2gATFKm1jWgOzv!)RDb
z4y^WH2iE2Lhbs2-M7*`giYExAE(O1t-Z!mxO785HU#nENr~1%^u%EF$?|&Pi<bp|8
zMFb>(YzsjVn6`UyCjHcn3fIuCN&&wb2KsoT&(<ENQwAdS>r)xG?@eo=>j0)TIl9HF
zGg|5lb671C*M#m-bx$l=JS0MjHi8j&M0uM_R42&yw@DKZay_{0!d!+r-Hcu68oa5D
zKoGGEoCiZSU7>#nc~uzynau3S*PED}0X6=wozw#OC%#PSi{B^C9Hk_3I|Y__DRca)
z2Latv#DxhbwG!dL5U!T9xk4kp(DEm(XuRn3nZ&71@Z#+J3zK&D42=(Aoi4DQ^=`et
zSo^1S4aH)jcURH4PVlsV91&GreNSXFupL5{FeEK9I7kyuzu4N)>dWPmLs}zZw3<c5
z$HE80qdyminASln4&?&g*(Eh1?M}3HXwYVo`q_1kll2MZ<n0C6DMj^5j$m}3eU;75
z5>}m^a<Y+mu0|^wy-|6%Gu&u$*LSPYAZ90f!7Esp=S%@>zc0u|0+Mh?G@rRY41;l}
zQV@M+h#O|u?12lzODG*7UxEMd<&-}>quBBLORz~2eQJbrpTeTpoo<C!fRPXSLtM#d
zxMi%+4?TX13-V8oLb^?&N8Tdg^^?tFT7|gS5}%n67>u6M^;ZXV`Gg73BWv>3+GL8b
z>dPR@zMGSBNj2SJ+qO)TUei)naHbpVOp`4%(#{!^1_KQ;D(r=Cq6YCJ1jFLe@n#DH
z7Y1?HNSrDbX19OLn6nG}vLIJm%UC}(Q)Ovi!}CbOaJ;kY?=;Tg7!Rtyz5LOm^5TR)
z?0+ey^&r9V=-gYnq^%Djy`x;G@MNv<uKpV}gm=vVX=@65kax!!<HT8$M-dRKi{Ogx
z(?gl<$yxTn;DN;Z?Mth(yT%KnMXELExEzt5t9(I9U%~ADM+6m;cBXbd=siCFn_48&
z5@<~=pG#>EHjruThzEgwUDk4k*g!nL(do<Oc2F`-8(0G#NXLF^EAzq45Q7>m%Rk5v
zwP*m(l#Z+j#79S&6aPRB@dD?o#8VSgr@-YK0!%T}l-oHD<D2WfPsSKO3x`cYr(=1#
z3ge---z7l-GEKylI+GMk3K|o%b@{YM+z^cn_wM!Evlz|MH5SC9|8i2T%VtaiY3hLJ
zznbw;=E*~lb+=e={16_+j5cGQSnydT-k+xRjbt1Vu_#J5A2UKc6A^OFimNqfSTS~?
zzP4qVF$k)Ip<dfuwhNbowdsdM%G|tM&!toWrLkmd#aEUQk`V^K?{*u}Z?Gb<_Bak-
z3~8t0N#fVg3rM6{<Npa7kRh@hpPU_zj*DM`)t=EuPZL4^fOx0WvQnqQNTus`xO{lW
z#_xMASTRh!`%4snwM{T)w|rAhb@Oriz%s1dkJu<aL9n5f=;u`WS*5NFjcp7%*WSC7
z?|gDCODUgklyLPFad*hj{Q)P4Z5{NexVorfq>Cz;jsaLgdd0@{NpJ=EMCpU(t=NlJ
z2J0l4K8>Hr+CzoJwmL`$l#vK^>)ph}NBa=8#FT+Jw}#WSrc7%!+2stB?Ow{IYy{0>
z2|!Y#MKZ=({=D==<ZPiqiOVDcAMk9;8jG}#z&$nP8N4uI5hM&^b6HojS{_7XNYBF=
z$aizlfxyKrluxa;@SaYe{gaMGCIn0cS&h%wlVLM4yb0x<K7YbSnz^~1V0F(-lHmb!
zBR8f#7}>L1C1U2my$5s43fN`~E<}-Q`2<T%yelRe22IrPzU`c1tw$ZV?01_Y`tMv%
zCOAv?OzW<VMGow(WhFtM<HvyKRca~p3FH7Ybvce7A*)C1>C9A(3>XK!F7j?8=QOL`
zt#%a_qxWhX3#j+t<kT59wzXS!6yuznsY#zp<|eVQGuVqx3Qsw_;8}9VJ}Yv;x_#JR
zWmljhy9`%cSFU%ZO+6nPDmuf7vLV4p;t3nL#vMdmOa3-v*Q?dmNW_sepb(N-2xfNl
z1p^kFlY0y*Hlz(}>Yc#mb*<`jrzxW;8=B``U$pQ+%ok76asd+Aiw+JgLqow@hiRQl
z-uVW*aUTqko_&OXZYis8vg()ghj6P;q(cTlzsG|0AHTK8$*S4m1)^&lqziPvYZ&}F
z#b+M&lhVYVe+T6@aRX>)X@`UmMIvy)5yVZA+TC=6Q+`P(%;KwY;xQ#Tw88{O&eXxs
z#TAM3P#RhZB`l+NTQxCGZ0Ukm4tE^>%RNZQ;46Q;O&LVr!^eFjiQH<7LPVD7kSyDv
zOT6uoY#Wbxk5o&K!OA#<YOAu~wse}aX1>;4=12b3?OFM)!mLwj<c=2Glb|x~6->NC
zXG;`ry+U-NWD%9mc8~jXI@X)3nWB~SSG!jJ262MVk2P^8XzIyxfkXm%HgUhVC<n)l
zku5RdU3(Japx)ogj!%9QHKSdl*z+XDS8GyWZn@gqQfYET#ni;B<A#E@3)S#w;n_Gc
z6<VB|2RiC6QAce2e9-wSLEF+pgsd-OL7>fyW;8)6cEb=)>Z%~UPvu6vH*<P{)Kdf%
z0-x*Sp4%`YA5KYMpgfA<<}(M;-);B>R3yY}Ux?hU;<JLXKEBVabn%ES>HCi7^L+D;
z7oo@)Qvt$|=un<oF+%rTeEX^OEln1wHk(sJ%_Ax5G_rR<Su0tB_i;}wv7qG4bqqS~
zH7?oMeyB?6Ss7X%Jkk$|4aw+b6%l~3L@zmv<_Q1BQ;si5aL~|7?Uz#ojK{-|8bnd~
z8L4BcjJFusn=VHnGp40Zeg1^)>+f@4`X6zIb;Mo@lb{ZuYr7s15<(UFOPd20@@)$w
zaEb1!JNP_Tj4VcKz$!a6@leC+S*NMuv-dnHoUAQ~X~SXsyq8?@YmeOe_^Y!efu5W)
zju}?_!Pt0T-RedcR?FW9kx6>!TD*REd3oJXa#9Uk-K0rt^XlA8b49>&k<Qezp}3QI
z{fEEys947ESne2)g3Q+PmCT|_({?`8<ATWq!q@lRj|O6LheOj6%UWE_>5Q@K)l;dt
zW6`Yq2CS}4O-Zz1j?1A}0nN^6r_y7|6JkDCTR(|0?(fKT+`#ehtUW=giSQGaRI^5`
zIKAkhz2WS)T9~SGMqnIbyVw&|<%&p*nD>~;#omB0oq{vpPkXcqFtv+}3cRbhS4{Di
z@f9}2P4jCu$t~z!6zzmVaBFAeBB}2h&1m1J1Meh1@-R<DyLjwETfj)>jrICfuY<HR
z*3FS~72}ybzgygg^>p?<LQ8|^{g@QLr!!q9#f2+k^<~&)-x(}id&a#8c~5VwX7DK(
zR$U}K$D79rqoY<Y^fHgprQYz1&dP2|`QVOq9ym@@@r1O1n9w2D%$=qbdUp+mJO7ck
z7dTl!qQVUx(ln(_BF<<_vUhg4^A`<;&{<i$(Rgu`eXkS&i9?3H{tEPpJH;(Yq+eQ1
z+D>M?9@sJ6#|J;yH(j(4xXjd2r@@IB#P2$rtlz7CYLlt6lQ88}v7nB?<B?+6S*TAN
zB4wMBrQ5fOrmyM=1Xn>MvgN`E2?Y-zyKl$yNwfWd_rcLCXg2MxYiM!Dyo^nt%+#<M
z?P{<kyQQXOmCsG@q6Jr-83)%T0Jmp?#R(MGvKw7-<{rpVrup61Te_iCttHfX{a)Z~
z4efkJjSc03Z4ca1{3n+<{d4Cma*-<acYs`SbS=6>%(1JhGZpF+7y&}G1YVKc=gO+a
zEC?>$Vzc~JofTpSdIo2_Lqo0;xi*~il|!7R$Y~!@ZOtM?dI~36QO~UtPCcE`kSP7D
zXiGU=^?6<#y`8MtpUm-}uh$eRgw!g-%L75dnO-SB<}QBaA&Ab`TvW*j`-&y(Z1-~f
zo|7*>cJv|T&%1L|E7h_kG;0wGLyKZggN`uxiAcyOU6yw%Dix&Q#G|mIzBVgNsPdI+
zoWdg#T)O9H%QHJDg4}ueV{?p4aAF?zeBi{8izb535v(U&!ML8V8dDQK^Lt=zTZ`_a
z&aE%wc@$(2Q<_?F9%PED&*TE=(n3Zwavq>>z8nILSemTfNHu5L(XWcqZ0APh;G^4G
zg6wvsGr>ME{{fGZKpGRFg}<l89-jeoHlx14V%!8GkM1P}d*cP;QBc^>3X#Rt)#V$j
zYXi7DZ;-AoVW!_pE(F+}fpTek&wuj^Z{O7ai(g=7VPfL^8!F)b@6Yd<--v<#I{-#6
zUd}Fv2{rguppR}w9IB~Hp6ruqA^!U(B}){rn^;mTW89jJn``$x)kBEK-@nHaP8?nB
zvhg`9W7|TO>YBQlc<>$4s=5GI?zmZ0WQ$Yfjav5^rI(};eJ2g&T<mtK;%dS-XxJ(2
zHs8EzoMKQQz-k%|nIlgjTC1E!l)bK>VJV$yxAQ8yexh#a^Sms}!D-R_;N+-`IckV8
z^^2Yu`!LAH=q_W{&~!I$xW5W5p0vlV+M|f*e6yZT*IYn6>V_>=NSx0;v4#4((;JXH
z8sB8X@PYP*_SXoXBSBuJrbcgOK2<RR`T)tH<a|tTW~s7Sm#!j(7nuj!p7n4F<-Edn
z<8fneW)+n|tz?4arLXfc$`Q>RDJ%LVE>@Nju9@g6>uqnkR`JO9H9S4q>z5ylPVYz>
zX!zr2KOBzlpFc-G9+%SibPRfxlK%Im{n?3s?HViVzo`@EH_qd4X5ueW;|(JbGj%cs
zSvok|gZ>~9Z<0LF_7xM67gd$ilBboov^8>ZQnt61x966nS2i_w`OD4*Xzm1H`*$0W
zzpxQ{W)3a@Jqy<>WWmJB4B%#A`xiYT<qWj3G#0iqw=o4U{b?oaWc)^-yqf%}zRlyU
z{?_=9APRK&XliM0@joUi&Zf5N0It89zg0f|U3r`JEA?Rtc;iC;$%(u%G5@{hKmDt?
z7&-spVcvZ4*N`GWC)2mC{*Q~d1UWg2S^z-+R+c|~$pZgXXJ+}Ur~mC)z#rfLl^o)B
zuRxfkojHI}!_rRJ&dKs`;ZH{zmL|>?POtn83;SC>{qu*Fl@;)I{!{yZd(Y1F);}8?
z8{qBkpVzl}ylHPI3+LNg;_o}o*V^At-mXl4=FG~){m1U_CvW=O{U5UEl@PL5v$K5T
z<N$9kmVfTwf5+?_z2x-AS2C6+Z=QMsoRt5~D7m}=P5%IenEwa1dgY8>3B1=p2T&OU
zEkX7GW(H<91`Ys~g|o8*592Fl^(vZ!fDRUx#!d|OAaiQ!KjSEZ>`h#ZUx~i|`)2=x
zUorm^75ppfM1illU~m3c-*2n=7lHLZjod+|W(Z6GW;O(-e;)u2c6L^FfEnN~jhXHB
zeGK^X6kzu+jfsi<)zAN_F)_a;!Q1gqJC4^x`Cl3{D<}J_tNxe9#Kgh<y0`zKalg6r
ze`(CDOl<$%9~0;6=KY5q8`mol_a7QN(|@&Pd!x?&!;X!W`_+|yw{->qU(+4*2f$RZ
z^fZ0*)f?iaY;XU%|8GA3E8C>(%wG5TEe8HXm6J0N<ow6G%&+0hfj~|!t{{Q%{{eJ@
B5IFz<

diff --git a/release/latex/graphviz-8bc6c34d442f7e613c5d327992e204083ddaf50f.pdf b/release/latex/graphviz-8bc6c34d442f7e613c5d327992e204083ddaf50f.pdf
deleted file mode 100644
index 5df3549a4a3b17a6d389dc13dc14379f8b95aebd..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 8688
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

diff --git a/release/latex/graphviz-e69f9031183bd8d3b6636722c922fcb66d4843c4.pdf b/release/latex/graphviz-e69f9031183bd8d3b6636722c922fcb66d4843c4.pdf
deleted file mode 100644
index a99166be61f6268a238ce7e5e965b6021072b306..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 12918
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

diff --git a/release/latex/newfloat.sty b/release/latex/newfloat.sty
deleted file mode 100644
index 47ac5e5..0000000
--- a/release/latex/newfloat.sty
+++ /dev/null
@@ -1,737 +0,0 @@
-%%
-%% This is file `newfloat.sty',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% newfloat.dtx  (with options: `package')
-%% 
-%% Copyright (C) 1994-2016 Axel Sommerfeldt (axel.sommerfeldt@xxxxxx)
-%% 
-%% http://sourceforge.net/projects/latex-caption/
-%% 
-%% --------------------------------------------------------------------------
-%% 
-%% This work may be distributed and/or modified under the
-%% conditions of the LaTeX Project Public License, either version 1.3
-%% of this license or (at your option) any later version.
-%% The latest version of this license is in
-%%   http://www.latex-project.org/lppl.txt
-%% and version 1.3 or later is part of all distributions of LaTeX
-%% version 2003/12/01 or later.
-%% 
-%% This work has the LPPL maintenance status "maintained".
-%% 
-%% This Current Maintainer of this work is Axel Sommerfeldt.
-%% 
-%% This work consists of the files
-%%   CHANGELOG, README, SUMMARY, caption.ins,
-%%   caption.dtx, caption2.dtx, caption3.dtx,
-%%   bicaption.dtx, ltcaption.dtx, subcaption.dtx,
-%%   newfloat.dtx, and totalcount.dtx
-%% the derived files
-%%   caption.sty, caption2.sty, caption3.sty,
-%%   bicaption.sty, ltcaption.sty, subcaption.sty,
-%%   newfloat.sty, and totalcount.sty
-%% and the user manuals
-%%   caption-deu.tex, caption-eng.tex, and caption-rus.tex.
-%% 
-\NeedsTeXFormat{LaTeX2e}[1994/12/01]
-\def\caption@tempa$Id: #1 #2 #3-#4-#5 #6${%
-  \def\caption@tempa{#3/#4/#5 }\def\caption@tempb{#2 }}
-\caption@tempa $Id: newfloat.dtx 109 2015-09-17 09:29:07Z sommerfeldt $
-\ProvidesPackage{newfloat}[\caption@tempa v1.1-\caption@tempb Defining new floating environments (AR)]
-\newcommand*\newfloat@Info[1]{%
-  \PackageInfo{newfloat}{#1}}
-\newcommand*\newfloat@InfoNoLine[1]{%
-  \newfloat@Info{#1\@gobble}}
-\newcommand*\newfloat@Error[1]{%
-  \PackageError{newfloat}{#1}\newfloat@eh}
-\newcommand*\newfloat@eh{%
-  If you do not understand this error, please take a closer look\MessageBreak
-  at the documentation of the `newfloat' package.\MessageBreak\@ehc}
-\RequirePackage{keyval}[1997/11/10]
-\newcommand*\newfloat@def[2]{%
-  \newfloat@ifundefined{#1}{%
-    \@namedef{#1}{#2}}}
-\newcommand*\newfloat@let[2]{%
-  \newfloat@ifundefined{#1}{%
-    \expandafter\let\csname #1\endcsname#2}}
-\newcommand*\newfloat@ifundefined[2]{%
-  \@ifundefined{#1}{#2}{%
-    \newfloat@Info{%
-      \expandafter\string\csname#1\endcsname\space is already defined}}}
-\newcommand*\DeclareFloatingEnvironment{%
-  \@testopt\@DeclareFloatingEnvironment{}}
-\@onlypreamble\DeclareFloatingEnvironment
-\def\@DeclareFloatingEnvironment[#1]#2{%
-  \newfloat@Info{New float `#2' with options `#1'}%
-  \newfloat@ifundefined{c@#2}{\newcounter{#2}}%
-  \ifdefined\c@float@type % from float package
-    \expandafter\edef\csname ftype@#2\endcsname{\the\value{float@type}}%
-    \addtocounter{float@type}{\value{float@type}}%
-  \else\ifdefined\c@newflo@tctr % from memoir document class
-    \expandafter\edef\csname ftype@#2\endcsname{\the\c@newflo@tctr}%
-    \advance\c@newflo@tctr \c@newflo@tctr
-  \else
-    \ifdefined\newfloat@ftype \else
-      \newcount\newfloat@ftype
-      \newfloat@ftype=8\relax
-    \fi
-    \expandafter\xdef\csname ftype@#2\endcsname{\the\newfloat@ftype}%
-    \advance\newfloat@ftype\newfloat@ftype
-  \fi\fi
-  \newfloat@Info{float type `#2'=\@nameuse{ftype@#2}}%
-  \newfloat@def{fnum@#2}%
-   {\@nameuse{#2name}\nobreakspace\@nameuse{the#2}\@nameuse{autodot}}%
-  \newfloat@capitalize\newfloat@Type{#2}%
-  \newfloat@let{#2name}{\newfloat@Type}%
-  \newfloat@def{fleg#2}{\@nameuse{#2name}}% legend naming (memoir)
-  \newfloat@ifundefined{flegtoc#2}{\@namedef{flegtoc#2}##1{}}%
-  \ifcsname @tufte@float\endcsname
-    \newenvironment{#2}[1][htbp]%
-      {\begin{@tufte@float}[##1]{#2}{}}%
-      {\end{@tufte@float}}%
-    \newenvironment{#2*}[1][htbp]%
-      {\begin{@tufte@float}[##1]{#2}{star}}%
-      {\end{@tufte@float}}%
-  \else
-    \newenvironment{#2}{\@float{#2}}{\end@float}%
-    \newenvironment{#2*}{\@dblfloat{#2}}{\end@dblfloat}%
-  \fi
-  \newfloat@def{listof#2}{\newfloat@listof{#2}}%
-  \newfloat@def{listof#2s}{\@nameuse{listof#2}}%
-  \newfloat@def{listof#2es}{\@nameuse{listof#2s}}%
-  \newfloat@def{newfloat@listof#2@hook}{}%
-  \ifdefined\l@figure
-    \newfloat@let{l@#2}{\l@figure}%
-  \else
-    \newfloat@def{l@#2}{\@dottedtocline{1}{1.5em}{2.3em}}%
-  \fi
-  \edef\newfloat@tempa{List of \newfloat@Type s}%
-  \newfloat@let{list#2name}{\newfloat@tempa}%
-  \expandafter\let\csname fst@#2\endcsname\@undefined
-  \newfloat@ifundefined{fps@#2}{\newfloat@setplacement{#2}{tbp}}%
-  \newfloat@ifundefined{ext@#2}{\newfloat@setfileext{#2}{lo#2}}%
-  \newfloat@setoptions*{#2}{#1}%
-  \@expandtwoargs\newfloat@announce{#2}{\@nameuse{ext@#2}}%
-  \@ifnextchar[\newfloat@DFE@setname\relax}
-\@onlypreamble\@DeclareFloatingEnvironment
-\def\newfloat@DFE@setname[#1]{%
-  \KV@@newfloat@name{#1}%
-  \@ifnextchar[\newfloat@DFE@setlistname\relax}
-\@onlypreamble\newfloat@DFE@setname
-\def\newfloat@DFE@setlistname[#1]{%
-  \KV@@newfloat@listname{#1}}
-\@onlypreamble\newfloat@DFE@setlistname
-\newcommand*\newfloat@capitalize[2]{%
-  \edef\newfloat@tempa{\gdef\noexpand#1{\@car#2\@nil}}%
-  \uppercase\expandafter{\newfloat@tempa}%
-  \edef\newfloat@tempa{%
-    \noexpand\g@addto@macro\noexpand#1{\@cdr#2\@nil}}%
-  \newfloat@tempa}
-\newcommand*\newfloat@listof[1]{%
-  \@expandtwoargs\newfloat@list@of{#1}{\@nameuse{ext@#1}}}
-\newcommand*\newfloat@list@of[2]{%
-  \begingroup
-    \expandafter\let\expandafter\listfigurename\csname list#1name\endcsname
-    \def\ext@figure{#2}%
-    \let\newfloat@starttoc\@starttoc
-    \def\@starttoc##1{\newfloat@starttoc{#2}}%
-    \let\newfloat@listoftoc\listoftoc
-    \def\listoftoc##1{\newfloat@listoftoc{#2}}%
-    \@nameuse{newfloat@listof#1@hook}%
-    \listoffigures
-  \endgroup}
-\newcommand*\newfloat@setoptions{%
-  \@ifstar
-    {\newfloat@@setoptions\@firstofone}%
-    {\newfloat@@setoptions\@gobble}}
-\newcommand*\newfloat@@setoptions[3]{%
-  \let\newfloat@within@value\@undefined
-  \let\newfloat@chapterlistsgaps@value\@undefined
-  #1{\KV@@newfloat@within\newfloat@within@default}% set default value for new floats
-  \def\newfloat@type{#2}%
-  \setkeys{@newfloat}{#3}%
-  \ifx\newfloat@within@value\@undefined \else
-    \newfloat@setoption{within}\newfloat@within@value
-  \fi
-  \ifx\newfloat@chapterlistsgaps@value\@undefined \else
-    \newfloat@setoption{chapterlistsgaps}\newfloat@chapterlistsgaps@value
-  \fi}
-\newcommand*\newfloat@within@default{%
-  \ifcsname c@chapter\endcsname chapter\else none\fi}
-\@onlypreamble\newfloat@within@default
-\newcommand*\newfloat@setoption[1]{%
-  \edef\caption@tempa{\noexpand\@nameuse{newfloat@set#1}{\newfloat@type}}%
-  \caption@tempa}
-\newcommand*\newfloat@setfileext[2]{%
-  \@namedef{ext@#1}{#2}}
-\define@key{@newfloat}{fileext}{%
-  \newfloat@setoption{fileext}{#1}}
-\newcommand*\newfloat@setlistname[2]{%
-  \@namedef{list#1name}{#2}}
-\define@key{@newfloat}{listname}{%
-  \newfloat@setoption{listname}{#1}}
-\newcommand*\newfloat@setname[2]{%
-  \newfloat@@setname{#1}{#2}%
-  \begingroup
-    \ifcsname languagename\endcsname
-      \ifcsname captions\languagename\endcsname
-        \expandafter\g@addto@macro\csname captions\languagename\endcsname
-          {\newfloat@@setname{#1}{#2}}%
-      \fi
-    \fi
-  \endgroup}
-%%\AtBeginDocument{\let\newfloat@setname\newfloat@@setname}
-\newcommand*\newfloat@@setname[2]{%
-  \@namedef{#1name}{#2}}
-\define@key{@newfloat}{name}{%
-  \newfloat@setoption{name}{#1}}
-\newcommand*\newfloat@setplacement[2]{%
-  \@namedef{fps@#1}{#2}}
-\define@key{@newfloat}{placement}{%
-  \newfloat@setoption{placement}{#1}}
-\newcommand*\newfloat@setwithin[2]{%
-  \ifcsname c@chapter\endcsname
-    \@removefromreset{#1}{chapter}%
-  \fi
-  \@removefromreset{#1}{section}%
-  \edef\@tempa{#2}%
-  \ifx\@tempa\@empty
-    \def\@tempa{none}%
-  \fi
-  \def\@tempb{none}%
-  \ifx\@tempa\@tempb
-    \ifcsname c@chapter\endcsname
-      \@chapterlistsgap@off{#1}%
-    \fi
-    \newfloat@@setwithin{#1}{}{}%
-  \else
-    \def\@tempb{chapter}%
-    \ifx\@tempa\@tempb
-      \@addtoreset{#1}{chapter}%
-      \@chapterlistsgap@on{#1}%
-      \newfloat@@setwithin{#1}{\ifnum\c@chapter>\z@ \thechapter.\fi}{\theHchapter.}%
-    \else
-      \def\@tempb{section}%
-      \ifx\@tempa\@tempb
-        \@addtoreset{#1}{section}%
-        \ifcsname c@chapter\endcsname
-          \@addtoreset{#1}{chapter}%
-          \@chapterlistsgap@on{#1}%
-          \newfloat@@setwithin{#1}{\thesection.}{\theHsection.}%
-        \else
-          \newfloat@@setwithin{#1}{\ifnum\c@section>\z@ \thesection.\fi}{\theHsection.}%
-        \fi
-      \else
-        \newfloat@Error{Invalid value `#2' for option `within'}%
-      \fi
-    \fi
-  \fi}
-\newcommand*\newfloat@@setwithin[3]{%
-  \global\@namedef{the#1}{#2\arabic{#1}}%
-  \global\@namedef{theH#1}{#3\arabic{#1}}}
-\define@key{@newfloat}{within}{%
-  \def\newfloat@within@value{#1}}
-\newcommand*\newfloat@setwithout[1]{%
-  \newfloat@setwithin{#1}{none}}
-\define@key{@newfloat}{without}[]{%
-  \def\newfloat@within@value{none}}
-\newcommand*\newfloat@setchapterlistsgaps[2]{%
-  \edef\@tempa{#2}%
-  \def\@tempb{off}%
-  \ifx\@tempa\@tempb
-    \@chapterlistsgap@off{#1}%
-  \else
-    \def\@tempb{on}%
-    \ifx\@tempa\@tempb
-      \@chapterlistsgap@on{#1}%
-    \else
-      \newfloat@Error{Invalid value `#2' for option `chapterlistsgaps'}%
-    \fi
-  \fi}
-\define@key{@newfloat}{chapterlistsgaps}{%
-  \def\newfloat@chapterlistsgaps@value{#1}}
-\providecommand*\@removefromreset[2]{{%
-  \expandafter\let\csname c@#1\endcsname\@removefromreset
-  \def\@elt##1{%
-    \expandafter\ifx\csname c@##1\endcsname\@removefromreset
-    \else
-      \noexpand\@elt{##1}%
-    \fi}%
-  \expandafter\xdef\csname cl@#2\endcsname{%
-    \csname cl@#2\endcsname}}}
-\newcommand*\newfloat@announce[2]{%
-  \@cons\newfloat@list{{#1}}%
-  \@cons\newfloat@@list{{#1}}%
-  \newfloat@ifundefined{newfloat@ext@#2}{%
-    \@namedef{newfloat@ext@#2}{#1}%
-    \ifcsname c@lofdepth\endcsname
-      \newfloat@ifundefined{c@#2depth}{%
-        \newcounter{#2depth}%
-        \setcounter{#2depth}{1}}%
-    \fi
-    \ifcsname addtotoclist\endcsname
-      \addtotoclist[float]{#2}%
-      \newfloat@def{listof#2name}{\@nameuse{list#1name}}%
-    \fi
-  }%
-  \ifcsname contentsuse\endcsname
-    \contentsuse{#1}{#2}%
-  \fi
-  \newfloat@hook{#1}}
-\@onlypreamble\newfloat@announce
-\newcommand*\newfloat@@list{}
-\newcommand*\SetupFloatingEnvironment[1]{%
-  \newfloat@addtolist{#1}%
-  \newfloat@setoptions{#1}}
-\newcommand\ForEachFloatingEnvironment{%
-  \@ifstar
-    {\@ForEachFloatingEnvironment\@gobble}%
-    {\@ForEachFloatingEnvironment\@iden}}
-\newcommand\@ForEachFloatingEnvironment[2]{%
-  \def\@elt##1{#2}%
-  \newfloat@list
-  \let\@elt\relax
-  #1{\newfloat@addtohook{#2}}}
-\providecommand\newfloat@addtohook[1]{%
-  \toks@=\expandafter{\newfloat@hook{##1}#1}%
-  \edef\@tempa{\def\noexpand\newfloat@hook####1{\the\toks@}}%
-  \@tempa}
-\providecommand*\newfloat@hook[1]{}
-\newcommand\PrepareListOf[1]{%
-  \expandafter\g@addto@macro\csname newfloat@listof#1@hook\endcsname}
-\@onlypreamble\PrepareListOf
-\newcommand*\newfloat@list{}
-\newcommand*\newfloat@addtolist[1]{%
-  \newfloat@ifinlist{#1}{}{%
-    \ifcsname ext@#1\endcsname
-      \@cons\newfloat@list{{#1}}%
-      \@namedef{newfloat@ext@\@nameuse{ext@#1}}{#1}%
-      \newfloat@let{@ifchapterlistsgap@#1}{\@iden}%
-    \else
-      \newfloat@Error{`#1' does not seem to be a floating environment}%
-    \fi}}
-\newcommand*\newfloat@ifinlist[1]{%
-  \let\next\@secondoftwo
-  \begingroup
-    \expandafter\let\csname c@#1\endcsname\newfloat@ifinlist
-    \def\@elt##1{%
-      \expandafter\ifx\csname c@##1\endcsname\newfloat@ifinlist
-        \global\let\next\@firstoftwo
-      \fi}%
-    \newfloat@list
-  \endgroup
-  \next}
-\ifcsname ext@figure\endcsname
-  \newfloat@addtolist{figure}
-\fi
-\ifcsname ext@table\endcsname
-  \newfloat@addtolist{table}
-\fi
-\ifcsname @chapter\endcsname
-  \providecommand*\@chapterlistsgap{10\p@}%
-  \providecommand*\@addchapterlistsgap[2]{%
-    \@nameuse{@ifchapterlistsgap@#1}{% if switched on
-      \@@addchapterlistsgap{#1}{#2}}}
-  \providecommand*\@@addchapterlistsgap[2]{%
-    \@ifundefined{@addchapterlistsgap@#2}{% only once per extension
-      \@namedef{@addchapterlistsgap@#2}{#1}%
-      \@@@addchapterlistsgap{#2}}{}}
-  \providecommand*\@@@addchapterlistsgap[1]{%
-    \ifdim \@chapterlistsgap>\z@
-      \addtocontents{#1}{\protect\addvspace{\@chapterlistsgap}}%
-    \fi}
-  \providecommand*\@addchapterlistsgaps{%
-    \begingroup
-      \def\@elt##1{%
-        \@expandtwoargs\@addchapterlistsgap{##1}{\@nameuse{ext@##1}}}%
-      \newfloat@list
-    \endgroup}
-  \providecommand*\@chapterlistsgap@off[1]{%
-    \expandafter\let\csname @ifchapterlistsgap@#1\endcsname\@gobble
-    \ifcsname unsettoc\endcsname
-      \@expandtwoargs\unsettoc{\@nameuse{ext@#1}}{chapteratlist}%
-    \fi}
-  \providecommand*\@chapterlistsgap@on[1]{%
-    \expandafter\let\csname @ifchapterlistsgap@#1\endcsname\@iden
-    \ifcsname setuptoc\endcsname
-      \@expandtwoargs\setuptoc{\@nameuse{ext@#1}}{chapteratlist}%
-    \fi}
-\fi
-\define@key{newfloat}{chapterlistsgap}{%
-  \renewcommand*\@chapterlistsgap{#1}}
-\define@key{newfloat}{within}{%
-  \def\newfloat@within@default{#1}% set new default value
-  \def\@elt##1{\newfloat@setwithin{##1}{#1}}%
-  \newfloat@list
-  \let\@elt\relax}
-\define@key{newfloat}{without}[]{%
-  \KV@newfloat@within{none}}
-\def\@elt#1{%
-  \define@key{newfloat}{#1name}{%
-    \newfloat@setname{#1}{##1}}%
-  \define@key{newfloat}{list#1name}{%
-    \newfloat@setname{list#1}{##1}}%
-  \define@key{newfloat}{#1within}{%
-    \newfloat@setwithin{#1}{##1}}%
-  \define@key{newfloat}{#1without}[]{%
-    \newfloat@setwithout{#1}}%
-}%
-\newfloat@list
-\let\@elt\relax
-\define@key{newfloat}{planb}[true]{%
-  \def\@tempa{#1}%
-  \def\@tempb{false}%
-  \ifx\@tempa\@tempb
-    \let\newfloat@ifplanb\@gobble
-  \else
-    \def\@tempb{true}%
-    \ifx\@tempa\@tempb
-      \let\newfloat@ifplanb\@iden
-    \else
-      \newfloat@Error{Invalid value `#1' for option `planb'}%
-    \fi
-  \fi}
-\define@key{newfloat}{planb-fileext}{%
-  \newfloat@Info{Setting Plan B file extension to `#1'}
-  \xdef\newfloat@addtocontents@ext{#1}}
-
-\let\@tempc\relax
-\@expandtwoargs\setkeys{newfloat}{planb,\@ptionlist{\@currname.\@currext}}%
-\AtEndOfPackage{\let\@unprocessedoptions\relax}
-\newcommand*\newfloatsetup{\setkeys{newfloat}}
-\newcommand\newfloat@replace@chapter[2]{%
-  \begingroup
-    \let\if@twocolumn\iffalse
-    \let\if@mainmatter\iffalse
-    \let\if@thema\iffalse
-    \def\@tempa[##1]##2{#1}%
-    \ifx\@tempa\@chapter
-      \gdef\@chapter[##1]##2{#2}%
-      \global\let\newfloat@replace@chapter\@gobbletwo
-    \else\ifx\@tempa\Hy@org@chapter
-      \gdef\Hy@org@chapter[##1]##2{#2}%
-      \global\let\newfloat@replace@chapter\@gobbletwo
-    \fi\fi
-  \endgroup}
-\ifcsname @chapter\endcsname \else
-  \let\newfloat@replace@chapter\@gobbletwo
-\fi
-\newfloat@replace@chapter{%
-  \ifnum \c@secnumdepth >\m@ne
-    \refstepcounter{chapter}%
-    \typeout{\@chapapp\space\thechapter.}%
-    \addcontentsline{toc}{chapter}%
-      {\protect\numberline{\thechapter}#1}%
-  \else
-    \addcontentsline{toc}{chapter}{#1}%
-  \fi
-  \chaptermark{#1}%
-  \addtocontents{lof}{\protect\addvspace{10\p@}}%
-  \addtocontents{lot}{\protect\addvspace{10\p@}}%
-  \if@twocolumn
-    \@topnewpage[\@makechapterhead{#2}]%
-  \else
-    \@makechapterhead{#2}%
-    \@afterheading
-  \fi
-}{%
-  \ifnum \c@secnumdepth >\m@ne
-    \refstepcounter{chapter}%
-    \typeout{\@chapapp\space\thechapter.}%
-    \addcontentsline{toc}{chapter}%
-      {\protect\numberline{\thechapter}#1}%
-  \else
-    \addcontentsline{toc}{chapter}{#1}%
-  \fi
-  \chaptermark{#1}%
-  \@addchapterlistsgaps
-  \if@twocolumn
-    \@topnewpage[\@makechapterhead{#2}]%
-  \else
-    \@makechapterhead{#2}%
-    \@afterheading
-  \fi}
-\newfloat@replace@chapter{%
-  \ifnum \c@secnumdepth >\m@ne
-    \if@mainmatter
-      \refstepcounter{chapter}%
-      \typeout{\@chapapp\space\thechapter.}%
-      \addcontentsline{toc}{chapter}%
-        {\protect\numberline{\thechapter}#1}%
-    \else
-      \addcontentsline{toc}{chapter}{#1}%
-    \fi
-  \else
-    \addcontentsline{toc}{chapter}{#1}%
-  \fi
-  \chaptermark{#1}%
-  \addtocontents{lof}{\protect\addvspace{10\p@}}%
-  \addtocontents{lot}{\protect\addvspace{10\p@}}%
-  \if@twocolumn
-    \@topnewpage[\@makechapterhead{#2}]%
-  \else
-    \@makechapterhead{#2}%
-    \@afterheading
-  \fi
-}{%
-  \ifnum \c@secnumdepth >\m@ne
-    \if@mainmatter
-      \refstepcounter{chapter}%
-      \typeout{\@chapapp\space\thechapter.}%
-      \addcontentsline{toc}{chapter}%
-        {\protect\numberline{\thechapter}#1}%
-    \else
-      \addcontentsline{toc}{chapter}{#1}%
-    \fi
-  \else
-    \addcontentsline{toc}{chapter}{#1}%
-  \fi
-  \chaptermark{#1}%
-  \@addchapterlistsgaps
-  \if@twocolumn
-    \@topnewpage[\@makechapterhead{#2}]%
-  \else
-    \@makechapterhead{#2}%
-    \@afterheading
-  \fi}
-\newfloat@replace@chapter{%
-  \refstepcounter{chapter}%
-  \ifnum\c@secnumdepth<\z@ \let\@secnumber\@empty
-  \else \let\@secnumber\thechapter \fi
-  \typeout{\chaptername\space\@secnumber}%
-  \def\@toclevel{0}%
-  \ifx\chaptername\appendixname \@tocwriteb\tocappendix{chapter}{#2}%
-  \else \@tocwriteb\tocchapter{chapter}{#2}\fi
-  \chaptermark{#1}%
-  \addtocontents{lof}{\protect\addvspace{10\p@}}%
-  \addtocontents{lot}{\protect\addvspace{10\p@}}%
-  \@makechapterhead{#2}\@afterheading
-}{%
-  \refstepcounter{chapter}%
-  \ifnum\c@secnumdepth<\z@ \let\@secnumber\@empty
-  \else \let\@secnumber\thechapter \fi
-  \typeout{\chaptername\space\@secnumber}%
-  \def\@toclevel{0}%
-  \ifx\chaptername\appendixname \@tocwriteb\tocappendix{chapter}{#2}%
-  \else \@tocwriteb\tocchapter{chapter}{#2}\fi
-  \chaptermark{#1}%
-  \@addchapterlistsgaps
-  \@makechapterhead{#2}\@afterheading}
-\@ifpackageloaded{tocbasic}{%
-  \let\newfloat@replace@chapter\@gobbletwo}{}
-\ifcsname insertchapterspace\endcsname
-  \renewcommand*\insertchapterspace{\@addchapterlistsgaps}
-  \let\newfloat@replace@chapter\@gobbletwo
-\fi
-\newfloat@replace@chapter{%
-  \ifnum \c@secnumdepth >\m@ne
-    \refstepcounter{chapter}%
-    \typeout{\@chapapp\space\thechapter.}%
-    \addcontentsline{toc}{chapter}%
-      {\protect\numberline{\thechapter}\toc@font0 #1}%
-  \else
-    \addcontentsline{toc}{chapter}{\toc@font0 #1}%
-  \fi
-  \chaptermark{#1}%
-  \addtocontents{lof}{\protect\addvspace{10\p@}}%
-  \addtocontents{lot}{\protect\addvspace{10\p@}}%
-  \if@twocolumn
-    \@topnewpage[\@makechapterhead{#2}]%
-  \else
-    \@makechapterhead{#2}%
-    \@afterheading
-  \fi
-}{%
-  \ifnum \c@secnumdepth >\m@ne
-    \refstepcounter{chapter}%
-    \typeout{\@chapapp\space\thechapter.}%
-    \addcontentsline{toc}{chapter}%
-      {\protect\numberline{\thechapter}\toc@font0 #1}%
-  \else
-    \addcontentsline{toc}{chapter}{\toc@font0 #1}%
-  \fi
-  \chaptermark{#1}%
-  \@addchapterlistsgaps
-  \if@twocolumn
-    \@topnewpage[\@makechapterhead{#2}]%
-  \else
-    \@makechapterhead{#2}%
-    \@afterheading
-  \fi}
-  % boek(3).cls [2004/06/07 v2.1a NTG LaTeX document class]
-\newfloat@replace@chapter{%
-  \ifnum \c@secnumdepth >\m@ne
-    \if@mainmatter
-      \refstepcounter{chapter}%
-      \typeout{\@chapapp\space\thechapter.}%
-      \addcontentsline{toc}{chapter}%
-        {\protect\numberline{\thechapter}\toc@font0 #1}%
-    \else
-      \addcontentsline{toc}{chapter}{\toc@font0 #1}%
-    \fi
-  \else
-    \addcontentsline{toc}{chapter}{\toc@font0 #1}%
-  \fi
-  \chaptermark{#1}%
-  \addtocontents{lof}{\protect\addvspace{10\p@}}%
-  \addtocontents{lot}{\protect\addvspace{10\p@}}%
-  \if@twocolumn
-    \@topnewpage[\@makechapterhead{#2}]%
-  \else
-    \@makechapterhead{#2}%
-    \@afterheading
-  \fi
-}{%
-  \ifnum \c@secnumdepth >\m@ne
-    \if@mainmatter
-      \refstepcounter{chapter}%
-      \typeout{\@chapapp\space\thechapter.}%
-      \addcontentsline{toc}{chapter}%
-        {\protect\numberline{\thechapter}\toc@font0 #1}%
-    \else
-      \addcontentsline{toc}{chapter}{\toc@font0 #1}%
-    \fi
-  \else
-    \addcontentsline{toc}{chapter}{\toc@font0 #1}%
-  \fi
-  \chaptermark{#1}%
-  \@addchapterlistsgaps
-  \if@twocolumn
-    \@topnewpage[\@makechapterhead{#2}]%
-  \else
-    \@makechapterhead{#2}%
-    \@afterheading
-  \fi}
-\newfloat@replace@chapter{%
-  \ifnum \c@secnumdepth >\m@ne
-    \if@mainmatter
-      \refstepcounter{chapter}%
-      \typeout{\chaptername\space\thechapter.}
-      \if@thema
-        \ifx\@shortauthor\@empty
-          \addcontentsline{toc}{chapter}{%
-          \protect\numberline{\thechapter.}#1}%
-        \else
-          \addcontentsline{toc}{chapter}{%
-          \protect\numberline{\thechapter.}%
-          \@shortauthor\hfill\mbox{}\vskip\normallineskip #1}%
-        \fi
-      \else
-        \addcontentsline{toc}{chapter}{%
-        \protect\numberline{\thechapter.}#1}%
-      \fi
-    \else
-      \addcontentsline{toc}{chapter}{#1}
-    \fi
-  \else
-    \addcontentsline{toc}{chapter}{#1}
-  \fi
-  \chaptermark{#1}
-  \addtocontents{lof}{\protect\addvspace{10pt}}
-  \addtocontents{lot}{\protect\addvspace{10pt}}
-  \if@twocolumn
-    \@topnewpage[\@makechapterhead{#2}]
-  \else
-    \@makechapterhead{#2}
-    \@afterheading
-  \fi
-}{%
-  \ifnum \c@secnumdepth >\m@ne
-    \if@mainmatter
-      \refstepcounter{chapter}%
-      \typeout{\chaptername\space\thechapter.}%
-      \if@thema
-        \ifx\@shortauthor\@empty
-          \addcontentsline{toc}{chapter}{%
-          \protect\numberline{\thechapter.}#1}%
-        \else
-          \addcontentsline{toc}{chapter}{%
-          \protect\numberline{\thechapter.}%
-          \@shortauthor\hfill\mbox{}\vskip\normallineskip #1}%
-        \fi
-      \else
-        \addcontentsline{toc}{chapter}{%
-        \protect\numberline{\thechapter.}#1}%
-      \fi
-    \else
-      \addcontentsline{toc}{chapter}{#1}%
-    \fi
-  \else
-    \addcontentsline{toc}{chapter}{#1}%
-  \fi
-  \chaptermark{#1}%
-  \@addchapterlistsgaps
-  \if@twocolumn
-    \@topnewpage[\@makechapterhead{#2}]%
-  \else
-    \@makechapterhead{#2}%
-    \@afterheading
-  \fi}
-\ifx\newfloat@replace@chapter\@gobbletwo \else
-  \newfloat@InfoNoLine{%
-   Unsupported document class, or \noexpand\@chapter\MessageBreak
-   was already redefined by another package}
-  \newfloat@InfoNoLine{\string\@chapter\space=\space\meaning\@chapter}
-  \newfloat@InfoNoLine{\string\Hy@org@chapter\space=\space\meaning\Hy@org@chapter}
-  \newfloat@ifplanb{%
-    \newfloat@InfoNoLine{Trying Plan B..}%
-    \let\newfloat@addtocontents@ORI\addtocontents
-    \long\def\addtocontents#1#2{%
-      \newfloat@addtocontents{#1}{#2}#2\addvspace\newfloat@nil}%
-    \long\def\newfloat@addtocontents#1#2#3\addvspace#4\newfloat@nil{%
-      \def\newfloat@tempa{#4}%
-      \ifx\newfloat@tempa\@empty
-        \newfloat@addtocontents@ORI{#1}{#2}%
-      \else
-        \ifx\newfloat@addtocontents@ext\@undefined
-          \newfloat@Info{Setting Plan B file extension to `#1'...}%
-          \xdef\newfloat@addtocontents@ext{#1}%
-        \fi
-        \edef\newfloat@tempa{#1}%
-        \ifx\newfloat@tempa\newfloat@addtocontents@ext
-          \begingroup
-            \let\addtocontents\newfloat@addtocontents@ORI
-            \@addchapterlistsgaps
-          \endgroup
-        \fi
-      \fi}}
-\fi
-\newcommand\newfloat@ForEachNew[2][newfloat@@list]{%
-  \AtBeginDocument{%
-    \ifcsname#1\endcsname
-      \def\@elt##1{#2}%
-      \newfloat@@list
-      \let\@elt\relax
-    \fi}}%
-\@onlypreamble\newfloat@ForEachNew
-%%    \begin{macrocode}
-\newfloat@ForEachNew[float@exts]{%
-  \@nameuse{@ifchapterlistsgap@#1}{% if switched on
-    \let\float@do=\relax
-    \edef\@tempa{%
-      \noexpand\float@exts{\the\float@exts\float@do{\@nameuse{ext@#1}}}}%
-    \@tempa}}
-\newfloat@ForEachNew[FP@floatBegin]{%
-  \newcounter{FP@#1C}%
-  \newenvironment{FP#1}{\FP@floatBegin{#1}}{\FP@floatEnd}}
-\providecommand*\ext@lstlisting{lol}%
-\newfloat@ForEachNew[@rotfloat]{%
-  \newenvironment{sideways#1}{\@rotfloat{#1}}{\end@rotfloat}%
-  \newenvironment{sideways#1*}{\@rotdblfloat{#1}}{\end@rotdblfloat}}
-\newcommand*\newfloat@For@SC[2]{%
-  \def#1{b}% = \sidecaptionvpos{#2}{b} (v1.6)
-  \newenvironment{SC#2}%
-    {\SC@float[#1]{#2}}{\endSC@float}%
-  \newenvironment{SC#2*}%
-    {\SC@dblfloat[#1]{#2}}{\endSC@dblfloat}}
-\@onlypreamble\newfloat@For@SC
-\newfloat@ForEachNew[SC@float]{%
-  \expandafter\newfloat@For@SC\csname SC@#1@vpos\endcsname{#1}}
-\newfloat@ForEachNew[wrapfloat]{%
-  \newenvironment{wrap#1}{\wrapfloat{#1}}{\endwrapfloat}}
-\endinput
-%%
-%% End of file `newfloat.sty'.
diff --git a/release/latex/python.ist b/release/latex/python.ist
deleted file mode 100644
index 9ffa0f9..0000000
--- a/release/latex/python.ist
+++ /dev/null
@@ -1,11 +0,0 @@
-line_max 100
-headings_flag 1
-heading_prefix "  \\bigletter "
-
-preamble "\\begin{theindex}
-\\def\\bigletter#1{{\\Large\\sffamily#1}\\nopagebreak\\vspace{1mm}}
-
-"
-
-symhead_positive "{Symbols}"
-numhead_positive "{Numbers}"
diff --git a/release/latex/sphinx.sty b/release/latex/sphinx.sty
deleted file mode 100644
index ce17407..0000000
--- a/release/latex/sphinx.sty
+++ /dev/null
@@ -1,641 +0,0 @@
-%
-% sphinx.sty
-%
-% Adapted from the old python.sty, mostly written by Fred Drake,
-% by Georg Brandl.
-%
-
-\NeedsTeXFormat{LaTeX2e}[1995/12/01]
-\ProvidesPackage{sphinx}[2010/01/15 LaTeX package (Sphinx markup)]
-
-\@ifclassloaded{memoir}{}{\RequirePackage{fancyhdr}}
-
-\RequirePackage{textcomp}
-\RequirePackage{fancybox}
-\RequirePackage{titlesec}
-\RequirePackage{tabulary}
-\RequirePackage{makeidx}
-\RequirePackage{framed}
-\RequirePackage{ifthen}
-%The xcolor package draws better fcolorboxes
-%around verbatim code
-\IfFileExists{xcolor.sty}{
-    \RequirePackage{xcolor}
-}{
-    \RequirePackage{color}
-}
-% For highlighted code.
-\RequirePackage{fancyvrb}
-% For table captions.
-\RequirePackage{threeparttable}
-% Handle footnotes in tables.
-\RequirePackage{footnote}
-\makesavenoteenv{tabulary}
-% For floating figures in the text.
-\RequirePackage{wrapfig}
-% Separate paragraphs by space by default.
-\RequirePackage{parskip}
-% For parsed-literal blocks.
-\RequirePackage{alltt}
-% Display "real" single quotes in literal blocks.
-\RequirePackage{upquote}
-
-% Redefine these colors to your liking in the preamble.
-\definecolor{TitleColor}{rgb}{0.126,0.263,0.361}
-\definecolor{InnerLinkColor}{rgb}{0.208,0.374,0.486}
-\definecolor{OuterLinkColor}{rgb}{0.216,0.439,0.388}
-% Redefine these colors to something if you want to have colored
-% background and border for code examples.
-\definecolor{VerbatimColor}{rgb}{1,1,1}
-\definecolor{VerbatimBorderColor}{rgb}{0,0,0}
-
-% Uncomment these two lines to ignore the paper size and make the page 
-% size more like a typical published manual.
-%\renewcommand{\paperheight}{9in}
-%\renewcommand{\paperwidth}{8.5in}   % typical squarish manual
-%\renewcommand{\paperwidth}{7in}     % O'Reilly ``Programmming Python''
-
-% use pdfoutput for pTeX and dvipdfmx
-% when pTeX (\kanjiskip is defined), set pdfoutput to evade \include{pdfcolor}
-\ifx\kanjiskip\undefined\else
-  \newcount\pdfoutput\pdfoutput=0
-\fi
-
-\RequirePackage{graphicx}
-
-% for PDF output, use colors and maximal compression
-\newif\ifsphinxpdfoutput\sphinxpdfoutputfalse
-\ifx\pdfoutput\undefined\else\ifcase\pdfoutput
-  \let\py@NormalColor\relax
-  \let\py@TitleColor\relax
-\else
-  \sphinxpdfoutputtrue
-  \input{pdfcolor}
-  \def\py@NormalColor{\color[rgb]{0.0,0.0,0.0}}
-  \def\py@TitleColor{\color{TitleColor}}
-  \pdfcompresslevel=9
-\fi\fi
-
-% XeLaTeX can do colors, too
-\ifx\XeTeXrevision\undefined\else
-  \def\py@NormalColor{\color[rgb]{0.0,0.0,0.0}}
-  \def\py@TitleColor{\color{TitleColor}}
-\fi
-
-% Increase printable page size (copied from fullpage.sty)
-\topmargin 0pt
-\advance \topmargin by -\headheight
-\advance \topmargin by -\headsep
-
-% attempt to work a little better for A4 users
-\textheight \paperheight
-\advance\textheight by -2in
-
-\oddsidemargin 0pt
-\evensidemargin 0pt
-%\evensidemargin -.25in  % for ``manual size'' documents
-\marginparwidth 0.5in
-
-\textwidth \paperwidth
-\advance\textwidth by -2in
-
-
-% Style parameters and macros used by most documents here
-\raggedbottom
-\sloppy
-\hbadness = 5000                % don't print trivial gripes
-
-\pagestyle{empty}               % start this way
-
-% Use this to set the font family for headers and other decor:
-\newcommand{\py@HeaderFamily}{\sffamily\bfseries}
-
-% Redefine the 'normal' header/footer style when using "fancyhdr" package:
-\@ifundefined{fancyhf}{}{
-  % Use \pagestyle{normal} as the primary pagestyle for text.
-  \fancypagestyle{normal}{
-    \fancyhf{}
-    \fancyfoot[LE,RO]{{\py@HeaderFamily\thepage}}
-    \fancyfoot[LO]{{\py@HeaderFamily\nouppercase{\rightmark}}}
-    \fancyfoot[RE]{{\py@HeaderFamily\nouppercase{\leftmark}}}
-    \fancyhead[LE,RO]{{\py@HeaderFamily \@title, \py@release}}
-    \renewcommand{\headrulewidth}{0.4pt}
-    \renewcommand{\footrulewidth}{0.4pt}
-    % define chaptermark with \@chappos when \@chappos is available for Japanese
-    \ifx\@chappos\undefined\else
-      \def\chaptermark##1{\markboth{\@chapapp\space\thechapter\space\@chappos\space ##1}{}}
-    \fi
-  }
-  % Update the plain style so we get the page number & footer line,
-  % but not a chapter or section title.  This is to keep the first
-  % page of a chapter and the blank page between chapters `clean.'
-  \fancypagestyle{plain}{
-    \fancyhf{}
-    \fancyfoot[LE,RO]{{\py@HeaderFamily\thepage}}
-    \renewcommand{\headrulewidth}{0pt}
-    \renewcommand{\footrulewidth}{0.4pt}
-  }
-}
-
-% Some custom font markup commands.
-%
-\newcommand{\strong}[1]{{\textbf{#1}}}
-\newcommand{\code}[1]{\texttt{#1}}
-\newcommand{\bfcode}[1]{\code{\bfseries#1}}
-\newcommand{\email}[1]{\textsf{#1}}
-\newcommand{\tablecontinued}[1]{\textsf{#1}}
-\newcommand{\titleref}[1]{\emph{#1}}
-\newcommand{\menuselection}[1]{\emph{#1}}
-\newcommand{\accelerator}[1]{\underline{#1}}
-\newcommand{\crossref}[1]{\emph{#1}}
-\newcommand{\termref}[1]{\emph{#1}}
-
-\newcommand*{\sphinxAtStartFootnote}{\mbox{ }}
-
-% Redefine the Verbatim environment to allow border and background colors.
-% The original environment is still used for verbatims within tables.
-\let\OriginalVerbatim=\Verbatim
-\let\endOriginalVerbatim=\endVerbatim
-
-% Play with vspace to be able to keep the indentation.
-\newlength\Sphinx@scratchlength
-\newcommand\Sphinxcolorbox [1]{%
-  \setlength\Sphinx@scratchlength{\linewidth}%
-  \advance\Sphinx@scratchlength -\@totalleftmargin %
-  \fcolorbox{VerbatimBorderColor}{VerbatimColor}{%
-  \begin{minipage}{\Sphinx@scratchlength}%
-    #1
-  \end{minipage}%
-  }%
-}
-% used for split frames for continuation on next and final page
-\def\MidFrameCommand{\Sphinxcolorbox}
-\let\LastFrameCommand\MidFrameCommand
-
-% We customize \FrameCommand (for non split frames) and \FirstFrameCommand
-% (split frames), in order for the framed environment to insert a Title above
-% the frame, which can not be separated by a pagebreak.
-
-% The title is specified from outside as macro \SphinxVerbatimTitle.
-% \SphinxVerbatimTitle is reset to empty after each use of Verbatim environment.
-
-% It is also possible to use directly framed environment (i.e. not indirectly
-% via the Verbatim environment next), then it is \SphinxFrameTitle which specifies
-% the title.
-\newcommand*\SphinxFrameTitle {}
-\newcommand*\SphinxVerbatimTitle {}
-\newcommand*\SphinxSetupCaptionForVerbatim [2]
-{%
-    \needspace{\literalblockneedspace}\vspace{\literalblockcaptiontopvspace}%
-    \def\SphinxVerbatimTitle
-       {\captionof{#1}{\SphinxLiteralBlockLabel #2}\smallskip }%
-}
-% \SphinxLiteralBlockLabel will be set dynamically to hold the label for links
-\newcommand*\SphinxLiteralBlockLabel {}
-
-% \SphinxCustomFBox is copied from framed.sty's \CustomFBox, but
-% #1=title/caption is to be set _above_ the top rule, not _below_
-% #1 must be "vertical material", it may be left empty.
-
-% The amsmath patches \stepcounter to inhibit stepping under
-% \firstchoice@false. We use it because framed.sty typesets multiple
-% times its contents.
-\newif\ifSphinx@myfirstframedpass
-
-\long\def\SphinxCustomFBox#1#2#3#4#5#6#7{%
-  % we set up amsmath (amstext.sty) conditional to inhibit counter stepping
-  % except in first pass
-  \ifSphinx@myfirstframedpass\firstchoice@true
-                  \else\firstchoice@false\fi
-  \leavevmode\begingroup
-  \setbox\@tempboxa\hbox{%
-    \color@begingroup
-      \kern\fboxsep{#7}\kern\fboxsep
-    \color@endgroup}%
-  \hbox{%
-    \lower\dimexpr#4+\fboxsep+\dp\@tempboxa\hbox{%
-      \vbox{%
-        #1% TITLE
-        \hrule\@height#3\relax
-        \hbox{%
-          \vrule\@width#5\relax
-          \vbox{%
-            \vskip\fboxsep
-            \copy\@tempboxa
-            \vskip\fboxsep}%
-          \vrule\@width#6\relax}%
-        #2%
-        \hrule\@height#4\relax}%
-    }%
-  }%
-  \endgroup
-  \global\Sphinx@myfirstframedpassfalse
-}
-
-% for non split frames:
-\def\FrameCommand{%
-   % this is inspired from framed.sty v 0.96 2011/10/22 lines 185--190
-   % \fcolorbox (see \Sphinxcolorbox above) from color.sty uses \fbox.
-   \def\fbox{\SphinxCustomFBox{\SphinxFrameTitle}{}%
-                 \fboxrule\fboxrule\fboxrule\fboxrule}%
-   % \fcolorbox from xcolor.sty may use rather \XC@fbox.
-   \let\XC@fbox\fbox
-   \Sphinxcolorbox
-}
-% for first portion of split frames:
-\let\FirstFrameCommand\FrameCommand
-
-\renewcommand{\Verbatim}[1][1]{%
-  % list starts new par, but we don't want it to be set apart vertically
-  \parskip\z@skip
-  \smallskip
-  % first, let's check if there is a caption
-  \ifx\SphinxVerbatimTitle\empty
-      % there was no caption. Check if nevertheless a label was set.
-      \ifx\SphinxLiteralBlockLabel\empty\else
-      % we require some space to be sure hyperlink target from \phantomsection
-      % will not be separated from upcoming verbatim by a page break
-          \needspace{\literalblockwithoutcaptionneedspace}%
-          \phantomsection\SphinxLiteralBlockLabel
-      \fi
-  \fi
-  % non-empty \SphinxVerbatimTitle has label inside it (in case there is one)
-  \let\SphinxFrameTitle\SphinxVerbatimTitle
-  \global\Sphinx@myfirstframedpasstrue
-  % The list environement is needed to control perfectly the vertical
-  % space.
-  \list{}{%
-  \setlength\parskip{0pt}%
-  \setlength\itemsep{0ex}%
-  \setlength\topsep{0ex}%
-  \setlength\partopsep{0pt}%
-  \setlength\leftmargin{0pt}%
-  }%
-  \item\MakeFramed {\FrameRestore}%
-     \small
-    \OriginalVerbatim[#1]%
-}
-\renewcommand{\endVerbatim}{%
-  \endOriginalVerbatim
-  \endMakeFramed
-  \endlist
-  % LaTeX environments always revert local changes on exit, here e.g. \parskip
-}
-
-
-% \moduleauthor{name}{email}
-\newcommand{\moduleauthor}[2]{}
-
-% \sectionauthor{name}{email}
-\newcommand{\sectionauthor}[2]{}
-
-% Augment the sectioning commands used to get our own font family in place,
-% and reset some internal data items:
-\titleformat{\section}{\Large\py@HeaderFamily}%
-            {\py@TitleColor\thesection}{0.5em}{\py@TitleColor}{\py@NormalColor}
-\titleformat{\subsection}{\large\py@HeaderFamily}%
-            {\py@TitleColor\thesubsection}{0.5em}{\py@TitleColor}{\py@NormalColor}
-\titleformat{\subsubsection}{\py@HeaderFamily}%
-            {\py@TitleColor\thesubsubsection}{0.5em}{\py@TitleColor}{\py@NormalColor}
-\titleformat{\paragraph}{\small\py@HeaderFamily}%
-            {\py@TitleColor}{0em}{\py@TitleColor}{\py@NormalColor}
-
-% {fulllineitems} is the main environment for object descriptions.
-%
-\newcommand{\py@itemnewline}[1]{%
-  \@tempdima\linewidth%
-  \advance\@tempdima \leftmargin\makebox[\@tempdima][l]{#1}%
-}
-
-\newenvironment{fulllineitems}{
-  \begin{list}{}{\labelwidth \leftmargin \labelsep 0pt
-                 \rightmargin 0pt \topsep -\parskip \partopsep \parskip
-                 \itemsep -\parsep
-                 \let\makelabel=\py@itemnewline}
-}{\end{list}}
-
-% \optional is used for ``[, arg]``, i.e. desc_optional nodes.
-\newcommand{\optional}[1]{%
-  {\textnormal{\Large[}}{#1}\hspace{0.5mm}{\textnormal{\Large]}}}
-
-\newlength{\py@argswidth}
-\newcommand{\py@sigparams}[2]{%
-  \parbox[t]{\py@argswidth}{#1\code{)}#2}}
-\newcommand{\pysigline}[1]{\item[#1]\nopagebreak}
-\newcommand{\pysiglinewithargsret}[3]{%
-  \settowidth{\py@argswidth}{#1\code{(}}%
-  \addtolength{\py@argswidth}{-2\py@argswidth}%
-  \addtolength{\py@argswidth}{\linewidth}%
-  \item[#1\code{(}\py@sigparams{#2}{#3}]}
-
-% Production lists
-%
-\newenvironment{productionlist}{
-%  \def\optional##1{{\Large[}##1{\Large]}}
-  \def\production##1##2{\\\code{##1}&::=&\code{##2}}
-  \def\productioncont##1{\\& &\code{##1}}
-  \parindent=2em
-  \indent
-  \setlength{\LTpre}{0pt}
-  \setlength{\LTpost}{0pt}
-  \begin{longtable}[l]{lcl}
-}{%
-  \end{longtable}
-}
-
-% Notices / Admonitions
-%
-\newlength{\py@noticelength}
-
-\newcommand{\py@heavybox}{
-  \setlength{\fboxrule}{1pt}
-  \setlength{\fboxsep}{6pt}
-  \setlength{\py@noticelength}{\linewidth}
-  \addtolength{\py@noticelength}{-2\fboxsep}
-  \addtolength{\py@noticelength}{-2\fboxrule}
-  %\setlength{\shadowsize}{3pt}
-  \noindent\Sbox
-  \minipage{\py@noticelength}
-}
-\newcommand{\py@endheavybox}{
-  \endminipage
-  \endSbox
-  \fbox{\TheSbox}
-}
-
-\newcommand{\py@lightbox}{%
-  \par\allowbreak
-  \noindent\rule{\linewidth}{0.5pt}\par\nobreak
-  {\parskip\z@skip\noindent}%
-  }
-\newcommand{\py@endlightbox}{%
-  \par\nobreak
-  {\parskip\z@skip\noindent\rule[.4\baselineskip]{\linewidth}{0.5pt}}\par
-  }
-
-% Some are quite plain:
-\newcommand{\py@noticestart@note}{\py@lightbox}
-\newcommand{\py@noticeend@note}{\py@endlightbox}
-\newcommand{\py@noticestart@hint}{\py@lightbox}
-\newcommand{\py@noticeend@hint}{\py@endlightbox}
-\newcommand{\py@noticestart@important}{\py@lightbox}
-\newcommand{\py@noticeend@important}{\py@endlightbox}
-\newcommand{\py@noticestart@tip}{\py@lightbox}
-\newcommand{\py@noticeend@tip}{\py@endlightbox}
-
-% Others gets more visible distinction:
-\newcommand{\py@noticestart@warning}{\py@heavybox}
-\newcommand{\py@noticeend@warning}{\py@endheavybox}
-\newcommand{\py@noticestart@caution}{\py@heavybox}
-\newcommand{\py@noticeend@caution}{\py@endheavybox}
-\newcommand{\py@noticestart@attention}{\py@heavybox}
-\newcommand{\py@noticeend@attention}{\py@endheavybox}
-\newcommand{\py@noticestart@danger}{\py@heavybox}
-\newcommand{\py@noticeend@danger}{\py@endheavybox}
-\newcommand{\py@noticestart@error}{\py@heavybox}
-\newcommand{\py@noticeend@error}{\py@endheavybox}
-
-\newenvironment{notice}[2]{
-  \def\py@noticetype{#1}
-  \csname py@noticestart@#1\endcsname
-  \strong{#2}
-}{\csname py@noticeend@\py@noticetype\endcsname}
-
-% Allow the release number to be specified independently of the
-% \date{}.  This allows the date to reflect the document's date and
-% release to specify the release that is documented.
-%
-\newcommand{\py@release}{}
-\newcommand{\version}{}
-\newcommand{\shortversion}{}
-\newcommand{\releaseinfo}{}
-\newcommand{\releasename}{Release}
-\newcommand{\release}[1]{%
-  \renewcommand{\py@release}{\releasename\space\version}%
-  \renewcommand{\version}{#1}}
-\newcommand{\setshortversion}[1]{%
-  \renewcommand{\shortversion}{#1}}
-\newcommand{\setreleaseinfo}[1]{%
-  \renewcommand{\releaseinfo}{#1}}
-
-% Allow specification of the author's address separately from the
-% author's name.  This can be used to format them differently, which
-% is a good thing.
-%
-\newcommand{\py@authoraddress}{}
-\newcommand{\authoraddress}[1]{\renewcommand{\py@authoraddress}{#1}}
-
-% This sets up the fancy chapter headings that make the documents look
-% at least a little better than the usual LaTeX output.
-%
-\@ifundefined{ChTitleVar}{}{
-  \ChNameVar{\raggedleft\normalsize\py@HeaderFamily}
-  \ChNumVar{\raggedleft \bfseries\Large\py@HeaderFamily}
-  \ChTitleVar{\raggedleft \textrm{\Huge\py@HeaderFamily}}
-  % This creates chapter heads without the leading \vspace*{}:
-  \def\@makechapterhead#1{%
-    {\parindent \z@ \raggedright \normalfont
-      \ifnum \c@secnumdepth >\m@ne
-        \DOCH
-      \fi
-      \interlinepenalty\@M
-      \DOTI{#1}
-    }
-  }
-}
-
-% Redefine description environment so that it is usable inside fulllineitems.
-%
-\renewcommand{\description}{%
-  \list{}{\labelwidth\z@%
-          \itemindent-\leftmargin%
-	  \labelsep5pt%
-          \let\makelabel=\descriptionlabel}}
-
-% Definition lists; requested by AMK for HOWTO documents.  Probably useful
-% elsewhere as well, so keep in in the general style support.
-%
-\newenvironment{definitions}{%
-  \begin{description}%
-  \def\term##1{\item[##1]\mbox{}\\*[0mm]}
-}{%
-  \end{description}%
-}
-
-% Tell TeX about pathological hyphenation cases:
-\hyphenation{Base-HTTP-Re-quest-Hand-ler}
-
-
-% The following is stuff copied from docutils' latex writer.
-%
-\newcommand{\optionlistlabel}[1]{\bf #1 \hfill}
-\newenvironment{optionlist}[1]
-{\begin{list}{}
-  {\setlength{\labelwidth}{#1}
-   \setlength{\rightmargin}{1cm}
-   \setlength{\leftmargin}{\rightmargin}
-   \addtolength{\leftmargin}{\labelwidth}
-   \addtolength{\leftmargin}{\labelsep}
-   \renewcommand{\makelabel}{\optionlistlabel}}
-}{\end{list}}
-
-\newlength{\lineblockindentation}
-\setlength{\lineblockindentation}{2.5em}
-\newenvironment{lineblock}[1]
-{\begin{list}{}
-  {\setlength{\partopsep}{\parskip}
-   \addtolength{\partopsep}{\baselineskip}
-   \topsep0pt\itemsep0.15\baselineskip\parsep0pt
-   \leftmargin#1}
- \raggedright}
-{\end{list}}
-
-% Redefine includgraphics for avoiding images larger than the screen size
-% If the size is not specified.
-\let\py@Oldincludegraphics\includegraphics
-
-\newbox\image@box%
-\newdimen\image@width%
-\renewcommand\includegraphics[2][\@empty]{%
-  \ifx#1\@empty%
-    \setbox\image@box=\hbox{\py@Oldincludegraphics{#2}}%
-    \image@width\wd\image@box%
-    \ifdim \image@width>\linewidth%
-      \setbox\image@box=\hbox{\py@Oldincludegraphics[width=\linewidth]{#2}}%
-      \box\image@box%
-    \else%
-      \py@Oldincludegraphics{#2}%
-    \fi%
-  \else%
-    \py@Oldincludegraphics[#1]{#2}%
-  \fi%
-}
-
-% to make pdf with correct encoded bookmarks in Japanese
-% this should precede the hyperref package
-\ifx\kanjiskip\undefined\else
-  \usepackage{atbegshi}
-  \ifx\ucs\undefined
-    \ifnum 42146=\euc"A4A2
-      \AtBeginShipoutFirst{\special{pdf:tounicode EUC-UCS2}}
-    \else
-      \AtBeginShipoutFirst{\special{pdf:tounicode 90ms-RKSJ-UCS2}}
-    \fi
-  \else
-    \AtBeginShipoutFirst{\special{pdf:tounicode UTF8-UCS2}}
-  \fi
-\fi
-
-% Include hyperref last.
-\RequirePackage[colorlinks,breaklinks,
-                linkcolor=InnerLinkColor,filecolor=OuterLinkColor,
-                menucolor=OuterLinkColor,urlcolor=OuterLinkColor,
-                citecolor=InnerLinkColor]{hyperref}
-% Fix anchor placement for figures with captions.
-% (Note: we don't use a package option here; instead, we give an explicit
-% \capstart for figures that actually have a caption.)
-\RequirePackage{hypcap}
-
-% Set up styles of URL: it should be placed after hyperref
-\urlstyle{same}
-
-% From docutils.writers.latex2e
-% inline markup (custom roles)
-% \DUrole{#1}{#2} tries \DUrole#1{#2}
-\providecommand*{\DUrole}[2]{%
-  \ifcsname DUrole#1\endcsname%
-    \csname DUrole#1\endcsname{#2}%
-  \else% backwards compatibility: try \docutilsrole#1{#2}
-    \ifcsname docutilsrole#1\endcsname%
-      \csname docutilsrole#1\endcsname{#2}%
-    \else%
-      #2%
-    \fi%
-  \fi%
-}
-
-\providecommand*{\DUprovidelength}[2]{
-  \ifthenelse{\isundefined{#1}}{\newlength{#1}\setlength{#1}{#2}}{}
-}
-
-\DUprovidelength{\DUlineblockindent}{2.5em}
-\ifthenelse{\isundefined{\DUlineblock}}{
-  \newenvironment{DUlineblock}[1]{%
-    \list{}{\setlength{\partopsep}{\parskip}
-            \addtolength{\partopsep}{\baselineskip}
-            \setlength{\topsep}{0pt}
-            \setlength{\itemsep}{0.15\baselineskip}
-            \setlength{\parsep}{0pt}
-            \setlength{\leftmargin}{#1}}
-    \raggedright
-  }
-  {\endlist}
-}{}
-
-
-% From footmisc.sty: allows footnotes in titles
-\let\FN@sf@@footnote\footnote
-\def\footnote{\ifx\protect\@typeset@protect
-    \expandafter\FN@sf@@footnote
-  \else
-    \expandafter\FN@sf@gobble@opt
-  \fi
-}
-\edef\FN@sf@gobble@opt{\noexpand\protect
-  \expandafter\noexpand\csname FN@sf@gobble@opt \endcsname}
-\expandafter\def\csname FN@sf@gobble@opt \endcsname{%
-  \@ifnextchar[%]
-    \FN@sf@gobble@twobracket
-    \@gobble
-}
-\def\FN@sf@gobble@twobracket[#1]#2{}
-
-% adjust the margins for footer,
-% this works with the jsclasses only (Japanese standard document classes)
-\ifx\@jsc@uplatextrue\undefined\else
-  \hypersetup{setpagesize=false}
-  \setlength\footskip{2\baselineskip}
-  \addtolength{\textheight}{-2\baselineskip}
-\fi
-
-% fix the double index and bibliography on the table of contents
-% in jsclasses (Japanese standard document classes)
-\ifx\@jsc@uplatextrue\undefined\else
-  \renewcommand{\theindex}{
-    \cleardoublepage
-    \phantomsection
-    \py@OldTheindex
-  }
-  \renewcommand{\thebibliography}[1]{
-    \cleardoublepage
-    \phantomsection
-    \py@OldThebibliography{1}
-  }
-\fi
-
-% disable \@chappos in Appendix in pTeX
-\ifx\kanjiskip\undefined\else
-  \let\py@OldAppendix=\appendix
-  \renewcommand{\appendix}{
-    \py@OldAppendix
-    \gdef\@chappos{}
-  }
-\fi
-
-% Define literal-block environment
-\RequirePackage{newfloat}
-\DeclareFloatingEnvironment{literal-block}
-\ifx\thechapter\undefined
-  \SetupFloatingEnvironment{literal-block}{within=section,placement=h}
-\else
-  \SetupFloatingEnvironment{literal-block}{within=chapter,placement=h}
-\fi
-\SetupFloatingEnvironment{literal-block}{name=List}
-% control caption around literal-block
-\RequirePackage{capt-of}
-\RequirePackage{needspace}
-% if the left page space is less than \literalblockneedsapce, insert page-break
-\newcommand{\literalblockneedspace}{5\baselineskip}
-\newcommand{\literalblockwithoutcaptionneedspace}{1.5\baselineskip}
-% margin before the caption of literal-block
-\newcommand{\literalblockcaptiontopvspace}{0.5\baselineskip}
diff --git a/release/latex/sphinxhowto.cls b/release/latex/sphinxhowto.cls
deleted file mode 100644
index 26e63a7..0000000
--- a/release/latex/sphinxhowto.cls
+++ /dev/null
@@ -1,104 +0,0 @@
-%
-% sphinxhowto.cls for Sphinx (http://sphinx-doc.org/)
-%
-
-\NeedsTeXFormat{LaTeX2e}[1995/12/01]
-\ProvidesClass{sphinxhowto}[2009/06/02 Document class (Sphinx HOWTO)]
-
-% 'oneside' option overriding the 'twoside' default
-\newif\if@oneside
-\DeclareOption{oneside}{\@onesidetrue}
-% Pass remaining document options to the parent class.
-\DeclareOption*{\PassOptionsToClass{\CurrentOption}{\sphinxdocclass}}
-\ProcessOptions\relax
-
-% Default to two-side document
-\if@oneside
-% nothing to do (oneside is the default)
-\else
-\PassOptionsToClass{twoside}{\sphinxdocclass}
-\fi
-
-\LoadClass{\sphinxdocclass}
-
-% Set some sane defaults for section numbering depth and TOC depth.  You can
-% reset these counters in your preamble.
-%
-\setcounter{secnumdepth}{2}
-
-% Change the title page to look a bit better, and fit in with the fncychap
-% ``Bjarne'' style a bit better.
-%
-\renewcommand{\maketitle}{
-  \rule{\textwidth}{1pt}
-  \ifsphinxpdfoutput
-    \begingroup
-    % These \defs are required to deal with multi-line authors; it
-    % changes \\ to ', ' (comma-space), making it pass muster for
-    % generating document info in the PDF file.
-    \def\\{, }
-    \def\and{and }
-    \pdfinfo{
-      /Author (\@author)
-      /Title (\@title)
-    }
-    \endgroup
-  \fi
-  \begin{flushright}
-    \sphinxlogo%
-    {\rm\Huge\py@HeaderFamily \@title} \par
-    {\em\large\py@HeaderFamily \py@release\releaseinfo} \par
-    \vspace{25pt}
-    {\Large\py@HeaderFamily
-      \begin{tabular}[t]{c}
-        \@author
-      \end{tabular}} \par
-    \vspace{25pt}
-    \@date \par
-    \py@authoraddress \par
-  \end{flushright}
-  \@thanks
-  \setcounter{footnote}{0}
-  \let\thanks\relax\let\maketitle\relax
-  %\gdef\@thanks{}\gdef\@author{}\gdef\@title{}
-}
-
-\let\py@OldTableofcontents=\tableofcontents
-\renewcommand{\tableofcontents}{
-  \begingroup
-    \parskip = 0mm
-    \py@OldTableofcontents
-  \endgroup
-  \rule{\textwidth}{1pt}
-  \vspace{12pt}
-}  
-
-\@ifundefined{fancyhf}{
-  \pagestyle{plain}}{
-  \pagestyle{normal}}		% start this way; change for
-\pagenumbering{arabic}		% ToC & chapters
-
-\thispagestyle{empty}
-
-% Fix the bibliography environment to add an entry to the Table of
-% Contents.
-% For an article document class this environment is a section,
-% so no page break before it.
-\let\py@OldThebibliography=\thebibliography
-\renewcommand{\thebibliography}[1]{
-  \phantomsection
-  \py@OldThebibliography{1}
-  \addcontentsline{toc}{section}{\bibname}
-}
-
-% Same for the indices.
-% The memoir class already does this, so we don't duplicate it in that case.
-%
-\@ifclassloaded{memoir}{}{
-  \let\py@OldTheindex=\theindex
-  \renewcommand{\theindex}{
-    \phantomsection
-    \py@OldTheindex
-    \addcontentsline{toc}{section}{\indexname}
-  }
-}
diff --git a/release/latex/sphinxmanual.cls b/release/latex/sphinxmanual.cls
deleted file mode 100644
index a6b9b39..0000000
--- a/release/latex/sphinxmanual.cls
+++ /dev/null
@@ -1,148 +0,0 @@
-%
-% sphinxmanual.cls for Sphinx (http://sphinx-doc.org/)
-%
-
-\NeedsTeXFormat{LaTeX2e}[1995/12/01]
-\ProvidesClass{sphinxmanual}[2009/06/02 Document class (Sphinx manual)]
-
-% chapters starting at odd pages (overridden by 'openany' document option)
-\PassOptionsToClass{openright}{\sphinxdocclass}
-
-% 'oneside' option overriding the 'twoside' default
-\newif\if@oneside
-\DeclareOption{oneside}{\@onesidetrue}
-% Pass remaining document options to the parent class.
-\DeclareOption*{\PassOptionsToClass{\CurrentOption}{\sphinxdocclass}}
-\ProcessOptions\relax
-
-% Defaults two-side document
-\if@oneside
-% nothing to do (oneside is the default)
-\else
-\PassOptionsToClass{twoside}{\sphinxdocclass}
-\fi
-
-\LoadClass{\sphinxdocclass}
-
-% Set some sane defaults for section numbering depth and TOC depth.  You can
-% reset these counters in your preamble.
-%
-\setcounter{secnumdepth}{2}
-\setcounter{tocdepth}{1}
-
-% Change the title page to look a bit better, and fit in with the fncychap
-% ``Bjarne'' style a bit better.
-%
-\renewcommand{\maketitle}{%
-  \begin{titlepage}%
-    \let\footnotesize\small
-    \let\footnoterule\relax
-    \rule{\textwidth}{1pt}%
-    \ifsphinxpdfoutput
-      \begingroup
-      % These \defs are required to deal with multi-line authors; it
-      % changes \\ to ', ' (comma-space), making it pass muster for
-      % generating document info in the PDF file.
-      \def\\{, }
-      \def\and{and }
-      \pdfinfo{
-        /Author (\@author)
-        /Title (\@title)
-      }
-      \endgroup
-    \fi
-    \begin{flushright}%
-      \sphinxlogo%
-      {\rm\Huge\py@HeaderFamily \@title \par}%
-      {\em\LARGE\py@HeaderFamily \py@release\releaseinfo \par}
-      \vfill
-      {\LARGE\py@HeaderFamily
-        \begin{tabular}[t]{c}
-          \@author
-        \end{tabular}
-        \par}
-      \vfill\vfill
-      {\large
-       \@date \par
-       \vfill
-       \py@authoraddress \par
-      }%
-    \end{flushright}%\par
-    \@thanks
-  \end{titlepage}%
-  \cleardoublepage%
-  \setcounter{footnote}{0}%
-  \let\thanks\relax\let\maketitle\relax
-  %\gdef\@thanks{}\gdef\@author{}\gdef\@title{}
-}
-
-
-% Catch the end of the {abstract} environment, but here make sure the abstract
-% is followed by a blank page if the 'openright' option is used.
-%
-\let\py@OldEndAbstract=\endabstract
-\renewcommand{\endabstract}{
-  \if@openright
-    \ifodd\value{page}
-      \typeout{Adding blank page after the abstract.}
-      \vfil\pagebreak
-    \fi
-  \fi
-  \py@OldEndAbstract
-}
-
-% This wraps the \tableofcontents macro with all the magic to get the spacing
-% right and have the right number of pages if the 'openright' option has been
-% used.  This eliminates a fair amount of crud in the individual document files.
-%
-\let\py@OldTableofcontents=\tableofcontents
-\renewcommand{\tableofcontents}{%
-  \pagenumbering{roman}%
-  \setcounter{page}{1}%
-  \pagebreak%
-  \pagestyle{plain}%
-  {%
-    \parskip = 0mm%
-    \py@OldTableofcontents%
-    \if@openright%
-      \ifodd\value{page}%
-        \typeout{Adding blank page after the table of contents.}%
-        \pagebreak\hspace{0pt}%
-      \fi%
-    \fi%
-    \cleardoublepage%
-  }%
-  \pagenumbering{arabic}%
-  \@ifundefined{fancyhf}{}{\pagestyle{normal}}%
-}
-\pagenumbering{alph}
-
-% This is needed to get the width of the section # area wide enough in the
-% library reference.  Doing it here keeps it the same for all the manuals.
-%
-\renewcommand*\l@section{\@dottedtocline{1}{1.5em}{2.6em}}
-\renewcommand*\l@subsection{\@dottedtocline{2}{4.1em}{3.5em}}
-
-% Fix the bibliography environment to add an entry to the Table of
-% Contents.
-% For a report document class this environment is a chapter.
-\let\py@OldThebibliography=\thebibliography
-\renewcommand{\thebibliography}[1]{
-  \cleardoublepage
-  \phantomsection
-  \py@OldThebibliography{1}
-  \addcontentsline{toc}{chapter}{\bibname}
-}
-
-% Same for the indices.
-% The memoir class already does this, so we don't duplicate it in that case.
-%
-\@ifclassloaded{memoir}{}{
-  \let\py@OldTheindex=\theindex
-  \renewcommand{\theindex}{
-    \cleardoublepage
-    \phantomsection
-    \py@OldTheindex
-    \addcontentsline{toc}{chapter}{\indexname}
-  }
-}
diff --git a/release/latex/tabulary.sty b/release/latex/tabulary.sty
deleted file mode 100644
index 11fdf74..0000000
--- a/release/latex/tabulary.sty
+++ /dev/null
@@ -1,452 +0,0 @@
-%%
-%% This is file `tabulary.sty',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% tabulary.dtx  (with options: `package')
-%% DRAFT VERSION
-%%
-%% File `tabulary.dtx'.
-%% Copyright (C) 1995 1996 2003 2008 David Carlisle
-%% This file may be distributed under the terms of the LPPL.
-%% See 00readme.txt for details.
-%%
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{tabulary}
-          [2008/12/01 v0.9 tabulary package (DPC)]
-\RequirePackage{array}
-\catcode`\Z=14
-\DeclareOption{debugshow}{\catcode`\Z=9\relax}
-\ProcessOptions
-\def\arraybackslash{\let\\=\@arraycr}
-\def\@finalstrut#1{%
-  \unskip\ifhmode\nobreak\fi\vrule\@width\z@\@height\z@\@depth\dp#1}
-\newcount\TY@count
-\def\tabulary{%
-  \let\TY@final\tabular
-  \let\endTY@final\endtabular
-  \TY@tabular}
-\def\TY@tabular#1{%
-  \edef\TY@{\@currenvir}%
-  {\ifnum0=`}\fi
-  \@ovxx\TY@linewidth
-  \@ovyy\TY@tablewidth
-  \count@\z@
-  \@tempswatrue
-  \@whilesw\if@tempswa\fi{%
-  \advance\count@\@ne
-  \expandafter\ifx\csname TY@F\the\count@\endcsname\relax
-    \@tempswafalse
-  \else
-    \expandafter\let\csname TY@SF\the\count@\expandafter\endcsname
-                     \csname TY@F\the\count@\endcsname
-    \global\expandafter\let\csname TY@F\the\count@\endcsname\relax
-    \expandafter\let\csname TY@S\the\count@\expandafter\endcsname
-                     \csname TY@\the\count@\endcsname
-  \fi}%
-    \global\TY@count\@ne
-    \TY@width\xdef{0pt}%
-    \global\TY@tablewidth\z@
-    \global\TY@linewidth#1\relax
-Z\message{^^J^^JTable^^J%
-Z        Target Width: \the\TY@linewidth^^J%
-Z        \string\tabcolsep: \the\tabcolsep\space
-Z        \string\arrayrulewidth: \the\arrayrulewidth\space
-Z        \string\doublerulesep: \the\doublerulesep^^J%
-Z        \string\tymin: \the\tymin\space
-Z        \string\tymax: \the\tymax^^J}%
-    \let\@classz\TY@classz
-    \let\verb\TX@verb
-    \toks@{}\TY@get@body}
-\let\TY@@mkpream\@mkpream
-\def\TY@mkpream{%
-    \def\@addamp{%
-      \if@firstamp \@firstampfalse \else
-      \global\advance\TY@count\@ne
-      \edef\@preamble{\@preamble &}\fi
-      \TY@width\xdef{0pt}}%
-    \def\@acol{%
-      \TY@subwidth\col@sep
-      \@addtopreamble{\hskip\col@sep}}%
-    \let\@arrayrule\TY@arrayrule
-    \let\@classvi\TY@classvi
-    \def\@classv{\save@decl
-      \expandafter\NC@ecs\@nextchar\extracolsep{}\extracolsep\@@@
-      \sbox\z@{\d@llarbegin\@nextchar\d@llarend}%
-      \TY@subwidth{\wd\z@}%
-      \@addtopreamble{\d@llarbegin\the@toks\the\count@\relax\d@llarend}%
-      \prepnext@tok}%
-  \global\let\@mkpream\TY@@mkpream
-  \TY@@mkpream}
-\def\TY@arrayrule{%
-  \TY@subwidth\arrayrulewidth
-  \@addtopreamble \vline}
-\def\TY@classvi{\ifcase \@lastchclass
-  \@acol \or
-  \TY@subwidth\doublerulesep
-  \@addtopreamble{\hskip \doublerulesep}\or
-  \@acol \or
-  \@classvii
-  \fi}
-\def\TY@tab{%
-  \setbox\z@\hbox\bgroup
-  \let\[$\let\]$%
-  \let\equation$\let\endequation$%
-    \col@sep\tabcolsep
-    \let\d@llarbegin\begingroup\let\d@llarend\endgroup
-    \let\@mkpream\TY@mkpream
-      \def\multicolumn##1##2##3{\multispan##1\relax}%
-    \CT@start\TY@tabarray}
-\def\TY@tabarray{\@ifnextchar[{\TY@array}{\@array[t]}}
-\def\TY@array[#1]{\@array[t]}
-\def\TY@width#1{%
-  \expandafter#1\csname TY@\the\TY@count\endcsname}
-\def\TY@subwidth#1{%
-  \TY@width\dimen@
-  \advance\dimen@-#1\relax
-  \TY@width\xdef{\the\dimen@}%
-  \global\advance\TY@linewidth-#1\relax}
-\def\endtabulary{%
-  \gdef\@halignto{}%
-  \let\TY@footnote\footnote%
-  \def\footnote{}% prevent footnotes from doing anything
-  \expandafter\TY@tab\the\toks@
-  \crcr\omit
-  {\xdef\TY@save@row{}%
-     \loop
-    \advance\TY@count\m@ne
-    \ifnum\TY@count>\z@
-    \xdef\TY@save@row{\TY@save@row&\omit}%
-    \repeat}\TY@save@row
-  \endarray\global\setbox1=\lastbox\setbox0=\vbox{\unvbox1
-    \unskip\global\setbox1=\lastbox}\egroup
-  \dimen@\TY@linewidth
-  \divide\dimen@\TY@count
-  \ifdim\dimen@<\tymin
-    \TY@warn{tymin too large (\the\tymin), resetting to \the\dimen@}%
-    \tymin\dimen@
-  \fi
-  \setbox\tw@=\hbox{\unhbox\@ne
-    \loop
-\@tempdima=\lastskip
-\ifdim\@tempdima>\z@
-Z   \message{ecs=\the\@tempdima^^J}%
-   \global\advance\TY@linewidth-\@tempdima
-\fi
-    \unskip
-    \setbox\tw@=\lastbox
-    \ifhbox\tw@
-Z     \message{Col \the\TY@count: Initial=\the\wd\tw@\space}%
-      \ifdim\wd\tw@>\tymax
-        \wd\tw@\tymax
-Z       \message{> max\space}%
-Z     \else
-Z       \message{ \@spaces\space}%
-      \fi
-  \TY@width\dimen@
-Z \message{\the\dimen@\space}%
-  \advance\dimen@\wd\tw@
-Z \message{Final=\the\dimen@\space}%
-   \TY@width\xdef{\the\dimen@}%
-      \ifdim\dimen@<\tymin
-Z        \message{< tymin}%
-         \global\advance\TY@linewidth-\dimen@
-         \expandafter\xdef\csname TY@F\the\TY@count\endcsname
-                                                        {\the\dimen@}%
-       \else
-      \expandafter\ifx\csname TY@F\the\TY@count\endcsname\z@
-Z        \message{***}%
-         \global\advance\TY@linewidth-\dimen@
-         \expandafter\xdef\csname TY@F\the\TY@count\endcsname
-                                                        {\the\dimen@}%
-        \else
-Z        \message{> tymin}%
-         \global\advance\TY@tablewidth\dimen@
-         \global\expandafter\let\csname TY@F\the\TY@count\endcsname
-                                                               \maxdimen
-       \fi\fi
-       \advance\TY@count\m@ne
-    \repeat}%
-    \TY@checkmin
-    \TY@checkmin
-    \TY@checkmin
-    \TY@checkmin
-    \TY@count\z@
-    \let\TY@box\TY@box@v
-    \let\footnote\TY@footnote % restore footnotes
-  {\expandafter\TY@final\the\toks@\endTY@final}%
-  \count@\z@
-  \@tempswatrue
-  \@whilesw\if@tempswa\fi{%
-  \advance\count@\@ne
-  \expandafter\ifx\csname TY@SF\the\count@\endcsname\relax
-    \@tempswafalse
-  \else
-    \global\expandafter\let\csname TY@F\the\count@\expandafter\endcsname
-                   \csname TY@SF\the\count@\endcsname
-    \global\expandafter\let\csname TY@\the\count@\expandafter\endcsname
-                   \csname TY@S\the\count@\endcsname
-  \fi}%
-  \TY@linewidth\@ovxx
-  \TY@tablewidth\@ovyy
-    \ifnum0=`{\fi}}
-\def\TY@checkmin{%
-  \let\TY@checkmin\relax
-\ifdim\TY@tablewidth>\z@
-  \Gscale@div\TY@ratio\TY@linewidth\TY@tablewidth
- \ifdim\TY@tablewidth <\TY@linewidth
-   \def\TY@ratio{1}%
- \fi
-\else
-  \TY@warn{No suitable columns!}%
-  \def\TY@ratio{1}%
-\fi
-\count@\z@
-Z \message{^^JLine Width: \the\TY@linewidth,
-Z             Natural Width: \the\TY@tablewidth,
-Z             Ratio: \TY@ratio^^J}%
-\@tempdima\z@
-\loop
-\ifnum\count@<\TY@count
-\advance\count@\@ne
-  \ifdim\csname TY@F\the\count@\endcsname>\tymin
-    \dimen@\csname TY@\the\count@\endcsname
-    \dimen@\TY@ratio\dimen@
-    \ifdim\dimen@<\tymin
-Z     \message{Column \the\count@\space ->}%
-      \global\expandafter\let\csname TY@F\the\count@\endcsname\tymin
-      \global\advance\TY@linewidth-\tymin
-      \global\advance\TY@tablewidth-\csname TY@\the\count@\endcsname
-      \let\TY@checkmin\TY@@checkmin
-    \else
-      \expandafter\xdef\csname TY@F\the\count@\endcsname{\the\dimen@}%
-      \advance\@tempdima\csname TY@F\the\count@\endcsname
-    \fi
-  \fi
-Z \dimen@\csname TY@F\the\count@\endcsname\message{\the\dimen@, }%
-\repeat
-Z \message{^^JTotal:\the\@tempdima^^J}%
-}
-\let\TY@@checkmin\TY@checkmin
-\newdimen\TY@linewidth
-\def\tyformat{\everypar{{\nobreak\hskip\z@skip}}}
-\newdimen\tymin
-\tymin=10pt
-\newdimen\tymax
-\tymax=2\textwidth
-\def\@testpach{\@chclass
- \ifnum \@lastchclass=6 \@ne \@chnum \@ne \else
-  \ifnum \@lastchclass=7 5 \else
-   \ifnum \@lastchclass=8 \tw@ \else
-    \ifnum \@lastchclass=9 \thr@@
-   \else \z@
-   \ifnum \@lastchclass = 10 \else
-   \edef\@nextchar{\expandafter\string\@nextchar}%
-   \@chnum
-   \if \@nextchar c\z@ \else
-    \if \@nextchar l\@ne \else
-     \if \@nextchar r\tw@ \else
-   \if \@nextchar C7 \else
-    \if \@nextchar L8 \else
-     \if \@nextchar R9 \else
-     \if \@nextchar J10 \else
-   \z@ \@chclass
-   \if\@nextchar |\@ne \else
-    \if \@nextchar !6 \else
-     \if \@nextchar @7 \else
-      \if \@nextchar <8 \else
-       \if \@nextchar >9 \else
-  10
-  \@chnum
-  \if \@nextchar m\thr@@\else
-   \if \@nextchar p4 \else
-    \if \@nextchar b5 \else
-   \z@ \@chclass \z@ \@preamerr \z@ \fi \fi \fi \fi\fi \fi \fi\fi \fi
-     \fi  \fi  \fi  \fi  \fi  \fi \fi \fi \fi \fi \fi}
-\def\TY@classz{%
-  \@classx
-  \@tempcnta\count@
-  \ifx\TY@box\TY@box@v
-    \global\advance\TY@count\@ne
-  \fi
-  \let\centering c%
-  \let\raggedright\noindent
-  \let\raggedleft\indent
-  \let\arraybackslash\relax
-  \prepnext@tok
-  \ifnum\@chnum<4
-    \global\expandafter\let\csname TY@F\the\TY@count\endcsname\z@
-  \fi
-  \ifnum\@chnum=6
-    \global\expandafter\let\csname TY@F\the\TY@count\endcsname\z@
-  \fi
-  \@addtopreamble{%
-    \ifcase\@chnum
-      \hfil \d@llarbegin\insert@column\d@llarend \hfil \or
-      \kern\z@
-       \d@llarbegin \insert@column \d@llarend \hfil \or
-      \hfil\kern\z@ \d@llarbegin \insert@column \d@llarend \or
-      $\vcenter\@startpbox{\@nextchar}\insert@column \@endpbox $\or
-      \vtop \@startpbox{\@nextchar}\insert@column \@endpbox \or
-      \vbox \@startpbox{\@nextchar}\insert@column \@endpbox \or
-      \d@llarbegin \insert@column \d@llarend \or% dubious "s" case
-      \TY@box\centering\or
-      \TY@box\raggedright\or
-      \TY@box\raggedleft\or
-      \TY@box\relax
-    \fi}\prepnext@tok}
-\def\TY@box#1{%
-  \ifx\centering#1%
-      \hfil \d@llarbegin\insert@column\d@llarend \hfil \else
-  \ifx\raggedright#1%
-        \kern\z@%<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
-      \d@llarbegin \insert@column \d@llarend \hfil \else
-  \ifx\raggedleft#1%
-      \hfil\kern\z@ \d@llarbegin \insert@column \d@llarend \else
-  \ifx\relax#1%
-       \d@llarbegin \insert@column \d@llarend
-  \fi  \fi  \fi  \fi}
-\def\TY@box@v#1{%
-      \vtop \@startpbox{\csname TY@F\the\TY@count\endcsname}%
-              #1\arraybackslash\tyformat
-                              \insert@column\@endpbox}
-\newdimen\TY@tablewidth
-\def\Gscale@div#1#2#3{%
-  \setlength\dimen@{#3}%
-  \ifdim\dimen@=\z@
-    \PackageError{graphics}{Division by 0}\@eha
-    \dimen@#2%
-  \fi
-  \edef\@tempd{\the\dimen@}%
-  \setlength\dimen@{#2}%
-  \count@65536\relax
-  \ifdim\dimen@<\z@
-    \dimen@-\dimen@
-    \count@-\count@
-  \fi
-  \loop
-    \ifdim\dimen@<8192\p@
-      \dimen@\tw@\dimen@
-      \divide\count@\tw@
-  \repeat
-  \dimen@ii=\@tempd\relax
-  \divide\dimen@ii\count@
-  \divide\dimen@\dimen@ii
-  \edef#1{\strip@pt\dimen@}}
-\long\def\TY@get@body#1\end
-  {\toks@\expandafter{\the\toks@#1}\TY@find@end}
-\def\TY@find@end#1{%
-  \def\@tempa{#1}%
-  \ifx\@tempa\TY@\def\@tempa{\end{#1}}\expandafter\@tempa
-  \else\toks@\expandafter
-    {\the\toks@\end{#1}}\expandafter\TY@get@body\fi}
-\def\TY@warn{%
-  \PackageWarning{tabulary}}
-\catcode`\Z=11
-\AtBeginDocument{
-\@ifpackageloaded{colortbl}{%
-\expandafter\def\expandafter\@mkpream\expandafter#\expandafter1%
-  \expandafter{%
-    \expandafter\let\expandafter\CT@setup\expandafter\relax
-    \expandafter\let\expandafter\CT@color\expandafter\relax
-    \expandafter\let\expandafter\CT@do@color\expandafter\relax
-    \expandafter\let\expandafter\color\expandafter\relax
-    \expandafter\let\expandafter\CT@column@color\expandafter\relax
-    \expandafter\let\expandafter\CT@row@color\expandafter\relax
-    \@mkpream{#1}}
-\let\TY@@mkpream\@mkpream
-\def\TY@classz{%
-  \@classx
-  \@tempcnta\count@
-  \ifx\TY@box\TY@box@v
-    \global\advance\TY@count\@ne
-  \fi
-  \let\centering c%
-  \let\raggedright\noindent
-  \let\raggedleft\indent
-  \let\arraybackslash\relax
-  \prepnext@tok
-\expandafter\CT@extract\the\toks\@tempcnta\columncolor!\@nil
-  \ifnum\@chnum<4
-    \global\expandafter\let\csname TY@F\the\TY@count\endcsname\z@
-  \fi
-  \ifnum\@chnum=6
-    \global\expandafter\let\csname TY@F\the\TY@count\endcsname\z@
-  \fi
-  \@addtopreamble{%
-    \setbox\z@\hbox\bgroup\bgroup
-    \ifcase\@chnum
-      \hskip\stretch{.5}\kern\z@
-      \d@llarbegin\insert@column\d@llarend\hskip\stretch{.5}\or
-      \kern\z@%<<<<<<<<<<<<<<<<<<<<<<<<<<<
-       \d@llarbegin \insert@column \d@llarend \hfill \or
-      \hfill\kern\z@ \d@llarbegin \insert@column \d@llarend \or
-      $\vcenter\@startpbox{\@nextchar}\insert@column \@endpbox $\or
-      \vtop \@startpbox{\@nextchar}\insert@column \@endpbox \or
-      \vbox \@startpbox{\@nextchar}\insert@column \@endpbox \or
-      \d@llarbegin \insert@column \d@llarend \or% dubious s case
-      \TY@box\centering\or
-      \TY@box\raggedright\or
-      \TY@box\raggedleft\or
-      \TY@box\relax
-    \fi
- \egroup\egroup
-\begingroup
-  \CT@setup
-  \CT@column@color
-  \CT@row@color
-  \CT@do@color
-\endgroup
-        \@tempdima\ht\z@
-        \advance\@tempdima\minrowclearance
-        \vrule\@height\@tempdima\@width\z@
-\unhbox\z@
-}\prepnext@tok}%
-    \def\TY@arrayrule{%
-      \TY@subwidth\arrayrulewidth
-      \@addtopreamble{{\CT@arc@\vline}}}%
-    \def\TY@classvi{\ifcase \@lastchclass
-      \@acol \or
-      \TY@subwidth\doublerulesep
-      \ifx\CT@drsc@\relax
-        \@addtopreamble{\hskip\doublerulesep}%
-      \else
-        \@addtopreamble{{\CT@drsc@\vrule\@width\doublerulesep}}%
-      \fi\or
-      \@acol \or
-      \@classvii
-      \fi}%
-}{%
-\let\CT@start\relax
-}
-}
-{\uccode`\*=`\ %
-\uppercase{\gdef\TX@verb{%
-  \leavevmode\null\TX@vwarn
-  {\ifnum0=`}\fi\ttfamily\let\\\ignorespaces
-  \@ifstar{\let~*\TX@vb}{\TX@vb}}}}
-\def\TX@vb#1{\def\@tempa##1#1{\toks@{##1}\edef\@tempa{\the\toks@}%
-    \expandafter\TX@v\meaning\@tempa\\ \\\ifnum0=`{\fi}}\@tempa!}
-\def\TX@v#1!{\afterassignment\TX@vfirst\let\@tempa= }
-\begingroup
-\catcode`\*=\catcode`\#
-\catcode`\#=12
-\gdef\TX@vfirst{%
-  \if\@tempa#%
-    \def\@tempb{\TX@v@#}%
-  \else
-    \let\@tempb\TX@v@
-    \if\@tempa\space~\else\@tempa\fi
-  \fi
-  \@tempb}
-\gdef\TX@v@*1 *2{%
-  \TX@v@hash*1##\relax\if*2\\\else~\expandafter\TX@v@\fi*2}
-\gdef\TX@v@hash*1##*2{*1\ifx*2\relax\else#\expandafter\TX@v@hash\fi*2}
-\endgroup
-\def\TX@vwarn{%
-  \@warning{\noexpand\verb may be unreliable inside tabularx/y}%
-  \global\let\TX@vwarn\@empty}
-\endinput
-%%
-%% End of file `tabulary.sty'.
-- 
2.11.0

--
To unsubscribe from this list: send the line "unsubscribe devicetree-spec" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Device Tree]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux Audio Users]     [Photos]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]

  Powered by Linux