Download
878 lines 340.5 KiBHTMLModified 2025-04-25 raw
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <meta http-equiv="Content-Style-Type" content="text/css" />
  <meta name="generator" content="pandoc" />
  <meta name="author" content="Bruce Hill" />
  <title>Tomo – Tomo</title>
  <style type="text/css">
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}

ul.task-list[class]{list-style: none;}
ul.task-list li input[type="checkbox"] {
font-size: inherit;
width: 0.8em;
margin: 0 0.8em 0.2em -1.6em;
vertical-align: middle;
}
.display.math{display: block; text-align: center; margin: 0.5rem auto;}

html { -webkit-text-size-adjust: 100%; }
pre > code.sourceCode { white-space: pre; position: relative; }
pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }
pre > code.sourceCode > span:empty { height: 1.2em; }
.sourceCode { overflow: visible; }
code.sourceCode > span { color: inherit; text-decoration: inherit; }
div.sourceCode { margin: 1em 0; }
pre.sourceCode { margin: 0; }
@media screen {
div.sourceCode { overflow: auto; }
}
@media print {
pre > code.sourceCode { white-space: pre-wrap; }
pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
}
pre.numberSource code
{ counter-reset: source-line 0; }
pre.numberSource code > span
{ position: relative; left: -4em; counter-increment: source-line; }
pre.numberSource code > span > a:first-child::before
{ content: counter(source-line);
position: relative; left: -1em; text-align: right; vertical-align: baseline;
border: none; display: inline-block;
-webkit-touch-callout: none; -webkit-user-select: none;
-khtml-user-select: none; -moz-user-select: none;
-ms-user-select: none; user-select: none;
padding: 0 4px; width: 4em;
color: #aaaaaa;
}
pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; }
div.sourceCode
{ }
@media screen {
pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
}
code span.al { color: #ff0000; font-weight: bold; } 
code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } 
code span.at { color: #7d9029; } 
code span.bn { color: #40a070; } 
code span.bu { color: #008000; } 
code span.cf { color: #007020; font-weight: bold; } 
code span.ch { color: #4070a0; } 
code span.cn { color: #880000; } 
code span.co { color: #60a0b0; font-style: italic; } 
code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } 
code span.do { color: #ba2121; font-style: italic; } 
code span.dt { color: #902000; } 
code span.dv { color: #40a070; } 
code span.er { color: #ff0000; font-weight: bold; } 
code span.ex { } 
code span.fl { color: #40a070; } 
code span.fu { color: #06287e; } 
code span.im { color: #008000; font-weight: bold; } 
code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } 
code span.kw { color: #007020; font-weight: bold; } 
code span.op { color: #666666; } 
code span.ot { color: #007020; } 
code span.pp { color: #bc7a00; } 
code span.sc { color: #4070a0; } 
code span.ss { color: #bb6688; } 
code span.st { color: #4070a0; } 
code span.va { color: #19177c; } 
code span.vs { color: #4070a0; } 
code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } 
</style>
  <link href="data:text/css; charset=utf-8;charset=utf-8,%0Abody%0A%7B%0Amargin%3A%200%200%200%200%3B%0Apadding%3A%200%200%200%200%3B%0Awidth%3A%20100%25%3B%0Aheight%3A%20100%25%3B%0Acolor%3A%20black%3B%0Abackground%2Dcolor%3A%20white%3B%0Afont%2Dfamily%3A%20%22Gill%20Sans%20MT%22%2C%20%22Gill%20Sans%22%2C%20GillSans%2C%20sans%2Dserif%3B%0Afont%2Dsize%3A%2014pt%3B%0A%7D%0Adiv%2Etoolbar%20%7B%0Aposition%3A%20fixed%3B%20z%2Dindex%3A%20200%3B%0Atop%3A%20auto%3B%20bottom%3A%200%3B%20left%3A%200%3B%20right%3A%200%3B%0Aheight%3A%201%2E2em%3B%20text%2Dalign%3A%20right%3B%0Apadding%2Dleft%3A%201em%3B%0Apadding%2Dright%3A%201em%3B%20font%2Dsize%3A%2060%25%3B%0Acolor%3A%20red%3B%0Abackground%2Dcolor%3A%20rgb%28240%2C240%2C240%29%3B%0Aborder%2Dtop%3A%20solid%201px%20rgb%28180%2C180%2C180%29%3B%0A%7D%0Adiv%2Etoolbar%20span%2Ecopyright%20%7B%0Acolor%3A%20black%3B%0Amargin%2Dleft%3A%200%2E5em%3B%0A%7D%0Adiv%2Einitial%5Fprompt%20%7B%0Aposition%3A%20absolute%3B%0Az%2Dindex%3A%201000%3B%0Abottom%3A%201%2E2em%3B%0Awidth%3A%20100%25%3B%0Abackground%2Dcolor%3A%20rgb%28200%2C200%2C200%29%3B%0Aopacity%3A%200%2E35%3B%0Abackground%2Dcolor%3A%20rgba%28200%2C200%2C200%2C%200%2E35%29%3B%0Acursor%3A%20pointer%3B%0A%7D%0Adiv%2Einitial%5Fprompt%20p%2Ehelp%20%7B%0Atext%2Dalign%3A%20center%3B%0A%7D%0Adiv%2Einitial%5Fprompt%20p%2Eclose%20%7B%0Atext%2Dalign%3A%20right%3B%0Afont%2Dstyle%3A%20italic%3B%0A%7D%0Adiv%2Eslidy%5Ftoc%20%7B%0Aposition%3A%20absolute%3B%0Az%2Dindex%3A%20300%3B%0Awidth%3A%2060%25%3B%0Amax%2Dwidth%3A%2030em%3B%0Aheight%3A%2030em%3B%0Aoverflow%3A%20auto%3B%0Atop%3A%20auto%3B%0Aright%3A%20auto%3B%0Aleft%3A%204em%3B%0Abottom%3A%204em%3B%0Apadding%3A%201em%3B%0Abackground%3A%20rgb%28240%2C240%2C240%29%3B%0Aborder%2Dstyle%3A%20solid%3B%0Aborder%2Dwidth%3A%202px%3B%0Afont%2Dsize%3A%2060%25%3B%0A%7D%0Adiv%2Eslidy%5Ftoc%20%2Etoc%5Fheading%20%7B%0Atext%2Dalign%3A%20center%3B%0Awidth%3A%20100%25%3B%0Amargin%3A%200%3B%0Amargin%2Dbottom%3A%201em%3B%0Aborder%2Dbottom%2Dstyle%3A%20solid%3B%0Aborder%2Dbottom%2Dcolor%3A%20rgb%28180%2C180%2C180%29%3B%0Aborder%2Dbottom%2Dwidth%3A%201px%3B%0A%7D%0Adiv%2Eslide%20%7B%0Az%2Dindex%3A%2020%3B%0Amargin%3A%200%200%200%200%3B%0Apadding%2Dtop%3A%200%3B%0Apadding%2Dbottom%3A%200%3B%0Apadding%2Dleft%3A%2020px%3B%0Apadding%2Dright%3A%2020px%3B%0Aborder%2Dwidth%3A%200%3B%0Aclear%3A%20both%3B%0Atop%3A%200%3B%0Abottom%3A%200%3B%0Aleft%3A%200%3B%0Aright%3A%200%3B%0Aline%2Dheight%3A%20120%25%3B%0Abackground%2Dcolor%3A%20transparent%3B%0A%7D%0Adiv%2Ebackground%20%7B%0Adisplay%3A%20none%3B%0A%7D%0Adiv%2Ehandout%20%7B%0Amargin%2Dleft%3A%2020px%3B%0Amargin%2Dright%3A%2020px%3B%0A%7D%0Adiv%2Eslide%2Etitlepage%20%7B%0Atext%2Dalign%3A%20center%3B%0A%7D%0Adiv%2Eslide%2Etitlepage%20h1%20%7B%0Apadding%2Dtop%3A%2010%25%3B%0Amargin%2Dright%3A%200%3B%0A%7D%0Adiv%2Eslide%20h1%20%7B%0Apadding%2Dleft%3A%200%3B%0Apadding%2Dright%3A%2020pt%3B%0Apadding%2Dtop%3A%204pt%3B%0Apadding%2Dbottom%3A%204pt%3B%0Amargin%2Dtop%3A%200%3B%0Amargin%2Dleft%3A%200%3B%0Amargin%2Dright%3A%2060pt%3B%0Amargin%2Dbottom%3A%200%2E5em%3B%0Adisplay%3A%20block%3B%20font%2Dsize%3A%20160%25%3B%0Aline%2Dheight%3A%201%2E2em%3B%0Abackground%3A%20transparent%3B%0A%7D%0A%40media%20screen%20and%20%28max%2Ddevice%2Dwidth%3A%201024px%29%0A%7B%0Adiv%2Eslide%20%7B%20font%2Dsize%3A%20100%25%3B%20%7D%0A%7D%0A%40media%20screen%20and%20%28max%2Ddevice%2Dwidth%3A%20800px%29%0A%7B%0Adiv%2Eslide%20%7B%20font%2Dsize%3A%20200%25%3B%20%7D%0Adiv%2Eslidy%5Ftoc%20%7B%0Atop%3A%201em%3B%0Aleft%3A%201em%3B%0Aright%3A%20auto%3B%0Awidth%3A%2080%25%3B%0Afont%2Dsize%3A%20180%25%3B%0A%7D%0A%7D%0Adiv%2Etoc%2Dheading%20%7B%0Awidth%3A%20100%25%3B%0Aborder%2Dbottom%3A%20solid%201px%20rgb%28180%2C180%2C180%29%3B%0Amargin%2Dbottom%3A%201em%3B%0Atext%2Dalign%3A%20center%3B%0A%7D%0Aimg%20%7B%0Aimage%2Drendering%3A%20optimize%2Dquality%3B%0A%7D%0Apre%20%7B%0Afont%2Dsize%3A%2080%25%3B%0Afont%2Dweight%3A%20bold%3B%0Aline%2Dheight%3A%20120%25%3B%0Apadding%2Dtop%3A%200%2E2em%3B%0Apadding%2Dbottom%3A%200%2E2em%3B%0Apadding%2Dleft%3A%201em%3B%0Apadding%2Dright%3A%201em%3B%0Aborder%2Dstyle%3A%20solid%3B%0Aborder%2Dleft%2Dwidth%3A%201em%3B%0Aborder%2Dtop%2Dwidth%3A%20thin%3B%0Aborder%2Dright%2Dwidth%3A%20thin%3B%0Aborder%2Dbottom%2Dwidth%3A%20thin%3B%0Aborder%2Dcolor%3A%20%2395ABD0%3B%0Acolor%3A%20%2300428C%3B%0Abackground%2Dcolor%3A%20%23E4E5E7%3B%0A%7D%0Ali%20pre%20%7B%20margin%2Dleft%3A%200%3B%20%7D%0Ablockquote%20%7B%20font%2Dstyle%3A%20italic%20%7D%0Aimg%20%7B%20background%2Dcolor%3A%20transparent%20%7D%0Ap%2Ecopyright%20%7B%20font%2Dsize%3A%20smaller%20%7D%0A%2Ecenter%20%7B%20text%2Dalign%3A%20center%20%7D%0A%2Efootnote%20%7B%20font%2Dsize%3A%20smaller%3B%20margin%2Dleft%3A%202em%3B%20%7D%0Aa%20img%20%7B%20border%2Dwidth%3A%200%3B%20border%2Dstyle%3A%20none%20%7D%0Aa%3Avisited%20%7B%20color%3A%20navy%20%7D%0Aa%3Alink%20%7B%20color%3A%20navy%20%7D%0Aa%3Ahover%20%7B%20color%3A%20red%3B%20text%2Ddecoration%3A%20underline%20%7D%0Aa%3Aactive%20%7B%20color%3A%20red%3B%20text%2Ddecoration%3A%20underline%20%7D%0Aa%20%7Btext%2Ddecoration%3A%20none%7D%0A%2Etoolbar%20a%3Alink%20%7Bcolor%3A%20blue%7D%0A%2Etoolbar%20a%3Avisited%20%7Bcolor%3A%20blue%7D%0A%2Etoolbar%20a%3Aactive%20%7Bcolor%3A%20red%7D%0A%2Etoolbar%20a%3Ahover%20%7Bcolor%3A%20red%7D%0Aul%20%7B%20list%2Dstyle%2Dtype%3A%20square%3B%20%7D%0Aul%20ul%20%7B%20list%2Dstyle%2Dtype%3A%20disc%3B%20%7D%0Aul%20ul%20ul%20%7B%20list%2Dstyle%2Dtype%3A%20circle%3B%20%7D%0Aul%20ul%20ul%20ul%20%7B%20list%2Dstyle%2Dtype%3A%20disc%3B%20%7D%0Ali%20%7B%20margin%2Dleft%3A%200%2E5em%3B%20margin%2Dtop%3A%200%2E5em%3B%20%7D%0Ali%20li%20%7B%20font%2Dsize%3A%2085%25%3B%20font%2Dstyle%3A%20italic%20%7D%0Ali%20li%20li%20%7B%20font%2Dsize%3A%2085%25%3B%20font%2Dstyle%3A%20normal%20%7D%0Adiv%20dt%0A%7B%0Amargin%2Dleft%3A%200%3B%0Amargin%2Dtop%3A%201em%3B%0Amargin%2Dbottom%3A%200%2E5em%3B%0Afont%2Dweight%3A%20bold%3B%0A%7D%0Adiv%20dd%0A%7B%0Amargin%2Dleft%3A%202em%3B%0Amargin%2Dbottom%3A%200%2E5em%3B%0A%7D%0Ap%2Cpre%2Cul%2Col%2Cblockquote%2Ch2%2Ch3%2Ch4%2Ch5%2Ch6%2Cdl%2Ctable%20%7B%0Amargin%2Dleft%3A%201em%3B%0Amargin%2Dright%3A%201em%3B%0A%7D%0Ap%2Esubhead%20%7B%20font%2Dweight%3A%20bold%3B%20margin%2Dtop%3A%202em%3B%20%7D%0A%2Esmaller%20%7B%20font%2Dsize%3A%20smaller%20%7D%0A%2Ebigger%20%7B%20font%2Dsize%3A%20130%25%20%7D%0Atd%2Cth%20%7B%20padding%3A%200%2E2em%20%7D%0Aul%20%7B%0Amargin%3A%200%2E5em%201%2E5em%200%2E5em%201%2E5em%3B%0Apadding%3A%200%3B%0A%7D%0Aol%20%7B%0Amargin%3A%200%2E5em%201%2E5em%200%2E5em%201%2E5em%3B%0Apadding%3A%200%3B%0A%7D%0Aul%20%7B%20list%2Dstyle%2Dtype%3A%20square%3B%20%7D%0Aul%20ul%20%7B%20list%2Dstyle%2Dtype%3A%20disc%3B%20%7D%0Aul%20ul%20ul%20%7B%20list%2Dstyle%2Dtype%3A%20circle%3B%20%7D%0Aul%20ul%20ul%20ul%20%7B%20list%2Dstyle%2Dtype%3A%20disc%3B%20%7D%0Aul%20li%20%7B%20list%2Dstyle%3A%20square%3B%0Amargin%3A%200%2E1em%200em%200%2E6em%200%3B%0Apadding%3A%200%200%200%200%3B%0Aline%2Dheight%3A%20140%25%3B%0A%7D%0Aol%20li%20%7B%20margin%3A%200%2E1em%200em%200%2E6em%201%2E5em%3B%0Apadding%3A%200%200%200%200px%3B%0Aline%2Dheight%3A%20140%25%3B%0Alist%2Dstyle%2Dtype%3A%20decimal%3B%0A%7D%0Ali%20ul%20li%20%7B%20font%2Dsize%3A%2085%25%3B%20font%2Dstyle%3A%20italic%3B%0Alist%2Dstyle%2Dtype%3A%20disc%3B%0Abackground%3A%20transparent%3B%0Apadding%3A%200%200%200%200%3B%0A%7D%0Ali%20li%20ul%20li%20%7B%20font%2Dsize%3A%2085%25%3B%20font%2Dstyle%3A%20normal%3B%0Alist%2Dstyle%2Dtype%3A%20circle%3B%0Abackground%3A%20transparent%3B%0Apadding%3A%200%200%200%200%3B%0A%7D%0Ali%20li%20li%20ul%20li%20%7B%0Alist%2Dstyle%2Dtype%3A%20disc%3B%0Abackground%3A%20transparent%3B%0Apadding%3A%200%200%200%200%3B%0A%7D%0Ali%20ol%20li%20%7B%0Alist%2Dstyle%2Dtype%3A%20decimal%3B%0A%7D%0Ali%20li%20ol%20li%20%7B%0Alist%2Dstyle%2Dtype%3A%20decimal%3B%0A%7D%0A%0Aol%2Eoutline%20li%3Ahover%20%7B%20cursor%3A%20pointer%20%7D%0Aol%2Eoutline%20li%2Enofold%3Ahover%20%7B%20cursor%3A%20default%20%7D%0Aul%2Eoutline%20li%3Ahover%20%7B%20cursor%3A%20pointer%20%7D%0Aul%2Eoutline%20li%2Enofold%3Ahover%20%7B%20cursor%3A%20default%20%7D%0Aol%2Eoutline%20%7B%20list%2Dstyle%3Adecimal%3B%20%7D%0Aol%2Eoutline%20ol%20%7B%20list%2Dstyle%2Dtype%3Alower%2Dalpha%20%7D%0Aol%2Eoutline%20li%2Enofold%20%7B%0Apadding%3A%200%200%200%2020px%3B%0Abackground%3A%20transparent%20url%28data%3Aimage%2Fgif%3B%20qs%3D0%2E5%3Bbase64%2CR0lGODdhCQAJAIACAMzMzOvr%2FywAAAAACQAJAAACD4SPoRvG614Dctb4MEMcFAA7%29%20no%2Drepeat%200px%200%2E5em%3B%0A%7D%0Aol%2Eoutline%20li%2Eunfolded%20%7B%0Apadding%3A%200%200%200%2020px%3B%0Abackground%3A%20transparent%20url%28data%3Aimage%2Fgif%3B%20qs%3D0%2E5%3Bbase64%2CR0lGODdhCQAJAKEDAMPD%2F8zMzOvr%2F%2F%2F%2F%2FywAAAAACQAJAAACEYyPoivG614LAlg7ZZbxoR8UADs%3D%29%20no%2Drepeat%200px%200%2E5em%3B%0A%7D%0Aol%2Eoutline%20li%2Efolded%20%7B%0Apadding%3A%200%200%200%2020px%3B%0Abackground%3A%20transparent%20url%28data%3Aimage%2Fgif%3B%20qs%3D0%2E5%3Bbase64%2CR0lGODdhCQAJAKEDAMPD%2F8zMzOvr%2F%2F%2F%2F%2FywAAAAACQAJAAACFIyPoiu2sJyCyoF7W3hxz850CFIAADs%3D%29%20no%2Drepeat%200px%200%2E5em%3B%0A%7D%0Aol%2Eoutline%20li%2Eunfolded%3Ahover%20%7B%0Apadding%3A%200%200%200%2020px%3B%0Abackground%3A%20transparent%20url%28data%3Aimage%2Fgif%3B%20qs%3D0%2E5%3Bbase64%2CR0lGODdhCQAJAKEDAAAAAAAA%2F8PD%2F%2F%2F%2F%2FywAAAAACQAJAAACEYSPoivG614DIlg7ZZbxoQ8UADs%3D%29%20no%2Drepeat%200px%200%2E5em%3B%0A%7D%0Aol%2Eoutline%20li%2Efolded%3Ahover%20%7B%0Apadding%3A%200%200%200%2020px%3B%0Abackground%3A%20transparent%20url%28data%3Aimage%2Fgif%3B%20qs%3D0%2E5%3Bbase64%2CR0lGODdhCQAJAKEDAAAAAAAA%2F8PD%2F%2F%2F%2F%2FywAAAAACQAJAAACFISPoiu2sZyCyoV7G3hxz850CFIAADs%3D%29%20no%2Drepeat%200px%200%2E5em%3B%0A%7D%0Aul%2Eoutline%20li%2Enofold%20%7B%0Apadding%3A%200%200%200%2020px%3B%0Abackground%3A%20transparent%20url%28data%3Aimage%2Fgif%3B%20qs%3D0%2E5%3Bbase64%2CR0lGODdhCQAJAIACAMzMzOvr%2FywAAAAACQAJAAACD4SPoRvG614Dctb4MEMcFAA7%29%20no%2Drepeat%200px%200%2E5em%3B%0A%7D%0Aul%2Eoutline%20li%2Eunfolded%20%7B%0Apadding%3A%200%200%200%2020px%3B%0Abackground%3A%20transparent%20url%28data%3Aimage%2Fgif%3B%20qs%3D0%2E5%3Bbase64%2CR0lGODdhCQAJAKEDAMPD%2F8zMzOvr%2F%2F%2F%2F%2FywAAAAACQAJAAACEYyPoivG614LAlg7ZZbxoR8UADs%3D%29%20no%2Drepeat%200px%200%2E5em%3B%0A%7D%0Aul%2Eoutline%20li%2Efolded%20%7B%0Apadding%3A%200%200%200%2020px%3B%0Abackground%3A%20transparent%20url%28data%3Aimage%2Fgif%3B%20qs%3D0%2E5%3Bbase64%2CR0lGODdhCQAJAKEDAMPD%2F8zMzOvr%2F%2F%2F%2F%2FywAAAAACQAJAAACFIyPoiu2sJyCyoF7W3hxz850CFIAADs%3D%29%20no%2Drepeat%200px%200%2E5em%3B%0A%7D%0Aul%2Eoutline%20li%2Eunfolded%3Ahover%20%7B%0Apadding%3A%200%200%200%2020px%3B%0Abackground%3A%20transparent%20url%28data%3Aimage%2Fgif%3B%20qs%3D0%2E5%3Bbase64%2CR0lGODdhCQAJAKEDAAAAAAAA%2F8PD%2F%2F%2F%2F%2FywAAAAACQAJAAACEYSPoivG614DIlg7ZZbxoQ8UADs%3D%29%20no%2Drepeat%200px%200%2E5em%3B%0A%7D%0Aul%2Eoutline%20li%2Efolded%3Ahover%20%7B%0Apadding%3A%200%200%200%2020px%3B%0Abackground%3A%20transparent%20url%28data%3Aimage%2Fgif%3B%20qs%3D0%2E5%3Bbase64%2CR0lGODdhCQAJAKEDAAAAAAAA%2F8PD%2F%2F%2F%2F%2FywAAAAACQAJAAACFISPoiu2sZyCyoV7G3hxz850CFIAADs%3D%29%20no%2Drepeat%200px%200%2E5em%3B%0A%7D%0A%0Aa%2Etitleslide%20%7B%20font%2Dweight%3A%20bold%3B%20font%2Dstyle%3A%20italic%20%7D%0A%0Aimg%2Ehidden%20%7B%20display%3A%20none%3B%20visibility%3A%20hidden%20%7D%0Adiv%2Einitial%5Fprompt%20%7B%20display%3A%20none%3B%20visibility%3A%20hidden%20%7D%0Adiv%2Eslide%20%7B%0Avisibility%3A%20visible%3B%0Aposition%3A%20inherit%3B%0A%7D%0Adiv%2Ehandout%20%7B%0Aborder%2Dtop%2Dstyle%3A%20solid%3B%0Aborder%2Dtop%2Dwidth%3A%20thin%3B%0Aborder%2Dtop%2Dcolor%3A%20black%3B%0A%7D%0A%40media%20screen%20%7B%0A%2Ehidden%20%7B%20display%3A%20none%3B%20visibility%3A%20visible%20%7D%0Adiv%2Eslide%2Ehidden%20%7B%20display%3A%20block%3B%20visibility%3A%20visible%20%7D%0Adiv%2Ehandout%2Ehidden%20%7B%20display%3A%20block%3B%20visibility%3A%20visible%20%7D%0Adiv%2Ebackground%20%7B%20display%3A%20none%3B%20visibility%3A%20hidden%20%7D%0Abody%2Esingle%5Fslide%20div%2Einitial%5Fprompt%20%7B%20display%3A%20block%3B%20visibility%3A%20visible%20%7D%0Abody%2Esingle%5Fslide%20div%2Ebackground%20%7B%20display%3A%20block%3B%20visibility%3A%20visible%20%7D%0Abody%2Esingle%5Fslide%20div%2Ebackground%2Ehidden%20%7B%20display%3A%20none%3B%20visibility%3A%20hidden%20%7D%0Abody%2Esingle%5Fslide%20%2Einvisible%20%7B%20visibility%3A%20hidden%20%7D%0Abody%2Esingle%5Fslide%20%2Ehidden%20%7B%20display%3A%20none%3B%20visibility%3A%20hidden%20%7D%0Abody%2Esingle%5Fslide%20div%2Eslide%20%7B%20position%3A%20absolute%20%7D%0Abody%2Esingle%5Fslide%20div%2Ehandout%20%7B%20display%3A%20none%3B%20visibility%3A%20hidden%20%7D%0A%7D%0A%40media%20print%20%7B%0A%2Ehidden%20%7B%20display%3A%20block%3B%20visibility%3A%20visible%20%7D%0Adiv%2Eslide%20pre%20%7B%20font%2Dsize%3A%2060%25%3B%20padding%2Dleft%3A%200%2E5em%3B%20%7D%0Adiv%2Etoolbar%20%7B%20display%3A%20none%3B%20visibility%3A%20hidden%3B%20%7D%0Adiv%2Eslidy%5Ftoc%20%7B%20display%3A%20none%3B%20visibility%3A%20hidden%3B%20%7D%0Adiv%2Ebackground%20%7B%20display%3A%20none%3B%20visibility%3A%20hidden%3B%20%7D%0Adiv%2Eslide%20%7B%20page%2Dbreak%2Dbefore%3A%20always%20%7D%0A%0Adiv%2Eslide%2Efirst%2Dslide%20%7B%20page%2Dbreak%2Dbefore%3A%20avoid%20%7D%0A%7D%0A" rel="stylesheet" type="text/css" media="screen, projection, print" />
  <script src="data:text/javascript; charset=utf-8;charset=utf-8,%2F%2A%20slidy%2Ejs%0A%0A%20%20%20Copyright%20%28c%29%202005%2D2013%20W3C%20%28MIT%2C%20ERCIM%2C%20Keio%29%2C%20All%20Rights%20Reserved%2E%0A%20%20%20W3C%20liability%2C%20trademark%2C%20document%20use%20and%20software%20licensing%0A%20%20%20rules%20apply%2C%20see%3A%0A%0A%20%20%20http%3A%2F%2Fwww%2Ew3%2Eorg%2FConsortium%2FLegal%2Fcopyright%2Ddocuments%0A%20%20%20http%3A%2F%2Fwww%2Ew3%2Eorg%2FConsortium%2FLegal%2Fcopyright%2Dsoftware%0A%0A%20%20%20Defines%20single%20name%20%22w3c%5Fslidy%22%20in%20global%20namespace%0A%20%20%20Adds%20event%20handlers%20without%20trampling%20on%20any%20others%0A%2A%2F%0A%0A%2F%2F%20the%20slidy%20object%20implementation%0Avar%20w3c%5Fslidy%20%3D%20%7B%0A%20%20%2F%2F%20classify%20which%20kind%20of%20browser%20we%27re%20running%20under%0A%20%20ns%5Fpos%3A%20%28typeof%20window%2EpageYOffset%21%3D%27undefined%27%29%2C%0A%20%20khtml%3A%20%28%28navigator%2EuserAgent%29%2EindexOf%28%22KHTML%22%29%20%3E%3D%200%20%3F%20true%20%3A%20false%29%2C%0A%20%20opera%3A%20%28%28navigator%2EuserAgent%29%2EindexOf%28%22Opera%22%29%20%3E%3D%200%20%3F%20true%20%3A%20false%29%2C%0A%20%20ipad%3A%20%28%28navigator%2EuserAgent%29%2EindexOf%28%22iPad%22%29%20%3E%3D%200%20%3F%20true%20%3A%20false%29%2C%0A%20%20iphone%3A%20%28%28navigator%2EuserAgent%29%2EindexOf%28%22iPhone%22%29%20%3E%3D%200%20%3F%20true%20%3A%20false%29%2C%0A%20%20android%3A%20%28%28navigator%2EuserAgent%29%2EindexOf%28%22Android%22%29%20%3E%3D%200%20%3F%20true%20%3A%20false%29%2C%0A%20%20ie%3A%20%28typeof%20document%2Eall%20%21%3D%20%22undefined%22%20%26%26%20%21this%2Eopera%29%2C%0A%20%20ie6%3A%20%28%21this%2Ens%5Fpos%20%26%26%20navigator%2EuserAgent%2EindexOf%28%22MSIE%206%22%29%20%21%3D%20%2D1%29%2C%0A%20%20ie7%3A%20%28%21this%2Ens%5Fpos%20%26%26%20navigator%2EuserAgent%2EindexOf%28%22MSIE%207%22%29%20%21%3D%20%2D1%29%2C%0A%20%20ie8%3A%20%28%21this%2Ens%5Fpos%20%26%26%20navigator%2EuserAgent%2EindexOf%28%22MSIE%208%22%29%20%21%3D%20%2D1%29%2C%0A%20%20ie9%3A%20%28%21this%2Ens%5Fpos%20%26%26%20navigator%2EuserAgent%2EindexOf%28%22MSIE%209%22%29%20%21%3D%20%2D1%29%2C%0A%0A%20%20%2F%2F%20data%20for%20swipe%20and%20double%20tap%20detection%20on%20touch%20screens%0A%20%20last%5Ftap%3A%200%2C%0A%20%20prev%5Ftap%3A%200%2C%0A%20%20start%5Fx%3A%200%2C%0A%20%20start%5Fy%3A%200%2C%0A%20%20delta%5Fx%3A%200%2C%0A%20%20delta%5Fy%3A%200%2C%0A%0A%20%20%2F%2F%20are%20we%20running%20as%20XHTML%3F%20%28doesn%27t%20work%20on%20Opera%29%0A%20%20is%5Fxhtml%3A%20%2Fxml%2F%2Etest%28document%2EcontentType%29%2C%0A%0A%20%20slide%5Fnumber%3A%200%2C%20%2F%2F%20integer%20slide%20count%3A%200%2C%201%2C%202%2C%20%2E%2E%2E%0A%20%20slide%5Fnumber%5Felement%3A%20null%2C%20%2F%2F%20element%20containing%20slide%20number%0A%20%20slides%3A%20%5B%5D%2C%20%2F%2F%20set%20to%20array%20of%20slide%20div%27s%0A%20%20notes%3A%20%5B%5D%2C%20%2F%2F%20set%20to%20array%20of%20handout%20div%27s%0A%20%20backgrounds%3A%20%5B%5D%2C%20%2F%2F%20set%20to%20array%20of%20background%20div%27s%0A%20%20observers%3A%20%5B%5D%2C%20%2F%2F%20list%20of%20observer%20functions%0A%20%20toolbar%3A%20null%2C%20%2F%2F%20element%20containing%20toolbar%0A%20%20title%3A%20null%2C%20%2F%2F%20document%20title%0A%20%20last%5Fshown%3A%20null%2C%20%2F%2F%20last%20incrementally%20shown%20item%0A%20%20eos%3A%20null%2C%20%20%2F%2F%20span%20element%20for%20end%20of%20slide%20indicator%0A%20%20toc%3A%20null%2C%20%2F%2F%20table%20of%20contents%0A%20%20outline%3A%20null%2C%20%2F%2F%20outline%20element%20with%20the%20focus%0A%20%20selected%5Ftext%5Flen%3A%200%2C%20%2F%2F%20length%20of%20drag%20selection%20on%20document%0A%20%20view%5Fall%3A%200%2C%20%20%2F%2F%201%20to%20view%20all%20slides%20%2B%20handouts%0A%20%20want%5Ftoolbar%3A%20true%2C%20%20%2F%2F%20user%20preference%20to%20show%2Fhide%20toolbar%0A%20%20mouse%5Fclick%5Fenabled%3A%20true%2C%20%2F%2F%20enables%20left%20click%20for%20next%20slide%0A%20%20scroll%5Fhack%3A%200%2C%20%2F%2F%20IE%20work%20around%20for%20position%3A%20fixed%0A%20%20disable%5Fslide%5Fclick%3A%20false%2C%20%20%2F%2F%20used%20by%20clicked%20anchors%0A%0A%20%20lang%3A%20%22en%22%2C%20%2F%2F%20updated%20to%20language%20specified%20by%20html%20file%0A%0A%20%20help%5Fanchor%3A%20null%2C%20%2F%2F%20used%20for%20keyboard%20focus%20hack%20in%20showToolbar%28%29%0A%20%20help%5Fpage%3A%20%22http%3A%2F%2Fwww%2Ew3%2Eorg%2FTalks%2FTools%2FSlidy2%2Fhelp%2Fhelp%2Ehtml%22%2C%0A%20%20help%5Ftext%3A%20%22Navigate%20with%20mouse%20click%2C%20space%20bar%2C%20Cursor%20Left%2FRight%2C%20%22%20%2B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%22or%20Pg%20Up%20and%20Pg%20Dn%2E%20Use%20S%20and%20B%20to%20change%20font%20size%2E%22%2C%0A%0A%20%20size%5Findex%3A%200%2C%0A%20%20size%5Fadjustment%3A%200%2C%0A%20%20sizes%3A%20%20new%20Array%28%2210pt%22%2C%20%2212pt%22%2C%20%2214pt%22%2C%20%2216pt%22%2C%20%2218pt%22%2C%20%2220pt%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2222pt%22%2C%20%2224pt%22%2C%20%2226pt%22%2C%20%2228pt%22%2C%20%2230pt%22%2C%20%2232pt%22%29%2C%0A%0A%20%20%2F%2F%20needed%20for%20efficient%20resizing%0A%20%20last%5Fwidth%3A%200%2C%0A%20%20last%5Fheight%3A%200%2C%0A%0A%0A%20%20%2F%2F%20Needed%20for%20cross%20browser%20support%20for%20relative%20width%2Fheight%20on%0A%20%20%2F%2F%20object%20elements%2E%20The%20work%20around%20is%20to%20save%20width%2Fheight%20attributes%0A%20%20%2F%2F%20and%20then%20to%20recompute%20absolute%20width%2Fheight%20dimensions%20on%20resizing%0A%20%20%20objects%3A%20%5B%5D%2C%0A%0A%20%20%2F%2F%20attach%20initialiation%20event%20handlers%0A%20%20set%5Fup%3A%20function%20%28%29%20%7B%0A%20%20%20%20var%20init%20%3D%20function%28%29%20%7B%20w3c%5Fslidy%2Einit%28%29%3B%20%7D%3B%0A%20%20%20%20if%20%28typeof%20window%2EaddEventListener%20%21%3D%20%22undefined%22%29%0A%20%20%20%20%20%20window%2EaddEventListener%28%22load%22%2C%20init%2C%20false%29%3B%0A%20%20%20%20else%0A%20%20%20%20%20%20window%2EattachEvent%28%22onload%22%2C%20init%29%3B%0A%20%20%7D%2C%0A%0A%20%20hide%5Fslides%3A%20function%20%28%29%20%7B%0A%20%20%20%20if%20%28document%2Ebody%20%26%26%20%21w3c%5Fslidy%2Einitialized%29%0A%20%20%20%20%20%20document%2Ebody%2Estyle%2Evisibility%20%3D%20%22hidden%22%3B%0A%20%20%20%20else%0A%20%20%20%20%20%20setTimeout%28w3c%5Fslidy%2Ehide%5Fslides%2C%2050%29%3B%0A%20%20%7D%2C%0A%0A%20%20%2F%2F%20hack%20to%20persuade%20IE%20to%20compute%20correct%20document%20height%0A%20%20%2F%2F%20as%20needed%20for%20simulating%20fixed%20positioning%20of%20toolbar%0A%20%20ie%5Fhack%3A%20function%20%28%29%20%7B%0A%20%20%20%20window%2EresizeBy%280%2C%2D1%29%3B%0A%20%20%20%20window%2EresizeBy%280%2C%201%29%3B%0A%20%20%7D%2C%0A%0A%20%20init%3A%20function%20%28%29%20%7B%0A%20%20%20%20%2F%2Falert%28%22slidy%20starting%20test%2010%22%29%3B%0A%20%20%20%20document%2Ebody%2Estyle%2Evisibility%20%3D%20%22visible%22%3B%0A%20%20%20%20this%2Einit%5Flocalization%28%29%3B%0A%20%20%20%20this%2Eadd%5Ftoolbar%28%29%3B%0A%20%20%20%20this%2Ewrap%5Fimplicit%5Fslides%28%29%3B%0A%20%20%20%20this%2Ecollect%5Fslides%28%29%3B%0A%20%20%20%20this%2Ecollect%5Fnotes%28%29%3B%0A%20%20%20%20this%2Ecollect%5Fbackgrounds%28%29%3B%0A%20%20%20%20this%2Eobjects%20%3D%20document%2Ebody%2EgetElementsByTagName%28%22object%22%29%3B%0A%20%20%20%20this%2Epatch%5Fanchors%28%29%3B%0A%20%20%20%20this%2Eslide%5Fnumber%20%3D%20this%2Efind%5Fslide%5Fnumber%28location%2Ehref%29%3B%0A%20%20%20%20window%2Eoffscreenbuffering%20%3D%20true%3B%0A%20%20%20%20this%2Esize%5Fadjustment%20%3D%20this%2Efind%5Fsize%5Fadjust%28%29%3B%0A%20%20%20%20this%2Etime%5Fleft%20%3D%20this%2Efind%5Fduration%28%29%3B%0A%20%20%20%20this%2Ehide%5Fimage%5Ftoolbar%28%29%3B%20%20%2F%2F%20suppress%20IE%20image%20toolbar%20popup%0A%20%20%20%20this%2Einit%5Foutliner%28%29%3B%20%20%2F%2F%20activate%20fold%2Funfold%20support%0A%20%20%20%20this%2Etitle%20%3D%20document%2Etitle%3B%0A%20%20%20%20this%2Ekeyboardless%20%3D%20%28this%2Eipad%7C%7Cthis%2Eiphone%7C%7Cthis%2Eandroid%29%3B%0A%0A%20%20%20%20if%20%28this%2Ekeyboardless%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20w3c%5Fslidy%2Eremove%5Fclass%28w3c%5Fslidy%2Etoolbar%2C%20%22hidden%22%29%0A%20%20%20%20%20%20this%2Ewant%5Ftoolbar%20%3D%200%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%20work%20around%20for%20opera%20bug%0A%20%20%20%20this%2Eis%5Fxhtml%20%3D%20%28document%2Ebody%2EtagName%20%3D%3D%20%22BODY%22%20%3F%20false%20%3A%20true%29%3B%0A%0A%20%20%20%20if%20%28this%2Eslides%2Elength%20%3E%200%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20var%20slide%20%3D%20this%2Eslides%5Bthis%2Eslide%5Fnumber%5D%3B%0A%20%20%20%0A%20%20%20%20%20%20if%20%28this%2Eslide%5Fnumber%20%3E%200%29%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20this%2Eset%5Fvisibility%5Fall%5Fincremental%28%22visible%22%29%3B%0A%20%20%20%20%20%20%20%20this%2Elast%5Fshown%20%3D%20this%2Eprevious%5Fincremental%5Fitem%28null%29%3B%0A%20%20%20%20%20%20%20%20this%2Eset%5Feos%5Fstatus%28true%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20else%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20this%2Elast%5Fshown%20%3D%20null%3B%0A%20%20%20%20%20%20%20%20this%2Eset%5Fvisibility%5Fall%5Fincremental%28%22hidden%22%29%3B%0A%20%20%20%20%20%20%20%20this%2Eset%5Feos%5Fstatus%28%21this%2Enext%5Fincremental%5Fitem%28this%2Elast%5Fshown%29%29%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20this%2Eset%5Flocation%28%29%3B%0A%20%20%20%20%20%20this%2Eadd%5Fclass%28this%2Eslides%5B0%5D%2C%20%22first%2Dslide%22%29%3B%0A%20%20%20%20%20%20w3c%5Fslidy%2Eshow%5Fslide%28slide%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20this%2Etoc%20%3D%20this%2Etable%5Fof%5Fcontents%28%29%3B%0A%0A%20%20%20%20this%2Eadd%5Finitial%5Fprompt%28%29%3B%0A%0A%20%20%20%20%2F%2F%20bind%20event%20handlers%20without%20interfering%20with%20custom%20page%20scripts%0A%20%20%20%20%2F%2F%20Tap%20events%20behave%20too%20weirdly%20to%20support%20clicks%20reliably%20on%0A%20%20%20%20%2F%2F%20iPhone%20and%20iPad%2C%20so%20exclude%20these%20from%20click%20handler%0A%0A%20%20%20%20if%20%28%21this%2Ekeyboardless%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20this%2Eadd%5Flistener%28document%2Ebody%2C%20%22click%22%2C%20this%2Emouse%5Fbutton%5Fclick%29%3B%0A%20%20%20%20%20%20this%2Eadd%5Flistener%28document%2Ebody%2C%20%22mousedown%22%2C%20this%2Emouse%5Fbutton%5Fdown%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20this%2Eadd%5Flistener%28document%2C%20%22keydown%22%2C%20this%2Ekey%5Fdown%29%3B%0A%20%20%20%20this%2Eadd%5Flistener%28document%2C%20%22keypress%22%2C%20this%2Ekey%5Fpress%29%3B%0A%20%20%20%20this%2Eadd%5Flistener%28window%2C%20%22resize%22%2C%20this%2Eresized%29%3B%0A%20%20%20%20this%2Eadd%5Flistener%28window%2C%20%22scroll%22%2C%20this%2Escrolled%29%3B%0A%20%20%20%20this%2Eadd%5Flistener%28window%2C%20%22unload%22%2C%20this%2Eunloaded%29%3B%0A%0A%20%20%20%20this%2Eadd%5Flistener%28document%2C%20%22gesturechange%22%2C%20function%20%28%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%7D%29%3B%0A%0A%20%20%20%20this%2Eattach%5Ftouch%5Fhanders%28this%2Eslides%29%3B%0A%0A%20%20%20%20%2F%2F%20this%20seems%20to%20be%20a%20debugging%20hack%0A%20%20%20%20%2F%2Fif%20%28%21document%2Ebody%2Eonclick%29%0A%20%20%20%20%2F%2F%20%20document%2Ebody%2Eonclick%20%3D%20function%20%28%29%20%7B%20%7D%3B%0A%0A%20%20%20%20this%2Esingle%5Fslide%5Fview%28%29%3B%0A%0A%20%20%20%20%2F%2Fthis%2Eset%5Flocation%28%29%3B%0A%0A%20%20%20%20this%2Eresized%28%29%3B%0A%0A%20%20%20%20if%20%28this%2Eie7%29%0A%20%20%20%20%20%20setTimeout%28w3c%5Fslidy%2Eie%5Fhack%2C%20100%29%3B%0A%0A%20%20%20%20this%2Eshow%5Ftoolbar%28%29%3B%0A%0A%20%20%20%20%2F%2F%20for%20back%20button%20detection%0A%20%20%20%20setInterval%28function%20%28%29%20%7B%20w3c%5Fslidy%2Echeck%5Flocation%28%29%3B%20%7D%2C%20200%29%3B%0A%20%20%20%20w3c%5Fslidy%2Einitialized%20%3D%20true%3B%0A%20%20%7D%2C%0A%0A%20%20%2F%2F%20create%20div%20element%20with%20links%20to%20each%20slide%0A%20%20table%5Fof%5Fcontents%3A%20function%20%28%29%20%7B%0A%20%20%20%20var%20toc%20%3D%20this%2Ecreate%5Felement%28%22div%22%29%3B%0A%20%20%20%20this%2Eadd%5Fclass%28toc%2C%20%22slidy%5Ftoc%20hidden%22%29%3B%0A%20%20%20%20%2F%2Ftoc%2EsetAttribute%28%22tabindex%22%2C%20%220%22%29%3B%0A%0A%20%20%20%20var%20heading%20%3D%20this%2Ecreate%5Felement%28%22div%22%29%3B%0A%20%20%20%20this%2Eadd%5Fclass%28heading%2C%20%22toc%2Dheading%22%29%3B%0A%20%20%20%20heading%2EinnerHTML%20%3D%20this%2Elocalize%28%22Table%20of%20Contents%22%29%3B%0A%0A%20%20%20%20toc%2EappendChild%28heading%29%3B%0A%20%20%20%20var%20previous%20%3D%20null%3B%0A%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20this%2Eslides%2Elength%3B%20%2B%2Bi%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20var%20title%20%3D%20this%2Ehas%5Fclass%28this%2Eslides%5Bi%5D%2C%20%22title%22%29%3B%0A%20%20%20%20%20%20var%20num%20%3D%20document%2EcreateTextNode%28%28i%20%2B%201%29%20%2B%20%22%2E%20%22%29%3B%0A%0A%20%20%20%20%20%20toc%2EappendChild%28num%29%3B%0A%0A%20%20%20%20%20%20var%20a%20%3D%20this%2Ecreate%5Felement%28%22a%22%29%3B%0A%20%20%20%20%20%20a%2EsetAttribute%28%22href%22%2C%20%22%23%28%22%20%2B%20%28i%2B1%29%20%2B%20%22%29%22%29%3B%0A%0A%20%20%20%20%20%20if%20%28title%29%0A%20%20%20%20%20%20%20%20this%2Eadd%5Fclass%28a%2C%20%22titleslide%22%29%3B%0A%0A%20%20%20%20%20%20var%20name%20%3D%20document%2EcreateTextNode%28this%2Eslide%5Fname%28i%29%29%3B%0A%20%20%20%20%20%20a%2EappendChild%28name%29%3B%0A%20%20%20%20%20%20a%2Eonclick%20%3D%20w3c%5Fslidy%2Etoc%5Fclick%3B%0A%20%20%20%20%20%20a%2Eonkeydown%20%3D%20w3c%5Fslidy%2Etoc%5Fkey%5Fdown%3B%0A%20%20%20%20%20%20a%2Eprevious%20%3D%20previous%3B%0A%0A%20%20%20%20%20%20if%20%28previous%29%0A%20%20%20%20%20%20%20%20previous%2Enext%20%3D%20a%3B%0A%0A%20%20%20%20%20%20toc%2EappendChild%28a%29%3B%0A%0A%20%20%20%20%20%20if%20%28i%20%3D%3D%200%29%0A%20%20%20%20%20%20%20%20toc%2Efirst%20%3D%20a%3B%0A%0A%20%20%20%20%20%20if%20%28i%20%3C%20this%2Eslides%2Elength%20%2D%201%29%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20var%20br%20%3D%20this%2Ecreate%5Felement%28%22br%22%29%3B%0A%20%20%20%20%20%20%20%20toc%2EappendChild%28br%29%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20previous%20%3D%20a%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20toc%2Efocus%20%3D%20function%20%28%29%20%7B%0A%20%20%20%20%20%20if%20%28this%2Efirst%29%0A%20%20%20%20%20%20%20%20this%2Efirst%2Efocus%28%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20toc%2Eonmouseup%20%3D%20w3c%5Fslidy%2Emouse%5Fbutton%5Fup%3B%0A%0A%20%20%20%20toc%2Eonclick%20%3D%20function%20%28e%29%20%7B%0A%20%20%20%20%20%20e%7C%7C%28e%3Dwindow%2Eevent%29%3B%0A%0A%20%20%20%20%20%20if%20%28w3c%5Fslidy%2Eselected%5Ftext%5Flen%20%3C%3D%200%29%0A%20%20%20%20%20%20%20%20%20w3c%5Fslidy%2Ehide%5Ftable%5Fof%5Fcontents%28true%29%3B%0A%0A%20%20%20%20%20%20w3c%5Fslidy%2Estop%5Fpropagation%28e%29%3B%0A%20%20%20%20%0A%20%20%20%20%20%20if%20%28e%2Ecancel%20%21%3D%20undefined%29%0A%20%20%20%20%20%20%20%20e%2Ecancel%20%3D%20true%3B%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20if%20%28e%2EreturnValue%20%21%3D%20undefined%29%0A%20%20%20%20%20%20%20%20e%2EreturnValue%20%3D%20false%3B%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%7D%3B%0A%0A%20%20%20%20document%2Ebody%2EinsertBefore%28toc%2C%20document%2Ebody%2EfirstChild%29%3B%0A%20%20%20%20return%20toc%3B%0A%20%20%7D%2C%0A%0A%20%20is%5Fshown%5Ftoc%3A%20function%20%28%29%20%7B%0A%20%20%20%20return%20%21w3c%5Fslidy%2Ehas%5Fclass%28w3c%5Fslidy%2Etoc%2C%20%22hidden%22%29%3B%0A%20%20%7D%2C%0A%0A%20%20show%5Ftable%5Fof%5Fcontents%3A%20function%20%28%29%20%7B%0A%20%20%20%20w3c%5Fslidy%2Eremove%5Fclass%28w3c%5Fslidy%2Etoc%2C%20%22hidden%22%29%3B%0A%20%20%20%20var%20toc%20%3D%20w3c%5Fslidy%2Etoc%3B%0A%20%20%20%20toc%2Efocus%28%29%3B%0A%0A%20%20%20%20if%20%28w3c%5Fslidy%2Eie7%20%26%26%20w3c%5Fslidy%2Eslide%5Fnumber%20%3D%3D%200%29%0A%20%20%20%20%20%20setTimeout%28w3c%5Fslidy%2Eie%5Fhack%2C%20100%29%3B%0A%20%20%7D%2C%0A%0A%20%20hide%5Ftable%5Fof%5Fcontents%3A%20function%20%28focus%29%20%7B%0A%20%20%20%20w3c%5Fslidy%2Eadd%5Fclass%28w3c%5Fslidy%2Etoc%2C%20%22hidden%22%29%3B%0A%0A%20%20%20%20if%20%28focus%20%26%26%20%21w3c%5Fslidy%2Eopera%20%26%26%0A%20%20%20%20%20%20%20%20%21w3c%5Fslidy%2Ehas%5Fclass%28w3c%5Fslidy%2Etoc%2C%20%22hidden%22%29%29%0A%20%20%20%20%20%20w3c%5Fslidy%2Eset%5Ffocus%28%29%3B%0A%20%20%7D%2C%0A%0A%20%20toggle%5Ftable%5Fof%5Fcontents%3A%20function%20%28%29%20%7B%0A%20%20%20%20if%20%28w3c%5Fslidy%2Eis%5Fshown%5Ftoc%28%29%29%0A%20%20%20%20%20%20w3c%5Fslidy%2Ehide%5Ftable%5Fof%5Fcontents%28true%29%3B%0A%20%20%20%20else%0A%20%20%20%20%20%20w3c%5Fslidy%2Eshow%5Ftable%5Fof%5Fcontents%28%29%3B%0A%20%20%7D%2C%0A%0A%20%20%2F%2F%20called%20on%20clicking%20toc%20entry%0A%20%20toc%5Fclick%3A%20function%20%28e%29%20%7B%0A%20%20%20%20if%20%28%21e%29%0A%20%20%20%20%20%20e%20%3D%20window%2Eevent%3B%0A%0A%20%20%20%20var%20target%20%3D%20w3c%5Fslidy%2Eget%5Ftarget%28e%29%3B%0A%0A%20%20%20%20if%20%28target%20%26%26%20target%2EnodeType%20%3D%3D%201%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20var%20uri%20%3D%20target%2EgetAttribute%28%22href%22%29%3B%0A%0A%20%20%20%20%20%20if%20%28uri%29%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%2F%2Falert%28%22going%20to%20%22%20%2B%20uri%29%3B%0A%20%20%20%20%20%20%20%20var%20slide%20%3D%20w3c%5Fslidy%2Eslides%5Bw3c%5Fslidy%2Eslide%5Fnumber%5D%3B%0A%20%20%20%20%20%20%20%20w3c%5Fslidy%2Ehide%5Fslide%28slide%29%3B%0A%20%20%20%20%20%20%20%20w3c%5Fslidy%2Eslide%5Fnumber%20%3D%20w3c%5Fslidy%2Efind%5Fslide%5Fnumber%28uri%29%3B%0A%20%20%20%20%20%20%20%20slide%20%3D%20w3c%5Fslidy%2Eslides%5Bw3c%5Fslidy%2Eslide%5Fnumber%5D%3B%0A%20%20%20%20%20%20%20%20w3c%5Fslidy%2Elast%5Fshown%20%3D%20null%3B%0A%20%20%20%20%20%20%20%20w3c%5Fslidy%2Eset%5Flocation%28%29%3B%0A%20%20%20%20%20%20%20%20w3c%5Fslidy%2Eset%5Fvisibility%5Fall%5Fincremental%28%22hidden%22%29%3B%0A%20%20%20%20%20%20%20%20w3c%5Fslidy%2Eset%5Feos%5Fstatus%28%21w3c%5Fslidy%2Enext%5Fincremental%5Fitem%28w3c%5Fslidy%2Elast%5Fshown%29%29%3B%0A%20%20%20%20%20%20%20%20w3c%5Fslidy%2Eshow%5Fslide%28slide%29%3B%0A%20%20%20%20%20%20%20%20%2F%2Ftarget%2Efocus%28%29%3B%0A%0A%20%20%20%20%20%20%20%20try%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20if%20%28%21w3c%5Fslidy%2Eopera%29%0A%20%20%20%20%20%20%20%20%20%20%20%20w3c%5Fslidy%2Eset%5Ffocus%28%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20catch%20%28e%29%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20w3c%5Fslidy%2Ehide%5Ftable%5Fof%5Fcontents%28true%29%3B%0A%20%20%20%20if%20%28w3c%5Fslidy%2Eie7%29%20w3c%5Fslidy%2Eie%5Fhack%28%29%3B%0A%20%20%20%20w3c%5Fslidy%2Estop%5Fpropagation%28e%29%3B%0A%20%20%20%20return%20w3c%5Fslidy%2Ecancel%28e%29%3B%0A%20%20%7D%2C%0A%0A%20%20%2F%2F%20called%20onkeydown%20for%20toc%20entry%0A%20%20toc%5Fkey%5Fdown%3A%20function%20%28event%29%20%7B%0A%20%20%20%20var%20key%3B%0A%0A%20%20%20%20if%20%28%21event%29%0A%20%20%20%20%20%20var%20event%20%3D%20window%2Eevent%3B%0A%0A%20%20%20%20%2F%2F%20kludge%20around%20NS%2FIE%20differences%20%0A%20%20%20%20if%20%28window%2Eevent%29%0A%20%20%20%20%20%20key%20%3D%20window%2Eevent%2EkeyCode%3B%0A%20%20%20%20else%20if%20%28event%2Ewhich%29%0A%20%20%20%20%20%20key%20%3D%20event%2Ewhich%3B%0A%20%20%20%20else%0A%20%20%20%20%20%20return%20true%3B%20%2F%2F%20Yikes%21%20unknown%20browser%0A%0A%20%20%20%20%2F%2F%20ignore%20event%20if%20key%20value%20is%20zero%0A%20%20%20%20%2F%2F%20as%20for%20alt%20on%20Opera%20and%20Konqueror%0A%20%20%20%20if%20%28%21key%29%0A%20%20%20%20%20%20return%20true%3B%0A%0A%20%20%20%20%2F%2F%20check%20for%20concurrent%20control%2Fcommand%2Falt%20key%0A%20%20%20%20%2F%2F%20but%20are%20these%20only%20present%20on%20mouse%20events%3F%0A%0A%20%20%20%20if%20%28event%2EctrlKey%20%7C%7C%20event%2EaltKey%29%0A%20%20%20%20%20%20return%20true%3B%0A%0A%20%20%20%20if%20%28key%20%3D%3D%2013%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20var%20uri%20%3D%20this%2EgetAttribute%28%22href%22%29%3B%0A%0A%20%20%20%20%20%20if%20%28uri%29%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%2F%2Falert%28%22going%20to%20%22%20%2B%20uri%29%3B%0A%20%20%20%20%20%20%20var%20slide%20%3D%20w3c%5Fslidy%2Eslides%5Bw3c%5Fslidy%2Eslide%5Fnumber%5D%3B%0A%20%20%20%20%20%20%20%20w3c%5Fslidy%2Ehide%5Fslide%28slide%29%3B%0A%20%20%20%20%20%20%20%20w3c%5Fslidy%2Eslide%5Fnumber%20%3D%20w3c%5Fslidy%2Efind%5Fslide%5Fnumber%28uri%29%3B%0A%20%20%20%20%20%20%20%20slide%20%3D%20w3c%5Fslidy%2Eslides%5Bw3c%5Fslidy%2Eslide%5Fnumber%5D%3B%0A%20%20%20%20%20%20%20%20w3c%5Fslidy%2Elast%5Fshown%20%3D%20null%3B%0A%20%20%20%20%20%20%20%20w3c%5Fslidy%2Eset%5Flocation%28%29%3B%0A%20%20%20%20%20%20%20%20w3c%5Fslidy%2Eset%5Fvisibility%5Fall%5Fincremental%28%22hidden%22%29%3B%0A%20%20%20%20%20%20%20%20w3c%5Fslidy%2Eset%5Feos%5Fstatus%28%21w3c%5Fslidy%2Enext%5Fincremental%5Fitem%28w3c%5Fslidy%2Elast%5Fshown%29%29%3B%0A%20%20%20%20%20%20%20%20w3c%5Fslidy%2Eshow%5Fslide%28slide%29%3B%0A%20%20%20%20%20%20%20%20%2F%2Ftarget%2Efocus%28%29%3B%0A%0A%20%20%20%20%20%20%20%20try%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20if%20%28%21w3c%5Fslidy%2Eopera%29%0A%20%20%20%20%20%20%20%20%20%20%20%20w3c%5Fslidy%2Eset%5Ffocus%28%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20catch%20%28e%29%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20w3c%5Fslidy%2Ehide%5Ftable%5Fof%5Fcontents%28true%29%3B%0A%0A%20%20%20%20%20%20if%20%28self%2Eie7%29%0A%20%20%20%20%20%20%20w3c%5Fslidy%2Eie%5Fhack%28%29%3B%0A%0A%20%20%20%20%20%20return%20w3c%5Fslidy%2Ecancel%28event%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20if%20%28key%20%3D%3D%2040%20%26%26%20this%2Enext%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20this%2Enext%2Efocus%28%29%3B%0A%20%20%20%20%20%20return%20w3c%5Fslidy%2Ecancel%28event%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20if%20%28key%20%3D%3D%2038%20%26%26%20this%2Eprevious%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20this%2Eprevious%2Efocus%28%29%3B%0A%20%20%20%20%20%20return%20w3c%5Fslidy%2Ecancel%28event%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20return%20true%3B%0A%20%20%7D%2C%0A%0A%20%20touchstart%3A%20function%20%28e%29%0A%20%20%7B%0A%20%20%20%20%2F%2F%20a%20double%20touch%20often%20starts%20with%20a%0A%20%20%20%20%2F%2F%20single%20touch%20due%20to%20fingers%20touching%0A%20%20%20%20%2F%2F%20down%20at%20slightly%20different%20times%0A%20%20%20%20%2F%2F%20thus%20avoid%20calling%20preventDefault%20here%0A%20%20%20%20this%2Eprev%5Ftap%20%3D%20this%2Elast%5Ftap%3B%0A%20%20%20%20this%2Elast%5Ftap%20%3D%20%28new%20Date%29%2EgetTime%28%29%3B%0A%0A%20%20%20%20var%20tap%5Fdelay%20%3D%20this%2Elast%5Ftap%20%2D%20this%2Eprev%5Ftap%3B%0A%0A%20%20%20%20if%20%28tap%5Fdelay%20%3C%3D%20200%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%2F%2F%20double%20tap%0A%20%20%20%20%7D%0A%0A%20%20%20%20var%20touch%20%3D%20e%2Etouches%5B0%5D%3B%0A%0A%20%20%20%20this%2EpageX%20%3D%20touch%2EpageX%3B%0A%20%20%20%20this%2EpageY%20%3D%20touch%2EpageY%3B%0A%20%20%20%20this%2EscreenX%20%3D%20touch%2EscreenX%3B%0A%20%20%20%20this%2EscreenY%20%3D%20touch%2EscreenY%3B%0A%20%20%20%20this%2EclientX%20%3D%20touch%2EclientX%3B%0A%20%20%20%20this%2EclientY%20%3D%20touch%2EclientY%3B%0A%0A%20%20%20%20this%2Edelta%5Fx%20%3D%20this%2Edelta%5Fy%20%3D%200%3B%0A%20%20%7D%2C%0A%0A%20%20touchmove%3A%20function%20%28e%29%0A%20%20%7B%0A%20%20%20%20%2F%2F%20override%20native%20gestures%20for%20single%20touch%0A%20%20%20%20if%20%28e%2Etouches%2Elength%20%3E%201%29%0A%20%20%20%20%20%20return%3B%0A%0A%20%20%20%20e%2EpreventDefault%28%29%3B%0A%20%20%20%20var%20touch%20%3D%20e%2Etouches%5B0%5D%3B%0A%20%20%20%20this%2Edelta%5Fx%20%3D%20touch%2EpageX%20%2D%20this%2EpageX%3B%0A%20%20%20%20this%2Edelta%5Fy%20%3D%20touch%2EpageY%20%2D%20this%2EpageY%3B%0A%20%20%7D%2C%0A%0A%20%20touchend%3A%20function%20%28e%29%0A%20%20%7B%0A%20%20%20%20%2F%2F%20default%20behavior%20for%20multi%2Dtouch%0A%20%20%20%20if%20%28e%2Etouches%2Elength%20%3E%201%29%0A%20%20%20%20%20%20return%3B%0A%0A%20%20%20%20var%20delay%20%3D%20%28new%20Date%29%2EgetTime%28%29%20%2D%20this%2Elast%5Ftap%3B%0A%20%20%20%20var%20dx%20%3D%20this%2Edelta%5Fx%3B%0A%20%20%20%20var%20dy%20%3D%20this%2Edelta%5Fy%3B%0A%20%20%20%20var%20abs%5Fdx%20%3D%20Math%2Eabs%28dx%29%3B%0A%20%20%20%20var%20abs%5Fdy%20%3D%20Math%2Eabs%28dy%29%3B%0A%0A%20%20%20%20if%20%28delay%20%3C%20500%20%26%26%20%28abs%5Fdx%20%3E%20100%20%7C%7C%20abs%5Fdy%20%3E%20100%29%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20if%20%28abs%5Fdx%20%3E%200%2E5%20%2A%20abs%5Fdy%29%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20e%2EpreventDefault%28%29%3B%0A%0A%20%20%20%20%20%20%20%20if%20%28dx%20%3C%200%29%0A%20%20%20%20%20%20%20%20%20%20w3c%5Fslidy%2Enext%5Fslide%28true%29%3B%0A%20%20%20%20%20%20%20%20else%0A%20%20%20%20%20%20%20%20%20%20w3c%5Fslidy%2Eprevious%5Fslide%28true%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20else%20if%20%28abs%5Fdy%20%3E%202%20%2A%20abs%5Fdx%29%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20e%2EpreventDefault%28%29%3B%0A%20%20%20%20%20%20%20%20w3c%5Fslidy%2Etoggle%5Ftable%5Fof%5Fcontents%28%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20%2F%2F%20%23%23%23%20OBSOLETE%20%23%23%23%0A%20%20before%5Fprint%3A%20function%20%28%29%20%7B%0A%20%20%20%20this%2Eshow%5Fall%5Fslides%28%29%3B%0A%20%20%20%20this%2Ehide%5Ftoolbar%28%29%3B%0A%20%20%20%20alert%28%22before%20print%22%29%3B%0A%20%20%7D%2C%0A%0A%20%20%2F%2F%20%23%23%23%20OBSOLETE%20%23%23%23%0A%20%20after%5Fprint%3A%20function%20%28%29%20%7B%0A%20%20%20%20if%20%28%21this%2Eview%5Fall%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20this%2Esingle%5Fslide%5Fview%28%29%3B%0A%20%20%20%20%20%20this%2Eshow%5Ftoolbar%28%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20alert%28%22after%20print%22%29%3B%0A%20%20%7D%2C%0A%0A%20%20%2F%2F%20%23%23%23%20OBSOLETE%20%23%23%23%0A%20%20print%5Fslides%3A%20function%20%28%29%20%7B%0A%20%20%20%20this%2Ebefore%5Fprint%28%29%3B%0A%20%20%20%20window%2Eprint%28%29%3B%0A%20%20%20%20this%2Eafter%5Fprint%28%29%3B%0A%20%20%7D%2C%0A%0A%20%20%2F%2F%20%23%23%23%20OBSOLETE%20%3F%3F%20%23%23%23%0A%20%20toggle%5Fview%3A%20function%20%28%29%20%7B%0A%20%20%20%20if%20%28this%2Eview%5Fall%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20this%2Esingle%5Fslide%5Fview%28%29%3B%0A%20%20%20%20%20%20this%2Eshow%5Ftoolbar%28%29%3B%0A%20%20%20%20%20%20this%2Eview%5Fall%20%3D%200%3B%0A%20%20%20%20%7D%0A%20%20%20%20else%0A%20%20%20%20%7B%0A%20%20%20%20%20%20this%2Eshow%5Fall%5Fslides%28%29%3B%0A%20%20%20%20%20%20this%2Ehide%5Ftoolbar%28%29%3B%0A%20%20%20%20%20%20this%2Eview%5Fall%20%3D%201%3B%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20%2F%2F%20prepare%20for%20printing%20%20%23%23%23%20OBSOLETE%20%23%23%23%0A%20%20show%5Fall%5Fslides%3A%20function%20%28%29%20%7B%0A%20%20%20%20this%2Eremove%5Fclass%28document%2Ebody%2C%20%22single%5Fslide%22%29%3B%0A%20%20%20%20this%2Eset%5Fvisibility%5Fall%5Fincremental%28%22visible%22%29%3B%0A%20%20%7D%2C%0A%0A%20%20%2F%2F%20restore%20after%20printing%20%20%23%23%23%20OBSOLETE%20%23%23%23%0A%20%20single%5Fslide%5Fview%3A%20function%20%28%29%20%7B%0A%20%20%20%20this%2Eadd%5Fclass%28document%2Ebody%2C%20%22single%5Fslide%22%29%3B%0A%20%20%20%20this%2Eset%5Fvisibility%5Fall%5Fincremental%28%22visible%22%29%3B%0A%20%20%20%20this%2Elast%5Fshown%20%3D%20this%2Eprevious%5Fincremental%5Fitem%28null%29%3B%0A%20%20%7D%2C%0A%0A%20%20%2F%2F%20suppress%20IE%27s%20image%20toolbar%20pop%20up%0A%20%20hide%5Fimage%5Ftoolbar%3A%20function%20%28%29%20%7B%0A%20%20%20%20if%20%28%21this%2Ens%5Fpos%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20var%20images%20%3D%20document%2EgetElementsByTagName%28%22IMG%22%29%3B%0A%0A%20%20%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20images%2Elength%3B%20%2B%2Bi%29%0A%20%20%20%20%20%20%20%20images%5Bi%5D%2EsetAttribute%28%22galleryimg%22%2C%20%22no%22%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20unloaded%3A%20function%20%28e%29%20%7B%0A%20%20%20%20%2F%2Falert%28%22unloaded%22%29%3B%0A%20%20%7D%2C%0A%0A%20%20%2F%2F%20Safari%20and%20Konqueror%20don%27t%20yet%20support%20getComputedStyle%28%29%0A%20%20%2F%2F%20and%20they%20always%20reload%20page%20when%20location%2Ehref%20is%20updated%0A%20%20is%5FKHTML%3A%20function%20%28%29%20%7B%0A%20%20%20%20var%20agent%20%3D%20navigator%2EuserAgent%3B%0A%20%20%20%20return%20%28agent%2EindexOf%28%22KHTML%22%29%20%3E%3D%200%20%3F%20true%20%3A%20false%29%3B%0A%20%20%7D%2C%0A%0A%20%20%2F%2F%20find%20slide%20name%20from%20first%20h1%20element%0A%20%20%2F%2F%20default%20to%20document%20title%20%2B%20slide%20number%0A%20%20slide%5Fname%3A%20function%20%28index%29%20%7B%0A%20%20%20%20var%20name%20%3D%20null%3B%0A%20%20%20%20var%20slide%20%3D%20this%2Eslides%5Bindex%5D%3B%0A%0A%20%20%20%20var%20heading%20%3D%20this%2Efind%5Fheading%28slide%29%3B%0A%0A%20%20%20%20if%20%28heading%29%0A%20%20%20%20%20%20name%20%3D%20this%2Eextract%5Ftext%28heading%29%3B%0A%0A%20%20%20%20if%20%28%21name%29%0A%20%20%20%20%20%20name%20%3D%20this%2Etitle%20%2B%20%22%28%22%20%2B%20%28index%20%2B%201%29%20%2B%20%22%29%22%3B%0A%0A%20%20%20%20name%2Ereplace%28%2F%5C%26%2Fg%2C%20%22%26amp%3B%22%29%3B%0A%20%20%20%20name%2Ereplace%28%2F%5C%3C%2Fg%2C%20%22%26lt%3B%22%29%3B%0A%20%20%20%20name%2Ereplace%28%2F%5C%3E%2Fg%2C%20%22%26gt%3B%22%29%3B%0A%0A%20%20%20%20return%20name%3B%0A%20%20%7D%2C%0A%0A%20%20%2F%2F%20find%20first%20h1%20element%20in%20DOM%20tree%0A%20%20find%5Fheading%3A%20function%20%28node%29%20%7B%0A%20%20%20%20if%20%28%21node%20%7C%7C%20node%2EnodeType%20%21%3D%201%29%0A%20%20%20%20%20%20return%20null%3B%0A%0A%20%20%20%20if%20%28node%2EnodeName%20%3D%3D%20%22H1%22%20%7C%7C%20node%2EnodeName%20%3D%3D%20%22h1%22%29%0A%20%20%20%20%20%20return%20node%3B%0A%0A%20%20%20%20var%20child%20%3D%20node%2EfirstChild%3B%0A%0A%20%20%20%20while%20%28child%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20node%20%3D%20this%2Efind%5Fheading%28child%29%3B%0A%0A%20%20%20%20%20%20if%20%28node%29%0A%20%20%20%20%20%20%20%20return%20node%3B%0A%0A%20%20%20%20%20%20child%20%3D%20child%2EnextSibling%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20return%20null%3B%0A%20%20%7D%2C%0A%0A%20%20%2F%2F%20recursively%20extract%20text%20from%20DOM%20tree%0A%20%20extract%5Ftext%3A%20function%20%28node%29%20%7B%0A%20%20%20%20if%20%28%21node%29%0A%20%20%20%20%20%20return%20%22%22%3B%0A%0A%20%20%20%20%2F%2F%20text%20nodes%0A%20%20%20%20if%20%28node%2EnodeType%20%3D%3D%203%29%0A%20%20%20%20%20%20return%20node%2EnodeValue%3B%0A%0A%20%20%20%20%2F%2F%20elements%0A%20%20%20%20if%20%28node%2EnodeType%20%3D%3D%201%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20node%20%3D%20node%2EfirstChild%3B%0A%20%20%20%20%20%20var%20text%20%3D%20%22%22%3B%0A%0A%20%20%20%20%20%20while%20%28node%29%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20text%20%3D%20text%20%2B%20this%2Eextract%5Ftext%28node%29%3B%0A%20%20%20%20%20%20%20%20node%20%3D%20node%2EnextSibling%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20return%20text%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20return%20%22%22%3B%0A%20%20%7D%2C%0A%0A%20%20%2F%2F%20find%20copyright%20text%20from%20meta%20element%0A%20%20find%5Fcopyright%3A%20function%20%28%29%20%7B%0A%20%20%20%20var%20name%2C%20content%3B%0A%20%20%20%20var%20meta%20%3D%20document%2EgetElementsByTagName%28%22meta%22%29%3B%0A%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20meta%2Elength%3B%20%2B%2Bi%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20name%20%3D%20meta%5Bi%5D%2EgetAttribute%28%22name%22%29%3B%0A%20%20%20%20%20%20content%20%3D%20meta%5Bi%5D%2EgetAttribute%28%22content%22%29%3B%0A%0A%20%20%20%20%20%20if%20%28name%20%3D%3D%20%22copyright%22%29%0A%20%20%20%20%20%20%20%20return%20content%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20return%20null%3B%0A%20%20%7D%2C%0A%0A%20%20find%5Fsize%5Fadjust%3A%20function%20%28%29%20%7B%0A%20%20%20%20var%20name%2C%20content%2C%20offset%3B%0A%20%20%20%20var%20meta%20%3D%20document%2EgetElementsByTagName%28%22meta%22%29%3B%0A%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20meta%2Elength%3B%20%2B%2Bi%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20name%20%3D%20meta%5Bi%5D%2EgetAttribute%28%22name%22%29%3B%0A%20%20%20%20%20%20content%20%3D%20meta%5Bi%5D%2EgetAttribute%28%22content%22%29%3B%0A%0A%20%20%20%20%20%20if%20%28name%20%3D%3D%20%22font%2Dsize%2Dadjustment%22%29%0A%20%20%20%20%20%20%20%20return%201%20%2A%20content%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20return%201%3B%0A%20%20%7D%2C%0A%0A%20%20%2F%2F%20%3Cmeta%20name%3D%22duration%22%20content%3D%2220%22%20%2F%3E%20%20for%2020%20minutes%0A%20%20find%5Fduration%3A%20function%20%28%29%20%7B%0A%20%20%20%20var%20name%2C%20content%2C%20offset%3B%0A%20%20%20%20var%20meta%20%3D%20document%2EgetElementsByTagName%28%22meta%22%29%3B%0A%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20meta%2Elength%3B%20%2B%2Bi%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20name%20%3D%20meta%5Bi%5D%2EgetAttribute%28%22name%22%29%3B%0A%20%20%20%20%20%20content%20%3D%20meta%5Bi%5D%2EgetAttribute%28%22content%22%29%3B%0A%0A%20%20%20%20%20%20if%20%28name%20%3D%3D%20%22duration%22%29%0A%20%20%20%20%20%20%20%20return%2060000%20%2A%20content%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20return%20null%3B%0A%20%20%7D%2C%0A%0A%20%20replace%5Fby%5Fnon%5Fbreaking%5Fspace%3A%20function%20%28str%29%20%7B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20str%2Elength%3B%20%2B%2Bi%29%0A%20%20%20%20%20%20str%5Bi%5D%20%3D%20160%3B%0A%20%20%7D%2C%0A%0A%20%20%2F%2F%20%23%23%23%20CHECK%20ME%20%23%23%23%20is%20use%20of%20%22li%22%20okay%20for%20text%2Fhtml%3F%0A%20%20%2F%2F%20for%20XHTML%20do%20we%20also%20need%20to%20specify%20namespace%3F%0A%20%20init%5Foutliner%3A%20function%20%28%29%20%7B%0A%20%20%20%20var%20items%20%3D%20document%2EgetElementsByTagName%28%22li%22%29%3B%0A%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20items%2Elength%3B%20%2B%2Bi%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20var%20target%20%3D%20items%5Bi%5D%3B%0A%0A%20%20%20%20%20%20if%20%28%21this%2Ehas%5Fclass%28target%2EparentNode%2C%20%22outline%22%29%29%0A%20%20%20%20%20%20%20%20continue%3B%0A%0A%20%20%20%20%20%20target%2Eonclick%20%3D%20this%2Eoutline%5Fclick%3B%0A%2F%2A%20%23%23%23%20more%20work%20needed%20for%20IE6%0A%20%20%20%20%20%20if%20%28%21this%2Ens%5Fpos%29%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20target%2Eonmouseover%20%3D%20this%2Ehover%5Foutline%3B%0A%20%20%20%20%20%20%20%20target%2Eonmouseout%20%3D%20this%2Eunhover%5Foutline%3B%0A%20%20%20%20%20%20%7D%0A%2A%2F%0A%20%20%20%20%20%20if%20%28this%2Efoldable%28target%29%29%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20target%2Efoldable%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20target%2Eonfocus%20%3D%20function%20%28%29%20%7Bw3c%5Fslidy%2Eoutline%20%3D%20this%3B%7D%3B%0A%20%20%20%20%20%20%20%20target%2Eonblur%20%3D%20function%20%28%29%20%7Bw3c%5Fslidy%2Eoutline%20%3D%20null%3B%7D%3B%0A%0A%20%20%20%20%20%20%20%20if%20%28%21target%2EgetAttribute%28%22tabindex%22%29%29%0A%20%20%20%20%20%20%20%20%20%20target%2EsetAttribute%28%22tabindex%22%2C%20%220%22%29%3B%0A%0A%20%20%20%20%20%20%20%20if%20%28this%2Ehas%5Fclass%28target%2C%20%22expand%22%29%29%0A%20%20%20%20%20%20%20%20%20%20this%2Eunfold%28target%29%3B%0A%20%20%20%20%20%20%20%20else%0A%20%20%20%20%20%20%20%20%20%20this%2Efold%28target%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20else%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20this%2Eadd%5Fclass%28target%2C%20%22nofold%22%29%3B%0A%20%20%20%20%20%20%20%20target%2Evisible%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20target%2Efoldable%20%3D%20false%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20foldable%3A%20function%20%28item%29%20%7B%0A%20%20%20%20if%20%28%21item%20%7C%7C%20item%2EnodeType%20%21%3D%201%29%0A%20%20%20%20%20%20return%20false%3B%0A%0A%20%20%20%20var%20node%20%3D%20item%2EfirstChild%3B%0A%0A%20%20%20%20while%20%28node%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20if%20%28node%2EnodeType%20%3D%3D%201%20%26%26%20this%2Eis%5Fblock%28node%29%29%0A%20%20%20%20%20%20%20%20return%20true%3B%0A%0A%20%20%20%20%20%20node%20%3D%20node%2EnextSibling%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20return%20false%3B%0A%20%20%7D%2C%0A%0A%20%20%2F%2F%20%23%23%23%20CHECK%20ME%20%23%23%23%20switch%20to%20add%2Fremove%20%22hidden%22%20class%0A%20%20fold%3A%20function%20%28item%29%20%7B%0A%20%20%20%20if%20%28item%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20this%2Eremove%5Fclass%28item%2C%20%22unfolded%22%29%3B%0A%20%20%20%20%20%20this%2Eadd%5Fclass%28item%2C%20%22folded%22%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20var%20node%20%3D%20item%20%3F%20item%2EfirstChild%20%3A%20null%3B%0A%0A%20%20%20%20while%20%28node%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20if%20%28node%2EnodeType%20%3D%3D%201%20%26%26%20this%2Eis%5Fblock%28node%29%29%20%2F%2F%20element%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20w3c%5Fslidy%2Eadd%5Fclass%28node%2C%20%22hidden%22%29%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20node%20%3D%20node%2EnextSibling%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20item%2Evisible%20%3D%20false%3B%0A%20%20%7D%2C%0A%0A%20%20%2F%2F%20%23%23%23%20CHECK%20ME%20%23%23%23%20switch%20to%20add%2Fremove%20%22hidden%22%20class%0A%20%20unfold%3A%20function%20%28item%29%20%7B%0A%20%20%20%20if%20%28item%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20this%2Eadd%5Fclass%28item%2C%20%22unfolded%22%29%3B%0A%20%20%20%20%20%20this%2Eremove%5Fclass%28item%2C%20%22folded%22%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20var%20node%20%3D%20item%20%3F%20item%2EfirstChild%20%3A%20null%3B%0A%0A%20%20%20%20while%20%28node%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20if%20%28node%2EnodeType%20%3D%3D%201%20%26%26%20this%2Eis%5Fblock%28node%29%29%20%2F%2F%20element%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20w3c%5Fslidy%2Eremove%5Fclass%28node%2C%20%22hidden%22%29%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20node%20%3D%20node%2EnextSibling%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20item%2Evisible%20%3D%20true%3B%0A%20%20%7D%2C%0A%0A%20%20outline%5Fclick%3A%20function%20%28e%29%20%7B%0A%20%20%20%20if%20%28%21e%29%0A%20%20%20%20%20%20e%20%3D%20window%2Eevent%3B%0A%0A%20%20%20%20var%20rightclick%20%3D%20false%3B%0A%20%20%20%20var%20target%20%3D%20w3c%5Fslidy%2Eget%5Ftarget%28e%29%3B%0A%0A%20%20%20%20while%20%28target%20%26%26%20target%2Evisible%20%3D%3D%20undefined%29%0A%20%20%20%20%20%20target%20%3D%20target%2EparentNode%3B%0A%0A%20%20%20%20if%20%28%21target%29%0A%20%20%20%20%20%20return%20true%3B%0A%0A%20%20%20%20if%20%28e%2Ewhich%29%0A%20%20%20%20%20%20rightclick%20%3D%20%28e%2Ewhich%20%3D%3D%203%29%3B%0A%20%20%20%20else%20if%20%28e%2Ebutton%29%0A%20%20%20%20%20%20rightclick%20%3D%20%28e%2Ebutton%20%3D%3D%202%29%3B%0A%0A%20%20%20%20if%20%28%21rightclick%20%26%26%20target%2Evisible%20%21%3D%20undefined%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20if%20%28target%2Efoldable%29%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20if%20%28target%2Evisible%29%0A%20%20%20%20%20%20%20%20%20%20w3c%5Fslidy%2Efold%28target%29%3B%0A%20%20%20%20%20%20%20%20else%0A%20%20%20%20%20%20%20%20%20%20w3c%5Fslidy%2Eunfold%28target%29%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20w3c%5Fslidy%2Estop%5Fpropagation%28e%29%3B%0A%20%20%20%20%20%20e%2Ecancel%20%3D%20true%3B%0A%20%20%20%20%20%20e%2EreturnValue%20%3D%20false%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20return%20false%3B%0A%20%20%7D%2C%0A%0A%20%20add%5Finitial%5Fprompt%3A%20function%20%28%29%20%7B%0A%20%20%20%20var%20prompt%20%3D%20this%2Ecreate%5Felement%28%22div%22%29%3B%0A%20%20%20%20prompt%2EsetAttribute%28%22class%22%2C%20%22initial%5Fprompt%22%29%3B%0A%0A%20%20%20%20var%20p1%20%3D%20this%2Ecreate%5Felement%28%22p%22%29%3B%0A%20%20%20%20prompt%2EappendChild%28p1%29%3B%0A%20%20%20%20p1%2EsetAttribute%28%22class%22%2C%20%22help%22%29%3B%0A%0A%20%20%20%20if%20%28this%2Ekeyboardless%29%0A%20%20%20%20%20%20p1%2EinnerHTML%20%3D%20%22swipe%20left%20to%20move%20to%20next%20slide%22%3B%0A%20%20%20%20else%0A%20%20%20%20%20%20p1%2EinnerHTML%20%3D%20%22Space%2C%20Right%20Arrow%20or%20swipe%20left%20to%20move%20to%20%22%20%2B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22next%20slide%2C%20click%20help%20below%20for%20more%20details%22%3B%0A%0A%20%20%20%20this%2Eadd%5Flistener%28prompt%2C%20%22click%22%2C%20function%20%28e%29%20%7B%0A%20%20%20%20%20%20document%2Ebody%2EremoveChild%28prompt%29%3B%0A%20%20%20%20%20%20w3c%5Fslidy%2Estop%5Fpropagation%28e%29%3B%0A%20%20%20%20%0A%20%20%20%20%20%20if%20%28e%2Ecancel%20%21%3D%20undefined%29%0A%20%20%20%20%20%20%20%20e%2Ecancel%20%3D%20true%3B%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20if%20%28e%2EreturnValue%20%21%3D%20undefined%29%0A%20%20%20%20%20%20%20%20e%2EreturnValue%20%3D%20false%3B%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%7D%29%3B%0A%0A%20%20%20%20document%2Ebody%2EappendChild%28prompt%29%3B%0A%20%20%20%20this%2Einitial%5Fprompt%20%3D%20prompt%3B%0A%20%20%20%20setTimeout%28function%28%29%20%7Bdocument%2Ebody%2EremoveChild%28prompt%29%3B%7D%2C%205000%29%3B%0A%20%20%7D%2C%0A%0A%20%20add%5Ftoolbar%3A%20function%20%28%29%20%7B%0A%20%20%20%20var%20counter%2C%20page%3B%0A%0A%20%20%20%20%20this%2Etoolbar%20%3D%20this%2Ecreate%5Felement%28%22div%22%29%3B%0A%20%20%20%20%20this%2Etoolbar%2EsetAttribute%28%22class%22%2C%20%22toolbar%22%29%3B%0A%0A%20%20%20%20%20%2F%2F%20a%20reasonably%20behaved%20browser%0A%20%20%20%20%20if%20%28this%2Ens%5Fpos%20%7C%7C%20%21this%2Eie6%29%0A%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20var%20right%20%3D%20this%2Ecreate%5Felement%28%22div%22%29%3B%0A%20%20%20%20%20%20%20right%2EsetAttribute%28%22style%22%2C%20%22float%3A%20right%3B%20text%2Dalign%3A%20right%22%29%3B%0A%0A%20%20%20%20%20%20%20counter%20%3D%20this%2Ecreate%5Felement%28%22span%22%29%0A%20%20%20%20%20%20%20counter%2EinnerHTML%20%3D%20this%2Elocalize%28%22slide%22%29%20%2B%20%22%20n%2Fm%22%3B%0A%20%20%20%20%20%20%20right%2EappendChild%28counter%29%3B%0A%20%20%20%20%20%20%20this%2Etoolbar%2EappendChild%28right%29%3B%0A%0A%20%20%20%20%20%20%20var%20left%20%3D%20this%2Ecreate%5Felement%28%22div%22%29%3B%0A%20%20%20%20%20%20%20left%2EsetAttribute%28%22style%22%2C%20%22text%2Dalign%3A%20left%22%29%3B%0A%0A%20%20%20%20%20%20%20%2F%2F%20global%20end%20of%20slide%20indicator%0A%20%20%20%20%20%20%20this%2Eeos%20%3D%20this%2Ecreate%5Felement%28%22span%22%29%3B%0A%20%20%20%20%20%20%20this%2Eeos%2EinnerHTML%20%3D%20%22%2A%20%22%3B%0A%20%20%20%20%20%20%20left%2EappendChild%28this%2Eeos%29%3B%0A%0A%20%20%20%20%20%20%20var%20help%20%3D%20this%2Ecreate%5Felement%28%22a%22%29%3B%0A%20%20%20%20%20%20%20help%2EsetAttribute%28%22href%22%2C%20this%2Ehelp%5Fpage%29%3B%0A%20%20%20%20%20%20%20help%2EsetAttribute%28%22title%22%2C%20this%2Elocalize%28this%2Ehelp%5Ftext%29%29%3B%0A%20%20%20%20%20%20%20help%2EinnerHTML%20%3D%20this%2Elocalize%28%22help%3F%22%29%3B%0A%20%20%20%20%20%20%20left%2EappendChild%28help%29%3B%0A%20%20%20%20%20%20%20this%2Ehelp%5Fanchor%20%3D%20help%3B%20%20%2F%2F%20save%20for%20focus%20hack%0A%0A%20%20%20%20%20%20%20var%20gap1%20%3D%20document%2EcreateTextNode%28%22%20%22%29%3B%0A%20%20%20%20%20%20%20left%2EappendChild%28gap1%29%3B%0A%0A%20%20%20%20%20%20%20var%20contents%20%3D%20this%2Ecreate%5Felement%28%22a%22%29%3B%0A%20%20%20%20%20%20%20contents%2EsetAttribute%28%22href%22%2C%20%22javascript%3Aw3c%5Fslidy%2Etoggle%5Ftable%5Fof%5Fcontents%28%29%22%29%3B%0A%20%20%20%20%20%20%20contents%2EsetAttribute%28%22title%22%2C%20this%2Elocalize%28%22table%20of%20contents%22%29%29%3B%0A%20%20%20%20%20%20%20contents%2EinnerHTML%20%3D%20this%2Elocalize%28%22contents%3F%22%29%3B%0A%20%20%20%20%20%20%20left%2EappendChild%28contents%29%3B%0A%0A%20%20%20%20%20%20%20var%20gap2%20%3D%20document%2EcreateTextNode%28%22%20%22%29%3B%0A%20%20%20%20%20%20%20left%2EappendChild%28gap2%29%3B%0A%0A%20%20%20%20%20%20%20var%20copyright%20%3D%20this%2Efind%5Fcopyright%28%29%3B%0A%0A%20%20%20%20%20%20%20if%20%28copyright%29%0A%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20var%20span%20%3D%20this%2Ecreate%5Felement%28%22span%22%29%3B%0A%20%20%20%20%20%20%20%20%20span%2EclassName%20%3D%20%22copyright%22%3B%0A%20%20%20%20%20%20%20%20%20span%2EinnerHTML%20%3D%20copyright%3B%0A%20%20%20%20%20%20%20%20%20left%2EappendChild%28span%29%3B%0A%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20this%2Etoolbar%2EsetAttribute%28%22tabindex%22%2C%20%220%22%29%3B%0A%20%20%20%20%20%20%20this%2Etoolbar%2EappendChild%28left%29%3B%0A%20%20%20%20%20%7D%0A%20%20%20%20%20else%20%2F%2F%20IE6%20so%20need%20to%20work%20around%20its%20poor%20CSS%20support%0A%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20this%2Etoolbar%2Estyle%2Eposition%20%3D%20%28this%2Eie7%20%3F%20%22fixed%22%20%3A%20%22absolute%22%29%3B%0A%20%20%20%20%20%20%20this%2Etoolbar%2Estyle%2EzIndex%20%3D%20%22200%22%3B%0A%20%20%20%20%20%20%20this%2Etoolbar%2Estyle%2Ewidth%20%3D%20%2299%2E9%25%22%3B%0A%20%20%20%20%20%20%20this%2Etoolbar%2Estyle%2Eheight%20%3D%20%221%2E2em%22%3B%0A%20%20%20%20%20%20%20this%2Etoolbar%2Estyle%2Etop%20%3D%20%22auto%22%3B%0A%20%20%20%20%20%20%20this%2Etoolbar%2Estyle%2Ebottom%20%3D%20%220%22%3B%0A%20%20%20%20%20%20%20this%2Etoolbar%2Estyle%2Eleft%20%3D%20%220%22%3B%0A%20%20%20%20%20%20%20this%2Etoolbar%2Estyle%2Eright%20%3D%20%220%22%3B%0A%20%20%20%20%20%20%20this%2Etoolbar%2Estyle%2EtextAlign%20%3D%20%22left%22%3B%0A%20%20%20%20%20%20%20this%2Etoolbar%2Estyle%2EfontSize%20%3D%20%2260%25%22%3B%0A%20%20%20%20%20%20%20this%2Etoolbar%2Estyle%2Ecolor%20%3D%20%22red%22%3B%0A%20%20%20%20%20%20%20this%2Etoolbar%2EborderWidth%20%3D%200%3B%0A%20%20%20%20%20%20%20this%2Etoolbar%2EclassName%20%3D%20%22toolbar%22%3B%0A%20%20%20%20%20%20%20this%2Etoolbar%2Estyle%2Ebackground%20%3D%20%22rgb%28240%2C240%2C240%29%22%3B%0A%0A%20%20%20%20%20%20%20%2F%2F%20would%20like%20to%20have%20help%20text%20left%20aligned%0A%20%20%20%20%20%20%20%2F%2F%20and%20page%20counter%20right%20aligned%2C%20floating%0A%20%20%20%20%20%20%20%2F%2F%20div%27s%20don%27t%20work%2C%20so%20instead%20use%20nested%0A%20%20%20%20%20%20%20%2F%2F%20absolutely%20positioned%20div%27s%2E%0A%0A%20%20%20%20%20%20%20var%20sp%20%3D%20this%2Ecreate%5Felement%28%22span%22%29%3B%0A%20%20%20%20%20%20%20sp%2EinnerHTML%20%3D%20%22%26nbsp%3B%26nbsp%3B%2A%26nbsp%3B%22%3B%0A%20%20%20%20%20%20%20this%2Etoolbar%2EappendChild%28sp%29%3B%0A%20%20%20%20%20%20%20this%2Eeos%20%3D%20sp%3B%20%20%2F%2F%20end%20of%20slide%20indicator%0A%0A%20%20%20%20%20%20%20var%20help%20%3D%20this%2Ecreate%5Felement%28%22a%22%29%3B%0A%20%20%20%20%20%20%20help%2EsetAttribute%28%22href%22%2C%20this%2Ehelp%5Fpage%29%3B%0A%20%20%20%20%20%20%20help%2EsetAttribute%28%22title%22%2C%20this%2Elocalize%28this%2Ehelp%5Ftext%29%29%3B%0A%20%20%20%20%20%20%20help%2EinnerHTML%20%3D%20this%2Elocalize%28%22help%3F%22%29%3B%0A%20%20%20%20%20%20%20this%2Etoolbar%2EappendChild%28help%29%3B%0A%20%20%20%20%20%20%20this%2Ehelp%5Fanchor%20%3D%20help%3B%20%20%2F%2F%20save%20for%20focus%20hack%0A%0A%20%20%20%20%20%20%20var%20gap1%20%3D%20document%2EcreateTextNode%28%22%20%22%29%3B%0A%20%20%20%20%20%20%20this%2Etoolbar%2EappendChild%28gap1%29%3B%0A%0A%20%20%20%20%20%20%20var%20contents%20%3D%20this%2Ecreate%5Felement%28%22a%22%29%3B%0A%20%20%20%20%20%20%20contents%2EsetAttribute%28%22href%22%2C%20%22javascript%3AtoggleTableOfContents%28%29%22%29%3B%0A%20%20%20%20%20%20%20contents%2EsetAttribute%28%22title%22%2C%20this%2Elocalize%28%22table%20of%20contents%22%2Elocalize%29%29%3B%0A%20%20%20%20%20%20%20contents%2EinnerHTML%20%3D%20this%2Elocalize%28%22contents%3F%22%29%3B%0A%20%20%20%20%20%20%20this%2Etoolbar%2EappendChild%28contents%29%3B%0A%0A%20%20%20%20%20%20%20var%20gap2%20%3D%20document%2EcreateTextNode%28%22%20%22%29%3B%0A%20%20%20%20%20%20%20this%2Etoolbar%2EappendChild%28gap2%29%3B%0A%0A%20%20%20%20%20%20%20var%20copyright%20%3D%20this%2Efind%5Fcopyright%28%29%3B%0A%0A%20%20%20%20%20%20%20if%20%28copyright%29%0A%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20var%20span%20%3D%20this%2Ecreate%5Felement%28%22span%22%29%3B%0A%20%20%20%20%20%20%20%20%20span%2EinnerHTML%20%3D%20copyright%3B%0A%20%20%20%20%20%20%20%20%20span%2Estyle%2Ecolor%20%3D%20%22black%22%3B%0A%20%20%20%20%20%20%20%20%20span%2Estyle%2EmarginLeft%20%3D%20%220%2E5em%22%3B%0A%20%20%20%20%20%20%20%20%20this%2Etoolbar%2EappendChild%28span%29%3B%0A%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20counter%20%3D%20this%2Ecreate%5Felement%28%22div%22%29%0A%20%20%20%20%20%20%20counter%2Estyle%2Eposition%20%3D%20%22absolute%22%3B%0A%20%20%20%20%20%20%20counter%2Estyle%2Ewidth%20%3D%20%22auto%22%3B%20%2F%2F%2220%25%22%3B%0A%20%20%20%20%20%20%20counter%2Estyle%2Eheight%20%3D%20%221%2E2em%22%3B%0A%20%20%20%20%20%20%20counter%2Estyle%2Etop%20%3D%20%22auto%22%3B%0A%20%20%20%20%20%20%20counter%2Estyle%2Ebottom%20%3D%200%3B%0A%20%20%20%20%20%20%20counter%2Estyle%2Eright%20%3D%20%220%22%3B%0A%20%20%20%20%20%20%20counter%2Estyle%2EtextAlign%20%3D%20%22right%22%3B%0A%20%20%20%20%20%20%20counter%2Estyle%2Ecolor%20%3D%20%22red%22%3B%0A%20%20%20%20%20%20%20counter%2Estyle%2Ebackground%20%3D%20%22rgb%28240%2C240%2C240%29%22%3B%0A%0A%20%20%20%20%20%20%20counter%2EinnerHTML%20%3D%20this%2Elocalize%28%22slide%22%29%20%2B%20%22%20n%2Fm%22%3B%0A%20%20%20%20%20%20%20this%2Etoolbar%2EappendChild%28counter%29%3B%0A%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%2F%2F%20ensure%20that%20click%20isn%27t%20passed%20through%20to%20the%20page%0A%20%20%20%20%20this%2Etoolbar%2Eonclick%20%3D%0A%20%20%20%20%20%20%20%20%20function%20%28e%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20if%20%28%21e%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20e%20%3D%20window%2Eevent%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20var%20target%20%3D%20e%2Etarget%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20if%20%28%21target%20%26%26%20e%2EsrcElement%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20target%20%3D%20e%2EsrcElement%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20work%20around%20Safari%20bug%0A%20%20%20%20%20%20%20%20%20%20%20if%20%28target%20%26%26%20target%2EnodeType%20%3D%3D%203%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20target%20%3D%20target%2EparentNode%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20w3c%5Fslidy%2Estop%5Fpropagation%28e%29%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20if%20%28target%20%26%26%20target%2EnodeName%2EtoLowerCase%28%29%20%21%3D%20%22a%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20w3c%5Fslidy%2Emouse%5Fbutton%5Fclick%28e%29%3B%0A%20%20%20%20%20%20%20%20%20%7D%3B%0A%0A%20%20%20%20%20this%2Eslide%5Fnumber%5Felement%20%3D%20counter%3B%0A%20%20%20%20%20this%2Eset%5Feos%5Fstatus%28false%29%3B%0A%20%20%20%20%20document%2Ebody%2EappendChild%28this%2Etoolbar%29%3B%0A%20%20%7D%2C%0A%0A%20%20%2F%2F%20wysiwyg%20editors%20make%20it%20hard%20to%20use%20div%20elements%0A%20%20%2F%2F%20e%2Eg%2E%20amaya%20loses%20the%20div%20when%20you%20copy%20and%20paste%0A%20%20%2F%2F%20this%20function%20wraps%20div%20elements%20around%20implicit%0A%20%20%2F%2F%20slides%20which%20start%20with%20an%20h1%20element%20and%20continue%0A%20%20%2F%2F%20up%20to%20the%20next%20heading%20or%20div%20element%0A%20%20wrap%5Fimplicit%5Fslides%3A%20function%20%28%29%20%7B%0A%20%20%20%20var%20i%2C%20heading%2C%20node%2C%20next%2C%20div%3B%0A%20%20%20%20var%20headings%20%3D%20document%2EgetElementsByTagName%28%22h1%22%29%3B%0A%0A%20%20%20%20if%20%28%21headings%29%0A%20%20%20%20%20%20return%3B%0A%0A%20%20%20%20for%20%28i%20%3D%200%3B%20i%20%3C%20headings%2Elength%3B%20%2B%2Bi%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20heading%20%3D%20headings%5Bi%5D%3B%0A%0A%20%20%20%20%20%20if%20%28heading%2EparentNode%20%21%3D%20document%2Ebody%29%0A%20%20%20%20%20%20%20%20continue%3B%0A%0A%20%20%20%20%20%20node%20%3D%20heading%2EnextSibling%3B%0A%0A%20%20%20%20%20%20div%20%3D%20document%2EcreateElement%28%22div%22%29%3B%0A%20%20%20%20%20%20this%2Eadd%5Fclass%28div%2C%20%22slide%22%29%3B%0A%20%20%20%20%20%20document%2Ebody%2EreplaceChild%28div%2C%20heading%29%3B%0A%20%20%20%20%20%20div%2EappendChild%28heading%29%3B%0A%0A%20%20%20%20%20%20while%20%28node%29%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20if%20%28node%2EnodeType%20%3D%3D%201%29%20%2F%2F%20an%20element%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20if%20%28node%2EnodeName%20%3D%3D%20%22H1%22%20%7C%7C%20node%2EnodeName%20%3D%3D%20%22h1%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20if%20%28node%2EnodeName%20%3D%3D%20%22DIV%22%20%7C%7C%20node%2EnodeName%20%3D%3D%20%22div%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28this%2Ehas%5Fclass%28node%2C%20%22slide%22%29%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28this%2Ehas%5Fclass%28node%2C%20%22handout%22%29%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20next%20%3D%20node%2EnextSibling%3B%0A%20%20%20%20%20%20%20%20node%20%3D%20document%2Ebody%2EremoveChild%28node%29%3B%0A%20%20%20%20%20%20%20%20div%2EappendChild%28node%29%3B%0A%20%20%20%20%20%20%20%20node%20%3D%20next%3B%0A%20%20%20%20%20%20%7D%20%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20attach%5Ftouch%5Fhanders%3A%20function%28slides%29%0A%20%20%7B%0A%20%20%20%20var%20i%2C%20slide%3B%0A%0A%20%20%20%20for%20%28i%20%3D%200%3B%20i%20%3C%20slides%2Elength%3B%20%2B%2Bi%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20slide%20%3D%20slides%5Bi%5D%3B%0A%20%20%20%20%20%20this%2Eadd%5Flistener%28slide%2C%20%22touchstart%22%2C%20this%2Etouchstart%29%3B%0A%20%20%20%20%20%20this%2Eadd%5Flistener%28slide%2C%20%22touchmove%22%2C%20this%2Etouchmove%29%3B%0A%20%20%20%20%20%20this%2Eadd%5Flistener%28slide%2C%20%22touchend%22%2C%20this%2Etouchend%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%2F%2F%20return%20new%20array%20of%20all%20slides%0A%20%20collect%5Fslides%3A%20function%20%28%29%20%7B%0A%20%20%20%20var%20slides%20%3D%20new%20Array%28%29%3B%0A%20%20%20%20var%20divs%20%3D%20document%2Ebody%2EgetElementsByTagName%28%22div%22%29%3B%0A%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20divs%2Elength%3B%20%2B%2Bi%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20div%20%3D%20divs%2Eitem%28i%29%3B%0A%0A%20%20%20%20%20%20if%20%28this%2Ehas%5Fclass%28div%2C%20%22slide%22%29%29%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20add%20slide%20to%20collection%0A%20%20%20%20%20%20%20%20slides%5Bslides%2Elength%5D%20%3D%20div%3B%0A%0A%20%20%20%20%20%20%20%20%2F%2F%20hide%20each%20slide%20as%20it%20is%20found%0A%20%20%20%20%20%20%20%20this%2Eadd%5Fclass%28div%2C%20%22hidden%22%29%3B%0A%0A%20%20%20%20%20%20%20%20%2F%2F%20add%20dummy%20%3Cbr%2F%3E%20at%20end%20for%20scrolling%20hack%0A%20%20%20%20%20%20%20%20var%20node1%20%3D%20document%2EcreateElement%28%22br%22%29%3B%0A%20%20%20%20%20%20%20%20div%2EappendChild%28node1%29%3B%0A%20%20%20%20%20%20%20%20var%20node2%20%3D%20document%2EcreateElement%28%22br%22%29%3B%0A%20%20%20%20%20%20%20%20div%2EappendChild%28node2%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20else%20if%20%28this%2Ehas%5Fclass%28div%2C%20%22background%22%29%29%0A%20%20%20%20%20%20%7B%20%20%2F%2F%20work%20around%20for%20Firefox%20SVG%20reload%20bug%0A%20%20%20%20%20%20%20%20%2F%2F%20which%20otherwise%20replaces%201st%20SVG%20graphic%20with%202nd%0A%20%20%20%20%20%20%20%20div%2Estyle%2Edisplay%20%3D%20%22block%22%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20this%2Eslides%20%3D%20slides%3B%0A%20%20%7D%2C%0A%0A%20%20%2F%2F%20return%20new%20array%20of%20all%20%3Cdiv%20class%3D%22handout%22%3E%0A%20%20collect%5Fnotes%3A%20function%20%28%29%20%7B%0A%20%20%20%20var%20notes%20%3D%20new%20Array%28%29%3B%0A%20%20%20%20var%20divs%20%3D%20document%2Ebody%2EgetElementsByTagName%28%22div%22%29%3B%0A%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20divs%2Elength%3B%20%2B%2Bi%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20div%20%3D%20divs%2Eitem%28i%29%3B%0A%0A%20%20%20%20%20%20if%20%28this%2Ehas%5Fclass%28div%2C%20%22handout%22%29%29%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20add%20note%20to%20collection%0A%20%20%20%20%20%20%20%20notes%5Bnotes%2Elength%5D%20%3D%20div%3B%0A%0A%20%20%20%20%20%20%20%20%2F%2F%20and%20hide%20it%0A%20%20%20%20%20%20%20%20this%2Eadd%5Fclass%28div%2C%20%22hidden%22%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20this%2Enotes%20%3D%20notes%3B%0A%20%20%7D%2C%0A%0A%20%20%2F%2F%20return%20new%20array%20of%20all%20%3Cdiv%20class%3D%22background%22%3E%0A%20%20%2F%2F%20including%20named%20backgrounds%20e%2Eg%2E%20class%3D%22background%20titlepage%22%0A%20%20collect%5Fbackgrounds%3A%20function%20%28%29%20%7B%0A%20%20%20%20var%20backgrounds%20%3D%20new%20Array%28%29%3B%0A%20%20%20%20var%20divs%20%3D%20document%2Ebody%2EgetElementsByTagName%28%22div%22%29%3B%0A%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20divs%2Elength%3B%20%2B%2Bi%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20div%20%3D%20divs%2Eitem%28i%29%3B%0A%0A%20%20%20%20%20%20if%20%28this%2Ehas%5Fclass%28div%2C%20%22background%22%29%29%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20add%20background%20to%20collection%0A%20%20%20%20%20%20%20%20backgrounds%5Bbackgrounds%2Elength%5D%20%3D%20div%3B%0A%0A%20%20%20%20%20%20%20%20%2F%2F%20and%20hide%20it%0A%20%20%20%20%20%20%20%20this%2Eadd%5Fclass%28div%2C%20%22hidden%22%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20this%2Ebackgrounds%20%3D%20backgrounds%3B%0A%20%20%7D%2C%0A%0A%20%20%2F%2F%20set%20click%20handlers%20on%20all%20anchors%0A%20%20patch%5Fanchors%3A%20function%20%28%29%20%7B%0A%20%20%20%20var%20self%20%3D%20w3c%5Fslidy%3B%0A%20%20%20%20var%20handler%20%3D%20function%20%28event%29%20%7B%0A%20%20%20%20%20%20%2F%2F%20compare%20this%2Ehref%20with%20location%2Ehref%0A%20%20%20%20%20%20%2F%2F%20for%20link%20to%20another%20slide%20in%20this%20doc%0A%0A%20%20%20%20%20%20if%20%28self%2Epage%5Faddress%28this%2Ehref%29%20%3D%3D%20self%2Epage%5Faddress%28location%2Ehref%29%29%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20yes%2C%20so%20find%20new%20slide%20number%0A%20%20%20%20%20%20%20%20var%20newslidenum%20%3D%20self%2Efind%5Fslide%5Fnumber%28this%2Ehref%29%3B%0A%0A%20%20%20%20%20%20%20%20if%20%28newslidenum%20%21%3D%20self%2Eslide%5Fnumber%29%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20slide%20%3D%20self%2Eslides%5Bself%2Eslide%5Fnumber%5D%3B%0A%20%20%20%20%20%20%20%20%20%20self%2Ehide%5Fslide%28slide%29%3B%0A%20%20%20%20%20%20%20%20%20%20self%2Eslide%5Fnumber%20%3D%20newslidenum%3B%0A%20%20%20%20%20%20%20%20%20%20slide%20%3D%20self%2Eslides%5Bself%2Eslide%5Fnumber%5D%3B%0A%20%20%20%20%20%20%20%20%20%20self%2Eshow%5Fslide%28slide%29%3B%0A%20%20%20%20%20%20%20%20%20%20self%2Eset%5Flocation%28%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20else%0A%20%20%20%20%20%20%20%20w3c%5Fslidy%2Estop%5Fpropagation%28event%29%3B%0A%0A%2F%2F%20%20%20%20%20%20else%20if%20%28this%2Etarget%20%3D%3D%20null%29%0A%2F%2F%20%20%20%20%20%20%20%20location%2Ehref%20%3D%20this%2Ehref%3B%0A%0A%20%20%20%20%20%20this%2Eblur%28%29%3B%0A%20%20%20%20%20%20self%2Edisable%5Fslide%5Fclick%20%3D%20true%3B%0A%20%20%20%20%7D%3B%0A%0A%20%20%20%20var%20anchors%20%3D%20document%2Ebody%2EgetElementsByTagName%28%22a%22%29%3B%0A%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20anchors%2Elength%3B%20%2B%2Bi%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20if%20%28window%2EaddEventListener%29%0A%20%20%20%20%20%20%20%20anchors%5Bi%5D%2EaddEventListener%28%22click%22%2C%20handler%2C%20false%29%3B%0A%20%20%20%20%20%20else%0A%20%20%20%20%20%20%20%20anchors%5Bi%5D%2EattachEvent%28%22onclick%22%2C%20handler%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20%2F%2F%20%23%23%23%20CHECK%20ME%20%23%23%23%20see%20which%20functions%20are%20invoked%20via%20setTimeout%0A%20%20%2F%2F%20either%20directly%20or%20indirectly%20for%20use%20of%20w3c%5Fslidy%20vs%20this%0A%20%20show%5Fslide%5Fnumber%3A%20function%20%28%29%20%7B%0A%20%20%20%20var%20timer%20%3D%20w3c%5Fslidy%2Eget%5Ftimer%28%29%3B%0A%20%20%20%20w3c%5Fslidy%2Eslide%5Fnumber%5Felement%2EinnerHTML%20%3D%20timer%20%2B%20w3c%5Fslidy%2Elocalize%28%22slide%22%29%20%2B%20%22%20%22%20%2B%0A%20%20%20%20%20%20%20%20%20%20%20%28w3c%5Fslidy%2Eslide%5Fnumber%20%2B%201%29%20%2B%20%22%2F%22%20%2B%20w3c%5Fslidy%2Eslides%2Elength%3B%0A%20%20%7D%2C%0A%0A%20%20%2F%2F%20every%20200mS%20check%20if%20the%20location%20has%20been%20changed%20as%20a%0A%20%20%2F%2F%20result%20of%20the%20user%20activating%20the%20Back%20button%2Fmenu%20item%0A%20%20%2F%2F%20doesn%27t%20work%20for%20Opera%20%3C%209%2E5%0A%20%20check%5Flocation%3A%20function%20%28%29%20%7B%0A%20%20%20%20var%20hash%20%3D%20location%2Ehash%3B%0A%0A%20%20%20%20if%20%28w3c%5Fslidy%2Eslide%5Fnumber%20%3E%200%20%26%26%20%28hash%20%3D%3D%20%22%22%20%7C%7C%20hash%20%3D%3D%20%22%23%22%29%29%0A%20%20%20%20%20%20w3c%5Fslidy%2Egoto%5Fslide%280%29%3B%0A%20%20%20%20else%20if%20%28hash%2Elength%20%3E%202%20%26%26%20hash%20%21%3D%20%22%23%28%22%2B%28w3c%5Fslidy%2Eslide%5Fnumber%2B1%29%2B%22%29%22%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20var%20num%20%3D%20parseInt%28location%2Ehash%2Esubstr%282%29%29%3B%0A%0A%20%20%20%20%20%20if%20%28%21isNaN%28num%29%29%0A%20%20%20%20%20%20%20%20w3c%5Fslidy%2Egoto%5Fslide%28num%2D1%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20if%20%28w3c%5Fslidy%2Etime%5Fleft%20%26%26%20w3c%5Fslidy%2Eslide%5Fnumber%20%3E%200%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20w3c%5Fslidy%2Eshow%5Fslide%5Fnumber%28%29%3B%0A%0A%20%20%20%20%20%20if%20%28w3c%5Fslidy%2Etime%5Fleft%20%3E%200%29%0A%20%20%20%20%20%20%20%20w3c%5Fslidy%2Etime%5Fleft%20%2D%3D%20200%3B%0A%20%20%20%20%7D%20%0A%20%20%7D%2C%0A%0A%20%20get%5Ftimer%3A%20function%20%28%29%20%7B%0A%20%20%20%20var%20timer%20%3D%20%22%22%3B%0A%20%20%20%20if%20%28w3c%5Fslidy%2Etime%5Fleft%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20var%20mins%2C%20secs%3B%0A%20%20%20%20%20%20secs%20%3D%20Math%2Efloor%28w3c%5Fslidy%2Etime%5Fleft%2F1000%29%3B%0A%20%20%20%20%20%20mins%20%3D%20Math%2Efloor%28secs%20%2F%2060%29%3B%0A%20%20%20%20%20%20secs%20%3D%20secs%20%25%2060%3B%0A%20%20%20%20%20%20timer%20%3D%20%28mins%20%3F%20mins%2B%22m%22%20%3A%20%22%22%29%20%2B%20secs%20%2B%20%22s%20%22%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20return%20timer%3B%0A%20%20%7D%2C%0A%0A%20%20%2F%2F%20this%20doesn%27t%20push%20location%20onto%20history%20stack%20for%20IE%0A%20%20%2F%2F%20for%20which%20a%20hidden%20iframe%20hack%20is%20needed%3A%20load%20page%20into%0A%20%20%2F%2F%20the%20iframe%20with%20script%20that%20set%27s%20parent%27s%20location%2Ehash%0A%20%20%2F%2F%20but%20that%20won%27t%20work%20for%20standalone%20use%20unless%20we%20can%0A%20%20%2F%2F%20create%20the%20page%20dynamically%20via%20a%20javascript%3A%20URL%0A%20%20%2F%2F%20%23%23%23%20use%20history%2EpushState%20if%20available%0A%20%20set%5Flocation%3A%20function%20%28%29%20%7B%0A%20%20%20%20%20var%20uri%20%3D%20w3c%5Fslidy%2Epage%5Faddress%28location%2Ehref%29%3B%0A%20%20%20%20%20var%20hash%20%3D%20%22%23%28%22%20%2B%20%28w3c%5Fslidy%2Eslide%5Fnumber%2B1%29%20%2B%20%22%29%22%3B%0A%0A%20%20%20%20%20if%20%28w3c%5Fslidy%2Eslide%5Fnumber%20%3E%3D%200%29%0A%20%20%20%20%20%20%20uri%20%3D%20uri%20%2B%20hash%3B%0A%0A%20%20%20%20%20if%20%28typeof%28history%2EpushState%29%20%21%3D%20%22undefined%22%29%0A%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20document%2Etitle%20%3D%20w3c%5Fslidy%2Etitle%20%2B%20%22%20%28%22%20%2B%20%28w3c%5Fslidy%2Eslide%5Fnumber%2B1%29%20%2B%20%22%29%22%3B%0A%20%20%20%20%20%20%20history%2EpushState%280%2C%20document%2Etitle%2C%20hash%29%3B%0A%20%20%20%20%20%20%20w3c%5Fslidy%2Eshow%5Fslide%5Fnumber%28%29%3B%0A%20%20%20%20%20%20%20w3c%5Fslidy%2Enotify%5Fobservers%28%29%3B%0A%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%7D%0A%0A%20%20%20%20%20if%20%28w3c%5Fslidy%2Eie%20%26%26%20%28w3c%5Fslidy%2Eie6%20%7C%7C%20w3c%5Fslidy%2Eie7%29%29%0A%20%20%20%20%20%20%20w3c%5Fslidy%2Epush%5Fhash%28hash%29%3B%0A%0A%20%20%20%20%20if%20%28uri%20%21%3D%20location%2Ehref%29%20%2F%2F%20%26%26%20%21khtml%0A%20%20%20%20%20%20%20%20location%2Ehref%20%3D%20uri%3B%0A%0A%20%20%20%20%20if%20%28this%2Ekhtml%29%0A%20%20%20%20%20%20%20%20hash%20%3D%20%22%28%22%20%2B%20%28w3c%5Fslidy%2Eslide%5Fnumber%2B1%29%20%2B%20%22%29%22%3B%0A%0A%20%20%20%20%20if%20%28%21this%2Eie%20%26%26%20location%2Ehash%20%21%3D%20hash%20%26%26%20location%2Ehash%20%21%3D%20%22%22%29%0A%20%20%20%20%20%20%20location%2Ehash%20%3D%20hash%3B%0A%0A%20%20%20%20%20document%2Etitle%20%3D%20w3c%5Fslidy%2Etitle%20%2B%20%22%20%28%22%20%2B%20%28w3c%5Fslidy%2Eslide%5Fnumber%2B1%29%20%2B%20%22%29%22%3B%0A%20%20%20%20%20w3c%5Fslidy%2Eshow%5Fslide%5Fnumber%28%29%3B%0A%20%20%20%20%20w3c%5Fslidy%2Enotify%5Fobservers%28%29%3B%0A%20%20%7D%2C%0A%0A%20%20notify%5Fobservers%3A%20function%20%28%29%0A%20%20%7B%0A%20%20%20%20var%20slide%20%3D%20this%2Eslides%5Bthis%2Eslide%5Fnumber%5D%3B%0A%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20this%2Eobservers%2Elength%3B%20%2B%2Bi%29%0A%20%20%20%20%20%20this%2Eobservers%5Bi%5D%28this%2Eslide%5Fnumber%2B1%2C%20this%2Efind%5Fheading%28slide%29%2EinnerText%2C%20location%2Ehref%29%3B%0A%20%20%7D%2C%0A%0A%20%20add%5Fobserver%3A%20function%20%28observer%29%0A%20%20%7B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20this%2Eobservers%2Elength%3B%20%2B%2Bi%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20if%20%28observer%20%3D%3D%20this%2Eobservers%5Bi%5D%29%0A%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20this%2Eobservers%2Epush%28observer%29%3B%0A%20%20%7D%2C%0A%0A%20%20remove%5Fobserver%3A%20function%20%28o%29%0A%20%20%7B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20this%2Eobservers%2Elength%3B%20%2B%2Bi%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20if%20%28observer%20%3D%3D%20this%2Eobservers%5Bi%5D%29%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20this%2Eobservers%2Esplice%28i%2C1%29%3B%0A%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20page%5Faddress%3A%20function%20%28uri%29%20%7B%0A%20%20%20%20var%20i%20%3D%20uri%2EindexOf%28%22%23%22%29%3B%0A%0A%20%20%20%20if%20%28i%20%3C%200%29%0A%20%20%20%20%20%20i%20%3D%20uri%2EindexOf%28%22%2523%22%29%3B%0A%0A%20%20%20%20%2F%2F%20check%20if%20anchor%20is%20entire%20page%0A%0A%20%20%20%20if%20%28i%20%3C%200%29%0A%20%20%20%20%20%20return%20uri%3B%20%20%2F%2F%20yes%0A%0A%20%20%20%20return%20uri%2Esubstr%280%2C%20i%29%3B%0A%20%20%7D%2C%0A%0A%20%20%2F%2F%20only%20used%20for%20IE6%20and%20IE7%0A%20%20on%5Fframe%5Floaded%3A%20function%20%28hash%29%20%7B%0A%20%20%20%20location%2Ehash%20%3D%20hash%3B%0A%20%20%20%20var%20uri%20%3D%20w3c%5Fslidy%2Epage%5Faddress%28location%2Ehref%29%3B%0A%20%20%20%20location%2Ehref%20%3D%20uri%20%2B%20hash%3B%0A%20%20%7D%2C%0A%0A%20%20%2F%2F%20history%20hack%20with%20thanks%20to%20Bertrand%20Le%20Roy%0A%20%20push%5Fhash%3A%20function%20%28hash%29%20%7B%0A%20%20%20%20if%20%28hash%20%3D%3D%20%22%22%29%20hash%20%3D%20%22%23%281%29%22%3B%0A%20%20%20%20%20%20window%2Elocation%2Ehash%20%3D%20hash%3B%0A%0A%20%20%20%20var%20doc%20%3D%20document%2EgetElementById%28%22historyFrame%22%29%2EcontentWindow%2Edocument%3B%0A%20%20%20%20doc%2Eopen%28%22javascript%3A%27%3Chtml%3E%3C%2Fhtml%3E%27%22%29%3B%0A%20%20%20%20doc%2Ewrite%28%22%3Chtml%3E%3Chead%3E%3Cscript%20type%3D%5C%22text%2Fjavascript%5C%22%3Ewindow%2Eparent%2Ew3c%5Fslidy%2Eon%5Fframe%5Floaded%28%27%22%2B%0A%20%20%20%20%20%20%28hash%29%20%2B%20%22%27%29%3B%3C%2Fscript%3E%3C%2Fhead%3E%3Cbody%3Ehello%20mum%3C%2Fbody%3E%3C%2Fhtml%3E%22%29%3B%0A%20%20%20%20%20%20doc%2Eclose%28%29%3B%0A%20%20%7D%2C%0A%0A%20%20%2F%2F%20find%20current%20slide%20based%20upon%20location%0A%20%20%2F%2F%20first%20find%20target%20anchor%20and%20then%20look%0A%20%20%2F%2F%20for%20associated%20div%20element%20enclosing%20it%0A%20%20%2F%2F%20finally%20map%20that%20to%20slide%20number%0A%20%20find%5Fslide%5Fnumber%3A%20function%20%28uri%29%20%7B%0A%20%20%20%20%2F%2F%20first%20get%20anchor%20from%20page%20location%0A%0A%20%20%20%20var%20i%20%3D%20uri%2EindexOf%28%22%23%22%29%3B%0A%0A%20%20%20%20%2F%2F%20check%20if%20anchor%20is%20entire%20page%0A%20%20%20%20if%20%28i%20%3C%200%29%0A%20%20%20%20%20%20return%200%3B%20%20%2F%2F%20yes%0A%0A%20%20%20%20var%20anchor%20%3D%20unescape%28uri%2Esubstr%28i%2B1%29%29%3B%0A%0A%20%20%20%20%2F%2F%20now%20use%20anchor%20as%20XML%20ID%20to%20find%20target%0A%20%20%20%20var%20target%20%3D%20document%2EgetElementById%28anchor%29%3B%0A%0A%20%20%20%20if%20%28%21target%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%2F%2F%20does%20anchor%20look%20like%20%22%282%29%22%20for%20slide%202%20%3F%3F%0A%20%20%20%20%20%20%2F%2F%20where%20first%20slide%20is%20%281%29%0A%20%20%20%20%20%20var%20re%20%3D%20%2F%5C%28%28%5Cd%29%2B%5C%29%2F%3B%0A%0A%20%20%20%20%20%20if%20%28anchor%2Ematch%28re%29%29%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20var%20num%20%3D%20parseInt%28anchor%2Esubstring%281%2C%20anchor%2Elength%2D1%29%29%3B%0A%0A%20%20%20%20%20%20%20%20if%20%28num%20%3E%20this%2Eslides%2Elength%29%0A%20%20%20%20%20%20%20%20%20%20num%20%3D%201%3B%0A%0A%20%20%20%20%20%20%20%20if%20%28%2D%2Dnum%20%3C%200%29%0A%20%20%20%20%20%20%20%20%20%20num%20%3D%200%3B%0A%0A%20%20%20%20%20%20%20%20return%20num%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%2F%2F%20accept%20%5B2%5D%20for%20backwards%20compatibility%0A%20%20%20%20%20%20re%20%3D%20%2F%5C%5B%28%5Cd%29%2B%5C%5D%2F%3B%0A%0A%20%20%20%20%20%20if%20%28anchor%2Ematch%28re%29%29%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20var%20num%20%3D%20parseInt%28anchor%2Esubstring%281%2C%20anchor%2Elength%2D1%29%29%3B%0A%0A%20%20%20%20%20%20%20%20%20if%20%28num%20%3E%20this%2Eslides%2Elength%29%0A%20%20%20%20%20%20%20%20%20%20%20%20num%20%3D%201%3B%0A%0A%20%20%20%20%20%20%20%20%20if%20%28%2D%2Dnum%20%3C%200%29%0A%20%20%20%20%20%20%20%20%20%20%20%20num%20%3D%200%3B%0A%0A%20%20%20%20%20%20%20%20%20return%20num%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%2F%2F%20oh%20dear%20unknown%20anchor%0A%20%20%20%20%20%20return%200%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%20search%20for%20enclosing%20slide%0A%0A%20%20%20%20while%20%28true%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%2F%2F%20browser%20coerces%20html%20elements%20to%20uppercase%21%0A%20%20%20%20%20%20if%20%28target%2EnodeName%2EtoLowerCase%28%29%20%3D%3D%20%22div%22%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%20%20this%2Ehas%5Fclass%28target%2C%20%22slide%22%29%29%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20found%20the%20slide%20element%0A%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%2F%2F%20otherwise%20try%20parent%20element%20if%20any%0A%0A%20%20%20%20%20%20target%20%3D%20target%2EparentNode%3B%0A%0A%20%20%20%20%20%20if%20%28%21target%29%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20return%200%3B%20%20%20%2F%2F%20no%20luck%21%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%3B%0A%0A%20%20%20%20for%20%28i%20%3D%200%3B%20i%20%3C%20slides%2Elength%3B%20%2B%2Bi%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20if%20%28slides%5Bi%5D%20%3D%3D%20target%29%0A%20%20%20%20%20%20%20%20return%20i%3B%20%20%2F%2F%20success%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%20oh%20dear%20still%20no%20luck%0A%20%20%20%20return%200%3B%0A%20%20%7D%2C%0A%0A%20%20previous%5Fslide%3A%20function%20%28incremental%29%20%7B%0A%20%20%20%20if%20%28%21w3c%5Fslidy%2Eview%5Fall%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20var%20slide%3B%0A%0A%20%20%20%20%20%20if%20%28%28incremental%20%7C%7C%20w3c%5Fslidy%2Eslide%5Fnumber%20%3D%3D%200%29%20%26%26%20w3c%5Fslidy%2Elast%5Fshown%20%21%3D%20null%29%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20w3c%5Fslidy%2Elast%5Fshown%20%3D%20w3c%5Fslidy%2Ehide%5Fprevious%5Fitem%28w3c%5Fslidy%2Elast%5Fshown%29%3B%0A%20%20%20%20%20%20%20%20w3c%5Fslidy%2Eset%5Feos%5Fstatus%28false%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20else%20if%20%28w3c%5Fslidy%2Eslide%5Fnumber%20%3E%200%29%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20slide%20%3D%20w3c%5Fslidy%2Eslides%5Bw3c%5Fslidy%2Eslide%5Fnumber%5D%3B%0A%20%20%20%20%20%20%20%20w3c%5Fslidy%2Ehide%5Fslide%28slide%29%3B%0A%0A%20%20%20%20%20%20%20%20w3c%5Fslidy%2Eslide%5Fnumber%20%3D%20w3c%5Fslidy%2Eslide%5Fnumber%20%2D%201%3B%0A%20%20%20%20%20%20%20%20slide%20%3D%20w3c%5Fslidy%2Eslides%5Bw3c%5Fslidy%2Eslide%5Fnumber%5D%3B%0A%20%20%20%20%20%20%20%20w3c%5Fslidy%2Eset%5Fvisibility%5Fall%5Fincremental%28%22visible%22%29%3B%0A%20%20%20%20%20%20%20%20w3c%5Fslidy%2Elast%5Fshown%20%3D%20w3c%5Fslidy%2Eprevious%5Fincremental%5Fitem%28null%29%3B%0A%20%20%20%20%20%20%20%20w3c%5Fslidy%2Eset%5Feos%5Fstatus%28true%29%3B%0A%20%20%20%20%20%20%20%20w3c%5Fslidy%2Eshow%5Fslide%28slide%29%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20w3c%5Fslidy%2Eset%5Flocation%28%29%3B%0A%0A%20%20%20%20%20%20if%20%28%21w3c%5Fslidy%2Ens%5Fpos%29%0A%20%20%20%20%20%20%20%20w3c%5Fslidy%2Erefresh%5Ftoolbar%28200%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20next%5Fslide%3A%20function%20%28incremental%29%20%7B%0A%20%20%20%20if%20%28%21w3c%5Fslidy%2Eview%5Fall%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20var%20slide%2C%20last%20%3D%20w3c%5Fslidy%2Elast%5Fshown%3B%0A%0A%20%20%20%20%20%20if%20%28incremental%20%7C%7C%20w3c%5Fslidy%2Eslide%5Fnumber%20%3D%3D%20w3c%5Fslidy%2Eslides%2Elength%20%2D%201%29%0A%20%20%20%20%20%20%20%20%20w3c%5Fslidy%2Elast%5Fshown%20%3D%20w3c%5Fslidy%2Ereveal%5Fnext%5Fitem%28w3c%5Fslidy%2Elast%5Fshown%29%3B%0A%0A%20%20%20%20%20%20if%20%28%28%21incremental%20%7C%7C%20w3c%5Fslidy%2Elast%5Fshown%20%3D%3D%20null%29%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%20%20%20w3c%5Fslidy%2Eslide%5Fnumber%20%3C%20w3c%5Fslidy%2Eslides%2Elength%20%2D%201%29%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20slide%20%3D%20w3c%5Fslidy%2Eslides%5Bw3c%5Fslidy%2Eslide%5Fnumber%5D%3B%0A%20%20%20%20%20%20%20%20%20w3c%5Fslidy%2Ehide%5Fslide%28slide%29%3B%0A%0A%20%20%20%20%20%20%20%20%20w3c%5Fslidy%2Eslide%5Fnumber%20%3D%20w3c%5Fslidy%2Eslide%5Fnumber%20%2B%201%3B%0A%20%20%20%20%20%20%20%20%20slide%20%3D%20w3c%5Fslidy%2Eslides%5Bw3c%5Fslidy%2Eslide%5Fnumber%5D%3B%0A%20%20%20%20%20%20%20%20%20w3c%5Fslidy%2Elast%5Fshown%20%3D%20null%3B%0A%20%20%20%20%20%20%20%20%20w3c%5Fslidy%2Eset%5Fvisibility%5Fall%5Fincremental%28%22hidden%22%29%3B%0A%20%20%20%20%20%20%20%20%20w3c%5Fslidy%2Eshow%5Fslide%28slide%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20else%20if%20%28%21w3c%5Fslidy%2Elast%5Fshown%29%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20if%20%28last%20%26%26%20incremental%29%0A%20%20%20%20%20%20%20%20%20%20%20w3c%5Fslidy%2Elast%5Fshown%20%3D%20last%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20w3c%5Fslidy%2Eset%5Flocation%28%29%3B%0A%0A%20%20%20%20%20%20w3c%5Fslidy%2Eset%5Feos%5Fstatus%28%21w3c%5Fslidy%2Enext%5Fincremental%5Fitem%28w3c%5Fslidy%2Elast%5Fshown%29%29%3B%0A%0A%20%20%20%20%20%20if%20%28%21w3c%5Fslidy%2Ens%5Fpos%29%0A%20%20%20%20%20%20%20%20%20w3c%5Fslidy%2Erefresh%5Ftoolbar%28200%29%3B%0A%20%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20%2F%2F%20to%20first%20slide%20with%20nothing%20revealed%0A%20%20%2F%2F%20i%2Ee%2E%20state%20at%20start%20of%20presentation%0A%20%20first%5Fslide%3A%20function%20%28%29%20%7B%0A%20%20%20%20%20if%20%28%21w3c%5Fslidy%2Eview%5Fall%29%0A%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20var%20slide%3B%0A%0A%20%20%20%20%20%20%20if%20%28w3c%5Fslidy%2Eslide%5Fnumber%20%21%3D%200%29%0A%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20slide%20%3D%20w3c%5Fslidy%2Eslides%5Bw3c%5Fslidy%2Eslide%5Fnumber%5D%3B%0A%20%20%20%20%20%20%20%20%20w3c%5Fslidy%2Ehide%5Fslide%28slide%29%3B%0A%0A%20%20%20%20%20%20%20%20%20w3c%5Fslidy%2Eslide%5Fnumber%20%3D%200%3B%0A%20%20%20%20%20%20%20%20%20slide%20%3D%20w3c%5Fslidy%2Eslides%5Bw3c%5Fslidy%2Eslide%5Fnumber%5D%3B%0A%20%20%20%20%20%20%20%20%20w3c%5Fslidy%2Elast%5Fshown%20%3D%20null%3B%0A%20%20%20%20%20%20%20%20%20w3c%5Fslidy%2Eset%5Fvisibility%5Fall%5Fincremental%28%22hidden%22%29%3B%0A%20%20%20%20%20%20%20%20%20w3c%5Fslidy%2Eshow%5Fslide%28slide%29%3B%0A%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20w3c%5Fslidy%2Eset%5Feos%5Fstatus%28%0A%20%20%20%20%20%20%20%20%20%21w3c%5Fslidy%2Enext%5Fincremental%5Fitem%28w3c%5Fslidy%2Elast%5Fshown%29%29%3B%0A%20%20%20%20%20%20%20w3c%5Fslidy%2Eset%5Flocation%28%29%3B%0A%20%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20%2F%2F%20goto%20last%20slide%20with%20everything%20revealed%0A%20%20%2F%2F%20i%2Ee%2E%20state%20at%20end%20of%20presentation%0A%20%20last%5Fslide%3A%20function%20%28%29%20%7B%0A%20%20%20%20if%20%28%21w3c%5Fslidy%2Eview%5Fall%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20var%20slide%3B%0A%0A%20%20%20%20%20%20w3c%5Fslidy%2Elast%5Fshown%20%3D%20null%3B%20%2F%2FrevealNextItem%28lastShown%29%3B%0A%0A%20%20%20%20%20%20if%20%28w3c%5Fslidy%2Elast%5Fshown%20%3D%3D%20null%20%26%26%0A%20%20%20%20%20%20%20%20%20%20w3c%5Fslidy%2Eslide%5Fnumber%20%3C%20w3c%5Fslidy%2Eslides%2Elength%20%2D%201%29%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20slide%20%3D%20w3c%5Fslidy%2Eslides%5Bw3c%5Fslidy%2Eslide%5Fnumber%5D%3B%0A%20%20%20%20%20%20%20%20%20w3c%5Fslidy%2Ehide%5Fslide%28slide%29%3B%0A%20%20%20%20%20%20%20%20%20w3c%5Fslidy%2Eslide%5Fnumber%20%3D%20w3c%5Fslidy%2Eslides%2Elength%20%2D%201%3B%0A%20%20%20%20%20%20%20%20%20slide%20%3D%20w3c%5Fslidy%2Eslides%5Bw3c%5Fslidy%2Eslide%5Fnumber%5D%3B%0A%20%20%20%20%20%20%20%20%20w3c%5Fslidy%2Eset%5Fvisibility%5Fall%5Fincremental%28%22visible%22%29%3B%0A%20%20%20%20%20%20%20%20%20w3c%5Fslidy%2Elast%5Fshown%20%3D%20w3c%5Fslidy%2Eprevious%5Fincremental%5Fitem%28null%29%3B%0A%0A%20%20%20%20%20%20%20%20%20w3c%5Fslidy%2Eshow%5Fslide%28slide%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20else%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20w3c%5Fslidy%2Eset%5Fvisibility%5Fall%5Fincremental%28%22visible%22%29%3B%0A%20%20%20%20%20%20%20%20%20w3c%5Fslidy%2Elast%5Fshown%20%3D%20w3c%5Fslidy%2Eprevious%5Fincremental%5Fitem%28null%29%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20w3c%5Fslidy%2Eset%5Feos%5Fstatus%28true%29%3B%0A%20%20%20%20%20%20w3c%5Fslidy%2Eset%5Flocation%28%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%0A%20%20%2F%2F%20%23%23%23%20check%20this%20and%20consider%20add%2Fremove%20class%0A%20%20set%5Feos%5Fstatus%3A%20function%20%28state%29%20%7B%0A%20%20%20%20if%20%28this%2Eeos%29%0A%20%20%20%20%20%20this%2Eeos%2Estyle%2Ecolor%20%3D%20%28state%20%3F%20%22rgb%28240%2C240%2C240%29%22%20%3A%20%22red%22%29%3B%0A%20%20%7D%2C%0A%0A%20%20%2F%2F%20first%20slide%20is%200%0A%20%20goto%5Fslide%3A%20function%20%28num%29%20%7B%0A%20%20%20%20%2F%2Falert%28%22going%20to%20slide%20%22%20%2B%20%28num%2B1%29%29%3B%0A%20%20%20%20var%20slide%20%3D%20w3c%5Fslidy%2Eslides%5Bw3c%5Fslidy%2Eslide%5Fnumber%5D%3B%0A%20%20%20%20w3c%5Fslidy%2Ehide%5Fslide%28slide%29%3B%0A%20%20%20%20w3c%5Fslidy%2Eslide%5Fnumber%20%3D%20num%3B%0A%20%20%20%20slide%20%3D%20w3c%5Fslidy%2Eslides%5Bw3c%5Fslidy%2Eslide%5Fnumber%5D%3B%0A%20%20%20%20w3c%5Fslidy%2Elast%5Fshown%20%3D%20null%3B%0A%20%20%20%20w3c%5Fslidy%2Eset%5Fvisibility%5Fall%5Fincremental%28%22hidden%22%29%3B%0A%20%20%20%20w3c%5Fslidy%2Eset%5Feos%5Fstatus%28%21w3c%5Fslidy%2Enext%5Fincremental%5Fitem%28w3c%5Fslidy%2Elast%5Fshown%29%29%3B%0A%20%20%20%20document%2Etitle%20%3D%20w3c%5Fslidy%2Etitle%20%2B%20%22%20%28%22%20%2B%20%28w3c%5Fslidy%2Eslide%5Fnumber%2B1%29%20%2B%20%22%29%22%3B%0A%20%20%20%20w3c%5Fslidy%2Eshow%5Fslide%28slide%29%3B%0A%20%20%20%20w3c%5Fslidy%2Eshow%5Fslide%5Fnumber%28%29%3B%0A%20%20%7D%2C%0A%0A%0A%20%20show%5Fslide%3A%20function%20%28slide%29%20%7B%0A%20%20%20%20this%2Esync%5Fbackground%28slide%29%3B%0A%20%20%20%20this%2Eremove%5Fclass%28slide%2C%20%22hidden%22%29%3B%0A%0A%20%20%20%20%2F%2F%20work%20around%20IE9%20object%20rendering%20bug%0A%20%20%20%20setTimeout%28%22window%2EscrollTo%280%2C0%29%3B%22%2C%201%29%3B%0A%20%20%7D%2C%0A%0A%20%20hide%5Fslide%3A%20function%20%28slide%29%20%7B%0A%20%20%20%20this%2Eadd%5Fclass%28slide%2C%20%22hidden%22%29%3B%0A%20%20%7D%2C%0A%0A%20%20set%5Ffocus%3A%20function%20%28element%29%0A%20%20%7B%0A%20%20%20%20if%20%28element%29%0A%20%20%20%20%20%20element%2Efocus%28%29%3B%0A%20%20%20%20else%0A%20%20%20%20%7B%0A%20%20%20%20%20%20w3c%5Fslidy%2Ehelp%5Fanchor%2Efocus%28%29%3B%0A%0A%20%20%20%20%20%20setTimeout%28function%28%29%20%7B%0A%20%20%20%20%20%20%20%20w3c%5Fslidy%2Ehelp%5Fanchor%2Eblur%28%29%3B%0A%20%20%20%20%20%20%7D%2C%201%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20%2F%2F%20show%20just%20the%20backgrounds%20pertinent%20to%20this%20slide%0A%20%20%2F%2F%20when%20slide%20background%2Dcolor%20is%20transparent%0A%20%20%2F%2F%20this%20should%20now%20work%20with%20rgba%20color%20values%0A%20%20sync%5Fbackground%3A%20function%20%28slide%29%20%7B%0A%20%20%20%20var%20background%3B%0A%20%20%20%20var%20bgColor%3B%0A%0A%20%20%20%20if%20%28slide%2EcurrentStyle%29%0A%20%20%20%20%20%20bgColor%20%3D%20slide%2EcurrentStyle%5B%22backgroundColor%22%5D%3B%0A%20%20%20%20else%20if%20%28document%2EdefaultView%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20var%20styles%20%3D%20document%2EdefaultView%2EgetComputedStyle%28slide%2Cnull%29%3B%0A%0A%20%20%20%20%20%20if%20%28styles%29%0A%20%20%20%20%20%20%20%20bgColor%20%3D%20styles%2EgetPropertyValue%28%22background%2Dcolor%22%29%3B%0A%20%20%20%20%20%20else%20%2F%2F%20broken%20implementation%20probably%20due%20Safari%20or%20Konqueror%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%2F%2Falert%28%22defective%20implementation%20of%20getComputedStyle%28%29%22%29%3B%0A%20%20%20%20%20%20%20%20bgColor%20%3D%20%22transparent%22%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20else%0A%20%20%20%20%20%20bgColor%20%3D%3D%20%22transparent%22%3B%0A%0A%20%20%20%20if%20%28bgColor%20%3D%3D%20%22transparent%22%20%7C%7C%0A%20%20%20%20%20%20%20%20bgColor%2EindexOf%28%22rgba%22%29%20%3E%3D%200%20%7C%7C%0A%20%20%20%20%20%20%20%20bgColor%2EindexOf%28%22opacity%22%29%20%3E%3D%200%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20var%20slideClass%20%3D%20this%2Eget%5Fclass%5Flist%28slide%29%3B%0A%0A%20%20%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20this%2Ebackgrounds%2Elength%3B%20i%2B%2B%29%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20background%20%3D%20this%2Ebackgrounds%5Bi%5D%3B%0A%0A%20%20%20%20%20%20%20%20var%20bgClass%20%3D%20this%2Eget%5Fclass%5Flist%28background%29%3B%0A%0A%20%20%20%20%20%20%20%20if%20%28this%2Ematching%5Fbackground%28slideClass%2C%20bgClass%29%29%0A%20%20%20%20%20%20%20%20%20%20this%2Eremove%5Fclass%28background%2C%20%22hidden%22%29%3B%0A%20%20%20%20%20%20%20%20else%0A%20%20%20%20%20%20%20%20%20%20this%2Eadd%5Fclass%28background%2C%20%22hidden%22%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20else%20%2F%2F%20forcibly%20hide%20all%20backgrounds%0A%20%20%20%20%20%20this%2Ehide%5Fbackgrounds%28%29%3B%0A%20%20%7D%2C%0A%0A%20%20hide%5Fbackgrounds%3A%20function%20%28%29%20%7B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20this%2Ebackgrounds%2Elength%3B%20i%2B%2B%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20background%20%3D%20this%2Ebackgrounds%5Bi%5D%3B%0A%20%20%20%20%20%20this%2Eadd%5Fclass%28background%2C%20%22hidden%22%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20%2F%2F%20compare%20classes%20for%20slide%20and%20background%0A%20%20matching%5Fbackground%3A%20function%20%28slideClass%2C%20bgClass%29%20%7B%0A%20%20%20%20var%20i%2C%20count%2C%20pattern%2C%20result%3B%0A%0A%20%20%20%20%2F%2F%20define%20pattern%20as%20regular%20expression%0A%20%20%20%20pattern%20%3D%20%2F%5Cw%2B%2Fg%3B%0A%0A%20%20%20%20%2F%2F%20check%20background%20class%20names%0A%20%20%20%20result%20%3D%20bgClass%2Ematch%28pattern%29%3B%0A%0A%20%20%20%20for%20%28i%20%3D%20count%20%3D%200%3B%20i%20%3C%20result%2Elength%3B%20i%2B%2B%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20if%20%28result%5Bi%5D%20%3D%3D%20%22hidden%22%29%0A%20%20%20%20%20%20%20%20continue%3B%0A%0A%20%20%20%20%20%20if%20%28result%5Bi%5D%20%3D%3D%20%22background%22%29%0A%09continue%3B%0A%0A%20%20%20%20%20%20%2B%2Bcount%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20if%20%28count%20%3D%3D%200%29%20%20%2F%2F%20default%20match%0A%20%20%20%20%20%20return%20true%3B%0A%0A%20%20%20%20%2F%2F%20check%20for%20matches%20and%20place%20result%20in%20array%0A%20%20%20%20result%20%3D%20slideClass%2Ematch%28pattern%29%3B%0A%0A%20%20%20%20%2F%2F%20now%20check%20if%20desired%20name%20is%20present%20for%20background%0A%20%20%20%20for%20%28i%20%3D%20count%20%3D%200%3B%20i%20%3C%20result%2Elength%3B%20i%2B%2B%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20if%20%28result%5Bi%5D%20%3D%3D%20%22hidden%22%29%0A%20%20%20%20%20%20%20%20continue%3B%0A%0A%20%20%20%20%20%20if%20%28this%2Ehas%5Ftoken%28bgClass%2C%20result%5Bi%5D%29%29%0A%20%20%20%20%20%20%20%20return%20true%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20return%20false%3B%0A%20%20%7D%2C%0A%0A%20%20resized%3A%20function%20%28%29%20%7B%0A%20%20%20%20%20var%20width%20%3D%200%3B%0A%0A%20%20%20%20%20if%20%28%20typeof%28%20window%2EinnerWidth%20%29%20%3D%3D%20%27number%27%20%29%0A%20%20%20%20%20%20%20width%20%3D%20window%2EinnerWidth%3B%20%20%2F%2F%20Non%20IE%20browser%0A%20%20%20%20%20else%20if%20%28document%2EdocumentElement%20%26%26%20document%2EdocumentElement%2EclientWidth%29%0A%20%20%20%20%20%20%20width%20%3D%20document%2EdocumentElement%2EclientWidth%3B%20%20%2F%2F%20IE6%0A%20%20%20%20%20else%20if%20%28document%2Ebody%20%26%26%20document%2Ebody%2EclientWidth%29%0A%20%20%20%20%20%20%20width%20%3D%20document%2Ebody%2EclientWidth%3B%20%2F%2F%20IE4%0A%0A%20%20%20%20%20var%20height%20%3D%200%3B%0A%0A%20%20%20%20%20if%20%28%20typeof%28%20window%2EinnerHeight%20%29%20%3D%3D%20%27number%27%20%29%0A%20%20%20%20%20%20%20height%20%3D%20window%2EinnerHeight%3B%20%20%2F%2F%20Non%20IE%20browser%0A%20%20%20%20%20else%20if%20%28document%2EdocumentElement%20%26%26%20document%2EdocumentElement%2EclientHeight%29%0A%20%20%20%20%20%20%20height%20%3D%20document%2EdocumentElement%2EclientHeight%3B%20%20%2F%2F%20IE6%0A%20%20%20%20%20else%20if%20%28document%2Ebody%20%26%26%20document%2Ebody%2EclientHeight%29%0A%20%20%20%20%20%20%20height%20%3D%20document%2Ebody%2EclientHeight%3B%20%2F%2F%20IE4%0A%0A%20%20%20%20%20if%20%28height%20%26%26%20%28width%2Fheight%20%3E%201%2E05%2A1024%2F768%29%29%0A%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20width%20%3D%20height%20%2A%201024%2E0%2F768%3B%0A%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%2F%2F%20IE%20fires%20onresize%20even%20when%20only%20font%20size%20is%20changed%21%0A%20%20%20%20%20%2F%2F%20so%20we%20do%20a%20check%20to%20avoid%20blocking%20%3C%20and%20%3E%20actions%0A%20%20%20%20%20if%20%28width%20%21%3D%20w3c%5Fslidy%2Elast%5Fwidth%20%7C%7C%20height%20%21%3D%20w3c%5Fslidy%2Elast%5Fheight%29%0A%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20if%20%28width%20%3E%3D%201100%29%0A%20%20%20%20%20%20%20%20%20w3c%5Fslidy%2Esize%5Findex%20%3D%205%3B%20%20%20%20%2F%2F%204%0A%20%20%20%20%20%20%20else%20if%20%28width%20%3E%3D%201000%29%0A%20%20%20%20%20%20%20%20%20w3c%5Fslidy%2Esize%5Findex%20%3D%204%3B%20%20%20%20%2F%2F%203%0A%20%20%20%20%20%20%20else%20if%20%28width%20%3E%3D%20800%29%0A%20%20%20%20%20%20%20%20%20w3c%5Fslidy%2Esize%5Findex%20%3D%203%3B%20%20%20%20%2F%2F%202%0A%20%20%20%20%20%20%20else%20if%20%28width%20%3E%3D%20600%29%0A%20%20%20%20%20%20%20%20%20w3c%5Fslidy%2Esize%5Findex%20%3D%202%3B%20%20%20%20%2F%2F%201%0A%20%20%20%20%20%20%20else%20if%20%28width%29%0A%20%20%20%20%20%20%20%20%20w3c%5Fslidy%2Esize%5Findex%20%3D%200%3B%0A%0A%20%20%20%20%20%20%20%2F%2F%20add%20in%20font%20size%20adjustment%20from%20meta%20element%20e%2Eg%2E%0A%20%20%20%20%20%20%20%2F%2F%20%3Cmeta%20name%3D%22font%2Dsize%2Dadjustment%22%20content%3D%22%2D2%22%20%2F%3E%0A%20%20%20%20%20%20%20%2F%2F%20useful%20when%20slides%20have%20too%20much%20content%20%3B%2D%29%0A%0A%20%20%20%20%20%20%20if%20%280%20%3C%3D%20w3c%5Fslidy%2Esize%5Findex%20%2B%20w3c%5Fslidy%2Esize%5Fadjustment%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%20%20%20w3c%5Fslidy%2Esize%5Findex%20%2B%20w3c%5Fslidy%2Esize%5Fadjustment%20%3C%20w3c%5Fslidy%2Esizes%2Elength%29%0A%20%20%20%20%20%20%20%20%20w3c%5Fslidy%2Esize%5Findex%20%3D%20w3c%5Fslidy%2Esize%5Findex%20%2B%20w3c%5Fslidy%2Esize%5Fadjustment%3B%0A%0A%20%20%20%20%20%20%20%2F%2F%20enables%20cross%20browser%20use%20of%20relative%20width%2Fheight%0A%20%20%20%20%20%20%20%2F%2F%20on%20object%20elements%20for%20use%20with%20SVG%20and%20Flash%20media%0A%20%20%20%20%20%20%20w3c%5Fslidy%2Eadjust%5Fobject%5Fdimensions%28width%2C%20height%29%3B%0A%0A%20%20%20%20%20%20%20if%20%28document%2Ebody%2Estyle%2EfontSize%20%21%3D%20w3c%5Fslidy%2Esizes%5Bw3c%5Fslidy%2Esize%5Findex%5D%29%0A%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20document%2Ebody%2Estyle%2EfontSize%20%3D%20w3c%5Fslidy%2Esizes%5Bw3c%5Fslidy%2Esize%5Findex%5D%3B%0A%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20w3c%5Fslidy%2Elast%5Fwidth%20%3D%20width%3B%0A%20%20%20%20%20%20%20w3c%5Fslidy%2Elast%5Fheight%20%3D%20height%3B%0A%0A%20%20%20%20%20%20%20%2F%2F%20force%20reflow%20to%20work%20around%20Mozilla%20bug%0A%20%20%20%20%20%20%20if%20%28w3c%5Fslidy%2Ens%5Fpos%29%0A%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20var%20slide%20%3D%20w3c%5Fslidy%2Eslides%5Bw3c%5Fslidy%2Eslide%5Fnumber%5D%3B%0A%20%20%20%20%20%20%20%20%20w3c%5Fslidy%2Ehide%5Fslide%28slide%29%3B%0A%20%20%20%20%20%20%20%20%20w3c%5Fslidy%2Eshow%5Fslide%28slide%29%3B%0A%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%2F%2F%20force%20correct%20positioning%20of%20toolbar%0A%20%20%20%20%20%20%20w3c%5Fslidy%2Erefresh%5Ftoolbar%28200%29%3B%0A%20%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20scrolled%3A%20function%20%28%29%20%7B%0A%20%20%20%20if%20%28w3c%5Fslidy%2Etoolbar%20%26%26%20%21w3c%5Fslidy%2Ens%5Fpos%20%26%26%20%21w3c%5Fslidy%2Eie7%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20w3c%5Fslidy%2Ehack%5Foffset%20%3D%20w3c%5Fslidy%2Escroll%5Fx%5Foffset%28%29%3B%0A%20%20%20%20%20%20%2F%2F%20hide%20toolbar%0A%20%20%20%20%20%20w3c%5Fslidy%2Etoolbar%2Estyle%2Edisplay%20%3D%20%22none%22%3B%0A%0A%20%20%20%20%20%20%2F%2F%20make%20it%20reappear%20later%0A%20%20%20%20%20%20if%20%28w3c%5Fslidy%2Escrollhack%20%3D%3D%200%20%26%26%20%21w3c%5Fslidy%2Eview%5Fall%29%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20setTimeout%28function%20%28%29%20%7Bw3c%5Fslidy%2Eshow%5Ftoolbar%28%29%3B%20%7D%2C%201000%29%3B%0A%20%20%20%20%20%20%20%20w3c%5Fslidy%2Escrollhack%20%3D%201%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20hide%5Ftoolbar%3A%20function%20%28%29%20%7B%0A%20%20%20%20w3c%5Fslidy%2Eadd%5Fclass%28w3c%5Fslidy%2Etoolbar%2C%20%22hidden%22%29%3B%0A%20%20%20%20window%2Efocus%28%29%3B%0A%20%20%7D%2C%0A%0A%20%20%2F%2F%20used%20to%20ensure%20IE%20refreshes%20toolbar%20in%20correct%20position%0A%20%20refresh%5Ftoolbar%3A%20function%20%28interval%29%20%7B%0A%20%20%20%20if%20%28%21w3c%5Fslidy%2Ens%5Fpos%20%26%26%20%21w3c%5Fslidy%2Eie7%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20w3c%5Fslidy%2Ehide%5Ftoolbar%28%29%3B%0A%20%20%20%20%20%20setTimeout%28function%20%28%29%20%7Bw3c%5Fslidy%2Eshow%5Ftoolbar%28%29%3B%7D%2C%20interval%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20%2F%2F%20restores%20toolbar%20after%20short%20delay%0A%20%20show%5Ftoolbar%3A%20function%20%28%29%20%7B%0A%20%20%20%20if%20%28w3c%5Fslidy%2Ewant%5Ftoolbar%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20w3c%5Fslidy%2Etoolbar%2Estyle%2Edisplay%20%3D%20%22block%22%3B%0A%0A%20%20%20%20%20%20if%20%28%21w3c%5Fslidy%2Ens%5Fpos%29%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20adjust%20position%20to%20allow%20for%20scrolling%0A%20%20%20%20%20%20%20%20var%20xoffset%20%3D%20w3c%5Fslidy%2Escroll%5Fx%5Foffset%28%29%3B%0A%20%20%20%20%20%20%20%20w3c%5Fslidy%2Etoolbar%2Estyle%2Eleft%20%3D%20xoffset%3B%0A%20%20%20%20%20%20%20%20w3c%5Fslidy%2Etoolbar%2Estyle%2Eright%20%3D%20xoffset%3B%0A%0A%20%20%20%20%20%20%20%20%2F%2F%20determine%20vertical%20scroll%20offset%0A%20%20%20%20%20%20%20%20%2F%2Fvar%20yoffset%20%3D%20scrollYOffset%28%29%3B%0A%0A%20%20%20%20%20%20%20%20%2F%2F%20bottom%20is%20doc%20height%20%2D%20window%20height%20%2D%20scroll%20offset%0A%20%20%20%20%20%20%20%20%2F%2Fvar%20bottom%20%3D%20documentHeight%28%29%20%2D%20lastHeight%20%2D%20yoffset%0A%0A%20%20%20%20%20%20%20%20%2F%2Fif%20%28yoffset%20%3E%200%20%7C%7C%20documentHeight%28%29%20%3E%20lastHeight%29%0A%20%20%20%20%20%20%20%20%2F%2F%20%20%20bottom%20%2B%3D%2016%3B%20%20%2F%2F%20allow%20for%20height%20of%20scrollbar%0A%0A%20%20%20%20%20%20%20%20w3c%5Fslidy%2Etoolbar%2Estyle%2Ebottom%20%3D%200%3B%20%2F%2Fbottom%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20w3c%5Fslidy%2Eremove%5Fclass%28w3c%5Fslidy%2Etoolbar%2C%20%22hidden%22%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20w3c%5Fslidy%2Escrollhack%20%3D%200%3B%0A%0A%0A%20%20%20%20%2F%2F%20set%20the%20keyboard%20focus%20to%20the%20help%20link%20on%20the%0A%20%20%20%20%2F%2F%20toolbar%20to%20ensure%20that%20document%20has%20the%20focus%0A%20%20%20%20%2F%2F%20IE%20doesn%27t%20always%20work%20with%20window%2Efocus%28%29%0A%20%20%20%20%2F%2F%20and%20this%20hack%20has%20benefit%20of%20Enter%20for%20help%0A%0A%20%20%20%20try%0A%20%20%20%20%7B%0A%20%20%20%20%20%20if%20%28%21w3c%5Fslidy%2Eopera%29%0A%20%20%20%20%20%20%20%20w3c%5Fslidy%2Eset%5Ffocus%28%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20catch%20%28e%29%0A%20%20%20%20%7B%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%2F%2F%20invoked%20via%20F%20key%0A%20%20toggle%5Ftoolbar%3A%20function%20%28%29%20%7B%0A%20%20%20%20if%20%28%21w3c%5Fslidy%2Eview%5Fall%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20if%20%28w3c%5Fslidy%2Ehas%5Fclass%28w3c%5Fslidy%2Etoolbar%2C%20%22hidden%22%29%29%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20w3c%5Fslidy%2Eremove%5Fclass%28w3c%5Fslidy%2Etoolbar%2C%20%22hidden%22%29%0A%20%20%20%20%20%20%20%20w3c%5Fslidy%2Ewant%5Ftoolbar%20%3D%201%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20else%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20w3c%5Fslidy%2Eadd%5Fclass%28w3c%5Fslidy%2Etoolbar%2C%20%22hidden%22%29%0A%20%20%20%20%20%20%20%20w3c%5Fslidy%2Ewant%5Ftoolbar%20%3D%200%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20scroll%5Fx%5Foffset%3A%20function%20%28%29%20%7B%0A%20%20%20%20if%20%28window%2EpageXOffset%29%0A%20%20%20%20%20%20return%20self%2EpageXOffset%3B%0A%0A%20%20%20%20if%20%28document%2EdocumentElement%20%26%26%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20document%2EdocumentElement%2EscrollLeft%29%0A%20%20%20%20%20%20return%20document%2EdocumentElement%2EscrollLeft%3B%0A%0A%20%20%20%20if%20%28document%2Ebody%29%0A%20%20%20%20%20%20return%20document%2Ebody%2EscrollLeft%3B%0A%0A%20%20%20%20return%200%3B%0A%20%20%7D%2C%0A%0A%20%20scroll%5Fy%5Foffset%3A%20function%20%28%29%20%7B%0A%20%20%20%20if%20%28window%2EpageYOffset%29%0A%20%20%20%20%20%20return%20self%2EpageYOffset%3B%0A%0A%20%20%20%20if%20%28document%2EdocumentElement%20%26%26%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20document%2EdocumentElement%2EscrollTop%29%0A%20%20%20%20%20%20return%20document%2EdocumentElement%2EscrollTop%3B%0A%0A%20%20%20%20if%20%28document%2Ebody%29%0A%20%20%20%20%20%20return%20document%2Ebody%2EscrollTop%3B%0A%0A%20%20%20%20return%200%3B%0A%20%20%7D%2C%0A%0A%20%20%2F%2F%20looking%20for%20a%20way%20to%20determine%20height%20of%20slide%20content%0A%20%20%2F%2F%20the%20slide%20itself%20is%20set%20to%20the%20height%20of%20the%20window%0A%20%20optimize%5Ffont%5Fsize%3A%20function%20%28%29%20%7B%0A%20%20%20%20var%20slide%20%3D%20w3c%5Fslidy%2Eslides%5Bw3c%5Fslidy%2Eslide%5Fnumber%5D%3B%0A%0A%20%20%20%20%2F%2Fvar%20dh%20%3D%20documentHeight%28%29%3B%20%2F%2FgetDocHeight%28document%29%3B%0A%20%20%20%20var%20dh%20%3D%20slide%2EscrollHeight%3B%0A%20%20%20%20var%20wh%20%3D%20getWindowHeight%28%29%3B%0A%20%20%20%20var%20u%20%3D%20100%20%2A%20dh%20%2F%20wh%3B%0A%0A%20%20%20%20alert%28%22window%20utilization%20%3D%20%22%20%2B%20u%20%2B%20%22%25%20%28doc%20%22%0A%20%20%20%20%20%20%2B%20dh%20%2B%20%22%20win%20%22%20%2B%20wh%20%2B%20%22%29%22%29%3B%0A%20%20%7D%2C%0A%0A%20%20%2F%2F%20from%20document%20object%0A%20%20get%5Fdoc%5Fheight%3A%20function%20%28doc%29%20%7B%0A%20%20%20%20if%20%28%21doc%29%0A%20%20%20%20%20%20doc%20%3D%20document%3B%0A%0A%20%20%20%20if%20%28doc%20%26%26%20doc%2Ebody%20%26%26%20doc%2Ebody%2EoffsetHeight%29%0A%20%20%20%20%20%20return%20doc%2Ebody%2EoffsetHeight%3B%20%20%2F%2F%20ns%2Fgecko%20syntax%0A%0A%20%20%20%20if%20%28doc%20%26%26%20doc%2Ebody%20%26%26%20doc%2Ebody%2EscrollHeight%29%0A%20%20%20%20%20%20return%20doc%2Ebody%2EscrollHeight%3B%0A%0A%20%20%20%20alert%28%22couldn%27t%20determine%20document%20height%22%29%3B%0A%20%20%7D%2C%0A%0A%20%20get%5Fwindow%5Fheight%3A%20function%20%28%29%20%7B%0A%20%20%20%20if%20%28%20typeof%28%20window%2EinnerHeight%20%29%20%3D%3D%20%27number%27%20%29%0A%20%20%20%20%20%20return%20window%2EinnerHeight%3B%20%20%2F%2F%20Non%20IE%20browser%0A%0A%20%20%20%20if%20%28document%2EdocumentElement%20%26%26%20document%2EdocumentElement%2EclientHeight%29%0A%20%20%20%20%20%20return%20document%2EdocumentElement%2EclientHeight%3B%20%20%2F%2F%20IE6%0A%0A%20%20%20%20if%20%28document%2Ebody%20%26%26%20document%2Ebody%2EclientHeight%29%0A%20%20%20%20%20%20return%20document%2Ebody%2EclientHeight%3B%20%2F%2F%20IE4%0A%20%20%7D%2C%0A%0A%20%20document%5Fheight%3A%20function%20%28%29%20%7B%0A%20%20%20%20var%20sh%2C%20oh%3B%0A%0A%20%20%20%20sh%20%3D%20document%2Ebody%2EscrollHeight%3B%0A%20%20%20%20oh%20%3D%20document%2Ebody%2EoffsetHeight%3B%0A%0A%20%20%20%20if%20%28sh%20%26%26%20oh%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20return%20%28sh%20%3E%20oh%20%3F%20sh%20%3A%20oh%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%20no%20idea%21%0A%20%20%20%20return%200%3B%0A%20%20%7D%2C%0A%0A%20%20smaller%3A%20function%20%28%29%20%7B%0A%20%20%20%20if%20%28w3c%5Fslidy%2Esize%5Findex%20%3E%200%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%2D%2Dw3c%5Fslidy%2Esize%5Findex%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20w3c%5Fslidy%2Etoolbar%2Estyle%2Edisplay%20%3D%20%22none%22%3B%0A%20%20%20%20document%2Ebody%2Estyle%2EfontSize%20%3D%20w3c%5Fslidy%2Esizes%5Bw3c%5Fslidy%2Esize%5Findex%5D%3B%0A%20%20%20%20var%20slide%20%3D%20w3c%5Fslidy%2Eslides%5Bw3c%5Fslidy%2Eslide%5Fnumber%5D%3B%0A%20%20%20%20w3c%5Fslidy%2Ehide%5Fslide%28slide%29%3B%0A%20%20%20%20w3c%5Fslidy%2Eshow%5Fslide%28slide%29%3B%0A%20%20%20%20setTimeout%28function%20%28%29%20%7Bw3c%5Fslidy%2Eshow%5Ftoolbar%28%29%3B%20%7D%2C%2050%29%3B%0A%20%20%7D%2C%0A%0A%20%20bigger%3A%20function%20%28%29%20%7B%0A%20%20%20%20if%20%28w3c%5Fslidy%2Esize%5Findex%20%3C%20w3c%5Fslidy%2Esizes%2Elength%20%2D%201%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%2B%2Bw3c%5Fslidy%2Esize%5Findex%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20w3c%5Fslidy%2Etoolbar%2Estyle%2Edisplay%20%3D%20%22none%22%3B%0A%20%20%20%20document%2Ebody%2Estyle%2EfontSize%20%3D%20w3c%5Fslidy%2Esizes%5Bw3c%5Fslidy%2Esize%5Findex%5D%3B%0A%20%20%20%20var%20slide%20%3D%20w3c%5Fslidy%2Eslides%5Bw3c%5Fslidy%2Eslide%5Fnumber%5D%3B%0A%20%20%20%20w3c%5Fslidy%2Ehide%5Fslide%28slide%29%3B%0A%20%20%20%20w3c%5Fslidy%2Eshow%5Fslide%28slide%29%3B%0A%20%20%20%20setTimeout%28function%20%28%29%20%7Bw3c%5Fslidy%2Eshow%5Ftoolbar%28%29%3B%20%7D%2C%2050%29%3B%0A%20%20%7D%2C%0A%0A%20%20%2F%2F%20enables%20cross%20browser%20use%20of%20relative%20width%2Fheight%0A%20%20%2F%2F%20on%20object%20elements%20for%20use%20with%20SVG%20and%20Flash%20media%0A%20%20%2F%2F%20with%20thanks%20to%20Ivan%20Herman%20for%20the%20suggestion%0A%20%20adjust%5Fobject%5Fdimensions%3A%20function%20%28width%2C%20height%29%20%7B%0A%20%20%20%20for%28%20var%20i%20%3D%200%3B%20i%20%3C%20w3c%5Fslidy%2Eobjects%2Elength%3B%20i%2B%2B%20%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20var%20obj%20%3D%20this%2Eobjects%5Bi%5D%3B%0A%20%20%20%20%20%20var%20mimeType%20%3D%20obj%2EgetAttribute%28%22type%22%29%3B%0A%0A%20%20%20%20%20%20if%20%28mimeType%20%3D%3D%20%22image%2Fsvg%2Bxml%22%20%7C%7C%20mimeType%20%3D%3D%20%22application%2Fx%2Dshockwave%2Dflash%22%29%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20if%20%28%20%21obj%2EinitialWidth%20%29%20%0A%20%20%20%20%20%20%20%20%20%20obj%2EinitialWidth%20%3D%20obj%2EgetAttribute%28%22width%22%29%3B%0A%0A%20%20%20%20%20%20%20%20if%20%28%20%21obj%2EinitialHeight%20%29%20%0A%20%20%20%20%20%20%20%20%20%20obj%2EinitialHeight%20%3D%20obj%2EgetAttribute%28%22height%22%29%3B%0A%0A%20%20%20%20%20%20%20%20if%20%28%20obj%2EinitialWidth%20%26%26%20obj%2EinitialWidth%2EcharAt%28obj%2EinitialWidth%2Elength%2D1%29%20%3D%3D%20%22%25%22%20%29%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20w%20%3D%20parseInt%28obj%2EinitialWidth%2Eslice%280%2C%20obj%2EinitialWidth%2Elength%2D1%29%29%3B%0A%20%20%20%20%20%20%20%20%20%20var%20newW%20%3D%20width%20%2A%20%28w%2F100%2E0%29%3B%0A%20%20%20%20%20%20%20%20%20%20obj%2EsetAttribute%28%22width%22%2CnewW%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20if%20%28%20obj%2EinitialHeight%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%20%20%20obj%2EinitialHeight%2EcharAt%28obj%2EinitialHeight%2Elength%2D1%29%20%3D%3D%20%22%25%22%20%29%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20h%20%3D%20parseInt%28obj%2EinitialHeight%2Eslice%280%2C%20obj%2EinitialHeight%2Elength%2D1%29%29%3B%0A%20%20%20%20%20%20%20%20%20%20var%20newH%20%3D%20height%20%2A%20%28h%2F100%2E0%29%3B%0A%20%20%20%20%20%20%20%20%20%20obj%2EsetAttribute%28%22height%22%2C%20newH%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20%2F%2F%20needed%20for%20Opera%20to%20inhibit%20default%20behavior%0A%20%20%2F%2F%20since%20Opera%20delivers%20keyPress%20even%20if%20keyDown%0A%20%20%2F%2F%20was%20cancelled%0A%20%20key%5Fpress%3A%20function%20%28event%29%20%7B%0A%20%20%20%20if%20%28%21event%29%0A%20%20%20%20%20%20event%20%3D%20window%2Eevent%3B%0A%0A%20%20%20%20if%20%28%21w3c%5Fslidy%2Ekey%5Fwanted%29%0A%20%20%20%20%20%20return%20w3c%5Fslidy%2Ecancel%28event%29%3B%0A%0A%20%20%20%20return%20true%3B%0A%20%20%7D%2C%0A%0A%20%20%2F%2F%20%20See%20e%2Eg%2E%20http%3A%2F%2Fwww%2Equirksmode%2Eorg%2Fjs%2Fevents%2Fkeys%2Ehtml%20for%20keycodes%0A%20%20key%5Fdown%3A%20function%20%28event%29%20%7B%0A%20%20%20%20var%20key%2C%20target%2C%20tag%3B%0A%0A%20%20%20%20w3c%5Fslidy%2Ekey%5Fwanted%20%3D%20true%3B%0A%0A%20%20%20%20if%20%28%21event%29%0A%20%20%20%20%20%20event%20%3D%20window%2Eevent%3B%0A%0A%20%20%20%20%2F%2F%20kludge%20around%20NS%2FIE%20differences%20%0A%20%20%20%20if%20%28window%2Eevent%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20key%20%3D%20window%2Eevent%2EkeyCode%3B%0A%20%20%20%20%20%20target%20%3D%20window%2Eevent%2EsrcElement%3B%0A%20%20%20%20%7D%0A%20%20%20%20else%20if%20%28event%2Ewhich%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20key%20%3D%20event%2Ewhich%3B%0A%20%20%20%20%20%20target%20%3D%20event%2Etarget%3B%0A%20%20%20%20%7D%0A%20%20%20%20else%0A%20%20%20%20%20%20return%20true%3B%20%2F%2F%20Yikes%21%20unknown%20browser%0A%0A%20%20%20%20%2F%2F%20ignore%20event%20if%20key%20value%20is%20zero%0A%20%20%20%20%2F%2F%20as%20for%20alt%20on%20Opera%20and%20Konqueror%0A%20%20%20%20if%20%28%21key%29%0A%20%20%20%20%20%20%20return%20true%3B%0A%0A%20%20%20%20%2F%2F%20avoid%20interfering%20with%20keystroke%0A%20%20%20%20%2F%2F%20behavior%20for%20non%2Dslidy%20chrome%20elements%0A%20%20%20%20if%20%28%21w3c%5Fslidy%2Eslidy%5Fchrome%28target%29%20%26%26%0A%20%20%20%20%20%20%20%20w3c%5Fslidy%2Especial%5Felement%28target%29%29%0A%20%20%20%20%20%20return%20true%3B%0A%0A%20%20%20%20%2F%2F%20check%20for%20concurrent%20control%2Fcommand%2Falt%20key%0A%20%20%20%20%2F%2F%20but%20are%20these%20only%20present%20on%20mouse%20events%3F%0A%0A%20%20%20%20if%20%28event%2EctrlKey%20%7C%7C%20event%2EaltKey%20%7C%7C%20event%2EmetaKey%29%0A%20%20%20%20%20%20%20return%20true%3B%0A%0A%20%20%20%20%2F%2F%20dismiss%20table%20of%20contents%20if%20visible%0A%20%20%20%20if%20%28w3c%5Fslidy%2Eis%5Fshown%5Ftoc%28%29%20%26%26%20key%20%21%3D%209%20%26%26%20key%20%21%3D%2016%20%26%26%20key%20%21%3D%2038%20%26%26%20key%20%21%3D%2040%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20w3c%5Fslidy%2Ehide%5Ftable%5Fof%5Fcontents%28true%29%3B%0A%0A%20%20%20%20%20%20if%20%28key%20%3D%3D%2027%20%7C%7C%20key%20%3D%3D%2084%20%7C%7C%20key%20%3D%3D%2067%29%0A%20%20%20%20%20%20%20%20return%20w3c%5Fslidy%2Ecancel%28event%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20if%20%28key%20%3D%3D%2034%29%20%2F%2F%20Page%20Down%0A%20%20%20%20%7B%0A%20%20%20%20%20%20if%20%28w3c%5Fslidy%2Eview%5Fall%29%0A%20%20%20%20%20%20%20%20return%20true%3B%0A%0A%20%20%20%20%20%20w3c%5Fslidy%2Enext%5Fslide%28false%29%3B%0A%20%20%20%20%20%20return%20w3c%5Fslidy%2Ecancel%28event%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20else%20if%20%28key%20%3D%3D%2033%29%20%2F%2F%20Page%20Up%0A%20%20%20%20%7B%0A%20%20%20%20%20%20if%20%28w3c%5Fslidy%2Eview%5Fall%29%0A%20%20%20%20%20%20%20%20return%20true%3B%0A%0A%20%20%20%20%20%20w3c%5Fslidy%2Eprevious%5Fslide%28false%29%3B%0A%20%20%20%20%20%20return%20w3c%5Fslidy%2Ecancel%28event%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20else%20if%20%28key%20%3D%3D%2032%29%20%2F%2F%20space%20bar%0A%20%20%20%20%7B%0A%20%20%20%20%20%20w3c%5Fslidy%2Enext%5Fslide%28true%29%3B%0A%20%20%20%20%20%20return%20w3c%5Fslidy%2Ecancel%28event%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20else%20if%20%28key%20%3D%3D%2037%29%20%2F%2F%20Left%20arrow%0A%20%20%20%20%7B%0A%20%20%20%20%20%20w3c%5Fslidy%2Eprevious%5Fslide%28%21event%2EshiftKey%29%3B%0A%20%20%20%20%20%20return%20w3c%5Fslidy%2Ecancel%28event%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20else%20if%20%28key%20%3D%3D%2036%29%20%2F%2F%20Home%0A%20%20%20%20%7B%0A%20%20%20%20%20%20w3c%5Fslidy%2Efirst%5Fslide%28%29%3B%0A%20%20%20%20%20%20return%20w3c%5Fslidy%2Ecancel%28event%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20else%20if%20%28key%20%3D%3D%2035%29%20%2F%2F%20End%0A%20%20%20%20%7B%0A%20%20%20%20%20%20w3c%5Fslidy%2Elast%5Fslide%28%29%3B%0A%20%20%20%20%20%20return%20w3c%5Fslidy%2Ecancel%28event%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20else%20if%20%28key%20%3D%3D%2039%29%20%2F%2F%20Right%20arrow%0A%20%20%20%20%7B%0A%20%20%20%20%20%20w3c%5Fslidy%2Enext%5Fslide%28%21event%2EshiftKey%29%3B%0A%20%20%20%20%20%20return%20w3c%5Fslidy%2Ecancel%28event%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20else%20if%20%28key%20%3D%3D%2013%29%20%2F%2F%20Enter%0A%20%20%20%20%7B%0A%20%20%20%20%20%20if%20%28w3c%5Fslidy%2Eoutline%29%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20if%20%28w3c%5Fslidy%2Eoutline%2Evisible%29%0A%20%20%20%20%20%20%20%20%20%20w3c%5Fslidy%2Efold%28w3c%5Fslidy%2Eoutline%29%3B%0A%20%20%20%20%20%20%20%20else%0A%20%20%20%20%20%20%20%20%20%20w3c%5Fslidy%2Eunfold%28w3c%5Fslidy%2Eoutline%29%3B%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20return%20w3c%5Fslidy%2Ecancel%28event%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20else%20if%20%28key%20%3D%3D%20188%29%20%20%2F%2F%20%3C%20for%20smaller%20fonts%0A%20%20%20%20%7B%0A%20%20%20%20%20%20w3c%5Fslidy%2Esmaller%28%29%3B%0A%20%20%20%20%20%20return%20w3c%5Fslidy%2Ecancel%28event%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20else%20if%20%28key%20%3D%3D%20190%29%20%20%2F%2F%20%3E%20for%20larger%20fonts%0A%20%20%20%20%7B%0A%20%20%20%20%20%20w3c%5Fslidy%2Ebigger%28%29%3B%0A%20%20%20%20%20%20return%20w3c%5Fslidy%2Ecancel%28event%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20else%20if%20%28key%20%3D%3D%20189%20%7C%7C%20key%20%3D%3D%20109%29%20%20%2F%2F%20%2D%20for%20smaller%20fonts%0A%20%20%20%20%7B%0A%20%20%20%20%20%20w3c%5Fslidy%2Esmaller%28%29%3B%0A%20%20%20%20%20%20return%20w3c%5Fslidy%2Ecancel%28event%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20else%20if%20%28key%20%3D%3D%20187%20%7C%7C%20key%20%3D%3D%20191%20%7C%7C%20key%20%3D%3D%20107%29%20%20%2F%2F%20%3D%20%2B%20%20for%20larger%20fonts%0A%20%20%20%20%7B%0A%20%20%20%20%20%20w3c%5Fslidy%2Ebigger%28%29%3B%0A%20%20%20%20%20%20return%20w3c%5Fslidy%2Ecancel%28event%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20else%20if%20%28key%20%3D%3D%2083%29%20%20%2F%2F%20S%20for%20smaller%20fonts%0A%20%20%20%20%7B%0A%20%20%20%20%20%20w3c%5Fslidy%2Esmaller%28%29%3B%0A%20%20%20%20%20%20return%20w3c%5Fslidy%2Ecancel%28event%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20else%20if%20%28key%20%3D%3D%2066%29%20%20%2F%2F%20B%20for%20larger%20fonts%0A%20%20%20%20%7B%0A%20%20%20%20%20%20w3c%5Fslidy%2Ebigger%28%29%3B%0A%20%20%20%20%20%20return%20w3c%5Fslidy%2Ecancel%28event%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20else%20if%20%28key%20%3D%3D%2090%29%20%20%2F%2F%20Z%20for%20last%20slide%0A%20%20%20%20%7B%0A%20%20%20%20%20%20w3c%5Fslidy%2Elast%5Fslide%28%29%3B%0A%20%20%20%20%20%20return%20w3c%5Fslidy%2Ecancel%28event%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20else%20if%20%28key%20%3D%3D%2070%29%20%20%2F%2F%20F%20for%20toggle%20toolbar%0A%20%20%20%20%7B%0A%20%20%20%20%20%20w3c%5Fslidy%2Etoggle%5Ftoolbar%28%29%3B%0A%20%20%20%20%20%20return%20w3c%5Fslidy%2Ecancel%28event%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20else%20if%20%28key%20%3D%3D%2065%29%20%20%2F%2F%20A%20for%20toggle%20view%20single%2Fall%20slides%0A%20%20%20%20%7B%0A%20%20%20%20%20%20w3c%5Fslidy%2Etoggle%5Fview%28%29%3B%0A%20%20%20%20%20%20return%20w3c%5Fslidy%2Ecancel%28event%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20else%20if%20%28key%20%3D%3D%2075%29%20%20%2F%2F%20toggle%20action%20of%20left%20click%20for%20next%20page%0A%20%20%20%20%7B%0A%20%20%20%20%20%20w3c%5Fslidy%2Emouse%5Fclick%5Fenabled%20%3D%20%21w3c%5Fslidy%2Emouse%5Fclick%5Fenabled%3B%0A%20%20%20%20%20%20var%20alert%5Fmsg%20%3D%20%28w3c%5Fslidy%2Emouse%5Fclick%5Fenabled%20%3F%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22enabled%22%20%3A%20%22disabled%22%29%20%2B%20%20%22%20mouse%20click%20advance%22%3B%0A%0A%20%20%20%20%20%20alert%28w3c%5Fslidy%2Elocalize%28alert%5Fmsg%29%29%3B%0A%20%20%20%20%20%20return%20w3c%5Fslidy%2Ecancel%28event%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20else%20if%20%28key%20%3D%3D%2084%20%7C%7C%20key%20%3D%3D%2067%29%20%20%2F%2F%20T%20or%20C%20for%20table%20of%20contents%0A%20%20%20%20%7B%0A%20%20%20%20%20%20if%20%28w3c%5Fslidy%2Etoc%29%0A%20%20%20%20%20%20%20%20w3c%5Fslidy%2Etoggle%5Ftable%5Fof%5Fcontents%28%29%3B%0A%0A%20%20%20%20%20%20return%20w3c%5Fslidy%2Ecancel%28event%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20else%20if%20%28key%20%3D%3D%2072%29%20%2F%2F%20H%20for%20help%0A%20%20%20%20%7B%0A%20%20%20%20%20%20window%2Elocation%20%3D%20w3c%5Fslidy%2Ehelp%5Fpage%3B%0A%20%20%20%20%20%20return%20w3c%5Fslidy%2Ecancel%28event%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20%2F%2Felse%20alert%28%22key%20code%20is%20%22%2B%20key%29%3B%0A%0A%20%20%20%20return%20true%3B%0A%20%20%7D%2C%0A%0A%20%20%2F%2F%20safe%20for%20both%20text%2Fhtml%20and%20application%2Fxhtml%2Bxml%0A%20%20create%5Felement%3A%20function%20%28name%29%20%7B%0A%20%20%20%20if%20%28this%2Exhtml%20%26%26%20%28typeof%20document%2EcreateElementNS%20%21%3D%20%27undefined%27%29%29%0A%20%20%20%20%20%20return%20document%2EcreateElementNS%28%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F1999%2Fxhtml%22%2C%20name%29%0A%0A%20%20%20%20return%20document%2EcreateElement%28name%29%3B%0A%20%20%7D%2C%0A%0A%20%20get%5Felement%5Fstyle%3A%20function%20%28elem%2C%20IEStyleProp%2C%20CSSStyleProp%29%20%7B%0A%20%20%20%20if%20%28elem%2EcurrentStyle%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20return%20elem%2EcurrentStyle%5BIEStyleProp%5D%3B%0A%20%20%20%20%7D%0A%20%20%20%20else%20if%20%28window%2EgetComputedStyle%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20var%20compStyle%20%3D%20window%2EgetComputedStyle%28elem%2C%20%22%22%29%3B%0A%20%20%20%20%20%20return%20compStyle%2EgetPropertyValue%28CSSStyleProp%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20%22%22%3B%0A%20%20%7D%2C%0A%0A%20%20%2F%2F%20the%20string%20str%20is%20a%20whitespace%20separated%20list%20of%20tokens%0A%20%20%2F%2F%20test%20if%20str%20contains%20a%20particular%20token%2C%20e%2Eg%2E%20%22slide%22%0A%20%20has%5Ftoken%3A%20function%20%28str%2C%20token%29%20%7B%0A%20%20%20%20if%20%28str%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%2F%2F%20define%20pattern%20as%20regular%20expression%0A%20%20%20%20%20%20var%20pattern%20%3D%20%2F%5Cw%2B%2Fg%3B%0A%0A%20%20%20%20%20%20%2F%2F%20check%20for%20matches%0A%20%20%20%20%20%20%2F%2F%20place%20result%20in%20array%0A%20%20%20%20%20%20var%20result%20%3D%20str%2Ematch%28pattern%29%3B%0A%0A%20%20%20%20%20%20%2F%2F%20now%20check%20if%20desired%20token%20is%20present%0A%20%20%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20result%2Elength%3B%20i%2B%2B%29%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20if%20%28result%5Bi%5D%20%3D%3D%20token%29%0A%20%20%20%20%20%20%20%20%20%20return%20true%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20return%20false%3B%0A%20%20%7D%2C%0A%0A%20%20get%5Fclass%5Flist%3A%20function%20%28element%29%20%7B%0A%20%20%20%20if%20%28typeof%20element%2EclassName%20%21%3D%20%27undefined%27%29%0A%20%20%20%20%20%20return%20element%2EclassName%3B%0A%0A%20%20%20%20return%20element%2EgetAttribute%28%22class%22%29%3B%0A%20%20%7D%2C%0A%0A%20%20has%5Fclass%3A%20function%20%28element%2C%20name%29%20%7B%0A%20%20%20%20if%20%28element%2EnodeType%20%21%3D%201%29%0A%20%20%20%20%20%20return%20false%3B%0A%0A%20%20%20%20var%20regexp%20%3D%20new%20RegExp%28%22%28%5E%7C%20%29%22%20%2B%20name%20%2B%20%22%5CW%2A%22%29%3B%0A%0A%20%20%20%20if%20%28typeof%20element%2EclassName%20%21%3D%20%27undefined%27%29%0A%20%20%20%20%20%20return%20regexp%2Etest%28element%2EclassName%29%3B%0A%0A%20%20%20%20return%20regexp%2Etest%28element%2EgetAttribute%28%22class%22%29%29%3B%0A%20%20%7D%2C%0A%0A%20%20remove%5Fclass%3A%20function%20%28element%2C%20name%29%20%7B%0A%20%20%20%20var%20regexp%20%3D%20new%20RegExp%28%22%28%5E%7C%20%29%22%20%2B%20name%20%2B%20%22%5CW%2A%22%29%3B%0A%20%20%20%20var%20clsval%20%3D%20%22%22%3B%0A%0A%20%20%20%20if%20%28typeof%20element%2EclassName%20%21%3D%20%27undefined%27%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20clsval%20%3D%20element%2EclassName%3B%0A%0A%20%20%20%20%20%20if%20%28clsval%29%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20clsval%20%3D%20clsval%2Ereplace%28regexp%2C%20%22%22%29%3B%0A%20%20%20%20%20%20%20%20element%2EclassName%20%3D%20clsval%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20else%0A%20%20%20%20%7B%0A%20%20%20%20%20%20clsval%20%3D%20element%2EgetAttribute%28%22class%22%29%3B%0A%0A%20%20%20%20%20%20if%20%28clsval%29%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20clsval%20%3D%20clsval%2Ereplace%28regexp%2C%20%22%22%29%3B%0A%20%20%20%20%20%20%20%20element%2EsetAttribute%28%22class%22%2C%20clsval%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20add%5Fclass%3A%20function%20%28element%2C%20name%29%20%7B%0A%20%20%20%20if%20%28%21this%2Ehas%5Fclass%28element%2C%20name%29%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20if%20%28typeof%20element%2EclassName%20%21%3D%20%27undefined%27%29%0A%20%20%20%20%20%20%20%20element%2EclassName%20%2B%3D%20%22%20%22%20%2B%20name%3B%0A%20%20%20%20%20%20else%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20var%20clsval%20%3D%20element%2EgetAttribute%28%22class%22%29%3B%0A%20%20%20%20%20%20%20%20clsval%20%3D%20clsval%20%3F%20clsval%20%2B%20%22%20%22%20%2B%20name%20%3A%20name%3B%0A%20%20%20%20%20%20%20%20element%2EsetAttribute%28%22class%22%2C%20clsval%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20%2F%2F%20HTML%20elements%20that%20can%20be%20used%20with%20class%3D%22incremental%22%0A%20%20%2F%2F%20note%20that%20you%20can%20also%20put%20the%20class%20on%20containers%20like%0A%20%20%2F%2F%20up%2C%20ol%2C%20dl%2C%20and%20div%20to%20make%20their%20contents%20appear%0A%20%20%2F%2F%20incrementally%2E%20Upper%20case%20is%20used%20since%20this%20is%20what%0A%20%20%2F%2F%20browsers%20report%20for%20HTML%20node%20names%20%28text%2Fhtml%29%2E%0A%20%20incremental%5Felements%3A%20null%2C%0A%20%20okay%5Ffor%5Fincremental%3A%20function%20%28name%29%20%7B%0A%20%20%20%20if%20%28%21this%2Eincremental%5Felements%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20var%20inclist%20%3D%20new%20Array%28%29%3B%0A%20%20%20%20%20%20inclist%5B%22p%22%5D%20%3D%20true%3B%0A%20%20%20%20%20%20inclist%5B%22pre%22%5D%20%3D%20true%3B%0A%20%20%20%20%20%20inclist%5B%22li%22%5D%20%3D%20true%3B%0A%20%20%20%20%20%20inclist%5B%22blockquote%22%5D%20%3D%20true%3B%0A%20%20%20%20%20%20inclist%5B%22dt%22%5D%20%3D%20true%3B%0A%20%20%20%20%20%20inclist%5B%22dd%22%5D%20%3D%20true%3B%0A%20%20%20%20%20%20inclist%5B%22h2%22%5D%20%3D%20true%3B%0A%20%20%20%20%20%20inclist%5B%22h3%22%5D%20%3D%20true%3B%0A%20%20%20%20%20%20inclist%5B%22h4%22%5D%20%3D%20true%3B%0A%20%20%20%20%20%20inclist%5B%22h5%22%5D%20%3D%20true%3B%0A%20%20%20%20%20%20inclist%5B%22h6%22%5D%20%3D%20true%3B%0A%20%20%20%20%20%20inclist%5B%22span%22%5D%20%3D%20true%3B%0A%20%20%20%20%20%20inclist%5B%22address%22%5D%20%3D%20true%3B%0A%20%20%20%20%20%20inclist%5B%22table%22%5D%20%3D%20true%3B%0A%20%20%20%20%20%20inclist%5B%22tr%22%5D%20%3D%20true%3B%0A%20%20%20%20%20%20inclist%5B%22th%22%5D%20%3D%20true%3B%0A%20%20%20%20%20%20inclist%5B%22td%22%5D%20%3D%20true%3B%0A%20%20%20%20%20%20inclist%5B%22img%22%5D%20%3D%20true%3B%0A%20%20%20%20%20%20inclist%5B%22object%22%5D%20%3D%20true%3B%0A%20%20%20%20%20%20this%2Eincremental%5Felements%20%3D%20inclist%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20this%2Eincremental%5Felements%5Bname%2EtoLowerCase%28%29%5D%3B%0A%20%20%7D%2C%0A%0A%20%20next%5Fincremental%5Fitem%3A%20function%20%28node%29%20%7B%0A%20%20%20%20var%20br%20%3D%20this%2Eis%5Fxhtml%20%3F%20%22br%22%20%3A%20%22BR%22%3B%0A%20%20%20%20var%20slide%20%3D%20w3c%5Fslidy%2Eslides%5Bw3c%5Fslidy%2Eslide%5Fnumber%5D%3B%0A%0A%20%20%20%20for%20%28%3B%3B%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20node%20%3D%20w3c%5Fslidy%2Enext%5Fnode%28slide%2C%20node%29%3B%0A%0A%20%20%20%20%20%20if%20%28node%20%3D%3D%20null%20%7C%7C%20node%2EparentNode%20%3D%3D%20null%29%0A%20%20%20%20%20%20%20%20break%3B%0A%0A%20%20%20%20%20%20if%20%28node%2EnodeType%20%3D%3D%201%29%20%20%2F%2F%20ELEMENT%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20if%20%28node%2EnodeName%20%3D%3D%20br%29%0A%20%20%20%20%20%20%20%20%20%20continue%3B%0A%0A%20%20%20%20%20%20%20%20if%20%28w3c%5Fslidy%2Ehas%5Fclass%28node%2C%20%22incremental%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%26%26%20w3c%5Fslidy%2Eokay%5Ffor%5Fincremental%28node%2EnodeName%29%29%0A%20%20%20%20%20%20%20%20%20%20return%20node%3B%0A%0A%20%20%20%20%20%20%20%20if%20%28w3c%5Fslidy%2Ehas%5Fclass%28node%2EparentNode%2C%20%22incremental%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%26%26%20%21w3c%5Fslidy%2Ehas%5Fclass%28node%2C%20%22non%2Dincremental%22%29%29%0A%20%20%20%20%20%20%20%20%20%20return%20node%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20return%20node%3B%0A%20%20%7D%2C%0A%0A%20%20previous%5Fincremental%5Fitem%3A%20function%20%28node%29%20%7B%0A%20%20%20%20var%20br%20%3D%20this%2Eis%5Fxhtml%20%3F%20%22br%22%20%3A%20%22BR%22%3B%0A%20%20%20%20var%20slide%20%3D%20w3c%5Fslidy%2Eslides%5Bw3c%5Fslidy%2Eslide%5Fnumber%5D%3B%0A%0A%20%20%20%20for%20%28%3B%3B%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20node%20%3D%20w3c%5Fslidy%2Eprevious%5Fnode%28slide%2C%20node%29%3B%0A%0A%20%20%20%20%20%20if%20%28node%20%3D%3D%20null%20%7C%7C%20node%2EparentNode%20%3D%3D%20null%29%0A%20%20%20%20%20%20%20%20break%3B%0A%0A%20%20%20%20%20%20if%20%28node%2EnodeType%20%3D%3D%201%29%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20if%20%28node%2EnodeName%20%3D%3D%20br%29%0A%20%20%20%20%20%20%20%20%20%20continue%3B%0A%0A%20%20%20%20%20%20%20%20if%20%28w3c%5Fslidy%2Ehas%5Fclass%28node%2C%20%22incremental%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%26%26%20w3c%5Fslidy%2Eokay%5Ffor%5Fincremental%28node%2EnodeName%29%29%0A%20%20%20%20%20%20%20%20%20%20return%20node%3B%0A%0A%20%20%20%20%20%20%20%20if%20%28w3c%5Fslidy%2Ehas%5Fclass%28node%2EparentNode%2C%20%22incremental%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%26%26%20%21w3c%5Fslidy%2Ehas%5Fclass%28node%2C%20%22non%2Dincremental%22%29%29%0A%20%20%20%20%20%20%20%20%20%20return%20node%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20return%20node%3B%0A%20%20%7D%2C%0A%0A%20%20%2F%2F%20set%20visibility%20for%20all%20elements%20on%20current%20slide%20with%0A%20%20%2F%2F%20a%20parent%20element%20with%20attribute%20class%3D%22incremental%22%0A%20%20set%5Fvisibility%5Fall%5Fincremental%3A%20function%20%28value%29%20%7B%0A%20%20%20%20var%20node%20%3D%20this%2Enext%5Fincremental%5Fitem%28null%29%3B%0A%0A%20%20%20%20if%20%28value%20%3D%3D%20%22hidden%22%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20while%20%28node%29%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20w3c%5Fslidy%2Eadd%5Fclass%28node%2C%20%22invisible%22%29%3B%0A%20%20%20%20%20%20%20%20node%20%3D%20w3c%5Fslidy%2Enext%5Fincremental%5Fitem%28node%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20else%20%2F%2F%20value%20%3D%3D%20%22visible%22%0A%20%20%20%20%7B%0A%20%20%20%20%20%20while%20%28node%29%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20w3c%5Fslidy%2Eremove%5Fclass%28node%2C%20%22invisible%22%29%3B%0A%20%20%20%20%20%20%20%20node%20%3D%20w3c%5Fslidy%2Enext%5Fincremental%5Fitem%28node%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20%2F%2F%20reveal%20the%20next%20hidden%20item%20on%20the%20slide%0A%20%20%2F%2F%20node%20is%20null%20or%20the%20node%20that%20was%20last%20revealed%0A%20%20reveal%5Fnext%5Fitem%3A%20function%20%28node%29%20%7B%0A%20%20%20%20node%20%3D%20w3c%5Fslidy%2Enext%5Fincremental%5Fitem%28node%29%3B%0A%0A%20%20%20%20if%20%28node%20%26%26%20node%2EnodeType%20%3D%3D%201%29%20%20%2F%2F%20an%20element%0A%20%20%20%20%20%20w3c%5Fslidy%2Eremove%5Fclass%28node%2C%20%22invisible%22%29%3B%0A%0A%20%20%20%20return%20node%3B%0A%20%20%7D%2C%0A%0A%20%20%2F%2F%20exact%20inverse%20of%20revealNextItem%28node%29%0A%20%20hide%5Fprevious%5Fitem%3A%20function%20%28node%29%20%7B%0A%20%20%20%20if%20%28node%20%26%26%20node%2EnodeType%20%3D%3D%201%29%20%20%2F%2F%20an%20element%0A%20%20%20%20%20%20w3c%5Fslidy%2Eadd%5Fclass%28node%2C%20%22invisible%22%29%3B%0A%0A%20%20%20%20return%20this%2Eprevious%5Fincremental%5Fitem%28node%29%3B%0A%20%20%7D%2C%0A%0A%20%20%2F%2F%20left%20to%20right%20traversal%20of%20root%27s%20content%0A%20%20next%5Fnode%3A%20function%20%28root%2C%20node%29%20%7B%0A%20%20%20%20if%20%28node%20%3D%3D%20null%29%0A%20%20%20%20%20%20return%20root%2EfirstChild%3B%0A%0A%20%20%20%20if%20%28node%2EfirstChild%29%0A%20%20%20%20%20%20return%20node%2EfirstChild%3B%0A%0A%20%20%20%20if%20%28node%2EnextSibling%29%0A%20%20%20%20%20%20return%20node%2EnextSibling%3B%0A%0A%20%20%20%20for%20%28%3B%3B%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20node%20%3D%20node%2EparentNode%3B%0A%0A%20%20%20%20%20%20if%20%28%21node%20%7C%7C%20node%20%3D%3D%20root%29%0A%20%20%20%20%20%20%20%20break%3B%0A%0A%20%20%20%20%20%20if%20%28node%20%26%26%20node%2EnextSibling%29%0A%20%20%20%20%20%20%20%20return%20node%2EnextSibling%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20return%20null%3B%0A%20%20%7D%2C%0A%0A%20%20%2F%2F%20right%20to%20left%20traversal%20of%20root%27s%20content%0A%20%20previous%5Fnode%3A%20function%20%28root%2C%20node%29%20%7B%0A%20%20%20%20if%20%28node%20%3D%3D%20null%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20node%20%3D%20root%2ElastChild%3B%0A%0A%20%20%20%20%20%20if%20%28node%29%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20while%20%28node%2ElastChild%29%0A%20%20%20%20%20%20%20%20%20%20node%20%3D%20node%2ElastChild%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20return%20node%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20if%20%28node%2EpreviousSibling%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20node%20%3D%20node%2EpreviousSibling%3B%0A%0A%20%20%20%20%20%20while%20%28node%2ElastChild%29%0A%20%20%20%20%20%20%20%20node%20%3D%20node%2ElastChild%3B%0A%0A%20%20%20%20%20%20return%20node%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20if%20%28node%2EparentNode%20%21%3D%20root%29%0A%20%20%20%20%20%20return%20node%2EparentNode%3B%0A%0A%20%20%20%20return%20null%3B%0A%20%20%7D%2C%0A%0A%20%20previous%5Fsibling%5Felement%3A%20function%20%28el%29%20%7B%0A%20%20%20%20el%20%3D%20el%2EpreviousSibling%3B%0A%0A%20%20%20%20while%20%28el%20%26%26%20el%2EnodeType%20%21%3D%201%29%0A%20%20%20%20%20%20el%20%3D%20el%2EpreviousSibling%3B%0A%0A%20%20%20%20return%20el%3B%0A%20%20%7D%2C%0A%0A%20%20next%5Fsibling%5Felement%3A%20function%20%28el%29%20%7B%0A%20%20%20%20el%20%3D%20el%2EnextSibling%3B%0A%0A%20%20%20%20while%20%28el%20%26%26%20el%2EnodeType%20%21%3D%201%29%0A%20%20%20%20%20%20el%20%3D%20el%2EnextSibling%3B%0A%0A%20%20%20%20return%20el%3B%0A%20%20%7D%2C%0A%0A%20%20first%5Fchild%5Felement%3A%20function%20%28el%29%20%7B%0A%20%20%20%20var%20node%3B%0A%0A%20%20%20%20for%20%28node%20%3D%20el%2EfirstChild%3B%20node%3B%20node%20%3D%20node%2EnextSibling%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20if%20%28node%2EnodeType%20%3D%3D%201%29%0A%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20return%20node%3B%0A%20%20%7D%2C%0A%0A%20%20first%5Ftag%3A%20function%20%28element%2C%20tag%29%20%7B%0A%20%20%20%20var%20node%3B%0A%0A%20%20%20%20if%20%28%21this%2Eis%5Fxhtml%29%0A%20%20%20%20%20%20tag%20%3D%20tag%2EtoUpperCase%28%29%3B%0A%0A%20%20%20%20for%20%28node%20%3D%20element%2EfirstChild%3B%20node%3B%20node%20%3D%20node%2EnextSibling%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20if%20%28node%2EnodeType%20%3D%3D%201%20%26%26%20node%2EnodeName%20%3D%3D%20tag%29%0A%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20return%20node%3B%0A%20%20%7D%2C%0A%0A%20%20hide%5Fselection%3A%20function%20%28%29%20%7B%0A%20%20%20%20if%20%28window%2EgetSelection%29%20%2F%2F%20Firefox%2C%20Chromium%2C%20Safari%2C%20Opera%0A%20%20%20%20%7B%0A%20%20%20%20%20%20var%20selection%20%3D%20window%2EgetSelection%28%29%3B%0A%0A%20%20%20%20%20%20if%20%28selection%2ErangeCount%20%3E%200%29%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20var%20range%20%3D%20selection%2EgetRangeAt%280%29%3B%0A%20%20%20%20%20%20%20%20range%2Ecollapse%20%28false%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20else%20%2F%2F%20Internet%20Explorer%0A%20%20%20%20%7B%0A%20%20%20%20%20%20var%20textRange%20%3D%20document%2Eselection%2EcreateRange%20%28%29%3B%0A%20%20%20%20%20%20textRange%2Ecollapse%20%28false%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20get%5Fselected%5Ftext%3A%20function%20%28%29%20%7B%0A%20%20%20%20try%0A%20%20%20%20%7B%0A%20%20%20%20%20%20if%20%28window%2EgetSelection%29%0A%20%20%20%20%20%20%20%20return%20window%2EgetSelection%28%29%2EtoString%28%29%3B%0A%0A%20%20%20%20%20%20if%20%28document%2EgetSelection%29%0A%20%20%20%20%20%20%20%20return%20document%2EgetSelection%28%29%2EtoString%28%29%3B%0A%0A%20%20%20%20%20%20if%20%28document%2Eselection%29%0A%20%20%20%20%20%20%20%20return%20document%2Eselection%2EcreateRange%28%29%2Etext%3B%0A%20%20%20%20%7D%0A%20%20%20%20catch%20%28e%29%0A%20%20%20%20%7B%0A%20%20%20%20%7D%0A%0A%20%20%20%20return%20%22%22%3B%0A%20%20%7D%2C%0A%0A%20%20%2F%2F%20make%20note%20of%20length%20of%20selected%20text%0A%20%20%2F%2F%20as%20this%20evaluates%20to%20zero%20in%20click%20event%0A%20%20mouse%5Fbutton%5Fup%3A%20function%20%28e%29%20%7B%0A%20%20%20%20w3c%5Fslidy%2Eselected%5Ftext%5Flen%20%3D%20w3c%5Fslidy%2Eget%5Fselected%5Ftext%28%29%2Elength%3B%0A%20%20%7D%2C%0A%0A%20%20mouse%5Fbutton%5Fdown%3A%20function%20%28e%29%20%7B%0A%20%20%20%20w3c%5Fslidy%2Eselected%5Ftext%5Flen%20%3D%20w3c%5Fslidy%2Eget%5Fselected%5Ftext%28%29%2Elength%3B%0A%20%20%20%20w3c%5Fslidy%2Emouse%5Fx%20%3D%20e%2EclientX%3B%0A%20%20%20%20w3c%5Fslidy%2Emouse%5Fy%20%3D%20e%2EclientY%3B%0A%20%20%7D%2C%0A%0A%20%20%2F%2F%20right%20mouse%20button%20click%20is%20reserved%20for%20context%20menus%0A%20%20%2F%2F%20it%20is%20more%20reliable%20to%20detect%20rightclick%20than%20leftclick%0A%20%20mouse%5Fbutton%5Fclick%3A%20function%20%28e%29%20%7B%0A%20%20%20%20if%20%28%21e%29%0A%20%20%20%20%20%20var%20e%20%3D%20window%2Eevent%3B%0A%0A%20%20%20%20if%20%28Math%2Eabs%28e%2EclientX%20%2Dw3c%5Fslidy%2Emouse%5Fx%29%20%2B%0A%20%20%20%20%20%20%20%20Math%2Eabs%28e%2EclientY%20%2Dw3c%5Fslidy%2Emouse%5Fy%29%20%3E%2010%29%0A%20%20%20%20%20%20return%20true%3B%0A%0A%20%20%20%20if%20%28w3c%5Fslidy%2Eselected%5Ftext%5Flen%20%3E%200%29%0A%20%20%20%20%20%20return%20true%3B%0A%0A%20%20%20%20var%20rightclick%20%3D%20false%3B%0A%20%20%20%20var%20leftclick%20%3D%20false%3B%0A%20%20%20%20var%20middleclick%20%3D%20false%3B%0A%20%20%20%20var%20target%3B%0A%0A%20%20%20%20if%20%28%21e%29%0A%20%20%20%20%20%20var%20e%20%3D%20window%2Eevent%3B%0A%0A%20%20%20%20if%20%28e%2Etarget%29%0A%20%20%20%20%20%20target%20%3D%20e%2Etarget%3B%0A%20%20%20%20else%20if%20%28e%2EsrcElement%29%0A%20%20%20%20%20%20target%20%3D%20e%2EsrcElement%3B%0A%0A%20%20%20%20%2F%2F%20work%20around%20Safari%20bug%0A%20%20%20%20if%20%28target%2EnodeType%20%3D%3D%203%29%0A%20%20%20%20%20%20target%20%3D%20target%2EparentNode%3B%0A%0A%20%20%20%20if%20%28e%2Ewhich%29%20%2F%2F%20all%20browsers%20except%20IE%0A%20%20%20%20%7B%0A%20%20%20%20%20%20leftclick%20%3D%20%28e%2Ewhich%20%3D%3D%201%29%3B%0A%20%20%20%20%20%20middleclick%20%3D%20%28e%2Ewhich%20%3D%3D%202%29%3B%0A%20%20%20%20%20%20rightclick%20%3D%20%28e%2Ewhich%20%3D%3D%203%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20else%20if%20%28e%2Ebutton%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%2F%2F%20Konqueror%20gives%201%20for%20left%2C%204%20for%20middle%0A%20%20%20%20%20%20%2F%2F%20IE6%20gives%200%20for%20left%20and%20not%201%20as%20I%20expected%0A%0A%20%20%20%20%20%20if%20%28e%2Ebutton%20%3D%3D%204%29%0A%20%20%20%20%20%20%20%20middleclick%20%3D%20true%3B%0A%0A%20%20%20%20%20%20%2F%2F%20all%20browsers%20agree%20on%202%20for%20right%20button%0A%20%20%20%20%20%20rightclick%20%3D%20%28e%2Ebutton%20%3D%3D%202%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20else%0A%20%20%20%20%20%20leftclick%20%3D%20true%3B%0A%0A%20%20%20%20if%20%28w3c%5Fslidy%2Eselected%5Ftext%5Flen%20%3E%200%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20w3c%5Fslidy%2Estop%5Fpropagation%28e%29%3B%0A%20%20%20%20%20%20e%2Ecancel%20%3D%20true%3B%0A%20%20%20%20%20%20e%2EreturnValue%20%3D%20false%3B%0A%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%20dismiss%20table%20of%20contents%0A%20%20%20%20w3c%5Fslidy%2Ehide%5Ftable%5Fof%5Fcontents%28false%29%3B%0A%0A%20%20%20%20%2F%2F%20check%20if%20target%20is%20something%20that%20probably%20want%27s%20clicks%0A%20%20%20%20%2F%2F%20e%2Eg%2E%20a%2C%20embed%2C%20object%2C%20input%2C%20textarea%2C%20select%2C%20option%0A%20%20%20%20var%20tag%20%3D%20target%2EnodeName%2EtoLowerCase%28%29%3B%0A%0A%20%20%20%20if%20%28w3c%5Fslidy%2Emouse%5Fclick%5Fenabled%20%26%26%20leftclick%20%26%26%0A%20%20%20%20%20%20%20%20%21w3c%5Fslidy%2Especial%5Felement%28target%29%20%26%26%0A%20%20%20%20%20%20%20%20%21target%2Eonclick%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20w3c%5Fslidy%2Enext%5Fslide%28true%29%3B%0A%20%20%20%20%20%20w3c%5Fslidy%2Estop%5Fpropagation%28e%29%3B%0A%20%20%20%20%20%20e%2Ecancel%20%3D%20true%3B%0A%20%20%20%20%20%20e%2EreturnValue%20%3D%20false%3B%0A%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20return%20true%3B%0A%20%20%7D%2C%0A%0A%20%20special%5Felement%3A%20function%20%28element%29%20%7B%0A%20%20%20%20if%20%28this%2Ehas%5Fclass%28element%2C%20%22non%2Dinteractive%22%29%29%0A%20%20%20%20%20%20return%20false%3B%0A%0A%20%20%20%20var%20tag%20%3D%20element%2EnodeName%2EtoLowerCase%28%29%3B%0A%0A%20%20%20%20return%20element%2Eonkeydown%20%7C%7C%0A%20%20%20%20%20%20element%2Eonclick%20%7C%7C%0A%20%20%20%20%20%20tag%20%3D%3D%20%22a%22%20%7C%7C%0A%20%20%20%20%20%20tag%20%3D%3D%20%22embed%22%20%7C%7C%0A%20%20%20%20%20%20tag%20%3D%3D%20%22object%22%20%7C%7C%0A%20%20%20%20%20%20tag%20%3D%3D%20%22video%22%20%7C%7C%0A%20%20%20%20%20%20tag%20%3D%3D%20%22audio%22%20%7C%7C%0A%20%20%20%20%20%20tag%20%3D%3D%20%22svg%22%20%7C%7C%0A%20%20%20%20%20%20tag%20%3D%3D%20%22canvas%22%20%7C%7C%0A%20%20%20%20%20%20tag%20%3D%3D%20%22input%22%20%7C%7C%0A%20%20%20%20%20%20tag%20%3D%3D%20%22textarea%22%20%7C%7C%0A%20%20%20%20%20%20tag%20%3D%3D%20%22select%22%20%7C%7C%0A%20%20%20%20%20%20tag%20%3D%3D%20%22option%22%3B%0A%20%20%7D%2C%0A%0A%20%20slidy%5Fchrome%3A%20function%20%28el%29%20%7B%0A%20%20%20%20while%20%28el%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20if%20%28el%20%3D%3D%20w3c%5Fslidy%2Etoc%20%7C%7C%0A%20%20%20%20%20%20%20%20%20%20el%20%3D%3D%20w3c%5Fslidy%2Etoolbar%20%7C%7C%0A%20%20%20%20%20%20%20%20%20%20w3c%5Fslidy%2Ehas%5Fclass%28el%2C%20%22outline%22%29%29%0A%20%20%20%20%20%20%20%20return%20true%3B%0A%0A%20%20%20%20%20%20el%20%3D%20el%2EparentNode%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20return%20false%3B%0A%20%20%7D%2C%0A%0A%20%20get%5Fkey%3A%20function%20%28e%29%0A%20%20%7B%0A%20%20%20%20var%20key%3B%0A%0A%20%20%20%20%2F%2F%20kludge%20around%20NS%2FIE%20differences%20%0A%20%20%20%20if%20%28typeof%20window%2Eevent%20%21%3D%20%22undefined%22%29%0A%20%20%20%20%20%20key%20%3D%20window%2Eevent%2EkeyCode%3B%0A%20%20%20%20else%20if%20%28e%2Ewhich%29%0A%20%20%20%20%20%20key%20%3D%20e%2Ewhich%3B%0A%0A%20%20%20%20return%20key%3B%0A%20%20%7D%2C%0A%0A%20%20get%5Ftarget%3A%20function%20%28e%29%20%7B%0A%20%20%20%20var%20target%3B%0A%0A%20%20%20%20if%20%28%21e%29%0A%20%20%20%20%20%20e%20%3D%20window%2Eevent%3B%0A%0A%20%20%20%20if%20%28e%2Etarget%29%0A%20%20%20%20%20%20target%20%3D%20e%2Etarget%3B%0A%20%20%20%20else%20if%20%28e%2EsrcElement%29%0A%20%20%20%20%20%20target%20%3D%20e%2EsrcElement%3B%0A%0A%20%20%20%20if%20%28target%2EnodeType%20%21%3D%201%29%0A%20%20%20%20%20%20target%20%3D%20target%2EparentNode%3B%0A%0A%20%20%20%20return%20target%3B%0A%20%20%7D%2C%0A%0A%20%20%2F%2F%20does%20display%20property%20provide%20correct%20defaults%3F%0A%20%20is%5Fblock%3A%20function%20%28elem%29%20%7B%0A%20%20%20%20var%20tag%20%3D%20elem%2EnodeName%2EtoLowerCase%28%29%3B%0A%0A%20%20%20%20return%20tag%20%3D%3D%20%22ol%22%20%7C%7C%20tag%20%3D%3D%20%22ul%22%20%7C%7C%20tag%20%3D%3D%20%22p%22%20%7C%7C%20tag%20%3D%3D%20%22dl%22%20%7C%7C%0A%20%20%20%20%20%20%20%20%20%20%20tag%20%3D%3D%20%22li%22%20%7C%7C%20tag%20%3D%3D%20%22table%22%20%7C%7C%20tag%20%3D%3D%20%22pre%22%20%7C%7C%0A%20%20%20%20%20%20%20%20%20%20%20tag%20%3D%3D%20%22h1%22%20%7C%7C%20tag%20%3D%3D%20%22h2%22%20%7C%7C%20tag%20%3D%3D%20%22h3%22%20%7C%7C%0A%20%20%20%20%20%20%20%20%20%20%20tag%20%3D%3D%20%22h4%22%20%7C%7C%20tag%20%3D%3D%20%22h5%22%20%7C%7C%20tag%20%3D%3D%20%22h6%22%20%7C%7C%0A%20%20%20%20%20%20%20%20%20%20%20tag%20%3D%3D%20%22blockquote%22%20%7C%7C%20tag%20%3D%3D%20%22address%22%3B%20%0A%20%20%7D%2C%0A%0A%20%20add%5Flistener%3A%20function%20%28element%2C%20event%2C%20handler%29%20%7B%0A%20%20%20%20if%20%28window%2EaddEventListener%29%0A%20%20%20%20%20%20element%2EaddEventListener%28event%2C%20handler%2C%20false%29%3B%0A%20%20%20%20else%0A%20%20%20%20%20%20element%2EattachEvent%28%22on%22%2Bevent%2C%20handler%29%3B%0A%20%20%7D%2C%0A%0A%20%20%2F%2F%20used%20to%20prevent%20event%20propagation%20from%20field%20controls%0A%20%20stop%5Fpropagation%3A%20function%20%28event%29%20%7B%0A%20%20%20%20event%20%3D%20event%20%3F%20event%20%3A%20window%2Eevent%3B%0A%20%20%20%20event%2EcancelBubble%20%3D%20true%3B%20%20%2F%2F%20for%20IE%0A%0A%20%20%20%20if%20%28event%2EstopPropagation%29%0A%20%20%20%20%20%20event%2EstopPropagation%28%29%3B%0A%0A%20%20%20%20return%20true%3B%0A%20%20%7D%2C%0A%0A%20%20cancel%3A%20function%20%28event%29%20%7B%0A%20%20%20%20if%20%28event%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20event%2Ecancel%20%3D%20true%3B%0A%20%20%20%20%20%20%20event%2EreturnValue%20%3D%20false%3B%0A%0A%20%20%20%20%20%20if%20%28event%2EpreventDefault%29%0A%20%20%20%20%20%20%20%20event%2EpreventDefault%28%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20w3c%5Fslidy%2Ekey%5Fwanted%20%3D%20false%3B%0A%20%20%20%20return%20false%3B%0A%20%20%7D%2C%0A%0A%2F%2F%20for%20each%20language%20define%20an%20associative%20array%0A%2F%2F%20and%20also%20the%20help%20text%20which%20is%20longer%0A%0A%20%20strings%5Fes%3A%20%7B%0A%20%20%20%20%22slide%22%3A%22p%C3%A1g%2E%22%2C%0A%20%20%20%20%22help%3F%22%3A%22Ayuda%22%2C%0A%20%20%20%20%22contents%3F%22%3A%22%C3%8Dndice%22%2C%0A%20%20%20%20%22table%20of%20contents%22%3A%22tabla%20de%20contenidos%22%2C%0A%20%20%20%20%22Table%20of%20Contents%22%3A%22Tabla%20de%20Contenidos%22%2C%0A%20%20%20%20%22restart%20presentation%22%3A%22Reiniciar%20presentaci%C3%B3n%22%2C%0A%20%20%20%20%22restart%3F%22%3A%22Inicio%22%0A%20%20%7D%2C%0A%20%20help%5Fes%3A%0A%20%20%20%20%22Utilice%20el%20rat%C3%B3n%2C%20barra%20espaciadora%2C%20teclas%20Izda%2FDcha%2C%20%22%20%2B%0A%20%20%20%20%22o%20Re%20p%C3%A1g%20y%20Av%20p%C3%A1g%2E%20Use%20S%20y%20B%20para%20cambiar%20el%20tama%C3%B1o%20de%20fuente%2E%22%2C%0A%0A%20%20strings%5Fca%3A%20%7B%0A%20%20%20%20%22slide%22%3A%22p%C3%A0g%2E%2E%22%2C%0A%20%20%20%20%22help%3F%22%3A%22Ajuda%22%2C%0A%20%20%20%20%22contents%3F%22%3A%22%C3%8Dndex%22%2C%0A%20%20%20%20%22table%20of%20contents%22%3A%22taula%20de%20continguts%22%2C%0A%20%20%20%20%22Table%20of%20Contents%22%3A%22Taula%20de%20Continguts%22%2C%0A%20%20%20%20%22restart%20presentation%22%3A%22Reiniciar%20presentaci%C3%B3%22%2C%0A%20%20%20%20%22restart%3F%22%3A%22Inici%22%0A%20%20%7D%2C%0A%20%20help%5Fca%3A%0A%20%20%20%20%22Utilitzi%20el%20ratol%C3%AD%2C%20barra%20espaiadora%2C%20tecles%20Esq%2E%2FDta%2E%20%22%20%2B%0A%20%20%20%20%22o%20Re%20p%C3%A0g%20y%20Av%20p%C3%A0g%2E%20Usi%20S%20i%20B%20per%20canviar%20grand%C3%A0ria%20de%20font%2E%22%2C%0A%0A%20%20strings%5Fcs%3A%20%7B%0A%20%20%20%20%22slide%22%3A%22sn%C3%ADmek%22%2C%0A%20%20%20%20%22help%3F%22%3A%22n%C3%A1pov%C4%9Bda%22%2C%0A%20%20%20%20%22contents%3F%22%3A%22obsah%22%2C%0A%20%20%20%20%22table%20of%20contents%22%3A%22obsah%20prezentace%22%2C%0A%20%20%20%20%22Table%20of%20Contents%22%3A%22Obsah%20prezentace%22%2C%0A%20%20%20%20%22restart%20presentation%22%3A%22znovu%20spustit%20prezentaci%22%2C%0A%20%20%20%20%22restart%3F%22%3A%22restart%22%0A%20%20%7D%2C%0A%20%20help%5Fcs%3A%0A%20%20%20%20%22Prezentaci%20m%C5%AF%C5%BEete%20proch%C3%A1zet%20pomoc%C3%AD%20kliknut%C3%AD%20my%C5%A1i%2C%20mezern%C3%ADku%2C%20%22%20%2B%0A%20%20%20%20%22%C5%A1ipek%20vlevo%20a%20vpravo%20nebo%20kl%C3%A1ves%20PageUp%20a%20PageDown%2E%20P%C3%ADsmo%20se%20%22%20%2B%0A%20%20%20%20%22d%C3%A1%20zv%C4%9Bt%C5%A1it%20a%20zmen%C5%A1it%20pomoc%C3%AD%20kl%C3%A1ves%20B%20a%20S%2E%22%2C%0A%0A%20%20strings%5Fnl%3A%20%7B%0A%20%20%20%20%22slide%22%3A%22pagina%22%2C%0A%20%20%20%20%22help%3F%22%3A%22Help%3F%22%2C%0A%20%20%20%20%22contents%3F%22%3A%22Inhoud%3F%22%2C%0A%20%20%20%20%22table%20of%20contents%22%3A%22inhoudsopgave%22%2C%0A%20%20%20%20%22Table%20of%20Contents%22%3A%22Inhoudsopgave%22%2C%0A%20%20%20%20%22restart%20presentation%22%3A%22herstart%20presentatie%22%2C%0A%20%20%20%20%22restart%3F%22%3A%22Herstart%3F%22%0A%20%20%7D%2C%0A%20%20help%5Fnl%3A%0A%20%20%20%20%20%22Navigeer%20d%2Em%2Ev%2E%20het%20muis%2C%20spatiebar%2C%20Links%2FRechts%20toetsen%2C%20%22%20%2B%0A%20%20%20%20%20%22of%20PgUp%20en%20PgDn%2E%20Gebruik%20S%20en%20B%20om%20de%20karaktergrootte%20te%20veranderen%2E%22%2C%0A%0A%20%20strings%5Fde%3A%20%7B%0A%20%20%20%20%22slide%22%3A%22Seite%22%2C%0A%20%20%20%20%22help%3F%22%3A%22Hilfe%22%2C%0A%20%20%20%20%22contents%3F%22%3A%22%C3%9Cbersicht%22%2C%0A%20%20%20%20%22table%20of%20contents%22%3A%22Inhaltsverzeichnis%22%2C%0A%20%20%20%20%22Table%20of%20Contents%22%3A%22Inhaltsverzeichnis%22%2C%0A%20%20%20%20%22restart%20presentation%22%3A%22Pr%C3%A4sentation%20neu%20starten%22%2C%0A%20%20%20%20%22restart%3F%22%3A%22Neustart%22%0A%20%20%7D%2C%0A%20%20help%5Fde%3A%0A%20%20%20%20%22Benutzen%20Sie%20die%20Maus%2C%20Leerschlag%2C%20die%20Cursortasten%20links%2Frechts%20oder%20%22%20%2B%0A%20%20%20%20%22Page%20up%2FPage%20Down%20zum%20Wechseln%20der%20Seiten%20und%20S%20und%20B%20f%C3%BCr%20die%20Schriftgr%C3%B6sse%2E%22%2C%0A%0A%20%20strings%5Fpl%3A%20%7B%0A%20%20%20%20%22slide%22%3A%22slajd%22%2C%0A%20%20%20%20%22help%3F%22%3A%22pomoc%3F%22%2C%0A%20%20%20%20%22contents%3F%22%3A%22spis%20tre%C5%9Bci%3F%22%2C%0A%20%20%20%20%22table%20of%20contents%22%3A%22spis%20tre%C5%9Bci%22%2C%0A%20%20%20%20%22Table%20of%20Contents%22%3A%22Spis%20Tre%C5%9Bci%22%2C%0A%20%20%20%20%22restart%20presentation%22%3A%22Restartuj%20prezentacj%C4%99%22%2C%0A%20%20%20%20%22restart%3F%22%3A%22restart%3F%22%0A%20%20%7D%2C%0A%20%20help%5Fpl%3A%0A%20%20%20%20%22Zmieniaj%20slajdy%20klikaj%C4%85c%20mysz%C4%85%2C%20naciskaj%C4%85c%20spacj%C4%99%2C%20strza%C5%82ki%20lewo%2Fprawo%22%20%2B%0A%20%20%20%20%22lub%20PgUp%20%2F%20PgDn%2E%20U%C5%BCyj%20klawiszy%20S%20i%20B%2C%20aby%20zmieni%C4%87%20rozmiar%20czczionki%2E%22%2C%0A%0A%20%20strings%5Ffr%3A%20%7B%0A%20%20%20%20%22slide%22%3A%22page%22%2C%0A%20%20%20%20%22help%3F%22%3A%22Aide%22%2C%0A%20%20%20%20%22contents%3F%22%3A%22Index%22%2C%0A%20%20%20%20%22table%20of%20contents%22%3A%22table%20des%20mati%C3%A8res%22%2C%0A%20%20%20%20%22Table%20of%20Contents%22%3A%22Table%20des%20mati%C3%A8res%22%2C%0A%20%20%20%20%22restart%20presentation%22%3A%22Recommencer%20l%27expos%C3%A9%22%2C%0A%20%20%20%20%22restart%3F%22%3A%22D%C3%A9but%22%0A%20%20%7D%2C%0A%20%20help%5Ffr%3A%0A%20%20%20%20%22Naviguez%20avec%20la%20souris%2C%20la%20barre%20d%27espace%2C%20les%20fl%C3%A8ches%20%22%20%2B%0A%20%20%20%20%22gauche%2Fdroite%20ou%20les%20touches%20Pg%20Up%2C%20Pg%20Dn%2E%20Utilisez%20%22%20%2B%0A%20%20%20%20%22les%20touches%20S%20et%20B%20pour%20modifier%20la%20taille%20de%20la%20police%2E%22%2C%0A%0A%20%20strings%5Fhu%3A%20%7B%0A%20%20%20%20%22slide%22%3A%22oldal%22%2C%0A%20%20%20%20%22help%3F%22%3A%22seg%C3%ADts%C3%A9g%22%2C%0A%20%20%20%20%22contents%3F%22%3A%22tartalom%22%2C%0A%20%20%20%20%22table%20of%20contents%22%3A%22tartalomjegyz%C3%A9k%22%2C%0A%20%20%20%20%22Table%20of%20Contents%22%3A%22Tartalomjegyz%C3%A9k%22%2C%0A%20%20%20%20%22restart%20presentation%22%3A%22bemutat%C3%B3%20%C3%BAjraind%C3%ADt%C3%A1sa%22%2C%0A%20%20%20%20%22restart%3F%22%3A%22%C3%BAjraind%C3%ADt%C3%A1s%22%0A%20%20%7D%2C%0A%20%20help%5Fhu%3A%0A%20%20%20%20%22Az%20oldalak%20k%C3%B6zti%20l%C3%A9pked%C3%A9shez%20kattintson%20az%20eg%C3%A9rrel%2C%20vagy%20%22%20%2B%0A%20%20%20%20%22haszn%C3%A1lja%20a%20sz%C3%B3k%C3%B6z%2C%20a%20bal%2C%20vagy%20a%20jobb%20ny%C3%ADl%2C%20illetve%20a%20Page%20Down%2C%20%22%20%2B%0A%20%20%20%20%22Page%20Up%20billenty%C5%B1ket%2E%20Az%20S%20%C3%A9s%20a%20B%20billenty%C5%B1kkel%20v%C3%A1ltoztathatja%20%22%20%2B%0A%20%20%20%20%22a%20sz%C3%B6veg%20m%C3%A9ret%C3%A9t%2E%22%2C%0A%0A%20%20strings%5Fit%3A%20%7B%0A%20%20%20%20%22slide%22%3A%22pag%2E%22%2C%0A%20%20%20%20%22help%3F%22%3A%22Aiuto%22%2C%0A%20%20%20%20%22contents%3F%22%3A%22Indice%22%2C%0A%20%20%20%20%22table%20of%20contents%22%3A%22indice%22%2C%0A%20%20%20%20%22Table%20of%20Contents%22%3A%22Indice%22%2C%0A%20%20%20%20%22restart%20presentation%22%3A%22Ricominciare%20la%20presentazione%22%2C%0A%20%20%20%20%22restart%3F%22%3A%22Inizio%22%0A%20%20%7D%2C%0A%20%20help%5Fit%3A%0A%20%20%20%20%22Navigare%20con%20mouse%2C%20barra%20spazio%2C%20frecce%20sinistra%2Fdestra%20o%20%22%20%2B%0A%20%20%20%20%22PgUp%20e%20PgDn%2E%20Usare%20S%20e%20B%20per%20cambiare%20la%20dimensione%20dei%20caratteri%2E%22%2C%0A%0A%20%20strings%5Fel%3A%20%7B%0A%20%20%20%20%22slide%22%3A%22%CF%83%CE%B5%CE%BB%CE%AF%CE%B4%CE%B1%22%2C%0A%20%20%20%20%22help%3F%22%3A%22%CE%B2%CE%BF%CE%AE%CE%B8%CE%B5%CE%B9%CE%B1%3B%22%2C%0A%20%20%20%20%22contents%3F%22%3A%22%CF%80%CE%B5%CF%81%CE%B9%CE%B5%CF%87%CF%8C%CE%BC%CE%B5%CE%BD%CE%B1%3B%22%2C%0A%20%20%20%20%22table%20of%20contents%22%3A%22%CF%80%CE%AF%CE%BD%CE%B1%CE%BA%CE%B1%CF%82%20%CF%80%CE%B5%CF%81%CE%B9%CE%B5%CF%87%CE%BF%CE%BC%CE%AD%CE%BD%CF%89%CE%BD%22%2C%0A%20%20%20%20%22Table%20of%20Contents%22%3A%22%CE%A0%CE%AF%CE%BD%CE%B1%CE%BA%CE%B1%CF%82%20%CE%A0%CE%B5%CF%81%CE%B9%CE%B5%CF%87%CE%BF%CE%BC%CE%AD%CE%BD%CF%89%CE%BD%22%2C%0A%20%20%20%20%22restart%20presentation%22%3A%22%CE%B5%CF%80%CE%B1%CE%BD%CE%B5%CE%BA%CE%BA%CE%AF%CE%BD%CE%B7%CF%83%CE%B7%20%CF%80%CE%B1%CF%81%CE%BF%CF%85%CF%83%CE%AF%CE%B1%CF%83%CE%B7%CF%82%22%2C%0A%20%20%20%20%22restart%3F%22%3A%22%CE%B5%CF%80%CE%B1%CE%BD%CE%B5%CE%BA%CE%BA%CE%AF%CE%BD%CE%B7%CF%83%CE%B7%3B%22%0A%20%20%7D%2C%0A%20%20help%5Fel%3A%0A%20%20%20%20%22%CE%A0%CE%BB%CE%BF%CE%B7%CE%B3%CE%B7%CE%B8%CE%B5%CE%AF%CF%84%CE%B5%20%CE%BC%CE%B5%20%CF%84%CE%BF%20%CE%BA%CE%BB%CE%AF%CE%BA%20%CF%84%CE%BF%CF%85%20%CF%80%CE%BF%CE%BD%CF%84%CE%B9%CE%BA%CE%B9%CE%BF%CF%8D%2C%20%CF%84%CE%BF%20space%2C%20%CF%84%CE%B1%20%CE%B2%CE%AD%CE%BB%CE%B7%20%CE%B1%CF%81%CE%B9%CF%83%CF%84%CE%B5%CF%81%CE%AC%2F%CE%B4%CE%B5%CE%BE%CE%B9%CE%AC%2C%20%22%20%2B%0A%20%20%20%20%22%CE%AE%20Page%20Up%20%CE%BA%CE%B1%CE%B9%20Page%20Down%2E%20%CE%A7%CF%81%CE%B7%CF%83%CE%B9%CE%BC%CE%BF%CF%80%CE%BF%CE%B9%CE%AE%CF%83%CF%84%CE%B5%20%CF%84%CE%B1%20%CF%80%CE%BB%CE%AE%CE%BA%CF%84%CF%81%CE%B1%20S%20%CE%BA%CE%B1%CE%B9%20B%20%CE%B3%CE%B9%CE%B1%20%CE%BD%CE%B1%20%CE%B1%CE%BB%CE%BB%CE%AC%CE%BE%CE%B5%CF%84%CE%B5%20%22%20%2B%0A%20%20%20%20%22%CF%84%CE%BF%20%CE%BC%CE%AD%CE%B3%CE%B5%CE%B8%CE%BF%CF%82%20%CF%84%CE%B7%CF%82%20%CE%B3%CF%81%CE%B1%CE%BC%CE%BC%CE%B1%CF%84%CE%BF%CF%83%CE%B5%CE%B9%CF%81%CE%AC%CF%82%2E%22%2C%0A%0A%20%20strings%5Fja%3A%20%7B%0A%20%20%20%20%22slide%22%3A%22%E3%82%B9%E3%83%A9%E3%82%A4%E3%83%89%22%2C%0A%20%20%20%20%22help%3F%22%3A%22%E3%83%98%E3%83%AB%E3%83%97%22%2C%0A%20%20%20%20%22contents%3F%22%3A%22%E7%9B%AE%E6%AC%A1%22%2C%0A%20%20%20%20%22table%20of%20contents%22%3A%22%E7%9B%AE%E6%AC%A1%E3%82%92%E8%A1%A8%E7%A4%BA%22%2C%0A%20%20%20%20%22Table%20of%20Contents%22%3A%22%E7%9B%AE%E6%AC%A1%22%2C%0A%20%20%20%20%22restart%20presentation%22%3A%22%E6%9C%80%E5%88%9D%E3%81%8B%E3%82%89%E5%86%8D%E7%94%9F%22%2C%0A%20%20%20%20%22restart%3F%22%3A%22%E6%9C%80%E5%88%9D%E3%81%8B%E3%82%89%22%0A%20%20%7D%2C%0A%20%20help%5Fja%3A%0A%20%20%20%20%20%22%E3%83%9E%E3%82%A6%E3%82%B9%E5%B7%A6%E3%82%AF%E3%83%AA%E3%83%83%E3%82%AF%20%E3%83%BB%20%E3%82%B9%E3%83%9A%E3%83%BC%E3%82%B9%20%E3%83%BB%20%E5%B7%A6%E5%8F%B3%E3%82%AD%E3%83%BC%20%22%20%2B%0A%20%20%20%20%20%22%E3%81%BE%E3%81%9F%E3%81%AF%20Page%20Up%20%E3%83%BB%20Page%20Down%E3%81%A7%E6%93%8D%E4%BD%9C%EF%BC%8C%20S%20%E3%83%BB%20B%E3%81%A7%E3%83%95%E3%82%A9%E3%83%B3%E3%83%88%E3%82%B5%E3%82%A4%E3%82%BA%E5%A4%89%E6%9B%B4%22%2C%0A%0A%20%20strings%5Fzh%3A%20%7B%0A%20%20%20%20%22slide%22%3A%22%E5%B9%BB%E7%81%AF%E7%89%87%22%2C%0A%20%20%20%20%22help%3F%22%3A%22%E5%B8%AE%E5%8A%A9%3F%22%2C%0A%20%20%20%20%22contents%3F%22%3A%22%E5%86%85%E5%AE%B9%3F%22%2C%0A%20%20%20%20%22table%20of%20contents%22%3A%22%E7%9B%AE%E5%BD%95%22%2C%0A%20%20%20%20%22Table%20of%20Contents%22%3A%22%E7%9B%AE%E5%BD%95%22%2C%0A%20%20%20%20%22restart%20presentation%22%3A%22%E9%87%8D%E6%96%B0%E5%90%AF%E5%8A%A8%E5%B1%95%E7%A4%BA%22%2C%0A%20%20%20%20%22restart%3F%22%3A%22%E9%87%8D%E6%96%B0%E5%90%AF%E5%8A%A8%3F%22%0A%20%20%7D%2C%0A%20%20help%5Fzh%3A%0A%20%20%20%20%22%E7%94%A8%E9%BC%A0%E6%A0%87%E7%82%B9%E5%87%BB%2C%20%E7%A9%BA%E6%A0%BC%E6%9D%A1%2C%20%E5%B7%A6%E5%8F%B3%E7%AE%AD%E5%A4%B4%2C%20Pg%20Up%20%E5%92%8C%20Pg%20Dn%20%E5%AF%BC%E8%88%AA%2E%20%22%20%2B%0A%20%20%20%20%22%E7%94%A8%20S%2C%20B%20%E6%94%B9%E5%8F%98%E5%AD%97%E4%BD%93%E5%A4%A7%E5%B0%8F%2E%22%2C%0A%0A%20%20strings%5Fru%3A%20%7B%0A%20%20%20%20%22slide%22%3A%22%D1%81%D0%BB%D0%B0%D0%B9%D0%B4%22%2C%0A%20%20%20%20%22help%3F%22%3A%22%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%3F%22%2C%0A%20%20%20%20%22contents%3F%22%3A%22%D1%81%D0%BE%D0%B4%D0%B5%D1%80%D0%B6%D0%B0%D0%BD%D0%B8%D0%B5%3F%22%2C%0A%20%20%20%20%22table%20of%20contents%22%3A%22%D0%BE%D0%B3%D0%BB%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%22%2C%0A%20%20%20%20%22Table%20of%20Contents%22%3A%22%D0%9E%D0%B3%D0%BB%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%22%2C%0A%20%20%20%20%22restart%20presentation%22%3A%22%D0%BF%D0%B5%D1%80%D0%B5%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D1%82%D0%B8%D1%82%D1%8C%20%D0%BF%D1%80%D0%B5%D0%B7%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D1%8E%22%2C%0A%20%20%20%20%22restart%3F%22%3A%22%D0%BF%D0%B5%D1%80%D0%B5%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA%3F%22%0A%20%20%7D%2C%0A%20%20help%5Fru%3A%0A%20%20%20%20%22%D0%9F%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D1%89%D0%B0%D0%B9%D1%82%D0%B5%D1%81%D1%8C%20%D0%BA%D0%BB%D0%B8%D0%BA%D0%B0%D1%8F%20%D0%BC%D1%8B%D1%88%D0%BA%D0%BE%D0%B9%2C%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D1%83%D1%8F%20%D0%BA%D0%BB%D0%B0%D0%B2%D0%B8%D1%88%D1%83%20%D0%BF%D1%80%D0%BE%D0%B1%D0%B5%D0%BB%2C%20%D1%81%D1%82%D1%80%D0%B5%D0%BB%D0%BA%D0%B8%22%20%2B%0A%20%20%20%20%22%D0%B2%D0%BB%D0%B5%D0%B2%D0%BE%2F%D0%B2%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%20%D0%B8%D0%BB%D0%B8%20Pg%20Up%20%D0%B8%20Pg%20Dn%2E%20%D0%9A%D0%BB%D0%B0%D0%B2%D0%B8%D1%88%D0%B8%20S%20%D0%B8%20B%20%D0%BC%D0%B5%D0%BD%D1%8F%D1%8E%D1%82%20%D1%80%D0%B0%D0%B7%D0%BC%D0%B5%D1%80%20%D1%88%D1%80%D0%B8%D1%84%D1%82%D0%B0%2E%22%2C%0A%0A%20%20strings%5Fsv%3A%20%7B%0A%20%20%20%20%22slide%22%3A%22sida%22%2C%0A%20%20%20%20%22help%3F%22%3A%22hj%C3%A4lp%22%2C%0A%20%20%20%20%22contents%3F%22%3A%22inneh%C3%A5ll%22%2C%0A%20%20%20%20%22table%20of%20contents%22%3A%22inneh%C3%A5llsf%C3%B6rteckning%22%2C%0A%20%20%20%20%22Table%20of%20Contents%22%3A%22Inneh%C3%A5llsf%C3%B6rteckning%22%2C%0A%20%20%20%20%22restart%20presentation%22%3A%22visa%20presentationen%20fr%C3%A5n%20b%C3%B6rjan%22%2C%0A%20%20%20%20%22restart%3F%22%3A%22b%C3%B6rja%20om%22%0A%20%20%7D%2C%0A%20%20help%5Fsv%3A%0A%20%20%20%20%22Bl%C3%A4ddra%20med%20ett%20klick%20med%20v%C3%A4nstra%20musknappen%2C%20mellanslagstangenten%2C%20%22%20%2B%0A%20%20%20%20%22v%C3%A4nster%2D%20och%20h%C3%B6gerpiltangenterna%20eller%20tangenterna%20Pg%20Up%2C%20Pg%20Dn%2E%20%22%20%2B%0A%20%20%20%20%22Anv%C3%A4nd%20tangenterna%20S%20och%20B%20f%C3%B6r%20att%20%C3%A4ndra%20textens%20storlek%2E%22%2C%0A%0A%20%20strings%3A%20%7B%20%7D%2C%0A%0A%20%20localize%3A%20function%20%28src%29%20%7B%0A%20%20%20%20if%20%28src%20%3D%3D%20%22%22%29%0A%20%20%20%20%20%20return%20src%3B%0A%0A%20%20%20%20%20%2F%2F%20try%20full%20language%20code%2C%20e%2Eg%2E%20en%2DUS%0A%20%20%20%20%20var%20s%2C%20lookup%20%3D%20w3c%5Fslidy%2Estrings%5Bw3c%5Fslidy%2Elang%5D%3B%0A%0A%20%20%20%20%20if%20%28lookup%29%0A%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20s%20%3D%20lookup%5Bsrc%5D%3B%0A%0A%20%20%20%20%20%20%20if%20%28s%29%0A%20%20%20%20%20%20%20%20return%20s%3B%0A%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%2F%2F%20strip%20country%20code%20suffix%2C%20e%2Eg%2E%0A%20%20%20%20%20%2F%2F%20try%20en%20if%20undefined%20for%20en%2DUS%0A%20%20%20%20%20var%20lg%20%3D%20w3c%5Fslidy%2Elang%2Esplit%28%22%2D%22%29%3B%0A%0A%20%20%20%20%20if%20%28lg%2Elength%20%3E%201%29%0A%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20lookup%20%3D%20w3c%5Fslidy%2Estrings%5Blg%5B0%5D%5D%3B%0A%0A%20%20%20%20%20%20%20if%20%28lookup%29%0A%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20s%20%3D%20lookup%5Bsrc%5D%3B%0A%0A%20%20%20%20%20%20%20%20%20if%20%28s%29%0A%20%20%20%20%20%20%20%20%20%20return%20s%3B%0A%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%2F%2F%20otherwise%20string%20as%20is%0A%20%20%20%20%20return%20src%3B%0A%20%20%7D%2C%0A%0A%20%20init%5Flocalization%3A%20function%20%28%29%20%7B%0A%20%20%20%20var%20i18n%20%3D%20w3c%5Fslidy%3B%0A%20%20%20%20var%20help%5Ftext%20%3D%20w3c%5Fslidy%2Ehelp%5Ftext%3B%0A%0A%20%20%20%20%2F%2F%20each%20such%20language%20array%20is%20declared%20in%20the%20localize%20array%0A%20%20%20%20%2F%2F%20this%20is%20used%20as%20in%20%20w3c%5Fslidy%2Elocalize%28%22foo%22%29%3B%0A%20%20%20%20this%2Estrings%20%3D%20%7B%0A%20%20%20%20%20%20%22es%22%3Athis%2Estrings%5Fes%2C%0A%20%20%20%20%20%20%22ca%22%3Athis%2Estrings%5Fca%2C%0A%20%20%20%20%20%20%22cs%22%3Athis%2Estrings%5Fcs%2C%0A%20%20%20%20%20%20%22nl%22%3Athis%2Estrings%5Fnl%2C%0A%20%20%20%20%20%20%22de%22%3Athis%2Estrings%5Fde%2C%0A%20%20%20%20%20%20%22pl%22%3Athis%2Estrings%5Fpl%2C%0A%20%20%20%20%20%20%22fr%22%3Athis%2Estrings%5Ffr%2C%0A%20%20%20%20%20%20%22hu%22%3Athis%2Estrings%5Fhu%2C%0A%20%20%20%20%20%20%22it%22%3Athis%2Estrings%5Fit%2C%0A%20%20%20%20%20%20%22el%22%3Athis%2Estrings%5Fel%2C%0A%20%20%20%20%20%20%22jp%22%3Athis%2Estrings%5Fja%2C%0A%20%20%20%20%20%20%22zh%22%3Athis%2Estrings%5Fzh%2C%0A%20%20%20%20%20%20%22ru%22%3Athis%2Estrings%5Fru%2C%0A%20%20%20%20%20%20%22sv%22%3Athis%2Estrings%5Fsv%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20i18n%2Estrings%5Fes%5Bhelp%5Ftext%5D%20%3D%20i18n%2Ehelp%5Fes%3B%0A%20%20%20%20i18n%2Estrings%5Fca%5Bhelp%5Ftext%5D%20%3D%20i18n%2Ehelp%5Fca%3B%0A%20%20%20%20i18n%2Estrings%5Fcs%5Bhelp%5Ftext%5D%20%3D%20i18n%2Ehelp%5Fcs%3B%0A%20%20%20%20i18n%2Estrings%5Fnl%5Bhelp%5Ftext%5D%20%3D%20i18n%2Ehelp%5Fnl%3B%0A%20%20%20%20i18n%2Estrings%5Fde%5Bhelp%5Ftext%5D%20%3D%20i18n%2Ehelp%5Fde%3B%0A%20%20%20%20i18n%2Estrings%5Fpl%5Bhelp%5Ftext%5D%20%3D%20i18n%2Ehelp%5Fpl%3B%0A%20%20%20%20i18n%2Estrings%5Ffr%5Bhelp%5Ftext%5D%20%3D%20i18n%2Ehelp%5Ffr%3B%0A%20%20%20%20i18n%2Estrings%5Fhu%5Bhelp%5Ftext%5D%20%3D%20i18n%2Ehelp%5Fhu%3B%0A%20%20%20%20i18n%2Estrings%5Fit%5Bhelp%5Ftext%5D%20%3D%20i18n%2Ehelp%5Fit%3B%0A%20%20%20%20i18n%2Estrings%5Fel%5Bhelp%5Ftext%5D%20%3D%20i18n%2Ehelp%5Fel%3B%0A%20%20%20%20i18n%2Estrings%5Fja%5Bhelp%5Ftext%5D%20%3D%20i18n%2Ehelp%5Fja%3B%0A%20%20%20%20i18n%2Estrings%5Fzh%5Bhelp%5Ftext%5D%20%3D%20i18n%2Ehelp%5Fzh%3B%0A%20%20%20%20i18n%2Estrings%5Fru%5Bhelp%5Ftext%5D%20%3D%20i18n%2Ehelp%5Fru%3B%0A%20%20%20%20i18n%2Estrings%5Fsv%5Bhelp%5Ftext%5D%20%3D%20i18n%2Ehelp%5Fsv%3B%0A%0A%20%20%20%20w3c%5Fslidy%2Elang%20%3D%20document%2Ebody%2EparentNode%2EgetAttribute%28%22lang%22%29%3B%0A%0A%20%20%20%20if%20%28%21w3c%5Fslidy%2Elang%29%0A%20%20%20%20%20%20w3c%5Fslidy%2Elang%20%3D%20document%2Ebody%2EparentNode%2EgetAttribute%28%22xml%3Alang%22%29%3B%0A%0A%20%20%20%20if%20%28%21w3c%5Fslidy%2Elang%29%0A%20%20%20%20%20%20w3c%5Fslidy%2Elang%20%3D%20%22en%22%3B%0A%20%20%7D%0A%7D%3B%0A%0A%2F%2F%20hack%20for%20back%20button%20behavior%0Aif%20%28w3c%5Fslidy%2Eie6%20%7C%7C%20w3c%5Fslidy%2Eie7%29%0A%7B%0A%20%20document%2Ewrite%28%22%3Ciframe%20id%3D%27historyFrame%27%20%22%20%2B%0A%20%20%22src%3D%27javascript%3A%5C%22%3Chtml%22%2B%22%3E%3C%2F%22%2B%22html%3E%5C%22%27%20%22%20%2B%0A%20%20%22height%3D%271%27%20width%3D%271%27%20%22%20%2B%0A%20%20%22style%3D%27position%3Aabsolute%3Bleft%3A%2D800px%27%3E%3C%2Fiframe%3E%22%29%3B%0A%7D%0A%0A%2F%2F%20attach%20event%20listeners%20for%20initialization%0Aw3c%5Fslidy%2Eset%5Fup%28%29%3B%0A%0A%2F%2F%20hide%20the%20slides%20as%20soon%20as%20body%20element%20is%20available%0A%2F%2F%20to%20reduce%20annoying%20screen%20mess%20before%20the%20onload%20event%0AsetTimeout%28w3c%5Fslidy%2Ehide%5Fslides%2C%2050%29%3B%0A%0A" charset="utf-8" type="text/javascript"></script>
</head>
<body>
<div class="slide titlepage">
  <h1 class="title">Tomo</h1>
  <p class="subtitle">The Language of Tomorrow</p>
  <p class="author">
Bruce Hill
  </p>
</div>
<div id="whirlwind-overview" class="slide section level1">
<h1>Whirlwind Overview</h1>
<p>Tomo is:</p>
<ul>
<li>Statically typed</li>
<li>Imperative (mostly)</li>
<li>Cross-compiled to C</li>
<li>Garbage collected</li>
</ul>
<div class="sourceCode" id="cb1"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb1-1"><a href="#cb1-1" tabindex="-1"></a><span class="kw">func</span> sing_bottles<span class="op">(</span>num_bottles<span class="op">:</span><span class="dt">Int</span><span class="op">)</span></span>
<span id="cb1-2"><a href="#cb1-2" tabindex="-1"></a>    <span class="cf">for</span> n <span class="cf">in</span> num_bottles<span class="op">.</span>to<span class="op">(</span><span class="dv">1</span><span class="op">)</span></span>
<span id="cb1-3"><a href="#cb1-3" tabindex="-1"></a>        <span class="cf">if</span> n <span class="op">==</span> <span class="dv">1</span></span>
<span id="cb1-4"><a href="#cb1-4" tabindex="-1"></a>            <span class="bu">say</span><span class="op">(</span><span class="st">&quot;One bottle of beer on the wall&quot;</span><span class="op">)</span></span>
<span id="cb1-5"><a href="#cb1-5" tabindex="-1"></a>        <span class="cf">else</span></span>
<span id="cb1-6"><a href="#cb1-6" tabindex="-1"></a>            <span class="bu">say</span><span class="op">(</span><span class="st">&quot;</span><span class="op">$</span><span class="va">n</span><span class="st"> bottles of beer on the wall&quot;</span><span class="op">)</span></span>
<span id="cb1-7"><a href="#cb1-7" tabindex="-1"></a></span>
<span id="cb1-8"><a href="#cb1-8" tabindex="-1"></a>    <span class="bu">say</span><span class="op">(</span><span class="st">&quot;No more bottles of beer on the wall!&quot;</span><span class="op">)</span></span>
<span id="cb1-9"><a href="#cb1-9" tabindex="-1"></a></span>
<span id="cb1-10"><a href="#cb1-10" tabindex="-1"></a><span class="kw">func</span> main<span class="op">(</span>n<span class="op">=</span><span class="dv">99</span><span class="op">)</span></span>
<span id="cb1-11"><a href="#cb1-11" tabindex="-1"></a>    sing_bottles<span class="op">(</span>n<span class="op">)</span></span></code></pre></div>
</div>
<div id="website" class="slide section level1">
<h1>Website</h1>
<p>While I’m going through this talk, feel free to check out the website:</p>
<p><a href="https://tomo.bruce-hill.com" target="_blank" rel="noreferrer">tomo.bruce-hill.com</a></p>
<p>And try running some code in the online sandbox:</p>
<p><a href="https://sandbox.bruce-hill.com" target="_blank" rel="noreferrer">sandbox.bruce-hill.com</a></p>
<p>(But be gentle, it’s actually invoking the compiler on my webserver, not
running locally in your browser)</p>
</div>
<div id="backstory" class="slide section level1">
<h1>Backstory</h1>
<ul>
<li>Not my first language (<a href="nomsu.org">nomsu.org</a>)</li>
<li>Making languages is fun!</li>
<li>Had a lot of free time in 2020–2022 for some reason</li>
<li>Went through a lot of complete rewrites and redesigns</li>
</ul>
<p>Tomo grew out of my desire for a language that has the best traits of the
languages I like:</p>
<ul>
<li>Fast and simple (low-level like C)</li>
<li>Ergonomic and readable (like Python)</li>
<li>Type safety without an elaborate type system (like Go)</li>
</ul>
<p>I don’t think there is such a thing as a perfect language, but I think
there’s room for a new balance of those values.</p>
</div>
<div id="in-a-nutshell" class="slide section level1">
<h1>In a Nutshell</h1>
<p>Basically, Tomo is in the same ballpark as C# or Go—it’s fast and compiled
and has type safety and automatic memory management, but I think Tomo has a lot
of improvements over Go and C#:</p>
<ul>
<li>Safer</li>
<li>More ergonomic</li>
<li>Faster compile times</li>
<li>More consistent semantics</li>
<li>Excellent Unicode support</li>
<li>Some neat built-in features</li>
</ul>
</div>
<div id="good-compiler-errors" class="slide section level1">
<h1>Good Compiler Errors</h1>
<p>Tomo <em>cares</em> about having useful error messages!</p>
<p><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABEsAAADHCAYAAADh5d3LAAAgAElEQVR4nOzdd3zbV73/8deR5L137CSOs+PsNDstnUn3AnqBXiiUUXYpFMq9LYVSCr3wY5VSyoYWWlYpo3uEJm2Tpmn2crZH7DhxbMd7Szq/PyzbcuIktixLdvJ+Ph55PGJJX33P95zvOOejM8zksaMsIiIiIiIiIiICgCPcCRARERERERERGU4ULBERERERERER8aNgiYiIiIiIiIiIHwVLRERERERERET8KFgiIiIiIiIiIuJHwRIRERERERERET8KloiIiIiIiIiI+FGwRERERERERETEj4IlIiIiIiIiIiJ+FCwREREREREREfHj6u8Hd33klqFMh4iIiIiIiIjIkJnx+B/7/Vn1LBERERERERER8dPvniUiIiIiItJPtp3yumaaADDExSaSE2nCnCgREekvBUtERERERILMtpfywHNv8YYHwMEFy97LLyZHo3CJiMjIoGBJuHjLue+p1/h7qz3pLRM5gUfedz4XO8OQLpEh1cpTrz7NN8u9AETlXsCaS8YTG+ZUDWvew9z7t1X8s80CDmbNv44/zUzUGErPIe76y+u84AZwsGjxu/nttFjly7Ci633AdF7LWchdsYGrXt5DuQVMEp+85jruSFPISORkem4ONwqWyIC4a0v4TXEtHgATz4XTJzIrItypOh0ve7e/zM1bqmgDwMHcBdfzxxkJQah89r6hnUpE1kJevGIa2eGqF/SqfJ+Og/mLbuCx/PhzsmLeXraWi/5TSD0QNfZ8Xr90Agln2GbkXQ8yEuk8G9lUfiObym9kU/kFQRjrkSq/QTrNj/N9Gx494IZTuStYEi4mirzMLBa2dZ68rc3H2dXQwemb3eHnri3mV9sOdQYeHFmkTJrArIjh++uAp24vD+7sCpSIBNdIux5kZNJ5NrKp/EY2ld/IpvIb2VR+56bhVO4KloSLSeOjl6zgowBYina+xI2bqoZ9sGREsY38Y8N2NneEOyEiIiJyrjFRE/n5hyaGOxkiIhIgBUvkLGWpKNrEw+XtoQlAOTL4zPJFLI/q462IODLCGQR3ZvOlq6/l49YClpJ9a7hrbz0ewESO5Z4VsznPAWCIjdPYeBERERHxUT1y5HJkcvvV13Ort2sYjqVoz+t8cU9X+eVy35VzWdBdaIbYmChNQu0n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RETObqr3iIjISDXj8T/2+7PnZIxSRERERERERORUFCwREREREREREfGjYImIiIiIiIiIiB8FS0RERERERERE/GiCVxERERERERE56w1kgtd+B0tERERERERERM4FGoYjIiIiIiIiIuJHwRIRERERERERET8KloiIiIiIiIiI+FGwREREROj9RYkAACAASURBVERERETEj4IlIiIiIiIiIiJ+FCwREREREREREfGjYImIiIiIiIiIiB8FS0RERERERERE/ChYIiIiIiIiIiLiR8ESERERERERERE/CpaIiIiIiIiIiPhRsERERERERERExI+CJSIiIiIiIiIifhQsERERERERERHxo2CJiIiIiIiIiIgfBUtERERERERERPwoWCIiIiIiIiIi4kfBEhERERERERERPwqWiIiIiIiIiIj4UbBERERERERERMSPgiUiIiIiIiIiIn4ULBERERERERER8aNgiYiIiIiIiIiIHwVLRERERERERET8KFgiIiIiIiIiIuJHwRIRERERERERET8KloiIiIiIiIiI+FGwRERERERERETEj4IlIiIiIiIiIiJ+FCwREREREREREfGjYImIiIiIiIiIiB8FS0RERERERERE/LjCnYARz2X41o8N70s8+S3bYvns5y2r3KFPloiIiIiIiIgERsGSc5RrtOG2ReAE8MIbr1i2t4Q7VSIiIiIiIiLhp2DJYFlL8QHYENv5Z1SaYWbG8B/f5BoDn77REAXgttS8iYIlIiIiIiIiIihYMnge+N1PLL/z/Tn+Gnj2fWbYB0tEREREREREpG9q04uIiIiIiIiI+AmsZ4kTZi8zfHiZYX4upEVDSwMcOGh58TXL33dBa9dnDSy/zcFPzvfNj2Hh3z/18r+bwPpS8KX7HXxyDBg6J0X9zjctTxzt3DwyCS5eYrhkOswca8hJhGgntDXD4cOWt96xPLYajnRNohpjePSnhksjYOvTlj8nw+3LDIn1lqf+bHmk3PCVTxhuGA/tlZa//sny0x3gBVxTDa/8ryHHAXjhl/d7+Uea4c7rDEtHg2mCLRstD//TsrMp0CwfZH4Owo1fdPDdeX284TJ8/ceGr/u9dGSllxV/BPcg8lNERERERERkJBpwsMTEwW2fd3DHdF/wwycyBeYvMMyfb3j3q5bP/MlyzAIW/vNny7P5hhtTAQNX3WD4/VbL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" /></p>
</div>
<div id="good-runtime-errors" class="slide section level1">
<h1>Good Runtime Errors</h1>
<p>Not just compiler errors, but also runtime errors:</p>
<p><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAvAAAAJmCAYAAAA6mbQkAAAgAElEQVR4nOzdd5xU1f3/8de5M7O9F7ZRFliW3kERlSIqlhANYpQY8osaa2I00SQaa/JNsSTWqLFr7Bp7V4IFG4KAgPSF3QW297475f7+2GUL7MLusrA78H4+Hjx0Zu6Ze+6ZMzufe+7nnGuGDUi0ERERERERv2D1dgVERERERKTzFMCLiIiIiPgRBfAiIiIiIn5EAbyIiIiIiB9RAC8iIiIi4kcUwIuIiIiI+BEF8CIiIiIifkQBvIiIiIiIH1EALyIiIiLiRxTAi4iIiIj4EQXwIiIiIiJ+RAG8iIiIiIgfUQAvIiIiIuJHFMCLiIiIiPgRBfAiIiIiIn5EAbyIiIiIiB9xdnbDzRPHHsx6iIiIiIj0iPRVa3u7CgeVRuBFRERERPyIAngRERERET+iAF5ERERExI8ogBcRERER8SOdnsQqInJ48fHWtvVcXW7vd8vAyAEsGxJFCNBQls2U7eXUtXrdAC7LSWJQEFMiovlpfCRjnKbNe3S3XOv6bikt5KGicr6saaDUNkQEBDIlMoZfJEQzscf3JyIifZVG4EVEDpANNPg8ZNdU8WreDs7emMmTtb4eLOfhs50ZnJ1ZwJtV9RT5bLy2j9L6Wj4q2MV5m3bwWv3+T0S6W08REelbNAIvIke8wMgUPhoYQWAHrxvLQcheT4Zxy6hBnOU0gE2Np57VZcXcmVfKJncVt2cWMGF4IhP2HCbpRrnislyuLayjBgdj4pK4JSGS4U4fWZXF/H1HAV82lPOn7BAmpsWRuueAenfrKSIifZb+ZIuIGAdRTifRHfyLstpPM3FaFoGWIdCyiA4IZna//jzeP4IowFNXyn+r2x8V71I5u57/5pdTDIRHJHLfgGjGBVgEWk7SIxO4e2A0SUBNVRFPVfXA/kREpM9TAC8i0oPiIyOYaAC8bKl109kElY7KeRsqWFxrY+NgRmwUKXuUiwyP4bRAA7hZUl6D+yDXU0REep8CeBGRHmWa/7C6bZvOj223X662pobNNmCCmBTSzp/spucNUFhdw65O77C79RQRkd52CHLgbWq8Purtzv48GFyWgzBL5VRO5VRuf+U6ufkhVFVdxTobwNA/wIXjgMrZ5NS7cQPGCiDF1V5JQ1KgCwsvvoYGdgCpB7Ge7fOX/qJyKqdy/leuk5sfYQ5+AG9XcvP3Wbzh7WwBw7T+w3kyrlblVE7lVG7f5eJdPXIZsb4sm3GrOt7X3NRR3Be97z01eBvYWFHKXbvKKAAcrkjmR+y/dvsrV+bxYAOWw0FUB/WLcjqwALfXQ6kP9hWNd7ee+6S/8yqncip3sMr10N/5w41WoRER6Q67ihvWruWGdl5yusL4VWoSM9sLpLtYrs7nwwaMZQjooCoBxtA4zdZH3Z6DW92tp4iI9Flm2IDETl3L2Dxx7MGui4jIIdRyI6fAyP4sGdTxMpIuy0Fw00I07d0gaTeDg1FxSdyWHE36HkFx98rZfJa9gYuLvZigeF4ekciYdhbEKSzazuwdVTSYMP4yZjA/dna/niIih4P0VWt7uwoHlUbgRUSMRbjDQVCXyrSsr27jJa+6nPt35vFmUS43uQJ5NDGEsB4oF2RZGLzgs2nooCoNzZNQLYL2sQ58l+opIiJ91iGZxFrp8e59WXcfAhxOIi2VUzmVU7n9lev89gdD4/rqAE5Sw2O5dQjkb8phWd5O7g1L448dzL7qSrkopwODG6/XS1m772ZT7vHiAyyHk/ZS9btbz87zl/6iciqncv5XrvPbH0kOySTWP6/v3mQHlVM5lVO5fZbrY5ObHIExXBNXzDn59byQU8JPhrVzZ9QulTMkBwbgog6Pr4Fdbtg7Eb5xpRof4AgIYMBBrGeH9Hde5VRO5Q5WuT72d76vUJuIiPQYw5j4OI61oK66iEcrO3t7pI7LBYeEMMwAdh2ratp5P7uO1TWNE13jQ0NI6VQg3t16iohIX6BJrCJyhGo1iTVqIMsHR3YqB755cmirCaN7vu8n2Zu5tNhNQFgy7wyLZcABlMOu58HNW7i7xiY8IoW3hsaQ1KpUZcUu5mWUkIOLn6Slc0u4dUD1FBE5HBzuk1g1Ai8iYnsp83go7eBfmdeHp9NvZnFcXDRpBuqqinii06PbHZQzgSzoF0EMUFGRxxU7y1jn9tHg87ClvICrskvJBYJD4/hZl3LZu1tPERHpbVqFRkSOePXlu5ixdleHr1uuWJ4cncy0TuaJO0NiWBhWxJ8rG3i9oIyLwmOI7Wa5JCA+Opm/VdVxZVE9awp3ML9wj3KuCG4cFMuQLuaxd7Q/ERHp2zQCLyLS41zMi2scNa+qLOLp6s4uu9BROSezBwzlpdR+nB4aSKxlsIxFZEAwc+JTeGb4QBYEdmcWanfrKSIivUk58CIiIiJyWFEOvIiIiIiI9BkK4EVERERE/IgCeBERERERP6IAXkRERETEjyiAFxERERHxI51ehUZERERERHqfRuBFRERERPyIAngRERERET+iAF5ERERExI8ogBcRERER8SMK4EVERERE/IgCeBERERERP6IAXkRERETEjyiAFxERERHxIwrgRURERET8iAJ4ERERERE/ogBeRERERMSPKIAXEREREfEjCuBFRERERPyIAngRERERET+iAF5ERERExI8ogBcRERER8SMK4EVERERE/IgCeBERERERP6IAXkRERETEjyiAFxERERHxIwrgRURERET8iAJ4ERERERE/ogBeRERERMSPKIAXEREREfEjCuBFRERERPyIAngRERERET+iAF5ERERExI8ogBcRERER8SMK4EVERERE/IgCeBERERERP+Ls7QoclixIToJQ0/iwugRyanq3Sn2CFUrSoDhCLAAfNQW7yK309XatRERERPyKAviDwAQbbv6zYWZT6y593MfFn4Ldu9XqdSZsGtc+82uOdQG4+fIvF3Llm+VHfLuIiIiIdIUC+MOIa6DhuZsMY12w4yMf856Buna2cyQZnv0/wwQX7PzEZv6TNhWKoqU1xyiuPf9Kzggxe71kN3zN7x95nM+9vVAvERER6WIAHzCNv350LXOD9/5Rb8vDqjsv45IXClCCxCFiwTnnGca4wK63efL99oN3AG+ezcPLDP86DlKON1zyuc0dWw5pbUUOCmfsFBalJeEAsIv5cvVXrG/oY2enjliOGjuXBcNHMTo6mginTXV1AZt3ruKNlYtZUlyrq1IiIrJPGoE/TEROMFw8HAxQ9C28VbyPjW347CObbdMNaQ5YeJbhhdtsdihqkN3sanbkbWZVYOPJemD4QEZGBLG/U/fe5oydws+PnkQAgG8zZRu+Yn1Db9eqhQkcxi/O+CXnJ4a0acvI8P5MHdmfKelHMf3Du/nrlmINfoiISIcUwB8EdrXNJRcewmjYgrNON8QbwAfvf7r/lBhPts1r2w3XDIWQ4YZF6TZ/23Rwq2lX/I8rj/3fwd2J9AxfFs++/U+eBcBi4JRreXZ6qv5gHBAX44/+f/y/VsG77aujyuMgNMCFBRhHAqeecA4rdj3IezU6oxYRkfZ17ffYvYZ/XfgbnrIALAbOv4a/zk/GAdiVy7jjiudZ7QGwqS0o0QjSIeIaYjhnSOPou7fI5p2tnSjkg/e/trlyqCHAgjPmGP61WbnwIgeNNYQ5afGN6T14yV7/BL/7dDnZbgdx/U/nL6efxvhAgwkcxZzUUN5fX6VUGhERaVfXAni7htyt28kFwIFd3HJt2vZVsWvLdja72ynXJnfew4o7LuPGbcdyxeWncfzwGFzV+az9+A3u+deHbKw6wJ+sYMMD9xlOcMHqV2yej4IrphsiKmxeft7mXzmGa35hOGMwNBTavPiczX1raT7ZCIiEWdMMs0fBmAGG5AgIckB9DezaZfPlNzZPfgK5nra7jZttWPJz03jpfg8drkLjNPzzAcPpgY0Plz3t43c7DdecbZg1CALqYPVym9tfsllf2/EhT5pu6N+0on/BWpvvPR1v21reGthwLox3QMQ4mB0Gb1R2rmznGGLn/4m3rh3fTrvsYxWaQ9lfWrPCGTXiRM4ZMY7xcfHEBEBtbTHbc9fzv7WLeXNHMfXNG4cz4+Qb+PuI6KabKZTz3ju38H8Z1Y3H4xjEpedey89iHRjAbtjIXS/czctljT3NFTKI49KncOzANEbGJpAYEkyQBfX15eSWbGf5ls94ft0G8ndPFA2cxu2/uIDjHV7WffUAr4bO5RcjUgmv3cqbS5/msZIhXH7ifE5NCMddsYnXPvsPj2aV4wOcKefy8vwTSDSAnctTL/6dd8LncumUaUyNjcDU5bM242Me+fpzNtT3Vnt2VwinzruDmwa72tl/Olef/xBXNz/hI3/NXSz4ZBOeA2jPbnNFk7B7/pB3Cy9+tZxstw14KNr5Lk9vm8m4kWEYHMSFRmBQAC8iIu3rlSviASPO5q4rTmJEUNOPWUAKU+dfxn2xDZz3h48p6KGh+0FzDH+JAhdAsOGCSw2Ti2B8/8bRapINl1wM635v87+mAHnKmRZ3n7D3Ha5CwmDYcMOw4YYfTrJZdKfN1k4Gyp0VmGr49zmGUbujXRdMO8HwaBTMv9cmr71fcwfMGkvTqB6s2gCdTfn1FtqsKDKMT2hc+nLWSJs3vjnw4+hph6K/mMAhLDrtci4ZENHms3eFJjE+LYnxadM5bfWj/G7pWopsgEqWLn2eD/pfyqlhFhDJiUfN5vntb7PFZ4gfPo/5TcE71LHq6+d4tWx3RZ1MOPpX/HVs5F455cFBMQxJjmFI8iTmDnmRy99cwvY2q71Y9B///7guJKKxXweM4idzL2d8RSKjY12N7xc9lp+ffBYbn3qcz/bqDIbYYT/jvklTSNi987D+HDN+EROSYrnq1TdY0wOTPrvenr3lQNszgjPPvJU/DGz6U2rv4vHn/49HitrplJ4aKj00flmNA2ebPzIWTmv3EzblddUK3kVEpEO9cCdWB6NOmcPwQC81VfV4m3+lDNHH/YgfpTn2VbhLoqOgMMPm+7LG0W8TBBNSIHOjzdbqxuescMNxg/cu662H7J02y9favPeNzVfZNI8WRo82XD2NNsGXuwxWbLRZvtFm+RYo68av75hjDCMDoKYWWsdsMRMMZw9ov4wVZ5gY2/TAY7M2qws79MLarJYrA+PTe/6Mzl24ndUr17Fy5TpWfreT8i4H24egv5gYTjnpl1zaHGz6qK7cxYb8neTUe5vaJ5gREy7iT+MTmr80du133PvpMvKb6uSKP4Hzh0VguYbx06ljCG/arnrXm9y+Jo/2Vl30eSrYWZzJqqxV/G/LalYUVTSdgBmiBpzJ5ekRewT5hqiQYEryN7CxurFuxjWAMbEeduzaxLZ6u/G54JEcndDOp2nimTtxCgnGh9vjblOn4H5zuWbigAPvA91sz+7xUlK8hVW7NrNq12ZWl7Qeta5tnIi7a/e/LXxfVrNHYHyA7dmlqmawNLOycf/WUBYeP4uxYQE4HGEMTV/AhUNDmq7WbObjzAoF8CIi0qFeGIE3OHxZPPurW7hveQ0Jp1/N4zceQ5wFOJIZPyYSs7mkR368fKU2N/zdZvU4+PgKQ6QBT5bNr26zqZkDH/7U4DIwsB+Y9Y2BbP56mxtW2CzZBGWtR9iNzTGLLB6d0ziAdswUQ8QXNuVNFS1fZXPBqqZNQ+Hf97bcyKmzHDY8eZuPf6yHpOMMz/+iaWKqBZPSwGTvnYbjSoYhTTGsXQ/bS7q2z6zcxvQhBxA/wBBvbHJ7LHKwqVj6BJcvbXxkIuZw93u/5tguRWwHv78E9T+FiweHNwXKFXz52b3ctDqbagBnP+bOuYobh8fhIIiJk09m6vdPs8zdeHxlGf/lzk0jmlJpwjh+6smcGJbKvMjGg7TdW3js44/JanPi4qNwxwf8bev3LM3JpbxNZB/ElFk3cs+4eCyCmJI2ivANX1PRagu7+kv++t9nWZd6Ia+ffjQRgKfgA/7w6nvUjrual2em4yKUlMgQzI7WJQEcOO1dvPLOv7g3o5TAhDn8+YcLmBZsAAdDR01nzIpsVh/AGu/db8/uqGfZl3ezbPe+0y/lg1N2r0Kzg5fe+yf/rdx37+hqe3a/r1Xz2ef/4bW4X/Cj2EAS0xbycNrCtnVx5/LOkmd4az91FhGRI1svjMDbVH76Mo8uL8eLm5yPFvNV88xJi7h+UT1WKV8p5HihvpDmUVJPIezyQXFRyzrpUeEtDZGx3ObVTZAwwrDwdMPVCw03LDLcuMjww5SW93YlQ2oPt17FSpsH1jeOvu9cBp9Xt7wWH93+hxUTB8FN/+8rh8Iu/u4XltjNo7BWNCT0Qo/Yt4PdX1yMT5/UnE7iyV/MPd81BZsAngI++noJ3zcF4CZkDMf1az3q35RKU9W4gTPmRG6ant70mdSxZtkzvFyyZzTsI3PrYt7OqSI+5SjmT57H5cefw29nLeTqWfM5JbblzC8gOoWBexygt6qYfB80VBQ2f97eigLybJuSipKmK0WGyODQdpZ99FG44b/cn1FMAz4q8xfzjxXb2B0/W6HDmBh1IC16oO156B1Ye3aNr/o77nzzMV4rqtvrRMD2lfHVsie5d0tRu1drREREduuFEXgf2Zsyqdn90FtBSbkPohyAwRXg6rG1pm0vjSkXbtg9N8/jbhxxtr3gsQEDAa3mv6VMNtz6M8OUKPZZDxMKET28KHZmpt3SLj6boioDYY0PA1zt1ycsxLQsSVcHXV15rrquZVTfhEBYn1vo+yD3FxPL8PhWgVnIeC4/NbXtZEUT1TgBFMCEMzAmDLOrZfLt7lSaSacdQ4KxcDRtW5v7DrevzmXvqRIOkobO58ZZs5kQ6tx3PwsK2+szsX1evIDtcdPQ1Ic93qZ0GJ+3aX+GAEd7bVPPd9lbaJkTbZOb/T2ZvqEMswArjoGRFhR3c2JBD7TnoXZg7VnH9+vf4MGdTSc9dgXfdfglNIQmnsJtPziDSSFWY7pM62UkrSimH/c7nuz3FL/+cBm7tIyXiIh0oBcCeJu6utZrT/jwtfm9O/QRpKNpADAozfDvyw3DOtEqxgVBPVyPuoa2KTK+TvyAW6ZVi9l0eZUMu/UOTa9cktmPg9xfTDixre4s7AwfyszwfWyPITQgsDH4alXHsoz/8tD2Cdw4JLixRnYOL332P7a184EEJp3BP045qTn1aZ8cLgI7dyR7F7Xa+TTtSgqq2p5S2DWlFNkwDAAnoQEuaOe0o1N6pD37pnbbkwa2bP6ATt3I2DWCS0/ZHbxXs3rFY/z5m+/J9VhEJ87iD6eezYxwJ8np5/G7XVv57VrdzElERNqn+7LQEgIef5JhaKsW2bTU5rb3bdblQ6Ubkk42fHCeoZ0F63pNbb2ND9O4sEUABHcxng0ObDl+ux5q+3oU1eNMl08BjNk7kLPCRjMrqdWdSk0/pg8dwJP525tTtRoFccz44xncHLzXs3X9K9y3ajXryyqo9tokTLiGl2YMO+B+1vFx7flK19tgX3vtifbsiw60jYIHHsvciMaRd0/Bh9z61bqm+SZeSvOWcOuXw5kydwKhBDFpxCSS1n3EriPu+ygiIp2hAH43B4zq3zIC7S2y+cuTNstbDURGhZs+N0JdVNKYM+8CTATEdDHKiI1sOSa7DAqOtIDBrqK0zqZxyRib8vX/Yt7itXRpTqWJZu6sszm+zdmTk7SJP+VnGbfycH6rd7P6kR4b3BwM+iq/4M6PP2FVc9KzRWRw2MHrZyaCxDAnrdc5ssJiiG/eoYfqhj2P3sbX+nKQ2cf3oCfa87BkERcV3zxfpaE0l5w23zWbyrJcCu0JhBpwRsSTaMEuJcOLiEg7+lo82qucrU5nfGW03EQHwMCk9L7XYPW5kN0UW1mhMCisa+X7J7YcU1Uu5B1p1+ztQjYX1TalbxjCkoczfB+pLa6gMELaPGPoN3whVwxpXHXF9mSxLKdxKUPjGMB5J5zGyDanyQ6crd7fW13Sdh17E8245LiD2M8CmTB4BKHNjy36DxrDwOYziiKy21nrs85d3zJXwoogJrCDM8UDbs+WeqYPP5Xzjzq98d/U45kQsv+zU5/P1yrt5FCccHe2njYer7e5DQOik0lps5khIia5cdUpwPZ6cB9pJ9MiItJpXft9M8H0Sx3I0KGDGDp0IAOiWy7yGyuMpCGDml9LjujdlSW6zAe5JS15uI4kmBjR8nLseMP/S++NDP198+bB2qqmBw7DqA7Wi2+XBSMHtHSC9VvtTt8E6vDhZtWW79i9+qYjajY3njiLcaGtElhMIAkJEzl31lU8d84PGdmqa1thR/Pb48cTDYCPHWtf5Pr/vc+apis3AfEn8/vJg1ruRGuXkl/la+5nzug0xjWP3BuiU0/n3OSem8i9N0PM8LO5emQKYZaLfgN+wLWTBzWn6/iqt7CqbM8A3qa8vIjmm/Q6hjB3ZFK7dx0+0PZsEciokfO4eNoZTf9OYGonAni7vqZlxRsrgTGJYQf5O9vZetoUFe+ivOmRs9/JXHfMWJKcBnASkzSHPx4ztvlkpr54R/OJuYiIyJ66lkLjGs+VT+2+xX1bJvxorn366KZHHlbdeRmXvFDgP5OwbPh8tU39KEMQYIUabr4Oxq2AhmiYe7QhuYPTHedww0PzaQloHIZhrYKScacZ/jO95XH9BptLX+/2NMG2GmyWbjTMPwqMgYnp4FhLp5ahM+GGKcmN/297bJZ+37MTCZ0Tz+Xui8cSsLu7OKIY2twuTsYs+iMPndbSCvUrnuU3j67vmXbpgpqsd3ksewK/GxiKwcXA4T/h38PPprKqnAqfg7CQSCKdTauGVBe2FDTRzJ15NjOavg927Woe/TaD6podPPT9DP41vh8WLoZP+Sk/3X47jxe4wa5g2fZMGvqnEQiYwAn87qxfMipjBw2h6cxJH9Zyh9SDwovH7scpJ93MKSc1HUar1zI2fMm6djqPJ38jq+uP54RAgEAmHPtHXh2xkx11HmzAW/4Ff//fV+TYB9CePcBTkk2GF2IdABGcOPfPjJiUQ5HHBmxKM17iptU7emWZRnfOl7xbchyLYhwYQhg35QpemVhHpcdBWKCr1WhKOZ98v6Y52BcREdmTcuBbyf7E5qGjDFekNY5KhyQZzpvX+JrthWUbYcqIxpsetWaFw+QRpsNVaSITDVMTWx7XloPVg6HyF1/blE41xBhIHWdIfc0moxNnTpGjYULTwGjDVviwZ2MprOgBTJw0hvazLQwRg0YwadDuxza1RZG9k6JkF/L6B/8m9rSLOT8lHAswuIgIiyNi742b/mvoN/xcrhi6+4ZFbtavepMlNTZQz+rlb7N0+PnMDDIYxyAWzT6Zpf99hy1eHzvXvcRTab/hoqTGXPjg6HEsmDKu8d19JXy7y82ElIS9+llPHes7y7cy+ajjGLBHY9cWfMAdK3e0ewJl16/mmdVZTD96UFM/DyA2dgjNNwEO3Nic39299uwZdvUqXt1yOlNGRDfu1wplQMIwGi9M+cgvDum9q2je7Tz54WsM/+F8jmpaRtI4gmh7sbKWDd8+wb3bqvv8qjwiItJ7FMC3Vg//vsPHttMMi442jIwDRz1s22rz6js2Hw8wvD/CHJzA6gBUrrV5p8iwKB4cAwwnJ9k8uGs/hQzMOso0XrK34bNP7T0m1R1Z7NpNPPraLXw+bCY/Gj6OSf0SSQgOxOFzU1Vbyq6SbSzfvppPM75ng3d36syEptQZ8FV+ycNrcppHdu2ab3h45QkcMz2VACAo4VT+MOk7Llu+E7c7kydfv5WsyadzdvoI0sNDcXjKycpdw9vfvsvnsRfy4sEK4LEpz3yeKwpKueqY45kaE4pdm8fqLUt45Jsv2dzQUSdws+Gbe7iiZh4/HzOecTFRhDmsDoPhrrZnz6nk0yV3cl3pqcxPSyc9KopIl7PPzF2pLfiQq5/byqkTZnNK6jCGRUUSanmprS0mI289/1uzmDd2FB+BqWwiItIVZtiAxCM4bDt8DDzZ8MZ5hmBg27s+zniRfa78YcUZnvi74egA8ObZLLrBZqWWCjksOVPO5eX5JzTePMnO5akX/8S/C/wmuU1ERET20FcGpuQAZX9q80pB4/+nHms4Pnjf24+YaZgSANiw5A2bVQreRURERPyCAvjDRT08+KJNgQ+sSMOFM/fO1d/NhBkunNX4evUmm38u6/t3wRQRERGRRsqBP4wUf2vz81ttEp0GX3VjgN5eerExNi88CK9gU5oDmbpZjIiIiIjfUAB/OLFh2ybYtp/xdF8lLF+vMXcRERERf6RJrCIiIiIifuQIyYF3EjckmTGj4ojRNQcRERER8WNHRgBvnMSmJjFyeAzRrv1vLiIiIiLSVx0ZAbyIiIiIyGFCAbyIiIiIiB9RRrjIEcViym+u5KGzIlqdvXv58tY7+dXbNftZv8jBzBt/x11zXWx76lHOeSS33WVKDxrXUG585TzmR5Xx9C//xZ1re/lusrvrE2NanmvYxA0/fIF3qnqvWiIicvjr4wG8IX7CWGamBWA62sT2sP2L71iRp8V0+jQrhlkLxzIioJZVby9nWaE+r97WUJjPul112HjZUqybAXSZr5as77P4NtxAYAQjhkcT2tt1EhGRI0IfD+DlsOGIZdZPZnJGWAlPLluhAL7X2ZR89j6X3JWJpwulaotLyMp2sqvMo7v3enP4z3VP8R/A6j+dJ585ibG9XScRETki+EkAb1O7PYPF66r2Dhps8HqO+FBC5BDw8s0DD/OjB3q7HiIiIkc2PwngwfZ6aaj30MtZryIiIiIivcpvAnjpQVY4P77rSq6bDMvuuJvL37GYumAWF8xLZ0xKMM76arI3bOXNp/7HM6uqW131MESmj+W8cyYwe2IiKdEB2NUVbP9+C2+/8AWvrKrA3Wrb1PMu5OXLUvboZLH8/OEb+Xnrp9yZ3HbOf3ihoGlPJoQz7/gtN0+Dlff8i4teLmt74qFOCxYAACAASURBVOZI5PInLuKiwR7eu/52/vjZHvnbXT2+PfZ32SfRLLxoJmdOTyYl1KZ8RzYfvbiY+9/Np7oHLvbEzDiTZ/8ynn7VGdx20XO8tHOP01IrjLk3X8zf5oRRveJ9fnb1N2S2PkQrmJEnT+dnp6czYWg0McFQW1ZFYW4+K5dt5L1317K6sIdOdV2juP2DszkpoPWTPjL2NYn1ANvThMRz8k9ncd6cVNLiXTQU5fP1+1/wwEvuvTduW7IL/bMHPgcREZFe4mcBvMHhNOD14VXWTM9wRDPvTwu4cUYEjt0zhZ3hpE0Zz/yNK3huVXVjkGYCGLlgAXf/ahj9HGD7PFRXuXGGRzP62KMYdcwoZtz/LFe/mEdt09vU5eeycrUHBwDBDBrTjziHm7wtOeyqaVUHTz4F7oP0gXb2+JpY8aO45cE5nJJg4fP6MA6LuCFpLPxDMsn2w/z23fIDvgpUsvQD/u/tgdw7bwhX/H4q3/x2GZnNieiGfnNO5ZrZ4VC+hbtuW942aDShzLjmfO6YF0uAAV99HSVlbhyhEQwZG03auGEMKsvgsjfaSTfrlmq2fZfFt003QIscOIChMZ0v3dX2NGEDufyun3DhyECMbeOuq8cXn8LJ5/+YSelr2OLoYEfd6J8H9DmIiIj0Ir8J4ANTBnHKwEBCAwzYXmrLq8jNymfjtgqq9cPaTYbYE0/mt6Ms1rz2Hk++n8HmggacUXFMnD2VE1sNV8bOPJ27rhhGvLuEjx58l/ve2saOahsrKJKJ807i5stHM+2ys7jk+4e4e50HsMlb/A6XLG56A9cwbnl9IWeEVfD+P/7DPesPRTJU54+vkYMR82eRuvkrrrnmcz7NrMOVOISfX7+AiyaGcNxPpzLqw8Ws68qsz/bYtXz1wJu8OP6nLJx4AjeevY1Lny/EDVj9xnHtr0cSRxX/u/dt3shtG4Y70o/mqtNjcXmKefuO//LPD/Mo8wDGQdSggcw8aSJplT14MuTO4t+/eXL33puXkeycrrZnAFMvOpPzRwRil2XyyP+9zhPflFPnDGfSWT/gb5eP5xgD7Z2ZdL1/ckCfg4iISG/ykxs5GRzBQY3BO4BxEBwVyZBxwzjx+GTiA/ZdWjpikTYmjg33P8Wld37DZ+uLySuqZOfW7bz1yEv85ummFAlXf352yRgSqOOre5/huhcy2NGU++CrK+fbl1/n+pcK8TljOXPBsD60lF4nj6+VgPqt3HHDYpZk1uEF6vK28fA/v2KTBxzJqUxO7HBB0y6xqzK5/9av2eoOYOKFP2RRmgOsSH54zcnMjIb8/73H3z+s2Gu0P3pkf1Ic4Pl+OQ+83xS8A9heyjK388Yjr/LPJdV9ZoWYrrSniR7JT06JxmHXsfT+V/j3snLqbMBdycoXX+Ov71Vgt9f8B9A/u/s5iIiI9KY+H8B7qsrJWLuNTz5ay1tvrOSV11bz7pIM1u6oxYMhIC6JaROiCeztivop744V3PdaEQ3tvOZrylNyjR7LySkWvrINPPdBaTt5zx42LN1Krs8QPmYQw/vQdZ3OHF8Lm8pla/ikZI/tdu5gTakNViT9E3vuK1Oz9hNufiaH+sD+XHTtDE466wdcNS0EO3c1f7t7PcXtROG23fikFRFKVJ//9natPYPGDmVSCNi1GbyzdI8UILuOr9/dQF47kfSB9s/ufA4iIiK9qQ+FWu2xKd2aRWmb53xUl5SycVklpfUjOG5oEEH9E0ndUMamnkwdOCLYFK7YyqZ9poQYEkYkEWsBgalc+o+fc357mwVGEA2Y6AjindClxcUPms4cX9vtczKLqdvr6Xoqq2yIcxEc1JP187Dh6Td4eOqFXDFmBrcNB7zFvHTbhywtb79E6ZpMMtxDGDn4GG6/zcVzb2/g6+9yyCrpiys0daU9DYmDYgk24N2Zz9aaPQuBZ1suWz2Q3OavVk/0z65/DiIiIr2pjwfw++KhYFM+hYMHkmAF0y/OwabKPhE1+hEfeTn7m5RpiI4JxQFYodGMmRC977c0Fs4+06s6c3yt2dTWtrfSiU3jwLfB6ulRb3cBT//jC056bDYjnTZ5777PfSvqOkyB8W3/mlvuS+afvxxB/6On8fujp4Hto7qwgHWrtvD2y1/x7sbaPhLMd6U9DeGRwViAp6KGivauPtTVUF7PHn+1eqh/dvFzEBER6U19JtTqDru+lrJaSAgzBIcEYNDdIbuqvq4TbdaUd9zw1Ruc/PvVlPtRI3fq+HqVixEnjGCIA8DQ76gxTI3eyielHW3vZvOrL3LW0v7MPmEE08anMGZUCkPiEzl6biJHnTCayTc9wZ/3TEHxB3Y3a9wj/bOrn4OIiEjv6fNZtPvTPKfN76IVf2FTWty41KIVG0F8z8zh3O8+fU1DyKa9/RkXwUGHpCIHXeiE2dzykyQC6vP5dn0NJI7jj78ZQ7/9fDMbCnfywYuL+dMfn+LsH93O6b96h7cyGsAVw7xLjmJER8st9lk2FeV1+AArIoTIdj5eExRC5F6TXXqmf3b3cxAREekNfv3zZAJDiAoGbJua6gbF8AeFTf6mPIp94EgdwpSE7gbOPnw2YAzW/t7CdlNb78PGEB4RxJ6bm7BYUmP9P4A34UO58tqjGeJs4LsnXuXyGz7g4xKIn3Uq158a1fkvp+0h77sV/PnWb8jygiMlifSwg1nzg8EmL6uIGhsc/RMYGrL3Fs4hSaTtdc3wwPtnj30OIiIih0jf/m1yOnB2+HvsJGFkP+ItA95q8gqV/36wuNetY3GOjXENZNH56UR39JlYwfRP2jvgBpomLgImhNjo/Q0P+8jNqcCHxYAx/Ylr00sNSSeMY5K/Lx1qQpn563mclWJR890n/N+LBTQUrOW2e9ZTSAjH/WoePx6w99fT4bTab1/AOB04DNheD/V++HWoX7OVb2vABA/l9OPD2h6nCWLaaSNpbxGgA+qf3fwcREREelOf/mWyEgZxyolpTBwRS1JsMGHBLoKCA4nqF8voY0YwfXAQBpvKzByy2lm1QnqIewdPPbKeQtuQfOp8Hr7hKI7uH9jUeQwh/ZKYMf9k7v7PFdxzRkz7ncpbzKbtbmwTyLE/nMDgfa7m4mPryixKfRA4aQbXLRhArAtwBpN+4incfnEK1Pf8YR46jXf5/OPcSKjJ5P7bl7HNA2BTuOQ9bltcAeFD+NV1xzCszT2TLIact4hn/3oS5xyXTFKo1fx8xOBRXPXrSaRYULsug9W1e+20z7PLN/H8+6V4TRDH//IsLjk6kkADuMKYeM6PuP7UCEx7l9m63T+7+zmIiIj0rj4/iTUgIoq0MVGktfei7aNqZzZfrq2kvbUupKfYFC15kytjXNz5y3TS5p7Kv08+hYaaOmpNAOHBjqa0GB+ZSzt6i1qWvr6WnOmTSZl+Gi+9cSzZOTXU+wBPDk9e9zYftlovvG7F1/xnzWh+MyGcmb++gBm/8uLBgdN4yHhlCW9OPpFzUw/6gR8UVtIErr9qFPHU8fVDb/FSdqs1Y+xqltz7Lu+MP4cfjJ3JLYu2c8HjOS3nK45g0mdO59qZ0/mDz0tNZR11ViDRYU4sA96Srdx7z6p210vvMkcCC28+hTkxLWPWkQNdgEXy3Hk8PL4lbc27fQU33bWO/APabwMrHnmdJ0adx4UjU7nkH1dyfm09bmcgIS6bgqWr+XL8eI4N37Nc9/rnAX0OIiIivahPB/B2cQGrNnhJig8lMiyAoAAHDmPjaWigoqSCXZkFbMupU/B+KNgNbHj5BX787Uh+vGA8syalkBofRJCnlpzt5ezI2MHXn3/P+5/ntHMjnUaVy97nshsqueycMUwdFk1qWmRjYOWuJ8ZpaDMT2VvIs9c/i+eyOZxzXDIpYVC+I5OPX/2EB9/2sPCxQ3DMB4Mjlh//4WSOi4LyZYv56+sle7WXXbaJf/5zFZP+PomRi87g0hWPcc+aBsBH1ttvc33NSI6dNJAxw+JIig4h0ltPUdYuVn25hudfWM13JT20iKQJYuDoQUxuJ688ODGJSYktjz0BW+iJJfLtqmweuPJRMhbN4idzBpMW78RTuJMP3v2c+1/2cv7z4zso2MX+eUCfg4iISO8ywwYkHv5zP00Qw2ePZlxkJSvf30yGH6YXiPQMiym/uZKHzgqn4JX/MO+uzL5xzy0/Z/WfzpPPnMRY3yZu+OELvFPV2zUSEZHDWZ8egReRg8UQM+MUHhpah42Xdc++xD1f1Wslp65wJPOzv5zEjHADgREMsaCP3EFLREQOcwrgRY5QAfEJTIoH8FL/vt8tHN/7rGAGjR7E5Bj/X9JURET8i1JoRERERET8SJ9eRlJERERERNpSAC8iIiIi4keOjBx420NxZi4bghoo1ZqTIiIiIuLHjowReOMkNjWJkcNjiNYdFUVERETEjx0ZAbyIiIiIyGFCAbyIiIiIiB9RAC8iIiIi4kf8ZxKrM4jkoQkM6R9BTLgLFz7qaxuoKC5nx/Z8Mos9uoukiIiIiBz2/CKAt0JjmHxsKqkRrS8YWASHOwkODybKriSruEIBvIiIiIgc9vp+AO8IZeS0VFIjDHZ9NZmb8sjMq6babQgMCSQiJpIEy9fbtRQREREROST6fAAfmtqf9CgLu76C7z7dypaKlmC9traesuIKsnuxfiIiIiIih1LfnsRqghmYGoYTH6Wbs9laoZF2ERERETmy9ekA3gSFkxBpwK4me0edctxFRERE5IjXp1NoTEQw4QbsmhpK613EpyUzcnAkMWFOjMdNRXEZmZvz2F7kRmPzIiIiInIk6NMBvDPIRYABu84mdtIIxgwMxMKHxwuOgABikhOISYwmcfUWvtpWqyBeRERERA57fTuAdzoAMBHxjIyB8oxtrFhfSlmDjSM4nKETUhmbHEjy+EEMK9zEpkol2YiIiIjI4a1P58Bjmv7jsiB/J19+V0JZQ2OQ7q2tZPPyLLbX2OAIZUhqSB8/GBERERGRA9enY16vpykpxvaRn1lCzZ4D7J5Kdua5sTGExIYSbA55FUVEREREDqk+HcB7Gjx4bcBuoLKq/Qz32ho3NmACAwg8pLUTERERETn0+nQA76up33vUXURERETkCNanA3i7soYytw0mgPCw9qsaHOLCAHZdA3WHtnoiIiIiIodcnw7g8VaSU+DFNhYJqdGE7Jnj7gynf6ILg011cTW1Gq0XERERkcNc3w7g8ZK7tYhKH7gSBjB9QgxRgY1RvDMknPSpgxgcYsBTRUZmje7UKiIiIiKHvT69DjyAtziH5d+HcvyYMKKHDuGkITZer43lsDAG8NWzc1UmGVUK30VERETk8NfnA3jwUbJpC4vL4hkxLJbEmCCCneCpq6O8uIzMzXlklng0+i4iIiIiRwQ/COABfFTn5/Ntfn5vV0REREREpFf18Rx4ERERERFpTQG8iIiIiIgfUQAvIiIiIuJHFMCLiIiIiPgRBfAiIiIiIn7ET1ahOUC2h+LMXDYENVDq7u3KiIiIiIh035ExAm+cxKYmMXJ4DNGu3q6MiIiIiEj3HRkBvIiIiIjIYUIBvIiIiIiIH1EAvz+uSI79fz/isWev5vOPb2Ll0ptZ9fkNPHVutBrvkHEw88ZrWfn5jfz3oiQch2y3cSx68I98u/gCFg0wHW9nQjjplmv49tMr+P2EgENVOxERETlC9elJrAGD0pg3NaoTgbKNOyuDN5eX4evZGjDl8kXcvSAWJz5qK6rIr/Vh46Wwpmf3JH1P7OzZnD/aScHbn/LqDrvjDe0aljz9DZtmzmb+ZVN5+fIv2O49dPUUERGRI0ufDuA7zYbKijr2EWJ1T2gaC06LxWlX8N6fH+fmxeVoEZveUVtcQla2k11lnp7/nNvjSuKcRSOI8ubx4H+3U72fzb3bVvL8N9P50zHTuOCYb7np84PQH0VERETo4wF8w47tvJVn6Ch5wYQnMGNGEpF2Fdk7ez5gshLjGRwIdl02iz9T8N57vHzzwMP86IFDt8ewaUczf7BFw6pVvJXZiastdhVL3trIVceM58Qfj+WBL5eTq4s0IiIichD07TRun5eGeg/17f7zEpwYRYRl4y0qYWdNz+/eBLoIMGC7PTRoOPXIYUI5Yd5IYoybbz/aQH4nA/HqFev4tNQmcNwkfpC6j5x5ERERkQPQp0fg98kRRuqAIIztIz+7lNqeCLBNCGfe8VtunrbHNMnICdz38YRWT3hZ86/7Of+F0sac++ZysPKef3HRy3vk4jsSufyJi7hosIf3rr+dP37m3WN/jeUu+ySahRfN5MzpyaSE2pTvyOajFxdz/7v5VHd4fA4SJkxg4ZljOHZsP5JiAnHWV7NjcxZLF6/kpfczyWvogTY5qoqX/76YhtNO4IyRoVRv/54H//YeS4Inc/01x3L8IBdlG7/jnr9+wIc5LUdvhcVx9OzRnHB0KqMHR5MQH0aE00NZXiFrlq3lxee/5ZuCdhLGXaO4/YOzOanNnFAfGU89yjmP5NJuinmPtCeYmOHMnRQAnkw+/aa681d26rL5dEUtZ8ztx8mzE3h8W1779RQRERE5AH4bwDv7xdI/xGC7y8nK9fTMm9peCjOy+DaoMYA3IdGMGhZBoLeKjHXFlDdv6COjoIf22cSKH8UtD87hlAQLn9eHcVjEDUlj4R+SSbYf5rfvlu89QdcRwYxfnctfz0oizALb9lFf3YAnIJyhE8eSNmkU4wPv46KX2ynbVSaUU646A5e3HrcjgISRE7nulghOixjMhOBaagkgafxR3HRVLiv/sJoiG8CQetZ87r0oCSdg+3zU19ZT7XYRM6A/Jwzsz6yTR3H/757j8fV7nmVUs+27LL5tuvFW5MABDI3pfHW71Z5NwicNY3wg+DIyWVXclTPDBtaszMF9chqp04bS/4k8spRGIyIiIj3MTwN4J0mDogg0NvU5JQc2wtxGPV88+DRfND1yjDqRVx48lgHVW7nnN2/w+UFLgncwYv4sUjd/xTXXfM6nmXW4Eofw8+sXcNHEEI776VRGfbiYdW3OGZyMXPRjbl2QRJCvkm+e/oC7X97EhhIPGBfx6cM482czmdDhDIIuMg48K15nwY1rKBt0HA8/NofxQ4cwctm7nHXtCnLjpnDfk6czbWI6k0NW80HTrE+7voLV723incWb+HpdAXnVPsAQnDCAH152Br+dM4jLrjuOr89fwvrWx+fO4t+/ebK5fWbe+DvumtvZ2+h2pz1blR2fQrCxqdySQ1YXh9ArtuSww5fG0CEDGRf+BVnl+y8jIiIi0hV9Owe+I8FRpCY6MLabXdkV9OxYeO8IqN/KHTcsZklmHV6gLm8bD//zKzZ5wJGcyuTEtoG4FT+WyxemEIybdY8/x68f+r4xeAew3RRuWs8jNzzG9R9W9czSmraXtUs3U+iDhqwtfJXtA3ys/2wju9zgzd/G19t9mIAYBifu7lY22198gYv++imvL8trCt4bn6/Nz+bF2z/g/VIb58CRzEnr2a7Y1fZsZoWTPiQEC5sdmSVd7lvenYVke8C4+jF8kH9+vURERKRv88sII7R/HP0cBru6lOyiwyFHwaZy2Ro+KWn7rG/nDtaU2mBF0j+x7UcVO30MU0PAV7qeR1/Oo77dt22grLyn0osaKCl1N+aD2zWUlNlgeykuqW16rpayChtMMFGRbQ6tY3X5bMz2gRXJgKSevD1T19uzmRVJcoIFto+iom6c/DRUUVBugwkjOaGzVwxEREREOs//UmhMMIMGhmIZm4qdxRQfDvE7NjmZxdTt9XQ9lVU2xLkIDmr9goNhIxJwGWjYsI3VtYeijh7qmpfi8dDgBmwP9bvTl2wP9W4bcBLoaju6HTIwnQULJjJ7cjJDEsMIC7Cw9hgADwlxYnD30FKgXW3PVkwQEWEG8FJd3Y2TH7ue6hobjCE8PBCL+h6+uZiIiIgc6fwugLeiYxkYacBXw47s2sPkZjk2tbXtJdjb2E2TQa02A8ZOomMCsbCpLKzsmRV4OlFHe/d+bBuvzwZ8+HytXvcBxsLRPJhu6DfjdB68aTJDgsB215G7I49tFe6m1VkcxA9NYWA4OJw9OwLftfZszdBYFR/ebkXePrxNefOWwy8vcImIiEgf52cBvEXcoBjCLBtfcTHZlYdH+H642T24biJGcNXvJjEk0EPGO29z/f1r2VTRKiq2Ill47xX8fgI9NdW2B3iorbMh0ElgQDdqZVwEBhrApq6up64oiIiIiLTwryFCVwSpKS6MbVOUXbrPtbwPLbt5JNq0F/MZF8FBPRmieigtacCHITw+nOC+E/22ETRhJMdFGXx5K7n1zu/aBu8AJpT46D5WeV8VhSU2GIvo6OCun1iYEGIjDdhuiot7/u7AIiIiIn4VwAcmxZIcaMBbSfauhr4THNluaut92BjCI4L2CvpMWCypsT0ZqHrZsjEPtw0Bo4YyMaQH37rHGCLiwgky4NlZwPZ2lvq0+g1kQnIf64LeUrbv9GJjkZwSSVcTe6yYaJKDAG8J23cp+11ERER6Xh+LnvbBBJAyKAKXsXHnFbNrrxmKvclHbk4FPiwGjOlPXJtWNSSdMI5JAR2V7Z7iL9exogasqJFceHYige1u5SQ8rCdzy7vCprqyDq8NzqRY+u+ZrGWCmPqTqYzrc0lcDWzcWIQXQ/zgfkR08bzLmZpAqgN85bmsz+kzp5giIiJyGPGbAN6ExpAaZ4HtITe7nB67d1OP8LF1ZRalPgicNIPrFgwg1gU4g0k/8RRuvziF9td5PIA9Fq7l/hdyqMXFmAvO495LRzMyZnew7iBmaDqLbjyfv5wa3msfcs267aytBytlEtdckk7/ppVfHBH9OOmyhdx6Rhh1dX0tyLXZ8e12cnzgGjGA0V068bIYMi6FSAuqV29j3UG78ZeIiIgcyfrc+Gf7DJEDY4hxGOzaMrIKunh7zEOgbsXX/GfNaH4zIZyZv76AGb/y4sGB03jIeGUJb04+kXNTe3KPHjb850WujTyXv81P4qifLuDZn/ioq67H4wokLNDCGC8rN/ZegOzLXcV9z43jwfNTGHPuQt44q56yKpvQiCACLQ/b3niPjwadxiUT9yjoSGDhzacwJ6Zl+DtyoAuwSJ47j4fHt6RPebev4Ka71pHfg9kqnk0b+TTnGBYlD2b6KAdLV3Wyv1nRTJsah8Ou4+vPtlHTc1USERERaeYfAbwVyqCBwRhsqneVUNgXb73qLeTZ65/Fc9kczjkumZQwKN+RycevfsKDb3tY+NjB2GcFn939GAs+nchPzhzD9HH9SIoKwKosY/PGPJYv+Zbn3ynvxXXI3ax94mku2DWDS84exZTBEUSGNlCwdRNLXl/KI+9WMPfOdoqZIAaOHsTkhL3zV4ITk5iU2PLYE7CFjpZ07zbPLt75qJCFP4/n+Jn9uWtVVqeu+FjJwzlhmIWvdBPvfK0JrCIiInJwmGEDEg//OMMEMXz2aMZFVrLy/c1kHJIbH4k/sxKn8OAzpzOlahW/XvgmX+y3z1ikX3Axz10Qz45nH+fHD+5CGTQiIiJyMPhNDrzIoeTLW8MT75dD7CjOOSF8/8tJBg/m7B/0w6rO4KlXchS8i4iIyEGjAF6kXQ1888xSvq4J4JhzpjLKta9tDcmnTOfUeB8Zr3zCuwWH/0UtERER6T3+kQMv0gt8eau5469BzB3qJSrOQG4HgbkJIt6dxdOPruWLV3L62ApJIiIicrhRDryIiIiIiB9RCo2IiIiIiB85MlJobA/FmblsCGqgVLMLRURERMSPHRkj8MZJbGoSI4fHEL3PyYgiIiIiIn3bkTECL9IVJoDkyBBCAbCprqkgp+HwnyoiIiIi/kEBvMgeTMAAbvjBdGY4ALx8/uWrXLZFd1YVERGRvkEBvIh0iSt6LE+fNp4xTpudGxZz5jf51HWwrQkcyv1n7z4ZauGt2siFry1nhe+gV1e6xTBg9FzenBJP26xDH5tWv8uPvyvF20FJK3IUT8+bxHiHza7NH7PgqxwqD36FRUSOKP4RwDsCSRqayND+EcSEu3A5wFNXT3lxOVlb8sgs8Wh0VORQMOH8+KjRjHYabHc+T60v6DB4746A4GimJCUyNSGBqQn9GB0RiMsAePn2mzc5f0MVvR7zmwAG9UtmZv8UjkuMY1hECNFOg9tdT255EV9nZ/D85p1s7+0J8yaIUQMHMSuxH5PiYxgSFkK0y8LnbaCkqoL1+Tt5a9MWlpQ19Gib+sq38uj2kdyTFkJy2hQuzniHfxZ0FO6LiEh39P0APjCC8ccNJT3aAdjYXi9uj8EZHET8gGDiU2Lpv2YzX26t7XBESER6RmT/sVyY4MJgU5y9kberunDq7Cvhpa/W8bXbxvZUkrFX1GhIH3k8D46NxNFe+T7ClTyZZ+akEW3aPu8MDGFIv4EM6TeAs9Kz+MuSL3mtvBf/Kln9uPD4o5i7Z2NaQSRFB5EU3Y8T0ofz2fKP+e3GUurbbGRTtGM1v6sKwMJixPCjuSgpgD0OuQMNLN2YwbYhY0mzIvj/7N13fFvV/f/x17la3ns7HrEdO86eZEEWIcwUCFBoGT8opUAKpVDaQlug40vLKGVDGaWlQNl7kxAICYTsPW3Hdux4xtuybEu69/eHFWc5jp3IsRR/no9HHrGke6Wje6+k9z33jEvHZPH6wh2USi2LEEJ4jY8HeBMJw9MZEmnCaG9mx+oitpe34jTAFBhK5ph0RibZSBiZRlblDnY0yS+EOH5GWwELXi7o72L4HhXGhSPSiVWAbuez/F42jTBa2VJazBferLLvb4aOo81BrUsjMiiAIE0BCltYGndNb2THxxvY2u+XDI5MacFMnzCZqyo+47n6g78/HY0VLGoE0LAnTeSnifQwwIOrtoD3a4ZxW6yJoPhcrojL575KqWIRQghv6XmAVwGkhOqUNbafuJpuLZhBSR21fXU7i9hctr8jodvRxM41e4iJG0yyJYjEeAs730VsEQAAIABJREFUm9qlKY0QfcQSk8UlMSYU4Lbv5tM+aRbhpqa+grXlFays0pk2aSynB/Q0Np44juZyFu7I4/3iMjY1O9EBS2A81542nQWJAWgorJFZXBS/ia3l/ZTgjVY2F26noKaaDTX17La30uSGgMBwJg8Zw69y44hUoEyRTEsI4l/1du81pTGa+aJwLzfHxGPVQpiXM4inKotp9NbzCyHEANfzAK/FsOCcUxlXV8zbO3fyzu4a9vZ1kjdZsFkUGG6amtoOD+fONpocgEVhNg+MIe2PXQCzTz2HhzODO5onGC18+PVH/G63Z7uaornl3LP4aaSGAoz2Cu77eBGvNA6MU6KY7Dl8MSUR62GPdDMKjSmFBy6dwTkWBbhZueJ97qhP49axOcyMDsTibGZD8TYeWpvH1nYvrLePCmBkZi5XZCQzPjKUKAs4Wu0U7C3j8x3beau8+ZDmEAAakydfyLM5QWiAu24jl328HWvWKG7ITmVseAAWdzt7m+tYtOFbHtrtOCTMmRibkc4gDUCnes+ePqhZNti67hNOX2t0bGstgZyJ3n6N4+eqWssl77XRcMj7dzoqeW5NHmefM5JMDVA20sJsqHJH/1Qs6FX8+9uqw+9va+W9NevJTZ3D5SEd35tKefskyaB8zx62T4hnlFKEJQ9mhq2YDw8/MIUQQhyD3jWhUWaSE7L4RUImNzhqWZy/k9d3FrG6uY86kbrbcbQbEKgREmJDcUiIstgIDQQMF/X1UvvevVa+Wr2KjxOm84NgDVQgZ47K4T+lG9mhK+IGj+LSiI7wjtHO6vUreM2r4T2AS86Yzz1Jnga5eh1Pf/QxT9Yd8hpaArefM4nTrT0NFDob1i/kzl39FJIOYIseyRPjsxhm9pTdFM6knEk8E+jm4q93UXmEAvZmPWWN5aczZ3BTQiCmAzaRNTicccHhjEvN5Pxty7hp9R6qutsgysa0iWdyY3Y4tn3PYwogOSqeiRFW2O04eHktiunJgZ6TPxfrK2ro6tzieOlGf+/FozOcbTQc6TGHg1oDMj23XbqvvR9FYGA4EzKHcXpQx4433A0sr/Bi7buH3lzJmmadUWEayhLPjAQLHxb3d89eIYQ4OfQ8wBttlDc7cUdaMSmFNTCas0ZO4czh49i1p5A3du7kgz0NeLUZut5MUXErg3MCicxJZ2RzMdvLHbTrCnNwKJmjB5FkhrbKMrZX+nBDUx9htJbw4MpCTpmRSYKmsEblcEPaTn5VEs61I5MI60jvNFdu5M87GvunU7AyEx0aSkqPA7ybcqvquGpwHC/rdNSxpkLrGDJPCyArNpyIXlVKagwfnIlJ02lpN7BZzJ6ArYgcNIyLIwt5srarEvZiPRXMvGkzuTkxoGMKZUOn2d5AUatBZGg4STYTSlkZlnsq9zd/yrXbGo8YyrSQTG4IN+0P70d7d8GxjA32XOXSG9hc6+r5phlAQmLjGLLvYqDexJaaLq4cnnCK+KFz+GxSAodORG24Gvl81bf8+9ATaW/Q69lc68YI01DKzOj4KMzFlciRI4QQx6/nAV6v5rEP3+at+FR+kJnBD9LiSbFqKM1GZspQ7hyUwy3NlXyWl8fr+bvZ4vBGoDao3baLdcGZjBkUQs6UYWTrBm4dTCaF3trCnu0lbN5eR28GwxjI6nav5a+FCR1NaZSNWaOGcXZQNBeGdqQOw1nF09/voHCAnQ81lKzhupKOv480dnn3FCajjhcXfsnD5U4SMqfx8rS0jg6fWhhjYwNQtV1dJej5egHxw7lp0L7w7uCbVYv5zbZamgFMoZw3dQ73Dg7BpKyMHz6MKXnf8+0R0pIym7G5m1myZT3/3lXBzhYXloBwxqVlM7OLMzdLRCQZnrBvuBopbJEP3GHMsfx0dArhnhNhe+VO3u2LYOwNhpuq6jwe+m4dHzf0VaR2U9zQjE4kJjRiIiOIUZVU+OgmEUIIf9LLUWhclFXu4p+Vu3hmZTDjUjM4PzODuQmhhGiKoNAE5o9L4MLRLWzZXcALGzbxxfEOo+Z2sGt1Hu1tGYzLCMKmaXQ0dzfQzCYsFhNmE8gYkj11cFMac3gufx2nOmp9DSfrNqzglUMb955I7lLufPVl7uy/Ehwjg8aSTfyzvBU3sKeogG8npHJBQMeoJDFBgWh0NdRpT9czMW5wKgme2l3X3m08sN0T3gHcTXyyfjuXpk1grAm0wCRmRGt8e6QrU0Y7K1Yv4hfbm/aXybmXhZv3sohDr2YoooKD2deXVHe0UD3ATvCOSgVxxuRTuSrC5OlDUs0/V+b57tCJykRcXA5/PSuGUcu/4YHd9j74CjXY2+LATSQmQAsKIV4hAV4IIbzgmIeRNFx21uzaxJpdm/hrcBxzMjM5PzOVU0KtmExBjBg8jMuqdvJFQ8txFVALjWbClFRSA9so3rCT7aV27E5FQGQE2SNTyMpKY2ZMAMuWlFItzSt75OCmNJqnyYZBS/Um/rytoY8ucbvYmLeeR8r3tS9oZa3jZPolNyiuqaPzaNfbqGkz2Jd6rZp2hCH4erieCmF4lA3PdRIIHMStM6IPaSITRNK+F9ECGBxuQ1V23TfAcJXzVkFTl6Gtq+VDrJbO8htOJ8f3qT7Z2Jg8fhZ/zQjBrMBwN/L+d0t5sd5XznIM9hYu5+IKM5oyER4ay9nDR3JxbACmgBh+fNp0aj75nGfrvF9eu3N//yhltRDi9VcQQoiBySvjwLfaq/m6yITVZCUuN4VMi5dGNNCCyJ2URlqoQeW6fFbv2t9RtaWmhvXfubHMySQ9PI7RmTV8ub3/OzL6i7rda3m0NIW/pnomZ9EbeGXlNvL7LHO42FG0lR199fT9zqDV7T7o9sH9F4/0mejhespGTMD++8whcZzebRpSBFvMR+wboDvslPeiylWpA9+BIZ+zThZGjZrJP4ZFEajA0O0s/H4xfypu6f8ZYw/gbmumYN8IMHU1rC6rwXHuXP5fhIYyR/OjofG8uLy8i9GLjo9xUKdkhYwVJoQQ3nFcAV6zhjM5PYPzMwdzemwQAZ1DkRm425vIbz6+i7JaTCyDwzXQ6yku7WKUmfYGisudpGVaCU8MJ3iHQ9rC95AWlMSc2P21qqhQpqdG8UzNXvp1nh0tkTvmTWFuj08Cddat+4zbC072k7fenxR3OzSg7sbZiw3mcLnRAROgTGYCjrbCgGAiO3c6T4yJI8wT3hd//yV35jfh8xcDXXv5qLiBKyMiMaGIjI4hRZWT7+UPUaDZvP/KjcuFo9ulhRBC9FTvA7yykZmUxvmZmZyXEk2c+YCQYLipqS3lvR07ebOwgtLjbIsREBaATXVcsm89wnO1OlwYWFEBFgIVEuB7QgVx7qTxzAo8YN8pE9nDJ3FdyWc83ucD/HdXNhPhQUHE9WIUmkjL8Y9C4/OMNmrboKMNgkF9/lfM/nbPsQ/laBi9qCE2qLG34DbAokAFBhF10m/wo9FIy5rGUxMSiVJg6C18veJLfpPX4PVa7L5ib3fuPymzWAj2+j5VRAUGdNa6Gw471QP6mBFCCO/pxUysIcweO46fZQ5ieJDpoMvputPO2uJ83tiRz6K9Dq+ND72vAlGZzdhM0FXisAV4anh0A7f8OPSAIn7wRH6d0vHDajhrWF4bzOT4ADRTJFdPHsHiTzewxesZ3kzu4KFMD903lEkra/LyWN2v1f1+xGhie107enTHLJ+hsfHkmvaw4Qj7yWKzYW1rw+6ll29rbKDEgCEKNGsIqQGw3CcbwmtMmnQBz2QHer4XKrj3nS95w6tVv4rEtMk8PTmVBE1h6C18s/JLbt/Zm/De9+UMDgyEVgf2rr4XVRCTkiI6fwCM9na8P2ebxqCwkM5+G80NDdKBVQghvKQXM7FGcEZOKiP21YwaOk2N5Xy4YydvFOwhv93738ytTW20G6EEmEJJSbJQUuw8uILIHMKgBAsKA2dji9S+94AWNJjfTUjx1KDqFO9czW07Y3hq3jjGmRW2qGHcM6KUKzfUeLkm0cyIrFHcfOBETqX5rG49ZKf57Sg0fc3N6qJSajKziFVgChvKvVObuWtNAetaPClemUmISmRuVjaXJTXxp/dXssJLDbHdDXvZ3GYwJFCBFsGwCBO0ePssTyMyNIyYfcN3aiGeIRmhYwKiULIizJ7vAIMGewNVXbRVUUqhaZpnuE11LK2PuhWdPJGnTs0g1aTAcJGft4Z/VkJqRMRhy7Y4GtnT1vVO6NtyKgbnzuHpFDtfFpWyvLqW/CYHDS6dgKBoZueO4edJnv4v6FRXV7PH29+fKpShkZbOOQu2Vdf2yeRfQggxEPW6CY3hdrCtpIDXd+TxSUVzn7ZpdFfvZXdzNNmhZhJHZzJa3822PS206QpLSBhZo9PICFZgtLF7V4P8OByNCuLcU/Y3ndHbSnhqSxXNjloeyxvCv3LDMCkzuSMm8ZPSz3m6ZmCMzWmOH8VTYxKw7rtDCyCrs7edxsjhM/h3xr50Y9BWsYGfb6g64RPS2Ms283RZCn9ItqEpE+kZk/jv4Ak0trTQoGuEBgQSYekYtUZv8XJ3YXcVyyqdXJBuRSkbo+PDMZXVenfoQRXChaedy22xXXV11Bg2cg7vjPTcNNr4YPHb/K70RB+jJsZmZpJl7rw8yJCc03g1p6tl3WxY/SFXbmnqpw6tirCIZC4ek8zF3SxlOGt4bWeV178/VUAs4z2zoRl6DcvKWwd2qyshhPCiXkzkZGfJ+mW8UlTCZscJ+tF0N7Nl5R7CpyUTHxDCkEm5DNENXLrCZFIdTWwMJ9VbCtlUOTDC5rHzNJ1J3TcRkIvNWzbyuQPAxZpNG/l68DROD1AocxTXTh7GV59tYvsA2KxaQDjj4+OPMCupIjw8jgnh+24bOBwB/TOahtHEm0uXEDNzOtfHB2BSoJSJ8OBQwg9b1tsv7uTbwlLq0zKIVBrpyUmkra9ll88lMq1z9B0Avb2ly1r6/ucb5TRcDXywfBkv1nt/R4YnJjNa62hY315dzCK5RCqEEF7T8wBv1PHZtro+LErXXHUVLF3URHpWHKkJIUSEWLBoBk5HKw01DewuqKRor9OnhmzzRQc1nQHc9l08vqO+swbVcBTxxNahnDo2BptSBESP4O5hpVy9qU6ubPgQo62Sp774kK/Th3BpxiAmRoeTYDNjMtw0t9opqd/L96UlfLm7nM1e/lA078nnk+Z0Lg/VMEWmckb4Fp7pg+B3XLRIxsZ6grHhZueObSzzxQDf5+U02LntW25rGcS0+FiGhgUTGxhAlM2Mye2kurmODeUlvLc9n2VNfXEtKYDp6fEEdcxqxbK8Isp87FARQgh/poakJJz8X6sqgJxZwxkV3sTaz3ZSIGOZCXEMFKm5Z/D2xHgClU7h5s+Zv2Zvt0MmKlsmT14ylekmwF3GPW99ydt92HFZCxvOy+ePY5QGemsxv33/Gz71wY7S/lLODhrTplzE09kBaOjsWP8JP9xQ123zKS04h+cvmMgpZnA3bOPqD9ewbgBczRNCiBPFKxM5CSEGAoPdeRt4J3cOl4dqpGVmc+qmvXzV00s0piT+dOmV/AlwN2/n2ndXsdrLVwnC4+LI9nTQLti5hUU+Gop9v5yKlOFn8sGEWCy9XldjaHY2480d/ZO+3riV9RLehRDCq2RiPCFEz7kqeWZNEVU6aAFpXJMV6kNfIiZGxsdgVaC3l/LC9hofnVDJX8p5bJQthWuGhGPCwF65iYcLT/ZJ1oQQ4sSTJjRCiF6yMTg+knhNYbQ3sK6m5cj9JLRgRidHEX1oB2FXE2vL6qnv45KKYxcQGseUSNsho1saNDdUsqrBecRQrtkiGBcViBmD+voqtjukh5IQQnibNKERQvRSG4WVFRT2ZFHdzoYSb00nJU6k1qYqvmrq/Xp6Wz2ry+XUTAgh+pLvXP0WQgghhBBCHNXAqIE3XNQUlbMtoJ26k6mxqRBCCCGEGHAGRg28MhOdnkhuThSRvR9SQQghhBBCCJ8xMAK8EEIIIYQQJwkJ8EIIIYQQQvgRCfBCCCGEEEL4Eb/oxKqsQaQOiWdwUijhwRYsyo2jyU5lSRXb8xtolln+hBBCCCHEAOHzAV4FRTHxtHTSQjXAwNANdEwERYQzOCKM5KRyli0ro0ZGlxFCCCGEEAOAbwd4ZSNjfBppoQrD0cjWNcXkVbbhVGbCkxIZPy6O6KhEThnexML1Tbj6u7xCCCGEEEL0MZ9uA6/CosmINYHhomT9LrZWtOE0AN1FQ2kJ362rpw1FSFo8gwL6u7RCCCGEEEL0PZ8O8LaoEMI0wNlIacXh9eutZXspbzfAHEpSrOnEF1AIIYQQQogTzIcDvMIW0NHCx2htp0XvYhG9jaYWQGlERAX68psRQgghhBDCK/w88yqU56+AYBtSBy+EEEIIIU52PhzgDVodTgwDVKCNoK7SuclGWDCAQlnNWFUXywghhBBCCHES8eEAD+21zTQagDmU1MTDB8wJGhRDgsWT2k2a1MALIYQQQoiTnk8HeKOphoJKF4aykDwmk1GDggg0KzSLlZjBaUwbHQ7tLoz+LqgQQgghhBAniG+PA2+0U7S2iKjTMsgICyVn8jBy9j+I3lTD+lIbY3JDweWWceCFEEIIIcRJz7cDPGA46lnz1TYqM+NITwwhLMgE7e3UV+5lx45ajOxhKAzcrU7apCpeCCGEEEKc5Hw+wAPgdFC6vZjS7YfcryxkRlpRQFODg65GmhRCCCGEEOJk4tNt4I9GBUeRGq1Ab6Oyqk3awgshhBBCiJOe/wZ4LYDBoxOINoG7fi/FdRLfhRBCCCHEyc/nm9CoyHjGpyuqy5tpaG6nTdcIjAgjPTuRjGgLSnewa1N1x3CTQgghhBBCnOR8P8CbrMRnxDM4s4sH3W2UrCtgY7X7hJdLCCGEEEKI/uDzAV5vrGXzNhOpiSGEB1uxmcHlaKWuuo5dO6sobZTwLoQQQgghBg6fD/C02yneaqd4a38XRAghhBBCiP7nv51YhRBCCCGEGIAkwAshhBBCCOFHJMALIYQQQgjhRyTACyGEEEII4UckwAshhBBCCOFH1JCUBJkCSQghhBBCCD8hNfBCCCGEEEL4EQnwQgghhBBC+BEJ8EIIIYQQQvgRCfBCCCGEEEL4EQnwQgghhBBC+BEJ8EIIIYQQQvgRCfBCCCGEEEL4EQnwQgghhBBC+BEJ8EIIIYQQQvgRCfBCCCGEEEL4EQnwQgghhBBC+BEJ8EIIIYQQQvgRCfBCCCGEEEL4EQnwQgghhBBC+BEJ8EIIIYQQQvgRCfBCCCGEEEL4EQnwQgghhBBC+BEJ8EIIIYQQQvgRCfBCCCGEEEL4EQnwQgghhBBC+BEJ8EIIIYQQQvgRCfBCCCGEEEL4EQnwQgghhBBC+BEJ8EIIIYQQQvgRCfBCCCGEEEL4EQnwQgghhBBC+BEJ8EIIIYQQQvgRCfBCCCGEEEL4EQnwQgghhBBC+BEJ8EIIIYQQQvgRc38X4ITQICkRglXHTXstlLX0b5FEL2jBJKbFEKQB6LRU7aG8Se/vUgkhhBBC9IsBEeBVoOKePytmeN7t0hd0frYEjP4tlughFTKZO17+BdMsAE6++79rueWDBtl/QgghhBiQBkSAF92zpCr+d7dipAVKFurMexlau1jOlKh45S+KMRYo/dpg/n8MGiVFiwOZhnHHNbdwfpA67CGj/Xt+89wLLHP3Q7mEEEKIk0jvArx1MvcuvIMzAw//cT6Yi3X/uJHrX6tCGjr4OA0uvVwxwgJGm8F/Pus6vAO4KwyeXaF44lRIPk1x/TKDB/NOaGmF6BPm6AlcmZWICcCo4bv1y9na7itnp2FccMF9/Da1+69rZ9nrXPL2l1T6SrGFEEL0GamBH+DCxyh+lgMK2LsGPqzpZmEDvllosGuqIssEP7pI8dr9BiUSGMQ+hp2Sip2ss3Wc5NtCU8kNC+Bop/z9zRw9gasnjcMKoO+kfttytrb3d6mEEEKIrg2IAG/YDa6/VlLmYTS46FxFrAJ0+GzJ0ZvEuHYbvFuouD0TgnIUV2Yb/HVH3xbTaPySW6Z92bcvIrxDL+aVjx7iFQA0UifcwStT0wfGF40QQghxgvTud9W5kSeuvZUXNQCN1Pm3c+/8JEyA0bSCB29+lfUuAANHVa00n/FxlgzFpRkdte/uvQYf5/dgJR0++97glkyFVYPzT1c8sVPawgtxQui7eOH9//F16+EfOMNZR418DoUQYkDoXYA3WijPL6QcABNGzf5rzIbezJ68QnY6u1jvoLbzLlY/eCN37ZrGzQvO4bScKCz2SjZ99T6PPvEF25u98wsUM0ux+GrVcUn8EEcchcaseOgpxbm2jpsrXtL5dani9ksUM9PA2grrVxk88IbBVocX1tvHBKOmKq6aqhifCtEB4GiC/AKDTxcbvLWl63bpU/+fxvOzOwbzd5caXHyPgXW64uezFGOTwOqEvdUGX7xn8OAaDjuhGjdVMcgzE0DVJoMtru636T4VG2HbZTDaBGGjYFYIvN/Us3V7RhE9/098eMfoLvZfN6PQ9MNxBoAWyrChc7h06ChGx8QSZQWHo4bC8q18uWkRH5TU0Na5cCjT5/6Bvw2N9EzC0MCnH/+RvxTYO96PKY0bLruDq6JNKMBo387Drz3Cm/Ude88SlMap2ROYlppFbnQ8CUGBBGjQ1tZAeW0hq/K+4dXN26jc11HUNpkHfvoTTjO52bz8Kd4JPpOfDk0n1JHPB0tf4l+1GSyYM5+z40NxNu7g3W/+y/PFDeiAOfky3pw/mwQFGOW8+Prf+Dj0TG6YMJmJ0WGo1ko2FXzFc98vY1tbf23PYxXE2fMe5O7Bli5eP5tfXfMMv+q8Q6dy48Nc/PUOXMexPb3CcFBZU0JeiyR1IYQYyPrlyrZ16CU8fPMZDA3wtIy1JjNx/o08Ht3O5b/9iiofqbq3pSv+eali2L4UaYHJsxXPR8D8xwwqjvAb2pv1VDBcd5PGLcPo6EDnYY2E8RMU48crLlxocOP/DKq6+81WcNoVGj+fBbZ995khOVUxKdlArTlkeRPMHLn/Nddtg542+XVXG6zeqxgd3zFE58xcg/dX9nDlE+hEHGfKlsGV5yzg+pSwg2ZFswQnMjorkdFZUzln/fP8eukm9hoATSxd+iqfD7qBs0M0IJw5p8zi1cKPyNMVsTnzmO8J79DKuu//xzv1+wpqZsykm7h3ZPhhbcoDA6LISIoiI2kcZ2a8zoIPFlN40GgvGoNG/z/uDArDAmAdxo/PXMDoxgSGR1s6ni9yJFfPvYjtL77AN4cdDIroIVfx+LgJxO978ZBBTBl9JWMSo/nlO++z0QudPnu/PfvL8W7PQzqmGnt44dW/8NxeH/nyE0II4dP6YSZWE8POOp0cm5uW5jbcnT/CishTL+TCLFN3K/eYsx5WbzdYtd1gVR7UH8OP/YgpilwrtDjgwCwUNUZxSYoX1lNw/k81fnlAeG+ugU2FUGr3XCFQMHyu4u9nHBzwD6XFKRbMPCC8H4UWoxgb7bnhMthU3MMVAdywqXj/FYzR2d4/E3RWF7J+7WbWrt3M2g2lNPQ615yA40xFcdYZP+eGzrCpY2/aw7bKUsra3J7tE8jQMdfxp9HxnR82w7GBx5as6BwtxBI7m2uGhKFZhnDFxBGEepaz7/mABzZW0NWoi7qrkdKaItYVr+PLvPWs3tvoOQFTRKRcwILssENCviIiKJDaym1st3eUTVlSGBHtomTPDna1GR33BeYyKb6LvaliOXPsBOKVjtPlPKhMgXFncvvYlOM/Bo5xex4bN7U1eazbs5N1e3ayvrb5gCs6jo6OuHv2/ctjS33LIVd8jnN7HitTGpdfcC+fLXiab258mHd/fAu/nziWdKuvdxMWQgjhTf1QA68w6cW8ctMfeXxVC/Hn/ooX7ppCjAaYkhg9Ihy1s/a4J+lpWGfwk3WeVwyGfz62fyKnnjIZ8J/7df6+FRJPVbz6U0+HTw3GZYHa3fVkUD1dLyBX8YsxnrMoA5b8T+dXC6HZAKww7yca903pCO4TzlFMWWKw7AhtB5QFbC74+hODf31nsKMeLGEdtfizumjWZEmCDE+GNdqgsLZ326a4vKNJjgmITVHEKoNyr9WIGjQu/TcLlnbcUmGn88inv2BarxJb3x9nAYPO4meDQz1BuZHvvnmMu9fvxg5gjuPM03/JXTkxmAhg7Pi5TNzyEiucHe+vvuAt/rFjqKcpTQinTZzLnJB05oV3vEnDmce/vvqK4oNOXHSqSz7nr/lbWFpWTsNByT6ACTPv4tFRsWgEMCFrGKHbvqfxgCUM+3fc+9YrbE6/lvfOnUQY4Kr6nN++8ymOUb/izRnZWAgmOTwIVXLgmgAmzMYe3v74CR4rqMMWfzp//sHFTA5UgInMYVMZsXo3649jjPdj357Hoo0V3z3Cin2vnX0Dn5+1bxSaEt749CHeaur+6Ojt9vTOxyOE1JgQz9/BJMQM57yY4cwZupy/ffASXzT0sB2cEEIIv9YPNfAGTUve5PlVDbhxUrZwEcs7e0BqxMRF9EehutS41uCprR216KUrYJl9/2OxkUfeeD1db/wkRYLnhqvQ4L5FnvAO0A4fv22wwfN7rIUrZg7uvrzfv6rz87cNVpVDowNqKuGLjw1+t5DDanGjYiDQ87feANW9TBfVtUbnc2qREO8rO61TXx9nFkZnj+tsTuKqXMSjGzxhE8BVxcLvF7PFE8BV0AhOjTuw1t/TlKa5YwFz1Bzunprt2SetbFzxMm/WHrrXdIryF/FRWTOxyacwf/w8Fpx2KbfN/BG/mjmfs6L3n6FaI5NJPeQNuptrqNShvbG6c3+7G6uoMAxqG2s97coV4YHBXQz7qFO97S2eLKihHZ2mykX8ffUu9uVnLXgIYyOOZ4se7/Y88Y5ve3pXQOQUfn/ueQyX4X6EEGJA6Ieve53dO4po2XfT3Uhtgw4RJkBWwPIMAAAgAElEQVRhsVp8ZszooiJjfzl1g73NCjyVX1YLRyxnj9bTYHjaAScB4XDbz9XBtXQKkvYtoEFGIqjtXdf6G60Gb357eFAHMLpYISRIdZbfaIXe9omzt+4vhwqCEF/ZaZ36+DhT0eTEHhDMgkaz4Oz0gzsrqoiODqAAKpTUqBDUnv2db/c1pRl3zhTilYbJs6yj/GMeWF/O4XWpJhIz53PXzFmMCTZ3W34VEHLYPjF0N27AcDlpNwAFLrenOYzu9ryewmrqatu0sWF3Hvv7YBuU795CkZ7JEA3QYkgN16DmGNtwe2F7nmjHtz1b2bL1fZ4u9XzAjUY2HPFDqNNYu4m3S9fwVXExuxtrqXcHkJg4lkunXsiF8R3bzRozm2uyv+LXW/tvmwghhDgx+iHAG7S2HtgOREc/NLX6iNb2g8Oy3sNs0qP1FMSG7b9pjlacEd3FcgcIDvSMONPFY3oDlPVi4hlNHbCljcNHqDmag04KVL9cyjmKPj7OVCjRB8xIbA7NZEZoN8ujCLbaOkaWOaCM9QVv8UzhGO7KCOwokVHGG998ya4udogt8Xz+ftYZnU2fumWy9Lg/xGGral3sTaOJquaDTymMljr2GjAEADPBVgt0cdrRI17Znr6py+1JO3k7P6dnExk3s/ibp1l80H1Odpd8w9/fq8Py458zL1QDAhibnk3Q1lXYu34iIYQQJwm54NqPehshVXcruHo+igyAo81AR2EClBUCe1mYQNv+8htt4PD1FOV16hj23+FBTgsZzszEA2YqVXFMzUzhP5WFhwwdGsCU0acxuDO8t5G/9W0eX7eerfWN2N0G8WNu543pQ+hiYMTelbPHj/R+G3T3qt7Ynr6oL6skjLZtfLm7mfOGd3RatoZGE63APuA+j0IIMbBIgO8vBtQ0A55a9/qlBtOfN3oVwg99vt78Zu+t7ajJtwAqDKJ6mTKiw9X+UVXq6X6Iy5OR0Uxdq0HHkDEGDVufYN6iTfSqT6WK5MyZl3DaQWdPZrLGXsFVBffxbOUBz6bFkR0d2BkG9aZv+cdXX7Ou83KMRnhgSN9dCVFhJISYOfD6jxYSRWznC7qwtx/67g30Ay8/KXXk8nljew5QXTWRE0IIcXLzjyqsk5EO20r2N10JHQLDuqk6tYRAsBer8trKYbfnxbVgSAvpfvlDDUrYf/A0l0PFQBu+2qhm516H56RJEZKUQ043TVssASEEHXSPIi7nR9yc0THqiuEqZkVZx1CGypTC5bPPIfeg02sT5gOe322vPXgcexXJqKSYPvxA2xgzeCjBnbc1BqWNILXzjGIvu7sY67PV2ba/r4QWRpTtCAfxcW/P/eXMzjmba045t+PfxNMYE3T0D46u6wc0I+vmRMNrjq2ch1K2HGalhXSe2LU1Vvfz+PhCCCFOhN79TqlA4tJTycxMIzMzlZTI/YlTaSEkZqR1PpYU1r8jRPiDVSuNzqnPTQmKv12rGBdxwAIaJA5WXH2V4uO7FSO9uEndFbCp2XPDpBjWzbj2h9EgN2X/wbM1/ziuHPgtJ+vyNrBv9E1TxCzumjOTUcEHnIUpG/HxY7ls5i/536U/IPeA/aeFTOK200YTCYBOyabX+f2Xn7HR04TcGjuX34xP2z8TrVFHZbPeGYbNkVmM6qy5V0Smn8tlSX3ZAVwRlXMJv8pNJkSzEJdyHneMT+tsrqPb81hXf2iAN2ho2EvnJL2mDM7MTexyduTj3Z772RiWO4+fTT7f8282E3sQjI22lv3txrV4RiSE9GnTl96U05J+KU+fcymXDRlKbnQM0TYbQYHR5KTP5jcX/JTzQ/d9Eh2s3rWTriZ7FkIIcXLpXRMay2hueXHfVPUHU6GTuOOlSZ5bLtb940auf63Ke1OI94I5R/HMfPYHBZNiyAE/9qPOUfx36v7bbdsMbnjvmLvfHTP7JoMnNyvuHtkRhgdPUbwyWdFYDw0uCA2DCE9bc/1YZqLqTrvB0u2K+ad0tK0fmw2mTV13kD2UClVMSOr423AZLN3i3Y6E5rGX8cjPRtI5N40pgszO/WdmxJW/45lz9u+tttWvcOvzW0/4/msp/oR/7R7Dr1ODUVhIzfkx/8y5hKbmBhp1EyFB4YSbtY4adnv1/hVVJGfOuITpns+R4VjP82sKsLeU8MyW6TwxOg4NCzkTruCKwgd4ocoJRiMrCotoH5SFDVC2Mfz6op8zrKCE9uBsTs8esn+G1D7hxmXEcdYZ93DWGZ63ccBjBdu+Y3MXB4+rcjvr205jtg3Axphpv+OdoaWUtLowAHfDt/zty+WUGcexPb3AVbubAjdEmwDCmHPmnxk6roy9LgMwqCt4g7vXl/To8+F15nBysyYwJuv0bhdzVHzOv/KbfL5TrxBCiON3UraB10Jh/FBFwBEeD09QTEzYf9vRAFp//Ozp8PozOjE3adw4tGNSJKUgPBLCD122D4r37fcGdRMVUQrSRynS3zUo6MEZV/hwGOOpGG3Phy+8m6XQIlMYO24EXbe2UISlDWVc2r7bBo694f3TFsyo5r3P/0n0OT/jmuRQNEBhISwkhrDDF/b8r4jLuYybM/dNWORk67oPWNxiAG2sX/URS3OuYUaAQpnSuHLWXJa+9TF5bp3SzW/wYtatXJfY0RY+MHIUF08Y1fHsei1r9jgZkxzf7Yy9x/NeP16Vz/hTTiXlkI3tqPqcB9eWdHkCZbSt5+X1xUydlOb5PFqJjs6gcxJg2/bO+QiObXt6h2Ffxzt55zJhaGTH62rBpMQPoePClE5lTZAPjY91KJ368oX8+ZPPyOuXMwwhhBAn2kkZ4P2J0QRPPKDz1SmKy6YoJg2GhBAw6dDcBLtLDZavh0VrDTZ5uYq5aZPBx3sVV8aCKUUxN9Hg6T1HWUnBzFNUR/tjA75ZYlA2gKv8DMcOnn/3jywbMoMLc0YxLi6B+EAbJt1Js6OOPbW7WFW4niUFW9jm3td0Zoyn6QzoTd/x7Mayzppdo2Ulz66dzZSp6ViBgPiz+e24Ddy4qhSns4j/vHcfxePP5ZLsoWSHBmNyNVBcvpGP1nzCsuhreb2vAjwGDUWvcnNVHb+cchoTo4IxHBWsz1vMcyu/Y2f7kQ4CJ9tWPsrNLfO4esRoRkVFEGLSjhiGe7s9vaeJJYv/wZ11ZzM/K5vsiAjCLWaf6CTkLvucvyypZMKgbIZHRxMdGEKYRdHaWkdJdT7f7VjCOzsLqR1o/VCEEGIAU0NSEgZw/BKpcxXvX64IBHZ9onP+63Q78ocWo/j33xSTrOCuMLjyDwZrZaiQk5I5+TLenD+7Y/Iko5wXX/8T/6ySlCiEEEL0N1+oYBL9aPcSg7erOv5On6Y4LbD75YfOUEywAgYsft9gnYR3IYQQQogTSgL8QNcGT79uUKWDFq64dgZHbIKhQhTXzux43L7D4KEVvj8LphBCCCHEyUbawAtq1hhcfZ9Bglmh2zsCelfNi5UyeO1peBuDujIokg5zQgghhBAnnAR4AQbs2gG7jlKfrjfBqq1S5y6EEEII0Z+kE6sQQgghhBB+ZIC0gTcTk5HEiGExRMk1ByGEEEII4ccGRoBXZqLTE8nNiSLScvTFhRBCCCGE8FUDI8ALIYQQQghxkpAAL4QQQgghhB+RAC+EEEIIIYQf8fkunZotiKTUKJITwogOtxFgVRguF/aGZsp3V5FX3EyrzO4uhBBCCCEGCN8O8LZoppyVTpJFHXy/1Up4bBThMZEMTi1n+fIyqtv7p4hCCCGEEEKcSL4d4DUNswbtDfXsLq6jvNpOY6sbZQ0kfnASIzKDscUmMmmMg4Ur62jr7/IKIYQQQgjRx3w7wLtayF+xlapyB84Dp5tyONm13k4zuUzPCiAwOZZBgXUUOPqtpEIIIYQQQpwQvt2J1WlnT9kh4b2Tm+rd9dgNQAskIkx1tZAQQgghhBAnFd8O8EfjcnvCvYHRZcgXQgghhBDi5OLXAd4SHkSIAtwt1DZIghdCCCGEECc//w3wWiCZQ8KxKANH6V7KpAerEEIIIYQYAPw0wGtEZKcxNFLDaK1n09Z6ZBRJIYQQQggxEPhlgLclpDA5Nxiz0UrhmmKKW/q7REIIIYQQQpwYfhfgzVFJTJsUQ6jmonxDPuvKXf1dJCGEEEIIIU4YvwrwWmgsk6cmEm3WqdlWwIqCVvT+LpQQQgghhBAnkN8EeBUUxcRTU0m0GTQUFPDt1mac/V0oIYQQQgghTjC/CPAqIJyxp6aTGmTQvLuQZRsakUFnhBBCCCHEQOT7Ad4ayshpGWSGKhxlu1m2po4WGfJdCCGEEEIMUOb+LkC3zMHkTs0kO1LDWVPBqg31tFvM2LpYVHe6cEqDeCGEEEIIcZLz6QCvhUeRHm1GAZboRKafk3iEJXUq127im13SKl4IIYQQQpzcfL8JjRBCCCGEEKKTT9fA6zUlfPp2SX8XQwghhBBCCJ8hNfBCCCGEEEL4EQnwQgghhBBC+BEJ8EIIIYQQQvgRCfBCCCGEEEL4EQnwQgghhBBC+BGfHoXGawwXNUXlbAtop06GihdCCCGEEH5sYNTAKzPR6Ynk5kQRaenvwgghhBBCCHHsBkaAF0IIIYQQ4iQhAV4IIYQQQgg/MjDawB8PSzjTfjybn8zNICcpmCCzQik3G594kmteq0Pv7/L1CxMz7vo1D59pYdeLz3Ppc+W4+7tIvsQUw5VP/IxfDqngkWv+zUslRn+XyAs0Jtx6C89cFHbAWb+b7+77Bzd91IJfv0NLJne9fTnzo9T++9p38IcfvMbHzf1XLNFDKogz7lnAfbPaeP2WZ3hgfXt/l0gIIfqcjwd4jdD4KJLjQ4iOCiI8xEagVcNwObE32qksrSavsBF7n6VHKxMWXMkjF0djRsfR2EylQ8fATXXLwIzu4uiiZ83imuFmqj5awjsnRXg/WHt1JZv3tGLgJq+mqw/fvhM8G6qLRzs5C7n3kv/y1l4vFk6LYuaPRjLU6mDdR6tYUd2D7a87KN5SzJpQBbYwhuZEEuzFIvkfP9t/RguLX1rJjhmzmH/jRN5c8C2FUqMghDjJ+XaAV4Gkj05jaNghPyNWK2ExVsJiIkhPq2LFtyWUt/bB6wdncfE50ZiNRj798wvcs6gBGcSmg6OmluLdZvbUu/y79tXbLIlceuVQItwVPP1WIfb+Lo/XGdR+8xnXP1yEq7+L0hVTNDN/PIPzQ2r5z4rVPQuA7jL+e+eL/BfQBk3lPy+fwcg+L6jo0rHsP8C9ay2vrpzKn6ZM5idT1nD3slb5XhJCnNR8O8Cj09rQQGFZE9W1Dppb2mltc2OYrUQkxDI8N5qIyDhOGdfCF8trcHj5G1tLiGWwDYzW3Sz6RsL7fm5WPvUsFz7V3+XwPSGTJzF/sEb7unV8WDRQr9K4+e7vjzLrMdVRg2vJ5M5X5jM32M2aJ57h15/aPeHKTUtjvxZUdMkP95/RzOIPt/PLKaOZ88ORPPXdKsoH6sdPCDEg+HaANxzkrcjv4gEnLU12attMnDkxEmt8DMkBNeQ7vPvyymbBqsBwumiX6hxxNCqY2fNyiVJOli/cRuUADhBOh4OGfZ9HS1vnya/L4aC+wc/bzA8A/rj/7Ks3s6RuFBeMGsd56at5bpcvllIIIbzDtwP8UbTV2mk2IonSrAQHKY67Cl4FccGDt3HPZNPB94eP4fGvxhxwxyGdWDvXg7WPPsF1b9Yf3LnVlMCCf1/HdYNdfPr7B/jdN+5DXq9jvRu/juRH183ggqlJJAcbNJTsZuHri3jyk0rsR3xrJuLHjOFHF4xg2sg4EqNsmNvslOwsZumitbzxWREV3ujTZRnGA59fwhnWA+/UKeiuE+uxvr/j3i6K8OyRXH7pGGaNTSA50ophb6RwSx4fvfYtb69r7PpqihbKDx++hTvHw4oHH2HBxxoTL57JT+ZlMyI5EHObnd3b8vngxS95eZ39sBCjonI4c5wVXEUsWXn44/tETb+AV/5vNHH2Au6/7n+8UXpI0tdCOPOen/HX00Owr/6Mq361kqIDN7AWSO7cqVx1bjZjMiOJCgRHfTPV5ZWsXbGdTz/ZxPpqPzx7OKb9rki//FrevDH5kC+zaK5+9i6uPvAuZxH3X/pfXqvyo2BnyeDn/zeStoWreHdJGTW+fBmwv/df626WrHZw/plxzJ0Vzwu7KqRzvRDipOXXAd4aGUSwAgwXbW1eeELDTXVBMWsCOgK8Copk2JAwbO5mCjbX0NC5oE5BlXdbAGuxw/jj06dzVryG7tZRJo2YjCx+9Nskkoxnue2ThsNHvDGFMf2my7j3okRCNDAMnTZ7Oy5rKJljR5I1bhijbY9z3ZtdrNtrdnZtKGaNZyKs8NQUMqP6+P0dy3rKSu7FF/PITUOIM4Ghu7A3OzGHRjJ82ikMmzKM6U++wq9er6DbCzamSOb96WLumh6GaV8XDHMoWRNGM3/7av63zn5YOAgdN4TRNtALilhXc+SQWLv0c/7yUSqPzcvg5t9MZOVtKyjqPJwUcaefze2zQqEhj4fvX3VweFfBTL/9Gh6cF41Vgd7WSm29E1NwGBkjI8kaNYS0+gJufL/5iCcQlonn8clD44nRoG3pO8y+cxMt3W2LftCb/d5aWc7a9S46PrWBpI2II8bkpCKvjD0HvjFXJVVOPwrvAJhJHDOGc6eN4braMr7+eDVvfrCZNeVOn6wF36d/9l87G9eW4ZybRfrkTAb9u4JiPzyPFUKInvCrAK+UAqUw22xEJ8UxfHgkNmXg2ltD6ZGrqHuhjW+ffolvPbdMw+bw9tPTSLHn8+it77Osz2q/TAydP5P0ncu5/fZlLClqxZKQwdW/v5jrxgZx6hUTGfbFIjYfdM5gJvfKH3LfxYkE6E2sfOlzHnlzB9tqXaAsxGYP4YKrZjCm+3Ekes5ZzD9v/U9nefcNI9l37+/Y1ouecS4P3zyEWGctC5/+hMc/3EWJ3UALCGfsvDO4Z8FwJt94EddveYZHDn9BD0X0nLncNkxj47uf8p/PCthZ1Y45IoaxsyYyp8vjwMTQ0ckEKoOmvDKKu6v6Mxwsf+oDXh99BT8aO5u7LtnFDa9W4wS0uFHc8YtcYmjmy8c+4v3yg49rU/YkfnluNBZXDR89+BYPfVFBvQtQJiLSUplxxliymnw52vVEb/a7QcWij7l+kWdVyxD++N6POD+kkc/+/l8e3ernCc5dznvPryLigpFMTk1i7pU/4Iwfz6VwxQbefHc1H6/YS5PPvcX+23+NeWWU6FlkZqQyKvRbihuOvo4QQvgjv5nIyZqWxfyLxnPx/HFccO5wThsbS5QF2mqqWLGymmY/zyzWtnwe/MMiFhe14gZaK3bx7EPL2eECU1I64xMODuJa7EgW/CiZQJxsfuF//OKZLR3hHcBwUr1jK8/94V/8/otmnxirvrfv75jWswziqutHEE8ryx97mTtfK6DEc2Kntzaw5s33+P0b1ejmaC64eEg3QwVqZI2IYduTL3LDP1byzdYaKvY2UZpfyIfPvcGtL3XRZEgLJTsjCA2DkqLao47QYjQX8eR935PvtDL22h9wZZYJtHB+cPtcZkRC5Zef8rcvGg/bd5G5g0g2gWvLKp76zBPeAQw39UWFvP/cOzy0+MjNd/zFsR4vJx29idVvfsJNV/yD8xa8y9OfFlPutDF46iR++8ACPnvtKu6+Yhi5kaajP9cJ1F/7z11azW4XKEscOWl+8/MmhBC95r/fcIZOS2UZ3y8vpczbw8+ccAZNKzbyde3B9+qlJWysM0ALZ1DCwbsqeuoIJgaBXreV59+soMsWREY79Q2+MNhf79/fsaxnGT6Suckaev02/vd5XRftX11sW5pPua4IHZFGTjfXn9wlq3n83b101X1Ad3dxvGnhJMVrYOjs3duzk6aWTV9zz8tltNkGcd0d0znjovP45eQgjPL1/PWRrXTVCscwOu7UwoKJOMZPr15fyYrleSz9Lo9vtzf64HCQx3q8nMQMJxWbNvLsvf9h3gVPctPfv2PRTjvmxMFceMMlvPL2Lfz3nlnMGxWGrb/L2p/7r72ZqgYDVAhJ8T29QiiEEP7Hb5rQtBfn83YxoBSWwEBiB8UzIjeJ6XMj2Lkyn00Vvt0mtHsGZUU1HDaUvdFGU7MBMRYCAw58wMSQofFYFLRv28V6L4++4329fX/Hsp4ifmgi0RpgS+eGv1/NNV09pS2MSEBFhhFrhq7Tq0H16nx29CbZqgDCQhTgxm7v6Youtr30Ps9OvJabR0zn/hzAXcMb93/B0iNc+q/bWESBM4PcwVN44H4L//toG99vKKO41tXjKy3uvFX84bererh0fzjW42Vg0Jtr+O69hXz33mKisrM5b944LpyTwYgzpjNyzhTOevAxbvrgyH0g+l4/7j+jDXuLAUoRGmpDo80nrkAKIYS3+U2A72QYOFtaKNtZSE2jzunTYsmemEbjonyKfD7IHomBw9FVw2qDjgpXhXZQhZWZyCgbGgZN1U1eH//e+3r7/o5lPUVkVDAmQAuOZMSYyO6LpDTMRzz6dSrKetvxV2E2dazr7s2Kzipe+vu3nPGvWeSaDSo++YzHVx95Ehq98Hv++HgSD/18KIMmTeY3kyaDoWOvrmLzujw+enM5n2x3+HloOdbjxU9ocfzsX9dz45BD3oTewnu//gd/WtHTsVPc1Obls/BLK8ER4Vw+I5ZgTcNi1lDQrwG+//afjtuz+TSTPx8kQgjRPf8L8Adoq6yiqCGG4eFhZKTYKN7Z5se18OK4eZrVti9/n7m/WU/DcRwMba29nWHWhaPVAJsZm7U37XstDJ09lAwTgCLulBFMjMzn67ojLe9k5zuvc9HSQcyaPZTJo5MZMSyZjNgEJp2ZwCmzhzP+7n/z56X9WQMr+po1KokZZ3f0B5qcEoCmwNVQxdefruKVZXY/P4E7DsqCzdZx+tLa6s9XZYUQont+HeAxnB2hKUIREhqAor8CvIHu+cVUXWU3ZSEwwJudtlzU1bajE0RobCiBCvxudDyvM6irseMmCi06jFjFcQX4XtObqa41IEIjMjIQRVOPjsXgMbP4448TsbZVsmZXKGOHjeJ3t+az9Y+bqeomhbVXl/L566V8/jqgzCSMGsOC287gvMwo5l1/Cm98t5htMgi2b9KrePaav/Bsb9czBZI1aSTnzxvHuZPjibQAhou92zfz7rureGfxbioOa7cywKggosMVGE5qao58JUsIIfydfwd45ZnAif2d+/qF4cTRpmNgIjQs4LCBG1VINOnR3gzwbvK2V+A8LwPrsEzGBm1kid2LT++XDCp3VFCjpxCfnsGE+KXkl5/AY8JdR2GpGyPDTFJyOCaajto5VIVmcssdk8gwt7Ph+XdYsDCBvz5/AafPPJvfn13KrR/X96wm1XBRsWE1f74vnJH/PJX05ESyQ2DbgBxCT0c3AKXQToqBahTByenMPXccF549lBGxZhSgt9az5ou1vPHuWr7abu96YjK/dHz7T4uKJCkAcNdSuGfAXocQQgwAPt1IUAuwEtDN6GgBSfGkhSowDBrqHf1Y26JTXtaIjkbKiEHEHLRVFYmzRzHOeqR1j03Nd5tZ3QJaRC7XXpJwhJEnzISG+Nbwcn3JuXkzi8oMlCWVK6/JJvJIAUALZFDi4Sdax6ed7dv34kYROziOsKM9uQpmxi/mcVGyRsuGr/nL61W0V23i/ke3Uk0Qp940jx+mHP7xNHnaN3f5lGYTJgWG20VbN2cPpuxJ/O3vV/DkQ1fw6DXpPjBqiRcZbTQ101ET62NDKx4TyxDu+NdV3H3VCEbGmGjenc9rj73KDy98jJ/+bSlfnFThnePef+b0eNJNoDeUs7VM6t+FECcvnw7wloQ0zjorl8mj4kmNDyYs2EJAgJWQyDAGj8hi1sQoghQYjlryS/uzvaNO/tpi6nSwjZvOnRenEG0BzIFkzzmLB36WTNfjPB7HK1Zv4snXynBgYcRPLuexG4aTG7XvB89EVGY2V951Df93dqhv72Rvcpbw4nNbqTYUSWfP59k/nMKkQTbP+1cExSUyff5cHvnvzTx6fpSXt4tByZpCynSwDE1heLcnbB2zrf7uzHBoKeLJB1awyzOpTfXiT7l/USOEZnDTnVMYctBIeBoZl1/JK/eewaWnJpEYrHXeHzZ4GL/8xTiSNXBsLuh2ZCItPJYJp2QydVImk7JD6YuYawkMJDw8iIjwICLCbex7G+bAQM99Hff3qrtAT7hr2FHoxFA2pv1gDINPgtFqlNvOjiXf8n+3Ps5Zl7/C/W/spKCPJ+vyz/2nkTEqmXAN7Ot3sfmkOrMRQoiD+XwTGlNgMCnZwaRkd/Woge5oZOuKEsq6GrD7BGpd/T3/3Tj8/7N33/FV1ffjx1/n3Jl5c7MHWSQQkhBGAFnKVMG9UKrV/hy1ltZR7XBWbfut1bbWVbXaulr3qBNEpQgyZG8IAbLJ3uNm3nvP748kECBAxk1yb3g/H48+Ksk9N5/zOZ9zzvu8z2dw9wQ/Zt95M7Nud2BHh16xk/XRSj6bdC4/iHPlX7ST8e/3uM/yAx67MoKzrl/EW9c5aba1YDeY8DWpKIqDbftdcKPXhXHtIwuZH3j0bm2JMQAqkQsu4eXxrUcenhw5W3j4qT2UDsnba42KlZ9xV6CBv/18NIkLLuAf5y+ktbGZJsWIn5eu47W8k9w1rv/r9sz9rC6azg2R8cxI0bFme/ed0NWICTz4ixRCaGbDS5/zfn6XytJsrHx2GUvHL+bitNk8ekMON79adPT5T+fF6NkzuG/2DO51Omisb6ZZNWH11aMq4Kg6xLPPbKdkSHsP6Jjxq7t4aoHpuLcFOibd/jNW3t7xz7Yc/nj1v/mwwoV/WmtizSe7KZoxiagZF/L+pzPJL2qkxQnYi3j9/i/4uuq03+I+7Pk8dcPTVFYN5mz9Hnr8VCvTpgSj05rZ8F02jS4slhBCuBu3DlVHD2YAACAASURBVOBbC/P5zm4hLMyfkAATXl4GzEYVHA6a6hspL64kK7ua6hY3eFXqKOetB9/CvmQ+i8+OJMoXagty+fa/q3jxCzvXvjIQf7OO755+hUWrJ3Ld5WOZMS6UiAAjan0NB/aXsHnlVt5Z2tvpELuhmIlJjWVS2InpNq/wCNLDj/7bbjzIkCY9tVYyPniXa7Ymc82i8cxJjyIuxIzZ3kRRTi0FWQVsWLuX5WuLulnoqZ/shSz9ppxrbwzhnNkjeGp73okLQemCuObe8zk7AGo3ruCPn1SdUA6tJpMnn9xO+p/SSb7hMn665RWe2dUKOMn74gsebExmZnoMY0cFE2H1xuJooSKvkO3rd/HOuzvYWXVm9/2t37icJQ/Vs2TxWKaMshKXaGl/cGtrIVA/tBMs9prWTKUnPXC4QF+PnxqZxLxRKs7qTJZukAGsQojhTRkVHT78r3OKmaS5qYyz1LNt+QGyPHa+eOHu1PDJvPjmRUxu2M6d137GumHT1lQm330XL13lR9lH/+aSp3LdcAXX/lNHzOD1N88jzZnJQ5e+y9KGoS6R6BmV0Tf/hLdvDqHgrVe55sXC4TU2QAghjuPWGXghPI2zZBevLT+byZelsHjet6xf2rPpJD2HQuCshbyU0IyGgz1vvc8z33v4+gu6SH70f+cxy08Bkz8jVThzJ1L3UF7xXH1xKKrtEG98VCTBuxBi2JMAXgiXamXTm2vYcN5FTF88hZSvV7J3mEUTxpAw0kMAHLQsHwYzvahexKbGMilwWMw7eQZSiFw4gwtCnGT9ZxXLyjz6cVIIIXpEutAI4XI64mZNY0GCgz3LN7JuMOejF+JMo3gx/qIpTAuqY91HO9gj3Z6EEGcACeCFEEIIIYTwIGfMFOFCCCGEEEIMB2dGH3jNTmVuMRnmVqqHWX9kIYQQQghxZjkzMvCKnqC4CJKTArEaTv9xIYQQQggh3NWZEcALIYQQQggxTEgAL4QQQgghhAeRAP6MpmP2b+9j29rf8uGtEQz6jN6GBH772cNs/+5O7kmTpihOY9i1lyE+/3pLF8wNLz7A1hU3c0O0zJk/bCnenPfor9i6+g5+M8E41KURQpyERw5iVbxDOPvcGMKNCrRVsu7zHIpk5UQhhOieGsica9MYY2xi+xeb2Vje+9mDg+bO5aZUPWVfrOa/BSfZXudF7NhYJqVFMz4tmnGpEcRY9KjOcl75yT/4e+apLtQqoelncesPJ3DO2GCCjQ5qiorZsGID/3xnP3nNrt5u8OitEcw+P4350+NISwgixE+Hs9FGYXY+a77axNtfFlBhP9nWg1wvWiMr/7OJzNlzuXLJFD742TpyHP2uAiGEi3lgAG9gRFokYUbJALlCU2UVefl6CmvsDP8FAYRwL4N2/umCmHPdbC7zreL1jVt6H8AbIlh8wxgCHCW8+GEOtpN8TA0dzyNPL2BirycL0BF36dW89MskQnWApuFw6giMjeWiW2I456xV3P7L79jd6KrtBo8SMI6/vHsFc3yO+4W/P4kTxpI4PpXLFqzm1w+sZlvd8VsPTb04srfxzqYZ/G76NG6evpWH1zbL/UEIN+Nx76ENYZGkjdBhq2+RC0q/Odj0wstccd0L3PVBOfISQ4jB5Dnnn++0qVwZr9K6azuf5566pM6mOjK37OW9V7/koSe3k9eD7K0ubiqP3plEqOqgYMVSfnTZH5ky7wmufngT+2zgP3Y2f7g1Fi8XbTeo9Ea8jU5qcw7w7gsf8/Nbn+fCy//GxTf+hz98WEC1phA4YTaP/yIZ63F5qSGrF62BlZ/vpxpfzr0mjXCPixSEGP4867TU+ZI8LhhvWwV7siUjIIQQA07xYd4lyQQqbWz9JoPSU8TvztLNLLn4KX7wiw95/NVNfLmzhqbTXqgNTLl6KmlmcORv5LePb2F3lQPN0UzWyuXc+688GlGJuXAm5we6YrtB1lzMe4/8g4v/3zs88fYu1mdUUFxRT+GhbP77zFvc+99KHCgEz5nCeSFdI/ihrRfblj2srtYwjUvn4jh54y2Eu/GgLjQKllHRJPrbKdxUTLkubqgL5JkMKfz5q6s575ixSU6y3vgXi/9ZTLfJMsWby/9yD49Mg23P/J0lq6xce+tsLp8RSZSPRm1BPt+8t4Lnl5Vi6+ZmrXiHcP71c/jh/DgSQwy0VpSyYfk6Xnj/dKtqKVhGp/HDxROYOzGcKKsRzVZHzt6DfPHuOj7aXkfXbwicdTlv/d94Qm1ZPHHr27x/+LhIQ/VlwSM/4bH5vti2LOdHv9xE7pnUt1P145qn7uL+SbDxL0/zs6UqUxbN4eZLRjM2ygt9i438jEN89sb/eHO7DQ1QfYOZOjeVeVPjSI23Ehbii7/eTk1JObs27ua9d7ayqey4Shyq9qKaSTpvBjdeMoZJiQEEGJ3UlZWz6/udvPnmNrZVdmkPnWU8q4EP/rSC1gvncVmyD7acvbz42Jes9JrEg7+ayTmxBmr27+SZP37F164YaDNo559C3A9v4YMlUcdd5IO48eXfcmPXH7Xl8sTif/NuWfeRthKYxIJ0I9hzWb3JdurEidNBr9fKM4xg/kw/VJzsWbaN3cf0zdYo/Gor3/84jvneccyb6s1nXza2l6Gv2w0yraGQld+d7JctbPs6k8IrZxCjD2FUrAqd59NQ10tzPqu3NHHZglDOnxvGq9kl3bdPIcSQ8JgAXvEJZnySN1rlYfYcbkOLHeoSeSob2Tvz2NrRR9USE01CL7JTakgKj744n4VhKk6HE0WnEjwykWvvjSRSe5l7ltUe0xVA8Y3hZ09dxy3JJhRNo625BWdIFOffdA3po3dx8GRTbyhGkhct4unbRxGqA81px9bQht7PSurMs0iZnsKs59/il++V0NSxSdWar/jDFzE8e8lI7vjNFDbds5HcIwPDFELnX8Cv5vpB7UGeemKzy4N3w5SLWfbkJIJVaFnzX+bdv5sh7Hp7ajorl/xuEb+d5Y+uM7mm9yNx8niu3L+Ft7fbcKAQd9WVPHtrBHpAczppaWrB1mYgMHoE82JGMOf8FJ7/9du8uq+12z8zaO1FZ+G8+27gDwuDMCngbGvF1qrDGjWCuVePYPa8JP5yz/u8m3VceKn4sPAXl2FwtNCmMxKWPJH7H/XnQv94Jng10YSRiPFn8fAvitl27w4q+h0BDt7511xazLYd9o7ZbbyIHRtKsK6NkoNFFHZtmPZSytpOvmN+6aMYbwJnVi7bK10fAqtRI0gNUMBZw45d1Sd0JdIaDrPtkIP54/WkpIWj/zKbtn5s5260xmZsTkDV0LrsxNDXSyu7thXRdn4icdMSGPFaCXnu3M9LiDOMhwTwBqLTIgnVNXNgdzn1GpiGukieqi2Pf9z9esc/dMz+7a95akFPR5zpGHPlHOIOfM+vfrWW1bnNGMJHcuODi7h1ojdnXz+FlK9XsOdI0Gxkyq2Xc9MYE1pNLv/8wye8tqmWZr0f6VddzGM/G890BbpL/wTNvoin7hhFSFsV37y4jOc+z6bApqGaLUy85Dwe+Vkq05ZcxW17X+Lpzj+oNfH9C5/x3vjruXbiPH57dTY/fae8/aYWOo777kwmmAb+9+wXfFo8VB2wdHj7GzEqPX0lrdHW1Iyt1ZXlVQg693zuSVHZ9fGXvL48iwNlregDgpk4dwrndrmbay117Pgyk6UrMtmwp4wSmxNQ8AqL5tIll3HP/FiW3H82G25ayb4TZtEYrPaiEHXppTy8MAijs5ZVL3zMnz7Oo6xVxTIqjTsfuogrEhK55+Fz2P3jleztGq0oOuxbPmHRb3dRE3s2L78yn/EJI0neuIyr7ttCcfBknnv9IqZNHM0k7x18dbLRmz01aOefRsmKpdy2omNTwyge/eRaLvOtY/lf/80z+3oaiekYMz4KL0Wj/mBRj/qz95Y+MogoHWCvJq/jLYcxOJzUkGYy99fQ6Kwnv7AV53gvLFFBWNVsypx9387d+CVGEK0DraWEvdlHK9gd6qXuYBEFzkQSRsYwzm8debUDXBlCiB7ziADeGB5FWpSe5vw89le64RX4DGJsOcQfHlrByqr2fztKsnn5ye+Z9fo8kiPjmBSusOdwe4SlWJO5bqEVndbM6uc/4h8bG9pjr7Z6tr33MX+MX8LTF/mjHB+QGUbwo9vGEkYz6599k/s/rT7y6tbZXMvWDz7hweBQXvthMJcvGsU/92QcmRVDa8jl+cc3MOWZmUy85VJu2Pw6r2b7cumvzme2FUq/+ZI/fV03dAMGDQk88MG1XHT8jBQn5WDz357lp/91ZZlVEscGs/G5V7jzgwqO5M4r6jl8KIelOqXjb2nkvPcut54QMGs0lebz3p+/IiX9B1wak8z8xFXs239iCQelvegiuGpRHL6KxuFPPuHB9/I63nw4qT24k8ce8SXxlXMZFz+J66av48HvWrrsioPdaw5Q7gQt7yDf589lfKLGvu/2U9gGWmk2G3KcTE8OJD5chayhvf70pj5dQvVj9EhvVDQKcqs46UyH/eBt9cGsgGZvpLoe1MhJPPXPi5jhb2f/66/z/14poaa6EQ0v1AAfAhQo68d2bsUQyqLFo/BRNCq+3cq3NUd/5Q714jhcTr4dEg2hJMWqfL5L7r9CuAv3H8Sq9yV5XBDe9noy9tXQ/Yt6MTg06jfuYlXVsT91Hi5gV7UGqoURXaYrMKclkO4NWlMWS9c0HJs41ZrZsCyDkm7uB4bUNM6PUnHWZPD2V9Xd9Lu0k7HmEMVOBb+xsSQd9xjauHsVj7xZRItpBLfeN4vzrrqYX0zzRivewWNP72MAegEA4KwpZeP3B1mz/iDr9tcNSLDjKo6CLTz3cUW355PT0aWCTlVXzaXsz3eCaiE6oru+LYPTXtTokUyNUsFRwVfL8k/otuTI28nnu+xoqhdnnRXFMflurZWq6rb2v6U1UlWjgeagsqqp42dN1NRpoHgRYDlFXQyK3tWnS6gWIsNU0JxUVDQMwIOvgtmsRwG0VjvNGugTYxnvr4BiIGHiCAJVaGlpP5sUkwGT0p/t3ImepB9czE1j9GjVmTz7rwPUdRnD4Bb10tpAWa0Gii+RYb2eG1QIMYDcPAOvEDAqmgQ/jZr9h8np7+tr0U8aRbmVnLD+h9ZCfYMGwQa8zJ0/VAiPDcJLAcfhUg510xncnl3MITtEHtMKFcLGRBCkAqY4fvrXG7mpu6KY/LECitWfED0cGy3byfjPp7w85RbuGDuLJ5IARyXvP/E1awbwFbDj4GYeunfzqT/UdoCHFvyOhwauGD2gUb7lEJk9fMLwjhnNokUTmTspkpHhvvgaVdTjbvre3noU2o6L9wejvYA+KqS9C0JTKRndddLVGsk8WIc2JRBLTBCBajalRwpqp/lI9yQ7rW2AZqel88lGs9PSpgF6TIahjgB7U58uopjx91UABzbbAD2SHtedrG3bVt7eFcd1sQ18+cF+ypzg58rt3ETg9AU8fnM03vYqPv7TFywtPe5p2R3qRWvB1qiBouDnZ0Klxa2nOxXiTOLWAbziG8L40d6ojRXsPtAoF44hp9HU1N1wJw1NA1BQjyQAFfwsXqiAva6xS2apy1bNjdS2cFwrVLAG+qADVB8rYydYT10kRUXfXStuK+M/f13Hea/MJVmvUbJsOc9tkalH2zkpKartwfmkEDrrIl58eBIjzaC1NVNcUEJ2XVvHWxEdIQlRxPiBTt99Bn7g2wuY/b0wKaA1NFLbbYypUVvTiJNAFD9v/IHSE8pCx2I3GuDE6ezyeyegqOhONoB20PSmPl1Fof3QOnEMyAVYo7mp/cFPMeoxAVpDHi/8/G+8cOQzKiZT+0HXWtpo0fqznXvwSZnN3x6dRJzOxtqn3+GJ9cfP7uMu9eLE0fEKVNW5/wt7Ic4kbhzA64lKjSBE76BkZzGl7jh9gDg1rY93zI4EUuv3n3L+b3ZQ26evMTBm3hhG6tq/MPSssUyxHmJVdd+K5Do6fK1mTL0ZxGprpM7F0UdL8+lX/lT8x/CLX6cz0mQna+kXPPj8bjLruk6TYeHaZ+/gNxOOHLL+6Wt7GSRDnX8fGnaamjUw6TEN0OrXjTU2mjUw6r0J9Acqj/+EQoDVGwVw1Nio0fq33VAzxk3mT4/PZpxXK7tef5f7TtKVzS3qRTFgMrWPHG9uPv4NmxBiKLlvAK/o8fHRoygKEZPHsWjyST5nCGLmlUGg2clbv5NNQza7iDiWRl1tM05A9ffGonBC33PF7I3lhOmENKorbTgIRA3yJ0ShTwG8z4S5PHpdBMaWUrZm+zExZRwP3H2IfY/uGdqZKAwJ3PfuUA9i7RnzhGTODlBwlmzj8b/tJLPluA8oPoRYTzKNUK/1tb1Ac30TrRoYfH2wnNCdCkDBEuCNCjgaGjlhtXpxcs4Gyqs0CFCxWr1QqHd5EGcvrKTQAf46KzGRKhw/UYHqS0yUERWN6sJKqp39224o6SLG8uhfLuBsq4Osjz7g7tcOd7sWArhJvSjeBFkU0NqorJQ3mEK4E3knJgaIRkleBY0a6EaEkeB94if0IyNIPOERUqM0s4RKJ+jiRjI5rPdZP8Uvgbvum8pIfSs7X/svP3voK76tgpA5F/DgBQHS6HtEwT/YD7MC9sNl5HSTIlRDY5gQ6ara7Gt7AfvhcvIdoJjCSI7tpjyKD0mj/VHQqM2vpMoNArnB58SpAYpywviFU3JUk3PYgYZKZJSFgehF5CwsZG9N+yDcCeOsJ5yfik806Yk60Ozs3VNy5Pmsr9udwOBD3OhIUsZEkhznN2BTFKuBo7nvr5exMFyj8OtPuOPZLKpOEREPeb0AaqCVSDPgqCKn8Iw8cYRwW+6bgdeayVy5lcyT/NoUN4qLJ1tQ2ypZ93kOrlgkUbhWy65DbG0cx1yvBC46x5cVX3aZWUQxM+3CZMJVOD613LZnDyuKJnN9VAw33DSar/6USXV3NzrVixFhGoXFXTJDig+z77yEq6JUGneu4g/vldFqL+eJZ0Yz7pFUzr79Eq7Z9RbvFri+wehGT+X/fjIKfwXse9bym9dyOT5p7R6DWHtCw1bfjEMDY0QQI/RQecz86WamXDeFcS68gvS1vTgLstlYOJeU2CAWXBjDq5m5x8xEo4sdxyVpehRnI5s3Frp8MZ8eHfehprVQ3wBYvAmy6jihEk+qlf37K3DMiiAkPhR/5fApg84+aStg5fp6rrzUn5QLJpL64Qp2H6lAhajz0pnmDVpTLis3dlk1tK/bHUcNTuPhlxYw0QCO7O/44U3fkuni+e4VSxx3/OUqropRKV/7Bbc/vrfbGZWOMcT1AqCPCyNOB87qYvYVSf5dCHciyUgxYLTaTN5ZXo1DMXPOz6/itqmW9inLDL5MXHwFD17QzZzeAG0FvPHPfZRrCpEXXMnLD53F1BGmjsaq4B0awawrz+fpf9/BM5cFdmnE7autPrDAAo25PP/njWR3LGpTvvJLnlhRB34juf3+6YwagBnRVEsIk89KYMbUBKaO9huQbOVgatyTw+4WUKPS+dVtoxnRMcOJzj+U85Zcy+OX+dLc7Lqbep/bi6OYjz7MxaYpRF12Of93TSwhRgAVS+I4HvjdbNJM0Ja7jXc2uD609ojj7qgkM6cNTTEx89IJxPd4thqNgq3tCRLDmGhSjaf7vILJ14sAizcBFm+svgb0CoCKyc/7yM8tvvou520bm97fyO5m0MVO5f/um0SqVYeimoifez5/ui0OH5wULF3H18f05+7rdoNL8Y7ilscW86MkA7Z963j46UxqvY/WxdH/eeFzzHVpqOtFZeS4KCwq2HZks0fGoQnhVtw3Ay9cTxfGtY8sZH7g0XfolhgDoBK54BJeHt96JBvjyNnCw0/tobRfiepWtvzzE15L+SG3JMdx21/v4qamFtr0JrwNGmVrdrB+/HhmnjCnmUbFys+4K9DA334+msQFF/CP8xfS2thMk2LEz0vX0Q3ASe6ao1upERN48BcphNDMhpc+5/38LoXXbKx8dhlLxy/m4rTZPHpDDje/WuR+mVI34izeznNvj+PFm6IY+4Nr+fSqFmoaNHz8zZhUO9mffsk3sRdy20RX/cW+t5fCzz7j96k/4g8LApl7543MXtJCfYsOPx89qgLOqiye+cN37B7KhSQG/fzrQmtizSe7KZoxiagZF/L+pzPJL2qkxQnYi3j9/i/4uqr7Te2Z+1ldNJ0bIuOZkaJjzfZTpKfVEP7fc7exZNTxuaEgrn/6l1zf+Z0HV3HdLas52LF/jtyNPPpcLC/fM5qY8y7mzXMvwuEEVaegoFG/+zt++688mo771r5udwxvEz4dxW2pqHP5YFddQiqXpZlRAd/Uc/jHR+ec5JMONv7laZZ8evTN05DWi2pl2pRgdFozG77LPmF9BSHE0JIA/kyimIlJjWVSN/3KvcIjSA8/+m+78SCumFJaa8jnhbv+RdYNc7hufjyJIXrs5Yf5atlanv/AwU3vjD/Jhq1kfPAu12xN5ppF45mTHkVciBmzvYminFoKsgrYsHYvy9cWtU9pqAvimnvP5+wAqN24gj9+UnXCAlBaTSZPPrmd9D+lk3zDZfx0yys8s0uWBju5Nna/9h9uLpzFbVenMDneH4tPK2WHMln5yRr+uayOBX9z7V/sc3tx1PL1Y/8if/N0brw0mUmJAQSYnNQWF7Fr/U7efGsrW8pd3C+it4bg/OuqfuNyljxUz5LFY5kyykpcoqX9QbithUD9KQYj2wtZ+k05194YwjmzR/DU9rwBWFDPQe6n73PD4Snc+sOJzEoNIsjspLqgmA1ff88/39lP7gkT4Pdnu6MCU2OIVQFnLcve2e26hyaXGLp6USOTmDdKxVmdydINMoBVCHejjIoOH/7npWImaW4q4yz1bFt+gKxTph2EEEJ0pYZP5sU3L2Jyw3buvPYz1g2ba6iR+Y/ezV/ONdOyYznX3LmRARge44FURt/8E96+OYSCt17lmhddP3ZECNE/0gdeCCHEKTlLdvHa8loISmHxPL/hMye+PoJJY00ozjqW/We7BO+dvOK5+uJQVFsWb3xUJMG7EG5IAnghhBCn0cqmN9ewodHI9MVTSBmAQeBDQY2JZWKwQvOeDbyxWbrTtVOIXDiDC0KcZH20imVlw/8lvRCeSPrACyGEOC1nyQ7+8kczCxIcBAQrMAwWzXNmf8e1c74b6mK4F8VMSFse//nXbtZ9VDQA4x2EEK4gfeCFEEIIIYTwINKFRgghhBBCCA9yZnSh0exU5haTYW6lWkbjCCGEEEIID3ZmZOAVPUFxESQnBWIdJoOvhBBCCCHEmenMyMALIfpPMRJp8cYHAA1bYx1FrcN/CI0QQgjhbiSAF0L0iGKM5qGLZzBLB+Bg7fr/suSgrNAohBBCDDYJ4IU4gyimBJ6/ujMIP8rRsJ9bPt7MFrddyMbM1eddySOR7QVvyV/LOd/m0Dhk5VGITl3AZ5NDOLZXnpPMHcu4Zmc1jiEqmRBCiOHPzQN4hZAJacxONHa78t8HH27h6qsmkLNuJ1tKJA/ozvQBsdwSa0EHoNlYk5HFbhlQLIQQQgjRa24ewJ/a1Ysmg2Yf6mKIHtAHxPKTCbGYABwl1GRls7tNHrqGlLOK97/fw4Y2Dc1eT5bbZt/dkUZFwQ5+3WBERWVM0lRujeg+0SCEEEK4mocE8BpNOVms2NNwYn9bDRx2CQSF6DWtmb2H8/i6uYcfb8niZ29mDWyZPEhTXQkr6gBUbJFT+HEEEsALIYQYFD0P4BUz0X5Oiupah6Rvp+Zw0NpiR5KEQgghhBDiTNbzAF4N5mcXnk16dR4fHTjAf/MrqZBRWh5IZdq0K3g5yRsVcFTv4gdL92NMHMdPR8cw0WLG4GiloqGaFTvX8WR+09GHJsVMWkIy14+MYpLVj0ADNDXbyKoo4qvM/XxY3EDLkb9j5NJ5i3gsWndiEXThPLDoeh448gMnJRkrWLipFDug+qXwn8snMV4FtDaWrvqAe/M7Gpsuhievnc2CjplQtm76jJsyGro82PVh/3TR/HnxbC40KICDTRs/5b6aWO6emMScIC8MbQ3szMvgyW0H2dfa3/o3M+/sC3kqwadjPEAjn6/6ggfyW9rfLumCuOuihfzYqqIAWmsJjy9dwVt1R98yqeZgLk1J4pKoUJL8vPBVndQ3N1PZWMfe0mLW5mazvLLFJbPDBI8+l6+nR2A84TenmIWmX/WpIzo6lTvGxjPd6o3J3sD2nD38dUfJ6Qvbq/bZ/+MghBBCDJXedaFR9ESFJ3JneAI/bapi5aEDvHcgly0N9kGaSk5Bp1fA4cQh91HXUEzMnLKAJaMtmDrf/+vMRAWGMSXACPlN7R8zhvDjObO5PdwLXZd+AkYfC+k+FtJjErgsYy23bymkzJ2OTQ/3rytTUBp/n5RIir5jA52FqUlTecnLwaJV2ZT2a/+a+XbLZpaGz+JSHxUULxaMS+L1w7vIdCqExo9jcUB70IjWypYdG3m3S9Co90/kb+dPZa6P2qW7hg6rjwGrjx+JIZHMMtay4vsi3GWMcM/rUyVu9GzemBZFUOfOGQKYmTKTFMtOPj5F/5Tet8/+HQchhBBiKPU8gNdaKG5ow2E1olMUjF5BLEybzoLUdLILc3j/wAE+K6ylfoDucaaoWBbGmPAxKqA5aKptoDivlP3ZddjkTUCfqb4J/NSiOxrcdkfx4ZKZc7gjwty+dK/mpMFWS26zhtXPQqRJh6IYSUk+mycavuSWjDqcOKmoKWWLoT0Dr5gtTAzo3L6VvIpqyo8cN43K+tYBeQjs0f4duwWp8QnoVCeNrRomg74jIFSwjkhhkTWH56v6V1KtuYC/bMrhrNkJhKsKxsAkfhp7gF8WWLglLRL/9qiRhtJd/D6zrkuXNTML0ycdCd41RzMHSkrYZ7NjMPkwMiiYJB/XDmtpa6pma4naPlWiaiYxxEJArzp697w+8ySfJgAAIABJREFUVZ+R3Dsp8mjwDmiahoaCNTKN650nWTi6T+2zP8dBCCGEGFo9v9s7y3n284/4MCyGSxNGcmlsGNFGFUU1kRA9hvtHJHFXQynLDx7kvUP57G1yZW91BZ2XuWMFSEDR4RVgYaTFnxFRxaxfX0R5v7s2nJkUvR6To4HVe3fwWnYJBxrtGMwW0mNHM6cjYjGHpXL7iM7gqInvNq/kNxlVNADo/Lh4xrn8Md4XnWJkUmoK0w9uYJ3dzvpt/2N9x98xx81i3eyOWWicVby1egVv2wY+o9mT/TtuC3RaNW988z+eKm4jPGEmb86MJUQBVH8mhphRqpr6/bBRnb+Nx3LC27twKCbmjkvhAu8grvBrD1K1tjJe3JBJTtfTSA1kSqihIytsZ/2mpSw50Nil+5CeyLB4rvRvcdlYkdqCrdxa0P7fJ5tD/tR6Wp8K0XGJTDN0RO+anQMH1nH3lgJKTBEsmXUON4d2/4f71j7bt+3TcRBCCCGG2ElSWidjp6g0m3+sX8FFH3zCjWt28N+iOhqcGigK3n7hXJl+Du9edQXvzprA+ZZe3em7/4sNtWTtzmbVN7v5/NNtfPTxDpatzGJ3QRN2FIzBEUybYG0PDEXvaa1s3LKCO7fnsKW2ibq2NirrK/hmz3oeyqjFiY70+BjCO1qKvSKDP+/vCI4AHPUs27GfXR0BjuoVyeygXjargXTa/TthA+oKdvOP4mYcOCjMzWJdS2e4rhDs7dXbk+YkOrpw2JyAgt6SzGPpYXgrgNbG9p0beav2xNKpR7LTCmGBgYQeUxg7RaUH+fvBSjfKFve0Po1MCLPS2cvGYTvE45vzybNrtNiKeG5DBoe6DaL72z77dhyEEEKIodTn9+2a3cbW7N1szd7NYz6hnJuQwGUJMZzlZ0Sn82ZsfAo/KDvA17X9WStRo/pQHtXH/MyJraqa/RvrqW4Zw9kJZswjwonLqCFzoPrvDGOavZgPs+q7Dfg0AMWX1EBTR5ClgdcI7p4ddFzg601kZ2Cpmom3mFBK+5+ldoXT7l83P82rrD66wqezhcoWDcztO2hUVZdNFXhsFw61o2uJRmP5bn6fUcsJKxxoNeysdHB5lB5F0ZGYNIel0VWsP1zEhpISNhSVkdXibsFmD+tT8SXOr7NuNepKitjZ5aA5aotY15DGaP/jHp9c0D57fRyEEEKIIeaSDrPNtnJW5eow6oyEJkeTYHBViHMqdsoySymPjyFM9SI0WEdmvdxqe8vZZKP4VOlaxUSw+cg/0PuGMt/3VN+o4GPQt/fRdlUh++G0+3cCjWaH45h/O4/ZEde27er8bTxzOJrHYjoWAXLW8tamk2SbtUa+2LGby4InMNGkAAom7yDmjg5i7ug0NGczGTl7+NOW/Wxvdofahx7Xp6LH13D0MxW2xmMDZ62J4kYN/I/7ehe1z14dByGEEGKI9as3gGq0MGP0RJ644ApWXT6f34+L6QjeNRyt9RxqGNgX+VpLEzVNgKLg5S2rIPaJ08GpF0Ttfa0qihsdidPu39BSvSM5N8RwtJYVP2bFBGI+yeebK/bw46Xf8tTBEnJbnMcEoYpqJiVhEi/PG0tK/3uvDbLTtRntJA+ErmmfvT0OQgghxFDqfQZeMZEQGctlCQlcHB1EqL7LzVBzUFl1mE8yD/BBTgmHByEhfuSvu3GQ5tY07dQDHrUWqloAXwCNmkPfMm9dIYM3Zlg55ilT0el7F1Sdbv+GkuLNRVMnMderyzmk6BidOpVbC5bz3EkWWmipL+SV9YW88r2BsIBgJkdEcm7CSOZZzegUBa/gMfwwIoMHB+MEdBWtlfoj8162943XUd2l65M3EV7dBOuuaJ99PA5CCCHEUOl5Bl7xZV76LN5ddBWfnDuVm+ODO4J3DWdbA1sO7eA3yz7mvC++46mDgxS8m7wJ8AI0jUbbwExDeMbT6tlf3doRBCv4hYSRfIrsrsFkOjpbUNev0TS0IwdIOXXe1Ok8mjVXFKxeR9+u6K2BJLpRgr/vFMLip/Dr6PbZU7S2StaXNuMEFJ2VG6eNJfV0WXStjdLqYpbu28rdy77ltc7BloqRhABvFw22HSSajdz6zjcKCv7hkYzrsv86SwTT/brZo363TxccByGEEGKQ9fwerwZwXlIMY711HdPYOamvLeTtTau48sNPuHHdbpZVNLk2M6vXoT9psKYnLDmUEFUBh42Scg/KNnoUB1tyD1PZEVDr/MfwxxmjmejdJapR9IQHRfOjqfP59MLxjO2mVTlbW6nv/Ifqz4Rg00mDeGdLI+VHVupSGT8ykVSjgmoM4obxI4nwqMi0e6p3PA9MjiZQATQneQe2cM/6veywa4CCKTCFR8YGHTu7kuLNhZOncUuMlcDj60DVdY4LBTRanW773uEkWtlRWo29s535juI36VGE60BvDuW2qckkdXvc+9c++3QchBBCiCHW6y40mqOJjIIs3ss8yLKSBk5cx9J11LBYFqaoFBZUU1LeSH2jHTsqZj9fohIiSIo0o6BRn1tEXn8muxGnZCvaw4tF0TwUZUJVdMSNnMq/4ydT19hIrVPFz+xFgKF9BhFnY2a332GvreKQQyNEr4DixcJzLiVlbA3tz10alflb+E1GR5cJRyVbK50sjNChoOAVOp53FqfRioqR9lV4VU/OwiveXHTW0S4bzpYCXthbRkNTFc8eHMUryf7oFD3JY6dy8+GveLGyswuHgjVoJHenJnJHq40DldXkN7bSopoYGRrOWJ+OyNRpY2dZY7+7DunDxvHChHCMnT9QzSQeCX5V0lJn89rII3O50FKyk5/vLOvjrC0ah3MPsWFcMOcYFVD0pKTM5eskJ3ZFxag4aXFomHQnHvg+t88+HwchhBBiaPViIScbq3es5a3cAvY0Dd6NzOgfQOLYABK7+6XmpOFwPut317vNsvHDklbPB2tWEzxnFreFmdEpoCg6LD5+WE747Em+orGAd/PSOCvBBx2g6EzEBocRC4CTkuoug5A1G8v2ZnNTWCJRavtsK4qqw6Q5OZyVTUH8KKZ7bLeGji4bMZ0LD9nZs3cXXzUB2Nm6exer4mcy36yg6AO5ZVoK3y7fzX7Hsd+hN/qSEuFLyvFfrznIPbSV1yv6n4FXzRYmhYWdZBVbBYsllMlHGoBGU5O5X912nLZs/rwtlrFTI7F2rNaq6nQY0agp2sMnylhujOjmwPepfbriOAghhBBDo+f3W62a5Rm5gxq8a5VlbM8op7C8kYYmO3aHhuZ00tbcTGVRGbu+38eKjRXUyU11wGktpbzw9edcu2YHHx2uIL+pjVanhsNhp9ZWy57CLP61cRU/XLaNTd3Gjs38b8MK7t5+iHWV9VS1OXBoJx+1UFe4mdvW7OO76kYaHU6amqpZvXcNt20upm7A9nLgHdNlA3DYsnkus+bIYE2tKZe/76ukfa0jBXPQWB5OsbZnwbVGvty0mt9u3cfnh8s5UGujqtWBw+nA1lTPvsIsXljzJddtOEzlkOxdfznJyVzNDat38015A3V2B7bGGtZmrOeWVQfJO8Ugl962z34dByGEEGKIKaOiw4f/2E/FTNLcVMZZ6tm2/ABZA9nvRwg3ppgSeP7qGczSAY4iHvnwf3zUPNSl8nQqM6dfxYujzag4ydyxjGt2VrvRarhCCCGGG5cs5CSE8EC6SH63+AZ+Bzga9nPLx5vZ4mljX4eMQnTqAj6bHILh9B8WQgghXGoYzOchhBBCCCHEmUMy8EKcQbS2El5avYoPjx+Yaq/nkGTfe0GjPH8b99QfPx2qRkNtg/suHiaEEGJYkABeiDOJ08bOAttQl2JYaK4v49v6039OCCGEcDXpQiOEEEIIIYQHOTMy8JqdytxiMsytVMuE8UIIIYQQwoOdGRl4RU9QXATJSYFYZcoIIYQQQgjhwc6MAF4IIYQQQohhQgJ4IYQQQgghPIgE8EIIIYQQQngQzxnEqjcTmRDGyBH+BPoZMOCkpamVuspaCnJKya20ow11GYUQQgghhBhgHhHAqz6BTJoZR5x/1xcGKl5+erz8vAjQ6smrrJMAXgghhBBCDHvuH8DrfEieFkecv4LWYiM3s4TcEhu2NgWTtwn/QAthqqx7KIQQQgghzgxuH8D7xI1gdICK1lLHztWHOFh3NFhvamqhprKO/CEsnxBCCCGEEIPJvQexKl7ExPmix0n1gXwO1UmmXQghhBBCnNncOoBXzH6EWRTQbOQXNEsfdyGEEEIIccZz6y40ir8XfgpojY1UtxgISYwkOd5CoK8exd5GXWUNuQdKyKloQ3LzQgghhBDiTODWAbzebMCogNasEZQ+hrExJlSc2B2gMxoJjAwjMNxK+I6DfJ/dJEG8EEIIIYQY9tw7gNfrAFD8Q0gOhNqsbLbsq6amVUPn5UfChDjSIk1Ejo9lVHkmmfXSyUYIIYQQQgxvbt0HHqXj/wwqlB5m/c4qalrbg3RHUz0HNueR06iBzoeRcd5uvjNCCCGEEEL0n1vHvA57R6cYzUlpbhWNxyfY7fUcLmlDQ8E7yAcvZdCLKIQQQgghxKBy6wDe3mrHoQFaK/UN3fdwb2psQwMUkxHToJZOCCGEEEKIwefWAbyzseXErLsQQgghhBBnMLcO4LX6RmraNFCM+Pl2X1QvbwMKoDW30jy4xRNCCCGEEGLQuXUAj6OeojIHmqISFmfF+/g+7no/RoQbUNCwVdpokmy9EEIIIYQY5tw7gMdB8aEK6p1gCItmxoRAAkztUbze24/RU2KJ91bA3kBWbqOs1CqEEEIIIYY9t54HHsBRWcTmvT6cM9YXa8JIzhup4XBoqDoVRQGcLRzenktWg4TvQgghhBBi+HP7AB6cVGUeZEVNCGNGBREeaMZLD/bmZmora8g9UEJulV2y70IIIYQQ4ozgAQE8gBNbaSlbS0uHuiBCCCGEEEIMKTfvAy+EEEIIIYToSgJ4IYQQQgghPIgE8EIIIYQQQngQCeCFEEIIIYTwIBLACyGEEEII4UGUUdHhMgOjEEIIIYQQHkIy8EIIIYQQQngQCeCFEEIIIYTwIBLACyGEEEII4UEkgBdCCCGEEMKDSAAvhBBCCCGEB5EAXgghhBBCCA8iAbwQQgghhBAeRAJ4IYQQQgghPIgE8EIIIYQQQngQCeCFEEIIIYTwIBLACyGEEEII4UEkgBdCCCGEEMKDSAAvhBBCCCGEB5EAXgghhBBCCA8iAbwQQgghhBAeRAJ4IYQQQgghPIgE8EIIIYQQQngQCeCFEEIIIYTwIBLACyGEEEII4UEkgBdCCCGEEMKDSAAvhBBCCCGEB5EAXgghhBBCCA8iAbwQQgghhBAeRAJ4IYQQQgghPIgE8EIIIYQQQngQCeCFEEIIIYTwIBLACyGEEEII4UEkgBdCCCGEEMKDSAAvhBBCCCGEB5EAXgghhBBCCA+iH+oCDEuKkUiLNz4AaNga6yhq1Ya4UC4k+yeE55F2LYQQw4YE8ANAMUbz0MUzmKUDcLB2/X9ZcrCZ4XKrlP0TwvNIuxZCiOFDAvhOagSPLprPIi/lhF9prdnc8f46VjkGs0Bmrj7vSh6J1AHQkr+Wc77NobGvX+d2+ye65+LjLtyewZrGfy4cz1i9xuGMFVy+qZTmzl/KeXtyumj+vHg2FxoUwMGmjZ/w4/2NOIe6XK4gx/3kPOy4q5YU/nNJOuN1GoUHvmXR90XUD3WhxLDQuwD+mBPnVBxs3fQZN2U0uO1JJTyDPiCWW2It6AA0G2systjdNtSlEgPF6GVlckQ4U8LCmBIWSqq/ifbLTW+vKSpJ4xbw9oRgTB3b79zyOTfsre+y/bEPSyfTVrKZC7/eT/FApKoVP645K5VUvYLWVsob+8qOBu8eTM5b0Rtu3V4UMykxscwJDyU9JJCRvt5YDSpORytVDXXsKz3M55kHWVnT2u21yVl7iH/lJPNMojeRiZP5SdZSniw7U5++hCtJBr6T1kpueSlbjO0PJyYfK6l+xuEzytdD908fEMtPJsRiAnCUUJOVze42eek/PCmMTj6HF9M6buT9oPNP4v6xQR3Bu/uyjEjjljADChqV+fv5ouG4ti3n7ZnJQ497X7l1e1FDueWcs1hw/EVJNRNhNRNhDWXe6CS+2/wt9+yvpuWEL2hlzf4sskemkaj6s3hCIu99k8lhN9k94bkkgO+kVfL6t9/wOgAKcWMX8smk4D5dMLWWLH72ZpZLi9dvw33/XGi479+wp/hy5VlppJ/2TeEQU/y5YmwcIQrgtLH8UDev1uW8PTO58LiLgaeoPsyaPI0flSznnzUnRub2qiw+rUzhnhAd3mHJXB96iMdLJQsv+qd3AbyjhKe/XMqrCoBK7Oiz+XOSPzpAay3gT9/sZFvHO6RGm/v2SRNCuCsHlTUlbCsuYVOZk5lTJzLf3JtAXCE0fhJ3RJp6F+w4ynlxxSb+182sLM62RsoHIFtmCE7k6mAdCuCw5fOlvFYXwv1ozezJ2U9WZTk7K2vItzVT7wCzl4Vpoybwy+RQrAooOiszw715pcZ2YuyjNfB1TgV3BIdhVH25JGkEL5TmUTcU+yOGjV5m4Nsoqq6mCAAFZ5P9yG80ZwsFVdXs7y5qP2HQyafcVxPL3ROTmBPkhaGtgZ15GTy57SD7Wju3CeOBy8/lOl8VcJK/92su3VKOvcvXqj5jePWKyUzWKaC18e3aj7kzuwUNMHoFMTsultkRIaRa/Yk0GzGrGi2tzRTWVLAh7wD/PlhCsYvumcGjz+Xr6REYT/jN6WZ70BEdncodY+OZbvXGZG9ge84e/rqjxDUFc5G+7x+o5mAuTUnikqhQkvy88FWd1Dc3U9lYx97SYtbmZrO8sqVjeyOXzlvEY9HddKLQhfPAout54MgPnJRkrGDhptJj2sWg7V9f2vXRjft+3BUzaQnJXD8yiklWPwIN0NRsI6uiiK8y9/NhcUOX17hm5p19IU8l+HT0L23k81Vf8EB+R33rgrjrooX82KqiAFprCY8vXcFbdUPxfldj3/ZlzN+mtZdNDSdpSu++QTGP4O70EQQqGo3leWwwxzDPryehfBslNVXsH7QO6DomjoxjhArgpLywkH0DkPEY7uftsRQCw5K5J30Mc4K8MJ7i/OvP/aF39TKEenWdoJ/XM/CxxrNkYjILwyxYaSG7NJc3tu+lMuliXkryRgUc1btY/PlO9muubC89P+594izjtXVlJ/68pZlPtu4gOeZcfujbfo1RlJMlGzSKCwvZPzmMcYqCf1Q8s015fH5ifxshemxIutCYgtL4+6REUvQdjV1nYWrSVF7ycrBoVTalGuCoYE1xCz8Y5YWKSmRYGCOUcnK7XBV9Q8NIVtu/Q3OU811x50VTJX38HJ7suGh05W32YVS4D6PCYrg4egs3/m8/WUP2qkAlbvRs3pgWRVDneW8IYGbKTFIsO/nYzXsA9ITeP5G/nT+VuT7tAWI7HVYfA1YfPxJDIpllrGXF90W4y5ilvupRuwb6c9wVYwg/njOb28O90HX5nNHHQrqPhfSYBC7LWMvtWwop0wCa+XbLZpaGz+JSHxUULxaMS+L1w7vIdCqExo9jcUDHsdFa2bJjI+92G7wfN+DTWc2LXyzl+WrXhilOrT/fZ2TmxMlc6KOiOSp5fVMmhpkxzHNZ6VxIDWRWlFfHQ5WdHSWVuCLWcBVPPG8N1lSeSx9NmuH0519f7w+eUi+9v06cqOfXM/AOHsfL541jvLHzj+lJjk7lsZAgvq0e2I4/PT/urqTg5WVhckIK8707Y5Bavi/pJvvewdlQytYGJ+P8VRRDGLPDDXye5y5nj/BEQxDAq6TGJ6BTnTS2apgM+o4LjIJ1RAqLrDk8X6UBDrYdLqE+MR6LArqAMCab95Db1Pk9OsZFhNA+y5ZGW2Uh60/Inmk42popbLBR1thIRRsE+Icw0eqFSVGwRozn7vhc7sjq/1zIbU3VbC1RMQCoZhJDLAScJgBXfUZy76TIo0EcoGkaGgrWyDSud7pPj8e+7B+YWZg+6cjNTnM0c6CkhH02OwaTDyODgknyOb4JOqmoKWWLoT1QVMwWJgaY22+0Wit5FdWUH8mKaVTWt7ok09W3/euqp+26H8dd8eGSmXO4I6KzPpw02GrJbdaw+lmINOlQFCMpyWfzRMOX3JJRhxPQmgv4y6YczpqdQLiqYAxM4qexB/hlgYVb0iLx7ziHGkp38fvMOjy1I4d32DjuTfRBpzk4uG8zr1Y5ua2nG6uB3HTeFdzt74W3ZqeivpKNuQd4bX8B2QNwj1V9Qpjo03GcnbXsqXJtLrrTcD9vj1JJTUjEoGo0tzkx6HUnPf+O6u39oS/1MgT6eJ04Vs+vZ6iB3DR9LOOMRxuW5nRgR8VgDmd+RHeFdFV76ctx7yuFsDHnsnxqePv51IVmr+Orzet47VQJDWcNe6ocaP4qiqJnfFgg+jxXv4USZ5IhuNoo6LRq3vjmfzxV3EZ4wkzenBnbPpBL9WdiiBmlqgkNaCwtZEtbHPONCoouiCkhej7M72juipWzQjv7uWocOFzcZZo3jbLifTySV8S3pbXUHHN1MjBt6kW8NMYPnWJgWmwk/lnZ1PZzr2oLtnJrQUfRTAk8f3Xngiknr4fouESmdWYNNDsHDqzj7i0FlJgiWDLrHG4O7e9cHK7T+/0D1ECmhBo6srt21m9aypIDXcdG6IkMi+dK/5YuP7Ozftv/WN/xL3PcLNbN7pidwFnFW6tX8LbN9SmVPu3fMXrarvt+3M1hqdw+ovMm18R3m1fym4wqGgB0flw841z+GO+LTjEyKTWF6Qc3sK7jdKnO38ZjOeHtXWkUE3PHpXCBdxBXdHQv0drKeHFDJjmeOnBFF8yPzxpNnAqOuoM8vrucZi2o59srZuICj3wZkYGRXBEYwQUJ2Tzyvw0srXdtxRgCrIw80gTqyGkcmA4Xw/28PUrBoNXwxjcreaq4jahRZ/Pv6TEEd3Nf6fP9oU/1Mvj6c504quf3aXNEEldbdR314qQkfzM/X3+Qg1i59uy5/Cbau5tZpVzVXnpz3AeA5qCs/CBPrt/O0trTheIO8mobcGJFh0qwNYBgpZSSIe9rJTzVEKR4NeoKdvOP4mYcOCjMzWJdS2cLVgj29jpSKK2lmNVljvaTTzGQHh505IlD9Qtlkt/RDNaawq5ZBI3svAw+LmshNDyOxWPHcffkydx/1hQenDqRiwPUI3/PYAkgbkgS3UYmhFnpfDvpsB3i8c355Nk1WmxFPLchg0OeGkx1oR5JyiiEBQYSekxd2ykqPcjfD1Z6bNb3qJ62674edx3p8TGEd9SfvSKDP+/vuCkDOOpZtmM/uzq2Vb0imR3UtbI7utLYnICC3pLMY+lheCuA1sb2nRt5q9ZTG5zK6JQp/MiqQ3Ha+HTzLja5JGuuYLaM5PdzxjHOpc/SCoE+PnSOzXU2NVLuZlXveeetRl3+niPnX372oZPeV/pzf3D/eunvdaJTT69nKmOjwrF2Poy2FfLsxgNktmo4W6t4Z8NOvh/Q6SB7c9wHgKIjNDSJxxaex/0xPqeZ/lajorHpSNtQvX0JGwbdZMXQGYIMvEZeZfXRlSWdLVS2aHTezYxq176FLXxfWEFbVDhGRSUkLIx4pZSDGgSEhjOmMwhqKGJtbdeLhEpUzET+ODWJSd46TnWOKEYTfq7cvZ5SfInz69xXjbqSInZ2ueo7aotY15DGaH/36UbTa1oNOysdXB6lR1F0JCbNYWl0FesPF7GhpIQNRWVktbhZ5NJnPWzXfT3uii+pgUffOOE1grtnBx2X6fMmsrOxq2biLSaU0qPZp2O70qgdr5o1Gst38/uM2tO8yrWz6+AOni7uLFcz25rcI3Wk80/igbQgzIpGWc5Wnj7c0wGEGrU1hbxbnM83RZXkNNiodhqICo7mhvSJXB1iQkXBZE3itvhMbj/kukyer9Fw5LqktbW510q7HnneauRVHXv+VZz0vtLH+4Mn1IsLrhN0bNuz+7SReEvHWA402soPs7bp6Lc4Gwv5tsLJ2RED9Ta5N8e9/3+rIud7FpXoURUdFr8QLkhNY1GIGZ05mOvOmUXlsq94ufrkbcDWZj9Sz4rRgK/LyibOREMSwDc7HMf823nMlUM55nelRYVkaOGMV0BnCWOSl8LBRh0TwoM7Vmh0UnbcDA6mkPH8fVYyo3SnP3UVnW5oFntR9Pge6UinUWFrPDaA0poobtTAf/CL5jJaI1/s2M1lwROYaFIABZN3EHNHBzF3dNr/b+/O46Oq7/2Pv74zk33fyMYW9oSArLIp4IJrUa/aev1ZrdVaq9Vabettq1a7XrXtta6tvbd1qVqt1bqLiIpVQPYt7EsSCCEhhCRkT2bm+/tjJslAAmQDMvJ+Ph55PGDmzJzv+Z6ZM5/zPZ/v52C9DWzKz+O/V2xmdUPfCAa7r5Of6+7udxNGcnjbe7mi+3HOUY/+hqgQly9XN+DRil2reLRoAL8ZGOprkbeKF5d15mqPmy0FG9lyrMVOuHDOn+Cr+e5t2M0fVu7mQKdf28j85Z8y/5DHPBSUbONXC+oImTuby6MdYEKYlJlK1PaCtpHMHjIm8EhnT37FkkBB+b3t/O9Kt38fgqFfeuk40fnjWRjxAbnv1bW1h93LoJHiWjdenMdpJLwr8UTPeRpr2NFSOaainBXF5dRffB7fiHdgXElcPSqV55bs7eBmTv7WHTJJ36iuv/RIn//8eKuL+dyfpGgciZzezwWORE5PDfHn+PlH6VtfEcKZo4YztOXgbJvZun0pN735GtNeeIExz73AectK+0DlhGMdWPrYj3o3NezP41vvfsIj20ooaPQesk3GEU7O0In8+exccvpOuv9x1t393vUfoo5KmjkiMzg3pW30FxPDzIGJhLdbMkiYUNIifccCR/gAfvPVr5P3jWt9f9ddxE2t6RBOTpt0Geu+8f94cmjosfdCUwkzt3LBAAAgAElEQVTziltymQ1hUVG+vNpeUu/2tI6KGqerz/X/l/d727Pfh77fL71znOjK+hwBL+/o2GV7VFmqj3Pv553CqtbjREJSMgOO0p0RLlfblTe3m/ojLypyTH1gyvwx2Co+21PNdxLjcJoQxqUlE1GZzMRI3w+zt6mETwNvgGJiyE4IaT0z8dTu4DdfbGVF6yKG+PBj3+TlkHJ25jic6dgmqlt/JXy5ek4qAnInI0mPOH6XBo779gVorN7DXxbv4S9LQkiNT2ZSegbnDh3C2QnhOI0hInkU16Rv4p6iU2A+fnf3u23kQCP4rrlaKrd/wtmL9nSt9KCJ5OIpEzkr8P2NkxGjp3DT7nk8vr/vZDSffMfzBNpSXluHx0KIARMRSWL7IdAO6XvbQ73w+3Ay+qXT+703jhNd0kxNQI57TGQkUUBl6yOhpEWF9P2Rwh6obWrGCzgBExJC1BG/y4bEiPC2OX71tcflBnFy6giC75Vly55iSrwAhqTUNKalpzG0JX+3ZA8rDhkuceAK2CpvXS2lgekBJpLx/WKOseGW+mZ32wiZI4Lk9ndC6RlbS0F1ywiOITYt45CJcs64dKZ16gY03Vr58d++DlfbTGnFXt7duJI73/uEZ1omTZpQhsa3r8kM/vKKrQc508sXRE+C7u53W83miqbWkZ6YlFSyjzLKFxIWRtQhjxhSsybzowG+HxDbXM7i0ga8+O4geP3UXEYfddTQRXZWLjePHeP7GzOcSX1t2LgXmdA0zstoyyVuqK3p1R/bxoNV7G6pwhcazcBO9aW+tz3XG78Pft3ol+7pwn7v8XGiq02rZ+fBtvWFJKczOaBtJiydMzqcJHvY2/TZzwtERUT4gvKOmEimZMS3joTapiaOfA88B/1jo1uPKTVVVapAIz3SxWNMCKlx8QyP9/0NDG87MhhHKBnxbc9lhvXe4at5/x4W+XMKnbGZ3DgkyZf/bj2sLtp72O2I69hb1zZ65oxLYVxATmBi5liu7Xf0iUsAlTU1VLe8iSOZi4bE+0pc9Zom1pRW4Pavwxk9nLsnZJLmBFd4P26eks3I43h6dfy3DzCRXDRpKjcOTCDx8G1xOFurcIClydtxEra3qaktp9IRy7jksD51cO+67u53DysKiihveV3sKH49fQTjIwN+nY2LtKQBXDflHN686DRyA6tnRGbx00kD/CO9Xgq3ruCuxRtY47aAISwxh/tzk47yGXCRO2wst48f5/sbN5IpvX6FyEFCTNsxZHh8NHEBVT8iImIY1vpcHP1CAFvNiwv+yZkv/6P93z8W8LfWyjpe8ta8x8yXX+PuAl9N6dD+k3h29iSuG5xGbnw0yaEuosKjyek/ip+dewZX+O+uiG1m6e7SXp1o6qnaT15LtQxHPDnxncu50Pe2p3rw+9AL/dJdnd/vPTtOdJ2XvOLS1rY5wgZy+4T+vuo8jijOmTSW2aHH3vN99/NiyMo+l3mXnM0Dp43g/IxkhsZEkRwRQf+k/lw34yx+lNGSkuelrKyMPUcKyk0Mo1qu/lgvm8oO9Kmbt0nw6VoKjTONH1zccqvlQ5nQgdw3d6D/fx5WLnuLb26q6Z16uJ4yPtvbyJVDw3E4Ejgt2few9e4PuPuqn61ncVE5TWn9CDPgCBvAfeefxdjCChoj+3F+Vj/SO3HAcu8vYWXzMM4LNb5JbBMvZN7QCgr9VQbc1du5f8lO9lhwpY7lqXFpbbcrd4QzrHUdDsaMnsUzQ1prgdBYspbvrt1HUcF2vhibzJmhBoyLnJyzmD/Si9s4CDVeGj2WsE5MtOqOE7F9bgwJSUO4c/Qwbm+qZWt5Bbvqmmh0hDGkXxq5rTeyqWXtvroOPyvuqgNs91hSXAZMBBeceQk5uZWUuX3rKt+1grs3VfSobFv3t687bLf3e21xHn8sHsC9mWE4jJPBQ6bwfNYkDtbVUeV1EBMeQXyIr+qCty5guqmJ5OLT21JnvI27eWrDPmrqD/DYtuH8JTsWp3GRnTuFG4o+4I/lJymVxkTzH2dezF0pHX1BHeSMOZfXx/j/axt56+PX+GmRh8amxo4njZkm2uYSWjzuJiobA2p0OyMYM3AwkwZlH6VRlrr9G3iqsOc3ezuEZx+flzZz2eBQjAnjtNQ4nMUHjvk51ve2h3r0+9Dzfumuruz3bh8nuql6z1berh7INbEOjHEyZMRs3htYS7kJJyPc1alAvM9+XgAwxMZncuW4TK48ylK2uZyXt+47YlBuwlOY6L+LmvWW8/neXj6myCmn7+fAA+BmRVEpdUMGER1wNPCU72FRuxugWHZtXcGfB53Ld/uF4sAQGdefq8f29z3rrWVZiYeJabFHrdlqm3bzl40HmHlakm9kxbhISUghpaVFoSVE+v/tCI9jYmrqEarZGOLi+jEprq199fW+NAZ37U4eXjWI3CkZ/jq6BofTSSiWyuI83jC5XH+cym+diO0LXMYVGk1OejQ57RrioWD7Sp7d3/HPna3bzcuFYzh9qK/GrnGGMSg5lUEAeCmpOPaExGPp+fZ1jbe7+91W8+pnn5I8eyY3p4bjNGCMk7ioGOLaLdvW/tSsyfxoYMuNXdzkbVjHB/UAblauX8fCrBmcE24wrkRunJrDJ/PWs1np8GC9VJRt4qefbmBLr/dHM4vyi6gcNIQE42BwZgaD1hxg5zF+0fW97ane+H3ofr90u9Vd2O/dO070gLuUp5ZsYtI5OYxyGTCG8IhoMgHbtJ/PK2KYnnr0eQV99/PSOdZdxVtLPue5yiN3aFx6Jqc5fAnyTWWFLKhR+C49EyQBPNSUFLHSPZBZraP/XrbvKaaoo++Au5w/fziP/NwxXDM4jVHRYbjc9ewsK+KNvDwWJszgnWME8OBhw7qPuLFhLDcPH8C4+AhiHA56NGG/HS/5Wz7l2oZc7hidxZSECJxN1awu3MAjq/cydnZub67sMCdg+2wd7y/7lLrMNE5PTWFkTCTJEeHEuaChsY7CA/tYuGMTLxRUHJYGFaiBj75YwJ0HR3PVwFSyYyOJczlw9u6OOMG6v99tYylPzX+bhYOHc9WQ/kxOiiMtzIXTeqhpqGV35X6+KNrNR7v2kuc9LHUG8NTu5PEtla0jWba+gCc2juKM8cmEGUN4Ui4/yyni+vUVX/rLu+7SjdyzrJopaf0YEx9NSkRY62ezoHwf/87fxisF+yk/TqW9a/Zs572awVwT48CZMJA5cRt4+igBgI++tz3W3d+HXumX7urafu/qcaKnDpas5oZ5B7l13Ejm9Isjyelm7/4iXli5msJhFzM91d8ur+cIFX766ufFsnXTIu6q68+M1BRGxUaREhFOYpgLp6eZspoK1u7dzRubt/N59dGuyYYzc3DLjfOa+HxbAcWK36WHzPABafoYiYiccIaB2XN4bXIqEcZLft4HXL5yfx8ocSvSS0wkV825jHvTnRgsjUVLOOejHQFVak4NjqiR/N9lkzndBZ6qTVz/9kpW6yqn9FAQVKEREfkysuzatpbXa7yAg0FDR3DGiagqI9KrDJmDx/HD7AHkRLrarlyYUEYOm8gNqW13ni7cf+CwGz2dChyMGjGCiS4DtomF6zayRsG79IKgSaEREfnScZfy9MoC5swcQr/wQXxz2Ho+3VjdqxMgRY638NgMvj5+DNefbvF4mjhQ78aERpAU6mjNXbfu/byVX3mSJqKePCZsAN8cHocTS23peh7Jr9fkVekVCuBFRE6iA4UruHH+DlIdBtvkwQVf+vkH8mVlcDrDSIk+tMil9dbx+cql/P3IRdK/tAxVvPLZR7yGpbJyHwWnXhfIcaIceBEREem26MTBXD20P5P7JZIVFU58WChh1k1VXTWb9+3hvS2beaus4ZQbfRc5nhTAi4iIiIgEEU1iFREREREJIgrgRURERESCiAJ4EREREZEgogBeRERERCSIKIAXEREREQkiCuBFRERERIKIAngRERERkSCiAF5EREREJIgogBcRERERCSIK4EVEREREgogCeBERERGRIKIAXkREREQkiCiAFxEREREJIgrgRURERESCiAJ4EREREZEgogBeRERERCSIKIAXEREREQkiCuBFRERERIKIAngRERERkSCiAF5EREREJIgogBcRERERCSIK4EVEREREgogCeBERERGRIKIAXkREREQkiCiAFxEREREJIgrgRURERESCiAJ4EREREZEgogBeRERERCSIKIAXEREREQkiCuBFRERERIKIAngRERERkSCiAF5EREREJIgogBcRERERCSKuk92AoOcy/OIRw9di2z9l6y233mb5xH3imyUiIiIiX04K4E9RrkzDTaeDE8AL/55vWVd/slslIiIiIseiAL6nrKVgOyyP9P03LMmQm9L3c5Nc/eE7lxnCANyWis9QAC8iIiISBBTA95QH/vqo5a/+/2ZdDG9/zfT5AF5EREREgpPiTBERERGRINK9EXgnjJ1uuG66YeJASAqH+mrYvsPy/seWf26AhpZlDZx7k4NHZ/jzrS28+biXH68E62/BnT938O3+YPBN/Pz1A5YXSnwvD42D2VMNZ+VA7gBDRiyEO6GxDvbssSxeZnl2IextmSgaYXjqccPZIbDmNcvf4+H26YbYg5ZX/255otjww28ZLs2CpjLLKy9ZHl8PXsA10jD/x4YMB+CFp3/u5fUkw11zDdMywdTC6hWWx/5lyavtbpf3sD974LLvO3hwfAdPuAz3PWK4L+ChvQu8zPkbuHvQnyIiIiLS+7ocwJsouOk2B3fk+ANyv9AEmDjJMHGi4T8+tNzykmWfBSx89HfL29mGyxIBAxdeanhmjWWzB1KnGa7O9AXvAMtft/y9pO19J13m4A9nt79UEBkNw0caho80XDLBcu3/WLYfVu1l0DmGX8VDCECE4YbvGCbuh9P8JwtkGG7+NuTdbfmog/zvlNMNz15oSG9ZeSjMnGOYPBxufNCyqhdyxrvcnydRT/tTRERERHquayk0Bi79loPvBwSbNeWwPh+Kav0j6gZGn2f43Zy2ZWy15eEXLHv9w7KhAw23TgZHGHxrriHWH73XbLY88BF4Oli1pxF2FVmWr7e8v8yyZBc0+p9LGG34wdS2k4AWCfFQtsOyodLXNhMO4zKhYLNl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" /></p>
</div>
<div id="language-tour" class="slide section level1">
<h1>Language Tour</h1>
<p>Let’s go over some of the language’s syntax and basic types.</p>
</div>
<div id="control-flow" class="slide section level1">
<h1>Control Flow</h1>
<p>Basic control flow you’d expect:</p>
<div class="sourceCode" id="cb2"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb2-1"><a href="#cb2-1" tabindex="-1"></a><span class="cf">for</span> thing <span class="cf">in</span> things</span>
<span id="cb2-2"><a href="#cb2-2" tabindex="-1"></a>    do_thing<span class="op">(</span>thing<span class="op">)</span></span>
<span id="cb2-3"><a href="#cb2-3" tabindex="-1"></a></span>
<span id="cb2-4"><a href="#cb2-4" tabindex="-1"></a><span class="co"># Also:</span></span>
<span id="cb2-5"><a href="#cb2-5" tabindex="-1"></a><span class="cf">for</span> index<span class="op">,</span> value <span class="cf">in</span> list</span>
<span id="cb2-6"><a href="#cb2-6" tabindex="-1"></a>    <span class="cf">pass</span></span>
<span id="cb2-7"><a href="#cb2-7" tabindex="-1"></a><span class="cf">for</span> key<span class="op">,</span> value <span class="cf">in</span> table</span>
<span id="cb2-8"><a href="#cb2-8" tabindex="-1"></a>    <span class="cf">pass</span></span>
<span id="cb2-9"><a href="#cb2-9" tabindex="-1"></a></span>
<span id="cb2-10"><a href="#cb2-10" tabindex="-1"></a><span class="cf">if</span> x <span class="op">&lt;</span> <span class="dv">10</span></span>
<span id="cb2-11"><a href="#cb2-11" tabindex="-1"></a>    <span class="bu">say</span><span class="op">(</span><span class="st">&quot;x is small&quot;</span><span class="op">)</span></span>
<span id="cb2-12"><a href="#cb2-12" tabindex="-1"></a><span class="cf">else</span> <span class="cf">if</span> x <span class="op">&lt;</span> <span class="dv">100</span></span>
<span id="cb2-13"><a href="#cb2-13" tabindex="-1"></a>    <span class="bu">say</span><span class="op">(</span><span class="st">&quot;x is medium&quot;</span><span class="op">)</span></span>
<span id="cb2-14"><a href="#cb2-14" tabindex="-1"></a><span class="cf">else</span></span>
<span id="cb2-15"><a href="#cb2-15" tabindex="-1"></a>    <span class="bu">say</span><span class="op">(</span><span class="st">&quot;x is big&quot;</span><span class="op">)</span></span>
<span id="cb2-16"><a href="#cb2-16" tabindex="-1"></a></span>
<span id="cb2-17"><a href="#cb2-17" tabindex="-1"></a><span class="cf">repeat</span></span>
<span id="cb2-18"><a href="#cb2-18" tabindex="-1"></a>    do_thing<span class="op">()</span></span>
<span id="cb2-19"><a href="#cb2-19" tabindex="-1"></a></span>
<span id="cb2-20"><a href="#cb2-20" tabindex="-1"></a><span class="cf">while</span> condition !<span class="op">=</span> <span class="dv">0</span></span>
<span id="cb2-21"><a href="#cb2-21" tabindex="-1"></a>    other_thing<span class="op">()</span></span></code></pre></div>
<p>Yes, Tomo also has named <code>break</code>/<code>continue</code>
(<code>break x</code>, <code>continue repeat</code> etc)</p>
<div class="sourceCode" id="cb3"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb3-1"><a href="#cb3-1" tabindex="-1"></a><span class="cf">for</span> x <span class="cf">in</span> xs</span>
<span id="cb3-2"><a href="#cb3-2" tabindex="-1"></a>    <span class="cf">for</span> y <span class="cf">in</span> ys</span>
<span id="cb3-3"><a href="#cb3-3" tabindex="-1"></a>        <span class="cf">if</span> x <span class="op">+</span> y <span class="op">==</span> <span class="dv">0</span></span>
<span id="cb3-4"><a href="#cb3-4" tabindex="-1"></a>            <span class="cf">stop</span> x</span></code></pre></div>
<p>(<code>stop</code>/<code>skip</code> are the same as
<code>break</code>/<code>continue</code>)</p>
</div>
<div id="type-inference" class="slide section level1">
<h1>Type Inference</h1>
<div class="sourceCode" id="cb4"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb4-1"><a href="#cb4-1" tabindex="-1"></a>x <span class="op">:=</span> <span class="dv">123</span></span>
<span id="cb4-2"><a href="#cb4-2" tabindex="-1"></a>y <span class="op">:=</span> <span class="st">&quot;Hello&quot;</span> </span>
<span id="cb4-3"><a href="#cb4-3" tabindex="-1"></a>z <span class="op">:=</span> <span class="op">(</span>x <span class="op">&lt;</span> <span class="dv">10</span><span class="op">)</span></span></code></pre></div>
<p>You can make types explicit, but almost never necessary:</p>
<div class="sourceCode" id="cb5"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb5-1"><a href="#cb5-1" tabindex="-1"></a>x <span class="op">:</span> <span class="dt">Int</span> <span class="op">=</span> <span class="dv">123</span></span>
<span id="cb5-2"><a href="#cb5-2" tabindex="-1"></a>y <span class="op">:</span> <span class="dt">Text</span> <span class="op">=</span> <span class="st">&quot;Hello&quot;</span></span>
<span id="cb5-3"><a href="#cb5-3" tabindex="-1"></a>z <span class="op">:</span> <span class="dt">Bool</span> <span class="op">=</span> <span class="op">(</span>x <span class="op">&lt;</span> <span class="dv">10</span><span class="op">)</span></span></code></pre></div>
<p>However, functions do require explicit types:</p>
<div class="sourceCode" id="cb6"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb6-1"><a href="#cb6-1" tabindex="-1"></a><span class="kw">func</span> add<span class="op">(</span>x<span class="op">,</span>y<span class="op">:</span><span class="dt">Int</span> <span class="op">-&gt;</span> <span class="dt">Int</span><span class="op">)</span></span>
<span id="cb6-2"><a href="#cb6-2" tabindex="-1"></a>    <span class="cf">return</span> x <span class="op">+</span> y</span></code></pre></div>
<p>(A function that takes two integers and returns an integer)</p>
</div>
<div id="primitive-types" class="slide section level1">
<h1>Primitive Types</h1>
<ul>
<li><code>Bool</code>: boolean (<code>yes</code> or <code>no</code>)</li>
<li><code>Int</code>: default integer type (overflows into bignum)</li>
<li><code>Num</code>: 64-bit floating point number</li>
<li><code>Text</code>: AKA “string” in other languages</li>
</ul>
<p>Some more niche ones:</p>
<ul>
<li><code>Int64</code>, <code>Int32</code>, <code>Int16</code>,
<code>Int8</code></li>
<li><code>Num32</code></li>
<li><code>Byte</code></li>
<li><code>CString</code> (C-style NUL-terminated char array)</li>
</ul>
</div>
<div id="integers" class="slide section level1">
<h1>Integers</h1>
<p>Tomo’s default integer type is <code>Int</code>, which <em>automatically
overflows into a bigint</em>.</p>
<div class="sourceCode" id="cb7"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb7-1"><a href="#cb7-1" tabindex="-1"></a>i <span class="op">:=</span> <span class="dv">1</span></span>
<span id="cb7-2"><a href="#cb7-2" tabindex="-1"></a><span class="cf">repeat</span></span>
<span id="cb7-3"><a href="#cb7-3" tabindex="-1"></a>    <span class="bu">say</span><span class="op">(</span><span class="st">&quot;i = </span><span class="op">$</span><span class="va">i</span><span class="st">&quot;</span><span class="op">)</span></span>
<span id="cb7-4"><a href="#cb7-4" tabindex="-1"></a>    i <span class="op">*=</span> <span class="dv">2</span></span></code></pre></div>
<p>(Demo: <code>tomo bigints.tm</code>)</p>
<p>This means that integer overflow can impact <em>performance</em>, not
<em>correctness</em>.</p>
<p>For small integers (smaller than about 500 million), <code>Int</code> values
don’t use heap memory and operations are extremely fast, with only a single
conditional branch to check for overflow.</p>
<p>Based on the paper: <a href="https://www.microsoft.com/en-us/research/wp-content/uploads/2022/07/int.pdf" target="_blank" rel="noreferrer">What About the Integer Numbers?</a> <em>Fast
Arithmetic with Tagged Integers – A Plea for Hardware Support</em></p>
<p>You can opt into fixed-width integers like <code>Int64</code> if you need the
performance, but the default is <em>correct</em> and very fast for most
cases.</p>
</div>
<div id="text" class="slide section level1">
<h1>Text</h1>
<p>Tomo’s built-in <code>Text</code> datatype solves some of the problems that
other languages have with strings. I chose to call it <code>Text</code> instead
of <code>String</code> to reflect the fact that these aren’t your grandparents’
“array of NUL-terminated ASCII bytes” (also, “text” is shorter and more
vernacular than “string”)</p>
<p>Tomo Texts:</p>
<ul>
<li><em>Normalized</em> unicode text</li>
<li>Length-prefixed, not NUL-terminated (so length is constant-time)</li>
<li>Uses a Rope datastructure for efficient concatenation and slicing</li>
<li>Grapheme clusters are a <em>language construct,</em> not an
afterthought</li>
<li>Fast random access</li>
</ul>
<div class="sourceCode" id="cb8"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb8-1"><a href="#cb8-1" tabindex="-1"></a><span class="op">&gt;&gt;</span> <span class="st">&quot;🤦🏼‍♂️&quot;</span><span class="op">.</span>length</span>
<span id="cb8-2"><a href="#cb8-2" tabindex="-1"></a><span class="op">=</span> <span class="dv">1</span></span></code></pre></div>
<p><a href="https://hsivonen.fi/string-length/" target="_blank" rel="noreferrer">Note on string length</a></p>
</div>
<div id="lists" class="slide section level1">
<h1>Lists</h1>
<div class="sourceCode" id="cb9"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb9-1"><a href="#cb9-1" tabindex="-1"></a>nums <span class="op">:=</span> <span class="op">[</span><span class="dv">10</span><span class="op">,</span> <span class="dv">20</span><span class="op">,</span> <span class="dv">30</span><span class="op">]</span></span></code></pre></div>
<h2 id="indexed">1-Indexed</h2>
<div class="sourceCode" id="cb10"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb10-1"><a href="#cb10-1" tabindex="-1"></a><span class="op">&gt;&gt;</span> nums<span class="op">[</span><span class="dv">2</span><span class="op">]</span></span>
<span id="cb10-2"><a href="#cb10-2" tabindex="-1"></a><span class="op">=</span> <span class="dv">20</span></span></code></pre></div>
</div>
<div id="tables" class="slide section level1">
<h1>Tables</h1>
<p>Hash tables for O(1) lookups.</p>
<div class="sourceCode" id="cb11"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb11-1"><a href="#cb11-1" tabindex="-1"></a>scores <span class="op">:=</span> {<span class="st">&quot;Alice&quot;</span><span class="op">=</span><span class="dv">10</span><span class="op">,</span> <span class="st">&quot;Bob&quot;</span><span class="op">=</span><span class="dv">5</span>}</span>
<span id="cb11-2"><a href="#cb11-2" tabindex="-1"></a><span class="op">&gt;&gt;</span> scores<span class="op">[</span><span class="st">&quot;Alice&quot;</span><span class="op">]</span>!</span>
<span id="cb11-3"><a href="#cb11-3" tabindex="-1"></a><span class="op">=</span> <span class="dv">10</span></span></code></pre></div>
<p><em>Tables work on all types!</em></p>
</div>
<div id="sets" class="slide section level1">
<h1>Sets</h1>
<p>Like hash tables, but without values, only keys:</p>
<div class="sourceCode" id="cb12"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb12-1"><a href="#cb12-1" tabindex="-1"></a>nums <span class="op">:=</span> <span class="op">|</span><span class="dv">1</span><span class="op">,</span> <span class="dv">2</span><span class="op">,</span> <span class="dv">3</span><span class="op">|</span></span>
<span id="cb12-2"><a href="#cb12-2" tabindex="-1"></a><span class="op">&gt;&gt;</span> nums<span class="op">.</span>overlap<span class="op">(|</span><span class="dv">2</span><span class="op">,</span> <span class="dv">3</span><span class="op">,</span> <span class="dv">4</span><span class="op">|)</span></span>
<span id="cb12-3"><a href="#cb12-3" tabindex="-1"></a><span class="op">=</span> <span class="op">|</span><span class="dv">2</span><span class="op">,</span> <span class="dv">3</span><span class="op">|</span></span></code></pre></div>
</div>
<div id="table-extra-features" class="slide section level1">
<h1>Table Extra Features</h1>
<p>Tables also have two extra tricks:</p>
<h2 id="fallback-tables">Fallback Tables</h2>
<div class="sourceCode" id="cb13"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb13-1"><a href="#cb13-1" tabindex="-1"></a>table1 <span class="op">:=</span> {<span class="st">&quot;Alice&quot;</span><span class="op">=</span><span class="dv">10</span>}</span>
<span id="cb13-2"><a href="#cb13-2" tabindex="-1"></a>table2 <span class="op">:=</span> {<span class="st">&quot;Bob&quot;</span><span class="op">=</span><span class="dv">5</span><span class="op">;</span> fallback<span class="op">=</span>table1}</span>
<span id="cb13-3"><a href="#cb13-3" tabindex="-1"></a><span class="op">&gt;&gt;</span> table2<span class="op">[</span><span class="st">&quot;Alice&quot;</span><span class="op">]</span>!</span>
<span id="cb13-4"><a href="#cb13-4" tabindex="-1"></a><span class="op">=</span> <span class="dv">10</span></span></code></pre></div>
<h2 id="default-values">Default Values</h2>
<div class="sourceCode" id="cb14"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb14-1"><a href="#cb14-1" tabindex="-1"></a>scores <span class="op">:=</span> {<span class="st">&quot;Alice&quot;</span><span class="op">=</span><span class="dv">10</span><span class="op">;</span> default<span class="op">=</span><span class="dv">0</span>}</span>
<span id="cb14-2"><a href="#cb14-2" tabindex="-1"></a><span class="op">&gt;&gt;</span> scores<span class="op">[</span><span class="st">&quot;Carol&quot;</span><span class="op">]</span></span>
<span id="cb14-3"><a href="#cb14-3" tabindex="-1"></a><span class="op">=</span> <span class="dv">0</span></span></code></pre></div>
</div>
<div id="side-note-empty-collections" class="slide section level1">
<h1>Side Note: Empty Collections</h1>
<p>Sadly, type inference can’t read your mind when you create an empty list,
table, or set. So, you need to give it an explicit type when declaring a
variable:</p>
<div class="sourceCode" id="cb15"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb15-1"><a href="#cb15-1" tabindex="-1"></a>no_nums <span class="op">:</span> <span class="op">[</span><span class="dt">Int</span><span class="op">]</span> <span class="op">=</span> <span class="op">[]</span></span></code></pre></div>
<p>However, explicit types are not needed when reassigning a variable, passing
an argument, or giving a return value:</p>
<div class="sourceCode" id="cb16"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb16-1"><a href="#cb16-1" tabindex="-1"></a><span class="kw">func</span> do_thing<span class="op">(</span>nums<span class="op">:[</span><span class="dt">Int</span><span class="op">]</span> <span class="op">-&gt;</span> <span class="op">[</span><span class="dt">Int</span><span class="op">])</span></span>
<span id="cb16-2"><a href="#cb16-2" tabindex="-1"></a>    <span class="cf">if</span> nums<span class="op">.</span>length <span class="op">&gt;</span> <span class="dv">10</span></span>
<span id="cb16-3"><a href="#cb16-3" tabindex="-1"></a>        <span class="co"># No explicit type needed:</span></span>
<span id="cb16-4"><a href="#cb16-4" tabindex="-1"></a>        <span class="cf">return</span> <span class="op">[]</span></span>
<span id="cb16-5"><a href="#cb16-5" tabindex="-1"></a>    <span class="cf">return</span> nums</span>
<span id="cb16-6"><a href="#cb16-6" tabindex="-1"></a></span>
<span id="cb16-7"><a href="#cb16-7" tabindex="-1"></a><span class="co"># No explicit type needed:</span></span>
<span id="cb16-8"><a href="#cb16-8" tabindex="-1"></a>do_thing<span class="op">([])</span></span></code></pre></div>
</div>
<div id="comprehensions" class="slide section level1">
<h1>Comprehensions</h1>
<p>For convenience, Lists, Tables, and Sets have comprehensions similar to
Python’s:</p>
<div class="sourceCode" id="cb17"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb17-1"><a href="#cb17-1" tabindex="-1"></a>primes <span class="op">:=</span> <span class="op">[</span>i <span class="cf">for</span> i <span class="cf">in</span> <span class="dv">100</span> <span class="cf">if</span> i<span class="op">.</span>is_prime<span class="op">()]</span></span>
<span id="cb17-2"><a href="#cb17-2" tabindex="-1"></a>scores <span class="op">:=</span> {name<span class="op">=</span>random<span class="op">.</span>int<span class="op">(</span><span class="dv">1</span><span class="op">,</span><span class="dv">10</span><span class="op">)</span> <span class="cf">for</span> name <span class="cf">in</span> names}</span>
<span id="cb17-3"><a href="#cb17-3" tabindex="-1"></a>words <span class="op">:=</span> <span class="op">|</span>w<span class="op">.</span>lower<span class="op">()</span> <span class="cf">for</span> w <span class="cf">in</span> text<span class="op">.</span>split<span class="op">(</span><span class="st">&quot; &quot;</span><span class="op">)|</span></span></code></pre></div>
<p>Comprehensions can also be mixed and matched with explicit values and other
comprehensions:</p>
<div class="sourceCode" id="cb18"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb18-1"><a href="#cb18-1" tabindex="-1"></a>primes <span class="op">:=</span> <span class="op">[</span><span class="dv">2</span><span class="op">,</span> i <span class="cf">for</span> i <span class="cf">in</span> <span class="op">(</span><span class="dv">3</span><span class="op">).</span>to<span class="op">(</span><span class="dv">99</span><span class="op">,</span> step<span class="op">=</span><span class="dv">2</span><span class="op">)</span> <span class="cf">if</span> i<span class="op">.</span>is_prime<span class="op">()]</span></span>
<span id="cb18-2"><a href="#cb18-2" tabindex="-1"></a></span>
<span id="cb18-3"><a href="#cb18-3" tabindex="-1"></a>both_things <span class="op">:=</span> <span class="op">[</span>x <span class="cf">for</span> x <span class="cf">in</span> xs<span class="op">,</span> y <span class="cf">for</span> y <span class="cf">in</span> ys<span class="op">]</span></span></code></pre></div>
</div>
<div id="optional-types" class="slide section level1">
<h1>Optional Types</h1>
<p>In Tomo, any type can be optional, which means it either has a value or is
<code>none</code>.</p>
<div class="sourceCode" id="cb19"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb19-1"><a href="#cb19-1" tabindex="-1"></a>nickname <span class="op">:</span> <span class="dt">Text</span>? <span class="op">=</span> none</span>
<span id="cb19-2"><a href="#cb19-2" tabindex="-1"></a>nickname <span class="op">=</span> <span class="st">&quot;Bubsy&quot;</span></span></code></pre></div>
<p><strong>Example:</strong> parsing an integer:</p>
<div class="sourceCode" id="cb20"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb20-1"><a href="#cb20-1" tabindex="-1"></a><span class="op">&gt;&gt;</span> <span class="dt">Int</span><span class="op">.</span>parse<span class="op">(</span><span class="st">&quot;123&quot;</span><span class="op">)</span></span>
<span id="cb20-2"><a href="#cb20-2" tabindex="-1"></a><span class="op">=</span> <span class="dv">123</span>?</span>
<span id="cb20-3"><a href="#cb20-3" tabindex="-1"></a></span>
<span id="cb20-4"><a href="#cb20-4" tabindex="-1"></a><span class="op">&gt;&gt;</span> <span class="dt">Int</span><span class="op">.</span>parse<span class="op">(</span><span class="st">&quot;asdf&quot;</span><span class="op">)</span></span>
<span id="cb20-5"><a href="#cb20-5" tabindex="-1"></a><span class="op">=</span> none</span></code></pre></div>
<p>The type system enforces that optional values can’t be used where
non-optional values are required:</p>
<div class="sourceCode" id="cb21"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb21-1"><a href="#cb21-1" tabindex="-1"></a><span class="kw">func</span> add<span class="op">(</span>x<span class="op">:</span><span class="dt">Int</span><span class="op">,</span> y<span class="op">:</span><span class="dt">Int</span> <span class="op">-&gt;</span> <span class="dt">Int</span><span class="op">)</span></span>
<span id="cb21-2"><a href="#cb21-2" tabindex="-1"></a>    <span class="cf">return</span> x <span class="op">+</span> y</span>
<span id="cb21-3"><a href="#cb21-3" tabindex="-1"></a></span>
<span id="cb21-4"><a href="#cb21-4" tabindex="-1"></a>parsed <span class="op">:=</span> <span class="dt">Int</span><span class="op">.</span>parse<span class="op">(</span>some_text<span class="op">)</span></span>
<span id="cb21-5"><a href="#cb21-5" tabindex="-1"></a><span class="co"># Type error:</span></span>
<span id="cb21-6"><a href="#cb21-6" tabindex="-1"></a><span class="op">&gt;&gt;</span> add<span class="op">(</span>parsed<span class="op">,</span> <span class="dv">1</span><span class="op">)</span></span></code></pre></div>
</div>
<div id="using-optionals" class="slide section level1">
<h1>Using Optionals</h1>
<p>The postfix <code>?</code> operator converts a non-optional value into an
optional value.</p>
<div class="sourceCode" id="cb22"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb22-1"><a href="#cb22-1" tabindex="-1"></a><span class="op">&gt;&gt;</span> nickname</span>
<span id="cb22-2"><a href="#cb22-2" tabindex="-1"></a><span class="op">=</span> <span class="st">&quot;Bubsy&quot;</span>?</span></code></pre></div>
<p>The postfix <code>!</code> operator converts an optional value into a
non-optional value or errors if it was <code>none</code></p>
<div class="sourceCode" id="cb23"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb23-1"><a href="#cb23-1" tabindex="-1"></a><span class="op">&gt;&gt;</span> nickname!</span>
<span id="cb23-2"><a href="#cb23-2" tabindex="-1"></a><span class="op">=</span> <span class="st">&quot;Bubsy&quot;</span></span></code></pre></div>
<p>You can also use <code>or</code> to give a fallback:</p>
<div class="sourceCode" id="cb24"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb24-1"><a href="#cb24-1" tabindex="-1"></a>nickname <span class="op">=</span> none</span>
<span id="cb24-2"><a href="#cb24-2" tabindex="-1"></a><span class="op">&gt;&gt;</span> nickname <span class="op">or</span> <span class="st">&quot;nah&quot;</span></span>
<span id="cb24-3"><a href="#cb24-3" tabindex="-1"></a><span class="op">=</span> <span class="st">&quot;nah&quot;</span></span></code></pre></div>
</div>
<div id="tables-and-optional-values" class="slide section level1">
<h1>Tables and Optional Values</h1>
<p><strong>Note:</strong> when accessing a key in a table, the returned value is
<em>optional</em> because the key might not be in the table:</p>
<div class="sourceCode" id="cb25"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb25-1"><a href="#cb25-1" tabindex="-1"></a>scores <span class="op">:=</span> {<span class="st">&quot;Alice&quot;</span><span class="op">=</span><span class="dv">10</span>}</span>
<span id="cb25-2"><a href="#cb25-2" tabindex="-1"></a><span class="op">&gt;&gt;</span> scores<span class="op">[</span><span class="st">&quot;Alice&quot;</span><span class="op">]</span></span>
<span id="cb25-3"><a href="#cb25-3" tabindex="-1"></a><span class="op">=</span> <span class="dv">10</span>?</span>
<span id="cb25-4"><a href="#cb25-4" tabindex="-1"></a></span>
<span id="cb25-5"><a href="#cb25-5" tabindex="-1"></a><span class="op">&gt;&gt;</span> scores<span class="op">[</span><span class="st">&quot;Xander&quot;</span><span class="op">]</span></span>
<span id="cb25-6"><a href="#cb25-6" tabindex="-1"></a><span class="op">=</span> none</span>
<span id="cb25-7"><a href="#cb25-7" tabindex="-1"></a></span>
<span id="cb25-8"><a href="#cb25-8" tabindex="-1"></a><span class="op">&gt;&gt;</span> scores<span class="op">[</span><span class="st">&quot;Xander&quot;</span><span class="op">]</span> <span class="op">or</span> <span class="dv">0</span></span>
<span id="cb25-9"><a href="#cb25-9" tabindex="-1"></a><span class="op">=</span> <span class="dv">0</span></span></code></pre></div>
</div>
<div id="structs" class="slide section level1">
<h1>Structs</h1>
<p>Structs let you define things that hold multiple members with different
types.</p>
<div class="sourceCode" id="cb26"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb26-1"><a href="#cb26-1" tabindex="-1"></a><span class="kw">struct</span> LogEntry<span class="op">(</span>username<span class="op">:</span><span class="dt">Text</span><span class="op">,</span> action<span class="op">:</span><span class="dt">Text</span><span class="op">,</span> <span class="cf">when</span><span class="op">:</span>Time <span class="op">=</span> Time<span class="op">.</span>now<span class="op">())</span></span>
<span id="cb26-2"><a href="#cb26-2" tabindex="-1"></a>    <span class="kw">func</span> happened_after<span class="op">(</span>e<span class="op">:</span>LogEntry<span class="op">,</span> time<span class="op">:</span>Time <span class="op">-&gt;</span> <span class="dt">Bool</span><span class="op">)</span></span>
<span id="cb26-3"><a href="#cb26-3" tabindex="-1"></a>        <span class="cf">return</span> e<span class="op">.</span>time <span class="op">&gt;</span> time</span>
<span id="cb26-4"><a href="#cb26-4" tabindex="-1"></a></span>
<span id="cb26-5"><a href="#cb26-5" tabindex="-1"></a>entry <span class="op">:=</span> LogEntry<span class="op">(</span><span class="st">&quot;Bruce&quot;</span><span class="op">,</span> <span class="st">&quot;gave presentation&quot;</span><span class="op">)</span></span>
<span id="cb26-6"><a href="#cb26-6" tabindex="-1"></a>sleep<span class="op">(</span><span class="dv">1</span><span class="op">)</span></span>
<span id="cb26-7"><a href="#cb26-7" tabindex="-1"></a><span class="op">&gt;&gt;</span> entry<span class="op">.</span>happened_after<span class="op">(</span>Time<span class="op">.</span>now<span class="op">())</span></span>
<span id="cb26-8"><a href="#cb26-8" tabindex="-1"></a><span class="op">=</span> <span class="st">no</span></span></code></pre></div>
<p>Structs can also have methods that let you define functionality commonly
associated with that struct.</p>
<p>You can also define namespaced functions or constants.</p>
</div>
<div id="tagged-enumerations" class="slide section level1">
<h1>Tagged Enumerations</h1>
<div class="sourceCode" id="cb27"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb27-1"><a href="#cb27-1" tabindex="-1"></a><span class="kw">enum</span> FooResult<span class="op">(</span>Failure<span class="op">(</span>reason<span class="op">:</span><span class="dt">Text</span><span class="op">),</span> Success<span class="op">(</span>result<span class="op">:</span><span class="dt">Int</span><span class="op">))</span></span></code></pre></div>
</div>
<div id="pattern-matching" class="slide section level1">
<h1>Pattern Matching</h1>
<div class="sourceCode" id="cb28"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb28-1"><a href="#cb28-1" tabindex="-1"></a><span class="cf">when</span> run_program<span class="op">()</span> <span class="cf">is</span> Failure<span class="op">(</span>reason<span class="op">)</span></span>
<span id="cb28-2"><a href="#cb28-2" tabindex="-1"></a>    <span class="bu">say</span><span class="op">(</span><span class="st">&quot;Failed: </span><span class="op">$</span><span class="va">reason</span><span class="st">&quot;</span><span class="op">)</span></span>
<span id="cb28-3"><a href="#cb28-3" tabindex="-1"></a><span class="cf">is</span> Success<span class="op">(</span>x<span class="op">)</span></span>
<span id="cb28-4"><a href="#cb28-4" tabindex="-1"></a>    <span class="bu">say</span><span class="op">(</span><span class="st">&quot;Success: </span><span class="op">$</span><span class="va">x</span><span class="st">&quot;</span><span class="op">)</span></span></code></pre></div>
<ul>
<li>Exhaustiveness checking</li>
<li>Uses a <code>switch</code> statement for fast performance on enums</li>
<li>For other types, simple <code>if .. else if</code> equality checks</li>
</ul>
</div>
<div id="smart-inference" class="slide section level1">
<h1>Smart Inference</h1>
<p>No <code>FooResult.</code> prefix in most cases:</p>
<div class="sourceCode" id="cb29"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb29-1"><a href="#cb29-1" tabindex="-1"></a><span class="kw">func</span> run_program<span class="op">(-&gt;</span> FooResult<span class="op">)</span></span>
<span id="cb29-2"><a href="#cb29-2" tabindex="-1"></a>    <span class="cf">if</span> blah</span>
<span id="cb29-3"><a href="#cb29-3" tabindex="-1"></a>        <span class="cf">return</span> Failure<span class="op">(</span><span class="st">&quot;blah&quot;</span><span class="op">)</span></span>
<span id="cb29-4"><a href="#cb29-4" tabindex="-1"></a>    <span class="cf">else</span></span>
<span id="cb29-5"><a href="#cb29-5" tabindex="-1"></a>        <span class="cf">return</span> Success<span class="op">(</span><span class="dv">6</span><span class="op">)</span></span></code></pre></div>
</div>
<div id="paths" class="slide section level1">
<h1>Paths</h1>
<p>File paths are a native type with built-in literal syntax:</p>
<div class="sourceCode" id="cb30"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb30-1"><a href="#cb30-1" tabindex="-1"></a>config_file <span class="op">:=</span> <span class="op">(~/.</span>config<span class="op">/</span>myconfig<span class="op">.</span>txt<span class="op">)</span></span>
<span id="cb30-2"><a href="#cb30-2" tabindex="-1"></a></span>
<span id="cb30-3"><a href="#cb30-3" tabindex="-1"></a><span class="cf">for</span> line <span class="cf">in</span> config_file<span class="op">.</span>by_line<span class="op">()</span>!</span>
<span id="cb30-4"><a href="#cb30-4" tabindex="-1"></a>    <span class="op">...</span></span>
<span id="cb30-5"><a href="#cb30-5" tabindex="-1"></a></span>
<span id="cb30-6"><a href="#cb30-6" tabindex="-1"></a>config_file<span class="op">.</span>append<span class="op">(</span><span class="st">&quot;New text\n&quot;</span><span class="op">)</span></span></code></pre></div>
</div>
<div id="pointers" class="slide section level1">
<h1>Pointers</h1>
<p>Two types of pointers in Tomo: - Pointers to heap-allocated memory
(<code>@</code>) - Pointers to stack-allocated memory (<code>&amp;</code>)</p>
<p>Allocation uses a prefix operator:</p>
<div class="sourceCode" id="cb31"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb31-1"><a href="#cb31-1" tabindex="-1"></a>heap_nums <span class="op">:=</span> <span class="op">@[</span><span class="dv">10</span><span class="op">,</span> <span class="dv">20</span><span class="op">,</span> <span class="dv">30</span><span class="op">]</span></span>
<span id="cb31-2"><a href="#cb31-2" tabindex="-1"></a>stack_nums <span class="op">:=</span> <span class="op">&amp;[</span><span class="dv">10</span><span class="op">,</span> <span class="dv">20</span><span class="op">,</span> <span class="dv">30</span><span class="op">]</span></span></code></pre></div>
</div>
<div id="equality" class="slide section level1">
<h1>Equality</h1>
<p>In Tomo, a pointer is equal to another pointer <strong>only</strong> if they
point to the same memory.</p>
<div class="sourceCode" id="cb32"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb32-1"><a href="#cb32-1" tabindex="-1"></a>pointer1 <span class="op">:=</span> <span class="op">@[</span><span class="dv">10</span><span class="op">,</span> <span class="dv">20</span><span class="op">]</span></span>
<span id="cb32-2"><a href="#cb32-2" tabindex="-1"></a>pointer2 <span class="op">:=</span> <span class="op">@[</span><span class="dv">10</span><span class="op">,</span> <span class="dv">20</span><span class="op">]</span></span>
<span id="cb32-3"><a href="#cb32-3" tabindex="-1"></a></span>
<span id="cb32-4"><a href="#cb32-4" tabindex="-1"></a><span class="op">&gt;&gt;</span> pointer1 <span class="op">==</span> pointer2</span>
<span id="cb32-5"><a href="#cb32-5" tabindex="-1"></a><span class="op">=</span> <span class="st">no</span></span></code></pre></div>
<p>For things that are not pointers (e.g. Lists or Tables), equality means
<em>structural</em> equality (i.e. they have the same contents):</p>
<div class="sourceCode" id="cb33"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb33-1"><a href="#cb33-1" tabindex="-1"></a>list1 <span class="op">:=</span> <span class="op">[</span><span class="dv">10</span><span class="op">,</span> <span class="dv">20</span><span class="op">]</span></span>
<span id="cb33-2"><a href="#cb33-2" tabindex="-1"></a>list2 <span class="op">:=</span> <span class="op">[</span><span class="dv">10</span><span class="op">,</span> <span class="dv">20</span><span class="op">]</span></span></code></pre></div>
</div>
<div id="mutability" class="slide section level1">
<h1>Mutability</h1>
<p>In Tomo, values such as integers, lists, tables, etc. are considered
<strong>immutable</strong>. You can reassign variables, but not change the
contents:</p>
<div class="sourceCode" id="cb34"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb34-1"><a href="#cb34-1" tabindex="-1"></a>nums <span class="op">:=</span> <span class="op">[</span><span class="dv">10</span><span class="op">,</span> <span class="dv">20</span><span class="op">]</span></span>
<span id="cb34-2"><a href="#cb34-2" tabindex="-1"></a><span class="co"># Not allowed:</span></span>
<span id="cb34-3"><a href="#cb34-3" tabindex="-1"></a><span class="co"># nums.append(30)</span></span>
<span id="cb34-4"><a href="#cb34-4" tabindex="-1"></a></span>
<span id="cb34-5"><a href="#cb34-5" tabindex="-1"></a><span class="co"># Allowed:</span></span>
<span id="cb34-6"><a href="#cb34-6" tabindex="-1"></a>nums <span class="op">=</span> <span class="op">[</span><span class="dv">99</span><span class="op">,</span> <span class="dv">100</span><span class="op">]</span></span></code></pre></div>
<p>In order to mutate data, you need to use pointers:</p>
<div class="sourceCode" id="cb35"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb35-1"><a href="#cb35-1" tabindex="-1"></a>nums <span class="op">:=</span> <span class="op">@[</span><span class="dv">10</span><span class="op">,</span> <span class="dv">20</span><span class="op">]</span></span>
<span id="cb35-2"><a href="#cb35-2" tabindex="-1"></a>nums<span class="op">.</span>append<span class="op">(</span><span class="dv">30</span><span class="op">)</span></span>
<span id="cb35-3"><a href="#cb35-3" tabindex="-1"></a><span class="op">&gt;&gt;</span> nums</span>
<span id="cb35-4"><a href="#cb35-4" tabindex="-1"></a><span class="op">=</span> <span class="op">@[</span><span class="dv">10</span><span class="op">,</span> <span class="dv">20</span><span class="op">,</span> <span class="dv">30</span><span class="op">]</span></span></code></pre></div>
</div>
<div id="mutability-continued" class="slide section level1">
<h1>Mutability Continued</h1>
<p>In order to do structural comparisons between pointers (compare their
contents), you can use <code>[]</code> to access the immutable value stored at
the pointer’s location:</p>
<div class="sourceCode" id="cb36"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb36-1"><a href="#cb36-1" tabindex="-1"></a>nums <span class="op">:=</span> <span class="op">@[</span><span class="dv">10</span><span class="op">,</span> <span class="dv">20</span><span class="op">]</span></span>
<span id="cb36-2"><a href="#cb36-2" tabindex="-1"></a>other <span class="op">:=</span> <span class="op">@[</span><span class="dv">10</span><span class="op">,</span> <span class="dv">20</span><span class="op">]</span></span>
<span id="cb36-3"><a href="#cb36-3" tabindex="-1"></a></span>
<span id="cb36-4"><a href="#cb36-4" tabindex="-1"></a><span class="co"># Are these the same pointer?</span></span>
<span id="cb36-5"><a href="#cb36-5" tabindex="-1"></a><span class="op">&gt;&gt;</span> nums <span class="op">==</span> other</span>
<span id="cb36-6"><a href="#cb36-6" tabindex="-1"></a><span class="op">=</span> <span class="st">no</span></span>
<span id="cb36-7"><a href="#cb36-7" tabindex="-1"></a></span>
<span id="cb36-8"><a href="#cb36-8" tabindex="-1"></a><span class="co"># Do these have the same contents?</span></span>
<span id="cb36-9"><a href="#cb36-9" tabindex="-1"></a><span class="op">&gt;&gt;</span> nums<span class="op">[]</span> <span class="op">==</span> other<span class="op">[]</span></span>
<span id="cb36-10"><a href="#cb36-10" tabindex="-1"></a><span class="op">=</span> <span class="st">yes</span></span></code></pre></div>
</div>
<div id="copy-on-write" class="slide section level1">
<h1>Copy on Write</h1>
<p>Immutable values in Tomo use copy-on-write behavior, so it’s efficient to
have multiple variables referring to the same data or even slices of the same
data:</p>
<div class="sourceCode" id="cb37"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb37-1"><a href="#cb37-1" tabindex="-1"></a>lotta_nums <span class="op">:=</span> <span class="op">@[</span>i<span class="op">*</span><span class="dv">10</span> <span class="cf">for</span> i <span class="cf">in</span> <span class="dv">1000000</span><span class="op">]</span></span>
<span id="cb37-2"><a href="#cb37-2" tabindex="-1"></a></span>
<span id="cb37-3"><a href="#cb37-3" tabindex="-1"></a><span class="co"># Not copying</span></span>
<span id="cb37-4"><a href="#cb37-4" tabindex="-1"></a>same_nums <span class="op">:=</span> lotta_nums<span class="op">[]</span></span>
<span id="cb37-5"><a href="#cb37-5" tabindex="-1"></a></span>
<span id="cb37-6"><a href="#cb37-6" tabindex="-1"></a><span class="co"># Not copying:</span></span>
<span id="cb37-7"><a href="#cb37-7" tabindex="-1"></a>first_half <span class="op">:=</span> lotta_nums<span class="op">.</span>to<span class="op">(</span>lotta_nums<span class="op">.</span>length<span class="op">/</span><span class="dv">2</span><span class="op">)</span></span></code></pre></div>
</div>
<div id="functions" class="slide section level1">
<h1>Functions</h1>
<p>Functions have explicit type information:</p>
<div class="sourceCode" id="cb38"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb38-1"><a href="#cb38-1" tabindex="-1"></a>def filled_int_array<span class="op">(</span>count<span class="op">:</span><span class="dt">Int</span><span class="op">,</span> value<span class="op">=</span><span class="dv">0</span> <span class="op">-&gt;</span> <span class="op">[</span><span class="dt">Int</span><span class="op">])</span></span>
<span id="cb38-2"><a href="#cb38-2" tabindex="-1"></a>    <span class="cf">return</span> <span class="op">[</span>value <span class="cf">for</span> _ <span class="cf">in</span> count<span class="op">]</span></span></code></pre></div>
<p>Default arguments and keyword arguments are supported:</p>
<div class="sourceCode" id="cb39"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb39-1"><a href="#cb39-1" tabindex="-1"></a><span class="op">&gt;&gt;</span> filled_int_array<span class="op">(</span><span class="dv">3</span><span class="op">)</span></span>
<span id="cb39-2"><a href="#cb39-2" tabindex="-1"></a><span class="op">=</span> <span class="op">[</span><span class="dv">0</span><span class="op">,</span> <span class="dv">0</span><span class="op">,</span> <span class="dv">0</span><span class="op">]</span></span>
<span id="cb39-3"><a href="#cb39-3" tabindex="-1"></a><span class="op">&gt;&gt;</span> filled_int_array<span class="op">(</span>value<span class="op">=</span><span class="dv">99</span><span class="op">,</span> count<span class="op">=</span><span class="dv">3</span><span class="op">)</span></span>
<span id="cb39-4"><a href="#cb39-4" tabindex="-1"></a><span class="op">=</span> <span class="op">[</span><span class="dv">99</span><span class="op">,</span> <span class="dv">99</span><span class="op">,</span> <span class="dv">99</span><span class="op">]</span></span></code></pre></div>
</div>
<div id="first-class-functions" class="slide section level1">
<h1>First-class Functions</h1>
<p>Functions are first-class values, so they can be passed to other
functions.</p>
<div class="sourceCode" id="cb40"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb40-1"><a href="#cb40-1" tabindex="-1"></a><span class="kw">func</span> textify<span class="op">(</span>x<span class="op">:</span><span class="dt">Int</span> <span class="op">-&gt;</span> <span class="dt">Text</span><span class="op">)</span></span>
<span id="cb40-2"><a href="#cb40-2" tabindex="-1"></a>    <span class="cf">return</span> <span class="st">&quot;Cool: </span><span class="op">$</span><span class="va">x</span><span class="st">&quot;</span></span>
<span id="cb40-3"><a href="#cb40-3" tabindex="-1"></a></span>
<span id="cb40-4"><a href="#cb40-4" tabindex="-1"></a><span class="kw">func</span> apply<span class="op">(</span>fn<span class="op">:</span><span class="kw">func</span><span class="op">(</span>x<span class="op">:</span><span class="dt">Int</span> <span class="op">-&gt;</span> <span class="dt">Text</span><span class="op">),</span> n<span class="op">:</span><span class="dt">Int</span> <span class="op">-&gt;</span> <span class="dt">Text</span><span class="op">)</span></span>
<span id="cb40-5"><a href="#cb40-5" tabindex="-1"></a>    <span class="cf">return</span> fn<span class="op">(</span>n<span class="op">)</span></span></code></pre></div>
</div>
<div id="lambdas" class="slide section level1">
<h1>Lambdas</h1>
<p>Lambdas (anonymous functions) are also supported:</p>
<div class="sourceCode" id="cb41"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb41-1"><a href="#cb41-1" tabindex="-1"></a>n <span class="op">:=</span> <span class="dv">1</span></span>
<span id="cb41-2"><a href="#cb41-2" tabindex="-1"></a>adder <span class="op">:=</span> <span class="kw">func</span><span class="op">(</span>x<span class="op">:</span><span class="dt">Int</span><span class="op">)</span> x <span class="op">+</span> n</span>
<span id="cb41-3"><a href="#cb41-3" tabindex="-1"></a><span class="op">&gt;&gt;</span> adder<span class="op">(</span><span class="dv">5</span><span class="op">)</span></span>
<span id="cb41-4"><a href="#cb41-4" tabindex="-1"></a><span class="op">=</span> <span class="dv">6</span></span></code></pre></div>
<p>Return types can be inferred for lambdas, so only argument types need to be
specified explicitly.</p>
<p>Lambdas can capture values from the surrounding context, although the
captured values are frozen in time and the lambda can’t be used to reassign
local variables or get new values from those variables.</p>
<p>If I do <code>n = 2</code>, <code>adder</code> will still be using the old
value of <code>n</code>.</p>
<p>Lambdas can also span multiple lines, only the last expression is used as a
return value:</p>
<div class="sourceCode" id="cb42"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb42-1"><a href="#cb42-1" tabindex="-1"></a>fn <span class="op">:=</span> <span class="kw">func</span><span class="op">(</span>x<span class="op">:</span><span class="dt">Int</span><span class="op">)</span></span>
<span id="cb42-2"><a href="#cb42-2" tabindex="-1"></a>    <span class="bu">say</span><span class="op">(</span><span class="st">&quot;You&#39;re using </span><span class="op">$</span><span class="va">x</span><span class="st">&quot;</span><span class="op">)</span></span>
<span id="cb42-3"><a href="#cb42-3" tabindex="-1"></a>    x <span class="op">+</span> <span class="dv">1</span></span></code></pre></div>
</div>
<div id="function-inlining" class="slide section level1">
<h1>Function Inlining</h1>
<p>Add the <code>inline</code> modifier to functions to get function
inlining:</p>
<div class="sourceCode" id="cb43"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb43-1"><a href="#cb43-1" tabindex="-1"></a>def add<span class="op">(</span>x<span class="op">,</span>y<span class="op">:</span><span class="dt">Int</span> <span class="op">-&gt;</span> <span class="dt">Int</span><span class="op">;</span> inline<span class="op">)</span></span>
<span id="cb43-2"><a href="#cb43-2" tabindex="-1"></a>    <span class="cf">return</span> x <span class="op">+</span> y</span></code></pre></div>
<p>Inlined functions can still be used as first-class values, though the
inlining obviously won’t work if you pass it around as a value.</p>
</div>
<div id="function-caching" class="slide section level1">
<h1>Function Caching</h1>
<p>Any function can be sped up using <code>cached</code> or
<code>cache_size=...</code> to add a hash-table-based cache to the function so
it remembers previous calls:</p>
<div class="sourceCode" id="cb44"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb44-1"><a href="#cb44-1" tabindex="-1"></a><span class="kw">func</span> fibonacci<span class="op">(</span>n<span class="op">:</span><span class="dt">Int</span><span class="op">;</span> cache_size<span class="op">=</span><span class="dv">10</span><span class="op">)</span></span>
<span id="cb44-2"><a href="#cb44-2" tabindex="-1"></a>    <span class="cf">return</span> <span class="dv">1</span> <span class="cf">if</span> n <span class="op">&lt;=</span> <span class="dv">1</span></span>
<span id="cb44-3"><a href="#cb44-3" tabindex="-1"></a>    <span class="cf">return</span> fibonacci<span class="op">(</span>n<span class="op">-</span><span class="dv">1</span><span class="op">)</span> <span class="op">+</span> fibonacci<span class="op">(</span>n<span class="op">-</span><span class="dv">2</span><span class="op">)</span></span></code></pre></div>
<p>Since lists, tables, and sets are <em>immutable</em>, caching is safe to do
with functions that operate on anything that doesn’t use pointers.</p>
<p>For functions that <em>do</em> use pointers, it’s still okay, you should just
make sure the function’s return value doesn’t depend on the pointers’ contents
if the contents might change.</p>
</div>
<div id="command-line-argument-parsing" class="slide section level1">
<h1>Command Line Argument Parsing</h1>
<p>Running a program invokes the <code>main()</code> function. But the main
function isn’t limited to just taking a list of strings that were passed in on
the command line. Instead, it can have a complex signature whose arguments will
be parsed automatically:</p>
<div class="sourceCode" id="cb45"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb45-1"><a href="#cb45-1" tabindex="-1"></a><span class="kw">func</span> main<span class="op">(</span>files<span class="op">:[</span>Path<span class="op">],</span> param<span class="op">=</span><span class="dv">0</span><span class="op">,</span> verbose<span class="op">=</span><span class="st">no</span><span class="op">)</span></span>
<span id="cb45-2"><a href="#cb45-2" tabindex="-1"></a>    <span class="cf">for</span> file <span class="cf">in</span> files</span>
<span id="cb45-3"><a href="#cb45-3" tabindex="-1"></a>        <span class="cf">if</span> verbose</span>
<span id="cb45-4"><a href="#cb45-4" tabindex="-1"></a>            <span class="bu">say</span><span class="op">(</span><span class="st">&quot;Doing thing with file </span><span class="op">$</span><span class="va">file</span><span class="st">&quot;</span><span class="op">)</span></span>
<span id="cb45-5"><a href="#cb45-5" tabindex="-1"></a>            do_thing<span class="op">(</span>file<span class="op">,</span> param<span class="op">)</span></span></code></pre></div>
<div class="sourceCode" id="cb46"><pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb46-1"><a href="#cb46-1" tabindex="-1"></a><span class="ex">$</span> tomo <span class="at">-e</span> myprogram.tm</span>
<span id="cb46-2"><a href="#cb46-2" tabindex="-1"></a><span class="ex">$</span> ./myprogram <span class="at">--verbose</span> file1.txt file2.txt <span class="at">--param</span><span class="op">=</span>99</span></code></pre></div>
</div>
<div id="use" class="slide section level1">
<h1>Use</h1>
<p>Tomo has a keyword called <code>use</code> that lets you use code from other
files or installed modules:</p>
<div class="sourceCode" id="cb47"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb47-1"><a href="#cb47-1" tabindex="-1"></a><span class="co"># File 1</span></span>
<span id="cb47-2"><a href="#cb47-2" tabindex="-1"></a><span class="kw">func</span> do_thing<span class="op">()</span></span>
<span id="cb47-3"><a href="#cb47-3" tabindex="-1"></a>    <span class="bu">say</span><span class="op">(</span><span class="st">&quot;Did it!&quot;</span><span class="op">)</span></span></code></pre></div>
<div class="sourceCode" id="cb48"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb48-1"><a href="#cb48-1" tabindex="-1"></a><span class="co"># File 2</span></span>
<span id="cb48-2"><a href="#cb48-2" tabindex="-1"></a>use <span class="op">./</span>file1<span class="op">.</span>tm</span>
<span id="cb48-3"><a href="#cb48-3" tabindex="-1"></a></span>
<span id="cb48-4"><a href="#cb48-4" tabindex="-1"></a><span class="kw">func</span> main<span class="op">()</span></span>
<span id="cb48-5"><a href="#cb48-5" tabindex="-1"></a>    do_thing<span class="op">()</span></span></code></pre></div>
<div class="sourceCode" id="cb49"><pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb49-1"><a href="#cb49-1" tabindex="-1"></a><span class="ex">$</span> tomo file2.tm</span>
<span id="cb49-2"><a href="#cb49-2" tabindex="-1"></a><span class="ex">Did</span> it!</span></code></pre></div>
</div>
<div id="compilation-note" class="slide section level1">
<h1>Compilation Note</h1>
<p>The compilation model has some nice features:</p>
<ol style="list-style-type: decimal">
<li>Each file is compiled <em>independently</em></li>
<li>Files are recompiled as needed when their contents or their dependencies’
contents change</li>
<li>Files are compiled <em>in parallel</em></li>
</ol>
<p>This means that compilation is <em>very fast</em> compared to some other
languages.</p>
<p>There is also <em>no build configuration file!</em> If you run a file, it
compiles and runs the file and its dependencies as needed. <strong>The code
itself defines what needs to be compiled.</strong></p>
</div>
<div id="libraries" class="slide section level1">
<h1>Libraries</h1>
<p>You can build your own libraries that are compiled as shared library files
and installed on your computer. When you use an installed library, the compiler
will dynamically link against it, which means it will not add to your compile
times.</p>
<p>To build and install a library, put your files in a directory with the
library’s name and run <code>tomo -IL mylibrary</code></p>
<p>To use an installed library:</p>
<div class="sourceCode" id="cb50"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb50-1"><a href="#cb50-1" tabindex="-1"></a>use mylibrary</span></code></pre></div>
<p>Note: local files have the syntax <code>use ./myfile.tm</code> (full relative
file path), whereas installed libraries just use the library’s name:
<code>use libname</code></p>
</div>
<div id="data-serialization" class="slide section level1">
<h1>Data Serialization</h1>
<p>One of the most error-prone and tedious tasks in programming is data
serialization and deserialization. It can be hard to do a good job of safely
converting data into a format that can be sent over a wire or saved to a disk
and then reconstituted later.</p>
<p>Tomo, however, has built-in data serialization and deserialization!</p>
<div class="sourceCode" id="cb51"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb51-1"><a href="#cb51-1" tabindex="-1"></a><span class="kw">struct</span> MyThing<span class="op">(</span>x<span class="op">:</span><span class="dt">Int</span><span class="op">,</span> y<span class="op">:</span><span class="dt">Text</span><span class="op">)</span></span>
<span id="cb51-2"><a href="#cb51-2" tabindex="-1"></a></span>
<span id="cb51-3"><a href="#cb51-3" tabindex="-1"></a>thing <span class="op">:=</span> MyThing<span class="op">(</span><span class="dv">12345</span><span class="op">,</span> <span class="st">&quot;Some text&quot;</span><span class="op">)</span></span>
<span id="cb51-4"><a href="#cb51-4" tabindex="-1"></a></span>
<span id="cb51-5"><a href="#cb51-5" tabindex="-1"></a><span class="op">(./</span>thing<span class="op">.</span>dat<span class="op">).</span>write_bytes<span class="op">(</span>thing<span class="op">.</span>serialized<span class="op">())</span></span>
<span id="cb51-6"><a href="#cb51-6" tabindex="-1"></a></span>
<span id="cb51-7"><a href="#cb51-7" tabindex="-1"></a>roundtrip <span class="op">:=</span> deserialize<span class="op">((./</span>thing<span class="op">.</span>dat<span class="op">).</span>read_bytes<span class="op">()</span>! <span class="op">-&gt;</span> MyThing<span class="op">)</span></span>
<span id="cb51-8"><a href="#cb51-8" tabindex="-1"></a><span class="op">&gt;&gt;</span> roundtrip <span class="op">==</span> thing</span>
<span id="cb51-9"><a href="#cb51-9" tabindex="-1"></a><span class="op">=</span> <span class="st">yes</span></span></code></pre></div>
<p>Serialization works for (almost) all built-in types, including pointers!</p>
<p>For datastructures like trees and cyclic graphs, deserialization creates a
new structure with the same relationships as the original (though inhabiting new
memory).</p>
</div>
<div id="what-is-a-secure-programming-language" class="slide section level1">
<h1>What Is a Secure Programming Language?</h1>
<p><a href="https://www.youtube.com/watch?v=dhoP-dyIr54" target="_blank" rel="noreferrer">What Is a Secure Programming Language?</a> is talk given by
Cristina Cifuentes (<a href="https://drops.dagstuhl.de/storage/00lipics/lipics-vol136-snapl2019/LIPIcs.SNAPL.2019.3/LIPIcs.SNAPL.2019.3.pdf" target="_blank" rel="noreferrer">paper</a>)</p>
<blockquote>
<p>We contend that all of today’s mainstream programming languages are insecure,
including even the most recent ones that come with claims that they are designed
to be “secure”. […] We propose a simple data-driven definition for a secure
programming language: that it provides first-class language support to address
the causes for the most common, significant vulnerabilities found in real-world
software.</p>
</blockquote>
<blockquote>
<p>In our analysis of the NVD data, interestingly, we discovered that three of
the top four most common vulnerabilities are actually issues that can be
considered to be in the realm of programming language design. Moreover, when
combined, these three categories of vulnerabilities represent 53% of all
labelled exploited vulnerabilities listed in the NVD for that period. […]
vulnerabilities they represent are as follows: 5,899 buffer errors; 5,851
injection errors; 3,106 information leak errors.</p>
</blockquote>
<p>Tomo addresses all three issues.</p>
</div>
<div id="buffer-errors" class="slide section level1">
<h1>Buffer Errors</h1>
<p><strong>Fix 1:</strong> Garbage collection <strong>solves</strong> many
memory bugs like use-after-free and makes it easy for functions to allocate and
return memory instead of requiring the use of caller-provided buffers.</p>
<p><strong>Fix 2:</strong> Array bounds checking, make it impossible to read
past the end of an array or list by checking at runtime.</p>
<p><strong>Fix 3:</strong> Stack memory is not allowed to be stored in
heap-allocated memory or other stack-allocated memory. A pointer to stack memory
<strong>cannot</strong> outlive the call frame.</p>
<p><strong>Fix 4:</strong> Length-prefixed text instead of NUL-terminated
strings. Don’t let text contents tell you how long it is, store that information
out-of-band.</p>
<p><strong>Generally:</strong> use good API design to avoid intrinsically
insecure APIs in the standard library (e.g. <code>scanf()</code>)</p>
</div>
<div id="injection-errors" class="slide section level1">
<h1>Injection Errors</h1>
<p>Injection occurs when one type of text (e.g. an attacker-controlled username)
is inserted into a different context where it is executed as code (e.g. pasted
into an HTML page without escaping).</p>
<p><strong>The fix:</strong> have the type system distinguish between different
kinds of text and <strong>automatically escape text</strong> when converting
between different contexts. Also, emit type errors when attempting to
concatenate different types of text.</p>
<div class="sourceCode" id="cb52"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb52-1"><a href="#cb52-1" tabindex="-1"></a><span class="kw">lang</span> HTML</span>
<span id="cb52-2"><a href="#cb52-2" tabindex="-1"></a>    <span class="kw">convert</span><span class="op">(</span>text<span class="op">:</span><span class="dt">Text</span> <span class="op">-&gt;</span> HTML<span class="op">)</span></span>
<span id="cb52-3"><a href="#cb52-3" tabindex="-1"></a>        <span class="cf">return</span> HTML<span class="op">.</span>from_text<span class="op">(</span>text<span class="op">.</span>translate<span class="op">(</span>{</span>
<span id="cb52-4"><a href="#cb52-4" tabindex="-1"></a>            <span class="st">&quot;&lt;&quot;</span><span class="op">=</span><span class="st">&quot;&amp;lt;&quot;</span><span class="op">,</span> <span class="st">&quot;&gt;&quot;</span><span class="op">=</span><span class="st">&quot;&amp;gt;&quot;</span><span class="op">,</span></span>
<span id="cb52-5"><a href="#cb52-5" tabindex="-1"></a>            <span class="st">&#39;&quot;&#39;</span><span class="op">=</span><span class="st">&quot;&amp;quot&quot;</span><span class="op">,</span> <span class="st">&quot;&#39;&quot;</span><span class="op">=</span><span class="st">&quot;&amp;#39;&quot;</span><span class="op">,</span></span>
<span id="cb52-6"><a href="#cb52-6" tabindex="-1"></a>            <span class="st">&quot;&amp;&quot;</span><span class="op">=</span><span class="st">&quot;&amp;amp;&quot;</span><span class="op">,</span></span>
<span id="cb52-7"><a href="#cb52-7" tabindex="-1"></a>        }<span class="op">))</span></span></code></pre></div>
<div class="sourceCode" id="cb53"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb53-1"><a href="#cb53-1" tabindex="-1"></a>username <span class="op">:=</span> <span class="st">&quot;&lt;script&gt;alert(&#39;pwned!&#39;)&lt;/script&gt;&quot;</span></span>
<span id="cb53-2"><a href="#cb53-2" tabindex="-1"></a></span>
<span id="cb53-3"><a href="#cb53-3" tabindex="-1"></a>element <span class="op">:=</span> $HTML<span class="st">&quot;</span></span>
<span id="cb53-4"><a href="#cb53-4" tabindex="-1"></a><span class="st">    &lt;span&gt;</span><span class="op">$</span><span class="va">username</span><span class="st">&lt;/span&gt;</span></span>
<span id="cb53-5"><a href="#cb53-5" tabindex="-1"></a><span class="st">&quot;</span></span>
<span id="cb53-6"><a href="#cb53-6" tabindex="-1"></a><span class="op">&gt;&gt;</span> element</span>
<span id="cb53-7"><a href="#cb53-7" tabindex="-1"></a><span class="op">=</span> <span class="st">&#39;&lt;span&gt;&amp;lt;script&amp;gt;alert(&amp;#39;pwned!&amp;#39;)&amp;lt;/script&amp;gt;&lt;/span&gt;&#39;</span></span></code></pre></div>
</div>
<div id="information-leak-errors" class="slide section level1">
<h1>Information Leak Errors:</h1>
<p>Secret structs:</p>
<div class="sourceCode" id="cb54"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb54-1"><a href="#cb54-1" tabindex="-1"></a><span class="kw">struct</span> Password<span class="op">(</span>text<span class="op">:</span><span class="dt">Text</span><span class="op">;</span> secret<span class="op">)</span></span>
<span id="cb54-2"><a href="#cb54-2" tabindex="-1"></a>    <span class="kw">func</span> hash<span class="op">(</span>p<span class="op">:</span>Password <span class="op">-&gt;</span> PasswordHash<span class="op">)</span></span>
<span id="cb54-3"><a href="#cb54-3" tabindex="-1"></a>        <span class="op">...</span></span>
<span id="cb54-4"><a href="#cb54-4" tabindex="-1"></a></span>
<span id="cb54-5"><a href="#cb54-5" tabindex="-1"></a>password <span class="op">:=</span> Password<span class="op">(</span><span class="st">&quot;sw0rdf1sh&quot;</span><span class="op">)</span></span>
<span id="cb54-6"><a href="#cb54-6" tabindex="-1"></a><span class="op">&gt;&gt;</span> <span class="st">&quot;Your password is </span><span class="op">$</span><span class="va">password</span><span class="st">&quot;</span></span>
<span id="cb54-7"><a href="#cb54-7" tabindex="-1"></a><span class="op">=</span> <span class="st">&quot;Your password is Password(...)&quot;</span></span>
<span id="cb54-8"><a href="#cb54-8" tabindex="-1"></a></span>
<span id="cb54-9"><a href="#cb54-9" tabindex="-1"></a><span class="cf">if</span> password<span class="op">.</span>hash<span class="op">()</span> <span class="op">==</span> database<span class="op">.</span>get_password_hash<span class="op">(</span>username<span class="op">)</span></span>
<span id="cb54-10"><a href="#cb54-10" tabindex="-1"></a>    do_login<span class="op">(</span>username<span class="op">)</span></span>
<span id="cb54-11"><a href="#cb54-11" tabindex="-1"></a><span class="cf">else</span></span>
<span id="cb54-12"><a href="#cb54-12" tabindex="-1"></a>    <span class="co"># Oops, could have been a leak:</span></span>
<span id="cb54-13"><a href="#cb54-13" tabindex="-1"></a>    log<span class="op">(</span><span class="st">&quot;Failed login: </span><span class="op">$</span><span class="va">username</span><span class="st"> </span><span class="op">$</span><span class="va">password</span><span class="st">&quot;</span><span class="op">)</span></span></code></pre></div>
<p>By default, every struct can be printed, showing its contents. However,
<em>secret</em> structs only show their contents as <code>(...)</code>.
Accidentally logging a datastructure that contains secret information
<em>won’t</em> print anything secret into the logs!</p>
<p><em>This is not foolproof</em>, because the underlying information is still
accessible. But it means that it’s much <em>harder</em> to make a simple mistake
that leaks sensitive information.</p>
</div>
<div id="cross-compilation-to-c" class="slide section level1">
<h1>Cross Compilation to C</h1>
<p>When you run <code>tomo myprogram.tm</code>, the compiler translates your
Tomo code into efficient C code that uses the Tomo standard library.</p>
<p>Then, it invokes a C compiler (tested to work with GCC, Clang, and TinyCC) to
build an executable and then runs it.</p>
<p>This code:</p>
<div class="sourceCode" id="cb55"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb55-1"><a href="#cb55-1" tabindex="-1"></a><span class="kw">func</span> main<span class="op">()</span></span>
<span id="cb55-2"><a href="#cb55-2" tabindex="-1"></a>    <span class="bu">say</span><span class="op">(</span><span class="st">&quot;Hello world&quot;</span><span class="op">)</span></span></code></pre></div>
<p>Gets compiled into this C code:</p>
<div class="sourceCode" id="cb56"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb56-1"><a href="#cb56-1" tabindex="-1"></a>__attribute__ <span class="op">((</span>visibility <span class="op">(</span><span class="st">&quot;default&quot;</span><span class="op">)))</span></span>
<span id="cb56-2"><a href="#cb56-2" tabindex="-1"></a><span class="dt">void</span> _$hello$main<span class="op">()</span> <span class="op">{</span></span>
<span id="cb56-3"><a href="#cb56-3" tabindex="-1"></a>    <span class="op">(</span><span class="dt">void</span><span class="op">)</span>say<span class="op">(</span>Text<span class="op">(</span><span class="st">&quot;Hello world&quot;</span><span class="op">),</span> yes<span class="op">);</span></span>
<span id="cb56-4"><a href="#cb56-4" tabindex="-1"></a><span class="op">}</span></span></code></pre></div>
<p>Then, there’s a bit of wrapper code to parse command line arguments (more on
that later) and your main function gets called.</p>
</div>
<div id="c-interoperability" class="slide section level1">
<h1>C Interoperability</h1>
<p>Since Tomo cross-compiles to C, it’s very easy for Tomo to interface with
existing C libraries and codebases. This means that Tomo can take advantage of
the large pre-existing C ecosystem.</p>
<div class="sourceCode" id="cb57"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb57-1"><a href="#cb57-1" tabindex="-1"></a><span class="co"># Use C headers and files directly:</span></span>
<span id="cb57-2"><a href="#cb57-2" tabindex="-1"></a>use <span class="op">./</span>myheader<span class="op">.</span>h</span>
<span id="cb57-3"><a href="#cb57-3" tabindex="-1"></a>use <span class="op">./</span>mycfile<span class="op">.</span>c</span>
<span id="cb57-4"><a href="#cb57-4" tabindex="-1"></a></span>
<span id="cb57-5"><a href="#cb57-5" tabindex="-1"></a><span class="co"># Use shared libraries:</span></span>
<span id="cb57-6"><a href="#cb57-6" tabindex="-1"></a>use <span class="op">&lt;</span>curl<span class="op">/</span>curl<span class="op">.</span>h<span class="op">&gt;</span></span>
<span id="cb57-7"><a href="#cb57-7" tabindex="-1"></a>use <span class="op">-</span>lcurl</span>
<span id="cb57-8"><a href="#cb57-8" tabindex="-1"></a></span>
<span id="cb57-9"><a href="#cb57-9" tabindex="-1"></a><span class="co"># Let tomo know about imported types:</span></span>
<span id="cb57-10"><a href="#cb57-10" tabindex="-1"></a>extern atoi <span class="op">:</span> <span class="kw">func</span><span class="op">(</span>str<span class="op">:</span>CString <span class="op">-&gt;</span> <span class="dt">Int32</span><span class="op">)</span></span>
<span id="cb57-11"><a href="#cb57-11" tabindex="-1"></a></span>
<span id="cb57-12"><a href="#cb57-12" tabindex="-1"></a><span class="kw">func</span> main<span class="op">()</span></span>
<span id="cb57-13"><a href="#cb57-13" tabindex="-1"></a>    x <span class="op">:=</span> <span class="dt">Int32</span><span class="op">(</span><span class="dv">5</span><span class="op">)</span></span>
<span id="cb57-14"><a href="#cb57-14" tabindex="-1"></a>    <span class="co"># Inline C code:</span></span>
<span id="cb57-15"><a href="#cb57-15" tabindex="-1"></a>    C_code {</span>
<span id="cb57-16"><a href="#cb57-16" tabindex="-1"></a>        printf<span class="op">(</span><span class="st">&quot;%d\n&quot;</span><span class="op">,</span> <span class="op">@</span>x<span class="op">);</span></span>
<span id="cb57-17"><a href="#cb57-17" tabindex="-1"></a>    }</span>
<span id="cb57-18"><a href="#cb57-18" tabindex="-1"></a>    <span class="co"># Inline C expressions:</span></span>
<span id="cb57-19"><a href="#cb57-19" tabindex="-1"></a>    y <span class="op">:=</span> C_code<span class="op">:</span><span class="dt">Int32</span><span class="op">(</span>abs<span class="op">(-</span><span class="dv">5</span><span class="op">))</span></span>
<span id="cb57-20"><a href="#cb57-20" tabindex="-1"></a>      </span></code></pre></div>
</div>
<div id="non-feature-1-inheritance" class="slide section level1">
<h1>Non-Feature 1: Inheritance</h1>
<div class="sourceCode" id="cb58"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb58-1"><a href="#cb58-1" tabindex="-1"></a><span class="co"># NOT VALID CODE:</span></span>
<span id="cb58-2"><a href="#cb58-2" tabindex="-1"></a><span class="kw">struct</span> Foo<span class="op">(</span>x<span class="op">:</span><span class="dt">Int</span><span class="op">)</span> extends Baz</span></code></pre></div>
<p>Object-oriented programming and inheritance <em>can</em> be useful for some
applications, however it comes with a lot of downsides.</p>
<ul>
<li>You need to do dynamic dispatching, which means storing extra information
alongside objects.</li>
<li>Because of dynamic dispatching, the optimizer typically can’t inline method
calls.</li>
<li>Inheritance hierarchies add complexity to the codebase.</li>
</ul>
<p>Tomo is a simple language with simple types.</p>
<p>Method calls and namespaces are useful, but inheritance adds a lot of
complexity.</p>
<p>If you need to mix and match reusable components, consider composition over
inheritance.</p>
</div>
<div id="non-feature-2-generics" class="slide section level1">
<h1>Non-Feature 2: Generics</h1>
<div class="sourceCode" id="cb59"><pre class="sourceCode tomo"><code class="sourceCode tomo"><span id="cb59-1"><a href="#cb59-1" tabindex="-1"></a><span class="co"># NOT VALID CODE:</span></span>
<span id="cb59-2"><a href="#cb59-2" tabindex="-1"></a><span class="kw">struct</span> Tree<span class="op">&lt;</span>T<span class="op">&gt;(</span>val<span class="op">:</span>T<span class="op">,</span> left<span class="op">,</span>right<span class="op">:@</span>Tree?<span class="op">)</span></span>
<span id="cb59-3"><a href="#cb59-3" tabindex="-1"></a></span>
<span id="cb59-4"><a href="#cb59-4" tabindex="-1"></a><span class="co"># NOT VALID CODE:</span></span>
<span id="cb59-5"><a href="#cb59-5" tabindex="-1"></a><span class="kw">func</span> apply<span class="op">(</span>x<span class="op">:</span>T1<span class="op">,</span> fn<span class="op">:</span><span class="kw">func</span><span class="op">(</span>x<span class="op">:</span>T1 <span class="op">-&gt;</span> T2<span class="op">)</span> <span class="op">-&gt;</span> T2<span class="op">)</span></span>
<span id="cb59-6"><a href="#cb59-6" tabindex="-1"></a>    <span class="cf">return</span> fn<span class="op">(</span>x<span class="op">)</span></span></code></pre></div>
<p>Generics allow you to have write-once-compile-many-times code. Unfortunately,
this means that compilation times skyrocket in code that uses a lot of generic
datastructures and generic functions.</p>
<p>You can no longer compile a single file in isolation, but instead its code
must be recompiled for every unique combination of types in every file that uses
it.</p>
<p>Tomo’s approach is to have <em>powerful built-in generic containers</em> that
don’t need to recompile for different member types. Most cases can be handled
with a list, set, or table. Special cases can be one-off bespoke code
specialized for a single type.</p>
<p>Tomo’s built-in container types do <em>not</em> require recompilation for
each combination of member types, but instead rely on compile-time information
implicitly passed to the methods that need it.</p>
<p>Golang users loudly complained about a lack of generics in the language, but…
I think this was mostly because Go’s built-in container types were missing
<em>critical</em> functionality, like shuffling a list! Instead of adding the
missing functionality to address common pain points, they chose to make it
easier for users to reinvent the wheel themselves.</p>
</div>
<div id="non-feature-3-macros" class="slide section level1">
<h1>Non-Feature 3: Macros</h1>
<p>I love macros! But not every language needs them.</p>
<p>There are two types of language that benefit from macros: - Highly dynamic
languages that focus on metaprogramming (e.g. Lisp) - Boilerplate-heavy
languages that want a way to reduce code duplication (e.g. C)</p>
<p>Tomo isn’t a highly dynamic language, and it aspires to be a low-boilerplate
language.</p>
<p>Also: <code>inline</code> functions steal a lot of the thunder from macros.
It’s a way to replace a function call with a bunch of inlined code, but it has
the advantages of full typechecking, readable compiler errors, and a consistent
syntax.</p>
<p>Maybe one day, Tomo will add macros, but not until I find something too
painful to implement without macros.</p>
</div>
<div id="future-features" class="slide section level1">
<h1>Future Features?</h1>
<ul>
<li>Exact rational numbers? (Nice for working with money)</li>
<li>Fixed-point numbers?</li>
<li>Matrices?</li>
<li>Built-in debugger?</li>
<li>Built-in profiler?</li>
<li>Better support for trees?</li>
</ul>
</div>
<div id="project-ideas" class="slide section level1">
<h1>Project Ideas</h1>
<p><strong>Command line tools:</strong></p>
<ul>
<li>Print a file tree</li>
<li>Text-based game like hangman</li>
<li>Text-wrapping tool (e.g. <code>examples/wrap</code>)</li>
<li>Simple calculator</li>
</ul>
<p><strong>General applications:</strong></p>
<ul>
<li>Make a website with <code>examples/http-server</code></li>
<li>Make a game with Raylib (e.g. <code>examples/game</code>)</li>
<li>Make an SDL application</li>
</ul>
</div>
</body>
</html>