blob: 45d238b19ad35afff68cd67d8572ce5696f56825 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<link rel="icon" href="../../favicon.ico">
<title>Joshua Documentation | Decoder configuration parameters</title>
<!-- Bootstrap core CSS -->
<link href="/dist/css/bootstrap.min.css" rel="stylesheet">
<!-- Custom styles for this template -->
<link href="/joshua6.css" rel="stylesheet">
</head>
<body>
<div class="blog-masthead">
<div class="container">
<nav class="blog-nav">
<!-- <a class="blog-nav-item active" href="#">Joshua</a> -->
<a class="blog-nav-item" href="/">Joshua</a>
<!-- <a class="blog-nav-item" href="/6.0/whats-new.html">New features</a> -->
<a class="blog-nav-item" href="/language-packs/">Language packs</a>
<a class="blog-nav-item" href="/data/">Datasets</a>
<a class="blog-nav-item" href="/support/">Support</a>
<a class="blog-nav-item" href="/contributors.html">Contributors</a>
</nav>
</div>
</div>
<div class="container">
<div class="row">
<div class="col-sm-2">
<div class="sidebar-module">
<!-- <h4>About</h4> -->
<center>
<img src="/images/joshua-logo-small.png" />
<p>Joshua machine translation toolkit</p>
</center>
</div>
<hr>
<center>
<a href="/releases/current/" target="_blank"><button class="button">Download Joshua 6.0.5</button></a>
<br />
<a href="/releases/runtime/" target="_blank"><button class="button">Runtime only version</button></a>
<p>Released November 5, 2015</p>
</center>
<hr>
<!-- <div class="sidebar-module"> -->
<!-- <span id="download"> -->
<!-- <a href="http://joshua-decoder.org/downloads/joshua-6.0.tgz">Download</a> -->
<!-- </span> -->
<!-- </div> -->
<div class="sidebar-module">
<h4>Using Joshua</h4>
<ol class="list-unstyled">
<li><a href="/6.0/install.html">Installation</a></li>
<li><a href="/6.0/quick-start.html">Quick Start</a></li>
</ol>
</div>
<hr>
<div class="sidebar-module">
<h4>Building new models</h4>
<ol class="list-unstyled">
<li><a href="/6.0/pipeline.html">Pipeline</a></li>
<li><a href="/6.0/tutorial.html">Tutorial</a></li>
<li><a href="/6.0/faq.html">FAQ</a></li>
</ol>
</div>
<!--
<div class="sidebar-module">
<h4>Phrase-based</h4>
<ol class="list-unstyled">
<li><a href="/6.0/phrase.html">Training</a></li>
</ol>
</div>
-->
<hr>
<div class="sidebar-module">
<h4>Advanced</h4>
<ol class="list-unstyled">
<li><a href="/6.0/bundle.html">Building language packs</a></li>
<li><a href="/6.0/decoder.html">Decoder options</a></li>
<li><a href="/6.0/file-formats.html">File formats</a></li>
<li><a href="/6.0/packing.html">Packing TMs</a></li>
<li><a href="/6.0/large-lms.html">Building large LMs</a></li>
</ol>
</div>
<hr>
<div class="sidebar-module">
<h4>Developer</h4>
<ol class="list-unstyled">
<li><a href="https://github.com/joshua-decoder/joshua">Github</a></li>
<li><a href="http://cs.jhu.edu/~post/joshua-docs">Javadoc</a></li>
<li><a href="https://groups.google.com/forum/?fromgroups#!forum/joshua_developers">Mailing list</a></li>
</ol>
</div>
</div><!-- /.blog-sidebar -->
<div class="col-sm-8 blog-main">
<div class="blog-title">
<h2>Decoder configuration parameters</h2>
</div>
<div class="blog-post">
<p>Joshua configuration parameters affect the runtime behavior of the decoder itself. This page
describes the complete list of these parameters and describes how to invoke the decoder manually.</p>
<p>To run the decoder, a convenience script is provided that loads the necessary Java libraries.
Assuming you have set the environment variable <code class="highlighter-rouge">$JOSHUA</code> to point to the root of your installation,
its syntax is:</p>
<div class="highlighter-rouge"><pre class="highlight"><code>$JOSHUA/bin/decoder [-m memory-amount] [-c config-file other-joshua-options ...]
</code></pre>
</div>
<p>The <code class="highlighter-rouge">-m</code> argument, if present, must come first, and the memory specification is in Java format
(e.g., 400m, 4g, 50g). Most notably, the suffixes “m” and “g” are used for “megabytes” and
“gigabytes”, and there cannot be a space between the number and the unit. The value of this
argument is passed to Java itself in the invocation of the decoder, and the remaining options are
passed to Joshua. The <code class="highlighter-rouge">-c</code> parameter has special import because it specifies the location of the
configuration file.</p>
<p>The Joshua decoder works by reading from STDIN and printing translations to STDOUT as they are
received, according to a number of <a href="#output">output options</a>. If no run-time parameters are
specified (e.g., no translation model), sentences are simply pushed through untranslated. Blank
lines are similarly pushed through as blank lines, so as to maintain parallelism with the input.</p>
<p>Parameters can be provided to Joshua via a configuration file and from the command
line. Command-line arguments override values found in the configuration file. The format for
configuration file parameters is</p>
<div class="highlighter-rouge"><pre class="highlight"><code>parameter = value
</code></pre>
</div>
<p>Command-line options are specified in the following format</p>
<div class="highlighter-rouge"><pre class="highlight"><code>-parameter value
</code></pre>
</div>
<p>Values are one of four types (which we list here mostly to call attention to the boolean format):</p>
<ul>
<li>STRING, an arbitrary string (no spaces)</li>
<li>FLOAT, a floating-point value</li>
<li>INT, an integer</li>
<li>
<p>BOOLEAN, a boolean value. For booleans, <code class="highlighter-rouge">true</code> evaluates to true, and all other values evaluate
to false. For command-line options, the value may be omitted, in which case it evaluates to
true. For example, the following are equivalent:</p>
<div class="highlighter-rouge"><pre class="highlight"><code>$JOSHUA/bin/decoder -mark-oovs true
$JOSHUA/bin/decoder -mark-oovs
</code></pre>
</div>
</li>
</ul>
<h2 id="joshua-configuration-file">Joshua configuration file</h2>
<p>In addition to the decoder parameters described below, the configuration file contains the model
feature weights. These weights are distinguished from runtime parameters in that they are delimited
by a space instead of an equals sign. They take the following
format, and by convention are placed at the end of the configuration file:</p>
<div class="highlighter-rouge"><pre class="highlight"><code>lm_0 4.23
tm_pt_0 -0.2
OOVPenalty -100
</code></pre>
</div>
<p>Joshua can make use of thousands of features, which are described in further detail in the
<a href="features.html">feature file</a>.</p>
<h2 id="joshua-decoder-parameters">Joshua decoder parameters</h2>
<p>This section contains a list of the Joshua run-time parameters. An important note about the
parameters is that they are collapsed to canonical form, in which dashes (-) and underscores (-) are
removed and case is converted to lowercase. For example, the following parameter forms are
equivalent (either in the configuration file or from the command line):</p>
<div class="highlighter-rouge"><pre class="highlight"><code><span class="p">{</span><span class="err">top-n,</span><span class="w"> </span><span class="err">topN,</span><span class="w"> </span><span class="err">top_n,</span><span class="w"> </span><span class="err">TOP_N,</span><span class="w"> </span><span class="err">t-o-p-N</span><span class="p">}</span><span class="w">
</span><span class="p">{</span><span class="err">poplimit,</span><span class="w"> </span><span class="err">pop-limit,</span><span class="w"> </span><span class="err">pop-limit,</span><span class="w"> </span><span class="err">popLimit,PoPlImIt</span><span class="p">}</span><span class="w">
</span></code></pre>
</div>
<p>This basically defines equivalence classes of parameters, and relieves you of the task of having to
remember the exact format of each parameter.</p>
<p>In what follows, we group the configuration parameters in the following groups:</p>
<ul>
<li><a href="#general">General options</a></li>
<li><a href="#pruning">Pruning</a></li>
<li><a href="#tm">Translation model options</a></li>
<li><a href="#lm">Language model options</a></li>
<li><a href="#output">Output options</a></li>
<li><a href="#modes">Alternate modes of operation</a></li>
</ul>
<p><a id="general"></a></p>
<h3 id="general-decoder-options">General decoder options</h3>
<ul>
<li>
<p><code class="highlighter-rouge">c</code>, <code class="highlighter-rouge">config</code><em>NULL</em></p>
<p>Specifies the configuration file from which Joshua options are loaded. This feature is unique in
that it must be specified from the command line (obviously).</p>
</li>
<li>
<p><code class="highlighter-rouge">amortize</code><em>true</em></p>
<p>When true, specifies that sorting of the rule lists at each trie node in the grammar should be
delayed until the trie node is accessed. When false, all such nodes are sorted before decoding
even begins. Setting to true results in slower per-sentence decoding, but allows the decoder to
begin translating almost immediately (especially with large grammars).</p>
</li>
<li>
<p><code class="highlighter-rouge">server-port</code><em>0</em></p>
<p>If set to a nonzero value, Joshua will start a multithreaded TCP/IP server on the specified
port. Clients can connect to it directly through programming APIs or command-line tools like
<code class="highlighter-rouge">telnet</code> or <code class="highlighter-rouge">nc</code>.</p>
<div class="highlighter-rouge"><pre class="highlight"><code>$ $JOSHUA/bin/decoder -m 30g -c /path/to/config/file -server-port 8723
...
$ cat input.txt | nc localhost 8723 &gt; results.txt
</code></pre>
</div>
</li>
<li>
<p><code class="highlighter-rouge">maxlen</code><em>200</em></p>
<p>Input sentences longer than this are truncated.</p>
</li>
<li>
<p><code class="highlighter-rouge">feature-function</code></p>
<p>Enables a particular feature function. See the <a href="features.html">feature function page</a> for more information.</p>
</li>
<li>
<p><code class="highlighter-rouge">oracle-file</code><em>NULL</em></p>
<p>The location of a set of oracle reference translations, parallel to the input. When present,
after producing the hypergraph by decoding the input sentence, the oracle is used to rescore the
translation forest with a BLEU approximation in order to extract the oracle-translation from the
forest. This is useful for obtaining an (approximation to an) upper bound on your translation
model under particular search settings.</p>
</li>
<li>
<p><code class="highlighter-rouge">default-nonterminal</code><em>“X”</em></p>
<p>This is the nonterminal symbol assigned to out-of-vocabulary (OOV) items. Joshua assigns this
label to every word of the input, in fact, so that even known words can be translated as OOVs, if
the model prefers them. Usually, a very low weight on the <code class="highlighter-rouge">OOVPenalty</code> feature discourages their
use unless necessary.</p>
</li>
<li>
<p><code class="highlighter-rouge">goal-symbol</code><em>“GOAL”</em></p>
<p>This is the symbol whose presence in the chart over the whole input span denotes a successful
parse (translation). It should match the LHS nonterminal in your glue grammar. Internally,
Joshua represents nonterminals enclosed in square brackets (e.g., “[GOAL]”), which you can
optionally supply in the configuration file.</p>
</li>
<li>
<p><code class="highlighter-rouge">true-oovs-only</code><em>false</em></p>
<p>By default, Joshua creates an OOV entry for every word in the source sentence, regardless of
whether it is found in the grammar. This allows every word to be pushed through untranslated
(although potentially incurring a high cost based on the <code class="highlighter-rouge">OOVPenalty</code> feature). If this option is
set, then only true OOVs are entered into the chart as OOVs. To determine “true” OOVs, Joshua
examines the first level of the grammar trie for each word of the input (this isn’t a perfect
heuristic, since a word could be present only in deeper levels of the trie).</p>
</li>
<li>
<p><code class="highlighter-rouge">threads</code>, <code class="highlighter-rouge">num-parallel-decoders</code><em>1</em></p>
<p>This determines how many simultaneous decoding threads to launch. </p>
<p>Outputs are assembled in order and Joshua has to hold on to the complete target hypergraph until
it is ready to be processed for output, so too many simultaneous threads could result in lots of
memory usage if a long sentence results in many sentences being queued up. We have run Joshua
with as many as 64 threads without any problems of this kind, but it’s useful to keep in the back
of your mind.</p>
</li>
<li>
<p><code class="highlighter-rouge">weights-file</code> — NULL</p>
<p>Weights are appended to the end of the Joshua configuration file, by convention. If you prefer to
put them in a separate file, you can do so, and point to the file with this parameter.</p>
</li>
</ul>
<h3 id="pruning-options-a-idpruning-">Pruning options <a id="pruning"></a></h3>
<ul>
<li>
<p><code class="highlighter-rouge">pop-limit</code><em>100</em></p>
<p>The number of cube-pruning hypotheses that are popped from the candidates list for each span of
the input. Higher values result in a larger portion of the search space being explored at the
cost of an increased search time. For exhaustive search, set <code class="highlighter-rouge">pop-limit</code> to 0.</p>
</li>
<li>
<p><code class="highlighter-rouge">filter-grammar</code> — false</p>
<p>Set to true, this enables dynamic sentence-level filtering. For each sentence, each grammar is
filtered at runtime down to rules that can be applied to the sentence under consideration. This
takes some time (which we haven’t thoroughly quantified), but can result in the removal of many
rules that are only partially applicable to the sentence.</p>
</li>
<li><code class="highlighter-rouge">constrain-parse</code><em>false</em></li>
<li>
<p><code class="highlighter-rouge">use_pos_labels</code><em>false</em></p>
<p><em>These features are not documented.</em></p>
</li>
</ul>
<h3 id="translation-model-options-a-idtm-">Translation model options <a id="tm"></a></h3>
<p>Joshua supports any number of translation models. Conventionally, two are supplied: the main grammar
containing translation rules, and the glue grammar for patching things together. Internally, Joshua
doesn’t distinguish between the roles of these grammars; they are treated differently only in that
they typically have different span limits (the maximum input width they can be applied to).</p>
<p>Grammars are instantiated with config file lines of the following form:</p>
<div class="highlighter-rouge"><pre class="highlight"><code>tm = TYPE OWNER SPAN_LIMIT FILE
</code></pre>
</div>
<ul>
<li><code class="highlighter-rouge">TYPE</code> is the grammar type, which must be set to “thrax”. </li>
<li><code class="highlighter-rouge">OWNER</code> is the grammar’s owner, which defines the set of <a href="features.html">feature weights</a> that
apply to the weights found in each line of the grammar (using different owners allows each grammar
to have different sets and numbers of weights, while sharing owners allows weights to be shared
across grammars).</li>
<li><code class="highlighter-rouge">SPAN_LIMIT</code> is the maximum span of the input that rules from this grammar can be applied to. A
span limit of 0 means “no limit”, while a span limit of -1 means that rules from this grammar must
be anchored to the left side of the sentence (index 0).</li>
<li><code class="highlighter-rouge">FILE</code> is the path to the file containing the grammar. If the file is a directory, it is assumed
to be <a href="packed.html">packed</a>. Only one packed grammar can currently be used at a time.</li>
</ul>
<p>For reference, the following two translation model lines are used by the <a href="pipeline.html">pipeline</a>:</p>
<div class="highlighter-rouge"><pre class="highlight"><code>tm = thrax pt 20 /path/to/packed/grammar
tm = thrax glue -1 /path/to/glue/grammar
</code></pre>
</div>
<h3 id="language-model-options-a-idlm-">Language model options <a id="lm"></a></h3>
<p>Joshua supports any number of language models. With Joshua 6.0, these
are just regular feature functions:</p>
<div class="highlighter-rouge"><pre class="highlight"><code>feature-function = LanguageModel -lm_file /path/to/lm/file -lm_order N -lm_type TYPE
feature-function = StateMinimizingLanguageModel -lm_file /path/to/lm/file -lm_order N -lm_type TYPE
</code></pre>
</div>
<p><code class="highlighter-rouge">LanguageModel</code> is a generic language model, supporting types ‘kenlm’
(the default) and ‘berkeleylm’. <code class="highlighter-rouge">StateMinimizingLanguageModel</code>
implements LM state minimization to reduce the size of context n-grams
where appropriate
(<a href="http://www.aclweb.org/anthology/W08-0402.pdf">Li and Khudanpur, 2008</a>;
<a href="https://aclweb.org/anthology/N/N13/N13-1116.pdf">Heafield et al., 2013</a>). This
is currently only supported by KenLM, so the <code class="highlighter-rouge">-lm_type</code> option is not
available here.</p>
<p>The other key/value pairs are defined as follows:</p>
<ul>
<li><code class="highlighter-rouge">lm_type</code>: one of “kenlm” “berkeleylm”</li>
<li><code class="highlighter-rouge">lm_order</code>: the order of the language model</li>
<li><code class="highlighter-rouge">lm_file</code>: the path to the language model file. All language model
types support the standard ARPA format. Additionally, if the LM
type is “kenlm”, this file can be compiled into KenLM’s compiled
format (using the program at <code class="highlighter-rouge">$JOSHUA/bin/build_binary</code>); if the
the LM type is “berkeleylm”, it can be compiled by following the
directions in
<code class="highlighter-rouge">$JOSHUA/src/joshua/decoder/ff/lm/berkeley_lm/README</code>. The
<a href="pipeline.html">pipeline</a> will automatically compile either type.</li>
</ul>
<p>For each language model, you need to specify a feature weight in the following format:</p>
<div class="highlighter-rouge"><pre class="highlight"><code>lm_0 WEIGHT
lm_1 WEIGHT
...
</code></pre>
</div>
<p>where the indices correspond to the order of the language model declaration lines.</p>
<h3 id="output-options-a-idoutput-">Output options <a id="output"></a></h3>
<ul>
<li>
<p><code class="highlighter-rouge">output-format</code> <em>New in 5.0</em></p>
<p>Joshua prints a lot of information to STDERR (making this more granular is on the TODO
list). Output to STDOUT is reserved for decoder translations, and is controlled by the</p>
<ul>
<li>
<p><code class="highlighter-rouge">%i</code>: the sentence number (0-indexed)</p>
</li>
<li>
<p><code class="highlighter-rouge">%e</code>: the source sentence</p>
</li>
<li>
<p><code class="highlighter-rouge">%s</code>: the translated sentence</p>
</li>
<li>
<p><code class="highlighter-rouge">%S</code>: the translated sentence, with some basic capitalization and denomralization. e.g.,</p>
<div class="highlighter-rouge"><pre class="highlight"><code>$ echo "¿ who you lookin' at , mr. ?" | $JOSHUA/bin/decoder -output-format "%S" -mark-oovs false 2&gt; /dev/null
¿Who you lookin' at, Mr.?
</code></pre>
</div>
</li>
<li>
<p><code class="highlighter-rouge">%t</code>: the target-side tree projection, all printed on one line (PTB style)</p>
</li>
<li>
<p><code class="highlighter-rouge">%d</code>: the synchronous derivation, with each rules printed indented on their own lines</p>
</li>
<li>
<p><code class="highlighter-rouge">%f</code>: the list of feature values (as name=value pairs)</p>
</li>
<li>
<p><code class="highlighter-rouge">%c</code>: the model cost</p>
</li>
<li>
<p><code class="highlighter-rouge">%w</code>: the weight vector (unimplemented)</p>
</li>
<li>
<p><code class="highlighter-rouge">%a</code>: the alignments between source and target words (currently broken for hierarchical mode)</p>
</li>
</ul>
<p>The default value is</p>
<div class="highlighter-rouge"><pre class="highlight"><code>output-format = %i ||| %s ||| %f ||| %c
</code></pre>
</div>
<p>i.e.,</p>
<div class="highlighter-rouge"><pre class="highlight"><code>input ID ||| translation ||| model scores ||| score
</code></pre>
</div>
</li>
<li>
<p><code class="highlighter-rouge">top-n</code><em>300</em></p>
<p>The number of translation hypotheses to output, sorted in decreasing order of model score</p>
</li>
<li>
<p><code class="highlighter-rouge">use-unique-nbest</code><em>true</em></p>
<p>When constructing the n-best list for a sentence, skip hypotheses whose string has already been
output.</p>
</li>
<li>
<p><code class="highlighter-rouge">escape-trees</code><em>false</em></p>
</li>
<li>
<p><code class="highlighter-rouge">include-align-index</code><em>false</em></p>
<p>Output the source words indices that each target word aligns to.</p>
</li>
<li>
<p><code class="highlighter-rouge">mark-oovs</code><em>false</em></p>
<p>if <code class="highlighter-rouge">true</code>, this causes the text “_OOV” to be appended to each untranslated word in the output.</p>
</li>
<li>
<p><code class="highlighter-rouge">visualize-hypergraph</code><em>false</em></p>
<p>If set to true, a visualization of the hypergraph will be displayed, though you will have to
explicitly include the relevant jar files. See the example usage in
<code class="highlighter-rouge">$JOSHUA/examples/tree_visualizer/</code>, which contains a demonstration of a source sentence,
translation, and synchronous derivation.</p>
</li>
<li>
<p><code class="highlighter-rouge">dump-hypergraph</code> — “”</p>
<p>This feature directs that the hypergraph should be written to disk for each input sentence. If
set, the value should contain the string “%d”, which is replaced with the sentence number. For
example,</p>
<div class="highlighter-rouge"><pre class="highlight"><code>cat input.txt | $JOSHUA/bin/decoder -dump-hypergraph hgs/%d.txt
</code></pre>
</div>
<p>Note that the output directory must exist.</p>
<p>TODO: revive the
<a href="http://aclweb.org/aclwiki/index.php?title=Hypergraph_Format">discussion on a common hypergraph format</a>
on the ACL Wiki and support that format.</p>
</li>
</ul>
<h3 id="lattice-decoding">Lattice decoding</h3>
<p>In addition to regular sentences, Joshua can decode weighted lattices encoded in
<a href="http://www.statmt.org/moses/?n=Moses.WordLattices">the PLF format</a>, except that path costs should
be listed as <b>log probabilities</b> instead of probabilities. Lattice decoding was originally
added by Lane Schwartz and <a href="http://www.cs.cmu.edu/~cdyer/">Chris Dyer</a>.</p>
<p>Joshua will automatically detect whether the input sentence is a regular sentence (the usual case)
or a lattice. If a lattice, a feature will be activated that accumulates the cost of different
paths through the lattice. In this case, you need to ensure that a weight for this feature is
present in <a href="decoder.html">your model file</a>. The <a href="pipeline.html">pipeline</a> will handle this
automatically, or if you are doing this manually, you can add the line</p>
<div class="highlighter-rouge"><pre class="highlight"><code>SourcePath COST
</code></pre>
</div>
<p>to your Joshua configuration file. </p>
<p>Lattices must be listed one per line.</p>
<h3 id="alternate-modes-of-operation-a-idmodes-">Alternate modes of operation <a id="modes"></a></h3>
<p>In addition to decoding input sentences in the standard way, Joshua supports both <em>constrained
decoding</em> and <em>synchronous parsing</em>. In both settings, both the source and target sides are provided
as input, and the decoder finds a derivation between them.</p>
<h4 id="constrained-decoding">Constrained decoding</h4>
<p>To enable constrained decoding, simply append the desired target string as part of the input, in
the following format:</p>
<div class="highlighter-rouge"><pre class="highlight"><code>source sentence ||| target sentence
</code></pre>
</div>
<p>Joshua will translate the source sentence constrained to the target sentence. There are a few
caveats:</p>
<ul>
<li>
<p>Left-state minimization cannot be enabled for the language model</p>
</li>
<li>
<p>A heuristic is used to constrain the derivation (the LM state must match against the
input). This is not a perfect heuristic, and sometimes results in analyses that are not
perfectly constrained to the input, but have extra words.</p>
</li>
</ul>
<h4 id="synchronous-parsing">Synchronous parsing</h4>
<p>Joshua supports synchronous parsing as a two-step sequence of monolingual parses, as described in
Dyer (NAACL 2010) (<a href="http://www.aclweb.org/anthology/N10-1033‎.pdf">PDF</a>). To enable this:</p>
<ul>
<li>
<p>Set the configuration parameter <code class="highlighter-rouge">parse = true</code>.</p>
</li>
<li>
<p>Remove all language models from the input file </p>
</li>
<li>
<p>Provide input in the following format:</p>
<div class="highlighter-rouge"><pre class="highlight"><code> source sentence ||| target sentence
</code></pre>
</div>
</li>
</ul>
<p>You may also wish to display the synchronouse parse tree (<code class="highlighter-rouge">-output-format %t</code>) and the alignment
(<code class="highlighter-rouge">-show-align-index</code>).</p>
<!-- <h4 class="blog-post-title">Welcome to Joshua!</h4> -->
<!-- <p>This blog post shows a few different types of content that's supported and styled with Bootstrap. Basic typography, images, and code are all supported.</p> -->
<!-- <hr> -->
<!-- <p>Cum sociis natoque penatibus et magnis <a href="#">dis parturient montes</a>, nascetur ridiculus mus. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Sed posuere consectetur est at lobortis. Cras mattis consectetur purus sit amet fermentum.</p> -->
<!-- <blockquote> -->
<!-- <p>Curabitur blandit tempus porttitor. <strong>Nullam quis risus eget urna mollis</strong> ornare vel eu leo. Nullam id dolor id nibh ultricies vehicula ut id elit.</p> -->
<!-- </blockquote> -->
<!-- <p>Etiam porta <em>sem malesuada magna</em> mollis euismod. Cras mattis consectetur purus sit amet fermentum. Aenean lacinia bibendum nulla sed consectetur.</p> -->
<!-- <h2>Heading</h2> -->
<!-- <p>Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.</p> -->
<!-- <h3>Sub-heading</h3> -->
<!-- <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.</p> -->
<!-- <pre><code>Example code block</code></pre> -->
<!-- <p>Aenean lacinia bibendum nulla sed consectetur. Etiam porta sem malesuada magna mollis euismod. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa.</p> -->
<!-- <h3>Sub-heading</h3> -->
<!-- <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aenean lacinia bibendum nulla sed consectetur. Etiam porta sem malesuada magna mollis euismod. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</p> -->
<!-- <ul> -->
<!-- <li>Praesent commodo cursus magna, vel scelerisque nisl consectetur et.</li> -->
<!-- <li>Donec id elit non mi porta gravida at eget metus.</li> -->
<!-- <li>Nulla vitae elit libero, a pharetra augue.</li> -->
<!-- </ul> -->
<!-- <p>Donec ullamcorper nulla non metus auctor fringilla. Nulla vitae elit libero, a pharetra augue.</p> -->
<!-- <ol> -->
<!-- <li>Vestibulum id ligula porta felis euismod semper.</li> -->
<!-- <li>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.</li> -->
<!-- <li>Maecenas sed diam eget risus varius blandit sit amet non magna.</li> -->
<!-- </ol> -->
<!-- <p>Cras mattis consectetur purus sit amet fermentum. Sed posuere consectetur est at lobortis.</p> -->
<!-- </div><\!-- /.blog-post -\-> -->
</div>
</div><!-- /.row -->
</div><!-- /.container -->
<!-- Bootstrap core JavaScript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="../../dist/js/bootstrap.min.js"></script>
<!-- <script src="../../assets/js/docs.min.js"></script> -->
<!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
<!-- <script src="../../assets/js/ie10-viewport-bug-workaround.js"></script>
-->
<!-- Start of StatCounter Code for Default Guide -->
<script type="text/javascript">
var sc_project=8264132;
var sc_invisible=1;
var sc_security="4b97fe2d";
</script>
<script type="text/javascript" src="http://www.statcounter.com/counter/counter.js"></script>
<noscript>
<div class="statcounter">
<a title="hit counter joomla"
href="http://statcounter.com/joomla/"
target="_blank">
<img class="statcounter"
src="http://c.statcounter.com/8264132/0/4b97fe2d/1/"
alt="hit counter joomla" />
</a>
</div>
</noscript>
<!-- End of StatCounter Code for Default Guide -->
</body>
</html>