From 5f140644b6c498e015a75b14188829f9dcb9bb34 Mon Sep 17 00:00:00 2001 From: Martin Mares Date: Fri, 18 Nov 2011 21:52:27 +0100 Subject: [PATCH] Hradla: Prepsano podle dnesni prednasky Jeste potrebuje trochu uhladit a take upravit cast o nasobeni. --- 5-hradla/5-hradla.tex | 397 +++++---- 5-hradla/hradlo_and.eps | 176 ---- 5-hradla/hradlo_and.svg | 147 ---- 5-hradla/hradlo_ternbior.eps | 930 ------------------- 5-hradla/hradlo_ternbior.svg | 572 ------------ 5-hradla/hradlo_ternor.eps | 328 ------- 5-hradla/hradlo_ternor.svg | 202 ----- 5-hradla/tabulka_skladani_bloku.eps | 1274 ++++++++------------------- 5-hradla/tabulka_skladani_bloku.svg | 179 ++-- 9 files changed, 679 insertions(+), 3526 deletions(-) delete mode 100644 5-hradla/hradlo_and.eps delete mode 100644 5-hradla/hradlo_and.svg delete mode 100644 5-hradla/hradlo_ternbior.eps delete mode 100644 5-hradla/hradlo_ternbior.svg delete mode 100644 5-hradla/hradlo_ternor.eps delete mode 100644 5-hradla/hradlo_ternor.svg diff --git a/5-hradla/5-hradla.tex b/5-hradla/5-hradla.tex index f995d4f..082c380 100644 --- a/5-hradla/5-hradla.tex +++ b/5-hradla/5-hradla.tex @@ -4,159 +4,199 @@ \def\land{\mathbin{\&}} -Výkon poèítaèù nelze zvy¹ovat donekoneèna a pøesto¾e ji¾ pìkných pár let platí, -¾e se jejich rychlost s~èasem exponenciálnì zvìt¹uje, jednou urèitì narazíme -pøinejmen¹ím na~fyzikální limity. - -Kdy¾ tedy nemù¾eme zvy¹ovat rychlost jednoho procesoru, jak poèítat rychleji? -Øe¹ením by mohlo být poøídit si procesorù víc. U¾~dnes na~bì¾ném PéCéèku máme -k~dispozici vícejádrové procesory, díky nim¾ mù¾eme vyu¾ít pararelní poèítání -a úlohu øe¹it tak, ¾e práci ¹ikovnì rozdìlíme mezi procesory (èi jádra) a -zamìstnáme je pøi~výpoètu v¹echny. - -My se podíváme na~abstraktní výpoèetní model, který je je¹tì paralelnìj¹í. -Techniky, které si uká¾eme na~tomto modelu, se v¹ak dají pøekvapivì vyu¾ít i~pøi~reálném -paralelizování na~nìkolika málo procesorech. Konec koncù i proto, ¾e vnitøní -architektura procesoru se na¹emu modelu velmi podobá. Budeme se zabývat -jednoduchým modelem paralelního poèítaèe, toti¾ hradlovou sítí. +®ivot nám pøiná¹í stále vìt¹í problémy, které obvykle vy¾adují stále více +výpoèetního výkonu. Rychlost poèítaèù sice posledních pár desetiletí stále +roste exponenciálnì, ale tento rùst se urèitì nìkdy zastaví (napøíklad proto, +¾e vesmír je koneèný) a podle v¹eho u¾ k~tomuto bodu jsme docela blízko +(nará¾íme na nejrùznìj¹í fyzikální limity, napøíklad není jasné, jak vyrábìt +transistory men¹í ne¾ jeden atom). + +Jak si tedy s~obrovskými daty poradíme? Jedna z~lákavých mo¾ností je prostì +do~výpoètu zapøáhnout více ne¾ jeden procesor. Ostatnì, vícejádrové procesory, +které dneska najdeme ve~svých stolních poèítaèích, nejsou nic jiného ne¾ +víceprocesorový systém na jednom èipu. + +Nabízí se tedy obtí¾nou úlohu rozdìlit na nìkolik èástí, nechat ka¾dý +procesor (èi jádro) poèítat jednu z~èástí a nakonec jejich výsledky spojit +dohromady. To se snadno øekne, ale s~výjimkou triviálních úloh u¾ obtí¾nìji +provede. + +Pojïme se podívat na nìkolik zajímavých paralelních algoritmù. Abychom se +nemuseli zabývat detaily hardwaru konkrétního víceprocesorového poèítaèe, +zavedeme si pomìrnì abstraktní výpoèetní model, toti¾ hradlové sítì. Tento +model je daleko paralelnìj¹í ne¾ skuteèný poèítaè, ale pøesto se techniky, +které si uká¾eme, dají snadno vyu¾ít i prakticky. Konec koncù sama vnitøní +architektura procesorù se na¹emu modelu velmi podobá. \h{Hradlové sítì} -\s{Definice:} {\I Hradlo} je prvek, který umí vyhodnocovat nìjakou funkci -nad~koneènou abecedou $\Sigma$. +Hradlové sítì jsou tvoøeny navzájem propojenými {\I hradly.} Ka¾dé hradlo pøitom +poèítá nìjakou (obecnì libovolnou) funkci $\Sigma^k \rightarrow \Sigma$, kde~$\Sigma$ +je koneèná abeceda (stejná pro celou sí») a~$k$ pøirozené èíslo (poèet vstupù hradla, +jinak té¾ jeho {\I arita}). -Obecnì se na~hradlo díváme jako na~funkci $f: {\Sigma}^{k} \rightarrow \Sigma$, která dostane $k$ vstupù -a~vrátí jeden výstup, pøièem¾ hodnoty, nad~kterými pracuje, budou z~nìjaké koneèné -abecedy -- tedy z~nìjaké koneèné mno¾iny symbolù $\Sigma$. Písmenku $k$ zde øíkáme {\I arita -hradla}. - -\s{Pøíklad:} Èasto studujeme hradla booleovská (pracující nad abecedou $\{0,1\}$), která poèítají logické funkce. - -Z~nich nejèastìji potkáme: +\s{Pøíklad:} Èasto studujeme hradla {\I booleovská} (pracující nad abecedou $\Sigma=\{0,1\}$). +Ta poèítají jednotlivé logické funkce, mezi nejbì¾nìj¹í patøí: \itemize\ibull -\:nulární: to jsou konstanty (FALSE=0, TRUE=1), -\:unární: napø. negace (znaèíme~$\lnot$), -\:binární: logický souèin ({\csc and},~$\land$), souèet ({\csc or},~$\lor$), ... +\:nulární: to jsou konstanty ($\hbox{\csc false}=0$, $\hbox{\csc true}=1$), +\:unární: identita a negace ({\csc not},~$\lnot$), +\:binární: logický souèin ({\csc and},~$\land$), souèet ({\csc or},~$\lor$), \dots \endlist -\>Hradla kreslíme tøeba následovnì: - -\figure{hradlo_and.eps}{Binární hradlo provádící logickou operaci {\csc and}.}{1in} - -Jednotlivá hradla mù¾eme navzájem urèitým zpùsobem propojovat a vytváøet -z nich {\I hradlové sítì}. Pokud pou¾íváme pouze booleovská hradla, øíkáme takto vytvoøeným -sítím {\I booleovské obvody}. Pokud pracujeme s~operacemi nad nìjakou obecnìj¹í (ale koneènou) -mno¾inou symbolù (abecedou), nazývají se {\I kombinaèní obvody.} +Propojením hradel pak vznikne {\I hradlová sí».} Ne¾ vyøkneme formální definici, +pojïme se podívat na pøíklad jedné takové sítì: -Ka¾dá hradlová sí» má nìjaké vstupy, nìjaké výstupy a uvnitø jsou propojovaná -hradla. Ka¾dý vstup hradla je pøipojen buïto na~nìkterý ze~vstupù sítì nebo -na~výstup jiného hradla. Výstupy hradel mohou být propojeny na~vstupy dal¹ích -hradel (mohou se vìtvit), nebo na výstupy sítì. Pøitom máme zakázáno vytváøet -cykly. +\figure{hradlova_sit.eps}{Hradlová sí» -- tøívstupová verze funkce {\I majorita}}{3in} -Ne¾ si øekneme formální definici, podívejme se na obrázek. +Na¹e sí» má tøi vstupy, vnitøní booleovská hradla a jeden výstup. Na výstupu +je pøitom jednièka právì tehdy, jsou-li jednièky pøítomny na alespoò dvou +vstupech. Jinými slovy vrací {\I majoritu} ze~vstupù, tedy hodnotu, která +pøeva¾uje. -\figure{hradlova_sit.eps}{Hradlová sí» -- tøívstupová verze funkce {\I majorita}.}{3in} +Obecnì ka¾dá hradlová sí» má nìjaké vstupy, hradla a výstupy. +Ka¾dý vstup hradla je pøitom pøipojen buïto na~nìkterý ze~vstupù sítì +nebo na~výstup jiného hradla. Výstupy hradel mohou být propojeny na~vstupy +dal¹ích hradel (mohou se vìtvit), nebo na výstupy sítì. Pøitom máme zakázáno +vytváøet cykly. -Obrazek znázoròuje hradlovou sí», která poèítá, zda je alespoò na~dvou ze~vstupù -jednièka. Pojïme si ale {\I hradlovou sí»} definovat formálnì. +Nyní toté¾ formálnìji: \s{Definice:} {\I Hradlová sí»} je urèena: \itemize\ibull -\:{\I abecedou} $\Sigma$ (to je nìjaká koneèná mno¾ina symbolù, obvykle $\Sigma=\{0,1\}$); -\:po dvou disjunktními koneènými mno¾inami $I$~({\I vstupy}), $O$~({\I výstupy}) \hfil\break a~$H$~({\I hradla}); -\:acyklickým orientovaným multigrafem~$(V,E)$, kde~$V = I \cup O \cup H$; +\:{\I abecedou} $\Sigma$, co¾ je nìjaká koneèná mno¾ina symbolù; +\:po dvou disjunktními koneènými mno¾inami \hfil\break + $I$~({\I vstupy}), $O$~({\I výstupy}) a~$H$~({\I hradla}); +\:acyklickým orientovaným multigrafem~$(V,E)$, kde~$V = I \cup O \cup H$;\foot{Proè + potøebujeme multigraf? Napøíklad chceme-li výstup jednoho hradla pøipojit souèasnì + na více rùzných vstupù druhého hradla.} \:zobrazením~$F$, které ka¾dému hradlu $h\in H$ pøiøadí nìjakou funkci~$F(h): \Sigma^{a(h)} \rightarrow \Sigma$, co¾ je funkce, kterou toto hradlo vykonává. Èíslu $a(h)$ øíkáme {\I arita} hradla~$h$; -\:zobrazením~$z: E \rightarrow {\bb N}$, které ka¾dé hranì vedoucí do~nìjakého - hradla pøiøazuje nìkterý ze vstupù tohoto hradla. +\:zobrazením~$z: E \rightarrow {\bb N}$, je¾ o~hranách vedoucích do hradel øíká, + kolikátému argumentu funkce odpovídají;\foot{Na hranách vedoucích do výstupù + necháváme hodnotu této funkce nevyu¾itu.} \endlist \>Pøitom jsou splnìny následující podmínky: \itemize\ibull -\:$\forall i \in I: \deg^{in}(i)=0$ (do~vstupù nic nevede); -\:$\forall o \in O: \deg^{in}(o)=1~\land~\deg^{out}(o)=0$ (z~výstupù nic nevede a do~ka¾dého vede právì jedna hrana); -\:$\forall h \in H: \deg^{in}(v)=a(v)$ (do~ka¾dého hradla vede tolik hran, kolik je jeho arita); -\:$\forall h \in H~\forall j: 1\le j\le a(h)$ existuje právì jedena hrana~$e$ taková, ¾e~$e$ konèí v~$h$ a~$z(e)=j$, - (v¹echny vstupy hradel jsou zapojeny). +\:$\forall i \in I: \deg^+(i)=0$ {\sl (do~vstupù nic nevede);} +\:$\forall o \in O: \deg^+(o)=1, \deg^-(o)=0$ {\sl (z~výstupù nic nevede a do~ka¾dého vede právì jedna hrana);} +\:$\forall h \in H: \deg^+(v)=a(v)$ {\sl (do~ka¾dého hradla vede tolik hran, kolik je jeho arita);} +\:$\forall h \in H~\forall j \in \{1,\ldots,a(h)\}$ existuje právì jedna hrana~$e$ taková, ¾e $e$~konèí v~$h$ a~$z(e)=j$ + {\sl (v¹echny vstupy hradel jsou zapojeny).} \endlist -\s{Pozorování:} Kdybychom pøipustili hradla s~libovolnì vysokým poètem vstupù, mohli -bychom libovolný problém se vstupem délky~$n$ vyøe¹it jedním hradlem o~$n$~vstupech, -kterému bychom pøiøadili funkci, která by na¹i úlohu rovnou vyøe¹ila. Tento model -v¹ak není ani realistický, ani pìkný. Proto pøijmìme omezení, ¾e~arity v¹ech hradel -budou omezeny nìjakou pevnou konstantou $k$ (uká¾e se, ¾e nám bude staèit dvojka -a~vystaèíme si tedy pouze s nulárními, unárními a binárními hradly). -Následující obrázky ukazují, jak hradla o~více vstupech nahradit dvouvstupovými: +\s{Poznámka:} Nìkdy se hradlovým sítím také øíká {\I kombinaèní obvody} a pokud pracují +nad abecedou $\Sigma = \{0,1\}$, pak {\I booleovské obvody}. + +\s{Definice:} {\I Výpoèet sítì} postupnì pøiøazuje hodnoty z~abecedy~$\Sigma$ +vrcholùm grafu. Výpoèet probíhá po~{\I taktech.} V~nultém taktu jsou definovány +pouze hodnoty na~vstupech sítì a v~hradlech arity~0 (konstanty). V~ka¾dém +dal¹ím taktu pak ohodnotíme vrcholy, jejich¾ v¹echny vstupní hrany vedou +z~vrcholù s~ji¾ definovanou hodnotou. + +Hodnotu hradla~$h$ pøitom spoèteme funkcí~$F(h)$ z~hodnot na jeho vstupech +uspoøádaných podle funkce~$z(h)$. Výstup sítì pouze zkopíruje hodnotu, která do +nìj po~hranì pøi¹la. + +Jakmile budou po~nìjakém poètu taktù definované hodnoty v¹ech výstupù, výpoèet +se zastaví a~sí» vydá výsledek -- ohodnocení výstupù. -\twofigures{hradlo_ternor.eps}{Trojvstupové hradlo \csc or.}{0.5in}{hradlo_ternbior.eps}{Jeho nahrazení 2-vstupovými hradly.}{0.6in} +Podle prùbìhu výpoètu mù¾eme vrcholy sítì rozdìlit do vrstev: +\s{Definice:} {\I $i$-tá vrstva $S_i$} obsahuje právì takové vrcholy~$v$, +pro~které nejdel¹í z~cest z~libovolného vrcholu se~vstupním stupnìm~0 +do~$v$ má délku rovnou právì~$i$. -Nyní bychom je¹tì mìli definovat, co taková hradlová sí» vlastnì poèítá a~jak -její výpoèet probíhá. +\figure{vypocet_site.eps}{Prùbìh výpoètu a rozdìlení sítì na vrstvy}{6cm} -\s{Definice:} {\I Výpoèet sítì} probíhá po~{\I taktech.} V nultém taktu jsou definovány pouze -hodnoty na~vstupech sítì a na~výstupech hradel arity 0. Mù¾eme si to pøedstavit -tak, ¾e na~zaèátku nemá ¾ádné hradlo definovánu výstupní hodnotu (a¾ na ji¾ -zmínìná hradla nulární). V~ka¾dém dal¹ím taktu pak vydají výstup hradla, která -na~konci minulého taktu mìla definovány v¹echny hodnoty na vstupech. Jakmile -budou po~nìjakém koneèném poètu taktù definované i hodnoty v¹ech výstupù, sí» -se zastaví a~vydá výsledek. +\s{Pár pozorování} o~prùbìhu výpoètu: -\s{Pozorování:} Proto¾e je sí» acyklická, je jasné, ¾e jakmile jednou nìjaké hradlo vydá -výstup, tak se tento výstup bìhem dal¹ího výpoètu sítì ji¾ nezmìní. +\itemize\ibull +\:V~$i$-té vrstvì jsou tedy právì ty vrcholy, které poprvé ohodnotíme v~$i$-tém + taktu výpoètu. +\:Jeliko¾ sí» je acyklická, tak platí, ¾e jakmile vrchol ohodnotíme, u¾ se + jeho ohodnocení nikdy nemù¾e zmìnit. +\:Kdy¾ se vydáme z~libovolného vrcholu proti smìru hran, po~koneènì mnoha + krocích dojdeme do~vrcholu s~nulovým vstupním stupnìm (vstupu sítì nebo + konstantního hradla). Proto ka¾dý vrchol le¾í v~nìjaké vrstvì. +\:Vrstvy jsou disjunktní, tak¾e poèet neprázdných vrstev je nutnì koneèný. + V~kombinaci s~pøedchozím pozorováním dostaneme, ¾e výpoèet sítì se v¾dy zastaví. +\:Navíc poslední neprázdná vrstva je právì ta, kde se výpoèet zastaví -- z~ka¾dého + dal¹ího vrcholu by toti¾ bylo mo¾né po~hranách dojít do vrcholu s~výstupním + stupnìm~0 a jediné takové vrcholy jsou výstupy sítì. Ty by tedy musely také + le¾et v~nìkteré z~následujících vrstev, co¾ ov¹em není mo¾né, nebo» výpoèet + se u¾ zastavil. +\endlist + +\>To nás motivuje k~následující definici: + +\s{Definice:} {\I Èasovou slo¾itost} sítì definujeme jako poèet jejích neprázdných +vrstev. Podobnì {\I prostorovou slo¾itost} urèíme jako poèet hradel v~síti. -\figure{vypocet_site.eps}{Výpoèet hradlové sítì.}{6cm} +\s{Poznámka o~aritách:} +Kdybychom pøipustili hradla s~libovolnì vysokým poètem vstupù, mohli bychom +libovolný problém se vstupem délky~$n$ a výstupem délky~$\ell$ vyøe¹it v~jedné +vrstvì pomocí $\ell$~kusù $n$-vstupových hradel. Ka¾dému bychom prostì +pøiøadili funkci, která poèítá pøíslu¹ný bit výsledku ze~v¹ech bitù vstupu. -\>Podle toho, jak sí» poèítá, si ji mù¾eme rozdìlit na~vrstvy: +To v¹ak není ani realistické, ani pìkné. Jak z~toho ven? Pøijmeme prostì +omezení, ¾e~arity v¹ech hradel budou omezeny nìjakou pevnou konstantou, +tøeba dvojkou. Budeme tedy pou¾ívat výhradnì nulární, unární a binární hradla. -\s{Definice:} {\I $i$-tá vrstva $S_i$} obsahuje právì takové vrcholy~$v$, pro~které nejdel¹í cesta ze~vstupù -sítì do $v$ má délku rovnou~$i$. +Poznamenejme je¹tì, ¾e realistický model (by» s~trochu jinými vlastnostmi) +by vznikl také tehdy, kdybychom místo arity omezily typy funkcí, øeknìme +na {\csc and}, {\csc or} a {\csc not}. -\s{Pozorování:} V¹imnìme si, ¾e v $i$-tém taktu vydají hodnoty právì hradla z $S_i$. - -Dává tedy smysl prohlásit za~{\I èasovou slo¾itost} sítì poèet -jejích vrstev. Podobnì {\I prostorovou slo¾itost} definujeme jako poèet hradel v~síti. +\s{Poznámka o~uniformitì:} +Dodejme, ¾e od~bì¾ných výpoèetním modelùm, jako je tøeba RAM, se hradlové +sítì li¹í jednou podstatnou vlastností -- ka¾dá sí» zpracovává výhradnì vstupy +jedné konkrétní velikosti. Chceme tedy najít nìjaký obecný pøedpis, který +pro ka¾dou velikost vstupu sestrojí pøíslu¹nou sí». Takovým výpoèetním modelùm +se øíká {\I neuniformní.} -\s{Pøíklad:} Sestrojme sí», která zjistí, zda se mezi jejími~$n$ vstupy -vyskytuje alespoò jedna jednièka. +A~co myslíme oním pøedpisem pro sestrojení sítì? Bude to pro nás prostì +nìjaký algoritmus (klasický, neparalelní) bì¾ící v~polynomiálním èase. +(Kdybychom dovolili i pomalej¹í algoritmy, mohli bychom bìhem konstrukce +provádìt nìjaký nároèný pøedvýpoèet a jeho výsledek zabudovat do struktury +sítì.) + +\h{Hledá se jednièka} + +Abychom si nový výpoèetní model osahali, zkusme nejprve sestrojit obvod, +který zjistí, zda se mezi jeho~$n$ vstupy vyskytuje alespoò jedna jednièka. +Jinými slovy vypoèítat $n$-vstupovou funkci {\csc or}. \>{\I První øe¹ení:} zapojíme hradla za~sebe (sériovì). Èasová i prostorová -slo¾itost odpovídají~$\Theta(n)$. Zde ov¹em vùbec nevyu¾íváme toho, ¾e by mohlo poèítat více +slo¾itost èiní $\Theta(n)$. Zde ov¹em vùbec nevyu¾íváme toho, ¾e by mohlo poèítat více hradel souèasnì. -\figure{hloupy_or.eps}{Hradlová sí», která zjistí, zdali je na vstupu alespoò jedna jednièka.}{0.7in} - \>{\I Druhé øe¹ení:} Hradla budeme spojovat do~dvojic, pak výsledky z~tìchto dvojic opìt do~dvojic a tak dále. Díky paralelnímu zapojení dosáhneme èasové slo¾itosti $\Theta(\log n)$, prostorová slo¾itost zùstane lineární. -\figure{chytry_or.eps}{Chytøej¹í øe¹ení stejného problému pro vstup velikosti 16.}{3in} - -Minule jsme si zavedli paralelní výpoèetní model, ve kterém si nyní nìco naprogramujeme \dots +\twofigures{hloupy_or.eps}{Sériové øe¹ení}{1in}{chytry_or.eps}{Paralelní øe¹ení}{3in} \h{Sèítání binárních èísel} -Mìjme dvì èísla $x$ a $y$ zapsané ve~dvojkové soustavì. Jejich èíslice oznaème -$x_{n-1}\ldots x_0$ a $y_{n-1}\ldots y_0$, kde $i$-tý øád má váhu $2^i$. Nyní budeme chtít tato èísla -seèíst. +Zajímavìj¹í úlohou, její¾ paralelizace u¾ nebude tak triviální, je obyèejné +sèítání dvojkových èísel. Mìjme dvì èísla $x$ a $y$ zapsané ve~dvojkové soustavì. Jejich èíslice oznaème +$x_{n-1}\ldots x_0$ a $y_{n-1}\ldots y_0$, kde $i$-tý øád má váhu $2^i$. -K tomuto úèelu se~ihned nabízí pou¾ít starý dobrý \uv{¹kolní algoritmus}, který -funguje ve~dvojkové soustavì stejnì dobøe jako v~desítkové. Zkrátka sèítáme èísla -zprava doleva. V¾dy seèteme pøíslu¹né èíslice pod~sebou a~pøièteme pøenos z~ni¾¹ího -øádu. Tím dostaneme jednu èíslici výsledku a~pøenos do~vy¹¹ího øádu. Formálnì -bychom to mohli zapsat tøeba takto: +K~seètení se~ihned nabízí pou¾ít starý dobrý \uv{¹kolní algoritmus sèítání pod sebou}, který +funguje ve~dvojkové soustavì stejnì dobøe jako v~desítkové. Sèítáme èísla zprava doleva, +v¾dy seèteme~$x_i$ s~$y_i$ a~pøièteme pøenos z~ni¾¹ího øádu. Tím dostaneme jednu èíslici +výsledku a~pøenos do~vy¹¹ího øádu. Formálnì bychom to mohli zapsat tøeba takto: $$ z_i=x_i \oplus y_i \oplus c_i, $$ kde $z_i$ je $i$-tá èíslice souètu, $\oplus$ znaèí operaci {\csc xor} (souèet modulo~2) a~$c_i$ je {\I pøenos} z~$(i-1)$-ního øádu do~$i$-tého. Pøenos pøitom nastane tehdy, pokud se~nám potkají dvì jednièky pod~sebou, nebo kdy¾ se~vyskytne alespoò jedna jednièka a~k~tomu -pøenos z~ni¾¹ího øádu. Jinými slovy tehdy, kdy¾ ze~tøí xorovaných èíslic jsou alespoò -dvì jednièky (pomocí obvodu pro majoritu z minulé pøedná¹ky lehce zkonstruujeme): +pøenos z~ni¾¹ího øádu. To je tehdy, kdy¾ mezi tøemi xorovanými èíslicemi jsou alespoò +dvì jednièky -- k~tomu se nám hodí ji¾ známý obvod pro majoritu: $$ \eqalign{ c_{0} &= 0, \cr @@ -164,66 +204,65 @@ c_{i+1} &= (x_i~\&~y_i)\lor(x_i~\&~c_i)\lor(y_i~\&~c_i).\cr } $$ -Takovéto sèítání sice perfektnì funguje, nicménì je bohu¾el pomìrnì pomalé. -Pokud bychom stavìli hradlovou sí» podle tohoto pøedpisu, byla by slo¾ená z~nìjakých -podsítí (\uv{krabièek}), které budou mít na~vstupu $x_i$, $y_i$ a~$c_i$ a jejich výstupem -bude $z_i$ a~$c_{i+1}$. - -\figure{hloupe_scitani.eps}{Sèítání ¹kolním algoritmem.}{1.5in} +O~tomto pøedpisu snadno doká¾eme, ¾e funguje (zkuste si to), nicménì pokud podle +nìj postavíme hradlovou sí», bude pomìrnì pomalá. Sí» si mù¾eme pøedstavit tak, +¾e je slo¾ena z~nìjakých podsítí (\uv{krabièek}), které budou mít na~vstupu $x_i$, +$y_i$ a~$c_i$ a jejich výstupem bude $z_i$ a~$c_{i+1}$: -V¹imìme si, ¾e~ka¾dá krabièka závisí na~výstupu té pøedcházející. Jednotlivé -krabièky tedy musí urèitì le¾et na~rùzných hladinách. Celkovì bychom museli pou¾ít -$\Theta{(n)}$ hladin a~jeliko¾ je ka¾dá krabièka konstantnì velká, také $\Theta{(n)}$ hradel. To dává -lineární èasovou i~prostorovou slo¾itost, èili oproti sekvenènímu algoritmu jsme si nepomohli. +\figure{hloupe_scitani.eps}{Sèítání ¹kolním algoritmem}{1.5in} -Zamysleme se nad tím, jak by se proces sèítání mohl zrychlit. +Ka¾dá krabièka má sice uvnitø konstantní hloubku, ale její výstupy závisí na pøenosu +vypoèítaném pøedcházející krabièkou. Jednotlivé krabièky tedy musí urèitì le¾et +v~rùzných vrstvách sítì. Celkovì má tedy sí» $\Theta(n)$ hladin a také $\Theta(n)$ +hradel. Oproti sekvenènímu algoritmu jsme si tedy vùbec nepomohli. \h{Pøenosy v~blocích} -Jediné, co nás pøi sèítání brzdí, jsou pøenosy mezi jednotlivými øády. Ka¾dý øád, -aby~vydal souèet, musí poèkat na~to, a¾~dopoèítají v¹echny pøedcházející øády. -Teprve pak se~toti¾ dozví pøenos. Kdybychom ov¹em pøenosy dokázali spoèítat -nìjakým zpùsobem paralelnì, máme vyhráno. Jakmile známe v¹echny pøenosy, souèet -u¾~zvládneme dopoèítat na~konstantnì mnoho hladin -- tedy v~konstantním èase. + +Jak sèítání zrychlit? To, co nás pøi sèítání brzdí, jsou evidentnì pøenosy mezi +jednotlivými øády. Kdybychom je dokázali spoèítat rychleji, máme vyhráno -- souèet +u¾ získáme jednoduchým {\csc xor}ováním, které zvládneme paralelnì v~èase $\Theta(1)$. +Uva¾ujme tedy nad zpùsobem, jak pøenosy spoèítat paralelnì. Podívejme se na~libovolný {\I blok} v~na¹em souètu. Tak budeme øíkat èíslùm $x_j\ldots x_i$ a $y_j\ldots y_i$ v~nìjakém intervalu indexù $\left$. Pøenos $c_{j+1}$ vystupující z~tohoto bloku závisí mimo hodnot sèítancù u¾ pouze na~pøenosu $c_{i}$, který do bloku vstupuje. -\figure{blok_scitani.eps}{Blok souètu.}{3in} +\figure{blok_scitani.eps}{Blok souètu}{3in} -Z tohoto pohledu se mù¾eme na blok také dívat jako na nìjakou funkci, která -dostane jednobitový vstup a vydá jednobitový výstup. To je nám pøíjemné, nebo» -takových funkcí existují jenom ètyøi typy: -\numlist\ndotted -\:$f(x) = 0$, ~~~~(0) -\:$f(x) = 1$, ~~~~(1) -\:$f(x) = x$, ~~~~($<$ -- kopírování) -\:$f(x) = \neg{x}$. -\endlist -Jak se za~chvíli uká¾e, poslední pøípad, kdy by~nìjaký blok pøedával opaèný -pøenos, ne¾ do~nìj vstupuje, navíc nikdy nemù¾e nastat. Pojïme si to rozmyslet. -Jednobitové bloky se chovají velice jednodu¹e: +Pro konkrétní sèítance se tedy mù¾eme na blok dívat jako na nìjakou funkci, +která dostane jednobitový vstup (pøenos zespoda) a vydá jednobitový výstup (pøenos +nahoru). To je nám milé, nebo» takové funkce existují pouze ètyøi: +$$\vbox{\halign{$f(x) = #$\hfil &\qquad # \hfil\cr +0&konstantní {\bo 0}, blok {\I pohlcuje} pøenos \cr +1&konstantní {\bo 1}, blok {\I vytváøí} pøenos \cr +x&identita (znaèíme {\tt <}), blok {\I kopíruje} pøenos \cr +\neg{x}&negace, uká¾eme, ¾e nenastane \cr +}}$$ +Této funkci budeme øíkat {\I chování} pøíslu¹ného bloku. -\figure{bloky_1bit.eps}{Tabulka triviálních blokù.}{1.1in} +{\I Jednobitové bloky} se pøitom chovají velice jednodu¹e: -Z prvního bloku evidentnì v¾dy vyleze 0, a»~do~nìj vstoupí jakýkoli pøenos. -Poslední blok naopak sám o~sobì pøenos vytváøí, a»~ji¾ do~nìj vleze jakýkoliv. -Bloky prostøední se chovají stejnì, a~to tak, ¾e~samy o~sobì ¾ádný pøenos nevytvoøí, +\figure{bloky_1bit.eps}{Tabulka triviálních blokù}{1.1in} + +Blok prvního druhu v¾dy pøedává nulový pøenos, a» u¾ do~nìj vstoupí jakýkoliv. +Poslední blok naopak sám o~sobì pøenos vytváøí, a» dostane cokoliv. +Oba bloky prostøední se chovají tak, ¾e samy o~sobì ¾ádný pøenos nevytvoøí, ale~pokud do~nich nìjaký pøijde, tak~také odejde. -Mìjme nyní nìjaký vìt¹í blok~$C$ slo¾ený ze~dvou men¹ích podblokù $A$ a~$B$, jejich¾ -chování u¾ známe. Z~toho mù¾eme odvodit, jak se chová celý blok: +{\I Vìt¹í bloky} mù¾eme rozdìlit na èásti a podle jejich chování urèit, +jak se chová celý blok. Mìjme blok~$B$ slo¾ený z~men¹ích podblokù~$H$ (horní) +a~$D$ (dolní), jejich¾ chování u¾ známe. Z~toho mù¾eme odvodit, jak se chová celý blok: -\figure{tabulka_skladani_bloku.eps}{Skládání chování blokù.}{1.3in} +\figure{tabulka_skladani_bloku.eps}{Skládání chování blokù}{1.3in} Pokud vy¹¹í blok pøenos pohlcuje, pak a»~se u¾~ni¾¹í blok chová jakkoli, slo¾ení -tìchto blokù musí v¾dy pohlcovat. V~prvním øádku tabulky jsou tudí¾ nuly. Analogicky, +obou blokù musí v¾dy pohlcovat. V~prvním øádku tabulky jsou tudí¾ nuly. Analogicky, pokud vy¹¹í blok generuje pøenos, tak~ten ni¾¹í na~tom nic nezmìní. V~druhém øádku tabulky jsou tedy samé jednièky. Zajímavìj¹í pøípad nastává, pokud vy¹¹í blok kopíruje -- tehdy zále¾í èistì na~chování ni¾¹ího bloku. V¹imnìme si, ¾e~skládání chování blokù je vlastnì úplnì obyèejné skládání funkcí. Nyní bychom mohli prohlásit, ¾e~budeme poèítat nad~tøíprvkovou abecedou, -a~¾e~celou tabulku doká¾eme spoèítat jedním jediným hradlem. Pojïmì si v¹ak +a~¾e~celou tabulku doká¾eme spoèítat jedním jediným hradlem. Pojïme si v¹ak rozmyslet, jak~bychom takovouto vìc popsali èistì binárnì. Jak tedy tyto tøi stavy popisovat pouze nìkolika bity? @@ -232,61 +271,65 @@ Ozna kterým pøiøadíme tøi mo¾ná chování bloku. Toto kódování mù¾eme zvolit zcela libovolnì, ale pokud si ho zvolíme ¹ikovnì, u¹etøíme si dále práci pøi kompozici. Zvolme si tedy kódování takto: - -\itemize\ibull -\:$(1,*) = <$, -\:$(0,0) = 0$, -\:$(0,1) = 1$ -\endlist - -Tomu, ¾e blok kopíruje, odpovídá dvojice $p = 1$; $q =$ \. V~ostatních +$$ + (1,*) = \hbox{\tt <} \qquad + (0,0) = \hbox{\bo 0} \qquad + (0,1) = \hbox{\bo 1}. +$$ +Tomu, ¾e blok kopíruje, odpovídá dvojice $p = 1$, $q = \$ V~ostatních pøípadech bude~$p$ nulové a~$q$ nám bude øíkat, co je na~výstupu pøíslu¹ného bloku. Jinými slovy $p = 0$ znamená, ¾e funkce je konstanta, pøièem¾ $q$ øíká jaká; naproti tomu $p = 1$~znamená, ¾e funkce je identita, a»~u¾~je $q$ cokoli. -Pojïme si nyní ukázat, jak bude celé skládání blokù vypadat. Rozmysleme si, -kdy je~$p$ celého dvojbloku jednièkové, tedy kdy celý dvojblok kopíruje. To nastane -tehdy, pokud kopírují obì jeho èásti, a tedy $p = p_a~\&~p_b$. Dále $q$ bude rovno jednièce, -pokud $q = (\neg{p_a}~\&~q_a) \lor (p_a~\&~q_b)$. - -Skládání chování blokù lze tedy popsat buï ternárnì -- tabulkou, ale lze to -i~binárnì vý¹e uvedeným pøedpisem. - -Nyní si tedy mù¾eme dopøedu vypoèítat chování bloku velikosti jedna, poté - z~nich skládáním blokù velikosti dva, dál velikosti ètyøi, osm, atd \dots +V~tomto kódování mù¾eme na¹i tabulku popsat následovnì: +$$\eqalign{ + p_B &= p_H \land p_D,\cr + q_B &= (\neg{p_H} \land q_H) \lor (p_H \land q_D). +}$$ \h{Paralelní sèítání} -Paralelní algoritmus na~sèítání u¾~zkonstruujeme pomìrnì snadno. Bez újmy -na~obecnosti budeme pøedpokládat, ¾e~poèet bitù vstupních èísel je mocnina dvojky, -jinak si vstup doplníme nulami, co¾ výsedný èas bìhu algoritmu zhor¹í maximálnì -konstanta-krát. - +Z~popisu chování blokù u¾ je jenom krùèek k~paralelnímu pøedpovídání pøenosù, +a~tím i k~paralelní sèítaèce. Bez újmy na~obecnosti budeme pøedpokládat, +¾e~poèet bitù vstupních èísel je mocnina dvojky, jinak si vstup doplníme +nulami, co¾ výsledný èas bìhu algoritmu zhor¹í maximálnì konstanta-krát. + +Algoritmus bude rozdìlen na~dvì èásti. V~první èásti spoèítá chování +v¹ech {\I pøirozených blokù} -- tak budeme øíkat blokùm, jejich¾ velikost +je mocnina dvojky a pozice je dìlitelná velikostí. Nejprve v~konstantním +èase spoèítá chování blokù velikosti~1, ty pak spojí do dvojic, dvojice +zase do dvojic atd., obecnì v~$i$-tém kroku spoète chování v¹ech pøirozených +blokù velikosti~$2^i$. + +V~druhé èásti pak dopoèítává pøenosy, a~to tak, aby v~$i$-tém kroku byly známy +pøenosy do~øádù dìlitelných~$2^{\log n - i}$. V~nultém kroku tedy pouze $c_0=0$ +a~$c_n$, který spoèítá z~$c_0$ pomocí chování bloku $\left< 0,n \right>$. +V~prvním kroku pomocí $\left< 0,n/2 \right>$ dopoèítá $c_{n/2}$, +v~druhém pomocí $\left< 0,n/4 \right>$ spoèítá $c_{n/4}$ a pomocí +$\left< n/2,3/4\cdot n \right>$ dostane $c_{3/4\cdot n}$ atd. +Obecnì v~$i$-tém kroku pou¾ívá chování blokù velikosti $2^{\log n - i}$. + +\s{Sèítací sí»} tedy bude vypadat takto: \algo -\:Spoèteme chování blokù velikosti~1. ($\O(1)$ hladin) -\:Postupnì poèítáme chování blokù\foot{myslíme \uv{pøirozenì zarovnané} bloky, tedy takové, jejich¾ poloha je násobkem velikosti} velikosti 2, 4, 8, ..., $2^k$. - ($\O(\log n)$ hladin, na~nich¾ se skládají bloky) -\:$c_0 \leftarrow 0$ (pøenos do nejni¾¹ího øádu je v¾dy 0) -\:Urèíme $c_n$ podle $c_0$ a chování (jediného) bloku velikosti~$n$. -\:Postupnì dopoèítáme pøenosy na~hranicích dìlitelných $2^k$ \uv{zahu¹»ováním}: - jakmile víme $c_{2^k}$, mù¾eme dopoèítat $c_{2^k+2^{k-1}}$ podle - chování bloku $\left< 2^k, 2^k+2^{k-1}\right>$. ($\O(\log n)$ hladin, - na~nich¾ se dosazuje) -\:Seèteme: $\forall i: z_i = x_i \oplus y_i \oplus c_i$. +\:$\Theta(1)$ hladin výpoètu chování blokù velikosti~1. +\:$\Theta(\log n)$ hladin poèítajících chování pøirozených blokù velikosti~$2^i$. +\:$\Theta(\log n)$ hladin dopoèítávajících pøenosy \uv{zahu¹»ováním}. +\:$\Theta(1)$ hladin na samotné seètení: $\forall i: z_i = x_i \oplus y_i \oplus c_i$. \endalgo -\figure{1_9_deleni_bloku.eps}{Výpoèet pøenosu.}{2.5in} +\figure{1_9_deleni_bloku.eps}{Výpoèet pøenosu}{2.5in} -Algoritmus pracuje v~èase $\O(\log n)$. Hradel je pou¾ito lineárnì: na~jednotlivých -hladinách kroku~2 poèet hradel exponenciálnì klesá od~$n$ k~1, na~hladinách kroku~5 -exponenciálnì stoupá od~1 k~$n$, tak¾e dohromady se seète na~$\Theta(n)$. +Algoritmus tedy pracuje v~èase $\Theta(\log n)$. Hradel je pou¾ito lineárnì: pøi +výpoètu chování blokù na jednotlivých hladinách poèet hradel exponenciálnì klesá +od~$n$ k~1, bìhem zahu¹»ování pøenosù naopak exponenciálnì stoupá od~1 k~$n$. +Obì geometrické øady mají souèet $\Theta(n)$. \h{Paralelní násobení} Podobnì jako u~sèítání si vzpomeneme na~¹kolní algoritmus -- tentokráte v¹ak pro násobení. To fungovalo tak, ¾e~jsme si jedno ze~dvou binárních èísel na~vstupu (øíkejme mu tøeba $x$) $n$-krát posouvali. Tam kde pak byly v~èísle~$y$ jednièky, pøíslu¹né kopie $x$ jsme seèetli. Jinými slovy tedy násobení umíme pøevést na~nìjaké posuny (ty lze realizovat pouze \uv{pøedrátováním} -- nic nás nestojí), násobení jedním bitem (co¾ je {\csc and} ) a~nakonec potøebujeme výsledných~$n$ èísel seèíst. -\figure{skolni_scitani.eps}{©kolní sèítání.}{2in} +\figure{skolni_scitani.eps}{©kolní sèítání}{2in} Jak nyní seèíst $n$ $n$-bitových èísel..? Nabízí se vyu¾ít osvìdèený \uv{stromeèek} -- sèítat dvojice èísel, výsledky pak opìt po~dvojicích seèíst, a¾ na~konci vyjde jediný výsledek. \figure{stromecek.eps}{Stromeèek}{1.4in} @@ -313,6 +356,6 @@ Pokud jsme m Seètení v¹ech $n$ èísel tedy zabere $\Theta (\log n)$ hladin. -Kdy¾ se nyní vrátíme k~násobení, zbývá nám vyøe¹it posouvání a~{\csc and}ování. Uvìdomme si, ¾e to je plnì paralelení a~zvládneme ho za~konstantnì mnoho hladin. Celé násobení tedy zvládneme v~logaritmickém èase. +Kdy¾ se nyní vrátíme k~násobení, zbývá nám vyøe¹it posouvání a~{\csc and}ování. Uvìdomme si, ¾e to je plnì paralelní a~zvládneme ho za~konstantnì mnoho hladin. Celé násobení tedy zvládneme v~logaritmickém èase. \bye diff --git a/5-hradla/hradlo_and.eps b/5-hradla/hradlo_and.eps deleted file mode 100644 index a300fbe..0000000 --- a/5-hradla/hradlo_and.eps +++ /dev/null @@ -1,176 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Creator: inkscape 0.46 -%%Pages: 1 -%%Orientation: Portrait -%%BoundingBox: 102 501 441 692 -%%HiResBoundingBox: 102.87938 501.97714 440.44984 691.16572 -%%EndComments -%%Page: 1 1 -0 842 translate -0.8 -0.8 scale -0 0 0 setrgbcolor -[] 0 setdash -1 setlinewidth -0 setlinejoin -0 setlinecap -gsave [1 0 0 1 0 0] concat -0 0 0 setrgbcolor -[] 0 setdash -2.2 setlinewidth -2 setlinejoin -0 setlinecap -newpath -222.85715 189.50504 moveto -457.14287 189.50504 lineto -457.14287 423.79076 lineto -222.85715 423.79076 lineto -222.85715 189.50504 lineto -closepath -stroke -gsave [1.086765 0 0 1.086765 -40.109812 -37.378803] concat -gsave -0 0 0 setrgbcolor -newpath -323.57812 316.57094 moveto -319.31247 320.36787 316.17185 324.16474 314.15625 327.96157 curveto -312.18748 331.71161 311.2031 335.6491 311.20312 339.77407 curveto -311.2031 346.61784 313.68747 352.31315 318.65625 356.86 curveto -323.62496 361.40689 329.85933 363.68033 337.35938 363.68032 curveto -341.81245 363.68033 345.98432 362.95376 349.875 361.50063 curveto -353.76556 360.00064 357.42181 357.75064 360.84375 354.75063 curveto -323.57812 316.57094 lineto -333.49219 308.69594 moveto -369.21094 345.25844 lineto -371.97648 341.0866 374.13273 336.63348 375.67969 331.89907 curveto -377.22647 327.11786 378.14054 322.05537 378.42188 316.71157 curveto -391.5 316.71157 lineto -390.9374 322.89912 389.4374 329.0163 387 335.06313 curveto -384.5624 341.11004 381.16397 347.08659 376.80469 352.99282 curveto -396.42188 373.03188 lineto -378.70312 373.03188 lineto -368.64844 362.69594 lineto -363.77336 366.86782 358.66399 369.98501 353.32031 372.0475 curveto -347.9765 374.06313 342.23432 375.07094 336.09375 375.07094 curveto -324.79684 375.07094 315.56247 371.86001 308.39062 365.43813 curveto -301.21874 358.96939 297.6328 350.69596 297.63281 340.61782 curveto -297.6328 334.61786 299.20311 328.99286 302.34375 323.74282 curveto -305.48436 318.446 310.19529 313.47725 316.47656 308.83657 curveto -314.22654 305.88351 312.5156 302.95382 311.34375 300.0475 curveto -310.17185 297.09446 309.58592 294.21165 309.58594 291.39907 curveto -309.58592 283.80541 312.18748 277.71166 317.39062 273.11782 curveto -322.59372 268.4773 329.50777 266.15699 338.13281 266.15688 curveto -342.02338 266.15699 345.89057 266.57886 349.73438 267.4225 curveto -353.62493 268.26636 357.56243 269.53198 361.54688 271.21938 curveto -361.54688 284.01625 lineto -357.46868 281.81322 353.57806 280.14916 349.875 279.02407 curveto -346.17182 277.85229 342.72651 277.26635 339.53906 277.26625 curveto -334.61714 277.26635 330.60933 278.57885 327.51562 281.20375 curveto -324.46871 283.78197 322.94528 287.13353 322.94531 291.25844 curveto -322.94528 293.64915 323.62496 296.06321 324.98438 298.50063 curveto -326.39059 300.89133 329.22652 304.28976 333.49219 308.69594 curveto -fill -grestore -grestore -gsave -0 0 0 setrgbcolor -newpath -458.64285 300.93362 moveto -458.64285 301.76162 457.97085 302.43362 457.14285 302.43362 curveto -456.31485 302.43362 455.64285 301.76162 455.64285 300.93362 curveto -455.64285 300.10562 456.31485 299.43362 457.14285 299.43362 curveto -457.97085 299.43362 458.64285 300.10562 458.64285 300.93362 curveto -closepath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -458.64285 306.64789 moveto -458.64285 307.47589 457.97085 308.14789 457.14285 308.14789 curveto -456.31485 308.14789 455.64285 307.47589 455.64285 306.64789 curveto -455.64285 305.81989 456.31485 305.14789 457.14285 305.14789 curveto -457.97085 305.14789 458.64285 305.81989 458.64285 306.64789 curveto -closepath -fill -grestore -gsave [1 0 0 1 -70.821052 -297.29277] concat -0 0 0 setrgbcolor -[] 0 setdash -1 setlinewidth -0 setlinejoin -0 setlinecap -newpath -200 560.70184 moveto -291.42857 560.70184 291.42857 560.70184 291.42857 560.70184 curveto -271.04275 572.4716 271.23234 572.36214 271.23234 572.36214 curveto -271.06826 572.31818 lineto -271.3003 572.08112 lineto -stroke -0 0 0 setrgbcolor -[] 0 setdash -1 setlinewidth -0 setlinejoin -0 setlinecap -newpath -199.92028 559.80452 moveto -291.34885 559.80452 291.34885 559.80452 291.34885 559.80452 curveto -270.96303 548.03476 271.15262 548.14422 271.15262 548.14422 curveto -270.98854 548.18818 lineto -271.22058 548.42524 lineto -stroke -grestore -gsave [1 0 0 1 -70.567428 -214.54501] concat -0 0 0 setrgbcolor -[] 0 setdash -1 setlinewidth -0 setlinejoin -0 setlinecap -newpath -200 560.70184 moveto -291.42857 560.70184 291.42857 560.70184 291.42857 560.70184 curveto -271.04275 572.4716 271.23234 572.36214 271.23234 572.36214 curveto -271.06826 572.31818 lineto -271.3003 572.08112 lineto -stroke -0 0 0 setrgbcolor -[] 0 setdash -1 setlinewidth -0 setlinejoin -0 setlinecap -newpath -199.92028 559.80452 moveto -291.34885 559.80452 291.34885 559.80452 291.34885 559.80452 curveto -270.96303 548.03476 271.15262 548.14422 271.15262 548.14422 curveto -270.98854 548.18818 lineto -271.22058 548.42524 lineto -stroke -grestore -gsave [1 0 0 1 258.63373 -256.57069] concat -0 0 0 setrgbcolor -[] 0 setdash -1 setlinewidth -0 setlinejoin -0 setlinecap -newpath -200 560.70184 moveto -291.42857 560.70184 291.42857 560.70184 291.42857 560.70184 curveto -271.04275 572.4716 271.23234 572.36214 271.23234 572.36214 curveto -271.06826 572.31818 lineto -271.3003 572.08112 lineto -stroke -0 0 0 setrgbcolor -[] 0 setdash -1 setlinewidth -0 setlinejoin -0 setlinecap -newpath -199.92028 559.80452 moveto -291.34885 559.80452 291.34885 559.80452 291.34885 559.80452 curveto -270.96303 548.03476 271.15262 548.14422 271.15262 548.14422 curveto -270.98854 548.18818 lineto -271.22058 548.42524 lineto -stroke -grestore -grestore -showpage -%%EOF diff --git a/5-hradla/hradlo_and.svg b/5-hradla/hradlo_and.svg deleted file mode 100644 index b927f04..0000000 --- a/5-hradla/hradlo_and.svg +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - - - - - image/svg+xml - - - - - - - &7ý& & - - - - - - - - - - - - - - - diff --git a/5-hradla/hradlo_ternbior.eps b/5-hradla/hradlo_ternbior.eps deleted file mode 100644 index 54297f3..0000000 --- a/5-hradla/hradlo_ternbior.eps +++ /dev/null @@ -1,930 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Creator: inkscape 0.46 -%%Pages: 1 -%%Orientation: Portrait -%%BoundingBox: 84 110 339 802 -%%HiResBoundingBox: 84.27033 110.92095 338.40347 801.64349 -%%EndComments -%%Page: 1 1 -0 842 translate -0.8 -0.8 scale -0 0 0 setrgbcolor -[] 0 setdash -1 setlinewidth -0 setlinejoin -0 setlinecap -gsave [1 0 0 1 0 0] concat -gsave [1.086765 0 0 1.086765 -153.37722 -50.161856] concat -gsave -0 0 0 setrgbcolor -newpath -310.24219 294.28188 moveto -323.95312 294.28188 lineto -348.5625 360.37563 lineto -373.17188 294.28188 lineto -386.88281 294.28188 lineto -357.35156 373.03188 lineto -339.77344 373.03188 lineto -310.24219 294.28188 lineto -fill -grestore -grestore -gsave [0 1 -1 0 0 0] concat -0 0 0 setrgbcolor -[] 0 setdash -2.2 setlinewidth -2 setlinejoin -0 setlinecap -newpath -195.92429 -340.72363 moveto -430.21001 -340.72363 lineto -430.21001 -106.43791 lineto -195.92429 -106.43791 lineto -195.92429 -340.72363 lineto -closepath -stroke -grestore -gsave [0 1 -1 0 530.22866 -26.932868] concat -gsave -0 0 0 setrgbcolor -newpath -458.64285 300.93362 moveto -458.64285 301.76162 457.97085 302.43362 457.14285 302.43362 curveto -456.31485 302.43362 455.64285 301.76162 455.64285 300.93362 curveto -455.64285 300.10562 456.31485 299.43362 457.14285 299.43362 curveto -457.97085 299.43362 458.64285 300.10562 458.64285 300.93362 curveto -closepath -fill -grestore -grestore -gsave [0 1 -1 0 530.22866 -26.932868] concat -gsave -0 0 0 setrgbcolor -newpath -458.64285 306.64789 moveto -458.64285 307.47589 457.97085 308.14789 457.14285 308.14789 curveto -456.31485 308.14789 455.64285 307.47589 455.64285 306.64789 curveto -455.64285 305.81989 456.31485 305.14789 457.14285 305.14789 curveto -457.97085 305.14789 458.64285 305.81989 458.64285 306.64789 curveto -closepath -fill -grestore -grestore -gsave [0 1 -1 0 827.52143 -97.75392] concat -0 0 0 setrgbcolor -[] 0 setdash -1 setlinewidth -0 setlinejoin -0 setlinecap -newpath -200 560.70184 moveto -291.42857 560.70184 291.42857 560.70184 291.42857 560.70184 curveto -271.04275 572.4716 271.23234 572.36214 271.23234 572.36214 curveto -271.06826 572.31818 lineto -271.3003 572.08112 lineto -stroke -0 0 0 setrgbcolor -[] 0 setdash -1 setlinewidth -0 setlinejoin -0 setlinecap -newpath -199.92028 559.80452 moveto -291.34885 559.80452 291.34885 559.80452 291.34885 559.80452 curveto -270.96303 548.03476 271.15262 548.14422 271.15262 548.14422 curveto -270.98854 548.18818 lineto -271.22058 548.42524 lineto -stroke -grestore -gsave [0 1 -1 0 744.77367 -97.500296] concat -0 0 0 setrgbcolor -[] 0 setdash -1 setlinewidth -0 setlinejoin -0 setlinecap -newpath -200 560.70184 moveto -291.42857 560.70184 291.42857 560.70184 291.42857 560.70184 curveto -271.04275 572.4716 271.23234 572.36214 271.23234 572.36214 curveto -271.06826 572.31818 lineto -271.3003 572.08112 lineto -stroke -0 0 0 setrgbcolor -[] 0 setdash -1 setlinewidth -0 setlinejoin -0 setlinecap -newpath -199.92028 559.80452 moveto -291.34885 559.80452 291.34885 559.80452 291.34885 559.80452 curveto -270.96303 548.03476 271.15262 548.14422 271.15262 548.14422 curveto -270.98854 548.18818 lineto -271.22058 548.42524 lineto -stroke -grestore -gsave [1 0 0 1 -197.85619 -106.25382] concat -gsave [0 1 -1 0 0 0] concat -0 0 0 setrgbcolor -[] 0 setdash -2.2 setlinewidth -2 setlinejoin -0 setlinecap -newpath -688.52521 -579.41534 moveto -922.81093 -579.41534 lineto -922.81093 -345.12962 lineto -688.52521 -345.12962 lineto -688.52521 -579.41534 lineto -closepath -stroke -grestore -gsave [0 1 -1 0 768.92035 465.66803] concat -gsave -0 0 0 setrgbcolor -newpath -458.64285 300.93362 moveto -458.64285 301.76162 457.97085 302.43362 457.14285 302.43362 curveto -456.31485 302.43362 455.64285 301.76162 455.64285 300.93362 curveto -455.64285 300.10562 456.31485 299.43362 457.14285 299.43362 curveto -457.97085 299.43362 458.64285 300.10562 458.64285 300.93362 curveto -closepath -fill -grestore -grestore -gsave [0 1 -1 0 768.92035 465.66803] concat -gsave -0 0 0 setrgbcolor -newpath -458.64285 306.64789 moveto -458.64285 307.47589 457.97085 308.14789 457.14285 308.14789 curveto -456.31485 308.14789 455.64285 307.47589 455.64285 306.64789 curveto -455.64285 305.81989 456.31485 305.14789 457.14285 305.14789 curveto -457.97085 305.14789 458.64285 305.81989 458.64285 306.64789 curveto -closepath -fill -grestore -grestore -gsave [0 1 -1 0 1066.2131 394.84698] concat -0 0 0 setrgbcolor -[] 0 setdash -1 setlinewidth -0 setlinejoin -0 setlinecap -newpath -200 560.70184 moveto -291.42857 560.70184 291.42857 560.70184 291.42857 560.70184 curveto -271.04275 572.4716 271.23234 572.36214 271.23234 572.36214 curveto -271.06826 572.31818 lineto -271.3003 572.08112 lineto -stroke -0 0 0 setrgbcolor -[] 0 setdash -1 setlinewidth -0 setlinejoin -0 setlinecap -newpath -199.92028 559.80452 moveto -291.34885 559.80452 291.34885 559.80452 291.34885 559.80452 curveto -270.96303 548.03476 271.15262 548.14422 271.15262 548.14422 curveto -270.98854 548.18818 lineto -271.22058 548.42524 lineto -stroke -grestore -gsave [0 1 -1 0 983.46536 395.1006] concat -0 0 0 setrgbcolor -[] 0 setdash -1 setlinewidth -0 setlinejoin -0 setlinecap -newpath -200 560.70184 moveto -291.42857 560.70184 291.42857 560.70184 291.42857 560.70184 curveto -271.04275 572.4716 271.23234 572.36214 271.23234 572.36214 curveto -271.06826 572.31818 lineto -271.3003 572.08112 lineto -stroke -0 0 0 setrgbcolor -[] 0 setdash -1 setlinewidth -0 setlinejoin -0 setlinecap -newpath -199.92028 559.80452 moveto -291.34885 559.80452 291.34885 559.80452 291.34885 559.80452 curveto -270.96303 548.03476 271.15262 548.14422 271.15262 548.14422 curveto -270.98854 548.18818 lineto -271.22058 548.42524 lineto -stroke -grestore -gsave [0 1 -1 0 1025.491 724.30176] concat -0 0 0 setrgbcolor -[] 0 setdash -1 setlinewidth -0 setlinejoin -0 setlinecap -newpath -200 560.70184 moveto -291.42857 560.70184 291.42857 560.70184 291.42857 560.70184 curveto -271.04275 572.4716 271.23234 572.36214 271.23234 572.36214 curveto -271.06826 572.31818 lineto -271.3003 572.08112 lineto -stroke -0 0 0 setrgbcolor -[] 0 setdash -1 setlinewidth -0 setlinejoin -0 setlinecap -newpath -199.92028 559.80452 moveto -291.34885 559.80452 291.34885 559.80452 291.34885 559.80452 curveto -270.96303 548.03476 271.15262 548.14422 271.15262 548.14422 curveto -270.98854 548.18818 lineto -271.22058 548.42524 lineto -stroke -grestore -grestore -gsave -0 0 0 setrgbcolor -newpath -225.364 431.27002 moveto -225.364 489.10451 lineto -eofill -grestore -0 0 0 setrgbcolor -[] 0 setdash -2.05 setlinewidth -0 setlinejoin -0 setlinecap -newpath -225.364 431.27002 moveto -225.364 489.10451 lineto -stroke -0 0 0 setrgbcolor -[] 0 setdash -1.9 setlinewidth -0 setlinejoin -0 setlinecap -newpath -402.80556 101.82646 moveto -401.1693 487.97347 lineto -stroke -0 0 0 setrgbcolor -[] 0 setdash -1.9 setlinewidth -0 setlinejoin -0 setlinecap -newpath -402.15507 488.76285 moveto -307.25226 488.76285 lineto -stroke -gsave -0 0 0 setrgbcolor -newpath -172.98692 51.937996 moveto -176.93224 51.937996 lineto -176.93224 81.098152 lineto -172.98692 81.098152 lineto -172.98692 51.937996 lineto -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -185.81895 77.77784 moveto -192.26427 77.77784 lineto -192.26427 55.531746 lineto -185.25255 56.937996 lineto -185.25255 53.344246 lineto -192.2252 51.937996 lineto -196.17052 51.937996 lineto -196.17052 77.77784 lineto -202.61583 77.77784 lineto -202.61583 81.098152 lineto -185.81895 81.098152 lineto -185.81895 77.77784 lineto -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -257.99887 50.835159 moveto -261.94418 50.835159 lineto -261.94418 79.995316 lineto -257.99887 79.995316 lineto -257.99887 50.835159 lineto -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -273.54575 76.675003 moveto -287.31528 76.675003 lineto -287.31528 79.995316 lineto -268.79965 79.995316 lineto -268.79965 76.675003 lineto -270.29704 75.125529 272.3348 73.048708 274.91293 70.444534 curveto -277.50407 67.827359 279.13167 66.141163 279.79575 65.385941 curveto -281.05875 63.966686 281.93766 62.76877 282.43246 61.792191 curveto -282.94026 60.802626 283.19417 59.832575 283.19418 58.882034 curveto -283.19417 57.332578 282.64729 56.069558 281.55356 55.092972 curveto -280.47281 54.116435 279.06006 53.628154 277.31528 53.628128 curveto -276.07829 53.628154 274.7697 53.842998 273.3895 54.272659 curveto -272.0223 54.702372 270.55746 55.353413 268.99496 56.225784 curveto -268.99496 52.241409 lineto -270.5835 51.603417 272.06788 51.121647 273.44809 50.796097 curveto -274.82829 50.470605 276.09131 50.307845 277.23715 50.307816 curveto -280.25797 50.307845 282.66682 51.063053 284.46371 52.573441 curveto -286.26057 54.083883 287.15901 56.10211 287.15903 58.628128 curveto -287.15901 59.826065 286.93114 60.965387 286.47543 62.046097 curveto -286.0327 63.113822 285.2189 64.376842 284.03403 65.835159 curveto -283.70849 66.212777 282.67333 67.306526 280.92856 69.116409 curveto -279.18375 70.913293 276.72282 73.432822 273.54575 76.675003 curveto -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -392.88715 51.040833 moveto -396.83246 51.040833 lineto -396.83246 80.200989 lineto -392.88715 80.200989 lineto -392.88715 51.040833 lineto -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -416.98871 64.478333 moveto -418.87671 64.881994 420.34806 65.721837 421.40277 66.997864 curveto -422.47046 68.273917 423.00431 69.849437 423.00433 71.724426 curveto -423.00431 74.602036 422.01473 76.828596 420.03558 78.404114 curveto -418.0564 79.979635 415.2439 80.767394 411.59808 80.767395 curveto -410.37412 80.767394 409.1111 80.643697 407.80902 80.396301 curveto -406.51995 80.161926 405.18532 79.803854 403.80511 79.322083 curveto -403.80511 75.513489 lineto -404.89886 76.151514 406.09678 76.633284 407.39886 76.958801 curveto -408.70094 77.284325 410.06162 77.447085 411.4809 77.447083 curveto -413.95484 77.447085 415.83635 76.958805 417.12543 75.982239 curveto -418.42749 75.005681 419.07853 73.586412 419.07855 71.724426 curveto -419.07853 70.005686 418.47307 68.664542 417.26215 67.700989 curveto -416.06421 66.72444 414.39104 66.236159 412.24261 66.236145 curveto -408.84418 66.236145 lineto -408.84418 62.993958 lineto -412.39886 62.993958 lineto -414.33896 62.993975 415.82333 62.609861 416.85199 61.841614 curveto -417.88062 61.060383 418.39494 59.940592 418.39496 58.482239 curveto -418.39494 56.984866 417.86109 55.839034 416.7934 55.044739 curveto -415.73869 54.237473 414.22177 53.833828 412.24261 53.833801 curveto -411.16188 53.833828 410.00302 53.951015 408.76605 54.185364 curveto -407.52907 54.419765 406.16839 54.784348 404.68402 55.279114 curveto -404.68402 51.763489 lineto -406.18141 51.346851 407.58115 51.034351 408.88324 50.825989 curveto -410.19833 50.617685 411.43531 50.513518 412.59418 50.513489 curveto -415.58895 50.513518 417.95874 51.197112 419.70355 52.56427 curveto -421.44832 53.918463 422.32072 55.754399 422.32074 58.072083 curveto -422.32072 59.686686 421.85848 61.053872 420.93402 62.173645 curveto -420.00952 63.280433 418.69442 64.048661 416.98871 64.478333 curveto -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -312.21332 886.66022 moveto -309.34872 886.66024 307.07008 887.72795 305.37738 889.86334 curveto -303.69769 891.99878 302.85784 894.90893 302.85785 898.59381 curveto -302.85784 902.2657 303.69769 905.16934 305.37738 907.30475 curveto -307.07008 909.44017 309.34872 910.50788 312.21332 910.50787 curveto -315.07788 910.50788 317.34351 909.44017 319.01019 907.30475 curveto -320.68986 905.16934 321.5297 902.2657 321.52972 898.59381 curveto -321.5297 894.90893 320.68986 891.99878 319.01019 889.86334 curveto -317.34351 887.72795 315.07788 886.66024 312.21332 886.66022 curveto -312.21332 883.45709 moveto -316.30184 883.45712 319.57007 884.83082 322.01801 887.57819 curveto -324.46589 890.31258 325.68985 893.98446 325.68988 898.59381 curveto -325.68985 903.19018 324.46589 906.86205 322.01801 909.60944 curveto -319.57007 912.34381 316.30184 913.711 312.21332 913.711 curveto -308.11174 913.711 304.8305 912.34381 302.36957 909.60944 curveto -299.92165 906.87507 298.69769 903.2032 298.69769 898.59381 curveto -298.69769 893.98446 299.92165 890.31258 302.36957 887.57819 curveto -304.8305 884.83082 308.11174 883.45712 312.21332 883.45709 curveto -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -332.89691 909.82428 moveto -339.34222 909.82428 lineto -339.34222 887.57819 lineto -332.33051 888.98444 lineto -332.33051 885.39069 lineto -339.30316 883.98444 lineto -343.24847 883.98444 lineto -343.24847 909.82428 lineto -349.69379 909.82428 lineto -349.69379 913.14459 lineto -332.89691 913.14459 lineto -332.89691 909.82428 lineto -fill -grestore -gsave [0 1 -1 0 0 0] concat -0 0 0 setrgbcolor -[] 0 setdash -2.2 setlinewidth -2 setlinejoin -0 setlinecap -newpath -582.27136 -381.55914 moveto -816.55708 -381.55914 lineto -816.55708 -147.27342 lineto -582.27136 -147.27342 lineto -582.27136 -381.55914 lineto -closepath -stroke -grestore -gsave [0 1 -1 0 571.06416 359.41421] concat -gsave -0 0 0 setrgbcolor -newpath -458.64285 300.93362 moveto -458.64285 301.76162 457.97085 302.43362 457.14285 302.43362 curveto -456.31485 302.43362 455.64285 301.76162 455.64285 300.93362 curveto -455.64285 300.10562 456.31485 299.43362 457.14285 299.43362 curveto -457.97085 299.43362 458.64285 300.10562 458.64285 300.93362 curveto -closepath -fill -grestore -grestore -gsave [0 1 -1 0 571.06416 359.41421] concat -gsave -0 0 0 setrgbcolor -newpath -458.64285 306.64789 moveto -458.64285 307.47589 457.97085 308.14789 457.14285 308.14789 curveto -456.31485 308.14789 455.64285 307.47589 455.64285 306.64789 curveto -455.64285 305.81989 456.31485 305.14789 457.14285 305.14789 curveto -457.97085 305.14789 458.64285 305.81989 458.64285 306.64789 curveto -closepath -fill -grestore -grestore -gsave [0 1 -1 0 868.35691 288.59316] concat -0 0 0 setrgbcolor -[] 0 setdash -1 setlinewidth -0 setlinejoin -0 setlinecap -newpath -200 560.70184 moveto -291.42857 560.70184 291.42857 560.70184 291.42857 560.70184 curveto -271.04275 572.4716 271.23234 572.36214 271.23234 572.36214 curveto -271.06826 572.31818 lineto -271.3003 572.08112 lineto -stroke -0 0 0 setrgbcolor -[] 0 setdash -1 setlinewidth -0 setlinejoin -0 setlinecap -newpath -199.92028 559.80452 moveto -291.34885 559.80452 291.34885 559.80452 291.34885 559.80452 curveto -270.96303 548.03476 271.15262 548.14422 271.15262 548.14422 curveto -270.98854 548.18818 lineto -271.22058 548.42524 lineto -stroke -grestore -gsave [0 1 -1 0 785.60917 288.84678] concat -0 0 0 setrgbcolor -[] 0 setdash -1 setlinewidth -0 setlinejoin -0 setlinecap -newpath -200 560.70184 moveto -291.42857 560.70184 291.42857 560.70184 291.42857 560.70184 curveto -271.04275 572.4716 271.23234 572.36214 271.23234 572.36214 curveto -271.06826 572.31818 lineto -271.3003 572.08112 lineto -stroke -0 0 0 setrgbcolor -[] 0 setdash -1 setlinewidth -0 setlinejoin -0 setlinecap -newpath -199.92028 559.80452 moveto -291.34885 559.80452 291.34885 559.80452 291.34885 559.80452 curveto -270.96303 548.03476 271.15262 548.14422 271.15262 548.14422 curveto -270.98854 548.18818 lineto -271.22058 548.42524 lineto -stroke -grestore -gsave [0 1 -1 0 827.63481 618.04794] concat -0 0 0 setrgbcolor -[] 0 setdash -1 setlinewidth -0 setlinejoin -0 setlinecap -newpath -200 560.70184 moveto -291.42857 560.70184 291.42857 560.70184 291.42857 560.70184 curveto -271.04275 572.4716 271.23234 572.36214 271.23234 572.36214 curveto -271.06826 572.31818 lineto -271.3003 572.08112 lineto -stroke -0 0 0 setrgbcolor -[] 0 setdash -1 setlinewidth -0 setlinejoin -0 setlinecap -newpath -199.92028 559.80452 moveto -291.34885 559.80452 291.34885 559.80452 291.34885 559.80452 curveto -270.96303 548.03476 271.15262 548.14422 271.15262 548.14422 curveto -270.98854 548.18818 lineto -271.22058 548.42524 lineto -stroke -grestore -gsave [1 0 0 1 -197.85619 -106.25382] concat -gsave [0 1 -1 0 0 0] concat -0 0 0 setrgbcolor -[] 0 setdash -2.2 setlinewidth -2 setlinejoin -0 setlinecap -newpath -688.52521 -579.41534 moveto -922.81093 -579.41534 lineto -922.81093 -345.12962 lineto -688.52521 -345.12962 lineto -688.52521 -579.41534 lineto -closepath -stroke -grestore -gsave [0 1 -1 0 768.92035 465.66803] concat -gsave -0 0 0 setrgbcolor -newpath -458.64285 300.93362 moveto -458.64285 301.76162 457.97085 302.43362 457.14285 302.43362 curveto -456.31485 302.43362 455.64285 301.76162 455.64285 300.93362 curveto -455.64285 300.10562 456.31485 299.43362 457.14285 299.43362 curveto -457.97085 299.43362 458.64285 300.10562 458.64285 300.93362 curveto -closepath -fill -grestore -grestore -gsave [0 1 -1 0 768.92035 465.66803] concat -gsave -0 0 0 setrgbcolor -newpath -458.64285 306.64789 moveto -458.64285 307.47589 457.97085 308.14789 457.14285 308.14789 curveto -456.31485 308.14789 455.64285 307.47589 455.64285 306.64789 curveto -455.64285 305.81989 456.31485 305.14789 457.14285 305.14789 curveto -457.97085 305.14789 458.64285 305.81989 458.64285 306.64789 curveto -closepath -fill -grestore -grestore -gsave [0 1 -1 0 1066.2131 394.84698] concat -0 0 0 setrgbcolor -[] 0 setdash -1 setlinewidth -0 setlinejoin -0 setlinecap -newpath -200 560.70184 moveto -291.42857 560.70184 291.42857 560.70184 291.42857 560.70184 curveto -271.04275 572.4716 271.23234 572.36214 271.23234 572.36214 curveto -271.06826 572.31818 lineto -271.3003 572.08112 lineto -stroke -0 0 0 setrgbcolor -[] 0 setdash -1 setlinewidth -0 setlinejoin -0 setlinecap -newpath -199.92028 559.80452 moveto -291.34885 559.80452 291.34885 559.80452 291.34885 559.80452 curveto -270.96303 548.03476 271.15262 548.14422 271.15262 548.14422 curveto -270.98854 548.18818 lineto -271.22058 548.42524 lineto -stroke -grestore -gsave [0 1 -1 0 983.46536 395.1006] concat -0 0 0 setrgbcolor -[] 0 setdash -1 setlinewidth -0 setlinejoin -0 setlinecap -newpath -200 560.70184 moveto -291.42857 560.70184 291.42857 560.70184 291.42857 560.70184 curveto -271.04275 572.4716 271.23234 572.36214 271.23234 572.36214 curveto -271.06826 572.31818 lineto -271.3003 572.08112 lineto -stroke -0 0 0 setrgbcolor -[] 0 setdash -1 setlinewidth -0 setlinejoin -0 setlinecap -newpath -199.92028 559.80452 moveto -291.34885 559.80452 291.34885 559.80452 291.34885 559.80452 curveto -270.96303 548.03476 271.15262 548.14422 271.15262 548.14422 curveto -270.98854 548.18818 lineto -271.22058 548.42524 lineto -stroke -grestore -gsave [0 1 -1 0 1025.491 724.30176] concat -0 0 0 setrgbcolor -[] 0 setdash -1 setlinewidth -0 setlinejoin -0 setlinecap -newpath -200 560.70184 moveto -291.42857 560.70184 291.42857 560.70184 291.42857 560.70184 curveto -271.04275 572.4716 271.23234 572.36214 271.23234 572.36214 curveto -271.06826 572.31818 lineto -271.3003 572.08112 lineto -stroke -0 0 0 setrgbcolor -[] 0 setdash -1 setlinewidth -0 setlinejoin -0 setlinecap -newpath -199.92028 559.80452 moveto -291.34885 559.80452 291.34885 559.80452 291.34885 559.80452 curveto -270.96303 548.03476 271.15262 548.14422 271.15262 548.14422 curveto -270.98854 548.18818 lineto -271.22058 548.42524 lineto -stroke -grestore -grestore -gsave [1 0 0 1 -197.85619 -106.25382] concat -gsave [1.086765 0 0 1.086765 83.67662 455.54188] concat -grestore -gsave [0 1 -1 0 0 0] concat -0 0 0 setrgbcolor -[] 0 setdash -2.2 setlinewidth -2 setlinejoin -0 setlinecap -newpath -688.52521 -579.41534 moveto -922.81093 -579.41534 lineto -922.81093 -345.12962 lineto -688.52521 -345.12962 lineto -688.52521 -579.41534 lineto -closepath -stroke -grestore -gsave [0 1 -1 0 768.92035 465.66803] concat -gsave -0 0 0 setrgbcolor -newpath -458.64285 300.93362 moveto -458.64285 301.76162 457.97085 302.43362 457.14285 302.43362 curveto -456.31485 302.43362 455.64285 301.76162 455.64285 300.93362 curveto -455.64285 300.10562 456.31485 299.43362 457.14285 299.43362 curveto -457.97085 299.43362 458.64285 300.10562 458.64285 300.93362 curveto -closepath -fill -grestore -grestore -gsave [0 1 -1 0 768.92035 465.66803] concat -gsave -0 0 0 setrgbcolor -newpath -458.64285 306.64789 moveto -458.64285 307.47589 457.97085 308.14789 457.14285 308.14789 curveto -456.31485 308.14789 455.64285 307.47589 455.64285 306.64789 curveto -455.64285 305.81989 456.31485 305.14789 457.14285 305.14789 curveto -457.97085 305.14789 458.64285 305.81989 458.64285 306.64789 curveto -closepath -fill -grestore -grestore -gsave [0 1 -1 0 1066.2131 394.84698] concat -0 0 0 setrgbcolor -[] 0 setdash -1 setlinewidth -0 setlinejoin -0 setlinecap -newpath -200 560.70184 moveto -291.42857 560.70184 291.42857 560.70184 291.42857 560.70184 curveto -271.04275 572.4716 271.23234 572.36214 271.23234 572.36214 curveto -271.06826 572.31818 lineto -271.3003 572.08112 lineto -stroke -0 0 0 setrgbcolor -[] 0 setdash -1 setlinewidth -0 setlinejoin -0 setlinecap -newpath -199.92028 559.80452 moveto -291.34885 559.80452 291.34885 559.80452 291.34885 559.80452 curveto -270.96303 548.03476 271.15262 548.14422 271.15262 548.14422 curveto -270.98854 548.18818 lineto -271.22058 548.42524 lineto -stroke -grestore -gsave [0 1 -1 0 983.46536 395.1006] concat -0 0 0 setrgbcolor -[] 0 setdash -1 setlinewidth -0 setlinejoin -0 setlinecap -newpath -200 560.70184 moveto -291.42857 560.70184 291.42857 560.70184 291.42857 560.70184 curveto -271.04275 572.4716 271.23234 572.36214 271.23234 572.36214 curveto -271.06826 572.31818 lineto -271.3003 572.08112 lineto -stroke -0 0 0 setrgbcolor -[] 0 setdash -1 setlinewidth -0 setlinejoin -0 setlinecap -newpath -199.92028 559.80452 moveto -291.34885 559.80452 291.34885 559.80452 291.34885 559.80452 curveto -270.96303 548.03476 271.15262 548.14422 271.15262 548.14422 curveto -270.98854 548.18818 lineto -271.22058 548.42524 lineto -stroke -grestore -gsave [0 1 -1 0 1025.491 724.30176] concat -0 0 0 setrgbcolor -[] 0 setdash -1 setlinewidth -0 setlinejoin -0 setlinecap -newpath -200 560.70184 moveto -291.42857 560.70184 291.42857 560.70184 291.42857 560.70184 curveto -271.04275 572.4716 271.23234 572.36214 271.23234 572.36214 curveto -271.06826 572.31818 lineto -271.3003 572.08112 lineto -stroke -0 0 0 setrgbcolor -[] 0 setdash -1 setlinewidth -0 setlinejoin -0 setlinecap -newpath -199.92028 559.80452 moveto -291.34885 559.80452 291.34885 559.80452 291.34885 559.80452 curveto -270.96303 548.03476 271.15262 548.14422 271.15262 548.14422 curveto -270.98854 548.18818 lineto -271.22058 548.42524 lineto -stroke -grestore -grestore -gsave [1.086765 0 0 1.086765 -114.17957 349.28806] concat -grestore -gsave [0 1 -1 0 0 0] concat -0 0 0 setrgbcolor -[] 0 setdash -2.2 setlinewidth -2 setlinejoin -0 setlinecap -newpath -582.27136 -381.55914 moveto -816.55708 -381.55914 lineto -816.55708 -147.27342 lineto -582.27136 -147.27342 lineto -582.27136 -381.55914 lineto -closepath -stroke -grestore -gsave [0 1 -1 0 571.06416 359.41421] concat -gsave -0 0 0 setrgbcolor -newpath -458.64285 300.93362 moveto -458.64285 301.76162 457.97085 302.43362 457.14285 302.43362 curveto -456.31485 302.43362 455.64285 301.76162 455.64285 300.93362 curveto -455.64285 300.10562 456.31485 299.43362 457.14285 299.43362 curveto -457.97085 299.43362 458.64285 300.10562 458.64285 300.93362 curveto -closepath -fill -grestore -grestore -gsave [0 1 -1 0 571.06416 359.41421] concat -gsave -0 0 0 setrgbcolor -newpath -458.64285 306.64789 moveto -458.64285 307.47589 457.97085 308.14789 457.14285 308.14789 curveto -456.31485 308.14789 455.64285 307.47589 455.64285 306.64789 curveto -455.64285 305.81989 456.31485 305.14789 457.14285 305.14789 curveto -457.97085 305.14789 458.64285 305.81989 458.64285 306.64789 curveto -closepath -fill -grestore -grestore -gsave [0 1 -1 0 868.35691 288.59316] concat -0 0 0 setrgbcolor -[] 0 setdash -1 setlinewidth -0 setlinejoin -0 setlinecap -newpath -200 560.70184 moveto -291.42857 560.70184 291.42857 560.70184 291.42857 560.70184 curveto -271.04275 572.4716 271.23234 572.36214 271.23234 572.36214 curveto -271.06826 572.31818 lineto -271.3003 572.08112 lineto -stroke -0 0 0 setrgbcolor -[] 0 setdash -1 setlinewidth -0 setlinejoin -0 setlinecap -newpath -199.92028 559.80452 moveto -291.34885 559.80452 291.34885 559.80452 291.34885 559.80452 curveto -270.96303 548.03476 271.15262 548.14422 271.15262 548.14422 curveto -270.98854 548.18818 lineto -271.22058 548.42524 lineto -stroke -grestore -gsave [0 1 -1 0 785.60917 288.84678] concat -0 0 0 setrgbcolor -[] 0 setdash -1 setlinewidth -0 setlinejoin -0 setlinecap -newpath -200 560.70184 moveto -291.42857 560.70184 291.42857 560.70184 291.42857 560.70184 curveto -271.04275 572.4716 271.23234 572.36214 271.23234 572.36214 curveto -271.06826 572.31818 lineto -271.3003 572.08112 lineto -stroke -0 0 0 setrgbcolor -[] 0 setdash -1 setlinewidth -0 setlinejoin -0 setlinecap -newpath -199.92028 559.80452 moveto -291.34885 559.80452 291.34885 559.80452 291.34885 559.80452 curveto -270.96303 548.03476 271.15262 548.14422 271.15262 548.14422 curveto -270.98854 548.18818 lineto -271.22058 548.42524 lineto -stroke -grestore -gsave [0 1 -1 0 827.63481 618.04794] concat -0 0 0 setrgbcolor -[] 0 setdash -1 setlinewidth -0 setlinejoin -0 setlinecap -newpath -200 560.70184 moveto -291.42857 560.70184 291.42857 560.70184 291.42857 560.70184 curveto -271.04275 572.4716 271.23234 572.36214 271.23234 572.36214 curveto -271.06826 572.31818 lineto -271.3003 572.08112 lineto -stroke -0 0 0 setrgbcolor -[] 0 setdash -1 setlinewidth -0 setlinejoin -0 setlinecap -newpath -199.92028 559.80452 moveto -291.34885 559.80452 291.34885 559.80452 291.34885 559.80452 curveto -270.96303 548.03476 271.15262 548.14422 271.15262 548.14422 curveto -270.98854 548.18818 lineto -271.22058 548.42524 lineto -stroke -grestore -gsave [1.086765 0 0 1.086765 -113.47312 335.97903] concat -gsave -0 0 0 setrgbcolor -newpath -310.24219 294.28188 moveto -323.95312 294.28188 lineto -348.5625 360.37563 lineto -373.17188 294.28188 lineto -386.88281 294.28188 lineto -357.35156 373.03188 lineto -339.77344 373.03188 lineto -310.24219 294.28188 lineto -fill -grestore -grestore -grestore -showpage -%%EOF diff --git a/5-hradla/hradlo_ternbior.svg b/5-hradla/hradlo_ternbior.svg deleted file mode 100644 index 2cfabde..0000000 --- a/5-hradla/hradlo_ternbior.svg +++ /dev/null @@ -1,572 +0,0 @@ - - - - - - - - - - - - - - image/svg+xml - - - - - - &7ý& v - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - I1 - I2 - I3 - O1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - v - diff --git a/5-hradla/hradlo_ternor.eps b/5-hradla/hradlo_ternor.eps deleted file mode 100644 index bd463f6..0000000 --- a/5-hradla/hradlo_ternor.eps +++ /dev/null @@ -1,328 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Creator: inkscape 0.46 -%%Pages: 1 -%%Orientation: Portrait -%%BoundingBox: 177 425 367 799 -%%HiResBoundingBox: 177.07031 425.70869 366.25888 798.86207 -%%EndComments -%%Page: 1 1 -0 842 translate -0.8 -0.8 scale -0 0 0 setrgbcolor -[] 0 setdash -1 setlinewidth -0 setlinejoin -0 setlinecap -gsave [1 0 0 1 0 0] concat -gsave [1.086765 0 0 1.086765 -37.97952 -58.811944] concat -gsave -0 0 0 setrgbcolor -newpath -310.24219 294.28188 moveto -323.95312 294.28188 lineto -348.5625 360.37563 lineto -373.17188 294.28188 lineto -386.88281 294.28188 lineto -357.35156 373.03188 lineto -339.77344 373.03188 lineto -310.24219 294.28188 lineto -fill -grestore -grestore -gsave [0 1 -1 0 0 0] concat -0 0 0 setrgbcolor -[] 0 setdash -2.2 setlinewidth -2 setlinejoin -0 setlinecap -newpath -189.92433 -456.7236 moveto -424.21005 -456.7236 lineto -424.21005 -222.43788 lineto -189.92433 -222.43788 lineto -189.92433 -456.7236 lineto -closepath -stroke -grestore -gsave [0 1 -1 0 646.22862 -32.932823] concat -gsave -0 0 0 setrgbcolor -newpath -458.64285 300.93362 moveto -458.64285 301.76162 457.97085 302.43362 457.14285 302.43362 curveto -456.31485 302.43362 455.64285 301.76162 455.64285 300.93362 curveto -455.64285 300.10562 456.31485 299.43362 457.14285 299.43362 curveto -457.97085 299.43362 458.64285 300.10562 458.64285 300.93362 curveto -closepath -fill -grestore -grestore -gsave [0 1 -1 0 646.22862 -32.932837] concat -gsave -0 0 0 setrgbcolor -newpath -458.64285 306.64789 moveto -458.64285 307.47589 457.97085 308.14789 457.14285 308.14789 curveto -456.31485 308.14789 455.64285 307.47589 455.64285 306.64789 curveto -455.64285 305.81989 456.31485 305.14789 457.14285 305.14789 curveto -457.97085 305.14789 458.64285 305.81989 458.64285 306.64789 curveto -closepath -fill -grestore -grestore -gsave [0 1 -1 0 965.5214 -103.7539] concat -0 0 0 setrgbcolor -[] 0 setdash -1 setlinewidth -0 setlinejoin -0 setlinecap -newpath -200 560.70184 moveto -291.42857 560.70184 291.42857 560.70184 291.42857 560.70184 curveto -271.04275 572.4716 271.23234 572.36214 271.23234 572.36214 curveto -271.06826 572.31818 lineto -271.3003 572.08112 lineto -stroke -0 0 0 setrgbcolor -[] 0 setdash -1 setlinewidth -0 setlinejoin -0 setlinecap -newpath -199.92028 559.80452 moveto -291.34885 559.80452 291.34885 559.80452 291.34885 559.80452 curveto -270.96303 548.03476 271.15262 548.14422 271.15262 548.14422 curveto -270.98854 548.18818 lineto -271.22058 548.42524 lineto -stroke -grestore -gsave [0 1 -1 0 836.77364 -103.50025] concat -0 0 0 setrgbcolor -[] 0 setdash -1 setlinewidth -0 setlinejoin -0 setlinecap -newpath -200 560.70184 moveto -291.42857 560.70184 291.42857 560.70184 291.42857 560.70184 curveto -271.04275 572.4716 271.23234 572.36214 271.23234 572.36214 curveto -271.06826 572.31818 lineto -271.3003 572.08112 lineto -stroke -0 0 0 setrgbcolor -[] 0 setdash -1 setlinewidth -0 setlinejoin -0 setlinecap -newpath -199.92028 559.80452 moveto -291.34885 559.80452 291.34885 559.80452 291.34885 559.80452 curveto -270.96303 548.03476 271.15262 548.14422 271.15262 548.14422 curveto -270.98854 548.18818 lineto -271.22058 548.42524 lineto -stroke -grestore -gsave [0 1 -1 0 902.79931 225.70087] concat -0 0 0 setrgbcolor -[] 0 setdash -1 setlinewidth -0 setlinejoin -0 setlinecap -newpath -200 560.70184 moveto -291.42857 560.70184 291.42857 560.70184 291.42857 560.70184 curveto -271.04275 572.4716 271.23234 572.36214 271.23234 572.36214 curveto -271.06826 572.31818 lineto -271.3003 572.08112 lineto -stroke -0 0 0 setrgbcolor -[] 0 setdash -1 setlinewidth -0 setlinejoin -0 setlinecap -newpath -199.92028 559.80452 moveto -291.34885 559.80452 291.34885 559.80452 291.34885 559.80452 curveto -270.96303 548.03476 271.15262 548.14422 271.15262 548.14422 curveto -270.98854 548.18818 lineto -271.22058 548.42524 lineto -stroke -grestore -gsave [0 1 -1 0 901.35981 -103.20572] concat -0 0 0 setrgbcolor -[] 0 setdash -1 setlinewidth -0 setlinejoin -0 setlinecap -newpath -200 560.70184 moveto -291.42857 560.70184 291.42857 560.70184 291.42857 560.70184 curveto -271.04275 572.4716 271.23234 572.36214 271.23234 572.36214 curveto -271.06826 572.31818 lineto -271.3003 572.08112 lineto -stroke -0 0 0 setrgbcolor -[] 0 setdash -1 setlinewidth -0 setlinejoin -0 setlinecap -newpath -199.92028 559.80452 moveto -291.34885 559.80452 291.34885 559.80452 291.34885 559.80452 curveto -270.96303 548.03476 271.15262 548.14422 271.15262 548.14422 curveto -270.98854 548.18818 lineto -271.22058 548.42524 lineto -stroke -grestore -gsave -0 0 0 setrgbcolor -newpath -265.69061 56.051361 moveto -269.63593 56.051361 lineto -269.63593 85.211517 lineto -265.69061 85.211517 lineto -265.69061 56.051361 lineto -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -278.52264 81.891205 moveto -284.96796 81.891205 lineto -284.96796 59.645111 lineto -277.95624 61.051361 lineto -277.95624 57.457611 lineto -284.92889 56.051361 lineto -288.87421 56.051361 lineto -288.87421 81.891205 lineto -295.31952 81.891205 lineto -295.31952 85.211517 lineto -278.52264 85.211517 lineto -278.52264 81.891205 lineto -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -327.99011 54.311935 moveto -331.93542 54.311935 lineto -331.93542 83.472092 lineto -327.99011 83.472092 lineto -327.99011 54.311935 lineto -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -343.53699 80.151779 moveto -357.30652 80.151779 lineto -357.30652 83.472092 lineto -338.79089 83.472092 lineto -338.79089 80.151779 lineto -340.28828 78.602305 342.32604 76.525484 344.90417 73.92131 curveto -347.49531 71.304135 349.12291 69.617939 349.78699 68.862717 curveto -351.04999 67.443462 351.9289 66.245546 352.42371 65.268967 curveto -352.9315 64.279403 353.18541 63.309351 353.18542 62.35881 curveto -353.18541 60.809354 352.63853 59.546334 351.5448 58.569748 curveto -350.46406 57.593211 349.0513 57.104931 347.30652 57.104904 curveto -346.06953 57.104931 344.76094 57.319774 343.38074 57.749435 curveto -342.01354 58.179148 340.5487 58.830189 338.98621 59.70256 curveto -338.98621 55.718185 lineto -340.57474 55.080193 342.05912 54.598423 343.43933 54.272873 curveto -344.81953 53.947382 346.08255 53.784621 347.22839 53.784592 curveto -350.24921 53.784621 352.65806 54.539829 354.45496 56.050217 curveto -356.25181 57.560659 357.15025 59.578886 357.15027 62.104904 curveto -357.15025 63.302841 356.92238 64.442163 356.46667 65.522873 curveto -356.02395 66.590598 355.21015 67.853618 354.02527 69.311935 curveto -353.69973 69.689553 352.66457 70.783302 350.9198 72.593185 curveto -349.17499 74.39007 346.71406 76.909598 343.53699 80.151779 curveto -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -395.89874 55.790779 moveto -399.84406 55.790779 lineto -399.84406 84.950935 lineto -395.89874 84.950935 lineto -395.89874 55.790779 lineto -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -420.00031 69.228279 moveto -421.88831 69.63194 423.35966 70.471783 424.41437 71.74781 curveto -425.48205 73.023864 426.01591 74.599383 426.01593 76.474373 curveto -426.01591 79.351983 425.02633 81.578543 423.04718 83.15406 curveto -421.068 84.729581 418.2555 85.517341 414.60968 85.517342 curveto -413.38571 85.517341 412.12269 85.393643 410.82062 85.146248 curveto -409.53155 84.911873 408.19692 84.5538 406.81671 84.072029 curveto -406.81671 80.263435 lineto -407.91046 80.90146 409.10837 81.383231 410.41046 81.708748 curveto -411.71254 82.034272 413.07321 82.197032 414.49249 82.197029 curveto -416.96644 82.197032 418.84795 81.708751 420.13702 80.732185 curveto -421.43909 79.755628 422.09013 78.336359 422.09015 76.474373 curveto -422.09013 74.755633 421.48466 73.414489 420.27374 72.450935 curveto -419.07581 71.474386 417.40264 70.986106 415.25421 70.986092 curveto -411.85577 70.986092 lineto -411.85577 67.743904 lineto -415.41046 67.743904 lineto -417.35055 67.743921 418.83493 67.359807 419.86359 66.59156 curveto -420.89222 65.81033 421.40654 64.690539 421.40656 63.232185 curveto -421.40654 61.734813 420.87268 60.588981 419.80499 59.794685 curveto -418.75029 58.98742 417.23336 58.583774 415.25421 58.583748 curveto -414.17347 58.583774 413.01462 58.700962 411.77765 58.93531 curveto -410.54066 59.169711 409.17999 59.534294 407.69562 60.02906 curveto -407.69562 56.513435 lineto -409.19301 56.096798 410.59275 55.784298 411.89484 55.575935 curveto -413.20993 55.367632 414.44691 55.263465 415.60577 55.263435 curveto -418.60055 55.263465 420.97034 55.947058 422.71515 57.314217 curveto -424.45992 58.66841 425.33231 60.504345 425.33234 62.822029 curveto -425.33231 64.436633 424.87008 65.803819 423.94562 66.923592 curveto -423.02112 68.030379 421.70602 68.798608 420.00031 69.228279 curveto -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -384.82266 493.17554 moveto -381.95807 493.17556 379.67942 494.24327 377.98672 496.37866 curveto -376.30703 498.5141 375.46719 501.42425 375.46719 505.10913 curveto -375.46719 508.78102 376.30703 511.68466 377.98672 513.82007 curveto -379.67942 515.95549 381.95807 517.0232 384.82266 517.02319 curveto -387.68723 517.0232 389.95285 515.95549 391.61954 513.82007 curveto -393.2992 511.68466 394.13904 508.78102 394.13907 505.10913 curveto -394.13904 501.42425 393.2992 498.5141 391.61954 496.37866 curveto -389.95285 494.24327 387.68723 493.17556 384.82266 493.17554 curveto -384.82266 489.97241 moveto -388.91118 489.97244 392.17941 491.34614 394.62735 494.09351 curveto -397.07524 496.8279 398.2992 500.49978 398.29922 505.10913 curveto -398.2992 509.70549 397.07524 513.37737 394.62735 516.12476 curveto -392.17941 518.85913 388.91118 520.22632 384.82266 520.22632 curveto -380.72109 520.22632 377.43984 518.85913 374.97891 516.12476 curveto -372.53099 513.39039 371.30704 509.71852 371.30704 505.10913 curveto -371.30704 500.49978 372.53099 496.8279 374.97891 494.09351 curveto -377.43984 491.34614 380.72109 489.97244 384.82266 489.97241 curveto -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -405.50626 516.3396 moveto -411.95157 516.3396 lineto -411.95157 494.09351 lineto -404.93985 495.49976 lineto -404.93985 491.90601 lineto -411.91251 490.49976 lineto -415.85782 490.49976 lineto -415.85782 516.3396 lineto -422.30313 516.3396 lineto -422.30313 519.65991 lineto -405.50626 519.65991 lineto -405.50626 516.3396 lineto -fill -grestore -grestore -showpage -%%EOF diff --git a/5-hradla/hradlo_ternor.svg b/5-hradla/hradlo_ternor.svg deleted file mode 100644 index 0c58a16..0000000 --- a/5-hradla/hradlo_ternor.svg +++ /dev/null @@ -1,202 +0,0 @@ - - - - - - - - - - - image/svg+xml - - - - - - &7ý& v - - - - - - - - - - - - - - - - - - - I1 - I2 - I3 - O1 - - diff --git a/5-hradla/tabulka_skladani_bloku.eps b/5-hradla/tabulka_skladani_bloku.eps index 4b15ea3..2782838 100644 --- a/5-hradla/tabulka_skladani_bloku.eps +++ b/5-hradla/tabulka_skladani_bloku.eps @@ -1,913 +1,373 @@ %!PS-Adobe-3.0 EPSF-3.0 -%%Creator: inkscape 0.46 +%%Creator: cairo 1.8.10 (http://cairographics.org) +%%CreationDate: Fri Nov 18 21:25:21 2011 %%Pages: 1 -%%Orientation: Portrait -%%BoundingBox: 93 480 396 802 -%%HiResBoundingBox: 93.31944 480.99023 395.41877 801.6559 +%%BoundingBox: 0 0 307 321 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 %%EndComments +%%BeginProlog +/cairo_eps_state save def +/dict_count countdictstack def +/op_count count 1 sub def +userdict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/B { fill stroke } bind def +/B* { eofill stroke } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/pdfmark where { pop globaldict /?pdfmark /exec load put } + { globaldict begin /?pdfmark /pop load def /pdfmark + /cleartomark load def end } ifelse +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +%%EndProlog +11 dict begin +/FontType 42 def +/FontName /f-0-0 def +/PaintType 0 def +/FontMatrix [ 1 0 0 1 0 0 ] def +/FontBBox [ 0 0 0 0 ] def +/Encoding 256 array def +0 1 255 { Encoding exch /.notdef put } for +Encoding 1 /uni0020 put +Encoding 2 /uni0030 put +Encoding 3 /uni0031 put +Encoding 4 /uni003C put +Encoding 5 /uni007B put +Encoding 6 /uni0048 put +Encoding 7 /uni0044 put +Encoding 8 /uni0042 put +/CharStrings 9 dict dup begin +/.notdef 0 def +/uni0020 1 def +/uni0030 2 def +/uni0031 3 def +/uni003C 4 def +/uni007B 5 def +/uni0048 6 def +/uni0044 7 def +/uni0042 8 def +end readonly def +/sfnts [ +<00010000000a008000030020636d6170002bf0a7000006e000000050637674209670d2760000 +0730000006306670676d7727a9f500000d60000005b0676c7966fb9628cc000000ac00000634 +68656164ca39f690000013100000003668686561126d0c8b0000134800000024686d7478295b +04b50000136c000000246c6f636100001a8400001390000000286d61787004af0c93000013b8 +0000002070726570ebad71e2000013d800000afd00020100000005000500000300070042b402 +01e40607b802994013000504e403000a0704e4010019080605e40203bc023100090199012e00 +182b10f63cfd3c4e10f43c4dfd3c003f3cfd3c10fc3cfd3c3130211121112521112101000400 +fc2003c0fc400500fb002004c00000020055ffe7041105c00010001d00b5b4062019101cb8ff +f0b202200bbeffe00016ffe00012ffe0000fffe0406204068702880b880fc90e0509070b1802 +45134c154a19431b54135c155c19521b6b076b0b63136c156b19601b79027706760b7a0f8706 +98079610c918da02d606d60bdb0f1a1a1e0405141e0d0d177309402123343009010009100902 +09901f117300b8ffc0400e212334200040000200901ec78b182b10f65d2bed10f65d712bed00 +3fed3fed3130015d71005d003838383838013838381310123633321616121510020623222726 +13101633323611102623220706556bd3a076b274426ad3a1d47991b9a97c7ca9a97e7c4a5d02 +d30104013dac5fb3feffdafefefec3ad98b7019dfe97eff00168016aee698600000100df0000 +02fb05c0000a0073402003400d11346b047f028f02990804ac04010900060502030905010c02 +01ca0a00b8ffc04012212334300001200001001a0c05400d0f3405b8ffc0400e212334300501 +200540050205190bba013c018500182b4e10e45d712b2b10f65d712b3c4dfd3c003f3f173901 +11393130015d005d2b212311060607353636373302fbb441d35497e22f74047b3e7c1fae47ca +5f000001007000e2043b04c30006005a400c8f0380050203050603080205bb025a0006000302 +5ab2024006ba015000020150401500ab01ab2004021a08043c01200001007507575a182b10f6 +5d3ced4e10f600192f1a4dedededed181a10ed10ed01111217393130005d1335011501011570 +03cbfcfe03020281a8019ab3fec4fec1b300000000010039fe51027c05d3002a007b404d470f +0128120f113402120f113407180b0e3425120b0e3416271600292a2a0c1f2520130d250c110d +0c0c1f20ae1b12112505193a1b2526033a05ae2a273a26ae2a2a5f008f000200692b7068182b +10f65d3c10f4e410f4e410fde410fd3c10f43c3c103c003fed3fed12392fed3901123931302b +2b2b2b0171133e0212373e023736333315232206151007060607161615141716163333152322 +272e0202262627394d61200205093148382656381f68440b12575d6e630408415f1f38622c40 +54190220614d0264024f8a014e3554663d100a9d4b82fefa456b742d2ebdd7c32544369d1017 +679e01688a5002000000000100a40000052205ba000b0068b9000dffc0402713153404031e09 +0aa00ad00a020a0502020b08080508200707065d800d010d020b200120000100b8ffc0401513 +1534005d0c200d01200d500d600d700d043b59182b5d7110f62b5d3cfd3c105df63c10fd3c00 +3f3c3f3c395d2f3cfd3c3130012b331133112111331123112111a4c202fac2c2fd0605bafda6 +025afa4602b3fd4d00000002009e0000055a05ba000f001d00844026201f0143081c1d1e0201 +0211101e0f00081726200901091a1f1d102001200001005d1e3b5c182b10f65d3cfd3c10f65d +ed003f3cfd3c3f3cfd3c313043794036031b0708060805080408040619181a1802060b0a0c0a +0d0a030615161416131603061b03172101120e17210118081c2101160a1121002b2b012b2b2a +2a2a2a81015d3311213217161716121514020e022325213236373636353426272623219e01f9 +ab5a7e5974734e7a91cd85feb1013991a531454d976c4eadfecc05ba151d4c62fecfc4a7fefe +a96132ad363145e9a6e6f72a1e0000030096000004e905ba0011001d002a0081405004044623 +562366237309840906691a75057009730b8305830b062716090318272a1e161d090913121e2a +2a2929001c1d1e0201021f1e1e1100081826065425260c1a2c1d1e2001200001005d2b3b5c18 +2b10f65d3cfd3c4e10f64dedf4ed003f3cfd3c3f3cfd3c12392f3c10fd3c392f113911123901 +1217393130015d005d33112132161615140607161615140e0223012132373636353426262321 +112132373e02353426262321960226a8cb736667858f5780c18cfe93013d81384a4b46829efe +db016d5e26435a3a54958cfead05ba59b9655ea63327bc8067b1603103521116664d496f29fb +a0070c386b465279310000000000000200030000000000140001000000000034000400200000 +0004000400010000f008ffff0000f000ffff10000001000000000006001c0000000000090000 +0001000200030004000500060007000805ba001905ba001a05a70019042600180000ffe70000 +ffe80000ffe7fe69ffe805ba0019fe69ffe802ea000000b8000000b80000000000a800ad0169 +00ad00bf00c201f0001800af00b900b400c800170044009c007c009400870006005a00c80089 +005200520005004400940119ffb4002f00a1000300a100cd00170057007e00ba00160118ffe9 +007f008503d300870085000d002200410050006f008d014cff75005c00df04830037004c006e +00700180ff58ff8eff92ffa400a500b903c8fffd000b001a0063006300cdffee05d8ffdc002d +005c0095009900df019209b500400057008000b9039d0072009a035d0401ff67fffa00030021 +007700cd0004004d00cd01c0022b004c006500e70118017c034305d8ffa3ffb0ffc40003001c +005d0068009a00ba013501470221055cff4dffcd0016002d00780080009900b200b600b600b8 +00bd00da010c05f0ffa4fff00019002c0049007f00b400ce01c003fefd81fe3f000000050018 +002900390049006f00be00c700d0012301c1026f050c05320540057affd40014003100550057 +00a700b400e601f7027e027e027f03c60446ff42000e0085009100bf00c200c500e1011a012f +014f01560229026f029e03720008002c00310031006400690089009800c700de012b01b6020c +02cf03a304ab04fb061dfee0ff0e00060026009b009d00c1010d011801200173018201d601e3 +0243025f029b02e2039404a904d20761001c005e006d008d00ab00f7011201380151015b0168 +017c01870191019901cd01d001e802410254026b02ef0368037103bd04420442045304730483 +0586058b06e8fe58fec4fed1fef7ff32ff860051007c008100910095009e00b400b900cf00d9 +00d900df00e20105010b010e010e012001210155017b017b017e018d01a201a801a901b401d0 +01d001e201e901f201f501fb020002000206021b0221022202220223027202770294029c02cf +02cf02d002ec02f903170322032b0335033c0359036f037103870390039003b503e1041a04cf +04ff053205320596059f05a805ab05c205f0060c0782080008ccfca3fd2afddefe00fe88fe96 +feb2feb4ffe100150019001a001c001f003c005100610061006a0078009600a500af00d3010c +0118011a012a013e014c0151015f016a0171017801820184019a01a501a801a901ae01bc01cd +01d701ef0200020d021c02210222022e02350242024f024f025e026502710290029202b402d6 +02fa0307030b030f0315032a0347035d036503740379039603b003cc03dd03e203f603fc03fc +03ff040a041f04220426042b0447045f0475049e04e704e7055c05cb05e5060a066d068606b8 +06f10736073e07500751075d078f07b607d4086000b600c300b500b700000000000000000000 +000001e00381034503b5008e0233041902ce02ce002d005f0064034d023f000002a80188027d +01b402240578063b023b014e00f00426029402c6029f02f6023b034d014b0153006a02310000 +00000000061404aa0000003c04c300ed04bc026502ce03b50078060c017e02ef060c00b20100 +0239000001c50330042b03cb00da03df010704a100db040a011701ed02a70350010b01bd043e +05580021039c00ae0371017d00b5024500000afb088c012b014e01aa00870054013201f803ff +0003024e00b4003703e30083006b02d800ed00770088009701640467008e0033017c00e700a6 +029e0329056e062a061501c90269048a021301b4000204a9000002390124010305140084015d +039a06ef02d9007500cf040a00de03ac04bc02cf02ae034d04f005520168006d007d00860071 +ff810079055804d2016700030156002504e00094007c033204210094007f0072005c002f00b6 +001800ba00b80041034d00720018001f004c016a01550099009a009a009800b2000400780069 +00140057006e00ce00b4065402b80067050e016500e7000004cbfe52005affa60099ff67006e +ff92002dffd40087ff7c00b800a800e5008f00a80185fe7b0070001e00d900de014c054602cf +0546ff2d028a02d90253029600b700000000000000000000000000000125011800ea00ea00ae +0046003e05bb008a04d70053003fff8cffd500150028002200990062004a00e4006d00ee00e5 +004803c00033fe4e02b1ff460370007905df0051ffa7ff1f010a0068ff6c004f00bc00a50705 +0061072b404141403f3e3d3c3b3a3938373534333231302f2e2d2c2b2a292827262524232221 +201f1e1d1c1b1a191817161514131211100f0e0d0c0b0a090807060504030201002c45234660 +20b02660b004262348482d2c452346236120b02661b004262348482d2c45234660b0206120b0 +4660b004262348482d2c4523462361b0206020b02661b02061b004262348482d2c45234660b0 +406120b06660b004262348482d2c4523462361b0406020b02661b04061b004262348482d2c01 +10203c003c2d2c20452320b0cd442320b8015a51582320b08d44235920b0ed51582320b04d44 +235920b09051582320b00d44235921212d2c20204518684420b001602045b04676688a456044 +2d2c01b10b0a432343650a2d2c00b10a0b4323430b2d2c00b0172370b101173e01b0172370b1 +0217453ab10200080d2d2c45b01a234445b01923442d2c2045b00325456164b050515845441b +2121592d2cb00143632362b0002342b00f2b2d2c2045b0004360442d2c01b00643b00743650a +2d2c2069b04061b0008b20b12cc08a8cb8100062602b0c642364615c58b00361592d2c45b011 +2bb0172344b0177ae4182d2c45b0112bb01723442d2cb01243588745b0112bb0172344b0177a +e41b038a45186920b01723448a8a8720b0a05158b0112bb0172344b0177ae41b21b0177ae459 +59182d2c2d2cb0022546608a46b040618c482d2c4b53205c58b002855958b00185592d2c20b0 +032545b019234445b01a23444565234520b00325606a20b009234223688a6a606120b01a8ab0 +00527921b21a1a40b9ffe0001a45208a54582321b03f1b235961441cb114008a5279b3194020 +1945208a54582321b03f1b235961442d2cb110114323430b2d2cb10e0f4323430b2d2cb10c0d +4323430b2d2cb10c0d432343650b2d2cb10e0f432343650b2d2cb11011432343650b2d2c4b52 +5845441b2121592d2c0120b003252349b04060b0206320b000525823b002253823b002256538 +008a63381b212121212159012d2c4bb06451584569b00943608a103a1b212121592d2c01b005 +251023208af500b0016023edec2d2c01b005251023208af500b0016123edec2d2c01b0062510 +f500edec2d2c20b001600110203c003c2d2c20b001610110203c003c2d2cb02b2bb02a2a2d2c +00b00743b006430b2d2c3eb02a2a2d2c352d2c76b8022323701020b802234520b0005058b001 +61593a2f182d2c21210c6423648bb84000622d2c21b08051580c6423648bb82000621bb20040 +2f2b59b002602d2c21b0c051580c6423648bb81555621bb200802f2b59b002602d2c0c642364 +8bb84000626023212d2cb4000100000015b00826b00826b00826b008260f10161345683ab001 +162d2cb4000100000015b00826b00826b00826b008260f1016134568653ab001162d2c4b5323 +4b515a5820458a60441b2121592d2c4b545820458a60441b2121592d2c4b53234b515a58381b +2121592d2c4b5458381b2121592d2cb0134358031b02592d2cb0134358021b03592d2c4b54b0 +12435c5a58381b2121592d2cb012435c580cb00425b00425060c6423646164b807085158b004 +25b00425012046b01060482046b0106048590a21211b2121592d2cb012435c580cb00425b004 +25060c6423646164b807085158b00425b00425012046b8fff060482046b8fff06048590a2121 +1b2121592d2c4b53234b515a58b03a2b1b2121592d2c4b53234b515a58b03b2b1b2121592d2c +4b53234b515ab012435c5a58381b2121592d2c0c8a034b54b00426024b545a8a8a0ab012435c +5a58381b2121592d2c4b5258b00425b0042549b00425b00425496120b0005458212043b00055 +58b00325b00325b8ffc038b8ffc038591bb04054582043b0005458b00225b8ffc038591b2043 +b0005458b00325b00325b8ffc038b8ffc0381bb00325b8ffc03859595959212121212d2c4623 +46608a8a462320468a608a61b8ff8062232010238ab902c202c28a70456020b0005058b00161 +b8ffba8b1bb0468c59b0106068013a2d000100000002d1ec99f05fc45f0f3cf5081b08000000 +0000a2e3272a00000000b53db2c8faaffd67103a084c00000009000100010000000000010000 +073efe4e00431000faaffe33103a000100000000000000000000000000000009060001000239 +000004730055047300df04ac007002ac003905c700a405c7009e05560096000000000000006c +0000006c0000018800000228000002ac000003ac000004440000052c00000634000100000009 +0100003f0063000500020010002f00420000040c0afd000300024123000f031700ef031700ff +03170003001f0317002f0317004f0317005f0317008f0317009f03170006000f0317005f0317 +006f0317007f031700bf031700f00317000600400317b2923340b80317b28b3340b80317b36a +6c3240b80317b2613340b80317b35c5d3240b80317b357593240b80317b34d513240b80317b3 +44493240b80317b23a3340b80317b331343240b80317b32e423240b80317b3272c3240b80317 +b312253280b80317b30a0d32c04116031600d00316000200700316000102c4000f0101001f00 +a0031500b0031500020306000f0101001f00400312b32426329fbf0304000103020301006400 +1fffc00301b20d1132410a02ff02ef0012001f02ee02ed0064001fffc002edb30e11329f414a +02e200af02e200bf02e2000302e202e202e102e1007f02e00001000f02e0003f02e0009f02e0 +00bf02e000cf02e000ef02e0000602e002e002df02df02de02de000f02dd002f02dd003f02dd +005f02dd009f02dd00bf02dd00ef02dd000702dd02dd001002dc0001000002dc0001001002dc +003f02dc000202dc02dc001002db000102db02db000f02da000102da02daffc002d3b2373932 +b9ffc002d3b22b2f32b9ffc002d3b21f2532b9ffc002d3b2171b32b9ffc002d3b2121632b802 +d2b2f9291fb802e3b3202b1fa0413002d400b002d40002000002d4001002d4002002d4005002 +d4006002d4007002d40006006002d6007002d6008002d6009002d600a002d600b002d6000600 +0002d6001002d6002002ca002002cc002002d6003002d6004002d6005002d6000802d0b2202b +1fb802cfb226421f411602ce02c70017001f02cd02c80017001f02cc02c60017001f02cb02c5 +0017001f02c902c5001e001f02ca02c6b21e1f00410b02c6000002c7001002c6001002c7002f +02c5000502c1b324121fff411102bf0001001f02bf002f02bf003f02bf004f02bf005f02bf00 +8f02bf000602bf0222b2641f12410b02bb00ca0800001f02b200e90800001f02a600a2080040 +6a1f4026434932402043493240263a3d3240203a3d329f209f26024026969932402096993240 +268e923240208e92324026848c324020848c3240267a813240207a813240266c763240206c76 +324026646a324020646a3240265a5f3240205a5f3240264f543240204f5432b8029eb724271f +374f6b0120410f0277003002770040027700500277000402770277027700f90400001f029bb2 +2a2a1fb8029a402b292a1f80ba0180bc0180520180a201806501807e01808101803c01805e01 +802b01801c01801e0180400180bb0138000100800140b40180400180bb013800010080013940 +180180ca0180ad018073018026018025018024018020013740b80221b2493340b80221b24533 +40b80221b341423240b80221b33d3e320f410f0221003f0221007f0221000300bf022100cf02 +2100ff0221000300400221b320223240b80221b3191e3240b80222b32a3f3240b80221b32e3a +326f414802c3007f02c3008f02c300df02c30004002f02c3006002c300cf02c30003000f02c3 +003f02c3005f02c300c002c300ef02c300ff02c3000600df02220001008f02220001000f0222 +002f0222003f0222005f0222007f022200ef0222000600bf022100ef02210002006f0221007f +022100af02210003002f0221003f0221004f0221000302c302c30222022202210221401d101c +102b1048038f1c010f1e014f1eff1e023700161600000012110811b8010db6f70df8f70d0009 +4109028e028f001d001f0290028f001d001f028fb2f91d1fb80198b226bb1f41150197001e04 +01001f013900260125001f013800730401001f0135001c0801001f0134001c02ab001f0132b2 +1c561fb8010fb2262c1fba010e001e0401b61ff91ce41fe91cb80201b61fe81cbb1fd720b804 +01b21fd51cb802abb61fd41c891fc92fb80801b21fbc26b80101b21fba20b80201b61fb91c38 +1fadcab80401b21f8126b8019ab21f7e26b8019ab61f7d1c471f6b1cb80401b21f6526b8019a +b21f5e73b80401400f1f52265a1f481c891f441c621f4073b80801b61f3f1c5e1f3c26b8019a +b21f351cb80401b61f301cbb1f2b1cb80401b61f2a1c561f291cb80101b21f231eb80401b21f +5537b80168402c07960758074f07360732072c0721071f071d071b071408120810080e080c08 +0a080808060804080208000814b8ffe0402b0000010014061000000100060400000100041000 +0001001002000001000200000001000002010802004a00b013034b024b5342014bb0c063004b +6220b0f65323b8010a515ab005234201b0124b004b5442b0382b4bb807ff52b0372b4bb00750 +5b58b101018e59b0382bb00288b801005458b801ffb101018e851bb0124358b900010111858d +1bb900010128858d5959001816763f183f123e113946443e113946443e113946443e11394644 +3e11394660443e11394660442b2b2b2b2b2b2b2b2b2b2b182b2b2b2b2b2b2b2b2b2b2b182b1d +b0964b5358b0aa1d59b0324b5358b0ff1d594bb09353205c58b901f201f04544b901f101f045 +445958b9033e01f2455258b901f2033e4459594bb8015653205c58b9002001f14544b9002601 +f145445958b9081e0020455258b90020081e4459594bb8019a53205c58b9002501f24544b900 +2401f245445958b909090025455258b9002509094459594bb8040153205c58b173244544b124 +2445445958b917200073455258b9007317204459594bb8040153205c58b1ca254544b1252545 +445958b9168000ca455258b900ca16804459594bb03e53205c58b11c1c4544b11e1c45445958 +b9011a001c455258b9001c011a4459594bb05653205c58b11c1c4544b12f1c45445958b90189 +001c455258b9001c01894459594bb8030153205c58b11c1c4544b11c1c45445958b90de0001c +455258b9001c0de04459592b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b65422b2b01b33b59635c456523456023456560234560b08b +766818b080622020b163594565234520b003266062636820b003266165b059236544b0632344 +20b13b5c4565234520b003266062636820b003266165b05c236544b03b2344b1005c455458b1 +5c406544b23b403b4523614459b347503437456523456023456560234560b089766818b08062 +2020b134504565234520b003266062636820b003266165b050236544b034234420b147374565 +234520b003266062636820b003266165b037236544b0472344b10037455458b137406544b247 +40474523614459004b5342014b5058b108004259435c58b108004259b3020b0a124358601b21 +59421610703eb0124358b93b21187e1bba040001a8000b2b59b00c2342b00d2342b0124358b9 +2d412d411bba04000400000b2b59b00e2342b00f2342b0124358b9187e3b211bba01a8040000 +0b2b59b0102342b0112342002b7475737500184569444569444569447373737374757374752b +2b2b2b74752b2b2b2b2b737373737373737373737373737373737373737373737373732b2b2b +45b0406144737400004bb02a534bb03f515a58b1070745b040604459004bb03a534bb03f515a +58b10b0b45b8ffc0604459004bb02e534bb03a515a58b1030345b040604459004bb02e534bb0 +3c515a58b1090945b8ffc06044592b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b752b2b2b2b2b +2b2b435c58b9008002bbb301401e017400735903b01e4b5402b0124b545ab012435c5a58ba00 +9f02220001007359002b7473012b01732b2b2b2b2b2b2b2b737373732b002b2b2b2b2b2b0045 +69447345694473456944737475456944734569444569444569447374456944456944732b2b2b +2b2b732b002b732b74752b2b2b2b2b2b2b2b2b2b2b2b2b2b73747500000000> +] def +FontName currentdict end definefont pop %%Page: 1 1 -0 842 translate -0.8 -0.8 scale -0 0 0 setrgbcolor -[] 0 setdash -1 setlinewidth -0 setlinejoin -0 setlinecap -gsave [1 0 0 1 0 0] concat -gsave [1 0 0 1 66 48] concat -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -202.87891 212.71071 moveto -202.8789 209.32531 203.22396 206.60396 203.91406 204.54665 curveto -204.61718 202.47636 205.65234 200.88131 207.01953 199.76149 curveto -208.39973 198.64173 210.1315 198.08184 212.21484 198.08181 curveto -213.75129 198.08184 215.09894 198.39434 216.25781 199.01931 curveto -217.41665 199.63131 218.37368 200.52324 219.12891 201.69509 curveto -219.8841 202.85397 220.47654 204.27324 220.90625 205.9529 curveto -221.33592 207.61959 221.55076 209.87219 221.55078 212.71071 curveto -221.55076 216.0701 221.20571 218.78494 220.51562 220.85524 curveto -219.8255 222.91254 218.79035 224.50759 217.41016 225.6404 curveto -216.04295 226.76019 214.31118 227.32009 212.21484 227.32009 curveto -209.45442 227.32009 207.28645 226.33051 205.71094 224.35134 curveto -203.82291 221.96853 202.8789 218.08833 202.87891 212.71071 curveto -206.49219 212.71071 moveto -206.49218 217.41124 207.03906 220.54275 208.13281 222.10524 curveto -209.23958 223.65473 210.60025 224.42947 212.21484 224.42946 curveto -213.82941 224.42947 215.18358 223.64822 216.27734 222.08571 curveto -217.3841 220.52322 217.93748 217.39822 217.9375 212.71071 curveto -217.93748 207.99719 217.3841 204.86568 216.27734 203.31618 curveto -215.18358 201.76673 213.81639 200.99199 212.17578 200.99196 curveto -210.56119 200.99199 209.27213 201.67558 208.30859 203.04274 curveto -207.09765 204.78756 206.49218 208.01021 206.49219 212.71071 curveto -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -293.85547 226.83181 moveto -290.33984 226.83181 lineto -290.33984 204.42946 lineto -289.49348 205.23678 288.3802 206.04407 287 206.85134 curveto -285.63281 207.65865 284.40234 208.26412 283.30859 208.66774 curveto -283.30859 205.26931 lineto -285.27473 204.34485 286.99348 203.22506 288.46484 201.90993 curveto -289.93619 200.59485 290.97785 199.31881 291.58984 198.08181 curveto -293.85547 198.08181 lineto -293.85547 226.83181 lineto -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -358.875 214.31228 moveto -358.875 211.03103 lineto -377.83984 203.02321 lineto -377.83984 206.51931 lineto -362.80078 212.69118 lineto -377.83984 218.92165 lineto -377.83984 222.41774 lineto -358.875 214.31228 lineto -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -125.22266 262.71071 moveto -125.22265 259.32531 125.56771 256.60396 126.25781 254.54665 curveto -126.96093 252.47636 127.99609 250.88131 129.36328 249.76149 curveto -130.74348 248.64173 132.47525 248.08184 134.55859 248.08181 curveto -136.09504 248.08184 137.44269 248.39434 138.60156 249.01931 curveto -139.7604 249.63131 140.71743 250.52324 141.47266 251.69509 curveto -142.22785 252.85397 142.82029 254.27324 143.25 255.9529 curveto -143.67967 257.61959 143.89451 259.87219 143.89453 262.71071 curveto -143.89451 266.0701 143.54946 268.78494 142.85938 270.85524 curveto -142.16925 272.91254 141.1341 274.50759 139.75391 275.6404 curveto -138.3867 276.76019 136.65493 277.32009 134.55859 277.32009 curveto -131.79817 277.32009 129.6302 276.33051 128.05469 274.35134 curveto -126.16666 271.96853 125.22265 268.08833 125.22266 262.71071 curveto -128.83594 262.71071 moveto -128.83593 267.41124 129.38281 270.54275 130.47656 272.10524 curveto -131.58333 273.65473 132.944 274.42947 134.55859 274.42946 curveto -136.17316 274.42947 137.52733 273.64822 138.62109 272.08571 curveto -139.72785 270.52322 140.28123 267.39822 140.28125 262.71071 curveto -140.28123 257.99719 139.72785 254.86568 138.62109 253.31618 curveto -137.52733 251.76673 136.16014 250.99199 134.51953 250.99196 curveto -132.90494 250.99199 131.61588 251.67558 130.65234 253.04274 curveto -129.4414 254.78756 128.83593 258.01021 128.83594 262.71071 curveto -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -202.95703 262.71071 moveto -202.95703 259.32531 203.30208 256.60396 203.99219 254.54665 curveto -204.69531 252.47636 205.73046 250.88131 207.09766 249.76149 curveto -208.47786 248.64173 210.20963 248.08184 212.29297 248.08181 curveto -213.82941 248.08184 215.17707 248.39434 216.33594 249.01931 curveto -217.49478 249.63131 218.45181 250.52324 219.20703 251.69509 curveto -219.96222 252.85397 220.55467 254.27324 220.98438 255.9529 curveto -221.41404 257.61959 221.62889 259.87219 221.62891 262.71071 curveto -221.62889 266.0701 221.28383 268.78494 220.59375 270.85524 curveto -219.90363 272.91254 218.86847 274.50759 217.48828 275.6404 curveto -216.12108 276.76019 214.38931 277.32009 212.29297 277.32009 curveto -209.53254 277.32009 207.36458 276.33051 205.78906 274.35134 curveto -203.90104 271.96853 202.95703 268.08833 202.95703 262.71071 curveto -206.57031 262.71071 moveto -206.57031 267.41124 207.11718 270.54275 208.21094 272.10524 curveto -209.3177 273.65473 210.67838 274.42947 212.29297 274.42946 curveto -213.90754 274.42947 215.2617 273.64822 216.35547 272.08571 curveto -217.46222 270.52322 218.01561 267.39822 218.01562 262.71071 curveto -218.01561 257.99719 217.46222 254.86568 216.35547 253.31618 curveto -215.2617 251.76673 213.89452 250.99199 212.25391 250.99196 curveto -210.63931 250.99199 209.35025 251.67558 208.38672 253.04274 curveto -207.17578 254.78756 206.57031 258.01021 206.57031 262.71071 curveto -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -280.69141 262.71071 moveto -280.6914 259.32531 281.03646 256.60396 281.72656 254.54665 curveto -282.42968 252.47636 283.46484 250.88131 284.83203 249.76149 curveto -286.21223 248.64173 287.944 248.08184 290.02734 248.08181 curveto -291.56379 248.08184 292.91144 248.39434 294.07031 249.01931 curveto -295.22915 249.63131 296.18618 250.52324 296.94141 251.69509 curveto -297.6966 252.85397 298.28904 254.27324 298.71875 255.9529 curveto -299.14842 257.61959 299.36326 259.87219 299.36328 262.71071 curveto -299.36326 266.0701 299.01821 268.78494 298.32812 270.85524 curveto -297.638 272.91254 296.60285 274.50759 295.22266 275.6404 curveto -293.85545 276.76019 292.12368 277.32009 290.02734 277.32009 curveto -287.26692 277.32009 285.09895 276.33051 283.52344 274.35134 curveto -281.63541 271.96853 280.6914 268.08833 280.69141 262.71071 curveto -284.30469 262.71071 moveto -284.30468 267.41124 284.85156 270.54275 285.94531 272.10524 curveto -287.05208 273.65473 288.41275 274.42947 290.02734 274.42946 curveto -291.64191 274.42947 292.99608 273.64822 294.08984 272.08571 curveto -295.1966 270.52322 295.74998 267.39822 295.75 262.71071 curveto -295.74998 257.99719 295.1966 254.86568 294.08984 253.31618 curveto -292.99608 251.76673 291.62889 250.99199 289.98828 250.99196 curveto -288.37369 250.99199 287.08463 251.67558 286.12109 253.04274 curveto -284.91015 254.78756 284.30468 258.01021 284.30469 262.71071 curveto -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -358.42578 262.71071 moveto -358.42578 259.32531 358.77083 256.60396 359.46094 254.54665 curveto -360.16406 252.47636 361.19921 250.88131 362.56641 249.76149 curveto -363.94661 248.64173 365.67838 248.08184 367.76172 248.08181 curveto -369.29816 248.08184 370.64582 248.39434 371.80469 249.01931 curveto -372.96353 249.63131 373.92056 250.52324 374.67578 251.69509 curveto -375.43097 252.85397 376.02342 254.27324 376.45312 255.9529 curveto -376.88279 257.61959 377.09764 259.87219 377.09766 262.71071 curveto -377.09764 266.0701 376.75258 268.78494 376.0625 270.85524 curveto -375.37238 272.91254 374.33722 274.50759 372.95703 275.6404 curveto -371.58983 276.76019 369.85806 277.32009 367.76172 277.32009 curveto -365.00129 277.32009 362.83333 276.33051 361.25781 274.35134 curveto -359.36979 271.96853 358.42578 268.08833 358.42578 262.71071 curveto -362.03906 262.71071 moveto -362.03906 267.41124 362.58593 270.54275 363.67969 272.10524 curveto -364.78645 273.65473 366.14713 274.42947 367.76172 274.42946 curveto -369.37629 274.42947 370.73045 273.64822 371.82422 272.08571 curveto -372.93097 270.52322 373.48436 267.39822 373.48438 262.71071 curveto -373.48436 257.99719 372.93097 254.86568 371.82422 253.31618 curveto -370.73045 251.76673 369.36327 250.99199 367.72266 250.99196 curveto -366.10806 250.99199 364.819 251.67558 363.85547 253.04274 curveto -362.64453 254.78756 362.03906 258.01021 362.03906 262.71071 curveto -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -138.46484 326.83181 moveto -134.94922 326.83181 lineto -134.94922 304.42946 lineto -134.10285 305.23678 132.98957 306.04407 131.60938 306.85134 curveto -130.24218 307.65865 129.01171 308.26412 127.91797 308.66774 curveto -127.91797 305.26931 lineto -129.88411 304.34485 131.60286 303.22506 133.07422 301.90993 curveto -134.54556 300.59485 135.58723 299.31881 136.19922 298.08181 curveto -138.46484 298.08181 lineto -138.46484 326.83181 lineto -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -216.19922 326.83181 moveto -212.68359 326.83181 lineto -212.68359 304.42946 lineto -211.83723 305.23678 210.72395 306.04407 209.34375 306.85134 curveto -207.97656 307.65865 206.74609 308.26412 205.65234 308.66774 curveto -205.65234 305.26931 lineto -207.61848 304.34485 209.33723 303.22506 210.80859 301.90993 curveto -212.27994 300.59485 213.3216 299.31881 213.93359 298.08181 curveto -216.19922 298.08181 lineto -216.19922 326.83181 lineto -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -293.93359 326.83181 moveto -290.41797 326.83181 lineto -290.41797 304.42946 lineto -289.5716 305.23678 288.45832 306.04407 287.07812 306.85134 curveto -285.71093 307.65865 284.48046 308.26412 283.38672 308.66774 curveto -283.38672 305.26931 lineto -285.35286 304.34485 287.07161 303.22506 288.54297 301.90993 curveto -290.01431 300.59485 291.05598 299.31881 291.66797 298.08181 curveto -293.93359 298.08181 lineto -293.93359 326.83181 lineto -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -371.66797 326.83181 moveto -368.15234 326.83181 lineto -368.15234 304.42946 lineto -367.30598 305.23678 366.1927 306.04407 364.8125 306.85134 curveto -363.44531 307.65865 362.21484 308.26412 361.12109 308.66774 curveto -361.12109 305.26931 lineto -363.08723 304.34485 364.80598 303.22506 366.27734 301.90993 curveto -367.74869 300.59485 368.79035 299.31881 369.40234 298.08181 curveto -371.66797 298.08181 lineto -371.66797 326.83181 lineto -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -125.75 364.31228 moveto -125.75 361.03103 lineto -144.71484 353.02321 lineto -144.71484 356.51931 lineto -129.67578 362.69118 lineto -144.71484 368.92165 lineto -144.71484 372.41774 lineto -125.75 364.31228 lineto -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -204.05078 362.71071 moveto -204.05078 359.32531 204.39583 356.60396 205.08594 354.54665 curveto -205.78906 352.47636 206.82421 350.88131 208.19141 349.76149 curveto -209.57161 348.64173 211.30338 348.08184 213.38672 348.08181 curveto -214.92316 348.08184 216.27082 348.39434 217.42969 349.01931 curveto -218.58853 349.63131 219.54556 350.52324 220.30078 351.69509 curveto -221.05597 352.85397 221.64842 354.27324 222.07812 355.9529 curveto -222.50779 357.61959 222.72264 359.87219 222.72266 362.71071 curveto -222.72264 366.0701 222.37758 368.78494 221.6875 370.85524 curveto -220.99738 372.91254 219.96222 374.50759 218.58203 375.6404 curveto -217.21483 376.76019 215.48306 377.32009 213.38672 377.32009 curveto -210.62629 377.32009 208.45833 376.33051 206.88281 374.35134 curveto -204.99479 371.96853 204.05078 368.08833 204.05078 362.71071 curveto -207.66406 362.71071 moveto -207.66406 367.41124 208.21093 370.54275 209.30469 372.10524 curveto -210.41145 373.65473 211.77213 374.42947 213.38672 374.42946 curveto -215.00129 374.42947 216.35545 373.64822 217.44922 372.08571 curveto -218.55597 370.52322 219.10936 367.39822 219.10938 362.71071 curveto -219.10936 357.99719 218.55597 354.86568 217.44922 353.31618 curveto -216.35545 351.76673 214.98827 350.99199 213.34766 350.99196 curveto -211.73306 350.99199 210.444 351.67558 209.48047 353.04274 curveto -208.26953 354.78756 207.66406 358.01021 207.66406 362.71071 curveto -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -295.02734 376.83181 moveto -291.51172 376.83181 lineto -291.51172 354.42946 lineto -290.66535 355.23678 289.55207 356.04407 288.17188 356.85134 curveto -286.80468 357.65865 285.57421 358.26412 284.48047 358.66774 curveto -284.48047 355.26931 lineto -286.44661 354.34485 288.16536 353.22506 289.63672 351.90993 curveto -291.10806 350.59485 292.14973 349.31881 292.76172 348.08181 curveto -295.02734 348.08181 lineto -295.02734 376.83181 lineto -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -360.04688 364.31228 moveto -360.04688 361.03103 lineto -379.01172 353.02321 lineto -379.01172 356.51931 lineto -363.97266 362.69118 lineto -379.01172 368.92165 lineto -379.01172 372.41774 lineto -360.04688 364.31228 lineto -fill -grestore -grestore -0 0 0 setrgbcolor -[] 0 setdash -1 setlinewidth -0 setlinejoin -0 setlinecap -newpath -240.6836 226.94418 moveto -240.6836 450.6244 lineto -stroke -0 0 0 setrgbcolor -[] 0 setdash -1.0000001 setlinewidth -0 setlinejoin -0 setlinecap -newpath -172.48815 285.9408 moveto -475.25555 285.9408 lineto -stroke -gsave [0.5554683 0 0 1.8002828 0 0] concat -gsave -0 0 0 setrgbcolor -newpath -277.21404 197.90007 moveto -279.30938 197.84567 281.01015 197.28782 282.31634 196.22652 curveto -283.64974 195.13805 284.53414 193.65498 284.96954 191.77731 curveto -285.40493 189.89969 285.63623 186.68865 285.66346 182.14416 curveto -285.69066 177.59975 285.77229 174.6064 285.90837 173.1641 curveto -286.15327 170.87832 286.60227 169.04149 287.25537 167.65361 curveto -287.93567 166.26584 288.76564 165.16375 289.7453 164.34732 curveto -290.72493 163.5038 291.97669 162.86431 293.50059 162.42886 curveto -294.53464 162.15679 296.2218 162.02073 298.56208 162.02067 curveto -300.84791 162.02067 lineto -300.84791 168.42916 lineto -299.58254 168.42916 lineto -296.75244 168.42922 294.87479 168.94625 293.9496 169.98027 curveto -293.02436 170.98717 292.56175 173.2594 292.56177 176.79694 curveto -292.56175 183.9266 292.41209 188.43023 292.11277 190.30784 curveto -291.62293 193.21959 290.77935 195.4646 289.58203 197.04288 curveto -288.41188 198.62122 286.56145 200.02265 284.03072 201.24718 curveto -287.02406 202.49897 289.18743 204.41743 290.52085 207.00258 curveto -291.88145 209.56055 292.56175 213.76484 292.56177 219.61548 curveto -292.56175 224.92187 292.61618 228.07849 292.72504 229.08535 curveto -292.94272 230.93578 293.48697 232.22836 294.35778 232.9631 curveto -295.25577 233.69782 296.99735 234.06519 299.58254 234.0652 curveto -300.84791 234.0652 lineto -300.84791 240.47369 lineto -298.56208 240.47369 lineto -295.89525 240.47368 293.96318 240.25598 292.76586 239.8206 curveto -291.02426 239.1947 289.58201 238.17424 288.43911 236.75922 curveto -287.29618 235.37138 286.54784 233.60258 286.1941 231.45282 curveto -285.86754 229.30304 285.69066 225.77906 285.66346 220.88085 curveto -285.63623 215.98264 285.40493 212.59472 284.96954 210.71706 curveto -284.53414 208.83942 283.64974 207.35636 282.31634 206.26785 curveto -281.01015 205.17938 279.30938 204.60792 277.21404 204.55348 curveto -277.21404 197.90007 lineto -fill -grestore -grestore -gsave [0 0.5176729 -1.9317218 0 0 0] concat -gsave -0 0 0 setrgbcolor -newpath -423.3999 -188.79749 moveto -425.64822 -188.85586 427.47316 -189.45444 428.87473 -190.59324 curveto -430.30547 -191.76117 431.25444 -193.35252 431.72163 -195.36728 curveto -432.18881 -197.38198 432.437 -200.82747 432.46621 -205.70375 curveto -432.4954 -210.57995 432.583 -213.79184 432.729 -215.33944 curveto -432.99178 -217.79211 433.47357 -219.76304 434.17436 -221.25225 curveto -434.90432 -222.74134 435.79489 -223.9239 436.84607 -224.79994 curveto -437.89722 -225.70505 439.24038 -226.39122 440.87554 -226.85847 curveto -441.98508 -227.1504 443.79542 -227.29639 446.30657 -227.29646 curveto -448.75929 -227.29646 lineto -448.75929 -220.42008 lineto -447.40153 -220.42008 lineto -444.36481 -220.42002 442.35007 -219.86524 441.35733 -218.75573 curveto -440.36454 -217.67531 439.86815 -215.23719 439.86817 -211.44137 curveto -439.86815 -203.79117 439.70756 -198.95873 439.38639 -196.94403 curveto -438.86079 -193.8197 437.95562 -191.41078 436.67088 -189.71726 curveto -435.4153 -188.02369 433.42977 -186.51994 430.71427 -185.20601 curveto -433.92615 -183.86283 436.24747 -181.8043 437.67824 -179.03041 curveto -439.13818 -176.28568 439.86815 -171.77443 439.86817 -165.49664 curveto -439.86815 -159.80282 439.92655 -156.41574 440.04337 -155.33537 curveto -440.27694 -153.34984 440.86092 -151.96288 441.79531 -151.1745 curveto -442.75886 -150.38614 444.6276 -149.99195 447.40153 -149.99194 curveto -448.75929 -149.99194 lineto -448.75929 -143.11556 lineto -446.30657 -143.11556 lineto -443.44504 -143.11558 441.3719 -143.34917 440.08717 -143.81633 curveto -438.21841 -144.48793 436.67086 -145.58289 435.44452 -147.10123 curveto -434.21814 -148.5904 433.41517 -150.48833 433.03559 -152.79505 curveto -432.68519 -155.10178 432.4954 -158.88305 432.46621 -164.13888 curveto -432.437 -169.39471 432.18881 -173.02999 431.72163 -175.04473 curveto -431.25444 -177.05945 430.30547 -178.6508 428.87473 -179.81878 curveto -427.47316 -180.98672 425.64822 -181.5999 423.3999 -181.65832 curveto -423.3999 -188.79749 lineto -fill -grestore -grestore -gsave -0 0 0 setrgbcolor -newpath -116.6493 375.42725 moveto -127.64539 346.79443 lineto -131.72742 346.79443 lineto -143.44617 375.42725 lineto -139.12977 375.42725 lineto -135.78992 366.75537 lineto -123.81727 366.75537 lineto -120.67274 375.42725 lineto -116.6493 375.42725 lineto -124.91102 363.66943 moveto -134.61805 363.66943 lineto -131.62977 355.73975 lineto -130.7183 353.33091 130.04121 351.35175 129.59852 349.80225 curveto -129.23392 351.63821 128.7196 353.46112 128.05555 355.271 curveto -124.91102 363.66943 lineto -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -347.16019 211.327 moveto -347.16019 182.69418 lineto -357.90237 182.69418 lineto -360.08986 182.69421 361.84116 182.98718 363.15628 183.57309 curveto -364.48439 184.14603 365.51954 185.03796 366.26175 186.24887 curveto -367.01693 187.44681 367.39454 188.70332 367.39456 190.0184 curveto -367.39454 191.24238 367.06251 192.39472 366.39847 193.47543 curveto -365.73438 194.55618 364.73178 195.42857 363.39066 196.09262 curveto -365.12241 196.60045 366.45053 197.46633 367.37503 198.69028 curveto -368.31251 199.91425 368.78126 201.35956 368.78128 203.02621 curveto -368.78126 204.36737 368.4948 205.61737 367.92191 206.77621 curveto -367.36199 207.92205 366.66537 208.80747 365.83206 209.43246 curveto -364.99871 210.05747 363.95053 210.53273 362.68753 210.85825 curveto -361.43751 211.17075 359.90106 211.327 358.07816 211.327 curveto -347.16019 211.327 lineto -350.94925 194.72543 moveto -357.14066 194.72543 lineto -358.82033 194.72545 360.02475 194.61477 360.75394 194.3934 curveto -361.71746 194.10696 362.44012 193.6317 362.92191 192.96762 curveto -363.41668 192.30358 363.66407 191.47024 363.66409 190.46762 curveto -363.66407 189.51712 363.43621 188.68379 362.9805 187.96762 curveto -362.52475 187.23848 361.87371 186.74369 361.02737 186.48325 curveto -360.181 186.20983 358.72918 186.07311 356.67191 186.07309 curveto -350.94925 186.07309 lineto -350.94925 194.72543 lineto -350.94925 207.94809 moveto -358.07816 207.94809 lineto -359.3021 207.94809 360.16147 207.90252 360.65628 207.81137 curveto -361.52866 207.65512 362.25782 207.39471 362.84378 207.03012 curveto -363.4297 206.66554 363.91147 206.1382 364.28909 205.44809 curveto -364.66668 204.74497 364.85548 203.93768 364.8555 203.02621 curveto -364.85548 201.95852 364.58204 201.03404 364.03519 200.25278 curveto -363.48829 199.45852 362.72657 198.90513 361.75003 198.59262 curveto -360.78647 198.26711 359.39324 198.10435 357.57034 198.10434 curveto -350.94925 198.10434 lineto -350.94925 207.94809 lineto -fill -grestore -gsave [1 0 0 1 66 36] concat -gsave [1 0 0 1 10.651439 -19.17259] concat -0 0 0 setrgbcolor -[] 0 setdash -1.5 setlinewidth -2 setlinejoin -0 setlinecap -newpath -91.602379 48.99662 moveto -255.63454 48.99662 lineto -255.63454 125.68698 lineto -91.602379 125.68698 lineto -91.602379 48.99662 lineto -closepath -stroke -0 0 0 setrgbcolor -[] 0 setdash -1.5 setlinewidth -2 setlinejoin -0 setlinecap -newpath -273.74197 48.996822 moveto -371.73521 48.996822 lineto -371.73521 125.68718 lineto -273.74197 125.68718 lineto -273.74197 48.996822 lineto -closepath -stroke -grestore -gsave -0 0 0 setrgbcolor -newpath -171.41545 82.746193 moveto -182.41154 54.11338 lineto -186.49358 54.11338 lineto -198.21233 82.746193 lineto -193.89592 82.746193 lineto -190.55608 74.074318 lineto -178.58342 74.074318 lineto -175.43889 82.746193 lineto -171.41545 82.746193 lineto -179.67717 70.98838 moveto -189.3842 70.98838 lineto -186.39592 63.058693 lineto -185.48445 60.649861 184.80736 58.670696 184.36467 57.121193 curveto -184.00007 58.957154 183.48575 60.780069 182.8217 62.589943 curveto -179.67717 70.98838 lineto -fill -grestore -gsave -0 0 0 setrgbcolor -newpath -324.73264 82.746185 moveto -324.73264 54.113373 lineto -335.47482 54.113373 lineto -337.66231 54.113401 339.41361 54.40637 340.72873 54.992279 curveto -342.05683 55.565223 343.09199 56.457149 343.8342 57.66806 curveto -344.58938 58.866001 344.96699 60.12251 344.96701 61.437592 curveto -344.96699 62.66157 344.63496 63.813913 343.97092 64.894623 curveto -343.30683 65.975369 342.30423 66.847764 340.9631 67.51181 curveto -342.69485 68.019638 344.02298 68.885522 344.94748 70.109467 curveto -345.88496 71.333436 346.3537 72.778747 346.35373 74.445404 curveto -346.3537 75.786557 346.06725 77.036556 345.49435 78.195404 curveto -344.93444 79.341241 344.23782 80.226657 343.40451 80.851654 curveto -342.57116 81.476655 341.52298 81.951915 340.25998 82.277435 curveto -339.00996 82.589935 337.47351 82.746185 335.6506 82.746185 curveto -324.73264 82.746185 lineto -328.5217 66.144623 moveto -334.7131 66.144623 lineto -336.39278 66.144639 337.5972 66.033962 338.32639 65.812592 curveto -339.28991 65.52615 340.01257 65.05089 340.49435 64.38681 curveto -340.98913 63.722767 341.23652 62.889434 341.23654 61.88681 curveto -341.23652 60.936311 341.00866 60.102979 340.55295 59.38681 curveto -340.0972 58.657668 339.44616 58.162877 338.59982 57.902435 curveto -337.75345 57.629023 336.30163 57.492304 334.24435 57.492279 curveto -328.5217 57.492279 lineto -328.5217 66.144623 lineto -328.5217 79.367279 moveto -335.6506 79.367279 lineto -336.87455 79.367282 337.73392 79.32171 338.22873 79.23056 curveto -339.10111 79.074314 339.83027 78.813898 340.41623 78.44931 curveto -341.00215 78.084732 341.48392 77.557388 341.86154 76.867279 curveto -342.23913 76.164161 342.42793 75.35687 342.42795 74.445404 curveto -342.42793 73.377705 342.15449 72.453227 341.60764 71.671967 curveto -341.06074 70.877708 340.29902 70.324323 339.32248 70.01181 curveto -338.35892 69.686303 336.96569 69.523542 335.14279 69.523529 curveto -328.5217 69.523529 lineto -328.5217 79.367279 lineto -fill -grestore -0 0 0 setrgbcolor -[] 0 setdash -1.5 setlinewidth -2 setlinejoin -0 setlinecap -newpath -91.472092 15.042303 moveto -391.84267 15.042303 lineto -391.84267 121.55669 lineto -91.472092 121.55669 lineto -91.472092 15.042303 lineto -closepath -stroke -gsave -0 0 0 setrgbcolor -newpath -424.48441 72.218842 moveto -428.27347 73.175873 lineto -427.47917 76.287858 426.04688 78.664158 423.97659 80.304779 curveto -421.91928 81.932384 419.39975 82.746185 416.418 82.746185 curveto -413.33205 82.746185 410.81903 82.121185 408.87894 80.871185 curveto -406.95185 79.608167 405.48049 77.785252 404.46487 75.402435 curveto -403.46227 73.019632 402.96097 70.461041 402.96097 67.726654 curveto -402.96097 64.744901 403.52737 62.147247 404.66019 59.933685 curveto -405.80602 57.707147 407.42711 56.020951 409.52347 54.875092 curveto -411.63283 53.716266 413.95054 53.136839 416.47659 53.13681 curveto -419.34116 53.136839 421.75001 53.866005 423.70316 55.32431 curveto -425.65626 56.782669 427.01693 58.833448 427.78519 61.476654 curveto -424.05472 62.35556 lineto -423.39063 60.272249 422.42709 58.755323 421.16409 57.804779 curveto -419.90105 56.854284 418.31251 56.379024 416.39847 56.378998 curveto -414.19793 56.379024 412.35549 56.906367 410.87112 57.961029 curveto -409.39976 59.01574 408.36461 60.435009 407.76566 62.218842 curveto -407.16669 63.989693 406.86721 65.819118 406.86722 67.707123 curveto -406.86721 70.142031 407.21877 72.270935 407.92191 74.093842 curveto -408.63804 75.903744 409.74481 77.257909 411.24222 78.156342 curveto -412.7396 79.054782 414.36069 79.504001 416.1055 79.503998 curveto -418.22788 79.504001 420.02475 78.892022 421.49612 77.66806 curveto -422.96746 76.444108 423.96355 74.627703 424.48441 72.218842 curveto -fill -grestore -grestore -grestore +%%BeginPageSetup +%%PageBoundingBox: 0 0 307 321 +%%EndPageSetup +q +0 g +BT +32 0 0 32 55.721185 141.034078 Tm +/f-0-0 1 Tf +[<0101>1<0101>1<0101>1<01020101>1<0101>1<01030101>1<0101>1<0104>]TJ +0 -1.25 Td +[<02010101>1<0101>1<02>-1<01>1<0101>1<0101>1<02>-1<01>1<0101>1<0101>1<02>]TJ +0 -1.25 Td +[<03010101>1<0101>1<03>-1<01>1<0101>1<0101>1<03>-1<01>1<0101>1<0101>1<03>]TJ +0 -1.25 Td +[<040101>1<0101>1<01020101>1<0101>1<01030101>1<0101>1<0104>]TJ +ET +0.8 w +0 J +0 j +[] 0.0 d +4 M q 1 0 0 -1 0 320.66568 cm +96.617 141.32 m 96.617 320.266 l S Q +0.8 w +q 1 0 0 -1 0 320.66568 cm +42.062 188.52 m 284.277 188.52 l S Q +BT +37.148007 0 0 120.397362 26.22417 39.90053 Tm +/f-0-0 1 Tf +<05>Tj +0 -37.14801 138.619621 0 154.41113 186.587305 Tm +<05>Tj +32 0 0 32 -2.5625 60.557727 Tm +<06>Tj +5.688065 4.102506 Td +<07>Tj +ET +1.2 w +2 j +q 1 0 0 -1 0 320.66568 cm +38.676 12.426 m 169.898 12.426 l 169.898 73.777 l 38.676 73.777 l +38.676 12.426 l h +38.676 12.426 m S Q +1.2 w +q 1 0 0 -1 0 320.66568 cm +184.387 12.426 m 262.781 12.426 l 262.781 73.777 l 184.387 73.777 l +184.387 12.426 l h +184.387 12.426 m S Q +BT +32 0 0 32 94.050421 265.90257 Tm +/f-0-0 1 Tf +[<06>-3036<07>]TJ +ET +1.2 w +q 1 0 0 -1 0 320.66568 cm +30.051 0.602 m 270.344 0.602 l 270.344 85.812 l 30.051 85.812 l 30.051 +0.602 l h +30.051 0.602 m S Q +BT +32 0 0 32 287.8716 266.293207 Tm +/f-0-0 1 Tf +<08>Tj +ET +Q showpage +%%Trailer +count op_count sub {pop} repeat +countdictstack dict_count sub {end} repeat +cairo_eps_state restore %%EOF diff --git a/5-hradla/tabulka_skladani_bloku.svg b/5-hradla/tabulka_skladani_bloku.svg index 26a80a9..3b55b27 100644 --- a/5-hradla/tabulka_skladani_bloku.svg +++ b/5-hradla/tabulka_skladani_bloku.svg @@ -1,5 +1,6 @@ + + inkscape:output_extension="org.inkscape.output.svg.inkscape" + version="1.1"> + inkscape:window-y="0" + inkscape:window-maximized="1" /> @@ -57,11 +60,12 @@ + id="layer1" + transform="translate(-119.91102,-50.292305)"> 0 0 0 01 1 1 1< 0 1 < { { A + y="375.42725">H B + y="211.327">D - - - - - A - B + id="g3502" + transform="translate(76.651439,16.82741)"> - C + y="48.99662" + x="91.602379" + height="76.690361" + width="164.03217" + id="rect2726" + style="fill:none;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + + H + D + + B -- 2.39.5