From 3edcf20d330b1fcdd731a3810ce2a237aadfced8 Mon Sep 17 00:00:00 2001 From: Andrew Bayer Date: Fri, 22 Jul 2011 20:03:59 +0000 Subject: [PATCH] Add webdocs target to build release docs website. From: Aaron Kimball git-svn-id: https://svn.apache.org/repos/asf/incubator/sqoop/trunk@1149922 13f79535-47bb-0310-9956-ffa450edef68 --- build.xml | 11 ++ src/docs/Makefile | 30 +++- src/docs/dev/SqoopDevGuide.txt | 5 + src/docs/dev/preface.txt | 2 +- src/docs/user/SqoopUserGuide.txt | 4 + src/docs/user/preface.txt | 3 +- src/docs/user/support.txt | 7 +- src/docs/user/version.txt | 2 +- src/docs/web/breadcrumbs.xsl | 30 ++++ src/docs/web/docbook.css | 248 ++++++++++++++++++++++++++++ src/docs/web/footer.xsl | 29 ++++ src/docs/web/header.xsl | 23 +++ src/docs/web/html.xsl | 66 ++++++++ src/docs/web/images/README | 5 + src/docs/web/images/callouts/1.png | Bin 0 -> 329 bytes src/docs/web/images/callouts/10.png | Bin 0 -> 361 bytes src/docs/web/images/callouts/11.png | Bin 0 -> 565 bytes src/docs/web/images/callouts/12.png | Bin 0 -> 617 bytes src/docs/web/images/callouts/13.png | Bin 0 -> 623 bytes src/docs/web/images/callouts/14.png | Bin 0 -> 411 bytes src/docs/web/images/callouts/15.png | Bin 0 -> 640 bytes src/docs/web/images/callouts/2.png | Bin 0 -> 353 bytes src/docs/web/images/callouts/3.png | Bin 0 -> 350 bytes src/docs/web/images/callouts/4.png | Bin 0 -> 345 bytes src/docs/web/images/callouts/5.png | Bin 0 -> 348 bytes src/docs/web/images/callouts/6.png | Bin 0 -> 355 bytes src/docs/web/images/callouts/7.png | Bin 0 -> 344 bytes src/docs/web/images/callouts/8.png | Bin 0 -> 357 bytes src/docs/web/images/callouts/9.png | Bin 0 -> 357 bytes src/docs/web/images/caution.png | Bin 0 -> 2554 bytes src/docs/web/images/example.png | Bin 0 -> 2354 bytes src/docs/web/images/home.png | Bin 0 -> 1340 bytes src/docs/web/images/important.png | Bin 0 -> 2657 bytes src/docs/web/images/next.png | Bin 0 -> 1302 bytes src/docs/web/images/note.png | Bin 0 -> 2730 bytes src/docs/web/images/prev.png | Bin 0 -> 1348 bytes src/docs/web/images/tip.png | Bin 0 -> 2602 bytes src/docs/web/images/up.png | Bin 0 -> 1320 bytes src/docs/web/images/warning.png | Bin 0 -> 2828 bytes src/docs/web/index.txt | 28 ++++ 40 files changed, 487 insertions(+), 6 deletions(-) create mode 100644 src/docs/web/breadcrumbs.xsl create mode 100644 src/docs/web/docbook.css create mode 100644 src/docs/web/footer.xsl create mode 100644 src/docs/web/header.xsl create mode 100644 src/docs/web/html.xsl create mode 100644 src/docs/web/images/README create mode 100644 src/docs/web/images/callouts/1.png create mode 100644 src/docs/web/images/callouts/10.png create mode 100644 src/docs/web/images/callouts/11.png create mode 100644 src/docs/web/images/callouts/12.png create mode 100644 src/docs/web/images/callouts/13.png create mode 100644 src/docs/web/images/callouts/14.png create mode 100644 src/docs/web/images/callouts/15.png create mode 100644 src/docs/web/images/callouts/2.png create mode 100644 src/docs/web/images/callouts/3.png create mode 100644 src/docs/web/images/callouts/4.png create mode 100644 src/docs/web/images/callouts/5.png create mode 100644 src/docs/web/images/callouts/6.png create mode 100644 src/docs/web/images/callouts/7.png create mode 100644 src/docs/web/images/callouts/8.png create mode 100644 src/docs/web/images/callouts/9.png create mode 100644 src/docs/web/images/caution.png create mode 100644 src/docs/web/images/example.png create mode 100644 src/docs/web/images/home.png create mode 100644 src/docs/web/images/important.png create mode 100644 src/docs/web/images/next.png create mode 100644 src/docs/web/images/note.png create mode 100644 src/docs/web/images/prev.png create mode 100644 src/docs/web/images/tip.png create mode 100644 src/docs/web/images/up.png create mode 100644 src/docs/web/images/warning.png create mode 100644 src/docs/web/index.txt diff --git a/build.xml b/build.xml index 53d399dd..48b3c560 100644 --- a/build.xml +++ b/build.xml @@ -554,11 +554,22 @@ + + + + + + + + + + + diff --git a/src/docs/Makefile b/src/docs/Makefile index 103bebf5..a84bce8b 100644 --- a/src/docs/Makefile +++ b/src/docs/Makefile @@ -15,6 +15,9 @@ BUILDROOT=../../build BUILD_DIR=$(BUILDROOT)/docs +WEBSITE_DIR=$(BUILDROOT)/webdocs + +VERSION=Unknown all: man userguide devguide @@ -25,10 +28,33 @@ devguide: $(BUILD_DIR)/SqoopDevGuide.html MANSOURCES=$(shell echo man/sqoop*.txt) MANPAGES=$(MANSOURCES:.txt=.1.gz) +REVDATE=$(shell date) + + +website: + mkdir -p $(WEBSITE_DIR) + asciidoc --unsafe -a revnumber=$(VERSION) \ + -b docbook \ + user/SqoopUserGuide.txt + xmlto -o $(WEBSITE_DIR) -m web/html.xsl html-nochunks user/SqoopUserGuide.xml + asciidoc --unsafe -a revnumber=$(VERSION) \ + -b docbook \ + dev/SqoopDevGuide.txt + xmlto -o $(WEBSITE_DIR) -m web/html.xsl html-nochunks dev/SqoopDevGuide.xml + asciidoc --unsafe -a revnumber=$(VERSION) \ + -b docbook \ + web/index.txt + xmlto -o $(WEBSITE_DIR) -m web/html.xsl html-nochunks web/index.xml + cp web/docbook.css $(WEBSITE_DIR) + rsync -a web/images $(WEBSITE_DIR)/ + rm user/SqoopUserGuide.xml + rm dev/SqoopDevGuide.xml + rm web/index.xml + man: $(MANPAGES) %.1.gz : %.txt - asciidoc --unsafe -b docbook -d manpage $< + asciidoc --unsafe -b docbook -d manpage -a "author=Sqoop Team" $< xmlto man $*.xml -o man gzip $*.1 rm $*.xml @@ -37,12 +63,14 @@ man: $(MANPAGES) $(BUILD_DIR)/SqoopUserGuide.html: user/*.txt asciidoc -a toc -a toclevels=1 -a "toc-title=Table of Contents" \ + -a revnumber=$(VERSION) -a "revdate=$(REVDATE)" \ user/SqoopUserGuide.txt mkdir -p $(BUILD_DIR) mv user/SqoopUserGuide.html $(BUILD_DIR) $(BUILD_DIR)/SqoopDevGuide.html: dev/*.txt asciidoc -a toc -a toclevels=1 -a "toc-title=Table of Contents" \ + -a revnumber=$(VERSION) -a "revdate=$(REVDATE)" \ dev/SqoopDevGuide.txt mkdir -p $(BUILD_DIR) mv dev/SqoopDevGuide.html $(BUILD_DIR) diff --git a/src/docs/dev/SqoopDevGuide.txt b/src/docs/dev/SqoopDevGuide.txt index 4a6f3ed6..d1f451a1 100644 --- a/src/docs/dev/SqoopDevGuide.txt +++ b/src/docs/dev/SqoopDevGuide.txt @@ -16,6 +16,11 @@ limitations under the License. //// +Sqoop Developer's Guide v{revnumber} +==================================== + + + include::intro.txt[] include::preface.txt[] diff --git a/src/docs/dev/preface.txt b/src/docs/dev/preface.txt index ce9fa705..4163ae05 100644 --- a/src/docs/dev/preface.txt +++ b/src/docs/dev/preface.txt @@ -21,7 +21,7 @@ Supported Releases ------------------ -This documentation applies to Sqoop v1.0.0 (June 2010). +This documentation applies to Sqoop v{revnumber}. Sqoop Releases -------------- diff --git a/src/docs/user/SqoopUserGuide.txt b/src/docs/user/SqoopUserGuide.txt index 35ac4ec3..921ec5fc 100644 --- a/src/docs/user/SqoopUserGuide.txt +++ b/src/docs/user/SqoopUserGuide.txt @@ -16,6 +16,10 @@ limitations under the License. //// +Sqoop User Guide (v{revnumber}) +=============================== + + include::intro.txt[] diff --git a/src/docs/user/preface.txt b/src/docs/user/preface.txt index 6d956327..3fe142ce 100644 --- a/src/docs/user/preface.txt +++ b/src/docs/user/preface.txt @@ -21,7 +21,7 @@ Supported Releases ------------------ -This documentation applies to Sqoop v1.0.0 (June 2010). +This documentation applies to Sqoop v{revnumber}. Sqoop Releases -------------- @@ -30,6 +30,7 @@ Sqoop is an open source software product of Cloudera, Inc. Software development for Sqoop occurs at http://github.com/cloudera/sqoop. At that site you can obtain: + - New releases of Sqoop as well as its most recent source code - An issue tracker - A wiki that contains Sqoop documentation diff --git a/src/docs/user/support.txt b/src/docs/user/support.txt index 36927b4c..c0da874a 100644 --- a/src/docs/user/support.txt +++ b/src/docs/user/support.txt @@ -19,11 +19,14 @@ Getting Support --------------- +Some general information is available at the +http://wiki.github.com/cloudera/sqoop/[Sqoop wiki]. + Report bugs in Sqoop to the issue tracker at http://github.com/cloudera/sqoop/issues[]. -For general questions and answers, a support forum is available at -http://getsatisfaction.com/cloudera/products/cloudera_sqoop[]. +Questions and discussion regarding the usage of Sqoop should be directed to the +http://groups.google.com/a/cloudera.org/group/sqoop-user[sqoop-user mailing list]. Before contacting either forum, run your Sqoop job with the +\--verbose+ flag to acquire as much debugging information as diff --git a/src/docs/user/version.txt b/src/docs/user/version.txt index 077eb2f1..5ede8611 100644 --- a/src/docs/user/version.txt +++ b/src/docs/user/version.txt @@ -41,7 +41,7 @@ Display the version: ---- $ sqoop version -Sqoop 1.0.0 +Sqoop {revnumber} git commit id 46b3e06b79a8411320d77c984c3030db47dd1c22 Compiled by aaron@jargon on Mon May 17 13:43:22 PDT 2010 ---- diff --git a/src/docs/web/breadcrumbs.xsl b/src/docs/web/breadcrumbs.xsl new file mode 100644 index 00000000..3863192a --- /dev/null +++ b/src/docs/web/breadcrumbs.xsl @@ -0,0 +1,30 @@ + + + + + + + + diff --git a/src/docs/web/docbook.css b/src/docs/web/docbook.css new file mode 100644 index 00000000..85e44491 --- /dev/null +++ b/src/docs/web/docbook.css @@ -0,0 +1,248 @@ +/* + * Copyright (c) 2001, 2003 The FreeBSD Documentation Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD: doc/share/misc/docbook.css,v 1.14 2008/11/21 07:28:34 keramida Exp $ + */ + +BODY ADDRESS { + line-height: 1.3; + margin: .6em 0; +} + +BODY BLOCKQUOTE { + margin-top: .75em; + line-height: 1.5; + margin-bottom: .75em; +} + +HTML BODY { + margin: 1em 4% 1em 4%; + line-height: 1.2; + font-family: verdana; +} + +a { + text-decoration: none; + color: #1c84bf; +} + +a:hover { + text-decoration: underline; +} + +a:visited { + color: #597e93; +} + +div.titlepage .title { + font-size: 26px; +} + +.LEGALNOTICE { + font-size: small; + font-variant: small-caps; +} + +BODY DIV { + margin: 0; +} + +DL { + margin: .8em 0; + line-height: 1.2; +} + +BODY FORM { + margin: .6em 0; +} + +H1, H2, H3, H4, H5, H6, +DIV.EXAMPLE P B, +.QUESTION, +DIV.TABLE P B, +DIV.PROCEDURE P B { + color: #148BCF; +} + +BODY H1, BODY H2, BODY H3, BODY H4, BODY H5, BODY H6 { + line-height: 1.3; + margin-left: 0; +} + +BODY H1, H2, H3, H4, H5, H6 { + margin: 6px 0 0 0; +} + +BODY HR { + border-width: 0 0 1px 0; + border-style: solid; + border-color: #0068BB; +} + +BODY IMG.NAVHEADER { + margin: 0 0 0 -4%; +} + +OL { + margin: 0 0 0 5%; + line-height: 1.2; +} + +BODY PRE { + margin: .75em 0; + line-height: 1.0; + font-family: monospace; +} + +BODY TD, BODY TH { + line-height: 1.2; +} + +UL, BODY DIR, BODY MENU { + margin: 0 0 0 5%; + line-height: 1.2; +} + +HTML { + margin: 0; + padding: 0; +} + +BODY P B.APPLICATION { + color: #000000; +} + +.navfooter td, .literal, .FILENAME { + color: #007a00; + font-family: monospace; +} + + +.GUIMENU, .GUIMENUITEM, .GUISUBMENU, +.GUILABEL, .INTERFACE, +.SHORTCUT, .SHORTCUT .KEYCAP { + font-weight: bold; +} + +.GUIBUTTON { + background-color: #CFCFCF; + padding: 2px; +} + +.ACCEL { + background-color: #F0F0F0; + text-decoration: underline; +} + +.PROGRAMLISTING { + padding: 1ex; + background-color: #eee; + border: 1px solid #ccc; +} + +@media screen { /* hide from IE3 */:/ + a[href]:hover { background: #ffa } +} + +.NOTE, .SCREEN { + color: #222; + background: #fff; + border: 1px solid #ccc; + padding: 0.4em 0.4em; +} + +.SCREEN { + background: #eee; +} + +.TIP { + color: #004F00; + background: #fff; + border: 1px solid green; + padding: 0.4em 0.4em; +} + +table.CDH { + padding:0px 0px 8px +} + +table.CDH th { + background: #EDF2F9; + border-right: 0.5pt solid #adb6cd; + border-bottom: 0.5pt solid #adb6cd; + padding:2px 8px 1px; +} + +table.CDH td { + font-size: 12px; +} + +div.breadcrumbs { + border-top: 2px solid #0068BB; + background: #EDF2F9; + font-style: bold; + font-size: small; + padding: 0.6em 0.6em; +} + +span.breadcrumb-node { + font-style: italic; +} + +/* Match the the breadcrumbs at the top */ +div.footer-text { + border-bottom: 2px solid #0068BB; + background: #EDF2F9; + font-size: small; + padding: 0.2em 0.2em; + text-align: center; +} + +.IMPORTANT, .caution { + font-style:italic; + border: 1px solid #a00; + border-left: 12px solid #c00; + padding: 0.1em 1em; +} + +.WARNING { + color: #9F1313; + background: #fff; + border: 1px solid #e59595; + padding: 0.4em 0.4em; + width: 85%; +} + +.EXAMPLE { + width: 100%; +} + +.tip, .note, .caution { + margin:4px 0 4px; +} + +img { + border: 0; +} diff --git a/src/docs/web/footer.xsl b/src/docs/web/footer.xsl new file mode 100644 index 00000000..b42c945e --- /dev/null +++ b/src/docs/web/footer.xsl @@ -0,0 +1,29 @@ + + + + + + + + + + + diff --git a/src/docs/web/header.xsl b/src/docs/web/header.xsl new file mode 100644 index 00000000..67462985 --- /dev/null +++ b/src/docs/web/header.xsl @@ -0,0 +1,23 @@ + + + + + + + + + +
+
+ Documentation Home +
+ + + + + + diff --git a/src/docs/web/html.xsl b/src/docs/web/html.xsl new file mode 100644 index 00000000..b75d4e92 --- /dev/null +++ b/src/docs/web/html.xsl @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + .png + images/ + + + .png + images/ + + + + + + + + + + + + + + +appendix toc,title +article toc,title,figure,equation +book toc,title,figure,example,equation +chapter toc,title +part toc,title +preface toc,title +qandadiv toc +qandaset toc +reference toc,title +sect1 toc +sect2 toc +sect3 toc +sect4 toc +sect5 toc +section toc +set toc,title + + + diff --git a/src/docs/web/images/README b/src/docs/web/images/README new file mode 100644 index 00000000..f12b2a73 --- /dev/null +++ b/src/docs/web/images/README @@ -0,0 +1,5 @@ +Replaced the plain DocBook XSL admonition icons with Jimmac's DocBook +icons (http://jimmac.musichall.cz/ikony.php3). I dropped transparency +from the Jimmac icons to get round MS IE and FOP PNG incompatibilies. + +Stuart Rackham diff --git a/src/docs/web/images/callouts/1.png b/src/docs/web/images/callouts/1.png new file mode 100644 index 0000000000000000000000000000000000000000..7d473430b7bec514f7de12f5769fe7c5859e8c5d GIT binary patch literal 329 zcmeAS@N?(olHy`uVBq!ia0vp^JRr;gBp8b2n5}^nQC}X^4DKU-G|w_t}fLBA)Suv#nrW z!^h2QnY_`l!BOq-UXEX{m2up>JTQkX)2m zTvF+fTUlI^nXH#utd~++ke^qgmzgTe~DWM4ffP81J literal 0 HcmV?d00001 diff --git a/src/docs/web/images/callouts/10.png b/src/docs/web/images/callouts/10.png new file mode 100644 index 0000000000000000000000000000000000000000..997bbc8246a316e040e0804174ba260e219d7d33 GIT binary patch literal 361 zcmeAS@N?(olHy`uVBq!ia0vp^JRr;gBp8b2n5}^nQWtZ~+OvdJMW|Y+^UT?O-M{rKJsmzxdayJ{ zDCQA!%%@7Jj$q%-wf8e0_jRx8Dqi$}^?K=?6FriQFLv>>oc^CE+aVHhW3=nZ+fQ4!M=ZC7H>3sl|FJr3LwU zC3?yExf6FO?f@F61vV}-Juk7O6lk8Yg;}bFaZ-|HQc7Azopr01?u8M*si- literal 0 HcmV?d00001 diff --git a/src/docs/web/images/callouts/11.png b/src/docs/web/images/callouts/11.png new file mode 100644 index 0000000000000000000000000000000000000000..ce47dac3f52ac49017749a3fea53db57d006993c GIT binary patch literal 565 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1SD^YpWXnZI14-?iy0V%N{XE z)7O>#600DeuDZ?5tOl@ql94%{~0TwC?8m~C^ZqJRG}m@H-L1 z5L@scq?{XUcxG{OP9jig5ySQaTl#^*93bKF#G<^+ymW>G($Cs~V(bw8rA5i93}62@ zzlJGu&d<$F%`0K}c4pdspcorSSx9C{PAbEScbC)|7#JBmT^vIy=9KoYUDZ+`aP)jU z&ny=ErrK^#Gw!AcR}pdfMERuV^@&0$@(#^6b8c@rn^6RWX3pUb z4*6@PZ+H0#u=rjsXzS?6n6*sBGbHqGTU%mCsH?n#%j;eD^2}qe=iX*J@VQ3BRpz+u z{PX#N(^9X${`$90+;!pWs>o@z_n8G)7Uo7PJz`jrS+)QE@=PWHmc~UIw=WmUe73o7 z>^bR(M752aYoNg~ozu7U7&{(U>{s!;bn#f?ItjL^o`e{*EOQHqO;ccnz9hLK5@2cAyw@AaPFL~Cp#02|E|4xeQteNtB7waMs QVCXP-y85}Sb4q9e0GRUFb^rhX literal 0 HcmV?d00001 diff --git a/src/docs/web/images/callouts/12.png b/src/docs/web/images/callouts/12.png new file mode 100644 index 0000000000000000000000000000000000000000..31daf4e2f25b6712499ee32de9c2e3b050b691ca GIT binary patch literal 617 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1SD^YpWXnZI14-?iy0V%N{XE z)7O>#600De9$%>2LVd81Yeb1-X-P(Y5yQ%LXFPyHJS9LOm(=3qqRfJl%=|nCVNOM5 zpg0#u+&RCXvM4h>ql94%{~0TwC?8m~C^ZqJRG}m@H-L1 z5L@scq?{XUcxG{OP9jig5ySQaTl#^*93bKF#G<^+ymW>G($Cs~V(bw8rA5i93}62@ zzlJGu&d<$F%`0K}c4pdspcorSSx9C{PAbEScbC)|7#JBmT^vIy=Cn>wTzx1(qV@bS z0hYvspf(--lM>otrqbK$7p{3DzJ|+KN8%5ows)AI?zWk_n>jwEHXrTJecpEW_0xL= z?}N`*R`T~d2{AN${y8T#GEn4hUb&52^}Op@TW4{oc)A6)%$5=G}h# z?O{QLj@aRcAIf&y&OiUN=H2gq=_}V|pWfuReDV|{jwXw~>#w)I|9${XE z)7O>#600Dep5bGK9wD%hYeb1-X-P(Y5yQ%LXFPyHJS9LOm(=3qqRfJl%=|nCVNOM5 zpg0#u+&RCXvM4h>ql94%{~0TwC?8m~C^ZqJRG}m@H-L1 z5L@scq?{XUcxG{OP9jig5ySQaTl#^*93bKF#G<^+ymW>G($Cs~V(bw8rA5i93}62@ zzlJGu&d<$F%`0K}c4pdspcorSSx9C{PAbEScbC)|7#JBmT^vIy=Cn>w>~AWNX^a2R zbkveVY|45D7UnZ&JtjPwvdCCscZp0EA*0()#GOw)UH4-^&)y^E*4%UC)*|J}q_Ss;tN`nd8$>x9$_Xb^O2EpX&@C ZI46EzbLxq-voTO7gQu&X%Q~loCIF_C`w;*D literal 0 HcmV?d00001 diff --git a/src/docs/web/images/callouts/14.png b/src/docs/web/images/callouts/14.png new file mode 100644 index 0000000000000000000000000000000000000000..64014b75fe2e84d45ed861974c72462727979360 GIT binary patch literal 411 zcmV;M0c8G(P)!ax*-PXaQ9e~6^e1gu=a6a&KSz}bR`+prYG9ayB$BDjWGfIE;t#wl!+ zR3S(jA%y#i_@eOOedXoc%RQe%L;wH~k+s%ZI~)!<=dD%?4MaplaU9QPGski2q3`>r z(}{j@0a$CLl+)={2vLWml*i-oa5#J}DW$gCZB~Z!(!M#)2St|1_V^0qpmCrBof=Y&NUas@LmfSw=)4B4f;8Fu)(eFsv24 zJzXxBrayquXcR?J{XE z)7O>#600De0j~t#c`vY#Yeb1-X-P(Y5yQ%LXFPyHJS9LOm(=3qqRfJl%=|nCVNOM5 zpg0#u+&RCXvM4h>ql94%{~0TwC?8m~C^ZqJRG}m@H-L1 z5L@scq?{XUcxG{OP9jig5ySQaTl#^*93bKF#G<^+ymW>G($Cs~V(bw8rA5i93}62@ zzlJGu&d<$F%`0K}c4pdspcorSSx9C{PAbEScbC)|7#JBmT^vIy=9Eq_Jl&Ka(%QdX zh{H8O%#_7)Tc@t$mM`p4(Ne7omR*~(>gd8_8AZH{=3ms$Fmzm^yL@_+(#aQQ5>7QW z>3g2fIsH(ugM)!V$x4Rr_+!J_XU%4xbz0aE;^N{m@42Z|@0S@TQ=WbP`TMV5Ok;<| z^Ihv+@6tQ{sciRF9dD7Nr=KobwJJ68zJK$<1Pd9rz%4O)*;}Jzj&~nTGMecz>B%lV zK|`fmIc8mp-h8iSXiGFW=C(L+XH4DRxZQX87^-dLuD>odo6YLT@Sw)dfBEIG)v2@6 zR)%mL7GRj1x-&v&+2q@A%a&h0`Lw7|#(w_!tgT!PoJ|+re`lxaY7e*=hH)_rZeB4|imU1$R#1`!P>&$poQl;nzm}mD5ZFopaX|GsS%q*{P~< z;WtmO%lhToBL0i}yfkaOt?EN=nkLNGuU`ywhI5H)L`iUdT1k0gQ7VIjhO(w-Zen_> zZ(@38a<+nro{^q~f~BRtfrY+-p+a&|W^qZSLvCepNoKNMYO!8QX+eHoiC%Jk?!;Y+ zJAlS%fsM;d&r2*R1)67JkeZlkYGj#gX_9E3W@4U_nw*@Ln38B@k(iuhnUeN2eF0kK0(Y1u|9Rc(19XFPiEBhjaDG}zd16s2gM)^$re|(qda7?? zdS-IAf{C7yo`r&?rM`iMzJZ}aa#3b+Nu@(>WpPPnvR-PjUP@^}eqM=Qa(?c_U5Yz^ z#%Y0#%S_KpEGY$=XJL?(l#*ybuErX#^g`ttQfwn3r>K)tuC)r#2`iJ>Prt42#Ndx#Uc~1)>aw z3jE@Q4|!9Z%lVv}- zc=48cF7H)t`(Ck`^+mtha~Np7bBSw2NpOBzNqJ&XDuaWDvZiNlVtT4?VtQtBwt|VC zk)DNurKP@sg}#BILUK`NaY>~^Ze?*vX0l#tv0h4PL4IC|UUGi!#9fLzfW~Qojmu2W zODrh`nrE42VU(7fm~5G9U~HM3l#*m_WNcxOXkuzEX4g z+-vfUhb0A>b04=Im{6XiQd1v%r%>h0$G8U7E1If8OQ!N~xOYY5h0NDT$p9(iZ?Q&e z18-(+l~J8O`)kc}e&uL$eW&>P-#`~Qm$*ih1m~xflqVLYGB{``YkKA;rl!p+yCFkc(+@-h!Xq*<< zxXkpt#FA2=d1VEBsYynrsitN|Y01eJ$;p;U#>wWX2KP5v&I9V=1L+C? fTFYQ)RAFeOZJ=$?lDoSWD8u0C>gTe~DWM4f^}upZ literal 0 HcmV?d00001 diff --git a/src/docs/web/images/callouts/6.png b/src/docs/web/images/callouts/6.png new file mode 100644 index 0000000000000000000000000000000000000000..0ba694af6c07d947d219b45a629bd32c60a0f5fe GIT binary patch literal 355 zcmeAS@N?(olHy`uVBq!ia0vp^JRr;gBp8b2n5}^nQ*)Bra@SU# zmiz#bR~{$s2si{S(aY|Z}Vd7tb ouUmn-_&~Y>fYve?8dVq?X&Y!8wB+ut1u%w%U~xZhnMEEs6JbBSw2NpOBzNqJ&XDuaWDvZiNlVtT4?VtQtBwt|VC zk)DNurKP@sg}#BILUK`NaY>~^Ze?*vX0l#tv0h4PL4IC|UUGi!#9fLzfW~Qojmu2W zODrh`nrCEbVQgk$XkwI@Y+{_8nv`N>YGIaQkz#0QY@Te9lBQ<)awbq0A4pdK&{_sV bqY6VKZ3AtCmfYR7Kp6&4S3j3^P6u&S`V$cAh@R~F=4@V4jxkzlaQrcFYWK{)(`o5XZnut z=nE4SU2g1ZW%;@@I$>_e3F8a=8WK~|CVXt1DqisQxtIX|`YW_n&?Nh#1gQ}d)$LrYTw(_{nVG)tp2V+#}WG*e^KRLdkoLz7g? qn(IA84Qgo42`r6v<+Hvch>@C7(8A5T-G@yGywn*$#_oy literal 0 HcmV?d00001 diff --git a/src/docs/web/images/callouts/9.png b/src/docs/web/images/callouts/9.png new file mode 100644 index 0000000000000000000000000000000000000000..a0676d26cc2ff1de12c4ecdeefb44a0d71bc6bde GIT binary patch literal 357 zcmeAS@N?(olHy`uVBq!ia0vp^JRr;gBp8b2n5}^nQNRqa;^5&H%t0&v*|C|wdb9$wI zR@+N9#RIowg@Uqn&z-__Tzhhz!sG|vTxA7?=O|Y?u(d4T{!RM9c7chr6d%1?R=i16 z?@Ic{f32YJFJnVhX)qGzOMplv!L->5yAlT#}irms+fsQd*FoSE84k zpF44v;trs3T43Wc)AJHbN`dAXo0u6Hr<$gkq?lM38ycjV7+5A5Sr{ayr5c%-n;95g pF*H#D>f!_G3IJNmU}#ifXryhRZP1dtyA~+J;OXk;vd$@?2>@J{cB%jX literal 0 HcmV?d00001 diff --git a/src/docs/web/images/caution.png b/src/docs/web/images/caution.png new file mode 100644 index 0000000000000000000000000000000000000000..cb9d5ea0df3fb7abe744d6ef885847c13b786d4d GIT binary patch literal 2554 zcmVPx#1ZP1_K>z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBU*cu7P-R9Hvtm}yW|M;eAj!AUtmOHnh%%)~HLR9PcMG?rWGpb{ZL z1dJ<)aY5WLh(<8#m>6XjB8vnG6Gtt^g$P(~C1Elw7eQq4vUp{aMG-;Va6jFLao%$q z`?iK}j1`E{ZCeEszMz2Dc}$LQtDmwn!<2S9Jt)90@E=k+Oa z-Ep}&d+X{MB2!36NH3Ur1{5D3->+XkKI>fDkEL5Fv@(KL?4xC&a?K$h_rHlud-v|` zDN_%C4j(=&(#-#SoYe3ut%#uI`{c4vdM%i00_gR)uUAYFnZm-tdc@RSAo!+l-@bgN zg%0BhXeuM+a;-L68u{uTTDpr?#cW<2GbE0HNOGO{~NT>wQ#N54+<2{I*DMky{X52ZCR zxvGDN*@+LDL)Ba8l})tpE20V7uvpg%5NH4X{arG31{4tyA=0c|I8~ux+LVXMWx=#6 zO7&Z`2$UVagsQzsp%*DwPx9B0Qor>JM~gaPg`G2X2!z#$GkLg7qqkFOWt3bI4i{@{ zDv(x&p?`=pYnNDqrcE2r zl!YiX8b5l?PjlrUA8G!oJiR_e;79K z+|M4Mk)h31Kdm;P(P~q)g{n7GZG{*7x`mCupSFbLx{*uFH(y9upn*2_QU+)~C27-B z!p4{lY%?63T3A@vb;>XzFffoWV${gNmlHQAE{1PP;Tvf44K4DaYV_ibpdm`X@mOSQ zZtd=I=Snu2=>X%W>5j-0v>~swxfE;lrQL8&gR22L%k$^YB}oDkfb^IQ z05N2YyK&>j=+U~Zalkvq{|fqy7HYLo`i(ouT@K$grMnG$SGfu^ZjKd1*>+7wobjOv7z~^NuE2o z3>x%eS5)|=pKX5HKDObU9Wupg3cjiRWulLZF7G%v;Mk9V&CSgZ9z5VodOCFogmEuk zym&~I&Xm^I3MH1T?RE}B~bDBy19v||z@MF`aO{Jx!Z~~a% zXfQo`^a#0wNTQiu1LE>v1oVWekoVrbd)3v|)22=1(Qzk>**2-}>|Bz)h-A-~F0u-r zEoFQrrOzU1GwObs80Bp)9Krjzy1J@Vs)B+7lnbKWx^?UB-Ma|>$p60M~S&>&NjQh%@%X)G-*j~qF2;=~Dj3pjiB?1c*#GBPsq^76{d%Mlaq<_Z~3 z8M-(tc%+PZsHLR^>p<_Wsi{E}h=dKu#l=Nr@^Jj1I$;VbJlTKr2s7RH5OZ_$*w|QH zy>X}GK)o;D9Q45wEij#FNG3;fIhe zZmwJ>FkwL~eTazW1XltJlffD2F%ScFgl!xTI3NiO2isv7S`Nme!NN3bBhzcp;*qH9 zyS-?0D9ofnTxNFGHnDol4XZ*4P~uPg6JoG!3#E!zuox_f?epTE+Vugg{jpLneTay- zhz>Z^E!$q0YuM`p*66M1w=;4e(;I; z#wi{%^iGLAOBow2GKohN%*P)#C9mQ3uXMuET~q4`W^j(q|JmjD7rg=h19t5(ulxW^ Q2LJ#707*qoM6N<$f-6kHbN~PV literal 0 HcmV?d00001 diff --git a/src/docs/web/images/example.png b/src/docs/web/images/example.png new file mode 100644 index 0000000000000000000000000000000000000000..bba1c0010ddbb148a93e8a442047ca6a68b5ef1f GIT binary patch literal 2354 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 M07*qoM6N<$g4<+Y4gdfE literal 0 HcmV?d00001 diff --git a/src/docs/web/images/note.png b/src/docs/web/images/note.png new file mode 100644 index 0000000000000000000000000000000000000000..841820f7c4fb274fc45fae0a0a526a68eb31d85e GIT binary patch literal 2730 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 M07*qoM6N<$f^MzYD*ylh literal 0 HcmV?d00001 diff --git a/src/docs/web/images/up.png b/src/docs/web/images/up.png new file mode 100644 index 0000000000000000000000000000000000000000..2db1ce62fa575fd990108b15b0de18a64cae19ca GIT binary patch literal 1320 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 eo-;8G{`xB0N0000