From ee9378ef7d244f845aec23228c5b60b1bbcba545 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Tue, 25 Jul 2023 00:20:44 +0000 Subject: [PATCH] update 835a40534f9efd70770d74f56f25fef6cfc6ebc6 --- .buildinfo | 4 + .nojekyll | 0 _images/EDA.svg | 3 + _images/flow.png | Bin 0 -> 10682 bytes _images/hero.svg | 1 + _images/parts.svg | 3 + _images/step.png | Bin 0 -> 11200 bytes _images/tool.png | Bin 0 -> 5495 bytes _images/toolchain-flow.svg | 542 ++++ _sources/community.rst.txt | 72 + _sources/development/building-docs.rst.txt | 15 + _sources/development/changes.rst.txt | 4 + _sources/development/venv.rst.txt | 10 + _sources/f4pga/Deprecated.rst.txt | 194 ++ _sources/f4pga/DevNotes.md.txt | 103 + _sources/f4pga/Usage.md.txt | 408 +++ _sources/f4pga/index.rst.txt | 29 + _sources/f4pga/modules/fasm.md.txt | 18 + .../modules/generic_script_wrapper.md.txt | 41 + _sources/f4pga/modules/index.md.txt | 278 ++ _sources/f4pga/modules/io_rename.md.txt | 25 + _sources/f4pga/modules/mkdirs.md.txt | 9 + _sources/f4pga/modules/pack.md.txt | 7 + _sources/f4pga/modules/place.md.txt | 7 + .../f4pga/modules/place_constraints.md.txt | 11 + _sources/f4pga/modules/route.md.txt | 7 + _sources/f4pga/modules/synth.md.txt | 41 + _sources/flows/bitstream.rst.txt | 15 + _sources/flows/f4pga.rst.txt | 429 +++ _sources/flows/index.rst.txt | 23 + _sources/flows/pnr.rst.txt | 48 + _sources/flows/synthesis.rst.txt | 57 + _sources/getting-started.rst.txt | 187 ++ _sources/glossary.rst.txt | 137 + _sources/how.rst.txt | 68 + _sources/index.rst.txt | 101 + _sources/references.rst.txt | 8 + _sources/status.rst.txt | 31 + _static/basic.css | 921 ++++++ _static/doctools.js | 156 + _static/documentation_options.js | 14 + _static/favicon.svg | 1 + _static/file.png | Bin 0 -> 286 bytes _static/fonts/font-awesome.css | 4 + _static/fonts/material-icons.css | 13 + _static/fonts/specimen/FontAwesome.ttf | Bin 0 -> 165548 bytes _static/fonts/specimen/FontAwesome.woff | Bin 0 -> 98024 bytes _static/fonts/specimen/FontAwesome.woff2 | Bin 0 -> 77160 bytes .../fonts/specimen/MaterialIcons-Regular.ttf | Bin 0 -> 285724 bytes .../fonts/specimen/MaterialIcons-Regular.woff | Bin 0 -> 147156 bytes .../specimen/MaterialIcons-Regular.woff2 | Bin 0 -> 115008 bytes _static/images/EDA.svg | 3 + _static/images/favicon.png | Bin 0 -> 521 bytes _static/images/flow.png | Bin 0 -> 10682 bytes _static/images/hero.svg | 1 + _static/images/icons/bitbucket.1b09e088.svg | 1 + _static/images/icons/bitbucket.svg | 1 + _static/images/icons/github.f0b8504a.svg | 1 + _static/images/icons/github.svg | 1 + _static/images/icons/gitlab.6dd19c00.svg | 1 + _static/images/icons/gitlab.svg | 1 + _static/images/parts.svg | 3 + _static/images/step.png | Bin 0 -> 11200 bytes _static/images/tool.png | Bin 0 -> 5495 bytes _static/images/toolchain-flow.svg | 542 ++++ _static/javascripts/application.js | 2540 +++++++++++++++ _static/javascripts/f4pga.js | 48 + _static/javascripts/lunr/lunr.da.js | 1 + _static/javascripts/lunr/lunr.de.js | 1 + _static/javascripts/lunr/lunr.du.js | 1 + _static/javascripts/lunr/lunr.es.js | 1 + _static/javascripts/lunr/lunr.fi.js | 1 + _static/javascripts/lunr/lunr.fr.js | 1 + _static/javascripts/lunr/lunr.hu.js | 1 + _static/javascripts/lunr/lunr.it.js | 1 + _static/javascripts/lunr/lunr.ja.js | 1 + _static/javascripts/lunr/lunr.jp.js | 1 + _static/javascripts/lunr/lunr.multi.js | 1 + _static/javascripts/lunr/lunr.nl.js | 1 + _static/javascripts/lunr/lunr.no.js | 1 + _static/javascripts/lunr/lunr.pt.js | 1 + _static/javascripts/lunr/lunr.ro.js | 1 + _static/javascripts/lunr/lunr.ru.js | 1 + .../javascripts/lunr/lunr.stemmer.support.js | 1 + _static/javascripts/lunr/lunr.sv.js | 1 + _static/javascripts/lunr/lunr.th.js | 1 + _static/javascripts/lunr/lunr.tr.js | 1 + _static/javascripts/lunr/tinyseg.js | 1 + _static/javascripts/lunr/wordcut.js | 1 + _static/javascripts/modernizr.js | 1 + _static/javascripts/version_dropdown.js | 29 + _static/jquery.js | 2 + _static/jquery.min.map | 1 + _static/language_data.js | 199 ++ _static/logo.svg | 66 + _static/material.css | 35 + _static/minus.png | Bin 0 -> 90 bytes _static/plus.png | Bin 0 -> 90 bytes _static/pygments.css | 74 + _static/searchtools.js | 566 ++++ _static/sphinx_highlight.js | 144 + _static/stylesheets/application-fixes.css | 423 +++ _static/stylesheets/application-palette.css | 1352 ++++++++ _static/stylesheets/application.css | 2882 +++++++++++++++++ _static/stylesheets/f4pga.css | 25 + community.html | 577 ++++ development/building-docs.html | 521 +++ development/changes.html | 794 +++++ development/venv.html | 514 +++ f4pga/Deprecated.html | 725 +++++ f4pga/DevNotes.html | 635 ++++ f4pga/Usage.html | 1123 +++++++ f4pga/index.html | 542 ++++ f4pga/modules/fasm.html | 532 +++ f4pga/modules/generic_script_wrapper.html | 559 ++++ f4pga/modules/index.html | 826 +++++ f4pga/modules/io_rename.html | 544 ++++ f4pga/modules/mkdirs.html | 523 +++ f4pga/modules/pack.html | 514 +++ f4pga/modules/place.html | 514 +++ f4pga/modules/place_constraints.html | 518 +++ f4pga/modules/route.html | 514 +++ f4pga/modules/synth.html | 556 ++++ flows/bitstream.html | 518 +++ flows/f4pga.html | 931 ++++++ flows/index.html | 524 +++ flows/pnr.html | 562 ++++ flows/synthesis.html | 567 ++++ genindex.html | 601 ++++ getting-started.html | 687 ++++ glossary.html | 620 ++++ how.html | 563 ++++ index.html | 695 ++++ objects.inv | Bin 0 -> 1154 bytes references.html | 592 ++++ search.html | 494 +++ searchindex.js | 1 + status.html | 597 ++++ 138 files changed, 31992 insertions(+) create mode 100644 .buildinfo create mode 100644 .nojekyll create mode 100644 _images/EDA.svg create mode 100644 _images/flow.png create mode 100644 _images/hero.svg create mode 100644 _images/parts.svg create mode 100644 _images/step.png create mode 100644 _images/tool.png create mode 100644 _images/toolchain-flow.svg create mode 100644 _sources/community.rst.txt create mode 100644 _sources/development/building-docs.rst.txt create mode 100644 _sources/development/changes.rst.txt create mode 100644 _sources/development/venv.rst.txt create mode 100644 _sources/f4pga/Deprecated.rst.txt create mode 100644 _sources/f4pga/DevNotes.md.txt create mode 100644 _sources/f4pga/Usage.md.txt create mode 100644 _sources/f4pga/index.rst.txt create mode 100644 _sources/f4pga/modules/fasm.md.txt create mode 100644 _sources/f4pga/modules/generic_script_wrapper.md.txt create mode 100644 _sources/f4pga/modules/index.md.txt create mode 100644 _sources/f4pga/modules/io_rename.md.txt create mode 100644 _sources/f4pga/modules/mkdirs.md.txt create mode 100644 _sources/f4pga/modules/pack.md.txt create mode 100644 _sources/f4pga/modules/place.md.txt create mode 100644 _sources/f4pga/modules/place_constraints.md.txt create mode 100644 _sources/f4pga/modules/route.md.txt create mode 100644 _sources/f4pga/modules/synth.md.txt create mode 100644 _sources/flows/bitstream.rst.txt create mode 100644 _sources/flows/f4pga.rst.txt create mode 100644 _sources/flows/index.rst.txt create mode 100644 _sources/flows/pnr.rst.txt create mode 100644 _sources/flows/synthesis.rst.txt create mode 100644 _sources/getting-started.rst.txt create mode 100644 _sources/glossary.rst.txt create mode 100644 _sources/how.rst.txt create mode 100644 _sources/index.rst.txt create mode 100644 _sources/references.rst.txt create mode 100644 _sources/status.rst.txt create mode 100644 _static/basic.css create mode 100644 _static/doctools.js create mode 100644 _static/documentation_options.js create mode 100644 _static/favicon.svg create mode 100644 _static/file.png create mode 100644 _static/fonts/font-awesome.css create mode 100644 _static/fonts/material-icons.css create mode 100644 _static/fonts/specimen/FontAwesome.ttf create mode 100644 _static/fonts/specimen/FontAwesome.woff create mode 100644 _static/fonts/specimen/FontAwesome.woff2 create mode 100644 _static/fonts/specimen/MaterialIcons-Regular.ttf create mode 100644 _static/fonts/specimen/MaterialIcons-Regular.woff create mode 100644 _static/fonts/specimen/MaterialIcons-Regular.woff2 create mode 100644 _static/images/EDA.svg create mode 100644 _static/images/favicon.png create mode 100644 _static/images/flow.png create mode 100644 _static/images/hero.svg create mode 100644 _static/images/icons/bitbucket.1b09e088.svg create mode 100644 _static/images/icons/bitbucket.svg create mode 100644 _static/images/icons/github.f0b8504a.svg create mode 100644 _static/images/icons/github.svg create mode 100644 _static/images/icons/gitlab.6dd19c00.svg create mode 100644 _static/images/icons/gitlab.svg create mode 100644 _static/images/parts.svg create mode 100644 _static/images/step.png create mode 100644 _static/images/tool.png create mode 100644 _static/images/toolchain-flow.svg create mode 100644 _static/javascripts/application.js create mode 100644 _static/javascripts/f4pga.js create mode 100644 _static/javascripts/lunr/lunr.da.js create mode 100644 _static/javascripts/lunr/lunr.de.js create mode 100644 _static/javascripts/lunr/lunr.du.js create mode 100644 _static/javascripts/lunr/lunr.es.js create mode 100644 _static/javascripts/lunr/lunr.fi.js create mode 100644 _static/javascripts/lunr/lunr.fr.js create mode 100644 _static/javascripts/lunr/lunr.hu.js create mode 100644 _static/javascripts/lunr/lunr.it.js create mode 100644 _static/javascripts/lunr/lunr.ja.js create mode 100644 _static/javascripts/lunr/lunr.jp.js create mode 100644 _static/javascripts/lunr/lunr.multi.js create mode 100644 _static/javascripts/lunr/lunr.nl.js create mode 100644 _static/javascripts/lunr/lunr.no.js create mode 100644 _static/javascripts/lunr/lunr.pt.js create mode 100644 _static/javascripts/lunr/lunr.ro.js create mode 100644 _static/javascripts/lunr/lunr.ru.js create mode 100644 _static/javascripts/lunr/lunr.stemmer.support.js create mode 100644 _static/javascripts/lunr/lunr.sv.js create mode 100644 _static/javascripts/lunr/lunr.th.js create mode 100644 _static/javascripts/lunr/lunr.tr.js create mode 100644 _static/javascripts/lunr/tinyseg.js create mode 100644 _static/javascripts/lunr/wordcut.js create mode 100644 _static/javascripts/modernizr.js create mode 100644 _static/javascripts/version_dropdown.js create mode 100644 _static/jquery.js create mode 100644 _static/jquery.min.map create mode 100644 _static/language_data.js create mode 100644 _static/logo.svg create mode 100644 _static/material.css create mode 100644 _static/minus.png create mode 100644 _static/plus.png create mode 100644 _static/pygments.css create mode 100644 _static/searchtools.js create mode 100644 _static/sphinx_highlight.js create mode 100644 _static/stylesheets/application-fixes.css create mode 100644 _static/stylesheets/application-palette.css create mode 100644 _static/stylesheets/application.css create mode 100644 _static/stylesheets/f4pga.css create mode 100644 community.html create mode 100644 development/building-docs.html create mode 100644 development/changes.html create mode 100644 development/venv.html create mode 100644 f4pga/Deprecated.html create mode 100644 f4pga/DevNotes.html create mode 100644 f4pga/Usage.html create mode 100644 f4pga/index.html create mode 100644 f4pga/modules/fasm.html create mode 100644 f4pga/modules/generic_script_wrapper.html create mode 100644 f4pga/modules/index.html create mode 100644 f4pga/modules/io_rename.html create mode 100644 f4pga/modules/mkdirs.html create mode 100644 f4pga/modules/pack.html create mode 100644 f4pga/modules/place.html create mode 100644 f4pga/modules/place_constraints.html create mode 100644 f4pga/modules/route.html create mode 100644 f4pga/modules/synth.html create mode 100644 flows/bitstream.html create mode 100644 flows/f4pga.html create mode 100644 flows/index.html create mode 100644 flows/pnr.html create mode 100644 flows/synthesis.html create mode 100644 genindex.html create mode 100644 getting-started.html create mode 100644 glossary.html create mode 100644 how.html create mode 100644 index.html create mode 100644 objects.inv create mode 100644 references.html create mode 100644 search.html create mode 100644 searchindex.js create mode 100644 status.html diff --git a/.buildinfo b/.buildinfo new file mode 100644 index 000000000..7fa0658ee --- /dev/null +++ b/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. +config: 3a9ef3d141e453497a9073aadc74952b +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 000000000..e69de29bb diff --git a/_images/EDA.svg b/_images/EDA.svg new file mode 100644 index 000000000..28c7d456b --- /dev/null +++ b/_images/EDA.svg @@ -0,0 +1,3 @@ + + +
Hardware
Description Languages
Hardware...
Synthesis tools
Synthesis to...
FPGA tools
FPGA tools
ASIC tools
ASIC tools
Verification, Testing and Simulation
Verification, Testing and Simulation
Description
Description
Frontend
Frontend
Backend
Backend
Text is not SVG - cannot display
\ No newline at end of file diff --git a/_images/flow.png b/_images/flow.png new file mode 100644 index 0000000000000000000000000000000000000000..1f6e7bbbaff4032f9aee5eb535b8bed6ea50c269 GIT binary patch literal 10682 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 TK9g-glZhewR1r}sY2g1~QUAn$ literal 0 HcmV?d00001 diff --git a/_images/hero.svg b/_images/hero.svg new file mode 100644 index 000000000..92c154a40 --- /dev/null +++ b/_images/hero.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/_images/parts.svg b/_images/parts.svg new file mode 100644 index 000000000..bad3d3551 --- /dev/null +++ b/_images/parts.svg @@ -0,0 +1,3 @@ + + +
Yosys           
ABC             
Yosys...
Verification, Testing and Simulation
Verification, Testing and Simulation
Description
Description
Frontend
Frontend
Backend
Backend
GHDL
GHDL
Surelog
UHDM
Surelog...
VHDL
VHDL
System Verilog
System Ver...
Verilog
Verilog
Project IceStorm
Project IceS...
Project X-Ray
Project X-Ray
Project U-Ray
Project U-Ray
Project Trellis
Project Trel...
QuickLogic DB
QuickLogic DB
Project Apicula
Project Apic...
Project Oxide
Project Oxide
Verilog to Routing
Verilog to...
nextpnr
nextpnr
Amaranth
Amaranth
Architecture definitions
Architecture definitions
Clash
Clash
SpinalHDL
SpinalHDL
Chisel
Chisel
BlueSpec
BlueSpec
migen/Litex
migen/Litex
Silice
Silice
Synthesijer
Synthesijer
HLS
HLS
PipelineC
PipelineC
Interchange logical netlist
Interchange logical netl...
FASM
FASM
icepack
icepack
ecppack
ecppack
RapidWright
(Vivado)
RapidWrig...
Interchange physical netlist
Interchange physical netli...
Text is not SVG - cannot display
\ No newline at end of file diff --git a/_images/step.png b/_images/step.png new file mode 100644 index 0000000000000000000000000000000000000000..e63a904e7f79ca6a72e797b8f15ba6acbab62a9d GIT binary patch literal 11200 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
E7P+YO@qU;Hawt#|ySwlNs;~vs4 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 DM)7Dk literal 0 HcmV?d00001 diff --git a/_images/tool.png b/_images/tool.png new file mode 100644 index 0000000000000000000000000000000000000000..b6cfc4467c7e9cff18c98e87933bb2fd70405be8 GIT binary patch literal 5495 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_sources/community.rst.txt b/_sources/community.rst.txt new file mode 100644 index 000000000..d284ba517 --- /dev/null +++ b/_sources/community.rst.txt @@ -0,0 +1,72 @@ +.. _Community: + +Community +######### + +`FOSS Flows For FPGA (F4PGA) `__ project is a `Workgroup `__ +under the `CHIPS Alliance `__. +The F4PGA Workgroup consists of members from different backgrounds, including FPGA vendors +(`Xilinx `__ +and `QuickLogic `__), +industrial users +(`Google `__ +and `Antmicro `__) +and academia +(`University of Toronto `__), +who collaborate to build a more open source and software-driven FPGA ecosystem (IP, tools and workflows) to drive the +adoption of FPGAs in existing and new use cases, and eliminate barriers of entry. + +Communication +============= + +* `Twitter [@f4pga] `__ + +* `Slack [chipsalliance.slack.com] `__ + + .. TIP:: + To register to CHIPS Alliance Slack workspace, use the following `Slack Invite `__. + +* `IRC [irc.libera.chat/#F4PGA] `__ + +* `Mailing list [lists.chipsalliance.org/g/f4pga-wg] `__ + +Sources +======= + +* :gh:`github.com/chipsalliance ` + +* :gh:`github.com/F4PGA ` + +.. _Contributing: + +Contributing +============ + +Are you interested in helping this project move forward? +F4PGA is a collaborative project and we welcome your contributions. +The code is available on GitHub, while the HTML documentation is available on Read The Docs. +There are multiple areas and technologies we need help with - reach out to us, we're sure we will find something for you. + +* Do you know **Python**? + Almost all scripts are written in Python! + +* Do you know **C++**? + VPR & nextpnr & libraries written in C++! + +* Do you know **TCL**? + All the EDA tools use TCL! + +* Do you know **(System) Verilog**, **VHDL**, **Chisel**, **Migen** and/or **Amaranth**? + Simulation and models are written in Hardware Description Languages (HDLs)! + +* Do you know **XML**? + Most file formats are XML! + +* Do you know English? + Documentation is written in English! + +* Do you know **Docker** and/or **Podman**? + Help make it easier to set up F4PGA! + +* Do you have time? + We will find you a task! diff --git a/_sources/development/building-docs.rst.txt b/_sources/development/building-docs.rst.txt new file mode 100644 index 000000000..e11c541e1 --- /dev/null +++ b/_sources/development/building-docs.rst.txt @@ -0,0 +1,15 @@ +Building the documentation +########################## + +Activate the virtual environment and install dependencies:: + + make env + make enter + +Build the whole documentation:: + + make html + +For more options see:: + + make help diff --git a/_sources/development/changes.rst.txt b/_sources/development/changes.rst.txt new file mode 100644 index 000000000..4c88cb5b6 --- /dev/null +++ b/_sources/development/changes.rst.txt @@ -0,0 +1,4 @@ +Changes +####### + +.. include:: changes.inc diff --git a/_sources/development/venv.rst.txt b/_sources/development/venv.rst.txt new file mode 100644 index 000000000..a303f0454 --- /dev/null +++ b/_sources/development/venv.rst.txt @@ -0,0 +1,10 @@ +Packages in virtual environment +############################### + +To install packages in conda environment you can use both +``conda`` and ``pip``. + +Note that ``pip`` is installed in the conda environment which uses ``python3``, +and is related to ``pip3`` **inside** the virtual environment, +whereas invocation of ``pip3`` directly uses your **system** ``pip3`` instance, +typically located in ``/usr/bin/pip3`` diff --git a/_sources/f4pga/Deprecated.rst.txt b/_sources/f4pga/Deprecated.rst.txt new file mode 100644 index 000000000..d7df40f8b --- /dev/null +++ b/_sources/f4pga/Deprecated.rst.txt @@ -0,0 +1,194 @@ +.. _Understanding: + +Understanding the (deprecated) flow +################################### + +.. IMPORTANT:: + This section describes the usage of the now deprecated ``symbiflow_*`` entrypoints/wrappers. + It is provided for backwards compatibility, so that users of the *old* flow can keep using it. + However, it is recommended for new users to use the approach explained in :ref:`pyF4PGA`. + +This section provides valuable information on how each of the commands used to compile and build +designs in F4PGA work. It is especially helpful for debugging or for using methods +other than a makefile to build your designs, such as a bash or python script. + +The following describes the commands for running each of the steps for a full design flow +(synthesis, place and route, and generate bitstream) as well as giving a description of the most +common flags for those commands. If you would like a more detailed break down of how the design +flow for F4PGA works take a look at the :ref:`Design Flows section `. + +.. note:: + + Files created by synthesis, implementation, and bitstream generation will be dumped into + the directory from which the command is run by default. To keep all of the files generated by + the toolchain separate from your design files, you might consider running the toolchain + commands in a separate directory from your design files. + + + +Synthesis +========= + +To synthesize your designs run the ``symbiflow_synth`` command. The command has the following +flags: + +.. table:: symbiflow_synth + + +------+---------------------------------------------------------------+ + | Flag | Argument | + +======+===============================================================+ + | -t | Defines the name for the top level module | + +------+---------------------------------------------------------------+ + | -v | A list of paths to verilog files for the design | + +------+---------------------------------------------------------------+ + | -d | FPGA family (i.e. artix7 or zynq7) | + +------+---------------------------------------------------------------+ + | -p | The part number for the FPGA (i.e xc7a35tcsg324-1) | + +------+---------------------------------------------------------------+ + | -x | Optional command: path to xdc files for design | + +------+---------------------------------------------------------------+ + + +An example of how to run synthesis on a design containing two separate +verilog HDL files is below. The design is built for a basys3 board which comes from the artix7 +family and uses the xc7a35tcpg236-1 chip. + +.. code-block:: bash + + symbiflow_synth -t top -v example.v top_example.v -d artix7 -p xc7a35tcpg236-1 -x design_constraint.xdc + +Synthesis is carried out using the Yosys open source tool. ``symbiflow_synth`` generates +an .eblif file, a few verilog netlists that describe the gate level design for your project, and a log +file. For more information on Yosys and its relation to F4PGA go to :ref:`Flows:F4PGA:Yosys`. + +.. note:: + The build files generated by the toolchain (for example .eblif from synthesis, .net from + packing, .bit from generate bitstream) are named using the top module specified in + symbiflow_synth. For example if you specified ``switch_top`` as the top level module name + during synthesis using the ``-t`` flag, the build files generated by the toolchain would be + named switch_top.eblif, switch_top.net, etc. + + +Place and Route +=============== + +The three steps for implementing a design are internally handled by the open source VPR +(Versatile Place and Route) tool. For more information go to `VPR ➚ `__. + +Pack +---- + +Packing is run by the ``symbiflow_pack`` command and generates several files containing +a pin usage report, a timing report, a log file, and a netlist. The various flags for the +pack command are as follows: + +.. table:: symbiflow_pack + + +------+--------------------------------------------------------------------+ + | Flag | Argument | + +======+====================================================================+ + | -e | Path to .eblif file generated by synthesis | + +------+--------------------------------------------------------------------+ + | -d | Fabric definition for the board (i.e. xc7a100t_test) | + +------+--------------------------------------------------------------------+ + | -s | Optional: SDC file path | + +------+--------------------------------------------------------------------+ + +Note that the -d option for this step (defining the fabric definition) is different +from the -d from synthesis (defining the FPGA family). + +The following example runs packing on the basys3 board: + +.. code-block:: bash + + symbiflow_pack -e top.eblif -d xc7a35t_test + +Place +----- + +Placement generates several files describing the location of design elements +as well as a log file. Placement is run using ``symbiflow_place`` which utilizes +the following flags: + +.. table:: symbiflow_place + + +------+----------------------------------------------------+ + | Flag | Argument | + +======+====================================================+ + | -e | Path to .eblif file generated by synthesis | + +------+----------------------------------------------------+ + | -d | Fabric definition (xc7a50t_test) | + +------+----------------------------------------------------+ + | -p | Optional: PCF file path | + +------+----------------------------------------------------+ + | -n | Path to the .net file generated by pack step | + +------+----------------------------------------------------+ + | -P | The part number for the FPGA (i.e xc7a35tcsg324-1) | + +------+----------------------------------------------------+ + | -s | Optional: SDC file path | + +------+----------------------------------------------------+ + +For the basys3: + +.. code-block:: bash + + symbiflow_pack -e top.eblif -d xc7a35t_test -p design.pcf -n top.net -P xc7a35tcpg236-1 -s design.sdc + + +Route +----- + +Routing produces several timing reports as well as a post routing netlist and log file. +``symbiflow_route`` uses the -e, -d, and the optional -s flags. The arguments for these flags +are the same as in the placement step (.eblif, fabric definition, and SDC file path respectively). +The following is an example: + +.. code-block:: bash + + symbiflow_route -e top.eblif -d xc7a35t_test -s design.sdc + + +Generating Bitstream +==================== + +Generating the bitstream consists of two steps. First, run ``symbiflow_write_fasm`` to generate +the .fasm file used to create the bitstream. ``symbiflow_write_fasm`` uses the -e and -d flags +with the same arguments as the placing and routing steps (.eblif path, and fabric definition). +Second, run ``symbiflow_write_bitstream`` which has the following flags: + +.. table:: symbiflow_write_bitstream + + +------+-------------------------------------------------------+ + | Flag | Argument | + +======+=======================================================+ + | -d | FPGA family (i.e. artix7 or zynq7) | + +------+-------------------------------------------------------+ + | -f | The path to the .fasm file generated in by write_fasm | + +------+-------------------------------------------------------+ + | -p | The FPGA part number (i.e xc7a35tcsg324-1) | + +------+-------------------------------------------------------+ + | -b | Name of the file to write the bitstream to | + +------+-------------------------------------------------------+ + +Notice that the specification for the part number is a lowercase ``-p`` instead of a capital +``-P`` as in the placement step. Also note that the ``-d`` in write_bitstream defines the FPGA +family instead of the fabric as in the write_fasm step. + +.. warning:: + + If you change the name of the output for your bitstream to something other than top.bit then the + openFPGALoader command used in the examples would need to change too. For example if I used + ``-b my_module_top`` in symbiflow_write_bitstream then my openFPGALoader command would change to: + + .. code-block:: bash + + openFPGALoader -b $OFL_BOARD my_module_top.bit + + Note that the only part of the command that changes is ".bit;" + +The following example generates a bitstream file named example.bit for the basys3 board: + +.. code-block:: bash + + symbiflow_write_fasm -e top.eblif -d xc7a50t_test + symbiflow_write_bitstream -d artix7 -f top.fasm -p xc7a35tcpg236-1 -b example.bit diff --git a/_sources/f4pga/DevNotes.md.txt b/_sources/f4pga/DevNotes.md.txt new file mode 100644 index 000000000..982a92846 --- /dev/null +++ b/_sources/f4pga/DevNotes.md.txt @@ -0,0 +1,103 @@ +# Developer's notes +##### Last update: 2022-05-06 + +:::{warning} +These notes are provided as-is and they shouldn't be treated as a full-blown accurate +documentation, but rather as a helpful resource for those who want to get involved with +development of _f4pga_. These are not updated regularly. + +For more detailed, up-to-date information about the code, refer to the pydoc documentation. +::: + +## Project's structure + +* `__init__.py` contains the logic and entry point of the build system +* `argparser.py` contains boring code for CLI interface +* `cache.py` contains code needed for tracking modifications in the project. +* `common.py` contains code shared by the main utility and the modules +* `flow_config.py` contains code for reading and accessing flow definitions and configurations +* `module_inspector.py` contains utilities for inspecting I/O of modules +* `module_runner.py` contains code required to load modules at run-time +* `module.py` contains definitions required for writing and using f4pga modules +* `part_db.json` contains mappings from part names to platform names +* `setup.py` contains a package installation script +* `stage.py` contains classes relevant to stage representation +* `modules` contains loadable modules +* `platforms` contains platform flow definitions + +:::{important} +Through the codebase _f4pga_ (tool) might be often referenced as _sfbuild_. +Similarly, _F4PGA_ (toolchain) might get called _Symbiflow_. +This is due to the project being written back when _F4PGA_ was called _Symbiflow_. +::: + +## Different subsystems and where to find them? + +### Building and dependency resolution + +All the code regarding dependency resolution is located in `__init__.py` file. +Take a look at the `Flow` class. + +Most of the work is done in `Flow._resolve_dependencies` method. Basically it +performs a _DFS_ with _stages_ (instances of _f4pga modules_) as its nodes +which are linked using symbolic names of dependencies on inputs and outputs. +It queries the modules for information regarding i/o (most importantly the paths +on which they are going to produce outputs), checks whether +their inputs are going to be satisfied, checks if dependencies were modified, etc. + +The actual building is done using `Flow._build_dep` procedure. It uses a similar +_DFS_ approach to invoke modules and check their inputs and outputs. + +### Modification tracking + +Modification tracking is done by taking, comparing and keeping track of `adler32` +hashes of all dependencies. Each dependency has a set of hashes associated with it. +The reason for having multiple hashes is that a dependency may have multiple +"_consumers_", ie. _stages_ which take it as input. Each hash is associated with +particular consumer. This is necessary, because the system tries to avoid rebuilds +when possible and status of each file (modified/unmodified) may differ in regards +to individual stages. + +Keeping track of status of each file is done using `F4Cache` class, which is +defined in `cache.py` file. `F4Cache` is used mostly inside `Flow`'s methods. + +### Internal environmental variable system + +_f4pga_ exposes some data to the user as well as reads some using internal +environmental variables. These can be referenced by users in +_platform flow definitions_ and _project flow configurations_ using the +`${variable_name}` syntax when defining values. They can also be read inside +_f4pga modules_ by accessing the `ctx.values` namespace. + +The core of its system is the `ResolutionEnvironemt` class which can be found +inside the `common` module. + +### Installation + +Check `CMakeLists.txt`. + +## TODO: + +* Define a clear specification for entries in _platform flow definitions_ and + _platform flow configurations_. Which environmental variables can be accessed + where, and when? + +* Force "_on-demand_" outputs if they are required by another stage. + This may require redesigning the "on-demand" feature, which currently works + by producing a dependency if and only if the user explicitly provides the + path. Otherwise the path is unknown. + +* Make commenting style consistent + +* Document writing flow definitions + +* Extend the metadata system for modules, perhaps make it easier to use. + +* Add missing metadata for module targets. + +* (_suggestion_) Generate platform definitions using CMake. + +### Out of the current scope + +* Change interfaces of some internal python scripts. This could lead to possibly + merging some modules for XC7 and Quicklogic into one common module. diff --git a/_sources/f4pga/Usage.md.txt b/_sources/f4pga/Usage.md.txt new file mode 100644 index 000000000..75b7a8e4b --- /dev/null +++ b/_sources/f4pga/Usage.md.txt @@ -0,0 +1,408 @@ +# Usage + +## Getting started + +To use `f4pga` you need a working Python 3 installation which should be included as a part of the conda virtual +environment set up during F4PGA installation. +`f4pga` is installed together with F4PGA, regardless of the version of the toolchain. +However, only _XC7_ architectures are supported currently and _Quicklogic_ support is a work in progress. + +To get started with a project that already uses `f4pga`, go to the project's directory and run the following line to +generate a bitstream: + +```bash +$ f4pga build -f flow.json +``` + +`flow.json` should be a *project flow configuration* file included with the project. +If you are unsure if you got the right file, you can check an example of the contents of such file shown in the +*Build a target* section below. + +The location of the bitstream will be indicated by `f4pga` after the flow completes. +Look for a line like this one on stdout: + +```bash +Target `bitstream` -> build/arty_35/top.bit +``` + +## Fundamental concepts + +If you want to create a new project, it's highly recommended that you read this section first. + +### f4pga + +`f4pga` is a modular build system designed to handle various _Verilog-to-bitstream_ flows for FPGAs. +It works by wrapping the necessary tools in Python, which are called *f4pga modules*. +Modules are then referenced in *platform flow definition* files, together with configuration specific for a given +platform. +Flow definition files for the following platforms are included as a part of _f4pga_: + +* **AMD Xilinx x7a50t** (and architecturally equivalent devices, such as x7a35t) +* **AMD Xilinx x7a100t** +* **AMD Xilinx x7a200t** +* **Quicklogic EOS-S3** (currently unsupported, provided only for development purposes) +* **Quicklogic K4N8** (currently unsupported, provided only for development purposes) + +You can also write your own *platform flow definition* file if you want to bring support for a different device. + +Each project that uses `f4pga` to perform any flow should include a _.json_ file describing the project. +The purpose of that file is to configure inputs for the flow and override configuration values if necessary. + +### Modules + +A *module* (also referred to as *f4pga module* in situations where there might be confusion between arbitrary Python +_modules_ and f4pga _modules_) is a Python script that wraps a tool used within the F4PGA ecosystem. +The main purpose of the wrappers is to provide a unified interface for `f4pga` to use and to configure the tool, +as well as provide information about files required and produced by the tool. + +### Dependencies + +A *dependency* is any file, directory or a list of such that a *module* takes as its input or produces on its output. + +Modules specify their dependencies by using symbolic names instead of file paths. +The files they produce are also given symbolic names and paths which are either set through *project flow configuration* +file or derived from the paths of the dependencies taken by the module. + +### Target + +*Target* is a dependency that the user has asked F4PGA to produce. + +### Flow + +A *flow* is set of *modules* executed in a right order to produce a *target*. + +### .f4cache + +All *dependencies* are tracked by a modification tracking system which stores hashes of the files +(directories get always `'0'` hash) in `.f4cache` file in the root of the project. +When F4PGA constructs a *flow*, it will try to omit execution of modules which would receive the same data on their +input. +There is a strong _assumption_ there that a *module*'s output remains unchanged if the input configuration isn't +changed, ie. *modules* are deterministic. This is might be not true for some tools and in case you really want to re-run +a stage, there's a `--nocache` option that treats the `.f4cache` file as if it was empty. + +### Resolution + +A *dependency* is said to be *resolved* if it meets one of the following criteria: + +* it exists on persistent storage and its hash matches the one stored in .f4cache +* there exists such *flow* that all of the dependencies of its modules are *resolved* and it produces the *dependency* in + question. + +### Platform's flow definition + +*Platform flow definition* is a piece of data describing a space of flows for a given platform, serialized into a _JSON_. +It's stored in a file that's named after the device's name under `f4pga/platforms`. + +*Platform flow definition* contains a list of modules available for constructing flows and defines a set of values which +the modules can reference. +In case of some modules it may also define a set of parameters used during their construction. +`mkdirs` module uses that to allow production of of multiple directories as separate dependencies. +This however is an experimental feature which possibly will be removed in favor of having multiple instances of the same +module with renameable outputs. + +Not all *dependencies** have to be *resolved* at this stage, a *platform's flow definition* for example won't be able to +provide a list of source files needed in a *flow*. + +### Project's flow configuration + +Similarly to *platform flow definition*, *Projects flow configuration* is a _JSON_ that is used to configure *modules*. There are however a couple differences here and there. + +* The most obvious one is that this file is unique for a project and is provided by the user of `f4pga`. + +* The other difference is that it doesn't list *modules* available for the platform. + +* All the values provided in *projects flow configuration* will override those provided in *platform flow definition*. + +* It can contain sections with configurations for different platforms. + +* Unlike *platform flow definition* it can give explicit paths to dependencies. + +* At this stage all mandatory *dependencies* should be resolved. + +Typically *projects flow configuration* will be used to resolve dependencies for _HDL source code_ and _device constraints_. + +## Build a target + +### Using flow configuration file + +To build a *target* `target_name`, use the following command: + +```bash +$ f4pga build -f flow.json -p platform_device_name -t target_name +``` +where `flow.json` is a path to *projects flow configuration*. + +For example, let's consider the following *projects flow configuration (flow.json)*: + +```json +{ + "default_part": "XC7A35TCSG324-1", + "dependencies": { + "sources": ["counter.v"], + "xdc": ["arty.xdc"], + "synth_log": "synth.log", + "pack_log": "pack.log", + }, + "values": { + "top": "top" + }, + "XC7A35TCSG324-1": { + "default_target": "bitstream", + "dependencies": { + "build_dir": "build/arty_35" + } + } +} +``` + +It specifies list of paths to Verilog source files as `sources` dependency. +Similarly it also provides an `XDC` file with constrains (`xdc` dependency). + +It also names a path for synthesis and logs (`synth_log`, `pack_log`). +These two are optional on-demand outputs, meaning they won't be produces unless their paths are explicitly set. + +`top` value is set to in order to specify the name of top Verilog module, which is required during synthesis. + +`build_dir` is an optional helper dependency. +When available, modules will put their outputs into that directory. +It's also an _on-demand_ output of `mkdirs` module in _xc7a50t_ flow definition, which means that if specified directory +does not exist, `mkdirs` will create it and provide as `build_dir` dependency. + +With this flow configuration, you can build a bitstream for arty_35 using the +following command: + +``` +$ f4pga build -f flow.json -p XC7A35TCSG324-1 -t bitstream +``` + +Because we have `default_platform` defined, we can skip the `--part` argument. +We can also skip the `--target` argument because we have a `default_target` defined for the +chosen platform. This will default to the `bitstream` target of `xc7a50t` platform: + +``` +$ f4pga build -f flow.json +``` + +### Using Command-Line Interface + +Alternatively you can use CLI to pass the configuration without creating a flow file: + +``` +$ f4pga build -p XC7A35TCSG324-1 -Dsources=[counter.v] -Dxdc=[arty.xdc] -Dsynth_log=synth.log -Dpack_log=pack.log -Dbuild_dir=build/arty_35 -Vtop=top -t bitstream +``` + +CLI flow configuration can be used alongside a flow configuration file and will override +conflicting dependencies/values from the file. + +CLI configuration follows the following format: + +`=` + +`` is the name of dependency or value optionally prefixed by a stage +name and a dot (`.`). Using the notation with stage name sets the dependency/value only for the +specified stage. + +`` is a form of defining a dependency path or a value. Characters are interpreted +as strings unless the follow one of the following format: +* `[item1,item2,item3,...]` - this is a list of strings +* `{key1:value1,key2:value2,key3:value3,...}` - this is a dictionary + +Nesting structures is currently unsupported in CLI. + +### Pretend mode + +You can also add a `--pretend` (`-P`) option if you just want to see the results of dependency resolution for a +specified target without building it. +This is useful when you just want to know what files will be generated and where will they be stored. + +### Info mode + +Modules have the ability to include description to the dependencies they produce. + +Running `f4pga` with `--info` (`-i`) flag allows you to see descriptions of these dependencies. +This option doesn't require a target to be specified, but you still have to provide a flow configuration and platform +name. + +This is still an experimental option, most targets currently lack descriptions and no information whether the output is +_on-demand_ is currently displayed. + +Example: + +```bash +$ f4pga -v build -f flow.json -p XC7A35TCSG324-1 -i +``` + +``` +Platform dependencies/targets: + build_dir: + module: `mk_build_dir` + eblif: Extended BLIF hierarchical sequential designs file + generated by YOSYS + module: `synth` + fasm_extra: + module: `synth` + json: JSON file containing a design generated by YOSYS + module: `synth` + synth_json: + module: `synth` + sdc: + module: `synth` +``` + +:::{important} +This is only a snippet of the entire output. +::: + +### Summary of global options + +| long | short | arguments | description | +|-----------|:-----:|--------------------------|----------------------------------------------------------------------------| +| --verbose | -v | - | Control verbosity level. 0 for no verbose output. 2 for maximum verbosity | +| --silent | -s | - | Suppress any output | + +### Summary of all available sub-commands + +| name | description | +|---------|-----------------------------| +| build | Build a project | +| showd | Print value of a dependency + +### Summary of all options available for `build` sub-command + +| long | short | arguments | description | +|-------------|:-----:|--------------------------|---------------------------------------------------------| +| --flow | -f | flow configuration file | Use flow configuration file | +| --part | -p | part name | Specify target part name | +| --target | -t | target dependency name | Specify target to produce | +| --info | -i | - | Display information about available targets | +| --pretend | -P | - | Resolve dependencies without executing the flow | +| --nocache | | - | Do not perform incremental build (do full a full build) | +| --stageinfo | -S | stage name | Display information about a specified stage | +| --dep | -D | dependency_name=pathexpr | Add a dependency to configuration | +| --val | -V | value_name=valueexpr | Add a value to configuration | + +### Summary of all options available for `showd` sub-command + +| long | short | arguments | description | +|-------------|:-----:|--------------------------|-------------------------------------------------------------| +| --flow | -f | flow configuration file | Use flow configuration file | +| --part | -p | part name | Specify target part name | +| --stage | -s | part name | Specify stage name (to display stage-specific dependencies) | + +### Dependency resolution display + +F4PGA displays some information about dependencies when requesting a target. + +Here's an example of a possible output when trying to build `bitstream` target (use `-P`): + +``` +F4PGA Build System +Scanning modules... + +Project status: + [R] bitstream: bitstream -> build/arty_35/top.bit + [O] build_dir: build/arty_35 + [R] eblif: synth -> build/arty_35/top.eblif + [R] fasm: fasm -> build/arty_35/top.fasm + [R] fasm_extra: synth -> build/arty_35/top_fasm_extra.fasm + [R] io_place: ioplace -> build/arty_35/top.ioplace + [R] net: pack -> build/arty_35/top.net + [X] pcf: MISSING + [R] place: place -> build/arty_35/top.place + [R] place_constraints: place_constraints -> build/arty_35/top.preplace + [R] route: route -> build/arty_35/top.route + [R] sdc: synth -> build/arty_35/top.sdc + [N] sources: ['counter.v'] + [O] xdc: ['arty.xdc'] + +f4pga: DONE +``` + +The letters in the boxes describe the status of a dependency whose name is next to the box. + + * **X** - dependency unresolved. + Dependency is not present or cannot be produced. + This isn't always a bad sign. Some dependencies are not required to, such as `pcf`. + + * **O** - dependency present, unchanged. + This dependency is already built and is confirmed to stay unchanged during flow execution. + + * **N** - dependency present, new/changed. + This dependency is already present on the persistent storage, but it was either missing earlier, or its content + changed since the last time it was used. + + :::{warning} + It won't continue to be reported as "**N**" after a successful build of any target. + This may lead to some false "**O**"s in some complex scenarios. + This should be fixed in the future. + ::: + + * **S** - dependency not present, resolved. + This dependency is not currently available on the persistent storage, however it will be produced within flow's + execution. + + * **R** - dependency present, resolved, requires rebuild. + This dependency is currently available on the persistent storage, however it has to be rebuilt due to the changes in + the project. + +Additional info about a dependency will be displayed next to its name after a colon: + +* In case of dependencies that are to be built (**S**/**R**), there's a name of a module that will produce this + dependency, followed by `->` and a path or list of paths to file(s)/directory(ies) that will be produced as this + dependency. + +* In case of dependencies which do not require execution of any modules, only a path or list of paths to + file(s)/directory(ies) that will be displayed. + +* In case of unresolved dependencies (**X**), which are never produced by any module, a text saying "`MISSING`" will be + displayed. + +In the example above file `counter.v` has been modified and is now marked as "**N**". +This causes a bunch of other dependencies to be rebuilt ("**R**"). +`build_dir` and `xdc` were already present, so they are marked as "**O**". + +## Common targets and values + +Targets and values are named with some conventions. +Below are lists of the target and value names along with their meanings. + +### Need to be provided by the user + +| Target name | list | Description | +|-------------|:----:|-------------| +| `sources` | yes | Verilog sources | +| `sdc` | no | Synopsys Design Constraints | +| `xdc` | yes | Xilinx Design Constraints (available only for Xilinx platforms) | +| `pcf` | no | Physical Constraints File | + +### Available in most flows + +| Target name | list | Description | +|--------------|:----:|-----------------------------------------------------------------| +| `eblif` | no | Extended blif file | +| `bitstream` | no | Bitstream | +| `net` | no | Netlist | +| `fasm` | no | Final FPGA Assembly | +| `fasm_extra` | no | Additional FPGA assembly that may be generated during synthesis | +| `build_dir` | no | A directory to put the output files in | + +### Built-in values + +| Value name | type | Description | +|-----------------|----------|---------------------------------------------------| +| `shareDir` | `string` | Path to f4pga's installation "share" directory | +| `python3` | `string` | Path to Python 3 executable | +| `noisyWarnings` | `string` | Path to noisy warnings log (should be deprecated) | +| `prjxray_db` | `string` | Path to Project X-Ray database | + +### Used in flow definitions + +| Value name | type | Description | +|---------------|------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------| +| `top` | `string` | Top module name | +| `build_dir` | `string` | Path to build directory (should be optional) | +| `device` | `string` | Name of the device | +| `vpr_options` | `dict[string -> string \| number]` | Named options passed to VPR. No `--` prefix included. | +| `part_name` | `string` | Name of the chip used. The distinction between `device` and `part_name` is ambiguous at the moment and should be addressed in the future. | +| `arch_def` | `string` | Path to an XML file containing architecture definition. | diff --git a/_sources/f4pga/index.rst.txt b/_sources/f4pga/index.rst.txt new file mode 100644 index 000000000..3bde79a01 --- /dev/null +++ b/_sources/f4pga/index.rst.txt @@ -0,0 +1,29 @@ +.. _pyF4PGA: + +Overview +######## + +Python F4PGA is a package containing multiple modules to facilitate the usage of all the tools integrated in the F4PGA +ecosystem, and beyond. +The scope of Python F4PGA is threefold: + +* Provide a fine-grained *pythonic* interface to the tools and utilities available as either command-line interfaces + (CLIs) or application proggraming interfaces (APIs) (either web or through shared libraries). +* Provide a CLI entrypoint covering the whole flows for end-users to produce bitstreams from HDL and/or software sources. +* Provide a CLI entrypoint for developers contributing to bitstream documentation and testing (continuous integration). + +.. ATTENTION:: + This is work-in-progress to adapt and organize the existing shell/bash based plumbing from multiple F4PGA repositories. + Therefore, it's still a *pre-alpha* and the codebase, commands and flows are subject to change. + It is strongly suggested not to rely on Python F4PGA until this note is updated/removed. + +References +========== + +* :gh:`chipsalliance/fpga-tool-perf#390@issuecomment-1023487178 ` +* :ghsharp:`2225` +* :ghsharp:`2371` +* :ghsharp:`2455` +* `F4PGA GSoC 2022 project ideas: Generalization of wrapper scripts for installed F4PGA toolchain and making them OS agnostic `__ +* :gh:`FuseSoc ` | :gh:`Edalize ` +* `Electronic Design Automation Abstraction (EDA²) `__ diff --git a/_sources/f4pga/modules/fasm.md.txt b/_sources/f4pga/modules/fasm.md.txt new file mode 100644 index 000000000..2395c6324 --- /dev/null +++ b/_sources/f4pga/modules/fasm.md.txt @@ -0,0 +1,18 @@ +# fasm + +The _fasm_ module generates FPGA assembly using `genfasm` (VPR-only). + +The module should guarantee the following outputs: + * `fasm` + +For detailed information about these targets, please refer to +`docs/common targets and variables.md` + +The setup of the synth module follows the following specifications: + +## Values + +The `fasm` module accepts the following values: + +* `pnr_corner` (string, optional): PnR corner to use. Relevant only for Quicklogic's + eFPGAs. \ No newline at end of file diff --git a/_sources/f4pga/modules/generic_script_wrapper.md.txt b/_sources/f4pga/modules/generic_script_wrapper.md.txt new file mode 100644 index 000000000..77aa0f28c --- /dev/null +++ b/_sources/f4pga/modules/generic_script_wrapper.md.txt @@ -0,0 +1,41 @@ +# generic_script_wrapper + +This module provides a way to integrate an external command into an f4pga flow. +Its inputs and outputs are fully defined by the author of flow definition. + +## Parameters + +Parameters are everything when it comes to this module: + +* `stage_name` (string, optional): Name describing the stage +* `script` (string, mandatory): Path to the script to be executed +* `interpreter` (string, optional): Interpreter for the script +* `cwd` (string, optional): Current Working Directory for the script +* `outputs` (dict[string -> dict[string -> string]], + mandatory): + A dict with output descriptions (dicts). Keys name output dependencies. + * `mode` (string, mandatory): "file" or "stdout". Describes how the output is + grabbed from the script. + * `file` (string, required if `mode` is "file"): Name of the file generated by the + script. + * `target` (string, required): Default name of the file of the generated + dependency. You can use all values available during map_io stage. Each input + dependency also gets two extra values associated with it: + `:dependency_name[noext]`, which contains the path to the dependency the + extension with anything after last "." removed and `:dependency_name[dir]` which + contains directory paths of the dependency. This is useful for deriving an output + name from the input. + * `meta` (string, optional): Description of the output dependency. +* `inputs` (dict[string -> string | bool], mandatory): + A dict with input descriptions. Key is can be a name of a named argument, a + position of unnamed argument, when prefaced with "#" (eg. "#1"), or a name of an + environmental variable, when prefaced with "$". Positions are indexed + from 1, as it's a convention that 0th argument is the path of the executed program. + Values are strings that can contain references to variables to be resolved + after the project flow configuration is loaded (that means they can reference + values and dependencies which are to be set by the user). All of modules inputs + will be determined by the references used. Thus dependency and value definitions + are implicit. If the value of the resolved string is empty and is associated with a + named argument, the argument in question will be skipped entirely. This allows + using optional dependencies. To use a named argument as a flag instead, set it to + `true`. diff --git a/_sources/f4pga/modules/index.md.txt b/_sources/f4pga/modules/index.md.txt new file mode 100644 index 000000000..23248ea77 --- /dev/null +++ b/_sources/f4pga/modules/index.md.txt @@ -0,0 +1,278 @@ +# Modules + +## Interface + +This document contains all the information needed to configure modules for +your _**f4pga**_ project as well as some info about the API used to write +modules. + +### Configuration interface: + +Modules are configured through an internal API by _**f4pga**_. +The basic requirement for a module script is to expose a class with `Module` +interface. + +_**f4pga**_ reads its configuration from two different sources: +**platform's flow definition**, which is a file that usually comes bundled with f4pga +and **project's flow configuration**, which is a set of configuration options provided by the user +through a JSON file or CLI interface. + +Those sources contain snippets of _module configurations_. + +A _module configuration_ is a structure with the following fields: + +* `takes` - a dictionary that contains keys which are names of the dependencies used by the module. + The values are paths to those dependencies. + They can be either singular strings or lists of strings. + +* `produces` - a dictionary that contains keys which are names of the dependencies produced by the module. + The values are requested filenames for the files generated by the module. + They can be either singular strings or lists of strings. + +* `values` - a dictionary that contains other values used to configure the module. + The keys are value's names and the values can have any type. + +### Platform-level configuration + +In case of **platform's flow definition**, a `values` dictionary can be defined +globally and the values defined there will be passed to every module's config. + +Those values can be overridden per-module through `module_options` dictionary. + +Parameters used during module's construction can also be defined in `module_options` +as `params` (those are not a part of _module configuration_, instead they are used +during the actual construction of a module instance, before it declares any of its +input/outputs etc.. This is typically used to achieve some parametrization over module's +I/O). + +Defining dictionaries for `takes` and `produces` is currently disallowed within +**platform's flow definition**. + +For examples of **platform's flow definition** described here, please have a look at +`f4pga/platforms/` directory. It contains **platform flow definitions** that come bundled +with f4pga. + +### Project-level configuration + +This section describes **project's flow configuration**. + +Similarly to **platform's flow definition**, `values` dict can be provided. +The values provided there will overwrite the values from +**platform's flow definition** in case of a collision. + +Unlike **platform's flow definition**, **project's flow configuration** may contain +`dependencies` dict. This dictionary would be used to map symbolic dependency +names to actual paths. Most dependencies can have their paths resolved implicitly +without the need to provide explicit paths, which is a mechanism that is described +in a later section of this document. However some dependencies must be provided +explicitly, eg. paths to project's Verilog source files. It should be noted that +depending on the flow definition and the dependency in question, the path does not +necessarily have to point to an already existing file. If the dependency is a +product of a module within the flow, the path assigned to it will be used +by the module to build that dependency. This is also used to in case of _on-demand_ +dependencies, which won't be produced unless the user explicitly provides a path +for them. + +**project's flow configuration** cannot specify `params` for modules and does not +use `module_options` dictionary. Neither it can instantiate any extra stages. + +Any entry with a couple _exceptions*_ is treated as a platform name. +Enabling support for a given platform within a **project's flow configuration** file +requires having an entry for that platform. +Each of those entries may contain `dependencies`, `values` fields which will +overload the `dependecies` and `values` defined in a global scope of +**project's flow configuration**. Any other field under those platform entries +is treated as a _stage-specific-configuration_. The key is a name of a stage within +a flow for the specified platform and the values are dicts which may contain +`dependencies` and `values` fields that overload `dependencies` and `values` +respectively, locally for the stage. Additionally a `default_target` field can be +provided to specify a default target to built when the user does not specify it through +a CLI interface. + +The aforementioned _*exceptions_ are: + +* `dependencies` - dependencies shared by all platforms. +* `values` - values shared by all platforms +* `default_platform` - default platform to chose in case it doesn't get specified + by the user + +Those apply only to flow configuration file. + +### Internal environmental variables + +It's very useful to be able to refer to some data within +**platform's flow definition** and **project's flow configuration** to +either avoid redundant definitions or to store and access results of certain operations. +_**f4pga**_ allows doing that by using a special syntax for accessing internal +environmental variables. + +The syntax is `${variable_name}`. Any string value within +**platform's flow definition** and **project's flow configuration** that contains +such patterns will have them replaced with the values of the variables referenced +if those values are strings. Eg.: + +With the following values defined: + +```json +{ + "a_value": "1234", + "another_value": "a_value: ${a_value}" +} +``` + +`another_value` will resolve to: + +```json +"a_value: 1234" +``` + +If the value is a list however, the result would be a list with all entries being +the original string with the reference to a variable replaced by following +items of the original list. Eg.: + +With the following values defined +```json +{ + "list_of_values": ["a", "b", "c"], + "some_string": "item: ${list_of_values}" +} +``` + +`some_string` will resolve to + +```json +["item: a", "item: b", "item: c"] +``` + +Be careful when using this kind of resolution, as it's computational and memory +complexity grows exponentially in regards to the number of list variables being +referenced, which is a rather obvious fact, but it's still worth mentioning. + +The variables that can be referenced within a definition/configuration fall into 3 +categories: + +* **value references** - anything declared as a `value` can be accessed by it's + name +* **dependency references** - any dependency path can be referenced using the name + of the dependency prefaced with a ':' prefix. Eg.: `${:eblif}` will resolve + to the path of `eblif` dependency. Make sure that the dependency can be + actually resolved when you are using this kind of reference. For example + you can't use the a reference to `eblif` dependency in a module which does not + rely on it. An exception is the producer module which can in fact reference it's + own outputs but these references cannot be used during the _mapping_ stage + (more on that later). +* **built-in references** - there are a couple of built-in variables which are very + handy: + * `shareDir` - path to f4pga's _share_ directory. + * `binDir` - path to f4pga's _bin_ directory. + * `prjxray_db` - Project X-Ray database path. + * `python3` - path to Python 3 interpreter. + * `noisyWarnings` - (this one should probably get removed) + +### `Module` class + +Each module is represented as a class derived from `Module` class. + +The class should implement the following methods: + +* `execute(self, ctx: ModuleContext)` - executes the module in _exec_ mode +* `map_io(self, ctx: ModuleContext) -> 'dict[str, ]'` - executes the module in + _mapping_ mode +* `__init__(self, params: 'dict[str, ]')` - initializer. The `params` + is a dict with optional parameter for the module. + +Each module script should expose the class by defining it's name/type alias as +`ModuleClass`. f4pga tries to access a `ModuleClass` attribute within a package +when instantiating a module. + +### Module's execution modes + +A module has essentially two execution modes: + +* _mapping_ mode +* _exec_ mode + +#### _mapping_ mode + +In _mapping_ mode the module is provided with an incomplete configuration which +includes: + * `takes` namespace: this maps names of input dependencies to the paths of these + dependencies + * `values` namespace: this maps names of variables to the values of those + variables. + +The module has to provide a dictionary that will provide every output dependency +that's not _on-demand_ a default path. This is basically a promise that when +executed in _exec_ mode, the module will produce files for this paths. +Typically such paths would be derived from a path of one of it's input dependencies. +This mechanism allows the user to avoid specifying an explicit path for each +intermediate target. + +It should be noted that variables referring to the output dependencies +can't be accessed at this stage for the obvious reason as their values are yet +to be evaluated. + +#### _exec_ mode + +In _exec_ mode the module does the actual work. + +The configuration passed into this mode is full and it includes: + +* `takes` namespace: this maps names of input dependencies to the paths of these + dependencies +* `values` namespace: this maps names of variables to the values of those + variables. +* `produces` namespace: this maps names of output dependencies to explicit paths. + This should not be used directly really, but it's useful for + `ModuleContext.is_output_explicit` method. +* `outputs` namespace: this maps names of output dependencies to their paths. + +When the module finishes executing in _exec_ mode, all of the dependencies +described in `outputs` should be present. + +### Module initialization/instantiation + +In the `__init__` method of module's class, the following fields should be +set: + +* `takes` - a list of symbolic dependency names for dependencies used by the module +* `produces` - a list of symbolic dependencies names for dependencies produced + by the module. +* `values` - a list of names given to the variables used withing the module +* `prod_meta` - A dictionary which maps product names to descriptions of these + products. Those entries are optional and can be skipped. + +#### Qualifiers/decorators + +By default the presence of all the dependencies and values is mandatory +(In case of `produces` that means that the module always has to produce the listed +dependencies). This can be changed by "decorating" a name in one of the following +ways: + +* '`?`' _suffix_ + * In `takes` - the dependency is not necessary for the module to execute + * In `produces` - the dependency may be produced, but it is not guaranteed. + * In `values` the value is not required for the module to execute. + Referring to it through `ModuleContext.values.value_name` won't raise an + exception if the value is not present, instead `None` will be returned. +* '`!`' _suffix_ + * In `produces` - the dependency is going to be produced only if the user + provides an explicit path for it. + +Currently it's impossible to combine both '`!`' and '`?`' together. This limitation +does not have any reason behind it other than the way the qualifier system +is implemented at the moment. It might be removed in the future. + +## Common modules + +```{toctree} +fasm +generic_script_wrapper +io_rename +mkdirs +pack +place +place_constraints +route +synth +``` diff --git a/_sources/f4pga/modules/io_rename.md.txt b/_sources/f4pga/modules/io_rename.md.txt new file mode 100644 index 000000000..ee59125c8 --- /dev/null +++ b/_sources/f4pga/modules/io_rename.md.txt @@ -0,0 +1,25 @@ +# io_rename + +This module provides a way to rename (ie. change) dependencies and values of an +instance of a different module. It wraps another, module whose name is specified in `params.module` and changes the names of the dependencies and values it relies on. + +## Parameters + +* `module` (string, required) - name of the wrapped module +* `params` (dict[string -> any], optional): parameters passed to the wrapped + module instance. +* `rename_takes` (dict[string -> string]) - mapping for inputs ("takes") +* `rename_produces` (dict[string -> string]) - mapping for outputs ("products") +* `rename_values` (dict[string -> string]) - mapping for values + +In the three mapping dicts, keys represent the names visible to the wrapped module +and values represent the names visible to the modules outside. +Not specifying a mapping for a given entry will leave it with its original name. + +## Values + +All values specified for this modules will be accessible by the wrapped module. + +## Extra notes + +This module might be removed in the future in favor of a native renaming support. diff --git a/_sources/f4pga/modules/mkdirs.md.txt b/_sources/f4pga/modules/mkdirs.md.txt new file mode 100644 index 000000000..01e491e2e --- /dev/null +++ b/_sources/f4pga/modules/mkdirs.md.txt @@ -0,0 +1,9 @@ +# mkdirs + +This modules creates directories specified by the author of flow definition +as its targets.. + +## Parameters + +Each key serves as a name of a directory to be created, while the value is the +path for that directory. \ No newline at end of file diff --git a/_sources/f4pga/modules/pack.md.txt b/_sources/f4pga/modules/pack.md.txt new file mode 100644 index 000000000..c3b05bd35 --- /dev/null +++ b/_sources/f4pga/modules/pack.md.txt @@ -0,0 +1,7 @@ +# pack + +:::{warning} +this page is under construction +::: + +Pack circuit with VPR. diff --git a/_sources/f4pga/modules/place.md.txt b/_sources/f4pga/modules/place.md.txt new file mode 100644 index 000000000..6a7d2fe7a --- /dev/null +++ b/_sources/f4pga/modules/place.md.txt @@ -0,0 +1,7 @@ +# place + +:::{warning} +this page is under construction +::: + +Place cells with VPR. diff --git a/_sources/f4pga/modules/place_constraints.md.txt b/_sources/f4pga/modules/place_constraints.md.txt new file mode 100644 index 000000000..2b35fdc36 --- /dev/null +++ b/_sources/f4pga/modules/place_constraints.md.txt @@ -0,0 +1,11 @@ +# place_constraints + +:::{warning} +this page is under construction +::: + +Move cell placement to satisfy constraints imposed by an architecture. (VPR-only) + +:::{note} +This will be deprecated once VPR constraint system supports this functionality natively. +::: diff --git a/_sources/f4pga/modules/route.md.txt b/_sources/f4pga/modules/route.md.txt new file mode 100644 index 000000000..40f4a38cc --- /dev/null +++ b/_sources/f4pga/modules/route.md.txt @@ -0,0 +1,7 @@ +# route + +:::{warning} +this page is under construction +::: + +Route a design with VPR. diff --git a/_sources/f4pga/modules/synth.md.txt b/_sources/f4pga/modules/synth.md.txt new file mode 100644 index 000000000..5b200ad88 --- /dev/null +++ b/_sources/f4pga/modules/synth.md.txt @@ -0,0 +1,41 @@ +# synth + +The _synth_ module is meant to be used to execute YOSYS synthesis. + +The module should guarantee the following outputs: + * `eblif` + * `fasm_extra` (can be empty) + * `json` + * `synth_json` + * `synth_log` (on demand) + +For detailed information about these targets, please refer to +`docs/common targets and variables.md` + +What files and how are they generated is dependent on TCL scripts executed +withing YOSYS and the script vary depending on the target platform. Due to this +design choice it is required for the author of the flow definition to parameterize +the `synth` module in a way that will **GUARANTEE** the targets mentioned above +will be generated upon a successful YOSYS run. + +The setup of the synth module follows the following specifications: + +## Parameters + +The `params` section of a stage configuration may contain a `produces` list. +The list should specify additional targets that will be generated +(`?` qualifier is allowed). + +## Values + +The `synth` module requires the following values: + +* `tcl_scripts` (string, required): A path to a directory containing `synth.tcl` + and `conv.tcl` scripts that will be used by YOSYS. +* `read_verilog_args` (list[string | number], optional) - If specified, the Verilog + sources will be read using the `read_verilog` procedure with options contained in + this value. +* `yosys_tcl_env` (dict[string -> string | list[string], required) - A mapping that + defines environmental variables that will be used within the TCL scripts. This + should contain the references to module's inputs and outputs in order to guarantee + the generation of the desired targets. diff --git a/_sources/flows/bitstream.rst.txt b/_sources/flows/bitstream.rst.txt new file mode 100644 index 000000000..dcb457bd2 --- /dev/null +++ b/_sources/flows/bitstream.rst.txt @@ -0,0 +1,15 @@ +Bitstream translation +##################### + +The routing process results in an output file specifying the used blocks +and routing paths. It contains the resources that needs to be instantiated +on the FPGA chip, however, the output format is not understood +by the FPGA chip itself. + +In the last step, the description of the chip is translated into +the appropriate format, suitable for the chosen FPGA. +That final file contains instructions readable by the configuration block of +the desired chip. + +Documenting the bitstream format for different FPGA chips is one of the +most important tasks in the F4PGA Project! diff --git a/_sources/flows/f4pga.rst.txt b/_sources/flows/f4pga.rst.txt new file mode 100644 index 000000000..ed33075f2 --- /dev/null +++ b/_sources/flows/f4pga.rst.txt @@ -0,0 +1,429 @@ +In F4PGA +######## + +Synthesis +********* + +In the F4PGA toolchain synthesis is made with the use of Yosys, that is able to perform all the mentioned steps and +convert HDL to netlist description. +The result of these steps is written to a file in ``.eblif`` format. + +.. _Flows:F4PGA:Yosys: + +Yosys +===== + +Yosys is a Free and Open Source Verilog HDL synthesis tool. +It was designed to be highly extensible and multiplatform. +In F4PGA toolchain, it is responsible for the whole synthesis process described in `FPGA Design Flow <./design-flow.html>`_ + +It is not necessary to call Yosys directly using F4PGA. +Nevertheless, the following description, should provide sufficient introduction to Yosys usage inside the project. +It is also a good starting point for a deeper understanding of the whole toolchain. + +Short description +----------------- + +Yosys consists of several subsystems. Most distinguishable are the first and last ones used in the synthesis process, +called *frontend* and *backend* respectively. +Intermediate subsystems are called *passes*. + +The *frontend* is responsible for changing the Verilog input file into an internal Yosys, representation which is common +for all *passes* used by the program. +The *passes* are responsible for a variety of optimizations (``opt_``) and simplifications (``proc_``). + +Two *passes*, that are worth to mention separately are ``ABC`` and ``techmap``. +The first one optimizes logic functions from the design and assigns obtained results into Look Up Tables (LUTs) of +chosen width. +The second mentioned *pass* - ``techmap`` is responsible for mapping the synthesized design from Yosys internal blocks +to the primitives used by the implementation tool. +Recommended synthesis flows for different FPGAs are combined into macros i.e. ``synth_ice40`` (for Lattice iCE40 FPGA) +or ``synth_xilinx`` (for Xilinx 7-series FPGAs). + +The *backend* on the other hand, is responsible for converting internal Yosys representation into one of the +standardized formats. +F4PGA uses ``.eblif`` as its output file format. + +Usage in Toolchain +------------------ + +All operations performed by Yosys are written in ``.tcl`` script. Commands used +in the scripts are responsible for preparing output file to match with the +expectations of other toolchain tools. +There is no need to change it even for big designs. +An example configuration script can be found below: + +.. code-block:: tcl + + yosys -import + + synth_ice40 -nocarry + + opt_expr -undriven + opt_clean + + setundef -zero -params + write_blif -attr -cname -param $::env(OUT_EBLIF) + write_verilog $::env(OUT_SYNTH_V) + +It can be seen that this script performs a platform-specific process of synthesis, some optimization steps (``opt_`` +commands), and writes the final file in ``.eblif`` and Verilog formats. +Yosys synthesis configuration scripts are platform-specific and can by found in ``/yosys/synth.tcl`` in +the :gh:`F4PGA Architecture Definitions ` repository. + +To understand performed operations, view the log file. +It is usually generated in the project build directory. It should be named ``top.eblif.log``. + +Output analysis +--------------- + +Input file: + +.. code-block:: verilog + + module top ( + input clk, + output LD7, + ); + localparam BITS = 1; + localparam LOG2DELAY = 25; + + reg [BITS+LOG2DELAY-1:0] counter = 0; + always @(posedge clk) begin + counter <= counter + 1; + end + + assign {LD7} = counter >> LOG2DELAY; + endmodule + + +after synthesis is described only with use of primitives appropriate for +chosen platform: + +.. code-block:: verilog + + module top(clk, LD7); + wire [25:0] _000_; + wire _001_; + + ... + + FDRE_ZINI #( + .IS_C_INVERTED(1'h0), + .ZINI(1'h1) + ) _073_ ( + .C(clk), + .CE(_012_), + .D(_000_[0]), + .Q(counter[0]), + .R(_013_) + ); + + ... + + SR_GND _150_ ( + .GND(_062_) + ); + assign _003_[25:0] = _000_; + assign counter[25] = LD7; + endmodule + +The same structure is described by the ``.eblif`` file. + + +Technology mapping in F4PGA toolchain +------------------------------------- + +.. _Xilinx 7 Series FPGAs Clocking Resources User Guide: https://www.xilinx.com/support/documentation/user_guides/ug472_7Series_Clocking.pdf#page=38 +.. _VTR FPGA Architecture Description: https://docs.verilogtorouting.org/en/latest/arch/ +.. _techmap section in the Yosys Manual: https://yosyshq.net/yosys/files/yosys_manual.pdf#page=153 + +It is important to understand the connection between the synthesis and +implementation tools used in the F4PGA toolchain. As mentioned before, +synthesis tools like Yosys take the design description from the source files +and convert them into a netlist that consists of the primitives used by +the implementation tool. Usually, to support multiple implementation tools, +an additional intermediate representation of FPGA primitives is provided. +The process of translating the primitives from the synthesis +tool’s internal representation to the specific primitives used in the +implementation tools is called technology mapping (or techmapping). + +Technology mapping for VPR +-------------------------- + +As mentioned before, VPR is one of the implementation tools (often referred to +as Place & Route or P&R tools) used in F4PGA. By default, the F4PGA +toolchain uses it during bitstream generation for, i.e., Xilinx 7-Series +devices. Since the architecture models for this FPGA family were created from +scratch, appropriate techmaps were needed to instruct Yosys on translating +the primitives to the versions compatible with VPR. + +The clock buffers used in the 7-Series devices are a good example for explaining +the techmapping process. Generally, as stated in the +`Xilinx 7 Series FPGAs Clocking Resources User Guide`_, a designer has various +buffer types that they can use in designs: + +- ``BUFGCTRL`` +- ``BUFG`` +- ``BUFGCE`` +- ``BUFGCE_1`` +- ``BUFGMUX`` +- ``BUFGMUX_1`` +- ``BUFGMUX_CTRL`` + +Nevertheless, the actual chips consist only of the ``BUFGCTRL`` primitives, +which are the most universal and can function as other clock buffer +primitives from the Xilinx manual. Because of that, only one architecture model +is required for VPR. The rest of the primitives are mapped to this general +buffer during the techmapping process. The model of ``BUFGCTRL`` primitive used +by VPR is called ``BUFGCTR_VPR`` (More information about the architecture +modeling in VPR can be found in the `VTR FPGA Architecture Description`_). + +Support for particular primitive in VTR consist of two files: + +- Model XML (``xxx.model.xml``) - Contains general information about + the module's input and output ports and their relations. + +- Physical Block XML (``xxx.pb_type.xml``) - Describes the actual layout of the + primitive, with information about the timings, internal connections, etc. + +Below you can see the pb_type XML for ``BUFGCTRL_VPR`` primitive: + +.. code-block:: xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ZPRESELECT_I0 = ZPRESELECT_I0 + ZPRESELECT_I1 = ZPRESELECT_I1 + IS_IGNORE0_INVERTED = IS_IGNORE0_INVERTED + IS_IGNORE1_INVERTED = IS_IGNORE1_INVERTED + ZINV_CE0 = ZINV_CE0 + ZINV_CE1 = ZINV_CE1 + ZINV_S0 = ZINV_S0 + ZINV_S1 = ZINV_S1 + + + + + + + + + + + + + + + + + + IN_USE + + + + + +A correctly prepared techmap for any VPR model contains a declaration of +the module that should be substituted. Inside the module declaration, one +should provide a necessary logic and instantiate another module that +will substitute its original version. Additionally, all equations within +a techmap that are not used directly in a module instantiation should evaluate +to a constant value. Therefore most of the techmaps use additional constant +parameters to modify the signals attached to the instantiated module. + +Here is a piece of a techmap, which instructs Yosys to convert +a ``BUFG`` primitive to the ``BUFGCTRL_VPR``. In this case, the techmaping process +consists of two steps. Firstly, the techmap shows how to translate the ``BUFG`` +primitive to the ``BUFGCTRL``. Then how to translate the ``BUFGCTRL`` to +the ``BUFGCTRL_VPR``: + +.. code-block:: verilog + + module BUFG ( + input I, + output O + ); + + BUFGCTRL _TECHMAP_REPLACE_ ( + .O(O), + .CE0(1'b1), + .CE1(1'b0), + .I0(I), + .I1(1'b1), + .IGNORE0(1'b0), + .IGNORE1(1'b1), + .S0(1'b1), + .S1(1'b0) + ); + endmodule + + module BUFGCTRL ( + output O, + input I0, input I1, + input S0, input S1, + input CE0, input CE1, + input IGNORE0, input IGNORE1 + ); + + parameter [0:0] INIT_OUT = 1'b0; + parameter [0:0] PRESELECT_I0 = 1'b0; + parameter [0:0] PRESELECT_I1 = 1'b0; + parameter [0:0] IS_IGNORE0_INVERTED = 1'b0; + parameter [0:0] IS_IGNORE1_INVERTED = 1'b0; + parameter [0:0] IS_CE0_INVERTED = 1'b0; + parameter [0:0] IS_CE1_INVERTED = 1'b0; + parameter [0:0] IS_S0_INVERTED = 1'b0; + parameter [0:0] IS_S1_INVERTED = 1'b0; + + parameter _TECHMAP_CONSTMSK_IGNORE0_ = 0; + parameter _TECHMAP_CONSTVAL_IGNORE0_ = 0; + parameter _TECHMAP_CONSTMSK_IGNORE1_ = 0; + parameter _TECHMAP_CONSTVAL_IGNORE1_ = 0; + parameter _TECHMAP_CONSTMSK_CE0_ = 0; + parameter _TECHMAP_CONSTVAL_CE0_ = 0; + parameter _TECHMAP_CONSTMSK_CE1_ = 0; + parameter _TECHMAP_CONSTVAL_CE1_ = 0; + parameter _TECHMAP_CONSTMSK_S0_ = 0; + parameter _TECHMAP_CONSTVAL_S0_ = 0; + parameter _TECHMAP_CONSTMSK_S1_ = 0; + parameter _TECHMAP_CONSTVAL_S1_ = 0; + + localparam [0:0] INV_IGNORE0 = ( + _TECHMAP_CONSTMSK_IGNORE0_ == 1 && + _TECHMAP_CONSTVAL_IGNORE0_ == 0 && + IS_IGNORE0_INVERTED == 0); + localparam [0:0] INV_IGNORE1 = ( + _TECHMAP_CONSTMSK_IGNORE1_ == 1 && + _TECHMAP_CONSTVAL_IGNORE1_ == 0 && + IS_IGNORE1_INVERTED == 0); + localparam [0:0] INV_CE0 = ( + _TECHMAP_CONSTMSK_CE0_ == 1 && + _TECHMAP_CONSTVAL_CE0_ == 0 && + IS_CE0_INVERTED == 0); + localparam [0:0] INV_CE1 = ( + _TECHMAP_CONSTMSK_CE1_ == 1 && + _TECHMAP_CONSTVAL_CE1_ == 0 && + IS_CE1_INVERTED == 0); + localparam [0:0] INV_S0 = ( + _TECHMAP_CONSTMSK_S0_ == 1 && + _TECHMAP_CONSTVAL_S0_ == 0 && + IS_S0_INVERTED == 0); + localparam [0:0] INV_S1 = ( + _TECHMAP_CONSTMSK_S1_ == 1 && + _TECHMAP_CONSTVAL_S1_ == 0 && + IS_S1_INVERTED == 0); + + BUFGCTRL_VPR #( + .INIT_OUT(INIT_OUT), + .ZPRESELECT_I0(PRESELECT_I0), + .ZPRESELECT_I1(PRESELECT_I1), + .IS_IGNORE0_INVERTED(!IS_IGNORE0_INVERTED ^ INV_IGNORE0), + .IS_IGNORE1_INVERTED(!IS_IGNORE1_INVERTED ^ INV_IGNORE1), + .ZINV_CE0(!IS_CE0_INVERTED ^ INV_CE0), + .ZINV_CE1(!IS_CE1_INVERTED ^ INV_CE1), + .ZINV_S0(!IS_S0_INVERTED ^ INV_S0), + .ZINV_S1(!IS_S1_INVERTED ^ INV_S1) + ) _TECHMAP_REPLACE_ ( + .O(O), + .CE0(CE0 ^ INV_CE0), + .CE1(CE1 ^ INV_CE1), + .I0(I0), + .I1(I1), + .IGNORE0(IGNORE0 ^ INV_IGNORE0), + .IGNORE1(IGNORE1 ^ INV_IGNORE1), + .S0(S0 ^ INV_S0), + .S1(S1 ^ INV_S1) + ); + + endmodule + +.. note:: + + All F4PGA techmaps for Xilinx 7-Series devices use special inverter + logic that converts constant 0 signals at the BEL to constant-1 signals + at the site. This behavior is desired since VCC is the default signal in + 7-Series and US/US+ devices. The presented solution matches the conventions + used by the vendor tools and gives the opportunity to validate generated + bitstreams with fasm2bels and Vivado. + +Yosys provides special techmapping naming conventions for wires, +parameters, and modules. The special names that start with ``_TECHMAP_`` +can be used to force certain behavior during the techmapping process. +Currently, the following special names are used in F4PGA techmaps: + +- ``_TECHMAP_REPLACE_`` is used as a name for an instantiated module, which will + replace the one used in the original design. This special name causes + the instantiated module to inherit the name and all attributes + from the module that is being replaced. + +- ``_TECHMAP_CONSTMSK__`` and ``_TECHMAP_CONSTVAL__`` + are used together as names of parameters. The ``_TECHMAP_CONSTMASK__`` + has a length of the input signal. Its bits take the value 1 if + the corresponding signal bit has a constant value, or 0 otherwise. + The ``_TECHMAP_CONSTVAL__`` bits store the actual constant signal + values when the ``_TECHMAP_CONSTMASK__`` is equal to 1. + +More information about special wire, parameter, and module names can be found in +`techmap section in the Yosys Manual`_. + +.. note:: + + Techmapping can be used not only to change the names of the primitives + but primarily to match the port declarations and express the logic behind + the primitive substitution: + + .. verilog:module:: module BUFG (output O, input I) + + .. verilog:module:: module BUFGCTRL (output O, input CE0, input CE1, input I0, input I1, input IGNORE0, input IGNORE1, input S0, input S1) + +More information +---------------- + +Additional information about Yosys can be found on the `Yosys Project Website +`_ , or in `Yosys Manual +`_. You can also compile +one of the tests described in Getting Started section and watch the log file +to understand which operations are performed by Yosys. + +Place & Route +************* + +The F4PGA Project uses two different tools for the PnR process - ``nextpnr`` and ``Versatile Place and Route`` (VPR). +Both of them write their final result to a file in the ``.fasm`` format. + +VPR +=== + +See `VPR ➚ `__. + +nextpnr +======= + +See :gh:`nextpnr ➚ `. diff --git a/_sources/flows/index.rst.txt b/_sources/flows/index.rst.txt new file mode 100644 index 000000000..e245d660e --- /dev/null +++ b/_sources/flows/index.rst.txt @@ -0,0 +1,23 @@ +.. _Flows: + +Introduction +============ + +This section provides a description of the F4PGA toolchain as well as the basic concepts of the FPGA design flow. + +F4PGA is an end-to-end FPGA synthesis toolchain, because of that it provides all the necessary tools to convert input +Hardware Description Language (HDL) sources into a final bitstream. +It is simple to use however, the whole synthesis and implementation process is not trivial. + +The final bitstream format depends on the used platform. +What's more, every platform has different resources and even if some of them provide similar functionality, they can be +implemented in a different way. +In order to be able to match all that variety of possible situations, the creation of the final bitstream is divided +into few steps. +F4PGA uses different programs to create the bitstream and is responsible for their proper integration. +The procedure of converting HDL files into the bitstream is described in the next sections. + +.. figure:: ../_static/images/toolchain-flow.svg + :align: center + + F4PGA Toolchain design flow diff --git a/_sources/flows/pnr.rst.txt b/_sources/flows/pnr.rst.txt new file mode 100644 index 000000000..5e26ca1b0 --- /dev/null +++ b/_sources/flows/pnr.rst.txt @@ -0,0 +1,48 @@ +Place & Route +############# + +The Synthesis process results in an output containing logical elements +available on the desired FPGA chip with the specified connections between them. +However, it does not specify the physical layout of those elements in the +final design. The goal of the Place and Route (PnR) process is to take the +synthesized design and implement it into the target FPGA device. The PnR tool +needs to have information about the physical composition of the device, routing +paths between the different logical blocks and signal propagation timings. +The working flow of different PnR tools may vary, however, the process presented +below represents the typical one, adopted by most of these tools. Usually, it +consists of four steps - packing, placing, routing and analysis. + +Packing +======= + +In the first step, the tool collects and analyzes the primitives present +in the synthesized design (e.g. Flip-Flops, Muxes, Carry-chains, etc), and +organizes them in clusters, each one belonging to a physical tile of the device. +The PnR tool makes the best possible decision, based on the FPGA routing +resources and timings between different points in the chip. + +Placing +======= + +After having clustered all the various primitives into the physical tiles of the +device, the tool begins the placement process. This step consists in assigning a +physical location to every cluster generated in the packing stage. The choice of +the locations is based on the chosen algorithm and on the user's parameters, but +generally, the final goal is to find the best placement that allows the routing +step to find more optimal solutions. + +Routing +======= + +Routing is one of the most demanding tasks of the whole process. +All possible connections between the placed blocks and the information on +the signals propagation timings, form a complex graph. +The tool tries to find the optimal path connecting all the placed +clusters using the information provided in the routing graph. Once all the nets +have been routed, an output file containing the implemented design is produced. + +Analysis +======== + +This last step usually checks the whole design in terms of timings and power +consumption. diff --git a/_sources/flows/synthesis.rst.txt b/_sources/flows/synthesis.rst.txt new file mode 100644 index 000000000..4c7e918a8 --- /dev/null +++ b/_sources/flows/synthesis.rst.txt @@ -0,0 +1,57 @@ +Synthesis +######### + +Synthesis is the process of converting input Verilog file into a netlist, +which describes the connections between different block available on the +desired FPGA chip. However, it is worth to notice that these are only +logical connections. So the synthesized model is only a draft of the final +design, made with the use of available resources. + +RTL Generation +============== + +the input Verilog file is often really complicated. Usually it is written in +a way that it is hard to distinguish the digital circuit standing behind +the implemented functionality. Designers often use a so-called +*Behavioral Level* of abstraction, in their designs, which means that the whole +description is mostly event-driven. In Verilog, support for behavioral models +is made with use of ``always`` statements. + +However, FPGA mostly consist of Look Up Tables (LUT) and flip-flops. +Look Up Tables implement only the functionality of logic gates. +Due to that, the synthesis process has to convert the complicated +Behavioral model to a simpler description. + +Firstly, the design is described in terms of registers and logical operations. +This is the so-called *Register-Transfer Level* (*RTL*). +Secondly, in order to simplify the design even more, some complex logic is +rewritten in the way that the final result contain only logic gates +and registers. This model is on *Logical Gate level* of abstraction. + +The process of simplification is quite complicated, because of that it often +demands additional simulations between mentioned steps to prove that the input +design is equivalent to its simplified form. + +Technology mapping +================== + +FPGAs from different architectures may have different architecture. For example, +they may contain some complicated functional blocks (i.e. RAM, DSP blocks) +and even some of the basic blocks like LUT tables and flip-flops may vary +between chips. Because of that, there is a need to describe the final design +in terms of platform-specific resources. This is the next step in the process +of synthesis. The simplified description containing i.e. logic gates, flip-flops +and a few more complicated blocks like RAM is taken and used "general" blocks +are substituted with that physically located in the chosen FPGA. +The vendor-specific definitions of these blocks are often located +in a separate library. + +Optimization +============ + +Optimization is the key factor that allows to better utilize resources +of an FPGA. There are some universal situations in which the design +can be optimized, for example by substituting a bunch of logic gates +in terms of fewer, different gates. However, some operations can be performed +only after certain steps i.e. after technology mapping. +As a result, optimization is an integral part of most of the synthesis steps. diff --git a/_sources/getting-started.rst.txt b/_sources/getting-started.rst.txt new file mode 100644 index 000000000..0aef85ea1 --- /dev/null +++ b/_sources/getting-started.rst.txt @@ -0,0 +1,187 @@ +Getting started +############### + +To begin using F4PGA, you might want to take a look at the :ref:`GettingStarted:Guidelines` below, which make for a good +starting point. +They will guide you through the process of installing and using the flows, explaining how to generate and load a +bitstream into your FPGA. + +F4PGA flows are composed of multiple tools, scripts and CLI utilities. +Fortunately, various alternatives exist for setting up the whole ecosystem without going through the daunting task of +installing pieces one-by-one. +See :ref:`GettingStarted:ToolchainInstallation` below. + +.. _GettingStarted:Guidelines: + +Guidelines +========== + +This is the main documentation, which gathers info about the :ref:`Python CLI tools and APIs ` and the +:ref:`Design Flows ` supported by F4PGA, along with a :ref:`Glossary`, references to specifications, plugins and +:ref:`publications `. + +Since F4PGA is meant for users with varying backgrounds and expertise, three paths are provided to walk into the ecosystem. + +**Newcomers** are invited to go through `Examples ➚ `__, which provides +step-by-step guidelines to install the tools through `Conda ➚ `__, generate a bitstream from one of the +provided designs and load the bitstream into a development board. +See :ref:`examples:CustomizingMakefiles` for adapting the build plumbing to your own desings. + +For **Intermediate** users and contributors, who are already familiar with installing the tools and building bitstreams, +it is recommended to read the shell scripts in subdir :ghsrc:`scripts`, as well as the Continuous Integration +:ghsrc:`Pipeline <.github/workflows/Pipeline.yml>`. +Moreover, workflow `containers-conda-f4pga.yml `__ +in :gh:`hdl/packages` shows how to use the ``*/conda/f4pga/*`` containers from :gh:`hdl/containers` +(see `workflow runs `__ and +:ref:`GettingStarted:ToolchainInstallation:Other:Containers`). + +**Advanced** users and developers willing to support new devices and/or enhance the features of the supported families +(see `F4PGA Architectures Visualizer ➚ `__) +should head to `Architecture Definitions ➚ `__. +The effort to document the details of each device/family are distributed on multiple projects: + +* `Project X-Ray ➚ `__ + + * `X-Ray Quickstart ➚ `__ + +* `Project Trellis ➚ `__ + +* :gh:`Project Icestorm ➚ ` + + +.. _GettingStarted:ToolchainInstallation: + +Toolchain installation +====================== + +F4PGA flows require multiple radpidly moving tools, assets and scripts, which makes it difficult for system packagers to +catch up. +Although some of the tools used in F4PGA (such as yosys, nextpnr or vpr) are available already through ``apt``, ``dnf``, +``pacman``, etc. they typically use pinned versions which are not the latest. +Therefore, the recommended installation procedure to follow the guidelines in F4PGA is repositories is using `Conda ➚ `__, +or some other pre-packaged solution combining latest releases. + + +.. _GettingStarted:ToolchainInstallation:Conda: + +Conda (Recommended) +------------------- + +.. IMPORTANT:: + Due to size constraints, Architecture Definition packages cannot be distributed through Conda. + Hence, installing a functional F4PGA system is a two step process: bootstraping the conda environment and getting the + tarballs (or vice versa). + In the future, getting and managing the tarballs might be handled by F4PGA. + +In coherence with the :ref:`GettingStarted:Guidelines` above, multiple Conda environments are provided: + +* **Newcomers** will find environment and requirements files in :gh:`chipsalliance/f4pga-examples`, which are to be used + as explained in :ref:`examples:Getting`. + +* **Intermediate** users and contributors can use the minimal environment and requirements files included in the + Architecture Definition packages, as is done in the CI of this repository. + +* **Advanced** users and developers will get all the dependencies by bootstraping the environment in :gh:`SymbiFlow/f4pga-arch-defs`. + +Summarizing, the installation procedure implies: + +* Setting environment variables ``F4PGA_INSTALL_DIR`` and ``F4PGA_FAM`` (and optionally ``F4PGA_SHARE_DIR``), so that + CLI utilities can find tools and assets. +* Downloading and extracting the Architecture Definition tarballs. +* Getting the environment and requirements files, by cloning f4pga-examples or f4pga-arch-defs, or by using the ones + included in the tarballs. +* Bootstraping the Conda environment and optionally installing additional tools. + +.. NOTE:: + Architecture Definition packages are built and released in :gh:`SymbiFlow/f4pga-arch-defs`. + In this repository and in :gh:`chipsalliance/f4pga-examples`, pinned versions of the packages are used. + However, tracking the *latest* release is also supported. + See :ref:`arch-defs:Packages`. + + +.. _GettingStarted:ToolchainInstallation:Conda:Bumping: + +Bumping/overriding specific tools +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Find guidelines to tweak the Conda environment and to override specific tools at :ref:`conda-eda:Usage:Bumping`. + +In order to bump the Architecture Definition packages to an specific version, check the TIMESTAMP and the commit hash in +the job named ``GCS`` in a successful run of workflow :gh:`Automerge ` +on branch ``main`` of :gh:`SymbiFlow/f4pga-arch-defs`. +Alternatively, use the latest as explained in :ref:`arch-defs:Packages`. + + +.. _GettingStarted:ToolchainInstallation:Other: + +Other +----- + +Apart from Conda, multiple other solutions exist for setting up all the tools required in F4PGA. +:gh:`hdl/packages` *is an index for several projects providing great prepackaged/prebuilt and easy-to-set-up +bleeding-edge packages/environments of electronic design automation (EDA) tools/projects*. + + +.. _GettingStarted:ToolchainInstallation:Other:Containers: + +Containers +~~~~~~~~~~ + +Ready-to-use docker/podman containers are maintained in :gh:`hdl/containers` and made available through +`gcr.io/hdl-containers` or `ghcr.io/hdl/containers`. +Some of those include Conda, the Architecture Definitions and the f4pga Python package, so they are ready to use along +with the examples in :gh:`chipsalliance/f4pga-examples`. +See :ref:`containers:tools-and-images:f4pga`. + +.. HINT:: + :ghsharp:`574` is work in progress to provide an F4PGA Action + (see `Understanding GitHub Actions `__) + based on ``*/conda/f4pga/*`` containers. + + +.. _GettingStarted:LoadingBitstreams: + +Loading bitstreams +================== + +For every board, the loading process may vary and different tools may be required. +Typically, each tool supports a specific target family or the lines of products of a vendor. +Some of the most known are listed in :ref:`hdl/constraints: Programming and debugging `. +The tools used in the F4PGA Toolchain are e.g. ``OpenOCD``, ``tinyfpgab`` or ``tinyprog``. +Moreover, :gh:`OpenFPGALoader ` is a universal utility for programming FPGA devices, which is +becoming an alternative to the fragmentation in bitstream loading tools. +OpenFPGALoader supports many different boards with FPGAs based on the architectures including xc7, ECP5, iCE40 and many +more. +It can utilize a variety of the programming adapters based on JTAG, DAP interface, ORBTrace, DFU and FTDI chips. + +Installing OpenFPGALoader +------------------------- + +OpenFPGALoader is available in several packaging solutions. +It can be installed with distribution specific package managers on Arch Linux and Fedora. +There are also prebuilt packages available in `conda `__ +or packages in tool :gh:`repository `. +OpenFPGALoader can also be built from sources. +For installation guidelines using both prebuilt packages and building from source, please refer to instructions in +:gh:`readme `. + +Usage +----- + +For programming the FPGA, use one of these commands: + +.. sourcecode:: bash + + openFPGALoader -b # (e.g. arty) + openFPGALoader -c # (e.g. digilent) + openFPGALoader -d # (e.g. /dev/ttyUSB0) + +You can also list the supported boards, cables and FPGAs: + +.. sourcecode:: bash + + openFPGALoader --list-boards + openFPGALoader --list-cables + openFPGALoader --list-fpga + +If you encounter any issues, please refer to :doc:`openfpgaloader:index`. diff --git a/_sources/glossary.rst.txt b/_sources/glossary.rst.txt new file mode 100644 index 000000000..7d2c4b8ea --- /dev/null +++ b/_sources/glossary.rst.txt @@ -0,0 +1,137 @@ +.. _Glossary: + +Glossary +######## + +.. Warning:: + This is work-in-progress, since the utilities and wrappers developed in F4PGA are being redesigned (from shell to Python). + Therefore, the terms and definitions shown below are subject to change. + It is strongly suggested not to rely on the content below until this note is updated/removed. + +.. glossary:: + :sorted: + + HDL + A Hardware Description Language (HDL) is a computer language used for describing hardware designs. + HDLs in the scope of F4PGA include established (such as Verilog and `VHDL ➚ `__) or + emerging software-inspired paradigms like + `Chisel ➚ `_, + `SpinalHDL ➚ `_, + `Migen ➚ `_, or + :gh:`Amaranth ➚ `. + + Tool + * A software application available as a CLI entrypoint, a shared library or an (interpreted) script. + + * Within :term:`f4pga `, a *tool* is a Python abstraction that wraps a software application: + + .. image:: _static/images/tool.png + :align: center + + Step + Within :term:`f4pga `, a *step* is a unit of execution, which is characterized by a set of + :term:`dependencies ` and a set of :term:`artifacts `, + and it is composable in a :term:`flow `. + *Steps* might wrap a single or multiple :term:`tools `. + + .. image:: _static/images/step.png + :align: center + + Flow + Within :term:`f4pga `, a *flow* is a :wikipedia:`directed graph ➚ ` of :term:`steps `, which + describes end-to-end sequences to achieve specific tasks. + A *flow* might used as a step within another *flow*. + In such cases, terms *subflow* or *partial flow* are used. + + .. image:: _static/images/flow.png + :align: center + + CLI + A :wikipedia:`Command-Line Interface (CLI) ➚ ` is an application that processes commands to + a computer program in the form of lines of text, typically interactively (through a terminal) or in batch mode + (through scripts). + Most of the applications used in F4PGA are meant to be used through CLIs. + Precisely, :term:`f4pga ` :term:`tools ` provide Python abstractions around the CLIs. + + Module + :ref:`The Python Tutorial » Modules ➚ ` are files containing Python statements and definitions + (variables, functions, clases,...). + The file name is the module name with the suffix ``.py`` appended. + + Within :term:`f4pga `, user-defined *modules* allow extending the built-in :term:`flows ` and + :term:`steps ` to achieve custom and/or complex tasks. + + Dependency + A *dependency* is a prerequisite to execute a :term:`f4pga ` :term:`step ` in a :term:`flow `. + *Dependencies* might be files (such as HDL sources, constraints, etc.), :term:`artifacts ` from previous + *steps* or :term:`tools `. + + Artifact + An *artifact* is a result produced by a :term:`step ` when executed. + Typically, *artifacts* are files and logs generated by the :term:`tools `. + However, within :term:`f4pga ` :term:`flows `, (meta)data can be passed across *steps* without saving + it to disk. + + Target + Within :term:`f4pga `, :term:`flows ` can have multiple leaf *steps*, producing different results off some + shared previous *steps*. + The *target* of a *flow* specifies which *steps* to execute in a run. + + F4PGA + + * *Uppercase*: + + * FOSS Flows For FPGA (F4PGA), the name of the project as a whole. + + * A Workgroup under the CHIPS Alliance. + See :ref:`Community`. + + * *Lowercase*: + + * Python package providing utilities. + + * The main CLI entrypoint provided by the Python package. + + Cache + Within :term:`f4pga `, the content of :term:`dependencies ` and :term:`artifacts ` can + be tracked to optimize consecutive executions of the same :term:`flow `. + The *cache* contains the :wikipedia:`hash ➚ ` of the assets. + + Resolution + Relations between :term:`f4pga ` :term:`steps `, :term:`dependencies ` and :term:`artifacts ` + can get complex easily. + On top of computing the topological sorting, :term:`f4pga ` checks the existence of the assets, and supports + displaying the status. + + Definition + Within :term:`f4pga `, a :term:`flow ` *definition* is the description of which :term:`steps ` + are to be executed and which :term:`dependencies ` and :term:`artifacts ` are to be passed + along. + + Constraints + Set of parameters that allow users to select/specify certain physical characteristics of the FPGA device, such as + the pins/pads or the logic standard to use. + + Project + A set of :term:`HDL` sources, constraints and other assets used in a hardware :term:`design ` or set of + designs. + + Design + Required :term:`HDL` sources, constraints and other assets to execute a :term:`flow ` and achieve a task. + + Configuration + Within :term:`f4pga `, a *project configuration* is the set of parameters needed for executing a + :term:`flow ` on a given :term:`design `. + The *configuration* might be provided through a Python API, or through a file using declarative format (such as JSON, + YAML, INI,...). + + Model + * *Project model*: a generic description of an EDA project, independent of vendor and tools. + It reflects multiple design variants, grouping of source files into file sets or linking testbenches to + components or subsystems in a design. + * *Simulation model*: :term:`HDL ` sources interpreted as programming languages by simulators, which can + generate interpeted or executable :term:`artifacts `. + + Toolchain + :wikipedia:`Toolchain ➚ ` is a generic term used to refer to a set of programming tools used + consecutively to perform a complex software development task. diff --git a/_sources/how.rst.txt b/_sources/how.rst.txt new file mode 100644 index 000000000..206ffa336 --- /dev/null +++ b/_sources/how.rst.txt @@ -0,0 +1,68 @@ +How it works +############ + +To understand how F4PGA works, it is best to start with an overview of the general EDA tooling ecosystem and then +proceed to see what the F4PGA project consists of. +For both ASIC- and FPGA-oriented EDA tooling, there are three major areas that the workflows need to cover: description, +frontend and backend. + +.. image:: _static/images/EDA.svg + :align: center + +Hardware description languages are either established (such as Verilog and `VHDL ➚ `__) or +emerging software-inspired paradigms like +`Chisel ➚ `_, +`SpinalHDL ➚ `_, +`Migen ➚ `_, or +:gh:`Amaranth ➚ `. +Since early 2000s, free and open source tools allow simulating HDLs. +However, for several decades the major problem lay in the frontend and backend, where there was no established +standard vendor-neutral tooling that would cover all the necessary components for an end-to-end flow. +This pertains both to ASIC and FPGA workflows. +Although F4PGA focuses on the latter, some parts of F4PGA will also be useful in the former. + +To achieve F4PGA's goal of a complete FOSS FPGA toolchain, a number of tools and projects are necessary to provide all +the needed components of an end-to-end flow. +The F4PGA toolchains consist of logic synthesis and implementation tools, as well as chip documentation projects for +chips of various vendors. +Thus, F4PGA serves as an umbrella project for several activities. + +.. image:: _static/images/parts.svg + :align: center + +The central resources are the so-called FPGA "architecture definitions" (i.e. documentation of how specific FPGAs work +internally) and the "interchange schema" (for logical and physical netlists). +Those definitions serve as input to frontend and backend tools, such as +`Yosys ➚ `__, +:gh:`nextpnr ➚ ` and `Verilog to Routing ➚ `_. +They are created within separate collaborating projects targeting different FPGAs: + +* :doc:`Project X-Ray ➚ ` for Xilinx 7-Series +* `Project IceStorm ➚ `__ for Lattice iCE40 +* :doc:`Project Trellis ➚ ` for Lattice ECP5 FPGAs + +More information can be found at :doc:`F4PGA Architecture Definitions ➚ ` and :doc:`FPGA Interchange ➚ `. + +To prepare a working bitstream for a particular FPGA chip, the toolchain goes through the following stages: + +* A description of the FPGA chip is created with the information from the relevant bitstream documentation + project. + This part is done within the :gh:`F4PGA Architecture Definitions ➚ `. + The project prepares information about the timings and resources available in the chip needed at the implementation + stage, as well as techmaps for the synthesis tools. + + .. NOTE:: + This stage is typically pre-built and installed as assets. + However, developers contributing to the bitstream documentation might build it. + +* Then, logic synthesis is carried out in the `Yosys ➚ `__ framework, which expresses the + user-provided hardware description by means of the block and connection types available in the chosen chip. + +* The next step is implementation. + Placement and routing tools put individual blocks from the synthesis description in specific chip locations and create + paths between them. + To do that, F4PGA uses either :gh:`nextpnr ➚ ` or :gh:`Verilog to Routing ➚ `. + +* Finally, the design properties are translated into a set of features available in the given FPGA chip. + These features are saved in the :gh:`FASM format ➚ `, which is developed as part of F4PGA. + The FASM file is then translated to a bitstream, using the information from the bitstream documentation projects. diff --git a/_sources/index.rst.txt b/_sources/index.rst.txt new file mode 100644 index 000000000..4ef3e126d --- /dev/null +++ b/_sources/index.rst.txt @@ -0,0 +1,101 @@ +FOSS Flows For FPGA +################### + +`F4PGA ➚ `__, which is a Workgroup under the `CHIPS Alliance ➚ `__, is an +Open Source solution for Hardware Description Language (HDL) to Bitstream FPGA synthesis, currently targeting +Xilinx's 7-Series, QuickLogic's EOS-S3, and Lattice' iCE40 and ECP5 devices. +Think of it as the GCC of FPGAs. +The project aims to design tools that are highly extendable and multiplatform. + +.. image:: _static/images/hero.svg + :align: center + +The elements of the project include (but are not limited to): + +* The F4PGA open source FPGA toolchains for programming FPGAs (formerly known as :gh:`SymbiFlow ➚ `): + + * :gh:`F4PGA Python CLI ➚ ` + * :gh:`F4PGA Architecture Definitions ➚ ` + * :gh:`F4PGA Examples ➚ ` + * :gh:`F4PGA Yosys plugins ➚ ` + +* The FPGA interchange format (an interchange format defined by CHIPS Alliance to enable interoperability between + different FPGA tools) adopted by the F4PGA toolchain: + + * :gh:`FPGA Interchange schema ➚ ` + * :gh:`FPGA Interchange Python utilities ➚ ` + * :gh:`FPGA Interchange Test suite ➚ ` + +* The :gh:`FPGA tool performance framework ➚ ` framework for benchmarking + designs against various FPGA tools, and vice versa, over time. + +* FPGA visualisation tools for visual exploration of FPGA bitstream and databases: + + * :gh:`F4PGA bitstream viewer ➚ ` + * :gh:`F4PGA database visualizer ➚ ` + +* Other utilities (FPGA assembly format, documentation and other): + + * :gh:`F4PGA Assembly (FASM) ➚ ` + * :gh:`Xilinx bitstream generation library ➚ ` + * :gh:`Verilog-to-routing XML utilities ➚ ` + * :gh:`SDF format utilities ➚ ` + * :gh:`F4PGA tools data manager ➚ ` + * :gh:`F4PGA Sphinx Theme ➚ ` + * :gh:`F4PGA Sphinx HDL diagrams ➚ ` + * :gh:`F4PGA Sphinx Verilog domain ➚ ` + + +Table of Contents +================= + +.. toctree:: + :caption: About F4PGA + + getting-started + how + status + community + + +.. toctree:: + :caption: Python utils + :maxdepth: 2 + + f4pga/index + f4pga/Usage + f4pga/modules/index + f4pga/DevNotes + f4pga/Deprecated + + +.. toctree:: + :caption: Development + + development/changes + development/building-docs + development/venv + + +.. toctree:: + :caption: Design Flows + + flows/index + flows/synthesis + flows/pnr + flows/bitstream + flows/f4pga + + +.. toctree:: + :caption: Specifications + + FPGA Assembly (FASM) ➚ + FPGA Interchange schema ➚ + + +.. toctree:: + :caption: Appendix + + glossary + references diff --git a/_sources/references.rst.txt b/_sources/references.rst.txt new file mode 100644 index 000000000..456331297 --- /dev/null +++ b/_sources/references.rst.txt @@ -0,0 +1,8 @@ +.. _References: + +References +########## + +.. bibliography:: + :notcited: + :labelprefix: R diff --git a/_sources/status.rst.txt b/_sources/status.rst.txt new file mode 100644 index 000000000..378a71b9a --- /dev/null +++ b/_sources/status.rst.txt @@ -0,0 +1,31 @@ +Supported Architectures +####################### + + +* `Xilinx 7-Series `__: + the most popular Xilinx FPGA family. + +* `Lattice ice40 `__: + world's smallest FPGAs for mobile devices. + +* `Lattice ecp5 `__: + low cost FPGAs with high performance features. + +* `QuickLogic EOS S3 `__: + FPGA + CPU sensor processing platform. + +* `QuickLogic QLF K4N8 `__: + a 24x24 eFPGA with 6144 flip-flops, 4608 LUT4s, adder and shift-register support. + +* Do you want to add more? :ref:`Help us! ` + + +Bitstream documentation +======================= + +.. include:: status.inc + +Boards +====== + +See `f4pga.org: Supported boards `__. diff --git a/_static/basic.css b/_static/basic.css new file mode 100644 index 000000000..cfc60b86c --- /dev/null +++ b/_static/basic.css @@ -0,0 +1,921 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +div.section::after { + display: block; + content: ''; + clear: left; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox form.search { + overflow: hidden; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li p.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: 360px; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, figure.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, figure.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, figure.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, figure.align-default, .figure.align-default { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-default { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar, +aside.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px; + background-color: #ffe; + width: 40%; + float: right; + clear: right; + overflow-x: auto; +} + +p.sidebar-title { + font-weight: bold; +} + +nav.contents, +aside.topic, +div.admonition, div.topic, blockquote { + clear: left; +} + +/* -- topics ---------------------------------------------------------------- */ + +nav.contents, +aside.topic, +div.topic { + border: 1px solid #ccc; + padding: 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- content of sidebars/topics/admonitions -------------------------------- */ + +div.sidebar > :last-child, +aside.sidebar > :last-child, +nav.contents > :last-child, +aside.topic > :last-child, +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +aside.sidebar::after, +nav.contents::after, +aside.topic::after, +div.topic::after, +div.admonition::after, +blockquote::after { + display: block; + content: ''; + clear: both; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + margin-top: 10px; + margin-bottom: 10px; + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table.align-default { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +th > :first-child, +td > :first-child { + margin-top: 0px; +} + +th > :last-child, +td > :last-child { + margin-bottom: 0px; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure, figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption, figcaption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number, +figcaption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text, +figcaption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist { + margin: 1em 0; +} + +table.hlist td { + vertical-align: top; +} + +/* -- object description styles --------------------------------------------- */ + +.sig { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; +} + +.sig-name, code.descname { + background-color: transparent; + font-weight: bold; +} + +.sig-name { + font-size: 1.1em; +} + +code.descname { + font-size: 1.2em; +} + +.sig-prename, code.descclassname { + background-color: transparent; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.sig-param.n { + font-style: italic; +} + +/* C++ specific styling */ + +.sig-inline.c-texpr, +.sig-inline.cpp-texpr { + font-family: unset; +} + +.sig.c .k, .sig.c .kt, +.sig.cpp .k, .sig.cpp .kt { + color: #0033B3; +} + +.sig.c .m, +.sig.cpp .m { + color: #1750EB; +} + +.sig.c .s, .sig.c .sc, +.sig.cpp .s, .sig.cpp .sc { + color: #067D17; +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +:not(li) > ol > li:first-child > :first-child, +:not(li) > ul > li:first-child > :first-child { + margin-top: 0px; +} + +:not(li) > ol > li:last-child > :last-child, +:not(li) > ul > li:last-child > :last-child { + margin-bottom: 0px; +} + +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; +} + +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; +} + +aside.footnote > span, +div.citation > span { + float: left; +} +aside.footnote > span:last-of-type, +div.citation > span:last-of-type { + padding-right: 0.5em; +} +aside.footnote > p { + margin-left: 2em; +} +div.citation > p { + margin-left: 4em; +} +aside.footnote > p:last-of-type, +div.citation > p:last-of-type { + margin-bottom: 0em; +} +aside.footnote > p:last-of-type:after, +div.citation > p:last-of-type:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + +dl { + margin-bottom: 15px; +} + +dd > :first-child { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +.sig dd { + margin-top: 0px; + margin-bottom: 0px; +} + +.sig dl { + margin-top: 0px; + margin-bottom: 0px; +} + +dl > dd:last-child, +dl > dd:last-child > :last-child { + margin-bottom: 0; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +.classifier:before { + font-style: normal; + margin: 0 0.5em; + content: ":"; + display: inline-block; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +.translated { + background-color: rgba(207, 255, 207, 0.2) +} + +.untranslated { + background-color: rgba(255, 207, 207, 0.2) +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +pre, div[class*="highlight-"] { + clear: both; +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; + white-space: nowrap; +} + +div[class*="highlight-"] { + margin: 1em 0; +} + +td.linenos pre { + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + display: block; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; +} + +table.highlighttable td { + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding-right: 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +div.highlight pre, +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div { + margin-top: 0; +} + +div.code-block-caption { + margin-top: 1em; + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +table.highlighttable td.linenos, +span.linenos, +div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; + -webkit-user-select: text; /* Safari fallback only */ + -webkit-user-select: none; /* Chrome/Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* IE10+ */ +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + margin: 1em 0; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: absolute; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/_static/doctools.js b/_static/doctools.js new file mode 100644 index 000000000..d06a71d75 --- /dev/null +++ b/_static/doctools.js @@ -0,0 +1,156 @@ +/* + * doctools.js + * ~~~~~~~~~~~ + * + * Base JavaScript utilities for all Sphinx HTML documentation. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", +]); + +const _ready = (callback) => { + if (document.readyState !== "loading") { + callback(); + } else { + document.addEventListener("DOMContentLoaded", callback); + } +}; + +/** + * Small JavaScript module for the documentation. + */ +const Documentation = { + init: () => { + Documentation.initDomainIndexTable(); + Documentation.initOnKeyListeners(); + }, + + /** + * i18n support + */ + TRANSLATIONS: {}, + PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), + LOCALE: "unknown", + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext: (string) => { + const translated = Documentation.TRANSLATIONS[string]; + switch (typeof translated) { + case "undefined": + return string; // no translation + case "string": + return translated; // translation exists + default: + return translated[0]; // (singular, plural) translation tuple exists + } + }, + + ngettext: (singular, plural, n) => { + const translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated !== "undefined") + return translated[Documentation.PLURAL_EXPR(n)]; + return n === 1 ? singular : plural; + }, + + addTranslations: (catalog) => { + Object.assign(Documentation.TRANSLATIONS, catalog.messages); + Documentation.PLURAL_EXPR = new Function( + "n", + `return (${catalog.plural_expr})` + ); + Documentation.LOCALE = catalog.locale; + }, + + /** + * helper function to focus on search bar + */ + focusSearchBar: () => { + document.querySelectorAll("input[name=q]")[0]?.focus(); + }, + + /** + * Initialise the domain index toggle buttons + */ + initDomainIndexTable: () => { + const toggler = (el) => { + const idNumber = el.id.substr(7); + const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); + if (el.src.substr(-9) === "minus.png") { + el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; + toggledRows.forEach((el) => (el.style.display = "none")); + } else { + el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; + toggledRows.forEach((el) => (el.style.display = "")); + } + }; + + const togglerElements = document.querySelectorAll("img.toggler"); + togglerElements.forEach((el) => + el.addEventListener("click", (event) => toggler(event.currentTarget)) + ); + togglerElements.forEach((el) => (el.style.display = "")); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); + }, + + initOnKeyListeners: () => { + // only install a listener if it is really needed + if ( + !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && + !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS + ) + return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; + + if (!event.shiftKey) { + switch (event.key) { + case "ArrowLeft": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const prevLink = document.querySelector('link[rel="prev"]'); + if (prevLink && prevLink.href) { + window.location.href = prevLink.href; + event.preventDefault(); + } + break; + case "ArrowRight": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const nextLink = document.querySelector('link[rel="next"]'); + if (nextLink && nextLink.href) { + window.location.href = nextLink.href; + event.preventDefault(); + } + break; + } + } + + // some keyboard layouts may need Shift to get / + switch (event.key) { + case "/": + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; + Documentation.focusSearchBar(); + event.preventDefault(); + } + }); + }, +}; + +// quick alias for translations +const _ = Documentation.gettext; + +_ready(Documentation.init); diff --git a/_static/documentation_options.js b/_static/documentation_options.js new file mode 100644 index 000000000..b57ae3b83 --- /dev/null +++ b/_static/documentation_options.js @@ -0,0 +1,14 @@ +var DOCUMENTATION_OPTIONS = { + URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), + VERSION: '', + LANGUAGE: 'en', + COLLAPSE_INDEX: false, + BUILDER: 'html', + FILE_SUFFIX: '.html', + LINK_SUFFIX: '.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt', + NAVIGATION_WITH_KEYS: false, + SHOW_SEARCH_SUMMARY: true, + ENABLE_SEARCH_SHORTCUTS: true, +}; \ No newline at end of file diff --git a/_static/favicon.svg b/_static/favicon.svg new file mode 100644 index 000000000..5535f1988 --- /dev/null +++ b/_static/favicon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/_static/file.png b/_static/file.png new file mode 100644 index 0000000000000000000000000000000000000000..a858a410e4faa62ce324d814e4b816fff83a6fb3 GIT binary patch literal 286 zcmV+(0pb3MP)s`hMrGg#P~ix$^RISR_I47Y|r1 z_CyJOe}D1){SET-^Amu_i71Lt6eYfZjRyw@I6OQAIXXHDfiX^GbOlHe=Ae4>0m)d(f|Me07*qoM6N<$f}vM^LjV8( literal 0 HcmV?d00001 diff --git a/_static/fonts/font-awesome.css b/_static/fonts/font-awesome.css new file mode 100644 index 000000000..b476b53e3 --- /dev/null +++ b/_static/fonts/font-awesome.css @@ -0,0 +1,4 @@ +/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:FontAwesome;font-style:normal;font-weight:400;src:url("specimen/FontAwesome.woff2") format("woff2"),url("specimen/FontAwesome.woff") format("woff"),url("specimen/FontAwesome.ttf") format("truetype")}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1,-1);-ms-transform:scale(1,-1);transform:scale(1,-1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-vcard:before,.fa-address-card:before{content:"\f2bb"}.fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto} \ No newline at end of file diff --git a/_static/fonts/material-icons.css b/_static/fonts/material-icons.css new file mode 100644 index 000000000..63130b012 --- /dev/null +++ b/_static/fonts/material-icons.css @@ -0,0 +1,13 @@ +/*! + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy + * of the License at: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING, SOFTWARE + * DISTRIBUTED UNDER THE LICENSE IS DISTRIBUTED ON AN "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + * SEE THE LICENSE FOR THE SPECIFIC LANGUAGE GOVERNING PERMISSIONS AND + * LIMITATIONS UNDER THE LICENSE. + */@font-face{font-display:swap;font-family:"Material Icons";font-style:normal;font-weight:400;src:local("Material Icons"),local("MaterialIcons-Regular"),url("specimen/MaterialIcons-Regular.woff2") format("woff2"),url("specimen/MaterialIcons-Regular.woff") format("woff"),url("specimen/MaterialIcons-Regular.ttf") format("truetype")} \ No newline at end of file diff --git a/_static/fonts/specimen/FontAwesome.ttf b/_static/fonts/specimen/FontAwesome.ttf new file mode 100644 index 0000000000000000000000000000000000000000..35acda2fa1196aad98c2adf4378a7611dd713aa3 GIT binary patch literal 165548 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 z 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 d0mRO}xo^G_%I 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 SdSQM28?+M|D(2r_;{O0|uQ74} literal 0 HcmV?d00001 diff --git a/_static/fonts/specimen/FontAwesome.woff2 b/_static/fonts/specimen/FontAwesome.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..4d13fc60404b91e398a37200c4a77b645cfd9586 GIT binary patch literal 77160 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 literal 0 HcmV?d00001 diff --git a/_static/fonts/specimen/MaterialIcons-Regular.ttf b/_static/fonts/specimen/MaterialIcons-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..453b3e4cbcb0e98b6a67789c0220fdcf2d229323 GIT binary patch literal 285724 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 z%0D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 literal 0 HcmV?d00001 diff --git a/_static/fonts/specimen/MaterialIcons-Regular.woff b/_static/fonts/specimen/MaterialIcons-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..187f2144a1c3d848677d111bc2514dc36aeb41af GIT binary patch literal 147156 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

k)YaNsB5~~QRxmB$(5_j;a7^qrr&!Pv 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 jCkc32x0o~*A?T)JA$CfYOyO)G_LM>;z3)Zdy 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%0D?nEc(H+#)`h((rqGYn8QXZT0Ud4NnPR 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 Y%dD+lT-fJ4UaFbs&B< + +
Hardware
Description Languages
Hardware...
Synthesis tools
Synthesis to...
FPGA tools
FPGA tools
ASIC tools
ASIC tools
Verification, Testing and Simulation
Verification, Testing and Simulation
Description
Description
Frontend
Frontend
Backend
Backend
Text is not SVG - cannot display
\ No newline at end of file diff --git a/_static/images/favicon.png b/_static/images/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..76d17f57ad903c3ea2f1b564cafb95bf9af84ee3 GIT binary patch literal 521 zcmV+k0`~ohP)kdg0005dNkl2WptjAn6@db&Pvy?U$ zv>P|<&rCZfZF0jmq0opf8)91(A<*iIVPPJJT((+JiF~>9KAA3%heFdnI;SaK+~|aU zQ~!x`%y{jX1<~SK2RxN7Db8`yWBbf6p7&07{VXfaam*cUs&eu*Zu(xaIL8rP){;a< zS~$}^Td32Rw+W1TqTd|L{#~jJet4!qwKsb5hq%YXiiUV!yH=ltu0>s|FLsT+Iy7K~ z!6*Z0a@vQ;AiZo!=s{{fqR+ct6YQPzbk+j}*qe7vtu39I7 zrOtZqU}=NnLchJxsU9iY+}3TYDl|BvPsX%E@dlyLgdV%q$UP|Y?DfcGb`}K&$;drd z+hL;zy7UTccUYU+h`ONIU|d=%`(0$=KW4%tVWXj~AE&RjPcEHe4)yUGDHMa1Q-|?M6%BiFEKDM zmx13sU|it+)=)|w1A`tz79sJZ~N$699s-0W7O9+j;#*L8FaXc#0n zM(F?f;Vi*4Q=;1rq7k2P?D>^>Z3%%*R+ZCcNhX4WqTprqomWw%FFo!(gy?bx&4J`J zs~KJsTHi6-u`Wm<#GEk(g{DoW9~RHA++FW;`_`AtyPqs1-oyyIcj>io_#|Upbl)}o z^vk+evUP@u&l)iUm07MF(jx83?(8l$9OKWE`2ZBoa6|=-98k!mW3NVUg*aYza0*OP zn& zU*7`nI)=~o#<^BmonOB4MS46>5fMyo@*i{Jk#lm!HCky)9h!!$T<}TKT zjrMHHg@VAzp5Wwuo64zZ)+g0r&*?Ehe?6u6N5oM!cerWQWgq3?^5l)R7Vo{?k`~xW zff4xsWu>n<=pkGBe(qZatyhxlg`Ye*ZA7^`@cx-=iw}tTDhP5pK&6g>3Hkl_@nh4Y zH*Wtu#-KC^vMkWr`AOohwZV{#5c_9z8zu~xEu*In)!&@~&9MG&HOr*(``&^UCmULb zyY4V*ipjV)PpAcSJ_L*zWu~*F>I>F+v)Pp1J~Btqz#rQF3ln@yj8iU)j$KIlx6hT5i%i#9Yt);2ZdG zq!gXxV~7(-H7F^vcdbH1uf)v5lKxP98~;H6YWJEjVZ5Xvv*Nn`_)uov+xb-X__Bw` z%<%mCK|wU*C*k#zNL_0tVfP)I$!&FQ6SEtSK~$R<1WX8+rNMwBA|(gUgRmXQQ+C{k zUNtg8mShNDp6M}sorw9tc;axblOlJcNMxeNkgXJ7-NqL;kV}%k@Clb!e5e8B63`KZbTwdOEuMdCI$H=A-cEbj7z<^E1H`8JIhV6uJZ#i-nY4UT#R+9<` zH8208Y-jb;V`ja+;=J*y_Mao3E@w4&V6;AQfj1+`JippJZ8z9#%icKv`?v>&Bj@ZT zA3%P{!&4z7Q44B9WAg0cs==Xe!a{4*!uC>56T?*oy1yPYm-Qu-xFBgWdOy`_OX>(Y z_nTLk4m?tZV#5uHFu~lyIN&q+%&l!X1`+f#`Dv~>RNdK$h|lzK&4^LSt2;1G(L-la zkKES8o(iosuJuYO5>=}r6S;!^o&qaFlsl(LaXQ-y7KlDG8Y57HQJxP6GzPBoepi=d zzjen5)wCmIXTK%H|NfjD>Xnz$h%>UIQdGcJxf%6om86i10LcUP_0l&~*dP`(nK*q6SJ}5GWHb+EZX*<)ChoU<3T&`miPF-) z2eAdB!y2%0sVgDV^va388T-%)53lZ&l+u&y@;OVXYd?9lqWs?4hN}2-yGYFm!`nbW zu|Q%3*1>e{-vULFS=2&AZ02A5L~AkYo;Q{ED;z)Z;7pt!uUpT@1ko=B1Kvi&9Ea)0 z05yfbc|qfx+3&P&O`7hGX|_Q9E=0c6ask@l=qm$ zJ6n@qgiZXpNtA|;u=9ARrNY!Z#iP_a(|CT5Nqr%m+*?0Tp8&ro=cym39WqtCqon!p>YM%6 zluPzYASB!%H|*FJ4Xk<-PRMoGqX4(Gj}Z2>eSpaptMFs)B%GY!=Rjwkbkr+erZMqr zRio?e;RVEfAWdBFfAY~T$_yP1rdCfJqgc^3I=mrZCQe8vO1#$V$2}Hopm`9_Uqn;g zBi2#0Rh63nYHNqnn*jrG6F#2B`4iZ|2%v0=I7#ft|Q`E~wB>PLoN5}{E4nehA8SVq+OMxTWfGB)k`g>X0RHA=}g z0}14c<=)WAm=p7V009aMeuIpiY>IFrPjltG0;s<0K{5NCgfsU;;_6=v7_gIYYxE3< zsa)S$&D2g88Prw1$fGg9So>*2=U8G=rdd0(?DTyItZBYcNI|1K=i+dEta@tKH#EA`fZN@->p#=t4&<)w@2( z_QK`C+%G5U!Wl8Nx@+K|UK}uioZJ267ug<}ibQ5E?*{`N{DOSsO~h)JqYh*ZQ3DsE z-E)i6afjtDuNnm6S( z*CwhYnh3d88wxd*6CL7Uaxn~o)bhotas{6WP+$RrR^nC%C<0?0fpJE~ z=CC5QVS3*`HKvUo5Hi$T5~UcicwNizno|%Qagbj4r?i*eKV?W>OFJ)!UMTLaOFk)D z2pxn#ok@qdN$bULvJQPddPFDLdb`lYVu?2d_eYif8Xe@-Yj|f1ENodcyzwz`96Mn> zVrP?ueiu7UedpVnoGP42G!E7%1KJ{1^e5dc%Q~;Y#n$oUoo|A>DhtG`UYbm~sS8xF zT=We~w0=w%$xjtVBEkyW%MXE+2ggfmh}bMf3>dL)m%rhgBHS(h`4iDb*G=ubqP+ z%}lvZ3?6YzQiMi#xgN&0oo+CdrRuA~IIo5S=(lSIWRXz)v_=A(pm+d+6-QfD&e>4s zhkJ`~jMx8YWo@vL{58X@)pUL}TY6WuM2jY`-JtQxm<}p%9f=g{Yb^>#I~h*&m*qk{ zASQDsC~_mTx;llF2n;xJ#4kSkn-uQ(2~TC9LX$@;7b+$aCo}y~){3iK7mL~_>s1h= z^?3tPMm3cYMLLSRJj*k)bGfPdj^mjwgMg0)&}R8g=Xqon)GlH1HnvC`t@kZy&pY(k zj_pT7i(HGh!R6t%?jG3eb&T|v30WzNYyc-i;+-;lcSL+}bQUy}ZLl!dW-9%GF}fjX zqppxE*xq;(<*+%oqM@Kr24{*1Q&eS^lJ-n(I5;}A`bIlSEbu#CuaIeMYw-`>4*IEi zEF68MSt18>`A(q?D;>+R_K!FdaNVvB(|1(Mc2Nd=B!D#Z{nSvQU&rgASFZvmGd>r^ z)rLxy2YSoO3qG9rC8o=^b)d`cr1NIEOT1}C>BEratKXhQ+D(35ZfLN>6W}HS^%23w za-J&Ov_wve^6x558Zn{`k^8;jK~br&j_aeN{3-%i)N>}UBjcx@WHU$;5vXRWRh(Eo zPwxCRmO6eaiS{nfe!qE0F&2GFUlK@Md3)LXUFdeZR=ih7XTfG&yP(i}=*$Of^knD3 z0|EspWDevho#!)R+Pb)>_;#o>wKc8!z>n6(L^D|=!a;Se^p(0u0p5cLYpX*&Y1KOe znT+SO<;Tos^UD)%s* z#lJM$sfFZS5PL@4Qn4wvj}B?qGQDeWcZ0ra{mEawLLPpeJk=fDwws7XIq_a|+$SmgvJ@A+I}6ie=Xwk% z_4pxXraRgSitl0X-uMxiu0v;B>MFR#jdEF^Zk$RUSxRFh&|1HqJUU04*vZ3)9&(Mh(3qw@Sul}{5qr8 zMgSfrr|J*~+Ws9E`f)Ip4Hl;qlG^u9P&VC}2FqAE(@g+Ud~+y6{U_?kYz~Y6ML&^f z6n?LiDC_xBj?4&Q!rX-D#L(qhA14fzio`8m7!${Rk@oTE!&j$?zU@t^!skloR?EZ&S4Qp_8S!#X%5dZ4oQ>Wj$osptDnO`%75)XZtA~m(C(@f>1j}_1BLr zu&Rj{IA8)I^*>dlh%%&Z!N#GO*;=P~XbqB;`_-V|8HW0(J%I8CmLcb(ql+s!OTQDg zEU`}EbU8arvPHpxES~{)DrfahFxkN+&?F*mX0LW#p;O7#N zxiiIqh@eES)ZRV!JCen$A0vrJ-AlKc;(YE>2Ax+5{eW|%#x5wUHMy-{WZ~U3NG?3YV9m^)_V%aE6 z$kWsE`?L2%Pdyu-%9wjz)w{Bp*FF-Ph^)3-sjROklZ>E7*}f?vZ;9NA)NZjlcW1oZ z6lr?akiD(#c|~d*F;Kc(pZosX0cx}k__l!K)URVS!9(pnKFFSNQ8nVgLRLxXz}T}! zdo2}WTpm(O?AuN|UzbG=Mx?=Wj3U|-E<6HD4^YEA;z5*UwQf6jZdYF!AHTx#Lz2B= z>u|doY>pb-In(LqSqP-02D$BnCm}5&BBR)T`DFR59h2`n7ib6j&UQ?aGbGu!vH=R= zs-3idy!@#i-wHt)9FB)+{h}x!`&8gd#6Wc^IRlJb(WYk>&Qe4K8MRVA8PHEUORc0x zugyqbsMw*gdt)g;wc)-H6R>iZ9TO8WC_%3gQe)t0%aWS~HL4yJGo)044*3SO$)S%> zo&r}+ym0@QwNO|v7?0WVGZwa%9R2;yBqL8-&b=(?@~D9s9=^hTSIx6d#F{Z%DRsu} zgv;WE*jdq3>g)6iA))uElu$97c!O#2SOxP`sj=y4+aOAY+3C7POL_<&Xx;ka9G=Hc zS7@J5XIk+mW`sEVr_3C*my}Uv%*7PyaUvw2cvItx8==1b;W_dz?4|VAwAwP)!$DUq zJKqNeZa=*MDcHUR~q;Em2YGu`cdO_b>5{X}m3zA@5bh3W!EV4T9X?rGe4d(7x zH@mkY`95^>sp?)cO}b;*|eR)0hkE-f)z@` zn00wbCwwDQPZ2t{j0d&-l9PiAMuhs}L2G8Y6qJlTZA%3$)&<{}&+`~HQ;i>A#Eb}* zR$lU~mzksFg$!M~%2)m07NVNPuCo!7KX&;XJ~Pzd6(-V2lOu0Hu7>O9?zeSUVOA)er`7ZoIzjryumXl zNKaef?AgGju3d(h`4THbRXFmRonhe-GM58pZcGyEnT|{d+_*sLTuj`N{1ub*)AwtY zfj*No!$Q9j@xlr}cx+3x0a#;U{2UGln9gqvG5PZ}-jlNtr7C$Z?*NrNe_IsBIs8Ve z*m)^P$z>++tX8hd^Y9X-%Uh^bEvy*+)%~(ljKTUBHPkC9NSz{-pX`>$Tn{x4Lvc9! zG^XDhvS+qEI;|`=tQFTYJLA;+rv)zRJl(U_?+@@)2lnsEvCd=*h&4p|F~0jOufTfA zE65$|exiMHK}!AVQDT3=F94$SUVjjH?iUOeoaui-hn+1;FI0E)G9k)l4}oH8_vDJ6 zEmA?QJQ3U8(9G&aZZ|&qCeQUbdQ!;oETQ&8h4%5~XHzr)q6o(UC_(X_Ep%hGU9z*E zHR{)jh_L@V0pL=eE%k?{OlWmsP;32?@_-P(Jf5)3TMx!yr5jlq@wjxQlGFRQPtBKg zkSD5@@n!FIny2ZTNHU?v8th)&&rmHRo5~ogzirg%kv%8*;a(SVSA?Bs zNi9OJ4i}7_)bci!CsEEXByg36C51fqb-?Rs9j()Ecm(T;%?BL`Dr0>Mj~=-sON83Q zXBVqH`|$axv*&ozBnSHdG7Yp_W$|!F@(ZcO_T~1A*uK<-{>c1ICQo3>M)H}ij}E_p zb+>&NMddO>bCX|d$)}s~aC|jeb{)M5V(!MdAVGH|j-F+6F_zlCsOmKLQn}0;K&IYu z0x)Xf0t-#ep!HbcCa-|KG*V{WL1gqR#Th`gqu;kAV@vfXYI?vmGI}1E*IIx$(SCFp z&Ig2%kkb>oy62OglUoLT9*0w~Z4BfFA-6e_$)=&aLcZc1QpVhI)5q1LE$bfG7k(RT zLRx^C4vQhOYJ8xOJthK5mkBj_S6C+ZY*|=rdzpd?#yO+W=CT3cu|1kDYl`fCdC#!7 zZ>t>4IWBoO)J)M22Md~f=DMWUZDG?==o({s)dcIPZ>z!4%rb@%K_v8x{&34Tzx1D- zHP_wO`h{7)Zjadve9xFIo2}63Pl_ zYBl->`V^z?*{%bKeL*99f4ji0(z1Dbn6=l$t9LGhU9;21PXJC|hy87r`V!Ilh`2;U zL+q*UjOAO@VeyFeZ$i3T4c~sY!@R7K<%6U=pG5GJR-A`%X)@L`OFc~*;mPT@vla-4 zDs@@wz13~P&rHt9uAFD<(uh$8dUV>@D`` zinq$7mT%km`Z)HRnhuGMW%Pq6R~*|!@AFCO><8JeqW(gznlv^e=)A7DywHsgst?;A z*ieLs{jx;G2G3s_3)59e(G@Fnf{GlJ@}1_eQsq7%Wet8V`*nJ;})mcG+pfGv(oDk>%Q)D>~qpx-QT9^CxD$$eTsLlKbJrnGohK)qnQO=$+88&8%&>Lu7+tz zYs4=_*%6ndp(8mDFP-c4?0nYL3@=_!&1<#3TVoBeEi=urg$;G*MAu};+z0x&k6zXM zIoaPAoKnN-!KL|3n#@`&HHFW?IFlXlG%t`|#lltzK^`uPS?K+O>r%b35B<5~>H{FK zy{KgMO=&8?W24;8)U;hQx9`@cFc-}=Bwg67cB-G$(Y{R0T?9z{L2S&Bom1!IJ)g#% ziOq_F>jOH{!$jnU;M}3p)mADa|Bm(X*)VnmTy3nMMDkwOqirADA!KUzwWTIcGpEU( zRKhG+HVy|fd$j$XKDuK#T{`_rpw&jo$IQ`x)A#ncO*h@t35B4uGht||m2^Rbtv6)Z z_k?)P?_}9*YdJ#~Ep24_&dQ`)50b4Ifqz?FY@a2IM&MTajv%+N;~9CUd2^(ZNZEe5 zQlI?X%NqZBHEIb;eX3*bXRFSKhbl-VvY~pQfak)iO3Ku=TVuM?AwS_M*iSZOB$lYR zVCyk@9D7A3Sb0nkH<`g)cI%kfhcYf`0K_Wi+Z4`m~G*g=`r!hK`o>0S8lz zZsHy03x7(JUGj;%sWWDkj7n}tLJ4E;c%3z2l<&d^vryefcO?9M*@d1B`Ep3W47^^b zicFW^OqCI5aEp25ZFHXPULwO(+`ko6yL?G{@LYyty%J zuY!~Sl8W!+c-ZRJ4*+XEbOL5*S3sdE}%x*xqd$rpkjlJDLIyrw#hOTyuxcG;@vilJ^uejz-I-I{PEJk)Wv z(?oY6DhAw@w-Ceuk@n2&d%DuH$L;O69na22yP`i2A*B+EEAammc1MMgpWE}Fo^XZ@ zS|RvoziZOevVSva{^GIQ`qYuHYpN{v9e@g@o4_>5A|L@T>ICXN5oTQbhCqIhX5ng&x;_W1qX7-b!^kp`s)-gcW%?p zmpmv7Ezxz3Mu_wS6rP|IiE}E8FA*d~n(_?y*Ca-kW}bSDy@EkNikU=q6FI=la!?K- zi9wU3%6RPtHCY~Va4tQD%VS9*XDtZ~$ytJ)I%z5F<#O4kHBNt|t}4WqdbmEkl1u{SrRq=7kDpFT0}-}d z5sxj^kdh+C%MoSBf9OjB#!dhx_c_bY@EGjY9TR(%yq>gK-&3RMrg~JUt6uvaj@*7) zd%ciWq0d5VswXHMJ9lArrKSwRo(3vMv)7a@AR_EAw$ju0gB&$$#Q!~1o6`wKAf}c! zYrZ5s`yTb{`;U2g`~wEA-QAB-`j8=2tDT2t!|OhLjxJg71%@oHe9fIO2d#lDZ|eGZaSd?#+pgil4v?v`U=ch8Y(HQc z;1|9`)8KseWD(PM;C-{~CSIc6BuGX(V#ZQ8Le@5|pXi-h0zg@Pa!KP^{^za`&nxnM z(&6h9H6^5+%=Flg?aZ%1CA?EVsyj)FUk_zhGf#cMj~V*SpM>tX!_-BgCIZqi>m>YDP#StH5Rc@EV`&$oIOR@vB( zrYpY6xX5l80G^I!=+8+;*ZkEHL1h$<$;#K7usb17sw5gmtjD;MXI zft&Q)*4yDMy*`ub{$dba#R4uyjz#|OQap_q<$kd5F*{0%mUMZyy0@rZ+p;1>@lo=` zz?!t4UcUhz&p6#rl#_i>Vk(~{>QZ>$T+^N1duPh_#0s>L z+cq0t|L6U}9L=WxOk?-_Lk$j7k($`bR9QG@7(+BYP;Eg_E+IHT1=oF2=p+5c7cqH1 zQA?>#gyrsUQNUHAz3i5`z|osz==!tooGiknRFHq&B_O%E118OuD?~NB>>YPuWK(6e zQDIszpo~gv|HGi38kCH%^fgDCv`r7coSn#-H`ZqpQBldAPKSzU>fP=!AKONpm{)TK zO+ue315_ukRi*xv3_3^Sd?!~tNB%ajh&hz1XI0M^BYfkPWD^_3XEC^R!>d1VZUT1( zVM(2zI;PD}gcE1{bjzqVeC|^z0BRJAjyrmH0O5;SIz^ThjqjIE#E2wczx;^NPrg_o z4*3!JUr`s$U-@)3KEB>t6fZgwT9nkOv8+!S*iB0zKMuUMHEFIBmB{=6L>Ezp3hZw) zaVQ;vCrs@78vfe1)f`{XiO}8uAad0~t*wZ1);r~0{)gC}FrQByAlAf#^Cd&^bdXmW z)2`G?aaexzzv-+8RG*nYV>=PrPjyh$NYObF*zd#58Xz`i%PM`nIq@P^QyCI?o1)7t zE+9%=kQmV95}UkVIvidU_;}29(by!((l|2w3H$iNUZltW0q^%m`FNHs=I;EE21G68 zoG})x!`Pm8jI!~0zC$^cvv!^s&4enSv}^SpeFR_WA=7t-hmIR8wRN8RlN$Y`NVX`7 zg^<0-tgVZ13h{TOHvnon(ykbo6u<3lBod92mHgt!Dae=Wt!R^Sc02heA2hAf($@a@ zOnVkdv)10ntkdhHZz0EncoZ;6C4#3W4V1g{;V!d0Y9|Qp>fE?bz-1fFj{EfXRD(D@i} zl!kcWEjWJpV0<1Uim%d8hy^!bXSm;r!xGSwEvM~^rHOkuqqvwRzjaE#r9Eg~;Ub1J z{!WtW90iQK_Ejr{`+QK}_k4Jyzfu5+!w_)Hqg*_f(pW%{m^HY+zT+=tk!irh-NQLPB}DkSj=R_BRge$;;C;Y|9JI1n0``C7 zNfGQYH>Y~nH`YbSgE}xxN~*m6Qu$qg#Onft1Tq3uZ{%71hP}T%mv<-MpfYLS+bFa? z`yY@C@c@D(0ebf|B2r3aQtkW)u7 ztuC;58y)27uURq`<#{G4)myVso6iLEn(C5_i0Lw@gh*e@EZqaU0qb=FCLUXsgDa?z z4L#!3%_e`-o`_Hw_^W!}>BQ#_{+F2IF9Cr7V0JB3jFaeZX&S`n=r27Ppa5Y6jHF&# z8U9-w1{^-Rf5c}0Z=1Qm#7d%^00P|ho=a2|AVK*fZM!C$tm7WxUr+#&PZw|>l5k%9 zhupqN?7Z{0K#zVN`(GFu#*B7-G;%s7{?}$5?A`l8`$tI8q7QmVEjIO(tB^?}aL>dU z^-`@EJ^8mv0RH}p2wMy9&oUt?FqvBjMc0UOU(c%CUXlVpH5)rjtk!PF2mraqA#R3# zwSO<)pgZW{0smi$1T^XLu*|>rsCu4H2hc_Rk?JwX8N3M8W6VAP@O=O?*NymBGRB_r TK9g-glZhewR1r}sY2g1~QUAn$ literal 0 HcmV?d00001 diff --git a/_static/images/hero.svg b/_static/images/hero.svg new file mode 100644 index 000000000..92c154a40 --- /dev/null +++ b/_static/images/hero.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/_static/images/icons/bitbucket.1b09e088.svg b/_static/images/icons/bitbucket.1b09e088.svg new file mode 100644 index 000000000..cf58c14fb --- /dev/null +++ b/_static/images/icons/bitbucket.1b09e088.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/_static/images/icons/bitbucket.svg b/_static/images/icons/bitbucket.svg new file mode 100644 index 000000000..cf58c14fb --- /dev/null +++ b/_static/images/icons/bitbucket.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/_static/images/icons/github.f0b8504a.svg b/_static/images/icons/github.f0b8504a.svg new file mode 100644 index 000000000..3d13b1975 --- /dev/null +++ b/_static/images/icons/github.f0b8504a.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/_static/images/icons/github.svg b/_static/images/icons/github.svg new file mode 100644 index 000000000..3d13b1975 --- /dev/null +++ b/_static/images/icons/github.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/_static/images/icons/gitlab.6dd19c00.svg b/_static/images/icons/gitlab.6dd19c00.svg new file mode 100644 index 000000000..1d9fffa74 --- /dev/null +++ b/_static/images/icons/gitlab.6dd19c00.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/_static/images/icons/gitlab.svg b/_static/images/icons/gitlab.svg new file mode 100644 index 000000000..1d9fffa74 --- /dev/null +++ b/_static/images/icons/gitlab.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/_static/images/parts.svg b/_static/images/parts.svg new file mode 100644 index 000000000..bad3d3551 --- /dev/null +++ b/_static/images/parts.svg @@ -0,0 +1,3 @@ + + +
Yosys           
ABC             
Yosys...
Verification, Testing and Simulation
Verification, Testing and Simulation
Description
Description
Frontend
Frontend
Backend
Backend
GHDL
GHDL
Surelog
UHDM
Surelog...
VHDL
VHDL
System Verilog
System Ver...
Verilog
Verilog
Project IceStorm
Project IceS...
Project X-Ray
Project X-Ray
Project U-Ray
Project U-Ray
Project Trellis
Project Trel...
QuickLogic DB
QuickLogic DB
Project Apicula
Project Apic...
Project Oxide
Project Oxide
Verilog to Routing
Verilog to...
nextpnr
nextpnr
Amaranth
Amaranth
Architecture definitions
Architecture definitions
Clash
Clash
SpinalHDL
SpinalHDL
Chisel
Chisel
BlueSpec
BlueSpec
migen/Litex
migen/Litex
Silice
Silice
Synthesijer
Synthesijer
HLS
HLS
PipelineC
PipelineC
Interchange logical netlist
Interchange logical netl...
FASM
FASM
icepack
icepack
ecppack
ecppack
RapidWright
(Vivado)
RapidWrig...
Interchange physical netlist
Interchange physical netli...
Text is not SVG - cannot display
\ No newline at end of file diff --git a/_static/images/step.png b/_static/images/step.png new file mode 100644 index 0000000000000000000000000000000000000000..e63a904e7f79ca6a72e797b8f15ba6acbab62a9d GIT binary patch literal 11200 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


E7P+YO@qU;Hawt#|ySwlNs;~vs4 zdXxOnrDk0#DJcFaDNtYECI-u2_bcvoOF*Lz}47UE2JCcgot?W^&r@ePBc4@CJuif7I{ zTm7;ahVPkKwLsu1Cx$4u`uV~-c?-r{0`!%BE;zJ#3K%LEASB}c{&)wygWSit8jWX_ zMR_*Xdm@jBm{wPj1Tyxor3AaRX4#Ed4q~2#$`YV><0ebMe1v@8bCy0v#)Q||{%-Fh zV|-~L(JKfua}=5Clof}T*HC@OtzBFTF?(0`#gr1QF0s=8T+Km0fC(`nq)--3lVSW+bpnd$?W*tlIQ$1qMVsH8lIctH9?>ym0&dXEarnZNFL*7a)afPN)3tWE4e=_ zXya+wuqznEVA#K$wK|Ziv|=V6;4|s@oBJiLRBBxKn!jbb;z~w9<)m}>Not(oMw8pw zD}*xfiV~LeL{BhsRrHB zpsrOR*lWrgcInWMK~in zHoFGNLp=Vz-o}kGwIlWbd$Rm=N3h-bg`7xA?DyB8`adrC=H(O|A8E-#2*u?r<5bZm zdB*qfVL92(Y*^CWHbnLYi(sP6gAN{v%qq`*EuODmllj2FWq|8a7p!H!WTvUn1=wtF z(oX4%NVbq7nI_FK&vM=djCK65wWQQX_X~(y!YghnnuoI88ZcI_l;w@Ay^$I9bUYdb zYxpsV)vy>7RduWFv}o|QC?geF{;*3n>zi=?(b}0O5%JYbbU0LRioi8kZ5tryS;ELZ zwhIEYh=g2POrh`ba??2N3U7W?60l%dvm~YrpRH=0+M{3o{z_@SPchHt6p)@|^zGbc zBe|eQL~#d`Pfsxji>_F&R5{uf1K?9AhC;rL`U{#DLIn6LVKPw}+P9jYwMZNXH|NFH zeAmcHrZE&i@+2C@SN~z}?OOo3I+n5fKZjU;8$$8DK;}Qh1&FUE)zh4Y(-*B9Jjs4@ zdTRDCNw3Xno-t=>Gxo*`?F4f-mOX42>!@2VQJw+j8d)ikcIU*L-OFPncQO%`+s2FfXg2*XuTyq zk4>e~&nNB(ds~L#@xSsX@GQpjB2X~Tc^BFH+f9r{0R%07Kee*tS(>0Hj@V0nxi6+T zcguO9{(>}`ft4>d5soH$M)OonCzWx8XRa)3wZClSDi|4LQIf^)qux;4u1%YQWzG@S z=L$KSEX#pCIg;luHdB4^<~24Z6^4#qO!abi3(?S5f$b!|Ir~Pi%`v*628GEYGSfwQ z0gL;v&t(`uZUJF}$>98j&Z-%O_1Qzt0OSfFra&#OfL~c?!OV)Tei^^>DC{)Q%bS1$ zV)!Hxn&#&plJJAuSD&Vd42T{2M~qWx>>cjEeBJ}c!5a%+Hf zEM?^6rP@e5U}bV~@;Zmydh&&Od53Wv*xi3q(sps{^!1lFf@d@?!t2RkAA1$T%;^9d zT#=U2@kvZ0P+uyWJdK=Fz@(!(!bqb~ZIAar#y!ANig#iZ?h%T{_r_g0E)o8w++RqM zss~YBnbzy-CE8eKJaZu?vzi4F_xghC=xj#mE)gc$yUI9s)?`ntEV>vEe*>6$Hbx}e z#xE0&liD;@<(A3MqO9K**bRv{${OF+KL_B83L8pjsXrY5!tN>Me|FDTe@B(Ju~d{? zbMAYp(zt&fgmg9!b+d0P{Mf6osgn8Y10C0s?5wm%^Iqbtv?Zof1+o3>kIILbjzOKZ zoQE1lX^NoGRUB7ZvvMN9i?k#G1<+({VagnDu^tVt#c-2*F3pyye**!5QhfU(C6U z?F~DzCE`igmJ7d{;!cZ$wa3H<&DmbG@h3=vHkj+hC0?sX89wYo@0d0peJpsI=n=yj zSTVCp=e)5Q?1Q&oXdo&UookTQ9q-jf9irgkPeZW>x7@P|$ZGtW&0ALzq{6hQW| zi+rcOKh5C3e`vS6pc|ApNf#@Q5VRi|IA2bPvtzx?06}>qS)uh zIdZ#t2$RbX333xX?R9o+TJqo8NmCH}7F*Z8>biMetQD+m1o`p3u+?lEJENB`<0nV9 zrxLE-|3Jf_u^?-YBbDq+tL5yVv2D{-xc>Fmwa$|{#$d{x8jI(nn72LVUpGobK7#KR zkYjDr;1UcEs1dsy5;QM@+xF)A;SdE z_#9t;UQM6$Fl}AdL+MsP^E=?Km-X?zgz&=Nn}rt;DAqkgn%$DysV5y^-PcY5L@G05 z76a-~9r6~i=N{v0Sp8zCS`4xWDl9VZKk2qpt_JY>ldeS8a+FHWY8UXk?Iz1)v2);3opwHq`` z73TVMmw2qgSFGpmmH9!1iv9^F;TsM&Y$W#c+u9lLMk#iwc0*srJ4`fpP}mNFcCo#n z=Yqr|miLC947(+nx;UPcq#2<;7+>1K+F`67q)gha1kLE4Df=ZUR`2_VOZs}Yqv_Bs z07+6nqp3Ui&^CP7{kNRV2e`jmnAV={S*!c$N2_+(?#7;NSDo_Uc6Qw}gXy&20^?=m zxOW{GqZ7K?#<3x!E5(Ugm{CF9zxs+iXYXeC1_@zp$!z{4WlYez!fGq+i%ah_DZ4n! zqGx+7bl;+zbMc1A3sY1cR8=c{%-h_-*tS;%-orYVUm1+E#QP*&Hznp{lVHR1Nej8G&AC~}N=}jHk0kqcZ{xe_ zbrwF9#@M9l5-nHk$XQ#|B;D#N`C=z7GK3{=JOgo}9d6q-LWS0$s}gqSWkFMX>T8mn zWQ0INq?%`uu*f8YHs_{iqPFhbDBAU8P8xLt2j4^*{vNxdab@#+GGmsrsUe0Wex_vV zXjupPAh5>&C{h#9O#YkvZmwSHWtA@oRzj>6-9Mr%Y$>9llPCBvCF+(dbdh3zvkxkJRspxIV;x8jVbi56IGZW)pnH$VT@f=cC)(|p*Kdhwx54KOVOTS_cKt*LLN4Tb(fdPz}!{ z%a?;9>6*6Jlbe^b6VN0JMi*%Lm+Kh?7Po*O{F0WEHEFYu7cbfOfAzTw`wMIwW zypU`kfKMWv;XWwrI|XO=iHw6&^cb3C^{U`SRVYe;qjH3eMlB_ihOh)9bDM zUY#I5CJK$P{^MRT&=SfuOyfd|>44N_I~-25cQ&tYeEyc>W8QQp@NuWdQwOm>F+Pu2 z)b18l+(~5Mg_1vFY8w=$KJ0N(d^q0Nakei#t7#lLNtaY0*bc*nP1qnsso+O(pOXW@ zi}gG$=2_!I7bp7D0<+0GQXc*F4kE9*DY!?}Ua`B}obR=r>uF?sz&He@;)vJ{PWx|z z1BI6-$_{2MEOm;b)c0<0;)t>!S8(r{3(dX%q-BGqsTQ>Y0$2bUJ?2`uZhj?o+}4T% z{i0MOV$wouY!7EvVb9$YK=@3!uurUzzmLR@3`dUj_+mlpp!KwB&A_sQJK!PTE?EQ| zHvy-!r}pPkvY69Oung#+`LkDjj!|S7ak^KD&o85+f=dd4CWU^Qj@8lZ8Kn!Y(p|Jf zDTp@;egOyDL@Ngt)u;vc^VrxXw;>~QjTy_6SHdtyu(aqmAX}R$U{&S~4xs`<#~uA= z580PSlqMgyC;z$c>+OOZxF13cc)1z+v_M+o{>&Y^M}$m9fb>R`3uE+b-S6!U4(SB* zBt6@=7c+aWuG@Ags{~LHLgN61Jr7$b$~>r@qGQ&jc-+ zFO#pJIf$N1)~Nd#+n{fzwBjZTSob(0hxI+(Uc(ED73KRG-S}SMad*Z~O9;I$dGMdS z2B>O;3yLRCdsKrb1vOBmMWh@Wp_9=S@ zbx#aUp5B`yXu^LmuPU0Q&L;55ze%@sxP!@eMO&k?rcUTcy!dZch;REg8EHK zmrvQoQ~H+XLf*hmf?M2(>3U41@Q5qxp-KCYCy^N*YzO+dQoZ*W97vZAyT}~&+M*#J zYW#=NjLak|)ZqLd>!P+_keOjOUvg;>kv1e>_7-7hlk}xO6QN7v(S4$6eWNtop8r?? zi%qgR79aCIOrU5b25n5rFDgvVu-XRpjy^ID^ttPf2Id* zk5`r=GiS9;EgKKSHVj0G`rd##6@vJgjazk{GaIWT>|?ojMLTe?CrYMG^MDy{G&H%JKt)n|$wv5r=jmJZpZ5%-z(w zt}xD;S~=SWqk=`sr5Vn*`SM#iNN!UBlw6RdaQz$<-~TU~U=L&69S6?;0?WMBH*oBT zLjbUyh<`5~o>lyUSTur+k2vzL5v2Li-;#0l;eWj*=finB4#dx&uX?jJHfytyqckXU z=7>ZT|LC>c^>=GQ)m2!ayo;hrw8D6V=iHBDyya-agCiTwRKh+%$?0mA+M>fY{+p+b zMa)05W~@6O4KDznduH`9H!a>l?HLUW5m_0r!mCf+xy>58d&%GTGY;LMBWbZIoILL* z4>X42`R2+HV;ld8LLHB;27Q*MMu{+B|814MALdI4Ohl54@opH_S%T8^Jv;#=LQ!IaWd>Q6D)4~S8`Lzs{@%zM=Lp4z* z^Ic^#@e%*iQ({O}lt*z$8wf}m!LKc>mCoxFRCa#KBOqSP14xuR8Qwu#-ZP>`Yu%hJ z@G(oji9u=AO`*^c?;A_LJoI_xveMQ9^uNUgpT__5E$NPA%=Aq4G1M>C1U-D7)rOY9 z!9`XO7VX_Mlm z6V<@;cma1UvU6;Mq8tY=<8vO761kyJVGj`6W8G5HfZi+20a{_4sVda$oGJB-;vutRCe84Acp6+i#Cro4@Sw| zdz*opfdQux;)2N90%1ATk8vQC%-M-wA~;y`uO$o19^aW*iIOY|l+{N8O`jcGD%@0S zAicga=be5YifGASm}jBe_K=I=#Ii8H)to$8bnPJZtJ99KZR6)@biQ%vZZJk(7jD?i zX+?kQuFM^}C8q0tDe2|Gr%4bMj*qgu@bXQ#+M}9*!j=U5_Um*O`q*IV(7M5aWdiF% zJg{=xQ&{?k@pcYni1Z6nV z7L5@yu~{6{%oTh3ykGa2HhpJ;MoWpum}gbYP)M#c!o{;n*ri`CnuqvQA^wkT%#~2Z zEKeW{(NJsSLcifNKK)yglU9Q!;{TY@-po}YN7)h`r<%S>V5I1U@46Pk#sx5-0O#YH zZY~F69h}OA<+!cOD(Flhby3m{saaH@FtMOw7QURAqDF!6h-jbnl!nwC-{}nlD-mA2T>$oSrGpgYfRw3d@hq35pLShw6N-X_QyA)N^R3YyfwCGUX&>Y zp8K@3ivXBfC2tj;0FY!B987RPOX#aNcZ$_g$+|(sp&;yA6E{}@LYHSFLHH^97-|d^ zISRqmEGSXIA*eiC5Tkqp7t^_q8q1l{`r1smx3?5cqkN6BNt|9_olta-;~DzY8tE38 zZKKo#s#*Tf)Ghz&YaLB90Y)K8&(Hu^XOD6Yo#o}g*p}UuL!!dvzj&gK1L5tvsque9|JeKAET#>BA=ptI|6Ha)Fb5hxz^USxy zBhkyo1K!&^-@*)Mg|;+e`x3QJevUc15UYw~0P>|bx=RyI)i;!|%4bDw)ObE>RC>ms?PXfvqxr*2EfpX>www>o321{eWJr$7v`C$lXFYbJ5h4v=qT_tRw$F DM)7Dk literal 0 HcmV?d00001 diff --git a/_static/images/tool.png b/_static/images/tool.png new file mode 100644 index 0000000000000000000000000000000000000000..b6cfc4467c7e9cff18c98e87933bb2fd70405be8 GIT binary patch literal 5495 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_static/javascripts/application.js b/_static/javascripts/application.js new file mode 100644 index 000000000..7c724d2e4 --- /dev/null +++ b/_static/javascripts/application.js @@ -0,0 +1,2540 @@ +! function(e, t) { + for (var n in t) e[n] = t[n] +}(window, function(n) { + var r = {}; + + function i(e) { + if (r[e]) return r[e].exports; + var t = r[e] = { + i: e, + l: !1, + exports: {} + }; + return n[e].call(t.exports, t, t.exports, i), t.l = !0, t.exports + } + return i.m = n, i.c = r, i.d = function(e, t, n) { + i.o(e, t) || Object.defineProperty(e, t, { + enumerable: !0, + get: n + }) + }, i.r = function(e) { + "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, { + value: "Module" + }), Object.defineProperty(e, "__esModule", { + value: !0 + }) + }, i.t = function(t, e) { + if (1 & e && (t = i(t)), 8 & e) return t; + if (4 & e && "object" == typeof t && t && t.__esModule) return t; + var n = Object.create(null); + if (i.r(n), Object.defineProperty(n, "default", { + enumerable: !0, + value: t + }), 2 & e && "string" != typeof t) + for (var r in t) i.d(n, r, function(e) { + return t[e] + }.bind(null, r)); + return n + }, i.n = function(e) { + var t = e && e.__esModule ? function() { + return e.default + } : function() { + return e + }; + return i.d(t, "a", t), t + }, i.o = function(e, t) { + return Object.prototype.hasOwnProperty.call(e, t) + }, i.p = "", i(i.s = 13) +}([function(e, t, n) { + "use strict"; + var r = { + Listener: function() { + function e(e, t, n) { + var r = this; + this.els_ = Array.prototype.slice.call("string" == typeof e ? document.querySelectorAll(e) : [].concat(e)), this.handler_ = "function" == typeof n ? { + update: n + } : n, this.events_ = [].concat(t), this.update_ = function(e) { + return r.handler_.update(e) + } + } + var t = e.prototype; + return t.listen = function() { + var n = this; + this.els_.forEach(function(t) { + n.events_.forEach(function(e) { + t.addEventListener(e, n.update_, !1) + }) + }), "function" == typeof this.handler_.setup && this.handler_.setup() + }, t.unlisten = function() { + var n = this; + this.els_.forEach(function(t) { + n.events_.forEach(function(e) { + t.removeEventListener(e, n.update_) + }) + }), "function" == typeof this.handler_.reset && this.handler_.reset() + }, e + }(), + MatchMedia: function(e, t) { + this.handler_ = function(e) { + e.matches ? t.listen() : t.unlisten() + }; + var n = window.matchMedia(e); + n.addListener(this.handler_), this.handler_(n) + } + }, + i = { + Shadow: function() { + function e(e, t) { + var n = "string" == typeof e ? document.querySelector(e) : e; + if (!(n instanceof HTMLElement && n.parentNode instanceof HTMLElement)) throw new ReferenceError; + if (this.el_ = n.parentNode, !((n = "string" == typeof t ? document.querySelector(t) : t) instanceof HTMLElement)) throw new ReferenceError; + this.header_ = n, this.height_ = 0, this.active_ = !1 + } + var t = e.prototype; + return t.setup = function() { + for (var e = this.el_; e = e.previousElementSibling;) { + if (!(e instanceof HTMLElement)) throw new ReferenceError; + this.height_ += e.offsetHeight + } + this.update() + }, t.update = function(e) { + if (!e || "resize" !== e.type && "orientationchange" !== e.type) { + var t = window.pageYOffset >= this.height_; + t !== this.active_ && (this.header_.dataset.mdState = (this.active_ = t) ? "shadow" : "") + } else this.height_ = 0, this.setup() + }, t.reset = function() { + this.header_.dataset.mdState = "", this.height_ = 0, this.active_ = !1 + }, e + }(), + Title: function() { + function e(e, t) { + var n = "string" == typeof e ? document.querySelector(e) : e; + if (!(n instanceof HTMLElement)) throw new ReferenceError; + if (this.el_ = n, !((n = "string" == typeof t ? document.querySelector(t) : t) instanceof HTMLHeadingElement)) throw new ReferenceError; + this.header_ = n, this.active_ = !1 + } + var t = e.prototype; + return t.setup = function() { + var t = this; + Array.prototype.forEach.call(this.el_.children, function(e) { + e.style.width = t.el_.offsetWidth - 20 + "px" + }) + }, t.update = function(e) { + var t = this, + n = window.pageYOffset >= this.header_.offsetTop; + n !== this.active_ && (this.el_.dataset.mdState = (this.active_ = n) ? "active" : ""), "resize" !== e.type && "orientationchange" !== e.type || Array.prototype.forEach.call(this.el_.children, function(e) { + e.style.width = t.el_.offsetWidth - 20 + "px" + }) + }, t.reset = function() { + this.el_.dataset.mdState = "", this.el_.style.width = "", this.active_ = !1 + }, e + }() + }, + o = { + Blur: function() { + function e(e) { + this.els_ = "string" == typeof e ? document.querySelectorAll(e) : e, this.index_ = 0, this.offset_ = window.pageYOffset, this.dir_ = !1, this.anchors_ = [].reduce.call(this.els_, function(e, t) { + var n = decodeURIComponent(t.hash); + return e.concat(document.getElementById(n.substring(1)) || []) + }, []) + } + var t = e.prototype; + return t.setup = function() { + this.update() + }, t.update = function() { + var e = window.pageYOffset, + t = this.offset_ - e < 0; + if (this.dir_ !== t && (this.index_ = this.index_ = t ? 0 : this.els_.length - 1), 0 !== this.anchors_.length) { + if (this.offset_ <= e) + for (var n = this.index_ + 1; n < this.els_.length && this.anchors_[n].offsetTop - 80 <= e; n++) 0 < n && (this.els_[n - 1].dataset.mdState = "blur"), this.index_ = n; + else + for (var r = this.index_; 0 <= r; r--) { + if (!(this.anchors_[r].offsetTop - 80 > e)) { + this.index_ = r; + break + } + 0 < r && (this.els_[r - 1].dataset.mdState = "") + } + this.offset_ = e, this.dir_ = t + } + }, t.reset = function() { + Array.prototype.forEach.call(this.els_, function(e) { + e.dataset.mdState = "" + }), this.index_ = 0, this.offset_ = window.pageYOffset + }, e + }(), + Collapse: function() { + function e(e) { + var t = "string" == typeof e ? document.querySelector(e) : e; + if (!(t instanceof HTMLElement)) throw new ReferenceError; + this.el_ = t + } + var t = e.prototype; + return t.setup = function() { + var e = this.el_.getBoundingClientRect().height; + this.el_.style.display = e ? "block" : "none", this.el_.style.overflow = e ? "visible" : "hidden" + }, t.update = function() { + var e = this, + t = this.el_.getBoundingClientRect().height; + this.el_.style.display = "block", this.el_.style.overflow = ""; + var r = this.el_.previousElementSibling.previousElementSibling.checked; + if (r) this.el_.style.maxHeight = t + "px", requestAnimationFrame(function() { + e.el_.setAttribute("data-md-state", "animate"), e.el_.style.maxHeight = "0px" + }); + else { + this.el_.setAttribute("data-md-state", "expand"), this.el_.style.maxHeight = ""; + var n = this.el_.getBoundingClientRect().height; + this.el_.removeAttribute("data-md-state"), this.el_.style.maxHeight = "0px", requestAnimationFrame(function() { + e.el_.setAttribute("data-md-state", "animate"), e.el_.style.maxHeight = n + "px" + }) + } + this.el_.addEventListener("transitionend", function e(t) { + var n = t.target; + if (!(n instanceof HTMLElement)) throw new ReferenceError; + n.removeAttribute("data-md-state"), n.style.maxHeight = "", n.style.display = r ? "none" : "block", n.style.overflow = r ? "hidden" : "visible", n.removeEventListener("transitionend", e) + }, !1) + }, t.reset = function() { + this.el_.dataset.mdState = "", this.el_.style.maxHeight = "", this.el_.style.display = "", this.el_.style.overflow = "" + }, e + }(), + Scrolling: function() { + function e(e) { + var t = "string" == typeof e ? document.querySelector(e) : e; + if (!(t instanceof HTMLElement)) throw new ReferenceError; + this.el_ = t + } + var t = e.prototype; + return t.setup = function() { + this.el_.children[this.el_.children.length - 1].style.webkitOverflowScrolling = "touch"; + var e = this.el_.querySelectorAll("[data-md-toggle]"); + Array.prototype.forEach.call(e, function(e) { + if (!(e instanceof HTMLInputElement)) throw new ReferenceError; + if (e.checked) { + var t = e.nextElementSibling; + if (!(t instanceof HTMLElement)) throw new ReferenceError; + for (; + "NAV" !== t.tagName && t.nextElementSibling;) t = t.nextElementSibling; + if (!(e.parentNode instanceof HTMLElement && e.parentNode.parentNode instanceof HTMLElement)) throw new ReferenceError; + var n = e.parentNode.parentNode, + r = t.children[t.children.length - 1]; + n.style.webkitOverflowScrolling = "", r.style.webkitOverflowScrolling = "touch" + } + }) + }, t.update = function(e) { + var t = e.target; + if (!(t instanceof HTMLElement)) throw new ReferenceError; + var n = t.nextElementSibling; + if (!(n instanceof HTMLElement)) throw new ReferenceError; + for (; + "NAV" !== n.tagName && n.nextElementSibling;) n = n.nextElementSibling; + if (!(t.parentNode instanceof HTMLElement && t.parentNode.parentNode instanceof HTMLElement)) throw new ReferenceError; + var r = t.parentNode.parentNode, + i = n.children[n.children.length - 1]; + if (r.style.webkitOverflowScrolling = "", i.style.webkitOverflowScrolling = "", !t.checked) { + n.addEventListener("transitionend", function e() { + n instanceof HTMLElement && (r.style.webkitOverflowScrolling = "touch", n.removeEventListener("transitionend", e)) + }, !1) + } + if (t.checked) { + n.addEventListener("transitionend", function e() { + n instanceof HTMLElement && (i.style.webkitOverflowScrolling = "touch", n.removeEventListener("transitionend", e)) + }, !1) + } + }, t.reset = function() { + this.el_.children[1].style.webkitOverflowScrolling = ""; + var e = this.el_.querySelectorAll("[data-md-toggle]"); + Array.prototype.forEach.call(e, function(e) { + if (!(e instanceof HTMLInputElement)) throw new ReferenceError; + if (e.checked) { + var t = e.nextElementSibling; + if (!(t instanceof HTMLElement)) throw new ReferenceError; + for (; + "NAV" !== t.tagName && t.nextElementSibling;) t = t.nextElementSibling; + if (!(e.parentNode instanceof HTMLElement && e.parentNode.parentNode instanceof HTMLElement)) throw new ReferenceError; + var n = e.parentNode.parentNode, + r = t.children[t.children.length - 1]; + n.style.webkitOverflowScrolling = "", r.style.webkitOverflowScrolling = "" + } + }) + }, e + }() + }, + a = { + Lock: function() { + function e(e) { + var t = "string" == typeof e ? document.querySelector(e) : e; + if (!(t instanceof HTMLInputElement)) throw new ReferenceError; + if (this.el_ = t, !document.body) throw new ReferenceError; + this.lock_ = document.body + } + var t = e.prototype; + return t.setup = function() { + this.update() + }, t.update = function() { + var e = this; + this.el_.checked ? (this.offset_ = window.pageYOffset, setTimeout(function() { + window.scrollTo(0, 0), e.el_.checked && (e.lock_.dataset.mdState = "lock") + }, 400)) : (this.lock_.dataset.mdState = "", setTimeout(function() { + void 0 !== e.offset_ && window.scrollTo(0, e.offset_) + }, 100)) + }, t.reset = function() { + "lock" === this.lock_.dataset.mdState && window.scrollTo(0, this.offset_), this.lock_.dataset.mdState = "" + }, e + }(), + Result: n(9).a + }, + s = { + Position: function() { + function e(e, t) { + var n = "string" == typeof e ? document.querySelector(e) : e; + if (!(n instanceof HTMLElement && n.parentNode instanceof HTMLElement)) throw new ReferenceError; + if (this.el_ = n, this.parent_ = n.parentNode, !((n = "string" == typeof t ? document.querySelector(t) : t) instanceof HTMLElement)) throw new ReferenceError; + this.header_ = n, this.height_ = 0, this.pad_ = "fixed" === window.getComputedStyle(this.header_).position + } + var t = e.prototype; + return t.setup = function() { + var e = Array.prototype.reduce.call(this.parent_.children, function(e, t) { + return Math.max(e, t.offsetTop) + }, 0); + this.offset_ = e - (this.pad_ ? this.header_.offsetHeight : 0), this.update() + }, t.update = function(e) { + var t = window.pageYOffset, + n = window.innerHeight; + e && "resize" === e.type && this.setup(); + var r = this.pad_ ? this.header_.offsetHeight : 0, + i = this.parent_.offsetTop + this.parent_.offsetHeight, + o = n - r - Math.max(0, this.offset_ - t) - Math.max(0, t + n - i); + o !== this.height_ && (this.el_.style.height = (this.height_ = o) + "px"), t >= this.offset_ ? "lock" !== this.el_.dataset.mdState && (this.el_.dataset.mdState = "lock") : "lock" === this.el_.dataset.mdState && (this.el_.dataset.mdState = "") + }, t.reset = function() { + this.el_.dataset.mdState = "", this.el_.style.height = "", this.height_ = 0 + }, e + }() + }, + c = n(6), + l = n.n(c); + var u = { + Adapter: { + GitHub: function(o) { + var e, t; + + function n(e) { + var t; + t = o.call(this, e) || this; + var n = /^.+github\.com\/([^/]+)\/?([^/]+)?.*$/.exec(t.base_); + if (n && 3 === n.length) { + var r = n[1], + i = n[2]; + t.base_ = "https://api.github.com/users/" + r + "/repos", t.name_ = i + } + return t + } + return t = o, (e = n).prototype = Object.create(t.prototype), (e.prototype.constructor = e).__proto__ = t, n.prototype.fetch_ = function() { + var i = this; + return function n(r) { + return void 0 === r && (r = 0), fetch(i.base_ + "?per_page=30&page=" + r).then(function(e) { + return e.json() + }).then(function(e) { + if (!(e instanceof Array)) throw new TypeError; + if (i.name_) { + var t = e.find(function(e) { + return e.name === i.name_ + }); + return t || 30 !== e.length ? t ? [i.format_(t.stargazers_count) + " Stars", i.format_(t.forks_count) + " Forks"] : [] : n(r + 1) + } + return [e.length + " Repositories"] + }) + }() + }, n + }(function() { + function e(e) { + var t = "string" == typeof e ? document.querySelector(e) : e; + if (!(t instanceof HTMLAnchorElement)) throw new ReferenceError; + this.el_ = t, this.base_ = this.el_.href, this.salt_ = this.hash_(this.base_) + } + var t = e.prototype; + return t.fetch = function() { + var n = this; + return new Promise(function(t) { + var e = l.a.getJSON(n.salt_ + ".cache-source"); + void 0 !== e ? t(e) : n.fetch_().then(function(e) { + l.a.set(n.salt_ + ".cache-source", e, { + expires: 1 / 96 + }), t(e) + }) + }) + }, t.fetch_ = function() { + throw new Error("fetch_(): Not implemented") + }, t.format_ = function(e) { + return 1e4 < e ? (e / 1e3).toFixed(0) + "k" : 1e3 < e ? (e / 1e3).toFixed(1) + "k" : "" + e + }, t.hash_ = function(e) { + var t = 0; + if (0 === e.length) return t; + for (var n = 0, r = e.length; n < r; n++) t = (t << 5) - t + e.charCodeAt(n), t |= 0; + return t + }, e + }()) + }, + Repository: n(10).a + }, + f = { + Toggle: function() { + function e(e) { + var t = "string" == typeof e ? document.querySelector(e) : e; + if (!(t instanceof Node)) throw new ReferenceError; + this.el_ = t; + var n = document.querySelector("[data-md-component=header]"); + this.height_ = n.offsetHeight, this.active_ = !1 + } + var t = e.prototype; + return t.update = function() { + var e = window.pageYOffset >= this.el_.children[0].offsetTop + (5 - this.height_); + e !== this.active_ && (this.el_.dataset.mdState = (this.active_ = e) ? "hidden" : "") + }, t.reset = function() { + this.el_.dataset.mdState = "", this.active_ = !1 + }, e + }() + }; + t.a = { + Event: r, + Header: i, + Nav: o, + Search: a, + Sidebar: s, + Source: u, + Tabs: f + } +}, function(t, e, n) { + (function(e) { + t.exports = e.lunr = n(24) + }).call(this, n(4)) +}, function(e, f, d) { + "use strict"; + (function(t) { + var e = d(8), + n = setTimeout; + + function r() {} + + function o(e) { + if (!(this instanceof o)) throw new TypeError("Promises must be constructed via new"); + if ("function" != typeof e) throw new TypeError("not a function"); + this._state = 0, this._handled = !1, this._value = void 0, this._deferreds = [], u(e, this) + } + + function i(n, r) { + for (; 3 === n._state;) n = n._value; + 0 !== n._state ? (n._handled = !0, o._immediateFn(function() { + var e = 1 === n._state ? r.onFulfilled : r.onRejected; + if (null !== e) { + var t; + try { + t = e(n._value) + } catch (e) { + return void s(r.promise, e) + } + a(r.promise, t) + } else(1 === n._state ? a : s)(r.promise, n._value) + })) : n._deferreds.push(r) + } + + function a(t, e) { + try { + if (e === t) throw new TypeError("A promise cannot be resolved with itself."); + if (e && ("object" == typeof e || "function" == typeof e)) { + var n = e.then; + if (e instanceof o) return t._state = 3, t._value = e, void c(t); + if ("function" == typeof n) return void u((r = n, i = e, function() { + r.apply(i, arguments) + }), t) + } + t._state = 1, t._value = e, c(t) + } catch (e) { + s(t, e) + } + var r, i + } + + function s(e, t) { + e._state = 2, e._value = t, c(e) + } + + function c(e) { + 2 === e._state && 0 === e._deferreds.length && o._immediateFn(function() { + e._handled || o._unhandledRejectionFn(e._value) + }); + for (var t = 0, n = e._deferreds.length; t < n; t++) i(e, e._deferreds[t]); + e._deferreds = null + } + + function l(e, t, n) { + this.onFulfilled = "function" == typeof e ? e : null, this.onRejected = "function" == typeof t ? t : null, this.promise = n + } + + function u(e, t) { + var n = !1; + try { + e(function(e) { + n || (n = !0, a(t, e)) + }, function(e) { + n || (n = !0, s(t, e)) + }) + } catch (e) { + if (n) return; + n = !0, s(t, e) + } + } + o.prototype.catch = function(e) { + return this.then(null, e) + }, o.prototype.then = function(e, t) { + var n = new this.constructor(r); + return i(this, new l(e, t, n)), n + }, o.prototype.finally = e.a, o.all = function(t) { + return new o(function(r, i) { + if (!t || void 0 === t.length) throw new TypeError("Promise.all accepts an array"); + var o = Array.prototype.slice.call(t); + if (0 === o.length) return r([]); + var a = o.length; + + function s(t, e) { + try { + if (e && ("object" == typeof e || "function" == typeof e)) { + var n = e.then; + if ("function" == typeof n) return void n.call(e, function(e) { + s(t, e) + }, i) + } + o[t] = e, 0 == --a && r(o) + } catch (e) { + i(e) + } + } + for (var e = 0; e < o.length; e++) s(e, o[e]) + }) + }, o.resolve = function(t) { + return t && "object" == typeof t && t.constructor === o ? t : new o(function(e) { + e(t) + }) + }, o.reject = function(n) { + return new o(function(e, t) { + t(n) + }) + }, o.race = function(i) { + return new o(function(e, t) { + for (var n = 0, r = i.length; n < r; n++) i[n].then(e, t) + }) + }, o._immediateFn = "function" == typeof t && function(e) { + t(e) + } || function(e) { + n(e, 0) + }, o._unhandledRejectionFn = function(e) { + "undefined" != typeof console && console && console.warn("Possible Unhandled Promise Rejection:", e) + }, f.a = o + }).call(this, d(21).setImmediate) +}, function(e, t, n) { + "use strict"; + + function r(e, t) { + var n = document.createElement(e); + t && Array.prototype.forEach.call(Object.keys(t), function(e) { + n.setAttribute(e, t[e]) + }); + for (var r = arguments.length, i = new Array(2 < r ? r - 2 : 0), o = 2; o < r; o++) i[o - 2] = arguments[o]; + return function t(e) { + Array.prototype.forEach.call(e, function(e) { + "string" == typeof e || "number" == typeof e ? n.textContent += e : Array.isArray(e) ? t(e) : void 0 !== e.__html ? n.innerHTML += e.__html : e instanceof Node && n.appendChild(e) + }) + }(i), n + } + n.r(t), n.d(t, "createElement", function() { + return r + }) +}, function(e, t) { + var n; + n = function() { + return this + }(); + try { + n = n || new Function("return this")() + } catch (e) { + "object" == typeof window && (n = window) + } + e.exports = n +}, function(e, t, n) { + var r; + r = function() { + return function(n) { + var r = {}; + + function i(e) { + if (r[e]) return r[e].exports; + var t = r[e] = { + i: e, + l: !1, + exports: {} + }; + return n[e].call(t.exports, t, t.exports, i), t.l = !0, t.exports + } + return i.m = n, i.c = r, i.d = function(e, t, n) { + i.o(e, t) || Object.defineProperty(e, t, { + enumerable: !0, + get: n + }) + }, i.r = function(e) { + "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, { + value: "Module" + }), Object.defineProperty(e, "__esModule", { + value: !0 + }) + }, i.t = function(t, e) { + if (1 & e && (t = i(t)), 8 & e) return t; + if (4 & e && "object" == typeof t && t && t.__esModule) return t; + var n = Object.create(null); + if (i.r(n), Object.defineProperty(n, "default", { + enumerable: !0, + value: t + }), 2 & e && "string" != typeof t) + for (var r in t) i.d(n, r, function(e) { + return t[e] + }.bind(null, r)); + return n + }, i.n = function(e) { + var t = e && e.__esModule ? function() { + return e.default + } : function() { + return e + }; + return i.d(t, "a", t), t + }, i.o = function(e, t) { + return Object.prototype.hasOwnProperty.call(e, t) + }, i.p = "", i(i.s = 0) + }([function(e, t, n) { + "use strict"; + var i = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) { + return typeof e + } : function(e) { + return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e + }, + o = function() { + function r(e, t) { + for (var n = 0; n < t.length; n++) { + var r = t[n]; + r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) + } + } + return function(e, t, n) { + return t && r(e.prototype, t), n && r(e, n), e + } + }(), + a = r(n(1)), + s = r(n(3)), + c = r(n(4)); + + function r(e) { + return e && e.__esModule ? e : { + default: e + } + } + var l = function(e) { + function r(e, t) { + ! function(e, t) { + if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") + }(this, r); + var n = function(e, t) { + if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return !t || "object" != typeof t && "function" != typeof t ? e : t + }(this, (r.__proto__ || Object.getPrototypeOf(r)).call(this)); + return n.resolveOptions(t), n.listenClick(e), n + } + return function(e, t) { + if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); + e.prototype = Object.create(t && t.prototype, { + constructor: { + value: e, + enumerable: !1, + writable: !0, + configurable: !0 + } + }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) + }(r, s.default), o(r, [{ + key: "resolveOptions", + value: function() { + var e = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : {}; + this.action = "function" == typeof e.action ? e.action : this.defaultAction, this.target = "function" == typeof e.target ? e.target : this.defaultTarget, this.text = "function" == typeof e.text ? e.text : this.defaultText, this.container = "object" === i(e.container) ? e.container : document.body + } + }, { + key: "listenClick", + value: function(e) { + var t = this; + this.listener = (0, c.default)(e, "click", function(e) { + return t.onClick(e) + }) + } + }, { + key: "onClick", + value: function(e) { + var t = e.delegateTarget || e.currentTarget; + this.clipboardAction && (this.clipboardAction = null), this.clipboardAction = new a.default({ + action: this.action(t), + target: this.target(t), + text: this.text(t), + container: this.container, + trigger: t, + emitter: this + }) + } + }, { + key: "defaultAction", + value: function(e) { + return u("action", e) + } + }, { + key: "defaultTarget", + value: function(e) { + var t = u("target", e); + if (t) return document.querySelector(t) + } + }, { + key: "defaultText", + value: function(e) { + return u("text", e) + } + }, { + key: "destroy", + value: function() { + this.listener.destroy(), this.clipboardAction && (this.clipboardAction.destroy(), this.clipboardAction = null) + } + }], [{ + key: "isSupported", + value: function() { + var e = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : ["copy", "cut"], + t = "string" == typeof e ? [e] : e, + n = !!document.queryCommandSupported; + return t.forEach(function(e) { + n = n && !!document.queryCommandSupported(e) + }), n + } + }]), r + }(); + + function u(e, t) { + var n = "data-clipboard-" + e; + if (t.hasAttribute(n)) return t.getAttribute(n) + } + e.exports = l + }, function(e, t, n) { + "use strict"; + var r, i = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) { + return typeof e + } : function(e) { + return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e + }, + o = function() { + function r(e, t) { + for (var n = 0; n < t.length; n++) { + var r = t[n]; + r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) + } + } + return function(e, t, n) { + return t && r(e.prototype, t), n && r(e, n), e + } + }(), + a = n(2), + s = (r = a) && r.__esModule ? r : { + default: r + }; + var c = function() { + function t(e) { + ! function(e, t) { + if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") + }(this, t), this.resolveOptions(e), this.initSelection() + } + return o(t, [{ + key: "resolveOptions", + value: function() { + var e = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : {}; + this.action = e.action, this.container = e.container, this.emitter = e.emitter, this.target = e.target, this.text = e.text, this.trigger = e.trigger, this.selectedText = "" + } + }, { + key: "initSelection", + value: function() { + this.text ? this.selectFake() : this.target && this.selectTarget() + } + }, { + key: "selectFake", + value: function() { + var e = this, + t = "rtl" == document.documentElement.getAttribute("dir"); + this.removeFake(), this.fakeHandlerCallback = function() { + return e.removeFake() + }, this.fakeHandler = this.container.addEventListener("click", this.fakeHandlerCallback) || !0, this.fakeElem = document.createElement("textarea"), this.fakeElem.style.fontSize = "12pt", this.fakeElem.style.border = "0", this.fakeElem.style.padding = "0", this.fakeElem.style.margin = "0", this.fakeElem.style.position = "absolute", this.fakeElem.style[t ? "right" : "left"] = "-9999px"; + var n = window.pageYOffset || document.documentElement.scrollTop; + this.fakeElem.style.top = n + "px", this.fakeElem.setAttribute("readonly", ""), this.fakeElem.value = this.text, this.container.appendChild(this.fakeElem), this.selectedText = (0, s.default)(this.fakeElem), this.copyText() + } + }, { + key: "removeFake", + value: function() { + this.fakeHandler && (this.container.removeEventListener("click", this.fakeHandlerCallback), this.fakeHandler = null, this.fakeHandlerCallback = null), this.fakeElem && (this.container.removeChild(this.fakeElem), this.fakeElem = null) + } + }, { + key: "selectTarget", + value: function() { + this.selectedText = (0, s.default)(this.target), this.copyText() + } + }, { + key: "copyText", + value: function() { + var t = void 0; + try { + t = document.execCommand(this.action) + } catch (e) { + t = !1 + } + this.handleResult(t) + } + }, { + key: "handleResult", + value: function(e) { + this.emitter.emit(e ? "success" : "error", { + action: this.action, + text: this.selectedText, + trigger: this.trigger, + clearSelection: this.clearSelection.bind(this) + }) + } + }, { + key: "clearSelection", + value: function() { + this.trigger && this.trigger.focus(), window.getSelection().removeAllRanges() + } + }, { + key: "destroy", + value: function() { + this.removeFake() + } + }, { + key: "action", + set: function() { + var e = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : "copy"; + if (this._action = e, "copy" !== this._action && "cut" !== this._action) throw new Error('Invalid "action" value, use either "copy" or "cut"') + }, + get: function() { + return this._action + } + }, { + key: "target", + set: function(e) { + if (void 0 !== e) { + if (!e || "object" !== (void 0 === e ? "undefined" : i(e)) || 1 !== e.nodeType) throw new Error('Invalid "target" value, use a valid Element'); + if ("copy" === this.action && e.hasAttribute("disabled")) throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute'); + if ("cut" === this.action && (e.hasAttribute("readonly") || e.hasAttribute("disabled"))) throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes'); + this._target = e + } + }, + get: function() { + return this._target + } + }]), t + }(); + e.exports = c + }, function(e, t) { + e.exports = function(e) { + var t; + if ("SELECT" === e.nodeName) e.focus(), t = e.value; + else if ("INPUT" === e.nodeName || "TEXTAREA" === e.nodeName) { + var n = e.hasAttribute("readonly"); + n || e.setAttribute("readonly", ""), e.select(), e.setSelectionRange(0, e.value.length), n || e.removeAttribute("readonly"), t = e.value + } else { + e.hasAttribute("contenteditable") && e.focus(); + var r = window.getSelection(), + i = document.createRange(); + i.selectNodeContents(e), r.removeAllRanges(), r.addRange(i), t = r.toString() + } + return t + } + }, function(e, t) { + function n() {} + n.prototype = { + on: function(e, t, n) { + var r = this.e || (this.e = {}); + return (r[e] || (r[e] = [])).push({ + fn: t, + ctx: n + }), this + }, + once: function(e, t, n) { + var r = this; + + function i() { + r.off(e, i), t.apply(n, arguments) + } + return i._ = t, this.on(e, i, n) + }, + emit: function(e) { + for (var t = [].slice.call(arguments, 1), n = ((this.e || (this.e = {}))[e] || []).slice(), r = 0, i = n.length; r < i; r++) n[r].fn.apply(n[r].ctx, t); + return this + }, + off: function(e, t) { + var n = this.e || (this.e = {}), + r = n[e], + i = []; + if (r && t) + for (var o = 0, a = r.length; o < a; o++) r[o].fn !== t && r[o].fn._ !== t && i.push(r[o]); + return i.length ? n[e] = i : delete n[e], this + } + }, e.exports = n + }, function(e, t, n) { + var d = n(5), + h = n(6); + e.exports = function(e, t, n) { + if (!e && !t && !n) throw new Error("Missing required arguments"); + if (!d.string(t)) throw new TypeError("Second argument must be a String"); + if (!d.fn(n)) throw new TypeError("Third argument must be a Function"); + if (d.node(e)) return u = t, f = n, (l = e).addEventListener(u, f), { + destroy: function() { + l.removeEventListener(u, f) + } + }; + if (d.nodeList(e)) return a = e, s = t, c = n, Array.prototype.forEach.call(a, function(e) { + e.addEventListener(s, c) + }), { + destroy: function() { + Array.prototype.forEach.call(a, function(e) { + e.removeEventListener(s, c) + }) + } + }; + if (d.string(e)) return r = e, i = t, o = n, h(document.body, r, i, o); + throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList"); + var r, i, o, a, s, c, l, u, f + } + }, function(e, n) { + n.node = function(e) { + return void 0 !== e && e instanceof HTMLElement && 1 === e.nodeType + }, n.nodeList = function(e) { + var t = Object.prototype.toString.call(e); + return void 0 !== e && ("[object NodeList]" === t || "[object HTMLCollection]" === t) && "length" in e && (0 === e.length || n.node(e[0])) + }, n.string = function(e) { + return "string" == typeof e || e instanceof String + }, n.fn = function(e) { + return "[object Function]" === Object.prototype.toString.call(e) + } + }, function(e, t, n) { + var a = n(7); + + function o(e, t, n, r, i) { + var o = function(t, n, e, r) { + return function(e) { + e.delegateTarget = a(e.target, n), e.delegateTarget && r.call(t, e) + } + }.apply(this, arguments); + return e.addEventListener(n, o, i), { + destroy: function() { + e.removeEventListener(n, o, i) + } + } + } + e.exports = function(e, t, n, r, i) { + return "function" == typeof e.addEventListener ? o.apply(null, arguments) : "function" == typeof n ? o.bind(null, document).apply(null, arguments) : ("string" == typeof e && (e = document.querySelectorAll(e)), Array.prototype.map.call(e, function(e) { + return o(e, t, n, r, i) + })) + } + }, function(e, t) { + if ("undefined" != typeof Element && !Element.prototype.matches) { + var n = Element.prototype; + n.matches = n.matchesSelector || n.mozMatchesSelector || n.msMatchesSelector || n.oMatchesSelector || n.webkitMatchesSelector + } + e.exports = function(e, t) { + for (; e && 9 !== e.nodeType;) { + if ("function" == typeof e.matches && e.matches(t)) return e; + e = e.parentNode + } + } + }]) + }, e.exports = r() +}, function(r, i, o) { + var a, s; + ! function(e) { + if (void 0 === (s = "function" == typeof(a = e) ? a.call(i, o, i, r) : a) || (r.exports = s), !0, r.exports = e(), !!0) { + var t = window.Cookies, + n = window.Cookies = e(); + n.noConflict = function() { + return window.Cookies = t, n + } + } + }(function() { + function m() { + for (var e = 0, t = {}; e < arguments.length; e++) { + var n = arguments[e]; + for (var r in n) t[r] = n[r] + } + return t + } + return function e(h) { + function p(e, t, n) { + var r; + if ("undefined" != typeof document) { + if (1 < arguments.length) { + if ("number" == typeof(n = m({ + path: "/" + }, p.defaults, n)).expires) { + var i = new Date; + i.setMilliseconds(i.getMilliseconds() + 864e5 * n.expires), n.expires = i + } + n.expires = n.expires ? n.expires.toUTCString() : ""; + try { + r = JSON.stringify(t), /^[\{\[]/.test(r) && (t = r) + } catch (e) {} + t = h.write ? h.write(t, e) : encodeURIComponent(String(t)).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent), e = (e = (e = encodeURIComponent(String(e))).replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent)).replace(/[\(\)]/g, escape); + var o = ""; + for (var a in n) n[a] && (o += "; " + a, !0 !== n[a] && (o += "=" + n[a])); + return document.cookie = e + "=" + t + o + } + e || (r = {}); + for (var s = document.cookie ? document.cookie.split("; ") : [], c = /(%[0-9A-Z]{2})+/g, l = 0; l < s.length; l++) { + var u = s[l].split("="), + f = u.slice(1).join("="); + this.json || '"' !== f.charAt(0) || (f = f.slice(1, -1)); + try { + var d = u[0].replace(c, decodeURIComponent); + if (f = h.read ? h.read(f, d) : h(f, d) || f.replace(c, decodeURIComponent), this.json) try { + f = JSON.parse(f) + } catch (e) {} + if (e === d) { + r = f; + break + } + e || (r[d] = f) + } catch (e) {} + } + return r + } + } + return (p.set = p).get = function(e) { + return p.call(p, e) + }, p.getJSON = function() { + return p.apply({ + json: !0 + }, [].slice.call(arguments)) + }, p.defaults = {}, p.remove = function(e, t) { + p(e, "", m(t, { + expires: -1 + })) + }, p.withConverter = e, p + }(function() {}) + }) +}, function(e, t, n) { + "use strict"; + n.r(t); + var r = "function" == typeof fetch ? fetch.bind() : function(i, o) { + return o = o || {}, new Promise(function(e, t) { + var n = new XMLHttpRequest; + for (var r in n.open(o.method || "get", i, !0), o.headers) n.setRequestHeader(r, o.headers[r]); + + function s() { + var r, i = [], + o = [], + a = {}; + return n.getAllResponseHeaders().replace(/^(.*?):[^\S\n]*([\s\S]*?)$/gm, function(e, t, n) { + i.push(t = t.toLowerCase()), o.push([t, n]), r = a[t], a[t] = r ? r + "," + n : n + }), { + ok: 2 == (n.status / 100 | 0), + status: n.status, + statusText: n.statusText, + url: n.responseURL, + clone: s, + text: function() { + return Promise.resolve(n.responseText) + }, + json: function() { + return Promise.resolve(n.responseText).then(JSON.parse) + }, + blob: function() { + return Promise.resolve(new Blob([n.response])) + }, + headers: { + keys: function() { + return i + }, + entries: function() { + return o + }, + get: function(e) { + return a[e.toLowerCase()] + }, + has: function(e) { + return e.toLowerCase() in a + } + } + } + } + n.withCredentials = "include" == o.credentials, n.onload = function() { + e(s()) + }, n.onerror = t, n.send(o.body || null) + }) + }; + t.default = r +}, function(e, t, n) { + "use strict"; + t.a = function(t) { + var n = this.constructor; + return this.then(function(e) { + return n.resolve(t()).then(function() { + return e + }) + }, function(e) { + return n.resolve(t()).then(function() { + return n.reject(e) + }) + }) + } +}, function(e, n, r) { + "use strict"; + (function(f) { + r.d(n, "a", function() { + return t + }); + var e = r(1), + d = r.n(e), + h = function(e) { + var t = document.getElementsByName("lang:" + e)[0]; + if (!(t instanceof HTMLMetaElement)) throw new ReferenceError; + return t.content + }, + t = function() { + function e(e, t) { + var n = "string" == typeof e ? document.querySelector(e) : e; + if (!(n instanceof HTMLElement)) throw new ReferenceError; + this.el_ = n; + var r = Array.prototype.slice.call(this.el_.children), + i = r[0], + o = r[1]; + this.data_ = t, this.meta_ = i, this.list_ = o, this.message_ = { + placeholder: this.meta_.textContent, + none: h("search.result.none"), + one: h("search.result.one"), + other: h("search.result.other") + }; + var a = h("search.tokenizer"); + a.length && (d.a.tokenizer.separator = a), this.lang_ = h("search.language").split(",").filter(Boolean).map(function(e) { + return e.trim() + }) + } + return e.prototype.update = function(e) { + var t, a = this; + if ("focus" !== e.type || this.index_) { + if ("focus" === e.type || "keyup" === e.type) { + var n = e.target; + if (!(n instanceof HTMLInputElement)) throw new ReferenceError; + if (!this.index_ || n.value === this.value_) return; + for (; this.list_.firstChild;) this.list_.removeChild(this.list_.firstChild); + if (this.value_ = n.value, 0 === this.value_.length) return void(this.meta_.textContent = this.message_.placeholder); + var r = this.index_.query(function(t) { + a.value_.toLowerCase().split(" ").filter(Boolean).forEach(function(e) { + t.term(e, { + wildcard: d.a.Query.wildcard.TRAILING + }) + }) + }).reduce(function(e, t) { + var n = a.docs_.get(t.ref); + if (n.parent) { + var r = n.parent.location; + e.set(r, (e.get(r) || []).concat(t)) + } else { + var i = n.location; + e.set(i, e.get(i) || []) + } + return e + }, new Map), + i = (t = this.value_.trim(), t.replace(/[|\\{}()[\]^$+*?.-]/g, "\\$&")).replace(new RegExp(d.a.tokenizer.separator, "img"), "|"), + s = new RegExp("(^|" + d.a.tokenizer.separator + ")(" + i + ")", "img"), + c = function(e, t, n) { + return t + "" + n + "" + }; + this.stack_ = [], r.forEach(function(e, t) { + var n, r = a.docs_.get(t), + i = f.createElement("li", { + class: "md-search-result__item" + }, f.createElement("a", { + href: r.location, + title: r.title, + class: "md-search-result__link", + tabindex: "-1" + }, f.createElement("article", { + class: "md-search-result__article md-search-result__article--document" + }, f.createElement("h1", { + class: "md-search-result__title" + }, { + __html: r.title.replace(s, c) + }), r.text.length ? f.createElement("p", { + class: "md-search-result__teaser" + }, { + __html: r.text.replace(s, c) + }) : {}))), + o = e.map(function(t) { + return function() { + var e = a.docs_.get(t.ref); + i.appendChild(f.createElement("a", { + href: e.location, + title: e.title, + class: "md-search-result__link", + "data-md-rel": "anchor", + tabindex: "-1" + }, f.createElement("article", { + class: "md-search-result__article" + }, f.createElement("h1", { + class: "md-search-result__title" + }, { + __html: e.title.replace(s, c) + }), e.text.length ? f.createElement("p", { + class: "md-search-result__teaser" + }, { + __html: function(e, t) { + var n = t; + if (e.length > n) { + for (; + " " !== e[n] && 0 < --n;); + return e.substring(0, n) + "..." + } + return e + }(e.text.replace(s, c), 400) + }) : {}))) + } + }); + (n = a.stack_).push.apply(n, [function() { + return a.list_.appendChild(i) + }].concat(o)) + }); + var o = this.el_.parentNode; + if (!(o instanceof HTMLElement)) throw new ReferenceError; + for (; this.stack_.length && o.offsetHeight >= o.scrollHeight - 16;) this.stack_.shift()(); + var l = this.list_.querySelectorAll("[data-md-rel=anchor]"); + switch (Array.prototype.forEach.call(l, function(r) { + ["click", "keydown"].forEach(function(n) { + r.addEventListener(n, function(e) { + if ("keydown" !== n || 13 === e.keyCode) { + var t = document.querySelector("[data-md-toggle=search]"); + if (!(t instanceof HTMLInputElement)) throw new ReferenceError; + t.checked && (t.checked = !1, t.dispatchEvent(new CustomEvent("change"))), e.preventDefault(), setTimeout(function() { + document.location.href = r.href + }, 100) + } + }) + }) + }), r.size) { + case 0: + this.meta_.textContent = this.message_.none; + break; + case 1: + this.meta_.textContent = this.message_.one; + break; + default: + this.meta_.textContent = this.message_.other.replace("#", r.size) + } + } + } else { + var u = function(e) { + a.docs_ = e.reduce(function(e, t) { + var n, r, i, o = t.location.split("#"), + a = o[0], + s = o[1]; + return t.text = (n = t.text, r = document.createTextNode(n), (i = document.createElement("p")).appendChild(r), i.innerHTML), s && (t.parent = e.get(a), t.parent && !t.parent.done && (t.parent.title = t.title, t.parent.text = t.text, t.parent.done = !0)), t.text = t.text.replace(/\n/g, " ").replace(/\s+/g, " ").replace(/\s+([,.:;!?])/g, function(e, t) { + return t + }), t.parent && t.parent.title === t.title || e.set(t.location, t), e + }, new Map); + var i = a.docs_, + o = a.lang_; + a.stack_ = [], a.index_ = d()(function() { + var e, t = this, + n = { + "search.pipeline.trimmer": d.a.trimmer, + "search.pipeline.stopwords": d.a.stopWordFilter + }, + r = Object.keys(n).reduce(function(e, t) { + return h(t).match(/^false$/i) || e.push(n[t]), e + }, []); + this.pipeline.reset(), r && (e = this.pipeline).add.apply(e, r), 1 === o.length && "en" !== o[0] && d.a[o[0]] ? this.use(d.a[o[0]]) : 1 < o.length && this.use(d.a.multiLanguage.apply(d.a, o)), this.field("title", { + boost: 10 + }), this.field("text"), this.ref("location"), i.forEach(function(e) { + return t.add(e) + }) + }); + var t = a.el_.parentNode; + if (!(t instanceof HTMLElement)) throw new ReferenceError; + t.addEventListener("scroll", function() { + for (; a.stack_.length && t.scrollTop + t.offsetHeight >= t.scrollHeight - 16;) a.stack_.splice(0, 10).forEach(function(e) { + return e() + }) + }) + }; + setTimeout(function() { + return "function" == typeof a.data_ ? a.data_().then(u) : u(a.data_) + }, 250) + } + }, e + }() + }).call(this, r(3)) +}, function(e, n, r) { + "use strict"; + (function(t) { + r.d(n, "a", function() { + return e + }); + var e = function() { + function e(e) { + var t = "string" == typeof e ? document.querySelector(e) : e; + if (!(t instanceof HTMLElement)) throw new ReferenceError; + this.el_ = t + } + return e.prototype.initialize = function(e) { + e.length && this.el_.children.length && this.el_.children[this.el_.children.length - 1].appendChild(t.createElement("ul", { + class: "md-source__facts" + }, e.map(function(e) { + return t.createElement("li", { + class: "md-source__fact" + }, e) + }))), this.el_.dataset.mdState = "done" + }, e + }() + }).call(this, r(3)) +}, , , function(e, n, c) { + "use strict"; + c.r(n), + function(o) { + c.d(n, "app", function() { + return t + }); + c(14), c(15), c(16), c(17), c(18), c(19), c(20); + var r = c(2), + e = c(5), + a = c.n(e), + i = c(0); + window.Promise = window.Promise || r.a; + var s = function(e) { + var t = document.getElementsByName("lang:" + e)[0]; + if (!(t instanceof HTMLMetaElement)) throw new ReferenceError; + return t.content + }; + var t = { + initialize: function(t) { + new i.a.Event.Listener(document, "DOMContentLoaded", function() { + if (!(document.body instanceof HTMLElement)) throw new ReferenceError; + Modernizr.addTest("ios", function() { + return !!navigator.userAgent.match(/(iPad|iPhone|iPod)/g) + }); + var e = document.querySelectorAll("table:not([class])"); + if (Array.prototype.forEach.call(e, function(e) { + var t = o.createElement("div", { + class: "md-typeset__scrollwrap" + }, o.createElement("div", { + class: "md-typeset__table" + })); + e.nextSibling ? e.parentNode.insertBefore(t, e.nextSibling) : e.parentNode.appendChild(t), t.children[0].appendChild(e) + }), a.a.isSupported()) { + var t = document.querySelectorAll(".codehilite > pre, pre > code"); + Array.prototype.forEach.call(t, function(e, t) { + var n = "__code_" + t, + r = o.createElement("button", { + class: "md-clipboard", + title: s("clipboard.copy"), + "data-clipboard-target": "#" + n + " pre, #" + n + " code" + }, o.createElement("span", { + class: "md-clipboard__message" + })), + i = e.parentNode; + i.id = n, i.insertBefore(r, e) + }), new a.a(".md-clipboard").on("success", function(e) { + var t = e.trigger.querySelector(".md-clipboard__message"); + if (!(t instanceof HTMLElement)) throw new ReferenceError; + e.clearSelection(), t.dataset.mdTimer && clearTimeout(parseInt(t.dataset.mdTimer, 10)), t.classList.add("md-clipboard__message--active"), t.innerHTML = s("clipboard.copied"), t.dataset.mdTimer = setTimeout(function() { + t.classList.remove("md-clipboard__message--active"), t.dataset.mdTimer = "" + }, 2e3).toString() + }) + } + if (!Modernizr.details) { + var n = document.querySelectorAll("details > summary"); + Array.prototype.forEach.call(n, function(e) { + e.addEventListener("click", function(e) { + var t = e.target.parentNode; + t.hasAttribute("open") ? t.removeAttribute("open") : t.setAttribute("open", "") + }) + }) + } + var r = function() { + if (document.location.hash) { + var e = document.getElementById(document.location.hash.substring(1)); + if (!e) return; + for (var t = e.parentNode; t && !(t instanceof HTMLDetailsElement);) t = t.parentNode; + if (t && !t.open) { + t.open = !0; + var n = location.hash; + location.hash = " ", location.hash = n + } + } + }; + if (window.addEventListener("hashchange", r), r(), Modernizr.ios) { + var i = document.querySelectorAll("[data-md-scrollfix]"); + Array.prototype.forEach.call(i, function(t) { + t.addEventListener("touchstart", function() { + var e = t.scrollTop; + 0 === e ? t.scrollTop = 1 : e + t.offsetHeight === t.scrollHeight && (t.scrollTop = e - 1) + }) + }) + } + }).listen(), new i.a.Event.Listener(window, ["scroll", "resize", "orientationchange"], new i.a.Header.Shadow("[data-md-component=container]", "[data-md-component=header]")).listen(), new i.a.Event.Listener(window, ["scroll", "resize", "orientationchange"], new i.a.Header.Title("[data-md-component=title]", ".md-typeset h1")).listen(), document.querySelector("[data-md-component=hero]") && new i.a.Event.Listener(window, ["scroll", "resize", "orientationchange"], new i.a.Tabs.Toggle("[data-md-component=hero]")).listen(), document.querySelector("[data-md-component=tabs]") && new i.a.Event.Listener(window, ["scroll", "resize", "orientationchange"], new i.a.Tabs.Toggle("[data-md-component=tabs]")).listen(), new i.a.Event.MatchMedia("(min-width: 1220px)", new i.a.Event.Listener(window, ["scroll", "resize", "orientationchange"], new i.a.Sidebar.Position("[data-md-component=navigation]", "[data-md-component=header]"))), document.querySelector("[data-md-component=toc]") && new i.a.Event.MatchMedia("(min-width: 960px)", new i.a.Event.Listener(window, ["scroll", "resize", "orientationchange"], new i.a.Sidebar.Position("[data-md-component=toc]", "[data-md-component=header]"))), new i.a.Event.MatchMedia("(min-width: 960px)", new i.a.Event.Listener(window, "scroll", new i.a.Nav.Blur("[data-md-component=toc] .md-nav__link"))); + var e = document.querySelectorAll("[data-md-component=collapsible]"); + Array.prototype.forEach.call(e, function(e) { + new i.a.Event.MatchMedia("(min-width: 1220px)", new i.a.Event.Listener(e.previousElementSibling, "click", new i.a.Nav.Collapse(e))) + }), new i.a.Event.MatchMedia("(max-width: 1219px)", new i.a.Event.Listener("[data-md-component=navigation] [data-md-toggle]", "change", new i.a.Nav.Scrolling("[data-md-component=navigation] nav"))), document.querySelector("[data-md-component=search]") && (new i.a.Event.MatchMedia("(max-width: 959px)", new i.a.Event.Listener("[data-md-toggle=search]", "change", new i.a.Search.Lock("[data-md-toggle=search]")))), + new i.a.Event.Listener(document.body, "keydown", function(e) { + if (9 === e.keyCode) { + var t = document.querySelectorAll("[data-md-component=navigation] .md-nav__link[for]:not([tabindex])"); + Array.prototype.forEach.call(t, function(e) { + e.offsetHeight && (e.tabIndex = 0) + }) + } + }).listen(), new i.a.Event.Listener(document.body, "mousedown", function() { + var e = document.querySelectorAll("[data-md-component=navigation] .md-nav__link[tabindex]"); + Array.prototype.forEach.call(e, function(e) { + e.removeAttribute("tabIndex") + }) + }).listen(), document.body.addEventListener("click", function() { + "tabbing" === document.body.dataset.mdState && (document.body.dataset.mdState = "") + }), new i.a.Event.MatchMedia("(max-width: 959px)", new i.a.Event.Listener("[data-md-component=navigation] [href^='#']", "click", function() { + var e = document.querySelector("[data-md-toggle=drawer]"); + if (!(e instanceof HTMLInputElement)) throw new ReferenceError; + e.checked && (e.checked = !1, e.dispatchEvent(new CustomEvent("change"))) + })), + function() { + var e = document.querySelector("[data-md-source]"); + if (!e) return r.a.resolve([]); + if (!(e instanceof HTMLAnchorElement)) throw new ReferenceError; + switch (e.dataset.mdSource) { + case "github": + return new i.a.Source.Adapter.GitHub(e).fetch(); + default: + return r.a.resolve([]) + } + }().then(function(t) { + var e = document.querySelectorAll("[data-md-source]"); + Array.prototype.forEach.call(e, function(e) { + new i.a.Source.Repository(e).initialize(t) + }) + }); + var n = function() { + var e = document.querySelectorAll("details"); + Array.prototype.forEach.call(e, function(e) { + e.setAttribute("open", "") + }) + }; + new i.a.Event.MatchMedia("print", { + listen: n, + unlisten: function() {} + }), window.onbeforeprint = n + } + } + }.call(this, c(3)) +}, function(e, t, n) { + e.exports = n.p + "assets/images/icons/bitbucket.1b09e088.svg" +}, function(e, t, n) { + e.exports = n.p + "assets/images/icons/github.f0b8504a.svg" +}, function(e, t, n) { + e.exports = n.p + "assets/images/icons/gitlab.6dd19c00.svg" +}, function(e, t) { + e.exports = "/Users/squidfunk/Desktop/General/Sources/mkdocs-material/material/application.4031d38b.css" +}, function(e, t) { + e.exports = "/Users/squidfunk/Desktop/General/Sources/mkdocs-material/material/application-palette.224b79ff.css" +}, function(e, t) { + ! function() { + if ("undefined" != typeof window) try { + var e = new window.CustomEvent("test", { + cancelable: !0 + }); + if (e.preventDefault(), !0 !== e.defaultPrevented) throw new Error("Could not prevent default") + } catch (e) { + var t = function(e, t) { + var n, r; + return (t = t || {}).bubbles = !!t.bubbles, t.cancelable = !!t.cancelable, (n = document.createEvent("CustomEvent")).initCustomEvent(e, t.bubbles, t.cancelable, t.detail), r = n.preventDefault, n.preventDefault = function() { + r.call(this); + try { + Object.defineProperty(this, "defaultPrevented", { + get: function() { + return !0 + } + }) + } catch (e) { + this.defaultPrevented = !0 + } + }, n + }; + t.prototype = window.Event.prototype, window.CustomEvent = t + } + }() +}, function(e, t, n) { + window.fetch || (window.fetch = n(7).default || n(7)) +}, function(e, i, o) { + (function(e) { + var t = void 0 !== e && e || "undefined" != typeof self && self || window, + n = Function.prototype.apply; + + function r(e, t) { + this._id = e, this._clearFn = t + } + i.setTimeout = function() { + return new r(n.call(setTimeout, t, arguments), clearTimeout) + }, i.setInterval = function() { + return new r(n.call(setInterval, t, arguments), clearInterval) + }, i.clearTimeout = i.clearInterval = function(e) { + e && e.close() + }, r.prototype.unref = r.prototype.ref = function() {}, r.prototype.close = function() { + this._clearFn.call(t, this._id) + }, i.enroll = function(e, t) { + clearTimeout(e._idleTimeoutId), e._idleTimeout = t + }, i.unenroll = function(e) { + clearTimeout(e._idleTimeoutId), e._idleTimeout = -1 + }, i._unrefActive = i.active = function(e) { + clearTimeout(e._idleTimeoutId); + var t = e._idleTimeout; + 0 <= t && (e._idleTimeoutId = setTimeout(function() { + e._onTimeout && e._onTimeout() + }, t)) + }, o(22), i.setImmediate = "undefined" != typeof self && self.setImmediate || void 0 !== e && e.setImmediate || this && this.setImmediate, i.clearImmediate = "undefined" != typeof self && self.clearImmediate || void 0 !== e && e.clearImmediate || this && this.clearImmediate + }).call(this, o(4)) +}, function(e, t, n) { + (function(e, p) { + ! function(n, r) { + "use strict"; + if (!n.setImmediate) { + var i, o, t, a, e, s = 1, + c = {}, + l = !1, + u = n.document, + f = Object.getPrototypeOf && Object.getPrototypeOf(n); + f = f && f.setTimeout ? f : n, i = "[object process]" === {}.toString.call(n.process) ? function(e) { + p.nextTick(function() { + h(e) + }) + } : function() { + if (n.postMessage && !n.importScripts) { + var e = !0, + t = n.onmessage; + return n.onmessage = function() { + e = !1 + }, n.postMessage("", "*"), n.onmessage = t, e + } + }() ? (a = "setImmediate$" + Math.random() + "$", e = function(e) { + e.source === n && "string" == typeof e.data && 0 === e.data.indexOf(a) && h(+e.data.slice(a.length)) + }, n.addEventListener ? n.addEventListener("message", e, !1) : n.attachEvent("onmessage", e), function(e) { + n.postMessage(a + e, "*") + }) : n.MessageChannel ? ((t = new MessageChannel).port1.onmessage = function(e) { + h(e.data) + }, function(e) { + t.port2.postMessage(e) + }) : u && "onreadystatechange" in u.createElement("script") ? (o = u.documentElement, function(e) { + var t = u.createElement("script"); + t.onreadystatechange = function() { + h(e), t.onreadystatechange = null, o.removeChild(t), t = null + }, o.appendChild(t) + }) : function(e) { + setTimeout(h, 0, e) + }, f.setImmediate = function(e) { + "function" != typeof e && (e = new Function("" + e)); + for (var t = new Array(arguments.length - 1), n = 0; n < t.length; n++) t[n] = arguments[n + 1]; + var r = { + callback: e, + args: t + }; + return c[s] = r, i(s), s++ + }, f.clearImmediate = d + } + + function d(e) { + delete c[e] + } + + function h(e) { + if (l) setTimeout(h, 0, e); + else { + var t = c[e]; + if (t) { + l = !0; + try { + ! function(e) { + var t = e.callback, + n = e.args; + switch (n.length) { + case 0: + t(); + break; + case 1: + t(n[0]); + break; + case 2: + t(n[0], n[1]); + break; + case 3: + t(n[0], n[1], n[2]); + break; + default: + t.apply(r, n) + } + }(t) + } finally { + d(e), l = !1 + } + } + } + } + }("undefined" == typeof self ? void 0 === e ? this : e : self) + }).call(this, n(4), n(23)) +}, function(e, t) { + var n, r, i = e.exports = {}; + + function o() { + throw new Error("setTimeout has not been defined") + } + + function a() { + throw new Error("clearTimeout has not been defined") + } + + function s(t) { + if (n === setTimeout) return setTimeout(t, 0); + if ((n === o || !n) && setTimeout) return n = setTimeout, setTimeout(t, 0); + try { + return n(t, 0) + } catch (e) { + try { + return n.call(null, t, 0) + } catch (e) { + return n.call(this, t, 0) + } + } + }! function() { + try { + n = "function" == typeof setTimeout ? setTimeout : o + } catch (e) { + n = o + } + try { + r = "function" == typeof clearTimeout ? clearTimeout : a + } catch (e) { + r = a + } + }(); + var c, l = [], + u = !1, + f = -1; + + function d() { + u && c && (u = !1, c.length ? l = c.concat(l) : f = -1, l.length && h()) + } + + function h() { + if (!u) { + var e = s(d); + u = !0; + for (var t = l.length; t;) { + for (c = l, l = []; ++f < t;) c && c[f].run(); + f = -1, t = l.length + } + c = null, u = !1, + function(t) { + if (r === clearTimeout) return clearTimeout(t); + if ((r === a || !r) && clearTimeout) return r = clearTimeout, clearTimeout(t); + try { + r(t) + } catch (e) { + try { + return r.call(null, t) + } catch (e) { + return r.call(this, t) + } + } + }(e) + } + } + + function p(e, t) { + this.fun = e, this.array = t + } + + function m() {} + i.nextTick = function(e) { + var t = new Array(arguments.length - 1); + if (1 < arguments.length) + for (var n = 1; n < arguments.length; n++) t[n - 1] = arguments[n]; + l.push(new p(e, t)), 1 !== l.length || u || s(h) + }, p.prototype.run = function() { + this.fun.apply(null, this.array) + }, i.title = "browser", i.browser = !0, i.env = {}, i.argv = [], i.version = "", i.versions = {}, i.on = m, i.addListener = m, i.once = m, i.off = m, i.removeListener = m, i.removeAllListeners = m, i.emit = m, i.prependListener = m, i.prependOnceListener = m, i.listeners = function(e) { + return [] + }, i.binding = function(e) { + throw new Error("process.binding is not supported") + }, i.cwd = function() { + return "/" + }, i.chdir = function(e) { + throw new Error("process.chdir is not supported") + }, i.umask = function() { + return 0 + } +}, function(i, o, a) { + var s, c; + /** + * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.6 + * Copyright (C) 2019 Oliver Nightingale + * @license MIT + */ + ! function() { + var t, l, u, e, n, f, d, h, p, m, y, v, g, w, _, E, x, b, k, S, T, L, R, O, C, r, D = function(e) { + var t = new D.Builder; + return t.pipeline.add(D.trimmer, D.stopWordFilter, D.stemmer), t.searchPipeline.add(D.stemmer), e.call(t, t), t.build() + }; + D.version = "2.3.6", D.utils = {}, D.utils.warn = (t = this, function(e) { + t.console && console.warn && console.warn(e) + }), D.utils.asString = function(e) { + return null == e ? "" : e.toString() + }, D.utils.clone = function(e) { + if (null == e) return e; + for (var t = Object.create(null), n = Object.keys(e), r = 0; r < n.length; r++) { + var i = n[r], + o = e[i]; + if (Array.isArray(o)) t[i] = o.slice(); + else { + if ("string" != typeof o && "number" != typeof o && "boolean" != typeof o) throw new TypeError("clone is not deep and does not support nested objects"); + t[i] = o + } + } + return t + }, D.FieldRef = function(e, t, n) { + this.docRef = e, this.fieldName = t, this._stringValue = n + }, D.FieldRef.joiner = "/", D.FieldRef.fromString = function(e) { + var t = e.indexOf(D.FieldRef.joiner); + if (-1 === t) throw "malformed field ref string"; + var n = e.slice(0, t), + r = e.slice(t + 1); + return new D.FieldRef(r, n, e) + }, D.FieldRef.prototype.toString = function() { + return null == this._stringValue && (this._stringValue = this.fieldName + D.FieldRef.joiner + this.docRef), this._stringValue + }, D.Set = function(e) { + if (this.elements = Object.create(null), e) { + this.length = e.length; + for (var t = 0; t < this.length; t++) this.elements[e[t]] = !0 + } else this.length = 0 + }, D.Set.complete = { + intersect: function(e) { + return e + }, + union: function(e) { + return e + }, + contains: function() { + return !0 + } + }, D.Set.empty = { + intersect: function() { + return this + }, + union: function(e) { + return e + }, + contains: function() { + return !1 + } + }, D.Set.prototype.contains = function(e) { + return !!this.elements[e] + }, D.Set.prototype.intersect = function(e) { + var t, n, r, i = []; + if (e === D.Set.complete) return this; + if (e === D.Set.empty) return e; + n = this.length < e.length ? (t = this, e) : (t = e, this), r = Object.keys(t.elements); + for (var o = 0; o < r.length; o++) { + var a = r[o]; + a in n.elements && i.push(a) + } + return new D.Set(i) + }, D.Set.prototype.union = function(e) { + return e === D.Set.complete ? D.Set.complete : e === D.Set.empty ? this : new D.Set(Object.keys(this.elements).concat(Object.keys(e.elements))) + }, D.idf = function(e, t) { + var n = 0; + for (var r in e) "_index" != r && (n += Object.keys(e[r]).length); + var i = (t - n + .5) / (n + .5); + return Math.log(1 + Math.abs(i)) + }, D.Token = function(e, t) { + this.str = e || "", this.metadata = t || {} + }, D.Token.prototype.toString = function() { + return this.str + }, D.Token.prototype.update = function(e) { + return this.str = e(this.str, this.metadata), this + }, D.Token.prototype.clone = function(e) { + return e = e || function(e) { + return e + }, new D.Token(e(this.str, this.metadata), this.metadata) + }, D.tokenizer = function(e, t) { + if (null == e || null == e) return []; + if (Array.isArray(e)) return e.map(function(e) { + return new D.Token(D.utils.asString(e).toLowerCase(), D.utils.clone(t)) + }); + for (var n = e.toString().trim().toLowerCase(), r = n.length, i = [], o = 0, a = 0; o <= r; o++) { + var s = o - a; + if (n.charAt(o).match(D.tokenizer.separator) || o == r) { + if (0 < s) { + var c = D.utils.clone(t) || {}; + c.position = [a, s], c.index = i.length, i.push(new D.Token(n.slice(a, o), c)) + } + a = o + 1 + } + } + return i + }, D.tokenizer.separator = /[\s\-]+/, D.Pipeline = function() { + this._stack = [] + }, D.Pipeline.registeredFunctions = Object.create(null), D.Pipeline.registerFunction = function(e, t) { + t in this.registeredFunctions && D.utils.warn("Overwriting existing registered function: " + t), e.label = t, D.Pipeline.registeredFunctions[e.label] = e + }, D.Pipeline.warnIfFunctionNotRegistered = function(e) { + e.label && e.label in this.registeredFunctions || D.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n", e) + }, D.Pipeline.load = function(e) { + var n = new D.Pipeline; + return e.forEach(function(e) { + var t = D.Pipeline.registeredFunctions[e]; + if (!t) throw new Error("Cannot load unregistered function: " + e); + n.add(t) + }), n + }, D.Pipeline.prototype.add = function() { + Array.prototype.slice.call(arguments).forEach(function(e) { + D.Pipeline.warnIfFunctionNotRegistered(e), this._stack.push(e) + }, this) + }, D.Pipeline.prototype.after = function(e, t) { + D.Pipeline.warnIfFunctionNotRegistered(t); + var n = this._stack.indexOf(e); + if (-1 == n) throw new Error("Cannot find existingFn"); + n += 1, this._stack.splice(n, 0, t) + }, D.Pipeline.prototype.before = function(e, t) { + D.Pipeline.warnIfFunctionNotRegistered(t); + var n = this._stack.indexOf(e); + if (-1 == n) throw new Error("Cannot find existingFn"); + this._stack.splice(n, 0, t) + }, D.Pipeline.prototype.remove = function(e) { + var t = this._stack.indexOf(e); - 1 != t && this._stack.splice(t, 1) + }, D.Pipeline.prototype.run = function(e) { + for (var t = this._stack.length, n = 0; n < t; n++) { + for (var r = this._stack[n], i = [], o = 0; o < e.length; o++) { + var a = r(e[o], o, e); + if (void 0 !== a && "" !== a) + if (Array.isArray(a)) + for (var s = 0; s < a.length; s++) i.push(a[s]); + else i.push(a) + } + e = i + } + return e + }, D.Pipeline.prototype.runString = function(e, t) { + var n = new D.Token(e, t); + return this.run([n]).map(function(e) { + return e.toString() + }) + }, D.Pipeline.prototype.reset = function() { + this._stack = [] + }, D.Pipeline.prototype.toJSON = function() { + return this._stack.map(function(e) { + return D.Pipeline.warnIfFunctionNotRegistered(e), e.label + }) + }, D.Vector = function(e) { + this._magnitude = 0, this.elements = e || [] + }, D.Vector.prototype.positionForIndex = function(e) { + if (0 == this.elements.length) return 0; + for (var t = 0, n = this.elements.length / 2, r = n - t, i = Math.floor(r / 2), o = this.elements[2 * i]; 1 < r && (o < e && (t = i), e < o && (n = i), o != e);) r = n - t, i = t + Math.floor(r / 2), o = this.elements[2 * i]; + return o == e ? 2 * i : e < o ? 2 * i : o < e ? 2 * (i + 1) : void 0 + }, D.Vector.prototype.insert = function(e, t) { + this.upsert(e, t, function() { + throw "duplicate index" + }) + }, D.Vector.prototype.upsert = function(e, t, n) { + this._magnitude = 0; + var r = this.positionForIndex(e); + this.elements[r] == e ? this.elements[r + 1] = n(this.elements[r + 1], t) : this.elements.splice(r, 0, e, t) + }, D.Vector.prototype.magnitude = function() { + if (this._magnitude) return this._magnitude; + for (var e = 0, t = this.elements.length, n = 1; n < t; n += 2) { + var r = this.elements[n]; + e += r * r + } + return this._magnitude = Math.sqrt(e) + }, D.Vector.prototype.dot = function(e) { + for (var t = 0, n = this.elements, r = e.elements, i = n.length, o = r.length, a = 0, s = 0, c = 0, l = 0; c < i && l < o;)(a = n[c]) < (s = r[l]) ? c += 2 : s < a ? l += 2 : a == s && (t += n[c + 1] * r[l + 1], c += 2, l += 2); + return t + }, D.Vector.prototype.similarity = function(e) { + return this.dot(e) / this.magnitude() || 0 + }, D.Vector.prototype.toArray = function() { + for (var e = new Array(this.elements.length / 2), t = 1, n = 0; t < this.elements.length; t += 2, n++) e[n] = this.elements[t]; + return e + }, D.Vector.prototype.toJSON = function() { + return this.elements + }, D.stemmer = (l = { + ational: "ate", + tional: "tion", + enci: "ence", + anci: "ance", + izer: "ize", + bli: "ble", + alli: "al", + entli: "ent", + eli: "e", + ousli: "ous", + ization: "ize", + ation: "ate", + ator: "ate", + alism: "al", + iveness: "ive", + fulness: "ful", + ousness: "ous", + aliti: "al", + iviti: "ive", + biliti: "ble", + logi: "log" + }, u = { + icate: "ic", + ative: "", + alize: "al", + iciti: "ic", + ical: "ic", + ful: "", + ness: "" + }, e = "[aeiouy]", n = "[^aeiou][^aeiouy]*", f = new RegExp("^([^aeiou][^aeiouy]*)?[aeiouy][aeiou]*[^aeiou][^aeiouy]*"), d = new RegExp("^([^aeiou][^aeiouy]*)?[aeiouy][aeiou]*[^aeiou][^aeiouy]*[aeiouy][aeiou]*[^aeiou][^aeiouy]*"), h = new RegExp("^([^aeiou][^aeiouy]*)?[aeiouy][aeiou]*[^aeiou][^aeiouy]*([aeiouy][aeiou]*)?$"), p = new RegExp("^([^aeiou][^aeiouy]*)?[aeiouy]"), m = /^(.+?)(ss|i)es$/, y = /^(.+?)([^s])s$/, v = /^(.+?)eed$/, g = /^(.+?)(ed|ing)$/, w = /.$/, _ = /(at|bl|iz)$/, E = new RegExp("([^aeiouylsz])\\1$"), x = new RegExp("^" + n + e + "[^aeiouwxy]$"), b = /^(.+?[^aeiou])y$/, k = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/, S = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/, T = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/, L = /^(.+?)(s|t)(ion)$/, R = /^(.+?)e$/, O = /ll$/, C = new RegExp("^" + n + e + "[^aeiouwxy]$"), r = function(e) { + var t, n, r, i, o, a, s; + if (e.length < 3) return e; + if ("y" == (r = e.substr(0, 1)) && (e = r.toUpperCase() + e.substr(1)), o = y, (i = m).test(e) ? e = e.replace(i, "$1$2") : o.test(e) && (e = e.replace(o, "$1$2")), o = g, (i = v).test(e)) { + var c = i.exec(e); + (i = f).test(c[1]) && (i = w, e = e.replace(i, "")) + } else if (o.test(e)) { + t = (c = o.exec(e))[1], (o = p).test(t) && (a = E, s = x, (o = _).test(e = t) ? e += "e" : a.test(e) ? (i = w, e = e.replace(i, "")) : s.test(e) && (e += "e")) + }(i = b).test(e) && (e = (t = (c = i.exec(e))[1]) + "i"); + (i = k).test(e) && (t = (c = i.exec(e))[1], n = c[2], (i = f).test(t) && (e = t + l[n])); + (i = S).test(e) && (t = (c = i.exec(e))[1], n = c[2], (i = f).test(t) && (e = t + u[n])); + if (o = L, (i = T).test(e)) t = (c = i.exec(e))[1], (i = d).test(t) && (e = t); + else if (o.test(e)) { + t = (c = o.exec(e))[1] + c[2], (o = d).test(t) && (e = t) + }(i = R).test(e) && (t = (c = i.exec(e))[1], o = h, a = C, ((i = d).test(t) || o.test(t) && !a.test(t)) && (e = t)); + return o = d, (i = O).test(e) && o.test(e) && (i = w, e = e.replace(i, "")), "y" == r && (e = r.toLowerCase() + e.substr(1)), e + }, function(e) { + return e.update(r) + }), D.Pipeline.registerFunction(D.stemmer, "stemmer"), D.generateStopWordFilter = function(e) { + var t = e.reduce(function(e, t) { + return e[t] = t, e + }, {}); + return function(e) { + if (e && t[e.toString()] !== e.toString()) return e + } + }, D.stopWordFilter = D.generateStopWordFilter(["a", "able", "about", "across", "after", "all", "almost", "also", "am", "among", "an", "and", "any", "are", "as", "at", "be", "because", "been", "but", "by", "can", "cannot", "could", "dear", "did", "do", "does", "either", "else", "ever", "every", "for", "from", "get", "got", "had", "has", "have", "he", "her", "hers", "him", "his", "how", "however", "i", "if", "in", "into", "is", "it", "its", "just", "least", "let", "like", "likely", "may", "me", "might", "most", "must", "my", "neither", "no", "nor", "not", "of", "off", "often", "on", "only", "or", "other", "our", "own", "rather", "said", "say", "says", "she", "should", "since", "so", "some", "than", "that", "the", "their", "them", "then", "there", "these", "they", "this", "tis", "to", "too", "twas", "us", "wants", "was", "we", "were", "what", "when", "where", "which", "while", "who", "whom", "why", "will", "with", "would", "yet", "you", "your"]), D.Pipeline.registerFunction(D.stopWordFilter, "stopWordFilter"), D.trimmer = function(e) { + return e.update(function(e) { + return e.replace(/^\W+/, "").replace(/\W+$/, "") + }) + }, D.Pipeline.registerFunction(D.trimmer, "trimmer"), D.TokenSet = function() { + this.final = !1, this.edges = {}, this.id = D.TokenSet._nextId, D.TokenSet._nextId += 1 + }, D.TokenSet._nextId = 1, D.TokenSet.fromArray = function(e) { + for (var t = new D.TokenSet.Builder, n = 0, r = e.length; n < r; n++) t.insert(e[n]); + return t.finish(), t.root + }, D.TokenSet.fromClause = function(e) { + return "editDistance" in e ? D.TokenSet.fromFuzzyString(e.term, e.editDistance) : D.TokenSet.fromString(e.term) + }, D.TokenSet.fromFuzzyString = function(e, t) { + for (var n = new D.TokenSet, r = [{ + node: n, + editsRemaining: t, + str: e + }]; r.length;) { + var i = r.pop(); + if (0 < i.str.length) { + var o, a = i.str.charAt(0); + a in i.node.edges ? o = i.node.edges[a] : (o = new D.TokenSet, i.node.edges[a] = o), 1 == i.str.length && (o.final = !0), r.push({ + node: o, + editsRemaining: i.editsRemaining, + str: i.str.slice(1) + }) + } + if (0 != i.editsRemaining) { + if ("*" in i.node.edges) var s = i.node.edges["*"]; + else { + s = new D.TokenSet; + i.node.edges["*"] = s + } + if (0 == i.str.length && (s.final = !0), r.push({ + node: s, + editsRemaining: i.editsRemaining - 1, + str: i.str + }), 1 < i.str.length && r.push({ + node: i.node, + editsRemaining: i.editsRemaining - 1, + str: i.str.slice(1) + }), 1 == i.str.length && (i.node.final = !0), 1 <= i.str.length) { + if ("*" in i.node.edges) var c = i.node.edges["*"]; + else { + c = new D.TokenSet; + i.node.edges["*"] = c + } + 1 == i.str.length && (c.final = !0), r.push({ + node: c, + editsRemaining: i.editsRemaining - 1, + str: i.str.slice(1) + }) + } + if (1 < i.str.length) { + var l, u = i.str.charAt(0), + f = i.str.charAt(1); + f in i.node.edges ? l = i.node.edges[f] : (l = new D.TokenSet, i.node.edges[f] = l), 1 == i.str.length && (l.final = !0), r.push({ + node: l, + editsRemaining: i.editsRemaining - 1, + str: u + i.str.slice(2) + }) + } + } + } + return n + }, D.TokenSet.fromString = function(e) { + for (var t = new D.TokenSet, n = t, r = 0, i = e.length; r < i; r++) { + var o = e[r], + a = r == i - 1; + if ("*" == o)(t.edges[o] = t).final = a; + else { + var s = new D.TokenSet; + s.final = a, t.edges[o] = s, t = s + } + } + return n + }, D.TokenSet.prototype.toArray = function() { + for (var e = [], t = [{ + prefix: "", + node: this + }]; t.length;) { + var n = t.pop(), + r = Object.keys(n.node.edges), + i = r.length; + n.node.final && (n.prefix.charAt(0), e.push(n.prefix)); + for (var o = 0; o < i; o++) { + var a = r[o]; + t.push({ + prefix: n.prefix.concat(a), + node: n.node.edges[a] + }) + } + } + return e + }, D.TokenSet.prototype.toString = function() { + if (this._str) return this._str; + for (var e = this.final ? "1" : "0", t = Object.keys(this.edges).sort(), n = t.length, r = 0; r < n; r++) { + var i = t[r]; + e = e + i + this.edges[i].id + } + return e + }, D.TokenSet.prototype.intersect = function(e) { + for (var t = new D.TokenSet, n = void 0, r = [{ + qNode: e, + output: t, + node: this + }]; r.length;) { + n = r.pop(); + for (var i = Object.keys(n.qNode.edges), o = i.length, a = Object.keys(n.node.edges), s = a.length, c = 0; c < o; c++) + for (var l = i[c], u = 0; u < s; u++) { + var f = a[u]; + if (f == l || "*" == l) { + var d = n.node.edges[f], + h = n.qNode.edges[l], + p = d.final && h.final, + m = void 0; + f in n.output.edges ? (m = n.output.edges[f]).final = m.final || p : ((m = new D.TokenSet).final = p, n.output.edges[f] = m), r.push({ + qNode: h, + output: m, + node: d + }) + } + } + } + return t + }, D.TokenSet.Builder = function() { + this.previousWord = "", this.root = new D.TokenSet, this.uncheckedNodes = [], this.minimizedNodes = {} + }, D.TokenSet.Builder.prototype.insert = function(e) { + var t, n = 0; + if (e < this.previousWord) throw new Error("Out of order word insertion"); + for (var r = 0; r < e.length && r < this.previousWord.length && e[r] == this.previousWord[r]; r++) n++; + this.minimize(n), t = 0 == this.uncheckedNodes.length ? this.root : this.uncheckedNodes[this.uncheckedNodes.length - 1].child; + for (r = n; r < e.length; r++) { + var i = new D.TokenSet, + o = e[r]; + t.edges[o] = i, this.uncheckedNodes.push({ + parent: t, + char: o, + child: i + }), t = i + } + t.final = !0, this.previousWord = e + }, D.TokenSet.Builder.prototype.finish = function() { + this.minimize(0) + }, D.TokenSet.Builder.prototype.minimize = function(e) { + for (var t = this.uncheckedNodes.length - 1; e <= t; t--) { + var n = this.uncheckedNodes[t], + r = n.child.toString(); + r in this.minimizedNodes ? n.parent.edges[n.char] = this.minimizedNodes[r] : (n.child._str = r, this.minimizedNodes[r] = n.child), this.uncheckedNodes.pop() + } + }, D.Index = function(e) { + this.invertedIndex = e.invertedIndex, this.fieldVectors = e.fieldVectors, this.tokenSet = e.tokenSet, this.fields = e.fields, this.pipeline = e.pipeline + }, D.Index.prototype.search = function(t) { + return this.query(function(e) { + new D.QueryParser(t, e).parse() + }) + }, D.Index.prototype.query = function(e) { + for (var t = new D.Query(this.fields), n = Object.create(null), r = Object.create(null), i = Object.create(null), o = Object.create(null), a = Object.create(null), s = 0; s < this.fields.length; s++) r[this.fields[s]] = new D.Vector; + e.call(t, t); + for (s = 0; s < t.clauses.length; s++) { + var c = t.clauses[s], + l = null, + u = D.Set.complete; + l = c.usePipeline ? this.pipeline.runString(c.term, { + fields: c.fields + }) : [c.term]; + for (var f = 0; f < l.length; f++) { + var d = l[f]; + c.term = d; + var h = D.TokenSet.fromClause(c), + p = this.tokenSet.intersect(h).toArray(); + if (0 === p.length && c.presence === D.Query.presence.REQUIRED) { + for (var m = 0; m < c.fields.length; m++) { + o[Q = c.fields[m]] = D.Set.empty + } + break + } + for (var y = 0; y < p.length; y++) { + var v = p[y], + g = this.invertedIndex[v], + w = g._index; + for (m = 0; m < c.fields.length; m++) { + var _ = g[Q = c.fields[m]], + E = Object.keys(_), + x = v + "/" + Q, + b = new D.Set(E); + if (c.presence == D.Query.presence.REQUIRED && (u = u.union(b), void 0 === o[Q] && (o[Q] = D.Set.complete)), c.presence != D.Query.presence.PROHIBITED) { + if (r[Q].upsert(w, c.boost, function(e, t) { + return e + t + }), !i[x]) { + for (var k = 0; k < E.length; k++) { + var S, T = E[k], + L = new D.FieldRef(T, Q), + R = _[T]; + void 0 === (S = n[L]) ? n[L] = new D.MatchData(v, Q, R) : S.add(v, Q, R) + } + i[x] = !0 + } + } else void 0 === a[Q] && (a[Q] = D.Set.empty), a[Q] = a[Q].union(b) + } + } + } + if (c.presence === D.Query.presence.REQUIRED) + for (m = 0; m < c.fields.length; m++) { + o[Q = c.fields[m]] = o[Q].intersect(u) + } + } + var O = D.Set.complete, + C = D.Set.empty; + for (s = 0; s < this.fields.length; s++) { + var Q; + o[Q = this.fields[s]] && (O = O.intersect(o[Q])), a[Q] && (C = C.union(a[Q])) + } + var P = Object.keys(n), + A = [], + I = Object.create(null); + if (t.isNegated()) { + P = Object.keys(this.fieldVectors); + for (s = 0; s < P.length; s++) { + L = P[s]; + var M = D.FieldRef.fromString(L); + n[L] = new D.MatchData + } + } + for (s = 0; s < P.length; s++) { + var N = (M = D.FieldRef.fromString(P[s])).docRef; + if (O.contains(N) && !C.contains(N)) { + var j, F = this.fieldVectors[M], + H = r[M.fieldName].similarity(F); + if (void 0 !== (j = I[N])) j.score += H, j.matchData.combine(n[M]); + else { + var q = { + ref: N, + score: H, + matchData: n[M] + }; + I[N] = q, A.push(q) + } + } + } + return A.sort(function(e, t) { + return t.score - e.score + }) + }, D.Index.prototype.toJSON = function() { + var e = Object.keys(this.invertedIndex).sort().map(function(e) { + return [e, this.invertedIndex[e]] + }, this), + t = Object.keys(this.fieldVectors).map(function(e) { + return [e, this.fieldVectors[e].toJSON()] + }, this); + return { + version: D.version, + fields: this.fields, + fieldVectors: t, + invertedIndex: e, + pipeline: this.pipeline.toJSON() + } + }, D.Index.load = function(e) { + var t = {}, + n = {}, + r = e.fieldVectors, + i = Object.create(null), + o = e.invertedIndex, + a = new D.TokenSet.Builder, + s = D.Pipeline.load(e.pipeline); + e.version != D.version && D.utils.warn("Version mismatch when loading serialised index. Current version of lunr '" + D.version + "' does not match serialized index '" + e.version + "'"); + for (var c = 0; c < r.length; c++) { + var l = (f = r[c])[0], + u = f[1]; + n[l] = new D.Vector(u) + } + for (c = 0; c < o.length; c++) { + var f, d = (f = o[c])[0], + h = f[1]; + a.insert(d), i[d] = h + } + return a.finish(), t.fields = e.fields, t.fieldVectors = n, t.invertedIndex = i, t.tokenSet = a.root, t.pipeline = s, new D.Index(t) + }, D.Builder = function() { + this._ref = "id", this._fields = Object.create(null), this._documents = Object.create(null), this.invertedIndex = Object.create(null), this.fieldTermFrequencies = {}, this.fieldLengths = {}, this.tokenizer = D.tokenizer, this.pipeline = new D.Pipeline, this.searchPipeline = new D.Pipeline, this.documentCount = 0, this._b = .75, this._k1 = 1.2, this.termIndex = 0, this.metadataWhitelist = [] + }, D.Builder.prototype.ref = function(e) { + this._ref = e + }, D.Builder.prototype.field = function(e, t) { + if (/\//.test(e)) throw new RangeError("Field '" + e + "' contains illegal character '/'"); + this._fields[e] = t || {} + }, D.Builder.prototype.b = function(e) { + this._b = e < 0 ? 0 : 1 < e ? 1 : e + }, D.Builder.prototype.k1 = function(e) { + this._k1 = e + }, D.Builder.prototype.add = function(e, t) { + var n = e[this._ref], + r = Object.keys(this._fields); + this._documents[n] = t || {}, this.documentCount += 1; + for (var i = 0; i < r.length; i++) { + var o = r[i], + a = this._fields[o].extractor, + s = a ? a(e) : e[o], + c = this.tokenizer(s, { + fields: [o] + }), + l = this.pipeline.run(c), + u = new D.FieldRef(n, o), + f = Object.create(null); + this.fieldTermFrequencies[u] = f, this.fieldLengths[u] = 0, this.fieldLengths[u] += l.length; + for (var d = 0; d < l.length; d++) { + var h = l[d]; + if (null == f[h] && (f[h] = 0), f[h] += 1, null == this.invertedIndex[h]) { + var p = Object.create(null); + p._index = this.termIndex, this.termIndex += 1; + for (var m = 0; m < r.length; m++) p[r[m]] = Object.create(null); + this.invertedIndex[h] = p + } + null == this.invertedIndex[h][o][n] && (this.invertedIndex[h][o][n] = Object.create(null)); + for (var y = 0; y < this.metadataWhitelist.length; y++) { + var v = this.metadataWhitelist[y], + g = h.metadata[v]; + null == this.invertedIndex[h][o][n][v] && (this.invertedIndex[h][o][n][v] = []), this.invertedIndex[h][o][n][v].push(g) + } + } + } + }, D.Builder.prototype.calculateAverageFieldLengths = function() { + for (var e = Object.keys(this.fieldLengths), t = e.length, n = {}, r = {}, i = 0; i < t; i++) { + var o = D.FieldRef.fromString(e[i]), + a = o.fieldName; + r[a] || (r[a] = 0), r[a] += 1, n[a] || (n[a] = 0), n[a] += this.fieldLengths[o] + } + var s = Object.keys(this._fields); + for (i = 0; i < s.length; i++) { + var c = s[i]; + n[c] = n[c] / r[c] + } + this.averageFieldLength = n + }, D.Builder.prototype.createFieldVectors = function() { + for (var e = {}, t = Object.keys(this.fieldTermFrequencies), n = t.length, r = Object.create(null), i = 0; i < n; i++) { + for (var o = D.FieldRef.fromString(t[i]), a = o.fieldName, s = this.fieldLengths[o], c = new D.Vector, l = this.fieldTermFrequencies[o], u = Object.keys(l), f = u.length, d = this._fields[a].boost || 1, h = this._documents[o.docRef].boost || 1, p = 0; p < f; p++) { + var m, y, v, g = u[p], + w = l[g], + _ = this.invertedIndex[g]._index; + void 0 === r[g] ? (m = D.idf(this.invertedIndex[g], this.documentCount), r[g] = m) : m = r[g], y = m * ((this._k1 + 1) * w) / (this._k1 * (1 - this._b + this._b * (s / this.averageFieldLength[a])) + w), y *= d, y *= h, v = Math.round(1e3 * y) / 1e3, c.insert(_, v) + } + e[o] = c + } + this.fieldVectors = e + }, D.Builder.prototype.createTokenSet = function() { + this.tokenSet = D.TokenSet.fromArray(Object.keys(this.invertedIndex).sort()) + }, D.Builder.prototype.build = function() { + return this.calculateAverageFieldLengths(), this.createFieldVectors(), this.createTokenSet(), new D.Index({ + invertedIndex: this.invertedIndex, + fieldVectors: this.fieldVectors, + tokenSet: this.tokenSet, + fields: Object.keys(this._fields), + pipeline: this.searchPipeline + }) + }, D.Builder.prototype.use = function(e) { + var t = Array.prototype.slice.call(arguments, 1); + t.unshift(this), e.apply(this, t) + }, D.MatchData = function(e, t, n) { + for (var r = Object.create(null), i = Object.keys(n || {}), o = 0; o < i.length; o++) { + var a = i[o]; + r[a] = n[a].slice() + } + this.metadata = Object.create(null), void 0 !== e && (this.metadata[e] = Object.create(null), this.metadata[e][t] = r) + }, D.MatchData.prototype.combine = function(e) { + for (var t = Object.keys(e.metadata), n = 0; n < t.length; n++) { + var r = t[n], + i = Object.keys(e.metadata[r]); + null == this.metadata[r] && (this.metadata[r] = Object.create(null)); + for (var o = 0; o < i.length; o++) { + var a = i[o], + s = Object.keys(e.metadata[r][a]); + null == this.metadata[r][a] && (this.metadata[r][a] = Object.create(null)); + for (var c = 0; c < s.length; c++) { + var l = s[c]; + null == this.metadata[r][a][l] ? this.metadata[r][a][l] = e.metadata[r][a][l] : this.metadata[r][a][l] = this.metadata[r][a][l].concat(e.metadata[r][a][l]) + } + } + } + }, D.MatchData.prototype.add = function(e, t, n) { + if (!(e in this.metadata)) return this.metadata[e] = Object.create(null), void(this.metadata[e][t] = n); + if (t in this.metadata[e]) + for (var r = Object.keys(n), i = 0; i < r.length; i++) { + var o = r[i]; + o in this.metadata[e][t] ? this.metadata[e][t][o] = this.metadata[e][t][o].concat(n[o]) : this.metadata[e][t][o] = n[o] + } else this.metadata[e][t] = n + }, D.Query = function(e) { + this.clauses = [], this.allFields = e + }, D.Query.wildcard = new String("*"), D.Query.wildcard.NONE = 0, D.Query.wildcard.LEADING = 1, D.Query.wildcard.TRAILING = 2, D.Query.presence = { + OPTIONAL: 1, + REQUIRED: 2, + PROHIBITED: 3 + }, D.Query.prototype.clause = function(e) { + return "fields" in e || (e.fields = this.allFields), "boost" in e || (e.boost = 1), "usePipeline" in e || (e.usePipeline = !0), "wildcard" in e || (e.wildcard = D.Query.wildcard.NONE), e.wildcard & D.Query.wildcard.LEADING && e.term.charAt(0) != D.Query.wildcard && (e.term = "*" + e.term), e.wildcard & D.Query.wildcard.TRAILING && e.term.slice(-1) != D.Query.wildcard && (e.term = e.term + "*"), "presence" in e || (e.presence = D.Query.presence.OPTIONAL), this.clauses.push(e), this + }, D.Query.prototype.isNegated = function() { + for (var e = 0; e < this.clauses.length; e++) + if (this.clauses[e].presence != D.Query.presence.PROHIBITED) return !1; + return !0 + }, D.Query.prototype.term = function(e, t) { + if (Array.isArray(e)) return e.forEach(function(e) { + this.term(e, D.utils.clone(t)) + }, this), this; + var n = t || {}; + return n.term = e.toString(), this.clause(n), this + }, D.QueryParseError = function(e, t, n) { + this.name = "QueryParseError", this.message = e, this.start = t, this.end = n + }, D.QueryParseError.prototype = new Error, D.QueryLexer = function(e) { + this.lexemes = [], this.str = e, this.length = e.length, this.pos = 0, this.start = 0, this.escapeCharPositions = [] + }, D.QueryLexer.prototype.run = function() { + for (var e = D.QueryLexer.lexText; e;) e = e(this) + }, D.QueryLexer.prototype.sliceString = function() { + for (var e = [], t = this.start, n = this.pos, r = 0; r < this.escapeCharPositions.length; r++) n = this.escapeCharPositions[r], e.push(this.str.slice(t, n)), t = n + 1; + return e.push(this.str.slice(t, this.pos)), this.escapeCharPositions.length = 0, e.join("") + }, D.QueryLexer.prototype.emit = function(e) { + this.lexemes.push({ + type: e, + str: this.sliceString(), + start: this.start, + end: this.pos + }), this.start = this.pos + }, D.QueryLexer.prototype.escapeCharacter = function() { + this.escapeCharPositions.push(this.pos - 1), this.pos += 1 + }, D.QueryLexer.prototype.next = function() { + if (this.pos >= this.length) return D.QueryLexer.EOS; + var e = this.str.charAt(this.pos); + return this.pos += 1, e + }, D.QueryLexer.prototype.width = function() { + return this.pos - this.start + }, D.QueryLexer.prototype.ignore = function() { + this.start == this.pos && (this.pos += 1), this.start = this.pos + }, D.QueryLexer.prototype.backup = function() { + this.pos -= 1 + }, D.QueryLexer.prototype.acceptDigitRun = function() { + for (var e, t; 47 < (t = (e = this.next()).charCodeAt(0)) && t < 58;); + e != D.QueryLexer.EOS && this.backup() + }, D.QueryLexer.prototype.more = function() { + return this.pos < this.length + }, D.QueryLexer.EOS = "EOS", D.QueryLexer.FIELD = "FIELD", D.QueryLexer.TERM = "TERM", D.QueryLexer.EDIT_DISTANCE = "EDIT_DISTANCE", D.QueryLexer.BOOST = "BOOST", D.QueryLexer.PRESENCE = "PRESENCE", D.QueryLexer.lexField = function(e) { + return e.backup(), e.emit(D.QueryLexer.FIELD), e.ignore(), D.QueryLexer.lexText + }, D.QueryLexer.lexTerm = function(e) { + if (1 < e.width() && (e.backup(), e.emit(D.QueryLexer.TERM)), e.ignore(), e.more()) return D.QueryLexer.lexText + }, D.QueryLexer.lexEditDistance = function(e) { + return e.ignore(), e.acceptDigitRun(), e.emit(D.QueryLexer.EDIT_DISTANCE), D.QueryLexer.lexText + }, D.QueryLexer.lexBoost = function(e) { + return e.ignore(), e.acceptDigitRun(), e.emit(D.QueryLexer.BOOST), D.QueryLexer.lexText + }, D.QueryLexer.lexEOS = function(e) { + 0 < e.width() && e.emit(D.QueryLexer.TERM) + }, D.QueryLexer.termSeparator = D.tokenizer.separator, D.QueryLexer.lexText = function(e) { + for (;;) { + var t = e.next(); + if (t == D.QueryLexer.EOS) return D.QueryLexer.lexEOS; + if (92 != t.charCodeAt(0)) { + if (":" == t) return D.QueryLexer.lexField; + if ("~" == t) return e.backup(), 0 < e.width() && e.emit(D.QueryLexer.TERM), D.QueryLexer.lexEditDistance; + if ("^" == t) return e.backup(), 0 < e.width() && e.emit(D.QueryLexer.TERM), D.QueryLexer.lexBoost; + if ("+" == t && 1 === e.width()) return e.emit(D.QueryLexer.PRESENCE), D.QueryLexer.lexText; + if ("-" == t && 1 === e.width()) return e.emit(D.QueryLexer.PRESENCE), D.QueryLexer.lexText; + if (t.match(D.QueryLexer.termSeparator)) return D.QueryLexer.lexTerm + } else e.escapeCharacter() + } + }, D.QueryParser = function(e, t) { + this.lexer = new D.QueryLexer(e), this.query = t, this.currentClause = {}, this.lexemeIdx = 0 + }, D.QueryParser.prototype.parse = function() { + this.lexer.run(), this.lexemes = this.lexer.lexemes; + for (var e = D.QueryParser.parseClause; e;) e = e(this); + return this.query + }, D.QueryParser.prototype.peekLexeme = function() { + return this.lexemes[this.lexemeIdx] + }, D.QueryParser.prototype.consumeLexeme = function() { + var e = this.peekLexeme(); + return this.lexemeIdx += 1, e + }, D.QueryParser.prototype.nextClause = function() { + var e = this.currentClause; + this.query.clause(e), this.currentClause = {} + }, D.QueryParser.parseClause = function(e) { + var t = e.peekLexeme(); + if (null != t) switch (t.type) { + case D.QueryLexer.PRESENCE: + return D.QueryParser.parsePresence; + case D.QueryLexer.FIELD: + return D.QueryParser.parseField; + case D.QueryLexer.TERM: + return D.QueryParser.parseTerm; + default: + var n = "expected either a field or a term, found " + t.type; + throw 1 <= t.str.length && (n += " with value '" + t.str + "'"), new D.QueryParseError(n, t.start, t.end) + } + }, D.QueryParser.parsePresence = function(e) { + var t = e.consumeLexeme(); + if (null != t) { + switch (t.str) { + case "-": + e.currentClause.presence = D.Query.presence.PROHIBITED; + break; + case "+": + e.currentClause.presence = D.Query.presence.REQUIRED; + break; + default: + var n = "unrecognised presence operator'" + t.str + "'"; + throw new D.QueryParseError(n, t.start, t.end) + } + var r = e.peekLexeme(); + if (null == r) { + n = "expecting term or field, found nothing"; + throw new D.QueryParseError(n, t.start, t.end) + } + switch (r.type) { + case D.QueryLexer.FIELD: + return D.QueryParser.parseField; + case D.QueryLexer.TERM: + return D.QueryParser.parseTerm; + default: + n = "expecting term or field, found '" + r.type + "'"; + throw new D.QueryParseError(n, r.start, r.end) + } + } + }, D.QueryParser.parseField = function(e) { + var t = e.consumeLexeme(); + if (null != t) { + if (-1 == e.query.allFields.indexOf(t.str)) { + var n = e.query.allFields.map(function(e) { + return "'" + e + "'" + }).join(", "), + r = "unrecognised field '" + t.str + "', possible fields: " + n; + throw new D.QueryParseError(r, t.start, t.end) + } + e.currentClause.fields = [t.str]; + var i = e.peekLexeme(); + if (null == i) { + r = "expecting term, found nothing"; + throw new D.QueryParseError(r, t.start, t.end) + } + switch (i.type) { + case D.QueryLexer.TERM: + return D.QueryParser.parseTerm; + default: + r = "expecting term, found '" + i.type + "'"; + throw new D.QueryParseError(r, i.start, i.end) + } + } + }, D.QueryParser.parseTerm = function(e) { + var t = e.consumeLexeme(); + if (null != t) { + e.currentClause.term = t.str.toLowerCase(), -1 != t.str.indexOf("*") && (e.currentClause.usePipeline = !1); + var n = e.peekLexeme(); + if (null != n) switch (n.type) { + case D.QueryLexer.TERM: + return e.nextClause(), D.QueryParser.parseTerm; + case D.QueryLexer.FIELD: + return e.nextClause(), D.QueryParser.parseField; + case D.QueryLexer.EDIT_DISTANCE: + return D.QueryParser.parseEditDistance; + case D.QueryLexer.BOOST: + return D.QueryParser.parseBoost; + case D.QueryLexer.PRESENCE: + return e.nextClause(), D.QueryParser.parsePresence; + default: + var r = "Unexpected lexeme type '" + n.type + "'"; + throw new D.QueryParseError(r, n.start, n.end) + } else e.nextClause() + } + }, D.QueryParser.parseEditDistance = function(e) { + var t = e.consumeLexeme(); + if (null != t) { + var n = parseInt(t.str, 10); + if (isNaN(n)) { + var r = "edit distance must be numeric"; + throw new D.QueryParseError(r, t.start, t.end) + } + e.currentClause.editDistance = n; + var i = e.peekLexeme(); + if (null != i) switch (i.type) { + case D.QueryLexer.TERM: + return e.nextClause(), D.QueryParser.parseTerm; + case D.QueryLexer.FIELD: + return e.nextClause(), D.QueryParser.parseField; + case D.QueryLexer.EDIT_DISTANCE: + return D.QueryParser.parseEditDistance; + case D.QueryLexer.BOOST: + return D.QueryParser.parseBoost; + case D.QueryLexer.PRESENCE: + return e.nextClause(), D.QueryParser.parsePresence; + default: + r = "Unexpected lexeme type '" + i.type + "'"; + throw new D.QueryParseError(r, i.start, i.end) + } else e.nextClause() + } + }, D.QueryParser.parseBoost = function(e) { + var t = e.consumeLexeme(); + if (null != t) { + var n = parseInt(t.str, 10); + if (isNaN(n)) { + var r = "boost must be numeric"; + throw new D.QueryParseError(r, t.start, t.end) + } + e.currentClause.boost = n; + var i = e.peekLexeme(); + if (null != i) switch (i.type) { + case D.QueryLexer.TERM: + return e.nextClause(), D.QueryParser.parseTerm; + case D.QueryLexer.FIELD: + return e.nextClause(), D.QueryParser.parseField; + case D.QueryLexer.EDIT_DISTANCE: + return D.QueryParser.parseEditDistance; + case D.QueryLexer.BOOST: + return D.QueryParser.parseBoost; + case D.QueryLexer.PRESENCE: + return e.nextClause(), D.QueryParser.parsePresence; + default: + r = "Unexpected lexeme type '" + i.type + "'"; + throw new D.QueryParseError(r, i.start, i.end) + } else e.nextClause() + } + }, void 0 === (c = "function" == typeof(s = function() { + return D + }) ? s.call(o, a, o, i) : s) || (i.exports = c) + }() +}])); \ No newline at end of file diff --git a/_static/javascripts/f4pga.js b/_static/javascripts/f4pga.js new file mode 100644 index 000000000..42333c271 --- /dev/null +++ b/_static/javascripts/f4pga.js @@ -0,0 +1,48 @@ +// for click-to-copy +$(function() { + function styleCodeBlock() { + $('.highlight>pre').hover(function() { + if ($(this).parent().hasClass("linenodiv")) return; + $(this).attr('click-to-copy', 'click to copy...'); + }); + $('.highlight>pre').mouseup(function(){ + if ($(this).parent().hasClass("linenodiv")) return; + $(this).attr('click-to-copy', 'click to copy...'); + var selectionText = getSelectionText(); + if (selectionText.trim().length > 0) return; + var result = copyClipboard(this); + if (result) { + $(this).attr('click-to-copy', 'copied!'); + } + }); + } + + function getSelectionText() { + var text = ""; + if (window.getSelection) { + text = window.getSelection().toString(); + } else if (document.selection && document.selection.type != "Control") { + text = document.selection.createRange().text; + } + return text; + } + + function copyClipboard(selector) { + var body = document.body; + if(!body) return false; + + var $target = $(selector); + if ($target.length === 0) { return false; } + + var text = $target.text(); + var textarea = document.createElement('textarea'); + textarea.value = text; + document.body.appendChild(textarea); + textarea.select(); + var result = document.execCommand('copy'); + document.body.removeChild(textarea); + return result; + } + + styleCodeBlock(); +}); \ No newline at end of file diff --git a/_static/javascripts/lunr/lunr.da.js b/_static/javascripts/lunr/lunr.da.js new file mode 100644 index 000000000..34910dfe5 --- /dev/null +++ b/_static/javascripts/lunr/lunr.da.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var r,m,i;e.da=function(){this.pipeline.reset(),this.pipeline.add(e.da.trimmer,e.da.stopWordFilter,e.da.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.da.stemmer))},e.da.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.da.trimmer=e.trimmerSupport.generateTrimmer(e.da.wordCharacters),e.Pipeline.registerFunction(e.da.trimmer,"trimmer-da"),e.da.stemmer=(r=e.stemmerSupport.Among,m=e.stemmerSupport.SnowballProgram,i=new function(){var i,t,n,s=[new r("hed",-1,1),new r("ethed",0,1),new r("ered",-1,1),new r("e",-1,1),new r("erede",3,1),new r("ende",3,1),new r("erende",5,1),new r("ene",3,1),new r("erne",3,1),new r("ere",3,1),new r("en",-1,1),new r("heden",10,1),new r("eren",10,1),new r("er",-1,1),new r("heder",13,1),new r("erer",13,1),new r("s",-1,2),new r("heds",16,1),new r("es",16,1),new r("endes",18,1),new r("erendes",19,1),new r("enes",18,1),new r("ernes",18,1),new r("eres",18,1),new r("ens",16,1),new r("hedens",24,1),new r("erens",24,1),new r("ers",16,1),new r("ets",16,1),new r("erets",28,1),new r("et",-1,1),new r("eret",30,1)],o=[new r("gd",-1,-1),new r("dt",-1,-1),new r("gt",-1,-1),new r("kt",-1,-1)],a=[new r("ig",-1,1),new r("lig",0,1),new r("elig",1,1),new r("els",-1,1),new r("løst",-1,2)],d=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,48,0,128],u=[239,254,42,3,0,0,0,0,0,0,0,0,0,0,0,0,16],c=new m;function l(){var e,r=c.limit-c.cursor;c.cursor>=t&&(e=c.limit_backward,c.limit_backward=t,c.ket=c.cursor,c.find_among_b(o,4)?(c.bra=c.cursor,c.limit_backward=e,c.cursor=c.limit-r,c.cursor>c.limit_backward&&(c.cursor--,c.bra=c.cursor,c.slice_del())):c.limit_backward=e)}this.setCurrent=function(e){c.setCurrent(e)},this.getCurrent=function(){return c.getCurrent()},this.stem=function(){var e,r=c.cursor;return function(){var e,r=c.cursor+3;if(t=c.limit,0<=r&&r<=c.limit){for(i=r;;){if(e=c.cursor,c.in_grouping(d,97,248)){c.cursor=e;break}if((c.cursor=e)>=c.limit)return;c.cursor++}for(;!c.out_grouping(d,97,248);){if(c.cursor>=c.limit)return;c.cursor++}(t=c.cursor)=t&&(r=c.limit_backward,c.limit_backward=t,c.ket=c.cursor,e=c.find_among_b(s,32),c.limit_backward=r,e))switch(c.bra=c.cursor,e){case 1:c.slice_del();break;case 2:c.in_grouping_b(u,97,229)&&c.slice_del()}}(),c.cursor=c.limit,l(),c.cursor=c.limit,function(){var e,r,i,n=c.limit-c.cursor;if(c.ket=c.cursor,c.eq_s_b(2,"st")&&(c.bra=c.cursor,c.eq_s_b(2,"ig")&&c.slice_del()),c.cursor=c.limit-n,c.cursor>=t&&(r=c.limit_backward,c.limit_backward=t,c.ket=c.cursor,e=c.find_among_b(a,5),c.limit_backward=r,e))switch(c.bra=c.cursor,e){case 1:c.slice_del(),i=c.limit-c.cursor,l(),c.cursor=c.limit-i;break;case 2:c.slice_from("løs")}}(),c.cursor=c.limit,c.cursor>=t&&(e=c.limit_backward,c.limit_backward=t,c.ket=c.cursor,c.out_grouping_b(d,97,248)?(c.bra=c.cursor,n=c.slice_to(n),c.limit_backward=e,c.eq_v_b(n)&&c.slice_del()):c.limit_backward=e),!0}},function(e){return"function"==typeof e.update?e.update(function(e){return i.setCurrent(e),i.stem(),i.getCurrent()}):(i.setCurrent(e),i.stem(),i.getCurrent())}),e.Pipeline.registerFunction(e.da.stemmer,"stemmer-da"),e.da.stopWordFilter=e.generateStopWordFilter("ad af alle alt anden at blev blive bliver da de dem den denne der deres det dette dig din disse dog du efter eller en end er et for fra ham han hans har havde have hende hendes her hos hun hvad hvis hvor i ikke ind jeg jer jo kunne man mange med meget men mig min mine mit mod ned noget nogle nu når og også om op os over på selv sig sin sine sit skal skulle som sådan thi til ud under var vi vil ville vor være været".split(" ")),e.Pipeline.registerFunction(e.da.stopWordFilter,"stopWordFilter-da")}}); \ No newline at end of file diff --git a/_static/javascripts/lunr/lunr.de.js b/_static/javascripts/lunr/lunr.de.js new file mode 100644 index 000000000..1529892c8 --- /dev/null +++ b/_static/javascripts/lunr/lunr.de.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var _,p,r;e.de=function(){this.pipeline.reset(),this.pipeline.add(e.de.trimmer,e.de.stopWordFilter,e.de.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.de.stemmer))},e.de.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.de.trimmer=e.trimmerSupport.generateTrimmer(e.de.wordCharacters),e.Pipeline.registerFunction(e.de.trimmer,"trimmer-de"),e.de.stemmer=(_=e.stemmerSupport.Among,p=e.stemmerSupport.SnowballProgram,r=new function(){var r,n,i,s=[new _("",-1,6),new _("U",0,2),new _("Y",0,1),new _("ä",0,3),new _("ö",0,4),new _("ü",0,5)],o=[new _("e",-1,2),new _("em",-1,1),new _("en",-1,2),new _("ern",-1,1),new _("er",-1,1),new _("s",-1,3),new _("es",5,2)],c=[new _("en",-1,1),new _("er",-1,1),new _("st",-1,2),new _("est",2,1)],u=[new _("ig",-1,1),new _("lich",-1,1)],a=[new _("end",-1,1),new _("ig",-1,2),new _("ung",-1,1),new _("lich",-1,3),new _("isch",-1,2),new _("ik",-1,2),new _("heit",-1,3),new _("keit",-1,4)],t=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,8,0,32,8],d=[117,30,5],l=[117,30,4],m=new p;function h(e,r,n){return!(!m.eq_s(1,e)||(m.ket=m.cursor,!m.in_grouping(t,97,252)))&&(m.slice_from(r),m.cursor=n,!0)}function w(){for(;!m.in_grouping(t,97,252);){if(m.cursor>=m.limit)return!0;m.cursor++}for(;!m.out_grouping(t,97,252);){if(m.cursor>=m.limit)return!0;m.cursor++}return!1}function f(){return i<=m.cursor}function b(){return n<=m.cursor}this.setCurrent=function(e){m.setCurrent(e)},this.getCurrent=function(){return m.getCurrent()},this.stem=function(){var e=m.cursor;return function(){for(var e,r,n,i,s=m.cursor;;)if(e=m.cursor,m.bra=e,m.eq_s(1,"ß"))m.ket=m.cursor,m.slice_from("ss");else{if(e>=m.limit)break;m.cursor=e+1}for(m.cursor=s;;)for(r=m.cursor;;){if(n=m.cursor,m.in_grouping(t,97,252)){if(i=m.cursor,m.bra=i,h("u","U",n))break;if(m.cursor=i,h("y","Y",n))break}if(n>=m.limit)return m.cursor=r;m.cursor=n+1}}(),m.cursor=e,function(){i=m.limit,n=i;var e=m.cursor+3;0<=e&&e<=m.limit&&(r=e,w()||((i=m.cursor)=m.limit)return;m.cursor++}}}(),!0}},function(e){return"function"==typeof e.update?e.update(function(e){return r.setCurrent(e),r.stem(),r.getCurrent()}):(r.setCurrent(e),r.stem(),r.getCurrent())}),e.Pipeline.registerFunction(e.de.stemmer,"stemmer-de"),e.de.stopWordFilter=e.generateStopWordFilter("aber alle allem allen aller alles als also am an ander andere anderem anderen anderer anderes anderm andern anderr anders auch auf aus bei bin bis bist da damit dann das dasselbe dazu daß dein deine deinem deinen deiner deines dem demselben den denn denselben der derer derselbe derselben des desselben dessen dich die dies diese dieselbe dieselben diesem diesen dieser dieses dir doch dort du durch ein eine einem einen einer eines einig einige einigem einigen einiger einiges einmal er es etwas euch euer eure eurem euren eurer eures für gegen gewesen hab habe haben hat hatte hatten hier hin hinter ich ihm ihn ihnen ihr ihre ihrem ihren ihrer ihres im in indem ins ist jede jedem jeden jeder jedes jene jenem jenen jener jenes jetzt kann kein keine keinem keinen keiner keines können könnte machen man manche manchem manchen mancher manches mein meine meinem meinen meiner meines mich mir mit muss musste nach nicht nichts noch nun nur ob oder ohne sehr sein seine seinem seinen seiner seines selbst sich sie sind so solche solchem solchen solcher solches soll sollte sondern sonst um und uns unse unsem unsen unser unses unter viel vom von vor war waren warst was weg weil weiter welche welchem welchen welcher welches wenn werde werden wie wieder will wir wird wirst wo wollen wollte während würde würden zu zum zur zwar zwischen über".split(" ")),e.Pipeline.registerFunction(e.de.stopWordFilter,"stopWordFilter-de")}}); \ No newline at end of file diff --git a/_static/javascripts/lunr/lunr.du.js b/_static/javascripts/lunr/lunr.du.js new file mode 100644 index 000000000..52632004a --- /dev/null +++ b/_static/javascripts/lunr/lunr.du.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var v,q,r;console.warn('[Lunr Languages] Please use the "nl" instead of the "du". The "nl" code is the standard code for Dutch language, and "du" will be removed in the next major versions.'),e.du=function(){this.pipeline.reset(),this.pipeline.add(e.du.trimmer,e.du.stopWordFilter,e.du.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.du.stemmer))},e.du.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.du.trimmer=e.trimmerSupport.generateTrimmer(e.du.wordCharacters),e.Pipeline.registerFunction(e.du.trimmer,"trimmer-du"),e.du.stemmer=(v=e.stemmerSupport.Among,q=e.stemmerSupport.SnowballProgram,r=new function(){var r,i,u,o=[new v("",-1,6),new v("á",0,1),new v("ä",0,1),new v("é",0,2),new v("ë",0,2),new v("í",0,3),new v("ï",0,3),new v("ó",0,4),new v("ö",0,4),new v("ú",0,5),new v("ü",0,5)],n=[new v("",-1,3),new v("I",0,2),new v("Y",0,1)],t=[new v("dd",-1,-1),new v("kk",-1,-1),new v("tt",-1,-1)],c=[new v("ene",-1,2),new v("se",-1,3),new v("en",-1,2),new v("heden",2,1),new v("s",-1,3)],a=[new v("end",-1,1),new v("ig",-1,2),new v("ing",-1,1),new v("lijk",-1,3),new v("baar",-1,4),new v("bar",-1,5)],l=[new v("aa",-1,-1),new v("ee",-1,-1),new v("oo",-1,-1),new v("uu",-1,-1)],m=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128],d=[1,0,0,17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128],f=[17,67,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128],_=new q;function s(e){return(_.cursor=e)>=_.limit||(_.cursor++,!1)}function w(){for(;!_.in_grouping(m,97,232);){if(_.cursor>=_.limit)return!0;_.cursor++}for(;!_.out_grouping(m,97,232);){if(_.cursor>=_.limit)return!0;_.cursor++}return!1}function b(){return i<=_.cursor}function p(){return r<=_.cursor}function g(){var e=_.limit-_.cursor;_.find_among_b(t,3)&&(_.cursor=_.limit-e,_.ket=_.cursor,_.cursor>_.limit_backward&&(_.cursor--,_.bra=_.cursor,_.slice_del()))}function h(){var e;u=!1,_.ket=_.cursor,_.eq_s_b(1,"e")&&(_.bra=_.cursor,b()&&(e=_.limit-_.cursor,_.out_grouping_b(m,97,232)&&(_.cursor=_.limit-e,_.slice_del(),u=!0,g())))}function k(){var e;b()&&(e=_.limit-_.cursor,_.out_grouping_b(m,97,232)&&(_.cursor=_.limit-e,_.eq_s_b(3,"gem")||(_.cursor=_.limit-e,_.slice_del(),g())))}this.setCurrent=function(e){_.setCurrent(e)},this.getCurrent=function(){return _.getCurrent()},this.stem=function(){var e=_.cursor;return function(){for(var e,r,i,n=_.cursor;;){if(_.bra=_.cursor,e=_.find_among(o,11))switch(_.ket=_.cursor,e){case 1:_.slice_from("a");continue;case 2:_.slice_from("e");continue;case 3:_.slice_from("i");continue;case 4:_.slice_from("o");continue;case 5:_.slice_from("u");continue;case 6:if(_.cursor>=_.limit)break;_.cursor++;continue}break}for(_.cursor=n,_.bra=n,_.eq_s(1,"y")?(_.ket=_.cursor,_.slice_from("Y")):_.cursor=n;;)if(r=_.cursor,_.in_grouping(m,97,232)){if(i=_.cursor,_.bra=i,_.eq_s(1,"i"))_.ket=_.cursor,_.in_grouping(m,97,232)&&(_.slice_from("I"),_.cursor=r);else if(_.cursor=i,_.eq_s(1,"y"))_.ket=_.cursor,_.slice_from("Y"),_.cursor=r;else if(s(r))break}else if(s(r))break}(),_.cursor=e,i=_.limit,r=i,w()||((i=_.cursor)<3&&(i=3),w()||(r=_.cursor)),_.limit_backward=e,_.cursor=_.limit,function(){var e,r,i,n,o,t,s=_.limit-_.cursor;if(_.ket=_.cursor,e=_.find_among_b(c,5))switch(_.bra=_.cursor,e){case 1:b()&&_.slice_from("heid");break;case 2:k();break;case 3:b()&&_.out_grouping_b(f,97,232)&&_.slice_del()}if(_.cursor=_.limit-s,h(),_.cursor=_.limit-s,_.ket=_.cursor,_.eq_s_b(4,"heid")&&(_.bra=_.cursor,p()&&(r=_.limit-_.cursor,_.eq_s_b(1,"c")||(_.cursor=_.limit-r,_.slice_del(),_.ket=_.cursor,_.eq_s_b(2,"en")&&(_.bra=_.cursor,k())))),_.cursor=_.limit-s,_.ket=_.cursor,e=_.find_among_b(a,6))switch(_.bra=_.cursor,e){case 1:if(p()){if(_.slice_del(),i=_.limit-_.cursor,_.ket=_.cursor,_.eq_s_b(2,"ig")&&(_.bra=_.cursor,p()&&(n=_.limit-_.cursor,!_.eq_s_b(1,"e")))){_.cursor=_.limit-n,_.slice_del();break}_.cursor=_.limit-i,g()}break;case 2:p()&&(o=_.limit-_.cursor,_.eq_s_b(1,"e")||(_.cursor=_.limit-o,_.slice_del()));break;case 3:p()&&(_.slice_del(),h());break;case 4:p()&&_.slice_del();break;case 5:p()&&u&&_.slice_del()}_.cursor=_.limit-s,_.out_grouping_b(d,73,232)&&(t=_.limit-_.cursor,_.find_among_b(l,4)&&_.out_grouping_b(m,97,232)&&(_.cursor=_.limit-t,_.ket=_.cursor,_.cursor>_.limit_backward&&(_.cursor--,_.bra=_.cursor,_.slice_del())))}(),_.cursor=_.limit_backward,function(){for(var e;;)if(_.bra=_.cursor,e=_.find_among(n,3))switch(_.ket=_.cursor,e){case 1:_.slice_from("y");break;case 2:_.slice_from("i");break;case 3:if(_.cursor>=_.limit)return;_.cursor++}}(),!0}},function(e){return"function"==typeof e.update?e.update(function(e){return r.setCurrent(e),r.stem(),r.getCurrent()}):(r.setCurrent(e),r.stem(),r.getCurrent())}),e.Pipeline.registerFunction(e.du.stemmer,"stemmer-du"),e.du.stopWordFilter=e.generateStopWordFilter(" aan al alles als altijd andere ben bij daar dan dat de der deze die dit doch doen door dus een eens en er ge geen geweest haar had heb hebben heeft hem het hier hij hoe hun iemand iets ik in is ja je kan kon kunnen maar me meer men met mij mijn moet na naar niet niets nog nu of om omdat onder ons ook op over reeds te tegen toch toen tot u uit uw van veel voor want waren was wat werd wezen wie wil worden wordt zal ze zelf zich zij zijn zo zonder zou".split(" ")),e.Pipeline.registerFunction(e.du.stopWordFilter,"stopWordFilter-du")}}); \ No newline at end of file diff --git a/_static/javascripts/lunr/lunr.es.js b/_static/javascripts/lunr/lunr.es.js new file mode 100644 index 000000000..9de6c09cb --- /dev/null +++ b/_static/javascripts/lunr/lunr.es.js @@ -0,0 +1 @@ +!function(e,s){"function"==typeof define&&define.amd?define(s):"object"==typeof exports?module.exports=s():s()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var C,P,s;e.es=function(){this.pipeline.reset(),this.pipeline.add(e.es.trimmer,e.es.stopWordFilter,e.es.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.es.stemmer))},e.es.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.es.trimmer=e.trimmerSupport.generateTrimmer(e.es.wordCharacters),e.Pipeline.registerFunction(e.es.trimmer,"trimmer-es"),e.es.stemmer=(C=e.stemmerSupport.Among,P=e.stemmerSupport.SnowballProgram,s=new function(){var r,n,i,a=[new C("",-1,6),new C("á",0,1),new C("é",0,2),new C("í",0,3),new C("ó",0,4),new C("ú",0,5)],t=[new C("la",-1,-1),new C("sela",0,-1),new C("le",-1,-1),new C("me",-1,-1),new C("se",-1,-1),new C("lo",-1,-1),new C("selo",5,-1),new C("las",-1,-1),new C("selas",7,-1),new C("les",-1,-1),new C("los",-1,-1),new C("selos",10,-1),new C("nos",-1,-1)],o=[new C("ando",-1,6),new C("iendo",-1,6),new C("yendo",-1,7),new C("ándo",-1,2),new C("iéndo",-1,1),new C("ar",-1,6),new C("er",-1,6),new C("ir",-1,6),new C("ár",-1,3),new C("ér",-1,4),new C("ír",-1,5)],s=[new C("ic",-1,-1),new C("ad",-1,-1),new C("os",-1,-1),new C("iv",-1,1)],u=[new C("able",-1,1),new C("ible",-1,1),new C("ante",-1,1)],w=[new C("ic",-1,1),new C("abil",-1,1),new C("iv",-1,1)],c=[new C("ica",-1,1),new C("ancia",-1,2),new C("encia",-1,5),new C("adora",-1,2),new C("osa",-1,1),new C("ista",-1,1),new C("iva",-1,9),new C("anza",-1,1),new C("logía",-1,3),new C("idad",-1,8),new C("able",-1,1),new C("ible",-1,1),new C("ante",-1,2),new C("mente",-1,7),new C("amente",13,6),new C("ación",-1,2),new C("ución",-1,4),new C("ico",-1,1),new C("ismo",-1,1),new C("oso",-1,1),new C("amiento",-1,1),new C("imiento",-1,1),new C("ivo",-1,9),new C("ador",-1,2),new C("icas",-1,1),new C("ancias",-1,2),new C("encias",-1,5),new C("adoras",-1,2),new C("osas",-1,1),new C("istas",-1,1),new C("ivas",-1,9),new C("anzas",-1,1),new C("logías",-1,3),new C("idades",-1,8),new C("ables",-1,1),new C("ibles",-1,1),new C("aciones",-1,2),new C("uciones",-1,4),new C("adores",-1,2),new C("antes",-1,2),new C("icos",-1,1),new C("ismos",-1,1),new C("osos",-1,1),new C("amientos",-1,1),new C("imientos",-1,1),new C("ivos",-1,9)],m=[new C("ya",-1,1),new C("ye",-1,1),new C("yan",-1,1),new C("yen",-1,1),new C("yeron",-1,1),new C("yendo",-1,1),new C("yo",-1,1),new C("yas",-1,1),new C("yes",-1,1),new C("yais",-1,1),new C("yamos",-1,1),new C("yó",-1,1)],l=[new C("aba",-1,2),new C("ada",-1,2),new C("ida",-1,2),new C("ara",-1,2),new C("iera",-1,2),new C("ía",-1,2),new C("aría",5,2),new C("ería",5,2),new C("iría",5,2),new C("ad",-1,2),new C("ed",-1,2),new C("id",-1,2),new C("ase",-1,2),new C("iese",-1,2),new C("aste",-1,2),new C("iste",-1,2),new C("an",-1,2),new C("aban",16,2),new C("aran",16,2),new C("ieran",16,2),new C("ían",16,2),new C("arían",20,2),new C("erían",20,2),new C("irían",20,2),new C("en",-1,1),new C("asen",24,2),new C("iesen",24,2),new C("aron",-1,2),new C("ieron",-1,2),new C("arán",-1,2),new C("erán",-1,2),new C("irán",-1,2),new C("ado",-1,2),new C("ido",-1,2),new C("ando",-1,2),new C("iendo",-1,2),new C("ar",-1,2),new C("er",-1,2),new C("ir",-1,2),new C("as",-1,2),new C("abas",39,2),new C("adas",39,2),new C("idas",39,2),new C("aras",39,2),new C("ieras",39,2),new C("ías",39,2),new C("arías",45,2),new C("erías",45,2),new C("irías",45,2),new C("es",-1,1),new C("ases",49,2),new C("ieses",49,2),new C("abais",-1,2),new C("arais",-1,2),new C("ierais",-1,2),new C("íais",-1,2),new C("aríais",55,2),new C("eríais",55,2),new C("iríais",55,2),new C("aseis",-1,2),new C("ieseis",-1,2),new C("asteis",-1,2),new C("isteis",-1,2),new C("áis",-1,2),new C("éis",-1,1),new C("aréis",64,2),new C("eréis",64,2),new C("iréis",64,2),new C("ados",-1,2),new C("idos",-1,2),new C("amos",-1,2),new C("ábamos",70,2),new C("áramos",70,2),new C("iéramos",70,2),new C("íamos",70,2),new C("aríamos",74,2),new C("eríamos",74,2),new C("iríamos",74,2),new C("emos",-1,1),new C("aremos",78,2),new C("eremos",78,2),new C("iremos",78,2),new C("ásemos",78,2),new C("iésemos",78,2),new C("imos",-1,2),new C("arás",-1,2),new C("erás",-1,2),new C("irás",-1,2),new C("ís",-1,2),new C("ará",-1,2),new C("erá",-1,2),new C("irá",-1,2),new C("aré",-1,2),new C("eré",-1,2),new C("iré",-1,2),new C("ió",-1,2)],d=[new C("a",-1,1),new C("e",-1,2),new C("o",-1,1),new C("os",-1,1),new C("á",-1,1),new C("é",-1,2),new C("í",-1,1),new C("ó",-1,1)],b=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,1,17,4,10],f=new P;function _(){if(f.out_grouping(b,97,252)){for(;!f.in_grouping(b,97,252);){if(f.cursor>=f.limit)return!0;f.cursor++}return!1}return!0}function h(){var e,s=f.cursor;if(function(){if(f.in_grouping(b,97,252)){var e=f.cursor;if(_()){if(f.cursor=e,!f.in_grouping(b,97,252))return!0;for(;!f.out_grouping(b,97,252);){if(f.cursor>=f.limit)return!0;f.cursor++}}return!1}return!0}()){if(f.cursor=s,!f.out_grouping(b,97,252))return;if(e=f.cursor,_()){if(f.cursor=e,!f.in_grouping(b,97,252)||f.cursor>=f.limit)return;f.cursor++}}i=f.cursor}function v(){for(;!f.in_grouping(b,97,252);){if(f.cursor>=f.limit)return!1;f.cursor++}for(;!f.out_grouping(b,97,252);){if(f.cursor>=f.limit)return!1;f.cursor++}return!0}function p(){return i<=f.cursor}function g(){return r<=f.cursor}function k(e,s){if(!g())return!0;f.slice_del(),f.ket=f.cursor;var r=f.find_among_b(e,s);return r&&(f.bra=f.cursor,1==r&&g()&&f.slice_del()),!1}function y(e){return!g()||(f.slice_del(),f.ket=f.cursor,f.eq_s_b(2,e)&&(f.bra=f.cursor,g()&&f.slice_del()),!1)}function q(){var e;if(f.ket=f.cursor,e=f.find_among_b(c,46)){switch(f.bra=f.cursor,e){case 1:if(!g())return!1;f.slice_del();break;case 2:if(y("ic"))return!1;break;case 3:if(!g())return!1;f.slice_from("log");break;case 4:if(!g())return!1;f.slice_from("u");break;case 5:if(!g())return!1;f.slice_from("ente");break;case 6:if(!(n<=f.cursor))return!1;f.slice_del(),f.ket=f.cursor,(e=f.find_among_b(s,4))&&(f.bra=f.cursor,g()&&(f.slice_del(),1==e&&(f.ket=f.cursor,f.eq_s_b(2,"at")&&(f.bra=f.cursor,g()&&f.slice_del()))));break;case 7:if(k(u,3))return!1;break;case 8:if(k(w,3))return!1;break;case 9:if(y("at"))return!1}return!0}return!1}this.setCurrent=function(e){f.setCurrent(e)},this.getCurrent=function(){return f.getCurrent()},this.stem=function(){var e,s=f.cursor;return e=f.cursor,i=f.limit,r=n=i,h(),f.cursor=e,v()&&(n=f.cursor,v()&&(r=f.cursor)),f.limit_backward=s,f.cursor=f.limit,function(){var e;if(f.ket=f.cursor,f.find_among_b(t,13)&&(f.bra=f.cursor,(e=f.find_among_b(o,11))&&p()))switch(e){case 1:f.bra=f.cursor,f.slice_from("iendo");break;case 2:f.bra=f.cursor,f.slice_from("ando");break;case 3:f.bra=f.cursor,f.slice_from("ar");break;case 4:f.bra=f.cursor,f.slice_from("er");break;case 5:f.bra=f.cursor,f.slice_from("ir");break;case 6:f.slice_del();break;case 7:f.eq_s_b(1,"u")&&f.slice_del()}}(),f.cursor=f.limit,q()||(f.cursor=f.limit,function(){var e,s;if(f.cursor>=i&&(s=f.limit_backward,f.limit_backward=i,f.ket=f.cursor,e=f.find_among_b(m,12),f.limit_backward=s,e)){if(f.bra=f.cursor,1==e){if(!f.eq_s_b(1,"u"))return!1;f.slice_del()}return!0}return!1}()||(f.cursor=f.limit,function(){var e,s,r,n;if(f.cursor>=i&&(s=f.limit_backward,f.limit_backward=i,f.ket=f.cursor,e=f.find_among_b(l,96),f.limit_backward=s,e))switch(f.bra=f.cursor,e){case 1:r=f.limit-f.cursor,f.eq_s_b(1,"u")?(n=f.limit-f.cursor,f.eq_s_b(1,"g")?f.cursor=f.limit-n:f.cursor=f.limit-r):f.cursor=f.limit-r,f.bra=f.cursor;case 2:f.slice_del()}}())),f.cursor=f.limit,function(){var e,s;if(f.ket=f.cursor,e=f.find_among_b(d,8))switch(f.bra=f.cursor,e){case 1:p()&&f.slice_del();break;case 2:p()&&(f.slice_del(),f.ket=f.cursor,f.eq_s_b(1,"u")&&(f.bra=f.cursor,s=f.limit-f.cursor,f.eq_s_b(1,"g")&&(f.cursor=f.limit-s,p()&&f.slice_del())))}}(),f.cursor=f.limit_backward,function(){for(var e;;){if(f.bra=f.cursor,e=f.find_among(a,6))switch(f.ket=f.cursor,e){case 1:f.slice_from("a");continue;case 2:f.slice_from("e");continue;case 3:f.slice_from("i");continue;case 4:f.slice_from("o");continue;case 5:f.slice_from("u");continue;case 6:if(f.cursor>=f.limit)break;f.cursor++;continue}break}}(),!0}},function(e){return"function"==typeof e.update?e.update(function(e){return s.setCurrent(e),s.stem(),s.getCurrent()}):(s.setCurrent(e),s.stem(),s.getCurrent())}),e.Pipeline.registerFunction(e.es.stemmer,"stemmer-es"),e.es.stopWordFilter=e.generateStopWordFilter("a al algo algunas algunos ante antes como con contra cual cuando de del desde donde durante e el ella ellas ellos en entre era erais eran eras eres es esa esas ese eso esos esta estaba estabais estaban estabas estad estada estadas estado estados estamos estando estar estaremos estará estarán estarás estaré estaréis estaría estaríais estaríamos estarían estarías estas este estemos esto estos estoy estuve estuviera estuvierais estuvieran estuvieras estuvieron estuviese estuvieseis estuviesen estuvieses estuvimos estuviste estuvisteis estuviéramos estuviésemos estuvo está estábamos estáis están estás esté estéis estén estés fue fuera fuerais fueran fueras fueron fuese fueseis fuesen fueses fui fuimos fuiste fuisteis fuéramos fuésemos ha habida habidas habido habidos habiendo habremos habrá habrán habrás habré habréis habría habríais habríamos habrían habrías habéis había habíais habíamos habían habías han has hasta hay haya hayamos hayan hayas hayáis he hemos hube hubiera hubierais hubieran hubieras hubieron hubiese hubieseis hubiesen hubieses hubimos hubiste hubisteis hubiéramos hubiésemos hubo la las le les lo los me mi mis mucho muchos muy más mí mía mías mío míos nada ni no nos nosotras nosotros nuestra nuestras nuestro nuestros o os otra otras otro otros para pero poco por porque que quien quienes qué se sea seamos sean seas seremos será serán serás seré seréis sería seríais seríamos serían serías seáis sido siendo sin sobre sois somos son soy su sus suya suyas suyo suyos sí también tanto te tendremos tendrá tendrán tendrás tendré tendréis tendría tendríais tendríamos tendrían tendrías tened tenemos tenga tengamos tengan tengas tengo tengáis tenida tenidas tenido tenidos teniendo tenéis tenía teníais teníamos tenían tenías ti tiene tienen tienes todo todos tu tus tuve tuviera tuvierais tuvieran tuvieras tuvieron tuviese tuvieseis tuviesen tuvieses tuvimos tuviste tuvisteis tuviéramos tuviésemos tuvo tuya tuyas tuyo tuyos tú un una uno unos vosotras vosotros vuestra vuestras vuestro vuestros y ya yo él éramos".split(" ")),e.Pipeline.registerFunction(e.es.stopWordFilter,"stopWordFilter-es")}}); \ No newline at end of file diff --git a/_static/javascripts/lunr/lunr.fi.js b/_static/javascripts/lunr/lunr.fi.js new file mode 100644 index 000000000..2f9bf5aeb --- /dev/null +++ b/_static/javascripts/lunr/lunr.fi.js @@ -0,0 +1 @@ +!function(i,e){"function"==typeof define&&define.amd?define(e):"object"==typeof exports?module.exports=e():e()(i.lunr)}(this,function(){return function(i){if(void 0===i)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===i.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var v,C,e;i.fi=function(){this.pipeline.reset(),this.pipeline.add(i.fi.trimmer,i.fi.stopWordFilter,i.fi.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(i.fi.stemmer))},i.fi.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",i.fi.trimmer=i.trimmerSupport.generateTrimmer(i.fi.wordCharacters),i.Pipeline.registerFunction(i.fi.trimmer,"trimmer-fi"),i.fi.stemmer=(v=i.stemmerSupport.Among,C=i.stemmerSupport.SnowballProgram,e=new function(){var n,t,l,o,r=[new v("pa",-1,1),new v("sti",-1,2),new v("kaan",-1,1),new v("han",-1,1),new v("kin",-1,1),new v("hän",-1,1),new v("kään",-1,1),new v("ko",-1,1),new v("pä",-1,1),new v("kö",-1,1)],s=[new v("lla",-1,-1),new v("na",-1,-1),new v("ssa",-1,-1),new v("ta",-1,-1),new v("lta",3,-1),new v("sta",3,-1)],a=[new v("llä",-1,-1),new v("nä",-1,-1),new v("ssä",-1,-1),new v("tä",-1,-1),new v("ltä",3,-1),new v("stä",3,-1)],u=[new v("lle",-1,-1),new v("ine",-1,-1)],c=[new v("nsa",-1,3),new v("mme",-1,3),new v("nne",-1,3),new v("ni",-1,2),new v("si",-1,1),new v("an",-1,4),new v("en",-1,6),new v("än",-1,5),new v("nsä",-1,3)],i=[new v("aa",-1,-1),new v("ee",-1,-1),new v("ii",-1,-1),new v("oo",-1,-1),new v("uu",-1,-1),new v("ää",-1,-1),new v("öö",-1,-1)],m=[new v("a",-1,8),new v("lla",0,-1),new v("na",0,-1),new v("ssa",0,-1),new v("ta",0,-1),new v("lta",4,-1),new v("sta",4,-1),new v("tta",4,9),new v("lle",-1,-1),new v("ine",-1,-1),new v("ksi",-1,-1),new v("n",-1,7),new v("han",11,1),new v("den",11,-1,q),new v("seen",11,-1,j),new v("hen",11,2),new v("tten",11,-1,q),new v("hin",11,3),new v("siin",11,-1,q),new v("hon",11,4),new v("hän",11,5),new v("hön",11,6),new v("ä",-1,8),new v("llä",22,-1),new v("nä",22,-1),new v("ssä",22,-1),new v("tä",22,-1),new v("ltä",26,-1),new v("stä",26,-1),new v("ttä",26,9)],w=[new v("eja",-1,-1),new v("mma",-1,1),new v("imma",1,-1),new v("mpa",-1,1),new v("impa",3,-1),new v("mmi",-1,1),new v("immi",5,-1),new v("mpi",-1,1),new v("impi",7,-1),new v("ejä",-1,-1),new v("mmä",-1,1),new v("immä",10,-1),new v("mpä",-1,1),new v("impä",12,-1)],_=[new v("i",-1,-1),new v("j",-1,-1)],k=[new v("mma",-1,1),new v("imma",0,-1)],b=[17,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8],d=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,8,0,32],e=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,32],f=[17,97,24,1,0,0,0,0,0,0,0,0,0,0,0,0,8,0,32],h=new C;function p(){for(var i;i=h.cursor,!h.in_grouping(d,97,246);){if((h.cursor=i)>=h.limit)return!0;h.cursor++}for(h.cursor=i;!h.out_grouping(d,97,246);){if(h.cursor>=h.limit)return!0;h.cursor++}return!1}function g(){var i,e;if(h.cursor>=o)if(e=h.limit_backward,h.limit_backward=o,h.ket=h.cursor,i=h.find_among_b(r,10)){switch(h.bra=h.cursor,h.limit_backward=e,i){case 1:if(!h.in_grouping_b(f,97,246))return;break;case 2:if(!(l<=h.cursor))return}h.slice_del()}else h.limit_backward=e}function j(){return h.find_among_b(i,7)}function q(){return h.eq_s_b(1,"i")&&h.in_grouping_b(e,97,246)}this.setCurrent=function(i){h.setCurrent(i)},this.getCurrent=function(){return h.getCurrent()},this.stem=function(){var i,e=h.cursor;return o=h.limit,l=o,p()||(o=h.cursor,p()||(l=h.cursor)),n=!1,h.limit_backward=e,h.cursor=h.limit,g(),h.cursor=h.limit,function(){var i,e,r;if(h.cursor>=o)if(e=h.limit_backward,h.limit_backward=o,h.ket=h.cursor,i=h.find_among_b(c,9))switch(h.bra=h.cursor,h.limit_backward=e,i){case 1:r=h.limit-h.cursor,h.eq_s_b(1,"k")||(h.cursor=h.limit-r,h.slice_del());break;case 2:h.slice_del(),h.ket=h.cursor,h.eq_s_b(3,"kse")&&(h.bra=h.cursor,h.slice_from("ksi"));break;case 3:h.slice_del();break;case 4:h.find_among_b(s,6)&&h.slice_del();break;case 5:h.find_among_b(a,6)&&h.slice_del();break;case 6:h.find_among_b(u,2)&&h.slice_del()}else h.limit_backward=e}(),h.cursor=h.limit,function(){var i,e,r;if(h.cursor>=o)if(e=h.limit_backward,h.limit_backward=o,h.ket=h.cursor,i=h.find_among_b(m,30)){switch(h.bra=h.cursor,h.limit_backward=e,i){case 1:if(!h.eq_s_b(1,"a"))return;break;case 2:case 9:if(!h.eq_s_b(1,"e"))return;break;case 3:if(!h.eq_s_b(1,"i"))return;break;case 4:if(!h.eq_s_b(1,"o"))return;break;case 5:if(!h.eq_s_b(1,"ä"))return;break;case 6:if(!h.eq_s_b(1,"ö"))return;break;case 7:if(r=h.limit-h.cursor,!j()&&(h.cursor=h.limit-r,!h.eq_s_b(2,"ie"))){h.cursor=h.limit-r;break}if(h.cursor=h.limit-r,h.cursor<=h.limit_backward){h.cursor=h.limit-r;break}h.cursor--,h.bra=h.cursor;break;case 8:if(!h.in_grouping_b(d,97,246)||!h.out_grouping_b(d,97,246))return}h.slice_del(),n=!0}else h.limit_backward=e}(),h.cursor=h.limit,function(){var i,e,r;if(h.cursor>=l)if(e=h.limit_backward,h.limit_backward=l,h.ket=h.cursor,i=h.find_among_b(w,14)){if(h.bra=h.cursor,h.limit_backward=e,1==i){if(r=h.limit-h.cursor,h.eq_s_b(2,"po"))return;h.cursor=h.limit-r}h.slice_del()}else h.limit_backward=e}(),h.cursor=h.limit,h.cursor=(n?h.cursor>=o&&(i=h.limit_backward,h.limit_backward=o,h.ket=h.cursor,h.find_among_b(_,2)?(h.bra=h.cursor,h.limit_backward=i,h.slice_del()):h.limit_backward=i):(h.cursor=h.limit,function(){var i,e,r,n,t,s;if(h.cursor>=o){if(e=h.limit_backward,h.limit_backward=o,h.ket=h.cursor,h.eq_s_b(1,"t")&&(h.bra=h.cursor,r=h.limit-h.cursor,h.in_grouping_b(d,97,246)&&(h.cursor=h.limit-r,h.slice_del(),h.limit_backward=e,n=h.limit-h.cursor,h.cursor>=l&&(h.cursor=l,t=h.limit_backward,h.limit_backward=h.cursor,h.cursor=h.limit-n,h.ket=h.cursor,i=h.find_among_b(k,2))))){if(h.bra=h.cursor,h.limit_backward=t,1==i){if(s=h.limit-h.cursor,h.eq_s_b(2,"po"))return;h.cursor=h.limit-s}return h.slice_del()}h.limit_backward=e}}()),h.limit),function(){var i,e,r,n;if(h.cursor>=o){for(i=h.limit_backward,h.limit_backward=o,e=h.limit-h.cursor,j()&&(h.cursor=h.limit-e,h.ket=h.cursor,h.cursor>h.limit_backward&&(h.cursor--,h.bra=h.cursor,h.slice_del())),h.cursor=h.limit-e,h.ket=h.cursor,h.in_grouping_b(b,97,228)&&(h.bra=h.cursor,h.out_grouping_b(d,97,246)&&h.slice_del()),h.cursor=h.limit-e,h.ket=h.cursor,h.eq_s_b(1,"j")&&(h.bra=h.cursor,r=h.limit-h.cursor,h.eq_s_b(1,"o")?h.slice_del():(h.cursor=h.limit-r,h.eq_s_b(1,"u")&&h.slice_del())),h.cursor=h.limit-e,h.ket=h.cursor,h.eq_s_b(1,"o")&&(h.bra=h.cursor,h.eq_s_b(1,"j")&&h.slice_del()),h.cursor=h.limit-e,h.limit_backward=i;;){if(n=h.limit-h.cursor,h.out_grouping_b(d,97,246)){h.cursor=h.limit-n;break}if(h.cursor=h.limit-n,h.cursor<=h.limit_backward)return;h.cursor--}h.ket=h.cursor,h.cursor>h.limit_backward&&(h.cursor--,h.bra=h.cursor,t=h.slice_to(),h.eq_v_b(t)&&h.slice_del())}}(),!0}},function(i){return"function"==typeof i.update?i.update(function(i){return e.setCurrent(i),e.stem(),e.getCurrent()}):(e.setCurrent(i),e.stem(),e.getCurrent())}),i.Pipeline.registerFunction(i.fi.stemmer,"stemmer-fi"),i.fi.stopWordFilter=i.generateStopWordFilter("ei eivät emme en et ette että he heidän heidät heihin heille heillä heiltä heissä heistä heitä hän häneen hänelle hänellä häneltä hänen hänessä hänestä hänet häntä itse ja johon joiden joihin joiksi joilla joille joilta joina joissa joista joita joka joksi jolla jolle jolta jona jonka jos jossa josta jota jotka kanssa keiden keihin keiksi keille keillä keiltä keinä keissä keistä keitä keneen keneksi kenelle kenellä keneltä kenen kenenä kenessä kenestä kenet ketkä ketkä ketä koska kuin kuka kun me meidän meidät meihin meille meillä meiltä meissä meistä meitä mihin miksi mikä mille millä miltä minkä minkä minua minulla minulle minulta minun minussa minusta minut minuun minä minä missä mistä mitkä mitä mukaan mutta ne niiden niihin niiksi niille niillä niiltä niin niin niinä niissä niistä niitä noiden noihin noiksi noilla noille noilta noin noina noissa noista noita nuo nyt näiden näihin näiksi näille näillä näiltä näinä näissä näistä näitä nämä ole olemme olen olet olette oli olimme olin olisi olisimme olisin olisit olisitte olisivat olit olitte olivat olla olleet ollut on ovat poikki se sekä sen siihen siinä siitä siksi sille sillä sillä siltä sinua sinulla sinulle sinulta sinun sinussa sinusta sinut sinuun sinä sinä sitä tai te teidän teidät teihin teille teillä teiltä teissä teistä teitä tuo tuohon tuoksi tuolla tuolle tuolta tuon tuona tuossa tuosta tuota tähän täksi tälle tällä tältä tämä tämän tänä tässä tästä tätä vaan vai vaikka yli".split(" ")),i.Pipeline.registerFunction(i.fi.stopWordFilter,"stopWordFilter-fi")}}); \ No newline at end of file diff --git a/_static/javascripts/lunr/lunr.fr.js b/_static/javascripts/lunr/lunr.fr.js new file mode 100644 index 000000000..078d0cab7 --- /dev/null +++ b/_static/javascripts/lunr/lunr.fr.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var r,y,s;e.fr=function(){this.pipeline.reset(),this.pipeline.add(e.fr.trimmer,e.fr.stopWordFilter,e.fr.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.fr.stemmer))},e.fr.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.fr.trimmer=e.trimmerSupport.generateTrimmer(e.fr.wordCharacters),e.Pipeline.registerFunction(e.fr.trimmer,"trimmer-fr"),e.fr.stemmer=(r=e.stemmerSupport.Among,y=e.stemmerSupport.SnowballProgram,s=new function(){var s,i,t,n=[new r("col",-1,-1),new r("par",-1,-1),new r("tap",-1,-1)],u=[new r("",-1,4),new r("I",0,1),new r("U",0,2),new r("Y",0,3)],o=[new r("iqU",-1,3),new r("abl",-1,3),new r("Ièr",-1,4),new r("ièr",-1,4),new r("eus",-1,2),new r("iv",-1,1)],c=[new r("ic",-1,2),new r("abil",-1,1),new r("iv",-1,3)],a=[new r("iqUe",-1,1),new r("atrice",-1,2),new r("ance",-1,1),new r("ence",-1,5),new r("logie",-1,3),new r("able",-1,1),new r("isme",-1,1),new r("euse",-1,11),new r("iste",-1,1),new r("ive",-1,8),new r("if",-1,8),new r("usion",-1,4),new r("ation",-1,2),new r("ution",-1,4),new r("ateur",-1,2),new r("iqUes",-1,1),new r("atrices",-1,2),new r("ances",-1,1),new r("ences",-1,5),new r("logies",-1,3),new r("ables",-1,1),new r("ismes",-1,1),new r("euses",-1,11),new r("istes",-1,1),new r("ives",-1,8),new r("ifs",-1,8),new r("usions",-1,4),new r("ations",-1,2),new r("utions",-1,4),new r("ateurs",-1,2),new r("ments",-1,15),new r("ements",30,6),new r("issements",31,12),new r("ités",-1,7),new r("ment",-1,15),new r("ement",34,6),new r("issement",35,12),new r("amment",34,13),new r("emment",34,14),new r("aux",-1,10),new r("eaux",39,9),new r("eux",-1,1),new r("ité",-1,7)],l=[new r("ira",-1,1),new r("ie",-1,1),new r("isse",-1,1),new r("issante",-1,1),new r("i",-1,1),new r("irai",4,1),new r("ir",-1,1),new r("iras",-1,1),new r("ies",-1,1),new r("îmes",-1,1),new r("isses",-1,1),new r("issantes",-1,1),new r("îtes",-1,1),new r("is",-1,1),new r("irais",13,1),new r("issais",13,1),new r("irions",-1,1),new r("issions",-1,1),new r("irons",-1,1),new r("issons",-1,1),new r("issants",-1,1),new r("it",-1,1),new r("irait",21,1),new r("issait",21,1),new r("issant",-1,1),new r("iraIent",-1,1),new r("issaIent",-1,1),new r("irent",-1,1),new r("issent",-1,1),new r("iront",-1,1),new r("ît",-1,1),new r("iriez",-1,1),new r("issiez",-1,1),new r("irez",-1,1),new r("issez",-1,1)],w=[new r("a",-1,3),new r("era",0,2),new r("asse",-1,3),new r("ante",-1,3),new r("ée",-1,2),new r("ai",-1,3),new r("erai",5,2),new r("er",-1,2),new r("as",-1,3),new r("eras",8,2),new r("âmes",-1,3),new r("asses",-1,3),new r("antes",-1,3),new r("âtes",-1,3),new r("ées",-1,2),new r("ais",-1,3),new r("erais",15,2),new r("ions",-1,1),new r("erions",17,2),new r("assions",17,3),new r("erons",-1,2),new r("ants",-1,3),new r("és",-1,2),new r("ait",-1,3),new r("erait",23,2),new r("ant",-1,3),new r("aIent",-1,3),new r("eraIent",26,2),new r("èrent",-1,2),new r("assent",-1,3),new r("eront",-1,2),new r("ât",-1,3),new r("ez",-1,2),new r("iez",32,2),new r("eriez",33,2),new r("assiez",33,3),new r("erez",32,2),new r("é",-1,2)],f=[new r("e",-1,3),new r("Ière",0,2),new r("ière",0,2),new r("ion",-1,1),new r("Ier",-1,2),new r("ier",-1,2),new r("ë",-1,4)],m=[new r("ell",-1,-1),new r("eill",-1,-1),new r("enn",-1,-1),new r("onn",-1,-1),new r("ett",-1,-1)],_=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,128,130,103,8,5],b=[1,65,20,0,0,0,0,0,0,0,0,0,0,0,0,0,128],d=new y;function k(e,r,s){return!(!d.eq_s(1,e)||(d.ket=d.cursor,!d.in_grouping(_,97,251)))&&(d.slice_from(r),d.cursor=s,!0)}function p(e,r,s){return!!d.eq_s(1,e)&&(d.ket=d.cursor,d.slice_from(r),d.cursor=s,!0)}function g(){for(;!d.in_grouping(_,97,251);){if(d.cursor>=d.limit)return!0;d.cursor++}for(;!d.out_grouping(_,97,251);){if(d.cursor>=d.limit)return!0;d.cursor++}return!1}function q(){return t<=d.cursor}function v(){return i<=d.cursor}function h(){return s<=d.cursor}function z(){if(!function(){var e,r;if(d.ket=d.cursor,e=d.find_among_b(a,43)){switch(d.bra=d.cursor,e){case 1:if(!h())return!1;d.slice_del();break;case 2:if(!h())return!1;d.slice_del(),d.ket=d.cursor,d.eq_s_b(2,"ic")&&(d.bra=d.cursor,h()?d.slice_del():d.slice_from("iqU"));break;case 3:if(!h())return!1;d.slice_from("log");break;case 4:if(!h())return!1;d.slice_from("u");break;case 5:if(!h())return!1;d.slice_from("ent");break;case 6:if(!q())return!1;if(d.slice_del(),d.ket=d.cursor,e=d.find_among_b(o,6))switch(d.bra=d.cursor,e){case 1:h()&&(d.slice_del(),d.ket=d.cursor,d.eq_s_b(2,"at")&&(d.bra=d.cursor,h()&&d.slice_del()));break;case 2:h()?d.slice_del():v()&&d.slice_from("eux");break;case 3:h()&&d.slice_del();break;case 4:q()&&d.slice_from("i")}break;case 7:if(!h())return!1;if(d.slice_del(),d.ket=d.cursor,e=d.find_among_b(c,3))switch(d.bra=d.cursor,e){case 1:h()?d.slice_del():d.slice_from("abl");break;case 2:h()?d.slice_del():d.slice_from("iqU");break;case 3:h()&&d.slice_del()}break;case 8:if(!h())return!1;if(d.slice_del(),d.ket=d.cursor,d.eq_s_b(2,"at")&&(d.bra=d.cursor,h()&&(d.slice_del(),d.ket=d.cursor,d.eq_s_b(2,"ic")))){d.bra=d.cursor,h()?d.slice_del():d.slice_from("iqU");break}break;case 9:d.slice_from("eau");break;case 10:if(!v())return!1;d.slice_from("al");break;case 11:if(h())d.slice_del();else{if(!v())return!1;d.slice_from("eux")}break;case 12:if(!v()||!d.out_grouping_b(_,97,251))return!1;d.slice_del();break;case 13:return q()&&d.slice_from("ant"),!1;case 14:return q()&&d.slice_from("ent"),!1;case 15:return r=d.limit-d.cursor,d.in_grouping_b(_,97,251)&&q()&&(d.cursor=d.limit-r,d.slice_del()),!1}return!0}return!1}()&&(d.cursor=d.limit,!function(){var e,r;if(d.cursor=t){if(s=d.limit_backward,d.limit_backward=t,d.ket=d.cursor,e=d.find_among_b(f,7))switch(d.bra=d.cursor,e){case 1:if(h()){if(i=d.limit-d.cursor,!d.eq_s_b(1,"s")&&(d.cursor=d.limit-i,!d.eq_s_b(1,"t")))break;d.slice_del()}break;case 2:d.slice_from("i");break;case 3:d.slice_del();break;case 4:d.eq_s_b(2,"gu")&&d.slice_del()}d.limit_backward=s}}();d.cursor=d.limit,d.ket=d.cursor,d.eq_s_b(1,"Y")?(d.bra=d.cursor,d.slice_from("i")):(d.cursor=d.limit,d.eq_s_b(1,"ç")&&(d.bra=d.cursor,d.slice_from("c")))}this.setCurrent=function(e){d.setCurrent(e)},this.getCurrent=function(){return d.getCurrent()},this.stem=function(){var e,r=d.cursor;return function(){for(var e,r;;){if(e=d.cursor,d.in_grouping(_,97,251)){if(d.bra=d.cursor,r=d.cursor,k("u","U",e))continue;if(d.cursor=r,k("i","I",e))continue;if(d.cursor=r,p("y","Y",e))continue}if(d.cursor=e,!k("y","Y",d.bra=e)){if(d.cursor=e,d.eq_s(1,"q")&&(d.bra=d.cursor,p("u","U",e)))continue;if((d.cursor=e)>=d.limit)return;d.cursor++}}}(),d.cursor=r,function(){var e=d.cursor;if(t=d.limit,s=i=t,d.in_grouping(_,97,251)&&d.in_grouping(_,97,251)&&d.cursor=d.limit){d.cursor=t;break}d.cursor++}while(!d.in_grouping(_,97,251))}t=d.cursor,d.cursor=e,g()||(i=d.cursor,g()||(s=d.cursor))}(),d.limit_backward=r,d.cursor=d.limit,z(),d.cursor=d.limit,e=d.limit-d.cursor,d.find_among_b(m,5)&&(d.cursor=d.limit-e,d.ket=d.cursor,d.cursor>d.limit_backward&&(d.cursor--,d.bra=d.cursor,d.slice_del())),d.cursor=d.limit,function(){for(var e,r=1;d.out_grouping_b(_,97,251);)r--;if(r<=0){if(d.ket=d.cursor,e=d.limit-d.cursor,!d.eq_s_b(1,"é")&&(d.cursor=d.limit-e,!d.eq_s_b(1,"è")))return;d.bra=d.cursor,d.slice_from("e")}}(),d.cursor=d.limit_backward,function(){for(var e,r;r=d.cursor,d.bra=r,e=d.find_among(u,4);)switch(d.ket=d.cursor,e){case 1:d.slice_from("i");break;case 2:d.slice_from("u");break;case 3:d.slice_from("y");break;case 4:if(d.cursor>=d.limit)return;d.cursor++}}(),!0}},function(e){return"function"==typeof e.update?e.update(function(e){return s.setCurrent(e),s.stem(),s.getCurrent()}):(s.setCurrent(e),s.stem(),s.getCurrent())}),e.Pipeline.registerFunction(e.fr.stemmer,"stemmer-fr"),e.fr.stopWordFilter=e.generateStopWordFilter("ai aie aient aies ait as au aura aurai auraient aurais aurait auras aurez auriez aurions aurons auront aux avaient avais avait avec avez aviez avions avons ayant ayez ayons c ce ceci celà ces cet cette d dans de des du elle en es est et eu eue eues eurent eus eusse eussent eusses eussiez eussions eut eux eûmes eût eûtes furent fus fusse fussent fusses fussiez fussions fut fûmes fût fûtes ici il ils j je l la le les leur leurs lui m ma mais me mes moi mon même n ne nos notre nous on ont ou par pas pour qu que quel quelle quelles quels qui s sa sans se sera serai seraient serais serait seras serez seriez serions serons seront ses soi soient sois soit sommes son sont soyez soyons suis sur t ta te tes toi ton tu un une vos votre vous y à étaient étais était étant étiez étions été étée étées étés êtes".split(" ")),e.Pipeline.registerFunction(e.fr.stopWordFilter,"stopWordFilter-fr")}}); \ No newline at end of file diff --git a/_static/javascripts/lunr/lunr.hu.js b/_static/javascripts/lunr/lunr.hu.js new file mode 100644 index 000000000..56a4b0dc1 --- /dev/null +++ b/_static/javascripts/lunr/lunr.hu.js @@ -0,0 +1 @@ +!function(e,n){"function"==typeof define&&define.amd?define(n):"object"==typeof exports?module.exports=n():n()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var p,_,n;e.hu=function(){this.pipeline.reset(),this.pipeline.add(e.hu.trimmer,e.hu.stopWordFilter,e.hu.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.hu.stemmer))},e.hu.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.hu.trimmer=e.trimmerSupport.generateTrimmer(e.hu.wordCharacters),e.Pipeline.registerFunction(e.hu.trimmer,"trimmer-hu"),e.hu.stemmer=(p=e.stemmerSupport.Among,_=e.stemmerSupport.SnowballProgram,n=new function(){var r,i=[new p("cs",-1,-1),new p("dzs",-1,-1),new p("gy",-1,-1),new p("ly",-1,-1),new p("ny",-1,-1),new p("sz",-1,-1),new p("ty",-1,-1),new p("zs",-1,-1)],n=[new p("á",-1,1),new p("é",-1,2)],a=[new p("bb",-1,-1),new p("cc",-1,-1),new p("dd",-1,-1),new p("ff",-1,-1),new p("gg",-1,-1),new p("jj",-1,-1),new p("kk",-1,-1),new p("ll",-1,-1),new p("mm",-1,-1),new p("nn",-1,-1),new p("pp",-1,-1),new p("rr",-1,-1),new p("ccs",-1,-1),new p("ss",-1,-1),new p("zzs",-1,-1),new p("tt",-1,-1),new p("vv",-1,-1),new p("ggy",-1,-1),new p("lly",-1,-1),new p("nny",-1,-1),new p("tty",-1,-1),new p("ssz",-1,-1),new p("zz",-1,-1)],t=[new p("al",-1,1),new p("el",-1,2)],e=[new p("ba",-1,-1),new p("ra",-1,-1),new p("be",-1,-1),new p("re",-1,-1),new p("ig",-1,-1),new p("nak",-1,-1),new p("nek",-1,-1),new p("val",-1,-1),new p("vel",-1,-1),new p("ul",-1,-1),new p("nál",-1,-1),new p("nél",-1,-1),new p("ból",-1,-1),new p("ról",-1,-1),new p("tól",-1,-1),new p("bõl",-1,-1),new p("rõl",-1,-1),new p("tõl",-1,-1),new p("ül",-1,-1),new p("n",-1,-1),new p("an",19,-1),new p("ban",20,-1),new p("en",19,-1),new p("ben",22,-1),new p("képpen",22,-1),new p("on",19,-1),new p("ön",19,-1),new p("képp",-1,-1),new p("kor",-1,-1),new p("t",-1,-1),new p("at",29,-1),new p("et",29,-1),new p("ként",29,-1),new p("anként",32,-1),new p("enként",32,-1),new p("onként",32,-1),new p("ot",29,-1),new p("ért",29,-1),new p("öt",29,-1),new p("hez",-1,-1),new p("hoz",-1,-1),new p("höz",-1,-1),new p("vá",-1,-1),new p("vé",-1,-1)],s=[new p("án",-1,2),new p("én",-1,1),new p("ánként",-1,3)],c=[new p("stul",-1,2),new p("astul",0,1),new p("ástul",0,3),new p("stül",-1,2),new p("estül",3,1),new p("éstül",3,4)],w=[new p("á",-1,1),new p("é",-1,2)],o=[new p("k",-1,7),new p("ak",0,4),new p("ek",0,6),new p("ok",0,5),new p("ák",0,1),new p("ék",0,2),new p("ök",0,3)],l=[new p("éi",-1,7),new p("áéi",0,6),new p("ééi",0,5),new p("é",-1,9),new p("ké",3,4),new p("aké",4,1),new p("eké",4,1),new p("oké",4,1),new p("áké",4,3),new p("éké",4,2),new p("öké",4,1),new p("éé",3,8)],u=[new p("a",-1,18),new p("ja",0,17),new p("d",-1,16),new p("ad",2,13),new p("ed",2,13),new p("od",2,13),new p("ád",2,14),new p("éd",2,15),new p("öd",2,13),new p("e",-1,18),new p("je",9,17),new p("nk",-1,4),new p("unk",11,1),new p("ánk",11,2),new p("énk",11,3),new p("ünk",11,1),new p("uk",-1,8),new p("juk",16,7),new p("ájuk",17,5),new p("ük",-1,8),new p("jük",19,7),new p("éjük",20,6),new p("m",-1,12),new p("am",22,9),new p("em",22,9),new p("om",22,9),new p("ám",22,10),new p("ém",22,11),new p("o",-1,18),new p("á",-1,19),new p("é",-1,20)],m=[new p("id",-1,10),new p("aid",0,9),new p("jaid",1,6),new p("eid",0,9),new p("jeid",3,6),new p("áid",0,7),new p("éid",0,8),new p("i",-1,15),new p("ai",7,14),new p("jai",8,11),new p("ei",7,14),new p("jei",10,11),new p("ái",7,12),new p("éi",7,13),new p("itek",-1,24),new p("eitek",14,21),new p("jeitek",15,20),new p("éitek",14,23),new p("ik",-1,29),new p("aik",18,26),new p("jaik",19,25),new p("eik",18,26),new p("jeik",21,25),new p("áik",18,27),new p("éik",18,28),new p("ink",-1,20),new p("aink",25,17),new p("jaink",26,16),new p("eink",25,17),new p("jeink",28,16),new p("áink",25,18),new p("éink",25,19),new p("aitok",-1,21),new p("jaitok",32,20),new p("áitok",-1,22),new p("im",-1,5),new p("aim",35,4),new p("jaim",36,1),new p("eim",35,4),new p("jeim",38,1),new p("áim",35,2),new p("éim",35,3)],k=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,1,17,52,14],f=new _;function b(){return r<=f.cursor}function d(){var e=f.limit-f.cursor;return!!f.find_among_b(a,23)&&(f.cursor=f.limit-e,!0)}function g(){if(f.cursor>f.limit_backward){f.cursor--,f.ket=f.cursor;var e=f.cursor-1;f.limit_backward<=e&&e<=f.limit&&(f.cursor=e,f.bra=e,f.slice_del())}}function h(){f.ket=f.cursor,f.find_among_b(e,44)&&(f.bra=f.cursor,b()&&(f.slice_del(),function(){var e;if(f.ket=f.cursor,(e=f.find_among_b(n,2))&&(f.bra=f.cursor,b()))switch(e){case 1:f.slice_from("a");break;case 2:f.slice_from("e")}}()))}this.setCurrent=function(e){f.setCurrent(e)},this.getCurrent=function(){return f.getCurrent()},this.stem=function(){var e=f.cursor;return function(){var e,n=f.cursor;if(r=f.limit,f.in_grouping(k,97,252))for(;;){if(e=f.cursor,f.out_grouping(k,97,252))return f.cursor=e,f.find_among(i,8)||(f.cursor=e)=f.limit)return r=e;f.cursor++}if(f.cursor=n,f.out_grouping(k,97,252)){for(;!f.in_grouping(k,97,252);){if(f.cursor>=f.limit)return;f.cursor++}r=f.cursor}}(),f.limit_backward=e,f.cursor=f.limit,function(){var e;if(f.ket=f.cursor,(e=f.find_among_b(t,2))&&(f.bra=f.cursor,b())){if((1==e||2==e)&&!d())return;f.slice_del(),g()}}(),f.cursor=f.limit,h(),f.cursor=f.limit,function(){var e;if(f.ket=f.cursor,(e=f.find_among_b(s,3))&&(f.bra=f.cursor,b()))switch(e){case 1:f.slice_from("e");break;case 2:case 3:f.slice_from("a")}}(),f.cursor=f.limit,function(){var e;if(f.ket=f.cursor,(e=f.find_among_b(c,6))&&(f.bra=f.cursor,b()))switch(e){case 1:case 2:f.slice_del();break;case 3:f.slice_from("a");break;case 4:f.slice_from("e")}}(),f.cursor=f.limit,function(){var e;if(f.ket=f.cursor,(e=f.find_among_b(w,2))&&(f.bra=f.cursor,b())){if((1==e||2==e)&&!d())return;f.slice_del(),g()}}(),f.cursor=f.limit,function(){var e;if(f.ket=f.cursor,(e=f.find_among_b(l,12))&&(f.bra=f.cursor,b()))switch(e){case 1:case 4:case 7:case 9:f.slice_del();break;case 2:case 5:case 8:f.slice_from("e");break;case 3:case 6:f.slice_from("a")}}(),f.cursor=f.limit,function(){var e;if(f.ket=f.cursor,(e=f.find_among_b(u,31))&&(f.bra=f.cursor,b()))switch(e){case 1:case 4:case 7:case 8:case 9:case 12:case 13:case 16:case 17:case 18:f.slice_del();break;case 2:case 5:case 10:case 14:case 19:f.slice_from("a");break;case 3:case 6:case 11:case 15:case 20:f.slice_from("e")}}(),f.cursor=f.limit,function(){var e;if(f.ket=f.cursor,(e=f.find_among_b(m,42))&&(f.bra=f.cursor,b()))switch(e){case 1:case 4:case 5:case 6:case 9:case 10:case 11:case 14:case 15:case 16:case 17:case 20:case 21:case 24:case 25:case 26:case 29:f.slice_del();break;case 2:case 7:case 12:case 18:case 22:case 27:f.slice_from("a");break;case 3:case 8:case 13:case 19:case 23:case 28:f.slice_from("e")}}(),f.cursor=f.limit,function(){var e;if(f.ket=f.cursor,(e=f.find_among_b(o,7))&&(f.bra=f.cursor,b()))switch(e){case 1:f.slice_from("a");break;case 2:f.slice_from("e");break;case 3:case 4:case 5:case 6:case 7:f.slice_del()}}(),!0}},function(e){return"function"==typeof e.update?e.update(function(e){return n.setCurrent(e),n.stem(),n.getCurrent()}):(n.setCurrent(e),n.stem(),n.getCurrent())}),e.Pipeline.registerFunction(e.hu.stemmer,"stemmer-hu"),e.hu.stopWordFilter=e.generateStopWordFilter("a abban ahhoz ahogy ahol aki akik akkor alatt amely amelyek amelyekben amelyeket amelyet amelynek ami amikor amit amolyan amíg annak arra arról az azok azon azonban azt aztán azután azzal azért be belül benne bár cikk cikkek cikkeket csak de e ebben eddig egy egyes egyetlen egyik egyre egyéb egész ehhez ekkor el ellen elsõ elég elõ elõször elõtt emilyen ennek erre ez ezek ezen ezt ezzel ezért fel felé hanem hiszen hogy hogyan igen ill ill. illetve ilyen ilyenkor ismét ison itt jobban jó jól kell kellett keressünk keresztül ki kívül között közül legalább legyen lehet lehetett lenne lenni lesz lett maga magát majd majd meg mellett mely melyek mert mi mikor milyen minden mindenki mindent mindig mint mintha mit mivel miért most már más másik még míg nagy nagyobb nagyon ne nekem neki nem nincs néha néhány nélkül olyan ott pedig persze rá s saját sem semmi sok sokat sokkal szemben szerint szinte számára talán tehát teljes tovább továbbá több ugyanis utolsó után utána vagy vagyis vagyok valaki valami valamint való van vannak vele vissza viszont volna volt voltak voltam voltunk által általában át én éppen és így õ õk õket össze úgy új újabb újra".split(" ")),e.Pipeline.registerFunction(e.hu.stopWordFilter,"stopWordFilter-hu")}}); \ No newline at end of file diff --git a/_static/javascripts/lunr/lunr.it.js b/_static/javascripts/lunr/lunr.it.js new file mode 100644 index 000000000..50dddaa04 --- /dev/null +++ b/_static/javascripts/lunr/lunr.it.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var z,P,r;e.it=function(){this.pipeline.reset(),this.pipeline.add(e.it.trimmer,e.it.stopWordFilter,e.it.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.it.stemmer))},e.it.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.it.trimmer=e.trimmerSupport.generateTrimmer(e.it.wordCharacters),e.Pipeline.registerFunction(e.it.trimmer,"trimmer-it"),e.it.stemmer=(z=e.stemmerSupport.Among,P=e.stemmerSupport.SnowballProgram,r=new function(){var o,t,s,a=[new z("",-1,7),new z("qu",0,6),new z("á",0,1),new z("é",0,2),new z("í",0,3),new z("ó",0,4),new z("ú",0,5)],u=[new z("",-1,3),new z("I",0,1),new z("U",0,2)],c=[new z("la",-1,-1),new z("cela",0,-1),new z("gliela",0,-1),new z("mela",0,-1),new z("tela",0,-1),new z("vela",0,-1),new z("le",-1,-1),new z("cele",6,-1),new z("gliele",6,-1),new z("mele",6,-1),new z("tele",6,-1),new z("vele",6,-1),new z("ne",-1,-1),new z("cene",12,-1),new z("gliene",12,-1),new z("mene",12,-1),new z("sene",12,-1),new z("tene",12,-1),new z("vene",12,-1),new z("ci",-1,-1),new z("li",-1,-1),new z("celi",20,-1),new z("glieli",20,-1),new z("meli",20,-1),new z("teli",20,-1),new z("veli",20,-1),new z("gli",20,-1),new z("mi",-1,-1),new z("si",-1,-1),new z("ti",-1,-1),new z("vi",-1,-1),new z("lo",-1,-1),new z("celo",31,-1),new z("glielo",31,-1),new z("melo",31,-1),new z("telo",31,-1),new z("velo",31,-1)],w=[new z("ando",-1,1),new z("endo",-1,1),new z("ar",-1,2),new z("er",-1,2),new z("ir",-1,2)],r=[new z("ic",-1,-1),new z("abil",-1,-1),new z("os",-1,-1),new z("iv",-1,1)],n=[new z("ic",-1,1),new z("abil",-1,1),new z("iv",-1,1)],i=[new z("ica",-1,1),new z("logia",-1,3),new z("osa",-1,1),new z("ista",-1,1),new z("iva",-1,9),new z("anza",-1,1),new z("enza",-1,5),new z("ice",-1,1),new z("atrice",7,1),new z("iche",-1,1),new z("logie",-1,3),new z("abile",-1,1),new z("ibile",-1,1),new z("usione",-1,4),new z("azione",-1,2),new z("uzione",-1,4),new z("atore",-1,2),new z("ose",-1,1),new z("ante",-1,1),new z("mente",-1,1),new z("amente",19,7),new z("iste",-1,1),new z("ive",-1,9),new z("anze",-1,1),new z("enze",-1,5),new z("ici",-1,1),new z("atrici",25,1),new z("ichi",-1,1),new z("abili",-1,1),new z("ibili",-1,1),new z("ismi",-1,1),new z("usioni",-1,4),new z("azioni",-1,2),new z("uzioni",-1,4),new z("atori",-1,2),new z("osi",-1,1),new z("anti",-1,1),new z("amenti",-1,6),new z("imenti",-1,6),new z("isti",-1,1),new z("ivi",-1,9),new z("ico",-1,1),new z("ismo",-1,1),new z("oso",-1,1),new z("amento",-1,6),new z("imento",-1,6),new z("ivo",-1,9),new z("ità",-1,8),new z("istà",-1,1),new z("istè",-1,1),new z("istì",-1,1)],l=[new z("isca",-1,1),new z("enda",-1,1),new z("ata",-1,1),new z("ita",-1,1),new z("uta",-1,1),new z("ava",-1,1),new z("eva",-1,1),new z("iva",-1,1),new z("erebbe",-1,1),new z("irebbe",-1,1),new z("isce",-1,1),new z("ende",-1,1),new z("are",-1,1),new z("ere",-1,1),new z("ire",-1,1),new z("asse",-1,1),new z("ate",-1,1),new z("avate",16,1),new z("evate",16,1),new z("ivate",16,1),new z("ete",-1,1),new z("erete",20,1),new z("irete",20,1),new z("ite",-1,1),new z("ereste",-1,1),new z("ireste",-1,1),new z("ute",-1,1),new z("erai",-1,1),new z("irai",-1,1),new z("isci",-1,1),new z("endi",-1,1),new z("erei",-1,1),new z("irei",-1,1),new z("assi",-1,1),new z("ati",-1,1),new z("iti",-1,1),new z("eresti",-1,1),new z("iresti",-1,1),new z("uti",-1,1),new z("avi",-1,1),new z("evi",-1,1),new z("ivi",-1,1),new z("isco",-1,1),new z("ando",-1,1),new z("endo",-1,1),new z("Yamo",-1,1),new z("iamo",-1,1),new z("avamo",-1,1),new z("evamo",-1,1),new z("ivamo",-1,1),new z("eremo",-1,1),new z("iremo",-1,1),new z("assimo",-1,1),new z("ammo",-1,1),new z("emmo",-1,1),new z("eremmo",54,1),new z("iremmo",54,1),new z("immo",-1,1),new z("ano",-1,1),new z("iscano",58,1),new z("avano",58,1),new z("evano",58,1),new z("ivano",58,1),new z("eranno",-1,1),new z("iranno",-1,1),new z("ono",-1,1),new z("iscono",65,1),new z("arono",65,1),new z("erono",65,1),new z("irono",65,1),new z("erebbero",-1,1),new z("irebbero",-1,1),new z("assero",-1,1),new z("essero",-1,1),new z("issero",-1,1),new z("ato",-1,1),new z("ito",-1,1),new z("uto",-1,1),new z("avo",-1,1),new z("evo",-1,1),new z("ivo",-1,1),new z("ar",-1,1),new z("ir",-1,1),new z("erà",-1,1),new z("irà",-1,1),new z("erò",-1,1),new z("irò",-1,1)],m=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,128,128,8,2,1],f=[17,65,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,8,2],v=[17],b=new P;function d(e,r,n){return!(!b.eq_s(1,e)||(b.ket=b.cursor,!b.in_grouping(m,97,249)))&&(b.slice_from(r),b.cursor=n,!0)}function _(e){if(b.cursor=e,!b.in_grouping(m,97,249))return!1;for(;!b.out_grouping(m,97,249);){if(b.cursor>=b.limit)return!1;b.cursor++}return!0}function g(){var e,r=b.cursor;if(!function(){if(b.in_grouping(m,97,249)){var e=b.cursor;if(b.out_grouping(m,97,249)){for(;!b.in_grouping(m,97,249);){if(b.cursor>=b.limit)return _(e);b.cursor++}return!0}return _(e)}return!1}()){if(b.cursor=r,!b.out_grouping(m,97,249))return;if(e=b.cursor,b.out_grouping(m,97,249)){for(;!b.in_grouping(m,97,249);){if(b.cursor>=b.limit)return b.cursor=e,void(b.in_grouping(m,97,249)&&b.cursor=b.limit)return;b.cursor++}s=b.cursor}function p(){for(;!b.in_grouping(m,97,249);){if(b.cursor>=b.limit)return!1;b.cursor++}for(;!b.out_grouping(m,97,249);){if(b.cursor>=b.limit)return!1;b.cursor++}return!0}function k(){return s<=b.cursor}function h(){return o<=b.cursor}function q(){var e;if(b.ket=b.cursor,!(e=b.find_among_b(i,51)))return!1;switch(b.bra=b.cursor,e){case 1:if(!h())return!1;b.slice_del();break;case 2:if(!h())return!1;b.slice_del(),b.ket=b.cursor,b.eq_s_b(2,"ic")&&(b.bra=b.cursor,h()&&b.slice_del());break;case 3:if(!h())return!1;b.slice_from("log");break;case 4:if(!h())return!1;b.slice_from("u");break;case 5:if(!h())return!1;b.slice_from("ente");break;case 6:if(!k())return!1;b.slice_del();break;case 7:if(!(t<=b.cursor))return!1;b.slice_del(),b.ket=b.cursor,(e=b.find_among_b(r,4))&&(b.bra=b.cursor,h()&&(b.slice_del(),1==e&&(b.ket=b.cursor,b.eq_s_b(2,"at")&&(b.bra=b.cursor,h()&&b.slice_del()))));break;case 8:if(!h())return!1;b.slice_del(),b.ket=b.cursor,(e=b.find_among_b(n,3))&&(b.bra=b.cursor,1==e&&h()&&b.slice_del());break;case 9:if(!h())return!1;b.slice_del(),b.ket=b.cursor,b.eq_s_b(2,"at")&&(b.bra=b.cursor,h()&&(b.slice_del(),b.ket=b.cursor,b.eq_s_b(2,"ic")&&(b.bra=b.cursor,h()&&b.slice_del())))}return!0}function C(){var e;e=b.limit-b.cursor,b.ket=b.cursor,b.in_grouping_b(f,97,242)&&(b.bra=b.cursor,k()&&(b.slice_del(),b.ket=b.cursor,b.eq_s_b(1,"i")&&(b.bra=b.cursor,k())))?b.slice_del():b.cursor=b.limit-e,b.ket=b.cursor,b.eq_s_b(1,"h")&&(b.bra=b.cursor,b.in_grouping_b(v,99,103)&&k()&&b.slice_del())}this.setCurrent=function(e){b.setCurrent(e)},this.getCurrent=function(){return b.getCurrent()},this.stem=function(){var e,r,n,i=b.cursor;return function(){for(var e,r,n,i,o=b.cursor;;){if(b.bra=b.cursor,e=b.find_among(a,7))switch(b.ket=b.cursor,e){case 1:b.slice_from("à");continue;case 2:b.slice_from("è");continue;case 3:b.slice_from("ì");continue;case 4:b.slice_from("ò");continue;case 5:b.slice_from("ù");continue;case 6:b.slice_from("qU");continue;case 7:if(b.cursor>=b.limit)break;b.cursor++;continue}break}for(b.cursor=o;;)for(r=b.cursor;;){if(n=b.cursor,b.in_grouping(m,97,249)){if(b.bra=b.cursor,i=b.cursor,d("u","U",n))break;if(b.cursor=i,d("i","I",n))break}if(b.cursor=n,b.cursor>=b.limit)return b.cursor=r;b.cursor++}}(),b.cursor=i,e=b.cursor,s=b.limit,o=t=s,g(),b.cursor=e,p()&&(t=b.cursor,p()&&(o=b.cursor)),b.limit_backward=i,b.cursor=b.limit,function(){var e;if(b.ket=b.cursor,b.find_among_b(c,37)&&(b.bra=b.cursor,(e=b.find_among_b(w,5))&&k()))switch(e){case 1:b.slice_del();break;case 2:b.slice_from("e")}}(),b.cursor=b.limit,q()||(b.cursor=b.limit,b.cursor>=s&&(n=b.limit_backward,b.limit_backward=s,b.ket=b.cursor,(r=b.find_among_b(l,87))&&(b.bra=b.cursor,1==r&&b.slice_del()),b.limit_backward=n)),b.cursor=b.limit,C(),b.cursor=b.limit_backward,function(){for(var e;b.bra=b.cursor,e=b.find_among(u,3);)switch(b.ket=b.cursor,e){case 1:b.slice_from("i");break;case 2:b.slice_from("u");break;case 3:if(b.cursor>=b.limit)return;b.cursor++}}(),!0}},function(e){return"function"==typeof e.update?e.update(function(e){return r.setCurrent(e),r.stem(),r.getCurrent()}):(r.setCurrent(e),r.stem(),r.getCurrent())}),e.Pipeline.registerFunction(e.it.stemmer,"stemmer-it"),e.it.stopWordFilter=e.generateStopWordFilter("a abbia abbiamo abbiano abbiate ad agl agli ai al all alla alle allo anche avemmo avendo avesse avessero avessi avessimo aveste avesti avete aveva avevamo avevano avevate avevi avevo avrai avranno avrebbe avrebbero avrei avremmo avremo avreste avresti avrete avrà avrò avuta avute avuti avuto c che chi ci coi col come con contro cui da dagl dagli dai dal dall dalla dalle dallo degl degli dei del dell della delle dello di dov dove e ebbe ebbero ebbi ed era erano eravamo eravate eri ero essendo faccia facciamo facciano facciate faccio facemmo facendo facesse facessero facessi facessimo faceste facesti faceva facevamo facevano facevate facevi facevo fai fanno farai faranno farebbe farebbero farei faremmo faremo fareste faresti farete farà farò fece fecero feci fosse fossero fossi fossimo foste fosti fu fui fummo furono gli ha hai hanno ho i il in io l la le lei li lo loro lui ma mi mia mie miei mio ne negl negli nei nel nell nella nelle nello noi non nostra nostre nostri nostro o per perché più quale quanta quante quanti quanto quella quelle quelli quello questa queste questi questo sarai saranno sarebbe sarebbero sarei saremmo saremo sareste saresti sarete sarà sarò se sei si sia siamo siano siate siete sono sta stai stando stanno starai staranno starebbe starebbero starei staremmo staremo stareste staresti starete starà starò stava stavamo stavano stavate stavi stavo stemmo stesse stessero stessi stessimo steste stesti stette stettero stetti stia stiamo stiano stiate sto su sua sue sugl sugli sui sul sull sulla sulle sullo suo suoi ti tra tu tua tue tuo tuoi tutti tutto un una uno vi voi vostra vostre vostri vostro è".split(" ")),e.Pipeline.registerFunction(e.it.stopWordFilter,"stopWordFilter-it")}}); \ No newline at end of file diff --git a/_static/javascripts/lunr/lunr.ja.js b/_static/javascripts/lunr/lunr.ja.js new file mode 100644 index 000000000..69f620250 --- /dev/null +++ b/_static/javascripts/lunr/lunr.ja.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(m){if(void 0===m)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===m.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var l="2"==m.version[0];m.ja=function(){this.pipeline.reset(),this.pipeline.add(m.ja.trimmer,m.ja.stopWordFilter,m.ja.stemmer),l?this.tokenizer=m.ja.tokenizer:(m.tokenizer&&(m.tokenizer=m.ja.tokenizer),this.tokenizerFn&&(this.tokenizerFn=m.ja.tokenizer))};var j=new m.TinySegmenter;m.ja.tokenizer=function(e){var r,t,i,n,o,s,p,a,u;if(!arguments.length||null==e||null==e)return[];if(Array.isArray(e))return e.map(function(e){return l?new m.Token(e.toLowerCase()):e.toLowerCase()});for(r=(t=e.toString().toLowerCase().replace(/^\s+/,"")).length-1;0<=r;r--)if(/\S/.test(t.charAt(r))){t=t.substring(0,r+1);break}for(o=[],i=t.length,p=a=0;a<=i;a++)if(s=a-p,t.charAt(a).match(/\s/)||a==i){if(0=_.limit||(_.cursor++,!1)}function w(){for(;!_.in_grouping(m,97,232);){if(_.cursor>=_.limit)return!0;_.cursor++}for(;!_.out_grouping(m,97,232);){if(_.cursor>=_.limit)return!0;_.cursor++}return!1}function b(){return i<=_.cursor}function p(){return e<=_.cursor}function g(){var r=_.limit-_.cursor;_.find_among_b(t,3)&&(_.cursor=_.limit-r,_.ket=_.cursor,_.cursor>_.limit_backward&&(_.cursor--,_.bra=_.cursor,_.slice_del()))}function h(){var r;u=!1,_.ket=_.cursor,_.eq_s_b(1,"e")&&(_.bra=_.cursor,b()&&(r=_.limit-_.cursor,_.out_grouping_b(m,97,232)&&(_.cursor=_.limit-r,_.slice_del(),u=!0,g())))}function k(){var r;b()&&(r=_.limit-_.cursor,_.out_grouping_b(m,97,232)&&(_.cursor=_.limit-r,_.eq_s_b(3,"gem")||(_.cursor=_.limit-r,_.slice_del(),g())))}this.setCurrent=function(r){_.setCurrent(r)},this.getCurrent=function(){return _.getCurrent()},this.stem=function(){var r=_.cursor;return function(){for(var r,e,i,n=_.cursor;;){if(_.bra=_.cursor,r=_.find_among(o,11))switch(_.ket=_.cursor,r){case 1:_.slice_from("a");continue;case 2:_.slice_from("e");continue;case 3:_.slice_from("i");continue;case 4:_.slice_from("o");continue;case 5:_.slice_from("u");continue;case 6:if(_.cursor>=_.limit)break;_.cursor++;continue}break}for(_.cursor=n,_.bra=n,_.eq_s(1,"y")?(_.ket=_.cursor,_.slice_from("Y")):_.cursor=n;;)if(e=_.cursor,_.in_grouping(m,97,232)){if(i=_.cursor,_.bra=i,_.eq_s(1,"i"))_.ket=_.cursor,_.in_grouping(m,97,232)&&(_.slice_from("I"),_.cursor=e);else if(_.cursor=i,_.eq_s(1,"y"))_.ket=_.cursor,_.slice_from("Y"),_.cursor=e;else if(s(e))break}else if(s(e))break}(),_.cursor=r,i=_.limit,e=i,w()||((i=_.cursor)<3&&(i=3),w()||(e=_.cursor)),_.limit_backward=r,_.cursor=_.limit,function(){var r,e,i,n,o,t,s=_.limit-_.cursor;if(_.ket=_.cursor,r=_.find_among_b(c,5))switch(_.bra=_.cursor,r){case 1:b()&&_.slice_from("heid");break;case 2:k();break;case 3:b()&&_.out_grouping_b(f,97,232)&&_.slice_del()}if(_.cursor=_.limit-s,h(),_.cursor=_.limit-s,_.ket=_.cursor,_.eq_s_b(4,"heid")&&(_.bra=_.cursor,p()&&(e=_.limit-_.cursor,_.eq_s_b(1,"c")||(_.cursor=_.limit-e,_.slice_del(),_.ket=_.cursor,_.eq_s_b(2,"en")&&(_.bra=_.cursor,k())))),_.cursor=_.limit-s,_.ket=_.cursor,r=_.find_among_b(a,6))switch(_.bra=_.cursor,r){case 1:if(p()){if(_.slice_del(),i=_.limit-_.cursor,_.ket=_.cursor,_.eq_s_b(2,"ig")&&(_.bra=_.cursor,p()&&(n=_.limit-_.cursor,!_.eq_s_b(1,"e")))){_.cursor=_.limit-n,_.slice_del();break}_.cursor=_.limit-i,g()}break;case 2:p()&&(o=_.limit-_.cursor,_.eq_s_b(1,"e")||(_.cursor=_.limit-o,_.slice_del()));break;case 3:p()&&(_.slice_del(),h());break;case 4:p()&&_.slice_del();break;case 5:p()&&u&&_.slice_del()}_.cursor=_.limit-s,_.out_grouping_b(d,73,232)&&(t=_.limit-_.cursor,_.find_among_b(l,4)&&_.out_grouping_b(m,97,232)&&(_.cursor=_.limit-t,_.ket=_.cursor,_.cursor>_.limit_backward&&(_.cursor--,_.bra=_.cursor,_.slice_del())))}(),_.cursor=_.limit_backward,function(){for(var r;;)if(_.bra=_.cursor,r=_.find_among(n,3))switch(_.ket=_.cursor,r){case 1:_.slice_from("y");break;case 2:_.slice_from("i");break;case 3:if(_.cursor>=_.limit)return;_.cursor++}}(),!0}},function(r){return"function"==typeof r.update?r.update(function(r){return e.setCurrent(r),e.stem(),e.getCurrent()}):(e.setCurrent(r),e.stem(),e.getCurrent())}),r.Pipeline.registerFunction(r.nl.stemmer,"stemmer-nl"),r.nl.stopWordFilter=r.generateStopWordFilter(" aan al alles als altijd andere ben bij daar dan dat de der deze die dit doch doen door dus een eens en er ge geen geweest haar had heb hebben heeft hem het hier hij hoe hun iemand iets ik in is ja je kan kon kunnen maar me meer men met mij mijn moet na naar niet niets nog nu of om omdat onder ons ook op over reeds te tegen toch toen tot u uit uw van veel voor want waren was wat werd wezen wie wil worden wordt zal ze zelf zich zij zijn zo zonder zou".split(" ")),r.Pipeline.registerFunction(r.nl.stopWordFilter,"stopWordFilter-nl")}}); \ No newline at end of file diff --git a/_static/javascripts/lunr/lunr.no.js b/_static/javascripts/lunr/lunr.no.js new file mode 100644 index 000000000..3d156b9c1 --- /dev/null +++ b/_static/javascripts/lunr/lunr.no.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var r,n,i;e.no=function(){this.pipeline.reset(),this.pipeline.add(e.no.trimmer,e.no.stopWordFilter,e.no.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.no.stemmer))},e.no.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.no.trimmer=e.trimmerSupport.generateTrimmer(e.no.wordCharacters),e.Pipeline.registerFunction(e.no.trimmer,"trimmer-no"),e.no.stemmer=(r=e.stemmerSupport.Among,n=e.stemmerSupport.SnowballProgram,i=new function(){var o,s,a=[new r("a",-1,1),new r("e",-1,1),new r("ede",1,1),new r("ande",1,1),new r("ende",1,1),new r("ane",1,1),new r("ene",1,1),new r("hetene",6,1),new r("erte",1,3),new r("en",-1,1),new r("heten",9,1),new r("ar",-1,1),new r("er",-1,1),new r("heter",12,1),new r("s",-1,2),new r("as",14,1),new r("es",14,1),new r("edes",16,1),new r("endes",16,1),new r("enes",16,1),new r("hetenes",19,1),new r("ens",14,1),new r("hetens",21,1),new r("ers",14,1),new r("ets",14,1),new r("et",-1,1),new r("het",25,1),new r("ert",-1,3),new r("ast",-1,1)],m=[new r("dt",-1,-1),new r("vt",-1,-1)],l=[new r("leg",-1,1),new r("eleg",0,1),new r("ig",-1,1),new r("eig",2,1),new r("lig",2,1),new r("elig",4,1),new r("els",-1,1),new r("lov",-1,1),new r("elov",7,1),new r("slov",7,1),new r("hetslov",9,1)],u=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,48,0,128],d=[119,125,149,1],c=new n;this.setCurrent=function(e){c.setCurrent(e)},this.getCurrent=function(){return c.getCurrent()},this.stem=function(){var e,r,n,i,t=c.cursor;return function(){var e,r=c.cursor+3;if(s=c.limit,0<=r||r<=c.limit){for(o=r;;){if(e=c.cursor,c.in_grouping(u,97,248)){c.cursor=e;break}if(e>=c.limit)return;c.cursor=e+1}for(;!c.out_grouping(u,97,248);){if(c.cursor>=c.limit)return;c.cursor++}(s=c.cursor)=s&&(r=c.limit_backward,c.limit_backward=s,c.ket=c.cursor,e=c.find_among_b(a,29),c.limit_backward=r,e))switch(c.bra=c.cursor,e){case 1:c.slice_del();break;case 2:n=c.limit-c.cursor,c.in_grouping_b(d,98,122)?c.slice_del():(c.cursor=c.limit-n,c.eq_s_b(1,"k")&&c.out_grouping_b(u,97,248)&&c.slice_del());break;case 3:c.slice_from("er")}}(),c.cursor=c.limit,r=c.limit-c.cursor,c.cursor>=s&&(e=c.limit_backward,c.limit_backward=s,c.ket=c.cursor,c.find_among_b(m,2)?(c.bra=c.cursor,c.limit_backward=e,c.cursor=c.limit-r,c.cursor>c.limit_backward&&(c.cursor--,c.bra=c.cursor,c.slice_del())):c.limit_backward=e),c.cursor=c.limit,c.cursor>=s&&(i=c.limit_backward,c.limit_backward=s,c.ket=c.cursor,(n=c.find_among_b(l,11))?(c.bra=c.cursor,c.limit_backward=i,1==n&&c.slice_del()):c.limit_backward=i),!0}},function(e){return"function"==typeof e.update?e.update(function(e){return i.setCurrent(e),i.stem(),i.getCurrent()}):(i.setCurrent(e),i.stem(),i.getCurrent())}),e.Pipeline.registerFunction(e.no.stemmer,"stemmer-no"),e.no.stopWordFilter=e.generateStopWordFilter("alle at av bare begge ble blei bli blir blitt både båe da de deg dei deim deira deires dem den denne der dere deres det dette di din disse ditt du dykk dykkar då eg ein eit eitt eller elles en enn er et ett etter for fordi fra før ha hadde han hans har hennar henne hennes her hjå ho hoe honom hoss hossen hun hva hvem hver hvilke hvilken hvis hvor hvordan hvorfor i ikke ikkje ikkje ingen ingi inkje inn inni ja jeg kan kom korleis korso kun kunne kva kvar kvarhelst kven kvi kvifor man mange me med medan meg meget mellom men mi min mine mitt mot mykje ned no noe noen noka noko nokon nokor nokre nå når og også om opp oss over på samme seg selv si si sia sidan siden sin sine sitt sjøl skal skulle slik so som som somme somt så sånn til um upp ut uten var vart varte ved vere verte vi vil ville vore vors vort vår være være vært å".split(" ")),e.Pipeline.registerFunction(e.no.stopWordFilter,"stopWordFilter-no")}}); \ No newline at end of file diff --git a/_static/javascripts/lunr/lunr.pt.js b/_static/javascripts/lunr/lunr.pt.js new file mode 100644 index 000000000..f50fc9fa6 --- /dev/null +++ b/_static/javascripts/lunr/lunr.pt.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var j,C,r;e.pt=function(){this.pipeline.reset(),this.pipeline.add(e.pt.trimmer,e.pt.stopWordFilter,e.pt.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.pt.stemmer))},e.pt.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.pt.trimmer=e.trimmerSupport.generateTrimmer(e.pt.wordCharacters),e.Pipeline.registerFunction(e.pt.trimmer,"trimmer-pt"),e.pt.stemmer=(j=e.stemmerSupport.Among,C=e.stemmerSupport.SnowballProgram,r=new function(){var s,n,i,o=[new j("",-1,3),new j("ã",0,1),new j("õ",0,2)],a=[new j("",-1,3),new j("a~",0,1),new j("o~",0,2)],r=[new j("ic",-1,-1),new j("ad",-1,-1),new j("os",-1,-1),new j("iv",-1,1)],t=[new j("ante",-1,1),new j("avel",-1,1),new j("ível",-1,1)],u=[new j("ic",-1,1),new j("abil",-1,1),new j("iv",-1,1)],w=[new j("ica",-1,1),new j("ância",-1,1),new j("ência",-1,4),new j("ira",-1,9),new j("adora",-1,1),new j("osa",-1,1),new j("ista",-1,1),new j("iva",-1,8),new j("eza",-1,1),new j("logía",-1,2),new j("idade",-1,7),new j("ante",-1,1),new j("mente",-1,6),new j("amente",12,5),new j("ável",-1,1),new j("ível",-1,1),new j("ución",-1,3),new j("ico",-1,1),new j("ismo",-1,1),new j("oso",-1,1),new j("amento",-1,1),new j("imento",-1,1),new j("ivo",-1,8),new j("aça~o",-1,1),new j("ador",-1,1),new j("icas",-1,1),new j("ências",-1,4),new j("iras",-1,9),new j("adoras",-1,1),new j("osas",-1,1),new j("istas",-1,1),new j("ivas",-1,8),new j("ezas",-1,1),new j("logías",-1,2),new j("idades",-1,7),new j("uciones",-1,3),new j("adores",-1,1),new j("antes",-1,1),new j("aço~es",-1,1),new j("icos",-1,1),new j("ismos",-1,1),new j("osos",-1,1),new j("amentos",-1,1),new j("imentos",-1,1),new j("ivos",-1,8)],m=[new j("ada",-1,1),new j("ida",-1,1),new j("ia",-1,1),new j("aria",2,1),new j("eria",2,1),new j("iria",2,1),new j("ara",-1,1),new j("era",-1,1),new j("ira",-1,1),new j("ava",-1,1),new j("asse",-1,1),new j("esse",-1,1),new j("isse",-1,1),new j("aste",-1,1),new j("este",-1,1),new j("iste",-1,1),new j("ei",-1,1),new j("arei",16,1),new j("erei",16,1),new j("irei",16,1),new j("am",-1,1),new j("iam",20,1),new j("ariam",21,1),new j("eriam",21,1),new j("iriam",21,1),new j("aram",20,1),new j("eram",20,1),new j("iram",20,1),new j("avam",20,1),new j("em",-1,1),new j("arem",29,1),new j("erem",29,1),new j("irem",29,1),new j("assem",29,1),new j("essem",29,1),new j("issem",29,1),new j("ado",-1,1),new j("ido",-1,1),new j("ando",-1,1),new j("endo",-1,1),new j("indo",-1,1),new j("ara~o",-1,1),new j("era~o",-1,1),new j("ira~o",-1,1),new j("ar",-1,1),new j("er",-1,1),new j("ir",-1,1),new j("as",-1,1),new j("adas",47,1),new j("idas",47,1),new j("ias",47,1),new j("arias",50,1),new j("erias",50,1),new j("irias",50,1),new j("aras",47,1),new j("eras",47,1),new j("iras",47,1),new j("avas",47,1),new j("es",-1,1),new j("ardes",58,1),new j("erdes",58,1),new j("irdes",58,1),new j("ares",58,1),new j("eres",58,1),new j("ires",58,1),new j("asses",58,1),new j("esses",58,1),new j("isses",58,1),new j("astes",58,1),new j("estes",58,1),new j("istes",58,1),new j("is",-1,1),new j("ais",71,1),new j("eis",71,1),new j("areis",73,1),new j("ereis",73,1),new j("ireis",73,1),new j("áreis",73,1),new j("éreis",73,1),new j("íreis",73,1),new j("ásseis",73,1),new j("ésseis",73,1),new j("ísseis",73,1),new j("áveis",73,1),new j("íeis",73,1),new j("aríeis",84,1),new j("eríeis",84,1),new j("iríeis",84,1),new j("ados",-1,1),new j("idos",-1,1),new j("amos",-1,1),new j("áramos",90,1),new j("éramos",90,1),new j("íramos",90,1),new j("ávamos",90,1),new j("íamos",90,1),new j("aríamos",95,1),new j("eríamos",95,1),new j("iríamos",95,1),new j("emos",-1,1),new j("aremos",99,1),new j("eremos",99,1),new j("iremos",99,1),new j("ássemos",99,1),new j("êssemos",99,1),new j("íssemos",99,1),new j("imos",-1,1),new j("armos",-1,1),new j("ermos",-1,1),new j("irmos",-1,1),new j("ámos",-1,1),new j("arás",-1,1),new j("erás",-1,1),new j("irás",-1,1),new j("eu",-1,1),new j("iu",-1,1),new j("ou",-1,1),new j("ará",-1,1),new j("erá",-1,1),new j("irá",-1,1)],c=[new j("a",-1,1),new j("i",-1,1),new j("o",-1,1),new j("os",-1,1),new j("á",-1,1),new j("í",-1,1),new j("ó",-1,1)],l=[new j("e",-1,1),new j("ç",-1,2),new j("é",-1,1),new j("ê",-1,1)],f=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,3,19,12,2],d=new C;function v(){if(d.out_grouping(f,97,250)){for(;!d.in_grouping(f,97,250);){if(d.cursor>=d.limit)return!0;d.cursor++}return!1}return!0}function p(){var e,r,s=d.cursor;if(d.in_grouping(f,97,250))if(e=d.cursor,v()){if(d.cursor=e,function(){if(d.in_grouping(f,97,250))for(;!d.out_grouping(f,97,250);){if(d.cursor>=d.limit)return!1;d.cursor++}return i=d.cursor,!0}())return}else i=d.cursor;if(d.cursor=s,d.out_grouping(f,97,250)){if(r=d.cursor,v()){if(d.cursor=r,!d.in_grouping(f,97,250)||d.cursor>=d.limit)return;d.cursor++}i=d.cursor}}function _(){for(;!d.in_grouping(f,97,250);){if(d.cursor>=d.limit)return!1;d.cursor++}for(;!d.out_grouping(f,97,250);){if(d.cursor>=d.limit)return!1;d.cursor++}return!0}function h(){return i<=d.cursor}function b(){return s<=d.cursor}function g(){var e;if(d.ket=d.cursor,!(e=d.find_among_b(w,45)))return!1;switch(d.bra=d.cursor,e){case 1:if(!b())return!1;d.slice_del();break;case 2:if(!b())return!1;d.slice_from("log");break;case 3:if(!b())return!1;d.slice_from("u");break;case 4:if(!b())return!1;d.slice_from("ente");break;case 5:if(!(n<=d.cursor))return!1;d.slice_del(),d.ket=d.cursor,(e=d.find_among_b(r,4))&&(d.bra=d.cursor,b()&&(d.slice_del(),1==e&&(d.ket=d.cursor,d.eq_s_b(2,"at")&&(d.bra=d.cursor,b()&&d.slice_del()))));break;case 6:if(!b())return!1;d.slice_del(),d.ket=d.cursor,(e=d.find_among_b(t,3))&&(d.bra=d.cursor,1==e&&b()&&d.slice_del());break;case 7:if(!b())return!1;d.slice_del(),d.ket=d.cursor,(e=d.find_among_b(u,3))&&(d.bra=d.cursor,1==e&&b()&&d.slice_del());break;case 8:if(!b())return!1;d.slice_del(),d.ket=d.cursor,d.eq_s_b(2,"at")&&(d.bra=d.cursor,b()&&d.slice_del());break;case 9:if(!h()||!d.eq_s_b(1,"e"))return!1;d.slice_from("ir")}return!0}function k(e,r){if(d.eq_s_b(1,e)){d.bra=d.cursor;var s=d.limit-d.cursor;if(d.eq_s_b(1,r))return d.cursor=d.limit-s,h()&&d.slice_del(),!1}return!0}function q(){if(!g()&&(d.cursor=d.limit,!function(){var e,r;if(d.cursor>=i){if(r=d.limit_backward,d.limit_backward=i,d.ket=d.cursor,e=d.find_among_b(m,120))return d.bra=d.cursor,1==e&&d.slice_del(),d.limit_backward=r,!0;d.limit_backward=r}return!1}()))return d.cursor=d.limit,d.ket=d.cursor,void((e=d.find_among_b(c,7))&&(d.bra=d.cursor,1==e&&h()&&d.slice_del()));var e;d.cursor=d.limit,d.ket=d.cursor,d.eq_s_b(1,"i")&&(d.bra=d.cursor,d.eq_s_b(1,"c")&&(d.cursor=d.limit,h()&&d.slice_del()))}this.setCurrent=function(e){d.setCurrent(e)},this.getCurrent=function(){return d.getCurrent()},this.stem=function(){var e,r=d.cursor;return function(){for(var e;;){if(d.bra=d.cursor,e=d.find_among(o,3))switch(d.ket=d.cursor,e){case 1:d.slice_from("a~");continue;case 2:d.slice_from("o~");continue;case 3:if(d.cursor>=d.limit)break;d.cursor++;continue}break}}(),d.cursor=r,e=d.cursor,i=d.limit,s=n=i,p(),d.cursor=e,_()&&(n=d.cursor,_()&&(s=d.cursor)),d.limit_backward=r,d.cursor=d.limit,q(),d.cursor=d.limit,function(){var e;if(d.ket=d.cursor,e=d.find_among_b(l,4))switch(d.bra=d.cursor,e){case 1:h()&&(d.slice_del(),d.ket=d.cursor,d.limit,d.cursor,k("u","g")&&k("i","c"));break;case 2:d.slice_from("c")}}(),d.cursor=d.limit_backward,function(){for(var e;;){if(d.bra=d.cursor,e=d.find_among(a,3))switch(d.ket=d.cursor,e){case 1:d.slice_from("ã");continue;case 2:d.slice_from("õ");continue;case 3:if(d.cursor>=d.limit)break;d.cursor++;continue}break}}(),!0}},function(e){return"function"==typeof e.update?e.update(function(e){return r.setCurrent(e),r.stem(),r.getCurrent()}):(r.setCurrent(e),r.stem(),r.getCurrent())}),e.Pipeline.registerFunction(e.pt.stemmer,"stemmer-pt"),e.pt.stopWordFilter=e.generateStopWordFilter("a ao aos aquela aquelas aquele aqueles aquilo as até com como da das de dela delas dele deles depois do dos e ela elas ele eles em entre era eram essa essas esse esses esta estamos estas estava estavam este esteja estejam estejamos estes esteve estive estivemos estiver estivera estiveram estiverem estivermos estivesse estivessem estivéramos estivéssemos estou está estávamos estão eu foi fomos for fora foram forem formos fosse fossem fui fôramos fôssemos haja hajam hajamos havemos hei houve houvemos houver houvera houveram houverei houverem houveremos houveria houveriam houvermos houverá houverão houveríamos houvesse houvessem houvéramos houvéssemos há hão isso isto já lhe lhes mais mas me mesmo meu meus minha minhas muito na nas nem no nos nossa nossas nosso nossos num numa não nós o os ou para pela pelas pelo pelos por qual quando que quem se seja sejam sejamos sem serei seremos seria seriam será serão seríamos seu seus somos sou sua suas são só também te tem temos tenha tenham tenhamos tenho terei teremos teria teriam terá terão teríamos teu teus teve tinha tinham tive tivemos tiver tivera tiveram tiverem tivermos tivesse tivessem tivéramos tivéssemos tu tua tuas tém tínhamos um uma você vocês vos à às éramos".split(" ")),e.Pipeline.registerFunction(e.pt.stopWordFilter,"stopWordFilter-pt")}}); \ No newline at end of file diff --git a/_static/javascripts/lunr/lunr.ro.js b/_static/javascripts/lunr/lunr.ro.js new file mode 100644 index 000000000..b19627e1b --- /dev/null +++ b/_static/javascripts/lunr/lunr.ro.js @@ -0,0 +1 @@ +!function(e,i){"function"==typeof define&&define.amd?define(i):"object"==typeof exports?module.exports=i():i()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var h,z,i;e.ro=function(){this.pipeline.reset(),this.pipeline.add(e.ro.trimmer,e.ro.stopWordFilter,e.ro.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.ro.stemmer))},e.ro.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.ro.trimmer=e.trimmerSupport.generateTrimmer(e.ro.wordCharacters),e.Pipeline.registerFunction(e.ro.trimmer,"trimmer-ro"),e.ro.stemmer=(h=e.stemmerSupport.Among,z=e.stemmerSupport.SnowballProgram,i=new function(){var r,n,t,a,o=[new h("",-1,3),new h("I",0,1),new h("U",0,2)],s=[new h("ea",-1,3),new h("aţia",-1,7),new h("aua",-1,2),new h("iua",-1,4),new h("aţie",-1,7),new h("ele",-1,3),new h("ile",-1,5),new h("iile",6,4),new h("iei",-1,4),new h("atei",-1,6),new h("ii",-1,4),new h("ului",-1,1),new h("ul",-1,1),new h("elor",-1,3),new h("ilor",-1,4),new h("iilor",14,4)],c=[new h("icala",-1,4),new h("iciva",-1,4),new h("ativa",-1,5),new h("itiva",-1,6),new h("icale",-1,4),new h("aţiune",-1,5),new h("iţiune",-1,6),new h("atoare",-1,5),new h("itoare",-1,6),new h("ătoare",-1,5),new h("icitate",-1,4),new h("abilitate",-1,1),new h("ibilitate",-1,2),new h("ivitate",-1,3),new h("icive",-1,4),new h("ative",-1,5),new h("itive",-1,6),new h("icali",-1,4),new h("atori",-1,5),new h("icatori",18,4),new h("itori",-1,6),new h("ători",-1,5),new h("icitati",-1,4),new h("abilitati",-1,1),new h("ivitati",-1,3),new h("icivi",-1,4),new h("ativi",-1,5),new h("itivi",-1,6),new h("icităi",-1,4),new h("abilităi",-1,1),new h("ivităi",-1,3),new h("icităţi",-1,4),new h("abilităţi",-1,1),new h("ivităţi",-1,3),new h("ical",-1,4),new h("ator",-1,5),new h("icator",35,4),new h("itor",-1,6),new h("ător",-1,5),new h("iciv",-1,4),new h("ativ",-1,5),new h("itiv",-1,6),new h("icală",-1,4),new h("icivă",-1,4),new h("ativă",-1,5),new h("itivă",-1,6)],u=[new h("ica",-1,1),new h("abila",-1,1),new h("ibila",-1,1),new h("oasa",-1,1),new h("ata",-1,1),new h("ita",-1,1),new h("anta",-1,1),new h("ista",-1,3),new h("uta",-1,1),new h("iva",-1,1),new h("ic",-1,1),new h("ice",-1,1),new h("abile",-1,1),new h("ibile",-1,1),new h("isme",-1,3),new h("iune",-1,2),new h("oase",-1,1),new h("ate",-1,1),new h("itate",17,1),new h("ite",-1,1),new h("ante",-1,1),new h("iste",-1,3),new h("ute",-1,1),new h("ive",-1,1),new h("ici",-1,1),new h("abili",-1,1),new h("ibili",-1,1),new h("iuni",-1,2),new h("atori",-1,1),new h("osi",-1,1),new h("ati",-1,1),new h("itati",30,1),new h("iti",-1,1),new h("anti",-1,1),new h("isti",-1,3),new h("uti",-1,1),new h("işti",-1,3),new h("ivi",-1,1),new h("ităi",-1,1),new h("oşi",-1,1),new h("ităţi",-1,1),new h("abil",-1,1),new h("ibil",-1,1),new h("ism",-1,3),new h("ator",-1,1),new h("os",-1,1),new h("at",-1,1),new h("it",-1,1),new h("ant",-1,1),new h("ist",-1,3),new h("ut",-1,1),new h("iv",-1,1),new h("ică",-1,1),new h("abilă",-1,1),new h("ibilă",-1,1),new h("oasă",-1,1),new h("ată",-1,1),new h("ită",-1,1),new h("antă",-1,1),new h("istă",-1,3),new h("ută",-1,1),new h("ivă",-1,1)],w=[new h("ea",-1,1),new h("ia",-1,1),new h("esc",-1,1),new h("ăsc",-1,1),new h("ind",-1,1),new h("ând",-1,1),new h("are",-1,1),new h("ere",-1,1),new h("ire",-1,1),new h("âre",-1,1),new h("se",-1,2),new h("ase",10,1),new h("sese",10,2),new h("ise",10,1),new h("use",10,1),new h("âse",10,1),new h("eşte",-1,1),new h("ăşte",-1,1),new h("eze",-1,1),new h("ai",-1,1),new h("eai",19,1),new h("iai",19,1),new h("sei",-1,2),new h("eşti",-1,1),new h("ăşti",-1,1),new h("ui",-1,1),new h("ezi",-1,1),new h("âi",-1,1),new h("aşi",-1,1),new h("seşi",-1,2),new h("aseşi",29,1),new h("seseşi",29,2),new h("iseşi",29,1),new h("useşi",29,1),new h("âseşi",29,1),new h("işi",-1,1),new h("uşi",-1,1),new h("âşi",-1,1),new h("aţi",-1,2),new h("eaţi",38,1),new h("iaţi",38,1),new h("eţi",-1,2),new h("iţi",-1,2),new h("âţi",-1,2),new h("arăţi",-1,1),new h("serăţi",-1,2),new h("aserăţi",45,1),new h("seserăţi",45,2),new h("iserăţi",45,1),new h("userăţi",45,1),new h("âserăţi",45,1),new h("irăţi",-1,1),new h("urăţi",-1,1),new h("ârăţi",-1,1),new h("am",-1,1),new h("eam",54,1),new h("iam",54,1),new h("em",-1,2),new h("asem",57,1),new h("sesem",57,2),new h("isem",57,1),new h("usem",57,1),new h("âsem",57,1),new h("im",-1,2),new h("âm",-1,2),new h("ăm",-1,2),new h("arăm",65,1),new h("serăm",65,2),new h("aserăm",67,1),new h("seserăm",67,2),new h("iserăm",67,1),new h("userăm",67,1),new h("âserăm",67,1),new h("irăm",65,1),new h("urăm",65,1),new h("ârăm",65,1),new h("au",-1,1),new h("eau",76,1),new h("iau",76,1),new h("indu",-1,1),new h("ându",-1,1),new h("ez",-1,1),new h("ească",-1,1),new h("ară",-1,1),new h("seră",-1,2),new h("aseră",84,1),new h("seseră",84,2),new h("iseră",84,1),new h("useră",84,1),new h("âseră",84,1),new h("iră",-1,1),new h("ură",-1,1),new h("âră",-1,1),new h("ează",-1,1)],i=[new h("a",-1,1),new h("e",-1,1),new h("ie",1,1),new h("i",-1,1),new h("ă",-1,1)],m=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,2,32,0,0,4],l=new z;function f(e,i){l.eq_s(1,e)&&(l.ket=l.cursor,l.in_grouping(m,97,259)&&l.slice_from(i))}function p(){if(l.out_grouping(m,97,259)){for(;!l.in_grouping(m,97,259);){if(l.cursor>=l.limit)return!0;l.cursor++}return!1}return!0}function d(){var e,i,r=l.cursor;if(l.in_grouping(m,97,259)){if(e=l.cursor,!p())return void(a=l.cursor);if(l.cursor=e,!function(){if(l.in_grouping(m,97,259))for(;!l.out_grouping(m,97,259);){if(l.cursor>=l.limit)return!0;l.cursor++}return!1}())return void(a=l.cursor)}l.cursor=r,l.out_grouping(m,97,259)&&(i=l.cursor,p()&&(l.cursor=i,l.in_grouping(m,97,259)&&l.cursor=l.limit)return!1;l.cursor++}for(;!l.out_grouping(m,97,259);){if(l.cursor>=l.limit)return!1;l.cursor++}return!0}function v(){return t<=l.cursor}function _(){var e,i=l.limit-l.cursor;if(l.ket=l.cursor,(e=l.find_among_b(c,46))&&(l.bra=l.cursor,v())){switch(e){case 1:l.slice_from("abil");break;case 2:l.slice_from("ibil");break;case 3:l.slice_from("iv");break;case 4:l.slice_from("ic");break;case 5:l.slice_from("at");break;case 6:l.slice_from("it")}return r=!0,l.cursor=l.limit-i,!0}return!1}function g(){var e,i;for(r=!1;;)if(i=l.limit-l.cursor,!_()){l.cursor=l.limit-i;break}if(l.ket=l.cursor,(e=l.find_among_b(u,62))&&(l.bra=l.cursor,n<=l.cursor)){switch(e){case 1:l.slice_del();break;case 2:l.eq_s_b(1,"ţ")&&(l.bra=l.cursor,l.slice_from("t"));break;case 3:l.slice_from("ist")}r=!0}}function k(){var e;l.ket=l.cursor,(e=l.find_among_b(i,5))&&(l.bra=l.cursor,a<=l.cursor&&1==e&&l.slice_del())}this.setCurrent=function(e){l.setCurrent(e)},this.getCurrent=function(){return l.getCurrent()},this.stem=function(){var e,i=l.cursor;return function(){for(var e,i;e=l.cursor,l.in_grouping(m,97,259)&&(i=l.cursor,l.bra=i,f("u","U"),l.cursor=i,f("i","I")),l.cursor=e,!(l.cursor>=l.limit);)l.cursor++}(),l.cursor=i,e=l.cursor,a=l.limit,n=t=a,d(),l.cursor=e,b()&&(t=l.cursor,b()&&(n=l.cursor)),l.limit_backward=i,l.cursor=l.limit,function(){var e,i;if(l.ket=l.cursor,(e=l.find_among_b(s,16))&&(l.bra=l.cursor,v()))switch(e){case 1:l.slice_del();break;case 2:l.slice_from("a");break;case 3:l.slice_from("e");break;case 4:l.slice_from("i");break;case 5:i=l.limit-l.cursor,l.eq_s_b(2,"ab")||(l.cursor=l.limit-i,l.slice_from("i"));break;case 6:l.slice_from("at");break;case 7:l.slice_from("aţi")}}(),l.cursor=l.limit,g(),l.cursor=l.limit,r||(l.cursor=l.limit,function(){var e,i,r;if(l.cursor>=a){if(i=l.limit_backward,l.limit_backward=a,l.ket=l.cursor,e=l.find_among_b(w,94))switch(l.bra=l.cursor,e){case 1:if(r=l.limit-l.cursor,!l.out_grouping_b(m,97,259)&&(l.cursor=l.limit-r,!l.eq_s_b(1,"u")))break;case 2:l.slice_del()}l.limit_backward=i}}(),l.cursor=l.limit),k(),l.cursor=l.limit_backward,function(){for(var e;;){if(l.bra=l.cursor,e=l.find_among(o,3))switch(l.ket=l.cursor,e){case 1:l.slice_from("i");continue;case 2:l.slice_from("u");continue;case 3:if(l.cursor>=l.limit)break;l.cursor++;continue}break}}(),!0}},function(e){return"function"==typeof e.update?e.update(function(e){return i.setCurrent(e),i.stem(),i.getCurrent()}):(i.setCurrent(e),i.stem(),i.getCurrent())}),e.Pipeline.registerFunction(e.ro.stemmer,"stemmer-ro"),e.ro.stopWordFilter=e.generateStopWordFilter("acea aceasta această aceea acei aceia acel acela acele acelea acest acesta aceste acestea aceşti aceştia acolo acord acum ai aia aibă aici al ale alea altceva altcineva am ar are asemenea asta astea astăzi asupra au avea avem aveţi azi aş aşadar aţi bine bucur bună ca care caut ce cel ceva chiar cinci cine cineva contra cu cum cumva curând curînd când cât câte câtva câţi cînd cît cîte cîtva cîţi că căci cărei căror cărui către da dacă dar datorită dată dau de deci deja deoarece departe deşi din dinaintea dintr- dintre doi doilea două drept după dă ea ei el ele eram este eu eşti face fata fi fie fiecare fii fim fiu fiţi frumos fără graţie halbă iar ieri la le li lor lui lângă lîngă mai mea mei mele mereu meu mi mie mine mult multă mulţi mulţumesc mâine mîine mă ne nevoie nici nicăieri nimeni nimeri nimic nişte noastre noastră noi noroc nostru nouă noştri nu opt ori oricare orice oricine oricum oricând oricât oricînd oricît oriunde patra patru patrulea pe pentru peste pic poate pot prea prima primul prin puţin puţina puţină până pînă rog sa sale sau se spate spre sub sunt suntem sunteţi sută sînt sîntem sînteţi să săi său ta tale te timp tine toate toată tot totuşi toţi trei treia treilea tu tăi tău un una unde undeva unei uneia unele uneori unii unor unora unu unui unuia unul vi voastre voastră voi vostru vouă voştri vreme vreo vreun vă zece zero zi zice îi îl îmi împotriva în înainte înaintea încotro încât încît între întrucât întrucît îţi ăla ălea ăsta ăstea ăştia şapte şase şi ştiu ţi ţie".split(" ")),e.Pipeline.registerFunction(e.ro.stopWordFilter,"stopWordFilter-ro")}}); \ No newline at end of file diff --git a/_static/javascripts/lunr/lunr.ru.js b/_static/javascripts/lunr/lunr.ru.js new file mode 100644 index 000000000..ac9924804 --- /dev/null +++ b/_static/javascripts/lunr/lunr.ru.js @@ -0,0 +1 @@ +!function(e,n){"function"==typeof define&&define.amd?define(n):"object"==typeof exports?module.exports=n():n()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var h,g,n;e.ru=function(){this.pipeline.reset(),this.pipeline.add(e.ru.trimmer,e.ru.stopWordFilter,e.ru.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.ru.stemmer))},e.ru.wordCharacters="Ѐ-҄҇-ԯᴫᵸⷠ-ⷿꙀ-ꚟ︮︯",e.ru.trimmer=e.trimmerSupport.generateTrimmer(e.ru.wordCharacters),e.Pipeline.registerFunction(e.ru.trimmer,"trimmer-ru"),e.ru.stemmer=(h=e.stemmerSupport.Among,g=e.stemmerSupport.SnowballProgram,n=new function(){var n,e,r=[new h("в",-1,1),new h("ив",0,2),new h("ыв",0,2),new h("вши",-1,1),new h("ивши",3,2),new h("ывши",3,2),new h("вшись",-1,1),new h("ившись",6,2),new h("ывшись",6,2)],t=[new h("ее",-1,1),new h("ие",-1,1),new h("ое",-1,1),new h("ые",-1,1),new h("ими",-1,1),new h("ыми",-1,1),new h("ей",-1,1),new h("ий",-1,1),new h("ой",-1,1),new h("ый",-1,1),new h("ем",-1,1),new h("им",-1,1),new h("ом",-1,1),new h("ым",-1,1),new h("его",-1,1),new h("ого",-1,1),new h("ему",-1,1),new h("ому",-1,1),new h("их",-1,1),new h("ых",-1,1),new h("ею",-1,1),new h("ою",-1,1),new h("ую",-1,1),new h("юю",-1,1),new h("ая",-1,1),new h("яя",-1,1)],w=[new h("ем",-1,1),new h("нн",-1,1),new h("вш",-1,1),new h("ивш",2,2),new h("ывш",2,2),new h("щ",-1,1),new h("ющ",5,1),new h("ующ",6,2)],i=[new h("сь",-1,1),new h("ся",-1,1)],u=[new h("ла",-1,1),new h("ила",0,2),new h("ыла",0,2),new h("на",-1,1),new h("ена",3,2),new h("ете",-1,1),new h("ите",-1,2),new h("йте",-1,1),new h("ейте",7,2),new h("уйте",7,2),new h("ли",-1,1),new h("или",10,2),new h("ыли",10,2),new h("й",-1,1),new h("ей",13,2),new h("уй",13,2),new h("л",-1,1),new h("ил",16,2),new h("ыл",16,2),new h("ем",-1,1),new h("им",-1,2),new h("ым",-1,2),new h("н",-1,1),new h("ен",22,2),new h("ло",-1,1),new h("ило",24,2),new h("ыло",24,2),new h("но",-1,1),new h("ено",27,2),new h("нно",27,1),new h("ет",-1,1),new h("ует",30,2),new h("ит",-1,2),new h("ыт",-1,2),new h("ют",-1,1),new h("уют",34,2),new h("ят",-1,2),new h("ны",-1,1),new h("ены",37,2),new h("ть",-1,1),new h("ить",39,2),new h("ыть",39,2),new h("ешь",-1,1),new h("ишь",-1,2),new h("ю",-1,2),new h("ую",44,2)],s=[new h("а",-1,1),new h("ев",-1,1),new h("ов",-1,1),new h("е",-1,1),new h("ие",3,1),new h("ье",3,1),new h("и",-1,1),new h("еи",6,1),new h("ии",6,1),new h("ами",6,1),new h("ями",6,1),new h("иями",10,1),new h("й",-1,1),new h("ей",12,1),new h("ией",13,1),new h("ий",12,1),new h("ой",12,1),new h("ам",-1,1),new h("ем",-1,1),new h("ием",18,1),new h("ом",-1,1),new h("ям",-1,1),new h("иям",21,1),new h("о",-1,1),new h("у",-1,1),new h("ах",-1,1),new h("ях",-1,1),new h("иях",26,1),new h("ы",-1,1),new h("ь",-1,1),new h("ю",-1,1),new h("ию",30,1),new h("ью",30,1),new h("я",-1,1),new h("ия",33,1),new h("ья",33,1)],o=[new h("ост",-1,1),new h("ость",-1,1)],c=[new h("ейше",-1,1),new h("н",-1,2),new h("ейш",-1,1),new h("ь",-1,3)],m=[33,65,8,232],l=new g;function f(){for(;!l.in_grouping(m,1072,1103);){if(l.cursor>=l.limit)return!1;l.cursor++}return!0}function a(){for(;!l.out_grouping(m,1072,1103);){if(l.cursor>=l.limit)return!1;l.cursor++}return!0}function p(e,n){var r,t;if(l.ket=l.cursor,r=l.find_among_b(e,n)){switch(l.bra=l.cursor,r){case 1:if(t=l.limit-l.cursor,!l.eq_s_b(1,"а")&&(l.cursor=l.limit-t,!l.eq_s_b(1,"я")))return!1;case 2:l.slice_del()}return!0}return!1}function d(e,n){var r;return l.ket=l.cursor,!!(r=l.find_among_b(e,n))&&(l.bra=l.cursor,1==r&&l.slice_del(),!0)}function _(){return!!d(t,26)&&(p(w,8),!0)}function b(){var e;l.ket=l.cursor,(e=l.find_among_b(o,2))&&(l.bra=l.cursor,n<=l.cursor&&1==e&&l.slice_del())}this.setCurrent=function(e){l.setCurrent(e)},this.getCurrent=function(){return l.getCurrent()},this.stem=function(){return e=l.limit,n=e,f()&&(e=l.cursor,a()&&f()&&a()&&(n=l.cursor)),l.cursor=l.limit,!(l.cursor>3]&1<<(7&s))return this.cursor++,!0}return!1},in_grouping_b:function(r,t,i){if(this.cursor>this.limit_backward){var s=b.charCodeAt(this.cursor-1);if(s<=i&&t<=s&&r[(s-=t)>>3]&1<<(7&s))return this.cursor--,!0}return!1},out_grouping:function(r,t,i){if(this.cursor>3]&1<<(7&s)))return this.cursor++,!0}return!1},out_grouping_b:function(r,t,i){if(this.cursor>this.limit_backward){var s=b.charCodeAt(this.cursor-1);if(i>3]&1<<(7&s)))return this.cursor--,!0}return!1},eq_s:function(r,t){if(this.limit-this.cursor>1),a=0,f=u=(l=r[i]).s_size){if(this.cursor=e+l.s_size,!l.method)return l.result;var m=l.method();if(this.cursor=e+l.s_size,m)return l.result}if((i=l.substring_i)<0)return 0}},find_among_b:function(r,t){for(var i=0,s=t,e=this.cursor,n=this.limit_backward,u=0,o=0,h=!1;;){for(var c=i+(s-i>>1),a=0,f=u=(_=r[i]).s_size){if(this.cursor=e-_.s_size,!_.method)return _.result;var m=_.method();if(this.cursor=e-_.s_size,m)return _.result}if((i=_.substring_i)<0)return 0}},replace_s:function(r,t,i){var s=i.length-(t-r);return b=b.substring(0,r)+i+b.substring(t),this.limit+=s,this.cursor>=t?this.cursor+=s:this.cursor>r&&(this.cursor=r),s},slice_check:function(){if(this.bra<0||this.bra>this.ket||this.ket>this.limit||this.limit>b.length)throw"faulty slice operation"},slice_from:function(r){this.slice_check(),this.replace_s(this.bra,this.ket,r)},slice_del:function(){this.slice_from("")},insert:function(r,t,i){var s=this.replace_s(r,t,i);r<=this.bra&&(this.bra+=s),r<=this.ket&&(this.ket+=s)},slice_to:function(){return this.slice_check(),b.substring(this.bra,this.ket)},eq_v_b:function(r){return this.eq_s_b(r.length,r)}}}},r.trimmerSupport={generateTrimmer:function(r){var t=new RegExp("^[^"+r+"]+"),i=new RegExp("[^"+r+"]+$");return function(r){return"function"==typeof r.update?r.update(function(r){return r.replace(t,"").replace(i,"")}):r.replace(t,"").replace(i,"")}}}}}); \ No newline at end of file diff --git a/_static/javascripts/lunr/lunr.sv.js b/_static/javascripts/lunr/lunr.sv.js new file mode 100644 index 000000000..6daf5f9d8 --- /dev/null +++ b/_static/javascripts/lunr/lunr.sv.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var r,l,n;e.sv=function(){this.pipeline.reset(),this.pipeline.add(e.sv.trimmer,e.sv.stopWordFilter,e.sv.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.sv.stemmer))},e.sv.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.sv.trimmer=e.trimmerSupport.generateTrimmer(e.sv.wordCharacters),e.Pipeline.registerFunction(e.sv.trimmer,"trimmer-sv"),e.sv.stemmer=(r=e.stemmerSupport.Among,l=e.stemmerSupport.SnowballProgram,n=new function(){var n,t,i=[new r("a",-1,1),new r("arna",0,1),new r("erna",0,1),new r("heterna",2,1),new r("orna",0,1),new r("ad",-1,1),new r("e",-1,1),new r("ade",6,1),new r("ande",6,1),new r("arne",6,1),new r("are",6,1),new r("aste",6,1),new r("en",-1,1),new r("anden",12,1),new r("aren",12,1),new r("heten",12,1),new r("ern",-1,1),new r("ar",-1,1),new r("er",-1,1),new r("heter",18,1),new r("or",-1,1),new r("s",-1,2),new r("as",21,1),new r("arnas",22,1),new r("ernas",22,1),new r("ornas",22,1),new r("es",21,1),new r("ades",26,1),new r("andes",26,1),new r("ens",21,1),new r("arens",29,1),new r("hetens",29,1),new r("erns",21,1),new r("at",-1,1),new r("andet",-1,1),new r("het",-1,1),new r("ast",-1,1)],s=[new r("dd",-1,-1),new r("gd",-1,-1),new r("nn",-1,-1),new r("dt",-1,-1),new r("gt",-1,-1),new r("kt",-1,-1),new r("tt",-1,-1)],a=[new r("ig",-1,1),new r("lig",0,1),new r("els",-1,1),new r("fullt",-1,3),new r("löst",-1,2)],o=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,24,0,32],u=[119,127,149],m=new l;this.setCurrent=function(e){m.setCurrent(e)},this.getCurrent=function(){return m.getCurrent()},this.stem=function(){var e,r=m.cursor;return function(){var e,r=m.cursor+3;if(t=m.limit,0<=r||r<=m.limit){for(n=r;;){if(e=m.cursor,m.in_grouping(o,97,246)){m.cursor=e;break}if(m.cursor=e,m.cursor>=m.limit)return;m.cursor++}for(;!m.out_grouping(o,97,246);){if(m.cursor>=m.limit)return;m.cursor++}(t=m.cursor)=t&&(m.limit_backward=t,m.cursor=m.limit,m.ket=m.cursor,e=m.find_among_b(i,37),m.limit_backward=r,e))switch(m.bra=m.cursor,e){case 1:m.slice_del();break;case 2:m.in_grouping_b(u,98,121)&&m.slice_del()}}(),m.cursor=m.limit,e=m.limit_backward,m.cursor>=t&&(m.limit_backward=t,m.cursor=m.limit,m.find_among_b(s,7)&&(m.cursor=m.limit,m.ket=m.cursor,m.cursor>m.limit_backward&&(m.bra=--m.cursor,m.slice_del())),m.limit_backward=e),m.cursor=m.limit,function(){var e,r;if(m.cursor>=t){if(r=m.limit_backward,m.limit_backward=t,m.cursor=m.limit,m.ket=m.cursor,e=m.find_among_b(a,5))switch(m.bra=m.cursor,e){case 1:m.slice_del();break;case 2:m.slice_from("lös");break;case 3:m.slice_from("full")}m.limit_backward=r}}(),!0}},function(e){return"function"==typeof e.update?e.update(function(e){return n.setCurrent(e),n.stem(),n.getCurrent()}):(n.setCurrent(e),n.stem(),n.getCurrent())}),e.Pipeline.registerFunction(e.sv.stemmer,"stemmer-sv"),e.sv.stopWordFilter=e.generateStopWordFilter("alla allt att av blev bli blir blivit de dem den denna deras dess dessa det detta dig din dina ditt du där då efter ej eller en er era ert ett från för ha hade han hans har henne hennes hon honom hur här i icke ingen inom inte jag ju kan kunde man med mellan men mig min mina mitt mot mycket ni nu när någon något några och om oss på samma sedan sig sin sina sitta själv skulle som så sådan sådana sådant till under upp ut utan vad var vara varför varit varje vars vart vem vi vid vilka vilkas vilken vilket vår våra vårt än är åt över".split(" ")),e.Pipeline.registerFunction(e.sv.stopWordFilter,"stopWordFilter-sv")}}); \ No newline at end of file diff --git a/_static/javascripts/lunr/lunr.th.js b/_static/javascripts/lunr/lunr.th.js new file mode 100644 index 000000000..ee8ef373a --- /dev/null +++ b/_static/javascripts/lunr/lunr.th.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(t){if(void 0===t)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===t.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var i="2"==t.version[0];t.th=function(){this.pipeline.reset(),this.pipeline.add(t.th.trimmer),i?this.tokenizer=t.th.tokenizer:(t.tokenizer&&(t.tokenizer=t.th.tokenizer),this.tokenizerFn&&(this.tokenizerFn=t.th.tokenizer))},t.th.wordCharacters="[฀-๿]",t.th.trimmer=t.trimmerSupport.generateTrimmer(t.th.wordCharacters),t.Pipeline.registerFunction(t.th.trimmer,"trimmer-th");var n=t.wordcut;n.init(),t.th.tokenizer=function(e){if(!arguments.length||null==e||null==e)return[];if(Array.isArray(e))return e.map(function(e){return i?new t.Token(e):e});var r=e.toString().replace(/^\s+/,"");return n.cut(r).split("|")}}}); \ No newline at end of file diff --git a/_static/javascripts/lunr/lunr.tr.js b/_static/javascripts/lunr/lunr.tr.js new file mode 100644 index 000000000..e8fb5a7df --- /dev/null +++ b/_static/javascripts/lunr/lunr.tr.js @@ -0,0 +1 @@ +!function(r,i){"function"==typeof define&&define.amd?define(i):"object"==typeof exports?module.exports=i():i()(r.lunr)}(this,function(){return function(r){if(void 0===r)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===r.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var mr,dr,i;r.tr=function(){this.pipeline.reset(),this.pipeline.add(r.tr.trimmer,r.tr.stopWordFilter,r.tr.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(r.tr.stemmer))},r.tr.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",r.tr.trimmer=r.trimmerSupport.generateTrimmer(r.tr.wordCharacters),r.Pipeline.registerFunction(r.tr.trimmer,"trimmer-tr"),r.tr.stemmer=(mr=r.stemmerSupport.Among,dr=r.stemmerSupport.SnowballProgram,i=new function(){var t,r=[new mr("m",-1,-1),new mr("n",-1,-1),new mr("miz",-1,-1),new mr("niz",-1,-1),new mr("muz",-1,-1),new mr("nuz",-1,-1),new mr("müz",-1,-1),new mr("nüz",-1,-1),new mr("mız",-1,-1),new mr("nız",-1,-1)],i=[new mr("leri",-1,-1),new mr("ları",-1,-1)],e=[new mr("ni",-1,-1),new mr("nu",-1,-1),new mr("nü",-1,-1),new mr("nı",-1,-1)],n=[new mr("in",-1,-1),new mr("un",-1,-1),new mr("ün",-1,-1),new mr("ın",-1,-1)],u=[new mr("a",-1,-1),new mr("e",-1,-1)],o=[new mr("na",-1,-1),new mr("ne",-1,-1)],s=[new mr("da",-1,-1),new mr("ta",-1,-1),new mr("de",-1,-1),new mr("te",-1,-1)],c=[new mr("nda",-1,-1),new mr("nde",-1,-1)],l=[new mr("dan",-1,-1),new mr("tan",-1,-1),new mr("den",-1,-1),new mr("ten",-1,-1)],a=[new mr("ndan",-1,-1),new mr("nden",-1,-1)],m=[new mr("la",-1,-1),new mr("le",-1,-1)],d=[new mr("ca",-1,-1),new mr("ce",-1,-1)],f=[new mr("im",-1,-1),new mr("um",-1,-1),new mr("üm",-1,-1),new mr("ım",-1,-1)],b=[new mr("sin",-1,-1),new mr("sun",-1,-1),new mr("sün",-1,-1),new mr("sın",-1,-1)],w=[new mr("iz",-1,-1),new mr("uz",-1,-1),new mr("üz",-1,-1),new mr("ız",-1,-1)],_=[new mr("siniz",-1,-1),new mr("sunuz",-1,-1),new mr("sünüz",-1,-1),new mr("sınız",-1,-1)],k=[new mr("lar",-1,-1),new mr("ler",-1,-1)],p=[new mr("niz",-1,-1),new mr("nuz",-1,-1),new mr("nüz",-1,-1),new mr("nız",-1,-1)],g=[new mr("dir",-1,-1),new mr("tir",-1,-1),new mr("dur",-1,-1),new mr("tur",-1,-1),new mr("dür",-1,-1),new mr("tür",-1,-1),new mr("dır",-1,-1),new mr("tır",-1,-1)],y=[new mr("casına",-1,-1),new mr("cesine",-1,-1)],z=[new mr("di",-1,-1),new mr("ti",-1,-1),new mr("dik",-1,-1),new mr("tik",-1,-1),new mr("duk",-1,-1),new mr("tuk",-1,-1),new mr("dük",-1,-1),new mr("tük",-1,-1),new mr("dık",-1,-1),new mr("tık",-1,-1),new mr("dim",-1,-1),new mr("tim",-1,-1),new mr("dum",-1,-1),new mr("tum",-1,-1),new mr("düm",-1,-1),new mr("tüm",-1,-1),new mr("dım",-1,-1),new mr("tım",-1,-1),new mr("din",-1,-1),new mr("tin",-1,-1),new mr("dun",-1,-1),new mr("tun",-1,-1),new mr("dün",-1,-1),new mr("tün",-1,-1),new mr("dın",-1,-1),new mr("tın",-1,-1),new mr("du",-1,-1),new mr("tu",-1,-1),new mr("dü",-1,-1),new mr("tü",-1,-1),new mr("dı",-1,-1),new mr("tı",-1,-1)],h=[new mr("sa",-1,-1),new mr("se",-1,-1),new mr("sak",-1,-1),new mr("sek",-1,-1),new mr("sam",-1,-1),new mr("sem",-1,-1),new mr("san",-1,-1),new mr("sen",-1,-1)],v=[new mr("miş",-1,-1),new mr("muş",-1,-1),new mr("müş",-1,-1),new mr("mış",-1,-1)],q=[new mr("b",-1,1),new mr("c",-1,2),new mr("d",-1,3),new mr("ğ",-1,4)],C=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,8,0,0,0,0,0,0,1],P=[1,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,1],F=[65],S=[65],W=[["a",[1,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],97,305],["e",[17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130],101,252],["ı",[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],97,305],["i",[17],101,105],["o",F,111,117],["ö",S,246,252],["u",F,111,117]],L=new dr;function x(r,i,e){for(;;){var n=L.limit-L.cursor;if(L.in_grouping_b(r,i,e)){L.cursor=L.limit-n;break}if(L.cursor=L.limit-n,L.cursor<=L.limit_backward)return!1;L.cursor--}return!0}function A(){var r,i;r=L.limit-L.cursor,x(C,97,305);for(var e=0;eL.limit_backward&&(L.cursor--,e=L.limit-L.cursor,i()))?(L.cursor=L.limit-e,!0):(L.cursor=L.limit-n,r()?(L.cursor=L.limit-n,!1):(L.cursor=L.limit-n,!(L.cursor<=L.limit_backward)&&(L.cursor--,!!i()&&(L.cursor=L.limit-n,!0))))}function j(r){return E(r,function(){return L.in_grouping_b(C,97,305)})}function T(){return j(function(){return L.eq_s_b(1,"n")})}function Z(){return j(function(){return L.eq_s_b(1,"y")})}function B(){return L.find_among_b(r,10)&&E(function(){return L.in_grouping_b(P,105,305)},function(){return L.out_grouping_b(C,97,305)})}function D(){return A()&&L.in_grouping_b(P,105,305)&&j(function(){return L.eq_s_b(1,"s")})}function G(){return L.find_among_b(i,2)}function H(){return A()&&L.find_among_b(n,4)&&T()}function I(){return A()&&L.find_among_b(s,4)}function J(){return A()&&L.find_among_b(c,2)}function K(){return A()&&L.find_among_b(f,4)&&Z()}function M(){return A()&&L.find_among_b(b,4)}function N(){return A()&&L.find_among_b(w,4)&&Z()}function O(){return L.find_among_b(_,4)}function Q(){return A()&&L.find_among_b(k,2)}function R(){return A()&&L.find_among_b(g,8)}function U(){return A()&&L.find_among_b(z,32)&&Z()}function V(){return L.find_among_b(h,8)&&Z()}function X(){return A()&&L.find_among_b(v,4)&&Z()}function Y(){var r=L.limit-L.cursor;return!(X()||(L.cursor=L.limit-r,U()||(L.cursor=L.limit-r,V()||(L.cursor=L.limit-r,L.eq_s_b(3,"ken")&&Z()))))}function $(){if(L.find_among_b(y,2)){var r=L.limit-L.cursor;if(O()||(L.cursor=L.limit-r,Q()||(L.cursor=L.limit-r,K()||(L.cursor=L.limit-r,M()||(L.cursor=L.limit-r,N()||(L.cursor=L.limit-r))))),X())return!1}return!0}function rr(){if(!A()||!L.find_among_b(p,4))return!0;var r=L.limit-L.cursor;return!U()&&(L.cursor=L.limit-r,!V())}function ir(){var r,i,e,n=L.limit-L.cursor;if(L.ket=L.cursor,t=!0,Y()&&(L.cursor=L.limit-n,$()&&(L.cursor=L.limit-n,function(){if(Q()){L.bra=L.cursor,L.slice_del();var r=L.limit-L.cursor;return L.ket=L.cursor,R()||(L.cursor=L.limit-r,U()||(L.cursor=L.limit-r,V()||(L.cursor=L.limit-r,X()||(L.cursor=L.limit-r)))),t=!1}return!0}()&&(L.cursor=L.limit-n,rr()&&(L.cursor=L.limit-n,e=L.limit-L.cursor,!(O()||(L.cursor=L.limit-e,N()||(L.cursor=L.limit-e,M()||(L.cursor=L.limit-e,K()))))||(L.bra=L.cursor,L.slice_del(),i=L.limit-L.cursor,L.ket=L.cursor,X()||(L.cursor=L.limit-i),0)))))){if(L.cursor=L.limit-n,!R())return;L.bra=L.cursor,L.slice_del(),L.ket=L.cursor,r=L.limit-L.cursor,O()||(L.cursor=L.limit-r,Q()||(L.cursor=L.limit-r,K()||(L.cursor=L.limit-r,M()||(L.cursor=L.limit-r,N()||(L.cursor=L.limit-r))))),X()||(L.cursor=L.limit-r)}L.bra=L.cursor,L.slice_del()}function er(){var r,i,e,n;if(L.ket=L.cursor,L.eq_s_b(2,"ki")){if(r=L.limit-L.cursor,I())return L.bra=L.cursor,L.slice_del(),i=L.limit-L.cursor,L.ket=L.cursor,Q()?(L.bra=L.cursor,L.slice_del(),er()):(L.cursor=L.limit-i,B()&&(L.bra=L.cursor,L.slice_del(),L.ket=L.cursor,Q()&&(L.bra=L.cursor,L.slice_del(),er()))),!0;if(L.cursor=L.limit-r,H()){if(L.bra=L.cursor,L.slice_del(),L.ket=L.cursor,e=L.limit-L.cursor,G())L.bra=L.cursor,L.slice_del();else{if(L.cursor=L.limit-e,L.ket=L.cursor,!B()&&(L.cursor=L.limit-e,!D()&&(L.cursor=L.limit-e,!er())))return!0;L.bra=L.cursor,L.slice_del(),L.ket=L.cursor,Q()&&(L.bra=L.cursor,L.slice_del(),er())}return!0}if(L.cursor=L.limit-r,J()){if(n=L.limit-L.cursor,G())L.bra=L.cursor,L.slice_del();else if(L.cursor=L.limit-n,D())L.bra=L.cursor,L.slice_del(),L.ket=L.cursor,Q()&&(L.bra=L.cursor,L.slice_del(),er());else if(L.cursor=L.limit-n,!er())return!1;return!0}}return!1}function nr(r){if(L.ket=L.cursor,!J()&&(L.cursor=L.limit-r,!A()||!L.find_among_b(o,2)))return!1;var i=L.limit-L.cursor;if(G())L.bra=L.cursor,L.slice_del();else if(L.cursor=L.limit-i,D())L.bra=L.cursor,L.slice_del(),L.ket=L.cursor,Q()&&(L.bra=L.cursor,L.slice_del(),er());else if(L.cursor=L.limit-i,!er())return!1;return!0}function tr(r){if(L.ket=L.cursor,!(A()&&L.find_among_b(a,2)||(L.cursor=L.limit-r,A()&&L.find_among_b(e,4))))return!1;var i=L.limit-L.cursor;return!(!D()&&(L.cursor=L.limit-i,!G()))&&(L.bra=L.cursor,L.slice_del(),L.ket=L.cursor,Q()&&(L.bra=L.cursor,L.slice_del(),er()),!0)}function ur(){var r,i=L.limit-L.cursor;return L.ket=L.cursor,!!(H()||(L.cursor=L.limit-i,A()&&L.find_among_b(m,2)&&Z()))&&(L.bra=L.cursor,L.slice_del(),r=L.limit-L.cursor,L.ket=L.cursor,!(!Q()||(L.bra=L.cursor,L.slice_del(),!er()))||(L.cursor=L.limit-r,L.ket=L.cursor,(B()||(L.cursor=L.limit-r,D()||(L.cursor=L.limit-r,er())))&&(L.bra=L.cursor,L.slice_del(),L.ket=L.cursor,Q()&&(L.bra=L.cursor,L.slice_del(),er())),!0))}function or(){var r,i,e=L.limit-L.cursor;if(L.ket=L.cursor,!(I()||(L.cursor=L.limit-e,A()&&L.in_grouping_b(P,105,305)&&Z()||(L.cursor=L.limit-e,A()&&L.find_among_b(u,2)&&Z()))))return!1;if(L.bra=L.cursor,L.slice_del(),L.ket=L.cursor,r=L.limit-L.cursor,B())L.bra=L.cursor,L.slice_del(),i=L.limit-L.cursor,L.ket=L.cursor,Q()||(L.cursor=L.limit-i);else if(L.cursor=L.limit-r,!Q())return!0;return L.bra=L.cursor,L.slice_del(),L.ket=L.cursor,er(),!0}function sr(){var r,i,e=L.limit-L.cursor;if(L.ket=L.cursor,Q())return L.bra=L.cursor,L.slice_del(),void er();if(L.cursor=L.limit-e,L.ket=L.cursor,A()&&L.find_among_b(d,2)&&T())if(L.bra=L.cursor,L.slice_del(),r=L.limit-L.cursor,L.ket=L.cursor,G())L.bra=L.cursor,L.slice_del();else{if(L.cursor=L.limit-r,L.ket=L.cursor,!B()&&(L.cursor=L.limit-r,!D())){if(L.cursor=L.limit-r,L.ket=L.cursor,!Q())return;if(L.bra=L.cursor,L.slice_del(),!er())return}L.bra=L.cursor,L.slice_del(),L.ket=L.cursor,Q()&&(L.bra=L.cursor,L.slice_del(),er())}else if(L.cursor=L.limit-e,!nr(e)&&(L.cursor=L.limit-e,!tr(e))){if(L.cursor=L.limit-e,L.ket=L.cursor,A()&&L.find_among_b(l,4))return L.bra=L.cursor,L.slice_del(),L.ket=L.cursor,i=L.limit-L.cursor,void(B()?(L.bra=L.cursor,L.slice_del(),L.ket=L.cursor,Q()&&(L.bra=L.cursor,L.slice_del(),er())):(L.cursor=L.limit-i,Q()?(L.bra=L.cursor,L.slice_del()):L.cursor=L.limit-i,er()));if(L.cursor=L.limit-e,!ur()){if(L.cursor=L.limit-e,G())return L.bra=L.cursor,void L.slice_del();L.cursor=L.limit-e,er()||(L.cursor=L.limit-e,or()||(L.cursor=L.limit-e,L.ket=L.cursor,(B()||(L.cursor=L.limit-e,D()))&&(L.bra=L.cursor,L.slice_del(),L.ket=L.cursor,Q()&&(L.bra=L.cursor,L.slice_del(),er()))))}}}function cr(r,i,e){if(L.cursor=L.limit-r,function(){for(;;){var r=L.limit-L.cursor;if(L.in_grouping_b(C,97,305)){L.cursor=L.limit-r;break}if(L.cursor=L.limit-r,L.cursor<=L.limit_backward)return!1;L.cursor--}return!0}()){var n=L.limit-L.cursor;if(!L.eq_s_b(1,i)&&(L.cursor=L.limit-n,!L.eq_s_b(1,e)))return!0;L.cursor=L.limit-r;var t=L.cursor;return L.insert(L.cursor,L.cursor,e),L.cursor=t,!1}return!0}function lr(r,i,e){for(;!L.eq_s(i,e);){if(L.cursor>=L.limit)return!0;L.cursor++}return i!=L.limit||(L.cursor=r,!1)}function ar(){var r,i,e=L.cursor;return!(!lr(r=L.cursor,2,"ad")||!lr(L.cursor=r,5,"soyad"))&&(L.limit_backward=e,L.cursor=L.limit,i=L.limit-L.cursor,(L.eq_s_b(1,"d")||(L.cursor=L.limit-i,L.eq_s_b(1,"g")))&&cr(i,"a","ı")&&cr(i,"e","i")&&cr(i,"o","u")&&cr(i,"ö","ü"),L.cursor=L.limit,function(){var r;if(L.ket=L.cursor,r=L.find_among_b(q,4))switch(L.bra=L.cursor,r){case 1:L.slice_from("p");break;case 2:L.slice_from("ç");break;case 3:L.slice_from("t");break;case 4:L.slice_from("k")}}(),!0)}this.setCurrent=function(r){L.setCurrent(r)},this.getCurrent=function(){return L.getCurrent()},this.stem=function(){return!!(function(){for(var r,i=L.cursor,e=2;;){for(r=L.cursor;!L.in_grouping(C,97,305);){if(L.cursor>=L.limit)return L.cursor=r,!(0e&&(this._events[n].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[n].length),"function"==typeof console.trace&&console.trace()));return this},r.prototype.once=function(n,t){if(!a(t))throw TypeError("listener must be a function");var e=!1;function r(){this.removeListener(n,r),e||(e=!0,t.apply(this,arguments))}return r.listener=t,this.on(n,r),this},r.prototype.removeListener=function(n,t){var e,r,i,o;if(!a(t))throw TypeError("listener must be a function");if(!this._events||!this._events[n])return this;if(i=(e=this._events[n]).length,r=-1,e===t||a(e.listener)&&e.listener===t)delete this._events[n],this._events.removeListener&&this.emit("removeListener",n,t);else if(c(e)){for(o=i;0this.maxLength)return i();if(!this.stat&&p(this.cache,o)){var t=this.cache[o];if(Array.isArray(t)&&(t="DIR"),!n||"DIR"===t)return i(null,t);if(n&&"FILE"===t)return i()}var e=this.statCache[o];if(void 0!==e){if(!1===e)return i(null,e);var s=e.isDirectory()?"DIR":"FILE";return n&&"FILE"===s?i():i(null,s,e)}var a=this,c=d("stat\0"+o,function(n,e){{if(e&&e.isSymbolicLink())return u.stat(o,function(n,t){n?a._stat2(r,o,null,e,i):a._stat2(r,o,n,t,i)});a._stat2(r,o,n,e,i)}});c&&u.lstat(o,c)},b.prototype._stat2=function(n,t,e,r,i){if(e)return this.statCache[t]=!1,i();var o="/"===n.slice(-1);if(this.statCache[t]=r,"/"===t.slice(-1)&&!r.isDirectory())return i(null,!1,r);var s=r.isDirectory()?"DIR":"FILE";return this.cache[t]=this.cache[t]||s,o&&"DIR"!==s?i():i(null,s,r)}}).call(this,_("_process"))},{"./common.js":15,"./sync.js":17,_process:24,assert:9,events:14,fs:12,inflight:18,inherits:19,minimatch:20,once:21,path:22,"path-is-absolute":23,util:28}],17:[function(e,r,n){(function(i){(r.exports=n).GlobSync=h;var s=e("fs"),c=e("minimatch"),g=(c.Minimatch,e("./glob.js").Glob,e("util"),e("path")),u=e("assert"),l=e("path-is-absolute"),t=e("./common.js"),o=(t.alphasort,t.alphasorti,t.setopts),a=t.ownProp,f=t.childrenIgnored;function n(n,t){if("function"==typeof t||3===arguments.length)throw new TypeError("callback provided to sync glob\nSee: https://github.com/isaacs/node-glob/issues/167");return new h(n,t).found}function h(n,t){if(!n)throw new Error("must provide pattern");if("function"==typeof t||3===arguments.length)throw new TypeError("callback provided to sync glob\nSee: https://github.com/isaacs/node-glob/issues/167");if(!(this instanceof h))return new h(n,t);if(o(this,n,t),this.noprocess)return this;var e=this.minimatch.set.length;this.matches=new Array(e);for(var r=0;rthis.maxLength)return!1;if(!this.stat&&a(this.cache,t)){var r=this.cache[t];if(Array.isArray(r)&&(r="DIR"),!e||"DIR"===r)return r;if(e&&"FILE"===r)return!1}var i=this.statCache[t];if(!i){var o;try{o=s.lstatSync(t)}catch(n){return!1}if(o.isSymbolicLink())try{i=s.statSync(t)}catch(n){i=o}else i=o}r=(this.statCache[t]=i).isDirectory()?"DIR":"FILE";return this.cache[t]=this.cache[t]||r,(!e||"DIR"===r)&&r},h.prototype._mark=function(n){return t.mark(this,n)},h.prototype._makeAbs=function(n){return t.makeAbs(this,n)}}).call(this,e("_process"))},{"./common.js":15,"./glob.js":16,_process:24,assert:9,fs:12,minimatch:20,path:22,"path-is-absolute":23,util:28}],18:[function(t,r,n){(function(s){var n=t("wrappy"),a=Object.create(null),e=t("once");r.exports=n(function(n,t){return a[n]?(a[n].push(t),null):(a[n]=[t],o=n,e(function n(){var t=a[o],e=t.length,r=function(n){for(var t=n.length,e=[],r=0;re?(t.splice(0,e),s.nextTick(function(){n.apply(null,r)})):delete a[o]}}));var o})}).call(this,t("_process"))},{_process:24,once:21,wrappy:29}],19:[function(n,t,e){"function"==typeof Object.create?t.exports=function(n,t){n.super_=t,n.prototype=Object.create(t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}})}:t.exports=function(n,t){n.super_=t;var e=function(){};e.prototype=t.prototype,n.prototype=new e,n.prototype.constructor=n}},{}],20:[function(n,t,e){(t.exports=s).Minimatch=i;var u={sep:"/"};try{u=n("path")}catch(n){}var M=s.GLOBSTAR=i.GLOBSTAR={},r=n("brace-expansion"),C={"!":{open:"(?:(?!(?:",close:"))[^/]*?)"},"?":{open:"(?:",close:")?"},"+":{open:"(?:",close:")+"},"*":{open:"(?:",close:")*"},"@":{open:"(?:",close:")"}},P="[^/]",z=P+"*?",B="().*{}+?[]^$\\!".split("").reduce(function(n,t){return n[t]=!0,n},{});var l=/\/+/;function o(t,e){t=t||{},e=e||{};var r={};return Object.keys(e).forEach(function(n){r[n]=e[n]}),Object.keys(t).forEach(function(n){r[n]=t[n]}),r}function s(n,t,e){if("string"!=typeof t)throw new TypeError("glob pattern string required");return e||(e={}),!(!e.nocomment&&"#"===t.charAt(0))&&(""===t.trim()?""===n:new i(t,e).match(n))}function i(n,t){if(!(this instanceof i))return new i(n,t);if("string"!=typeof n)throw new TypeError("glob pattern string required");t||(t={}),n=n.trim(),"/"!==u.sep&&(n=n.split(u.sep).join("/")),this.options=t,this.set=[],this.pattern=n,this.regexp=null,this.negate=!1,this.comment=!1,this.empty=!1,this.make()}function a(n,t){if(t||(t=this instanceof i?this.options:{}),void 0===(n=void 0===n?this.pattern:n))throw new TypeError("undefined pattern");return t.nobrace||!n.match(/\{.*\}/)?[n]:r(n)}s.filter=function(r,i){return i=i||{},function(n,t,e){return s(n,r,i)}},s.defaults=function(r){if(!r||!Object.keys(r).length)return s;var i=s,n=function(n,t,e){return i.minimatch(n,t,o(r,e))};return n.Minimatch=function(n,t){return new i.Minimatch(n,o(r,t))},n},i.defaults=function(n){return n&&Object.keys(n).length?s.defaults(n).Minimatch:i},i.prototype.debug=function(){},i.prototype.make=function(){if(this._made)return;var n=this.pattern,t=this.options;if(!t.nocomment&&"#"===n.charAt(0))return void(this.comment=!0);if(!n)return void(this.empty=!0);this.parseNegate();var e=this.globSet=this.braceExpand();t.debug&&(this.debug=console.error);this.debug(this.pattern,e),e=this.globParts=e.map(function(n){return n.split(l)}),this.debug(this.pattern,e),e=e.map(function(n,t,e){return n.map(this.parse,this)},this),this.debug(this.pattern,e),e=e.filter(function(n){return-1===n.indexOf(!1)}),this.debug(this.pattern,e),this.set=e},i.prototype.parseNegate=function(){var n=this.pattern,t=!1,e=this.options,r=0;if(e.nonegate)return;for(var i=0,o=n.length;i>> no match, partial?",n,f,t,h),f!==s))}if("string"==typeof u?(c=r.nocase?l.toLowerCase()===u.toLowerCase():l===u,this.debug("string match",u,l,c)):(c=l.match(u),this.debug("pattern match",u,l,c)),!c)return!1}if(i===s&&o===a)return!0;if(i===s)return e;if(o===a)return i===s-1&&""===n[i];throw new Error("wtf?")}},{"brace-expansion":11,path:22}],21:[function(n,t,e){var r=n("wrappy");function i(n){var t=function(){return t.called?t.value:(t.called=!0,t.value=n.apply(this,arguments))};return t.called=!1,t}function o(n){var t=function(){if(t.called)throw new Error(t.onceError);return t.called=!0,t.value=n.apply(this,arguments)},e=n.name||"Function wrapped with `once`";return t.onceError=e+" shouldn't be called more than once",t.called=!1,t}t.exports=r(i),t.exports.strict=r(o),i.proto=i(function(){Object.defineProperty(Function.prototype,"once",{value:function(){return i(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return o(this)},configurable:!0})})},{wrappy:29}],22:[function(n,t,u){(function(i){function o(n,t){for(var e=0,r=n.length-1;0<=r;r--){var i=n[r];"."===i?n.splice(r,1):".."===i?(n.splice(r,1),e++):e&&(n.splice(r,1),e--)}if(t)for(;e--;e)n.unshift("..");return n}var t=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,s=function(n){return t.exec(n).slice(1)};function a(n,t){if(n.filter)return n.filter(t);for(var e=[],r=0;r":">",'"':""","'":"'","`":"`"},D=d.invert(N),F=function(t){var e=function(n){return t[n]},n="(?:"+d.keys(t).join("|")+")",r=RegExp(n),i=RegExp(n,"g");return function(n){return n=null==n?"":""+n,r.test(n)?n.replace(i,e):n}};d.escape=F(N),d.unescape=F(D),d.result=function(n,t,e){var r=null==n?void 0:n[t];return void 0===r&&(r=e),d.isFunction(r)?r.call(n):r};var M=0;d.uniqueId=function(n){var t=++M+"";return n?n+t:t},d.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var C=/(.)^/,P={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},z=/\\|'|\r|\n|\u2028|\u2029/g,B=function(n){return"\\"+P[n]};d.template=function(o,n,t){!n&&t&&(n=t),n=d.defaults({},n,d.templateSettings);var e=RegExp([(n.escape||C).source,(n.interpolate||C).source,(n.evaluate||C).source].join("|")+"|$","g"),s=0,a="__p+='";o.replace(e,function(n,t,e,r,i){return a+=o.slice(s,i).replace(z,B),s=i+n.length,t?a+="'+\n((__t=("+t+"))==null?'':_.escape(__t))+\n'":e?a+="'+\n((__t=("+e+"))==null?'':__t)+\n'":r&&(a+="';\n"+r+"\n__p+='"),n}),a+="';\n",n.variable||(a="with(obj||{}){\n"+a+"}\n"),a="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+a+"return __p;\n";try{var r=new Function(n.variable||"obj","_",a)}catch(n){throw n.source=a,n}var i=function(n){return r.call(this,n,d)},c=n.variable||"obj";return i.source="function("+c+"){\n"+a+"}",i},d.chain=function(n){var t=d(n);return t._chain=!0,t};var U=function(n,t){return n._chain?d(t).chain():t};d.mixin=function(e){d.each(d.functions(e),function(n){var t=d[n]=e[n];d.prototype[n]=function(){var n=[this._wrapped];return i.apply(n,arguments),U(this,t.apply(d,n))}})},d.mixin(d),d.each(["pop","push","reverse","shift","sort","splice","unshift"],function(t){var e=r[t];d.prototype[t]=function(){var n=this._wrapped;return e.apply(n,arguments),"shift"!==t&&"splice"!==t||0!==n.length||delete n[0],U(this,n)}}),d.each(["concat","join","slice"],function(n){var t=r[n];d.prototype[n]=function(){return U(this,t.apply(this._wrapped,arguments))}}),d.prototype.value=function(){return this._wrapped},d.prototype.valueOf=d.prototype.toJSON=d.prototype.value,d.prototype.toString=function(){return""+this._wrapped}}).call(this)},{}],26:[function(n,t,e){arguments[4][19][0].apply(e,arguments)},{dup:19}],27:[function(n,t,e){t.exports=function(n){return n&&"object"==typeof n&&"function"==typeof n.copy&&"function"==typeof n.fill&&"function"==typeof n.readUInt8}},{}],28:[function(h,n,k){(function(r,i){var a=/%[sdj%]/g;k.format=function(n){if(!_(n)){for(var t=[],e=0;e+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","_argument","simple","forward","ofType","_context","xml","uniqueCache","outerCache","nodeIndex","start","parent","useCache","lastChild","uniqueID","pseudo","args","setFilters","idx","matched","not","matcher","unmatched","has","lang","elemLang","hash","location","root","focus","activeElement","hasFocus","href","tabIndex","enabled","checked","selected","selectedIndex","empty","header","button","_matchIndexes","lt","gt","radio","checkbox","file","password","image","submit","reset","tokens","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","filters","parseOnly","soFar","preFilters","cached","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","token","compiled","_name","defaultValue","unique","isXMLDoc","escapeSelector","until","truncate","is","siblings","n","rneedsContext","rsingleTag","winnow","qualifier","self","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","children","contents","prev","sibling","targets","l","closest","index","prevAll","add","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","content","reverse","rnothtmlwhite","Identity","v","Thrower","ex","adoptValue","resolve","reject","noValue","method","promise","fail","then","Callbacks","object","_","flag","firing","memory","fired","locked","queue","firingIndex","fire","once","stopOnFalse","remove","disable","lock","fireWith","Deferred","func","tuples","state","always","deferred","catch","pipe","fns","newDefer","tuple","returned","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","special","that","mightThrow","TypeError","notifyWith","resolveWith","process","exceptionHook","stackTrace","rejectWith","getStackHook","setTimeout","stateString","when","singleValue","remaining","resolveContexts","resolveValues","primary","updateFunc","rerrorNames","stack","console","warn","message","readyException","readyList","completed","removeEventListener","readyWait","wait","readyState","doScroll","access","chainable","emptyGet","raw","bulk","_key","rmsPrefix","rdashAlpha","fcamelCase","_all","letter","toUpperCase","camelCase","string","acceptData","owner","Data","uid","defineProperty","configurable","set","data","prop","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","JSON","parse","removeData","_data","_removeData","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","count","defer","pnum","source","rcssNum","cssExpand","isAttached","composed","getRootNode","isHiddenWithinTree","style","display","css","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","cssNumber","initialInUnit","defaultDisplayMap","showHide","show","values","body","hide","toggle","div","rcheckableType","rtagName","rscriptType","createDocumentFragment","checkClone","cloneNode","noCloneChecked","option","wrapMap","thead","col","tr","td","_default","getAll","setGlobalEval","refElements","tbody","tfoot","colgroup","caption","th","optgroup","buildFragment","scripts","selection","ignored","wrap","attached","fragment","nodes","htmlPrefilter","createTextNode","rtypenamespace","returnTrue","returnFalse","expectSync","err","safeActiveElement","on","types","one","origFn","event","off","leverageNative","notAsync","saved","isTrigger","delegateType","stopPropagation","stopImmediatePropagation","preventDefault","trigger","Event","handleObjIn","eventHandle","events","t","handleObj","handlers","namespaces","origType","elemData","create","handle","triggered","dispatch","bindType","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","currentTarget","isImmediatePropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","enumerable","originalEvent","writable","load","noBubble","click","beforeunload","returnValue","props","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","now","isSimulated","altKey","bubbles","cancelable","changedTouches","ctrlKey","detail","eventPhase","metaKey","pageX","pageY","shiftKey","view","char","charCode","keyCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","which","blur","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","udataOld","udataCur","domManip","collection","hasScripts","iNoClone","valueIsFunction","html","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","append","prepend","insertBefore","before","after","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","original","insert","rnumnonpx","getStyles","opener","getComputedStyle","swap","old","rboxStyle","curCSS","computed","width","minWidth","maxWidth","getPropertyValue","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","container","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","right","pixelBoxStylesVal","boxSizingReliableVal","position","scrollboxSizeVal","offsetWidth","measure","round","parseFloat","reliableTrDimensionsVal","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","table","trChild","trStyle","height","parseInt","borderTopWidth","borderBottomWidth","offsetHeight","cssPrefixes","emptyStyle","vendorProps","finalPropName","final","cssProps","capName","vendorPropName","rdisplayswap","rcustomProp","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","subtract","max","boxModelAdjustment","dimension","box","isBorderBox","styles","computedVal","extra","delta","ceil","getWidthOrHeight","valueIsBorderBox","offsetProp","getClientRects","Tween","easing","cssHooks","opacity","animationIterationCount","columnCount","fillOpacity","flexGrow","flexShrink","gridArea","gridColumn","gridColumnEnd","gridColumnStart","gridRow","gridRowEnd","gridRowStart","lineHeight","order","orphans","widows","zIndex","zoom","origName","isCustomProp","setProperty","isFinite","getBoundingClientRect","scrollboxSizeBuggy","left","margin","padding","border","prefix","suffix","expand","expanded","parts","propHooks","run","percent","eased","duration","pos","step","fx","scrollTop","scrollLeft","linear","p","swing","cos","PI","fxNow","inProgress","opt","rfxtypes","rrun","schedule","hidden","requestAnimationFrame","interval","tick","createFxNow","genFx","includeWidth","createTween","animation","Animation","tweeners","properties","stopped","prefilters","currentTime","startTime","tweens","opts","specialEasing","originalProperties","originalOptions","gotoEnd","propFilter","bind","complete","timer","anim","*","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflow","overflowX","overflowY","prefilter","speed","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","delay","time","timeout","clearTimeout","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","attrNames","getter","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","for","class","addClass","classes","curValue","clazz","finalValue","removeClass","toggleClass","stateVal","isValidValue","classNames","hasClass","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","simulate","triggerHandler","attaches","rquery","parseXML","parserErrorElem","DOMParser","parseFromString","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","param","s","valueOrFunction","encodeURIComponent","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","active","lastModified","etag","url","isLocal","protocol","processData","async","contentType","accepts","json","responseFields","converters","* text","text html","text json","text xml","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","overrideMimeType","mimeType","status","abort","statusText","finalText","crossDomain","host","hasContent","ifModified","headers","beforeSend","success","send","nativeStatusText","responses","isSuccess","response","modified","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","current","conv","dataFilter","throws","ajaxConvert","getJSON","getScript","text script","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","visible","xhr","XMLHttpRequest","xhrSuccessStatus","0","1223","xhrSupported","cors","errorCallback","open","username","xhrFields","onload","onerror","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","scriptAttrs","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","params","animated","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","rect","win","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","","defaultExtra","funcName","unbind","delegate","undelegate","hover","fnOver","fnOut","proxy","holdReady","hold","parseJSON","isNumeric","isNaN","trim","define","amd","_jQuery","_$","$","noConflict"],"mappings":"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","file":"jquery-3.6.0.min.js"} \ No newline at end of file diff --git a/_static/language_data.js b/_static/language_data.js new file mode 100644 index 000000000..250f5665f --- /dev/null +++ b/_static/language_data.js @@ -0,0 +1,199 @@ +/* + * language_data.js + * ~~~~~~~~~~~~~~~~ + * + * This script contains the language-specific data used by searchtools.js, + * namely the list of stopwords, stemmer, scorer and splitter. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +var stopwords = ["a", "and", "are", "as", "at", "be", "but", "by", "for", "if", "in", "into", "is", "it", "near", "no", "not", "of", "on", "or", "such", "that", "the", "their", "then", "there", "these", "they", "this", "to", "was", "will", "with"]; + + +/* Non-minified version is copied as a separate JS file, is available */ + +/** + * Porter Stemmer + */ +var Stemmer = function() { + + var step2list = { + ational: 'ate', + tional: 'tion', + enci: 'ence', + anci: 'ance', + izer: 'ize', + bli: 'ble', + alli: 'al', + entli: 'ent', + eli: 'e', + ousli: 'ous', + ization: 'ize', + ation: 'ate', + ator: 'ate', + alism: 'al', + iveness: 'ive', + fulness: 'ful', + ousness: 'ous', + aliti: 'al', + iviti: 'ive', + biliti: 'ble', + logi: 'log' + }; + + var step3list = { + icate: 'ic', + ative: '', + alize: 'al', + iciti: 'ic', + ical: 'ic', + ful: '', + ness: '' + }; + + var c = "[^aeiou]"; // consonant + var v = "[aeiouy]"; // vowel + var C = c + "[^aeiouy]*"; // consonant sequence + var V = v + "[aeiou]*"; // vowel sequence + + var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 + var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 + var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 + var s_v = "^(" + C + ")?" + v; // vowel in stem + + this.stemWord = function (w) { + var stem; + var suffix; + var firstch; + var origword = w; + + if (w.length < 3) + return w; + + var re; + var re2; + var re3; + var re4; + + firstch = w.substr(0,1); + if (firstch == "y") + w = firstch.toUpperCase() + w.substr(1); + + // Step 1a + re = /^(.+?)(ss|i)es$/; + re2 = /^(.+?)([^s])s$/; + + if (re.test(w)) + w = w.replace(re,"$1$2"); + else if (re2.test(w)) + w = w.replace(re2,"$1$2"); + + // Step 1b + re = /^(.+?)eed$/; + re2 = /^(.+?)(ed|ing)$/; + if (re.test(w)) { + var fp = re.exec(w); + re = new RegExp(mgr0); + if (re.test(fp[1])) { + re = /.$/; + w = w.replace(re,""); + } + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = new RegExp(s_v); + if (re2.test(stem)) { + w = stem; + re2 = /(at|bl|iz)$/; + re3 = new RegExp("([^aeiouylsz])\\1$"); + re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re2.test(w)) + w = w + "e"; + else if (re3.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + else if (re4.test(w)) + w = w + "e"; + } + } + + // Step 1c + re = /^(.+?)y$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(s_v); + if (re.test(stem)) + w = stem + "i"; + } + + // Step 2 + re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step2list[suffix]; + } + + // Step 3 + re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step3list[suffix]; + } + + // Step 4 + re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + re2 = /^(.+?)(s|t)(ion)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + if (re.test(stem)) + w = stem; + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = new RegExp(mgr1); + if (re2.test(stem)) + w = stem; + } + + // Step 5 + re = /^(.+?)e$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + re2 = new RegExp(meq1); + re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) + w = stem; + } + re = /ll$/; + re2 = new RegExp(mgr1); + if (re.test(w) && re2.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + + // and turn initial Y back to y + if (firstch == "y") + w = firstch.toLowerCase() + w.substr(1); + return w; + } +} + diff --git a/_static/logo.svg b/_static/logo.svg new file mode 100644 index 000000000..29b511d98 --- /dev/null +++ b/_static/logo.svg @@ -0,0 +1,66 @@ + + + + + + + + + + + + + diff --git a/_static/material.css b/_static/material.css new file mode 100644 index 000000000..5fa22e886 --- /dev/null +++ b/_static/material.css @@ -0,0 +1,35 @@ +.dropdown { + width: 125px; + vertical-align: middle; +} + +.dropdownbutton { + color: inherit; + font-weight: 700; + font-size: .65rem; + +} + +.dropdown-content { + display: none; + position: absolute; + z-index: 1; + background-color: inherit; +} + +.dropdown-content a { + display: block; + width: 125px; + margin: 8px; + font-size: .65rem; + font-weight: 200; +} + +/* Change color of dropdown links on hover */ +.dropdown-content a:hover {} + +/* Show the dropdown menu on hover */ +.dropdown:hover .dropdown-content {display: block;} + +/* Change the background color of the dropdown button when the dropdown content is shown */ +.dropdown:hover .dropbtn {} \ No newline at end of file diff --git a/_static/minus.png b/_static/minus.png new file mode 100644 index 0000000000000000000000000000000000000000..d96755fdaf8bb2214971e0db9c1fd3077d7c419d GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^+#t*WBp7;*Yy1LIik>cxAr*|t7R?Mi>2?kWtu=nj kDsEF_5m^0CR;1wuP-*O&G^0G}KYk!hp00i_>zopr08q^qX#fBK literal 0 HcmV?d00001 diff --git a/_static/plus.png b/_static/plus.png new file mode 100644 index 0000000000000000000000000000000000000000..7107cec93a979b9a5f64843235a16651d563ce2d GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^+#t*WBp7;*Yy1LIik>cxAr*|t7R?Mi>2?kWtu>-2 m3q%Vub%g%s<8sJhVPMczOq}xhg9DJoz~JfX=d#Wzp$Pyb1r*Kz literal 0 HcmV?d00001 diff --git a/_static/pygments.css b/_static/pygments.css new file mode 100644 index 000000000..08bec689d --- /dev/null +++ b/_static/pygments.css @@ -0,0 +1,74 @@ +pre { line-height: 125%; } +td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +.highlight .hll { background-color: #ffffcc } +.highlight { background: #f8f8f8; } +.highlight .c { color: #3D7B7B; font-style: italic } /* Comment */ +.highlight .err { border: 1px solid #FF0000 } /* Error */ +.highlight .k { color: #008000; font-weight: bold } /* Keyword */ +.highlight .o { color: #666666 } /* Operator */ +.highlight .ch { color: #3D7B7B; font-style: italic } /* Comment.Hashbang */ +.highlight .cm { color: #3D7B7B; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #9C6500 } /* Comment.Preproc */ +.highlight .cpf { color: #3D7B7B; font-style: italic } /* Comment.PreprocFile */ +.highlight .c1 { color: #3D7B7B; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #3D7B7B; font-style: italic } /* Comment.Special */ +.highlight .gd { color: #A00000 } /* Generic.Deleted */ +.highlight .ge { font-style: italic } /* Generic.Emph */ +.highlight .gr { color: #E40000 } /* Generic.Error */ +.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.highlight .gi { color: #008400 } /* Generic.Inserted */ +.highlight .go { color: #717171 } /* Generic.Output */ +.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */ +.highlight .gs { font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.highlight .gt { color: #0044DD } /* Generic.Traceback */ +.highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */ +.highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */ +.highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */ +.highlight .kp { color: #008000 } /* Keyword.Pseudo */ +.highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #B00040 } /* Keyword.Type */ +.highlight .m { color: #666666 } /* Literal.Number */ +.highlight .s { color: #BA2121 } /* Literal.String */ +.highlight .na { color: #687822 } /* Name.Attribute */ +.highlight .nb { color: #008000 } /* Name.Builtin */ +.highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */ +.highlight .no { color: #880000 } /* Name.Constant */ +.highlight .nd { color: #AA22FF } /* Name.Decorator */ +.highlight .ni { color: #717171; font-weight: bold } /* Name.Entity */ +.highlight .ne { color: #CB3F38; font-weight: bold } /* Name.Exception */ +.highlight .nf { color: #0000FF } /* Name.Function */ +.highlight .nl { color: #767600 } /* Name.Label */ +.highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */ +.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */ +.highlight .nv { color: #19177C } /* Name.Variable */ +.highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */ +.highlight .w { color: #bbbbbb } /* Text.Whitespace */ +.highlight .mb { color: #666666 } /* Literal.Number.Bin */ +.highlight .mf { color: #666666 } /* Literal.Number.Float */ +.highlight .mh { color: #666666 } /* Literal.Number.Hex */ +.highlight .mi { color: #666666 } /* Literal.Number.Integer */ +.highlight .mo { color: #666666 } /* Literal.Number.Oct */ +.highlight .sa { color: #BA2121 } /* Literal.String.Affix */ +.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */ +.highlight .sc { color: #BA2121 } /* Literal.String.Char */ +.highlight .dl { color: #BA2121 } /* Literal.String.Delimiter */ +.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */ +.highlight .s2 { color: #BA2121 } /* Literal.String.Double */ +.highlight .se { color: #AA5D1F; font-weight: bold } /* Literal.String.Escape */ +.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */ +.highlight .si { color: #A45A77; font-weight: bold } /* Literal.String.Interpol */ +.highlight .sx { color: #008000 } /* Literal.String.Other */ +.highlight .sr { color: #A45A77 } /* Literal.String.Regex */ +.highlight .s1 { color: #BA2121 } /* Literal.String.Single */ +.highlight .ss { color: #19177C } /* Literal.String.Symbol */ +.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */ +.highlight .fm { color: #0000FF } /* Name.Function.Magic */ +.highlight .vc { color: #19177C } /* Name.Variable.Class */ +.highlight .vg { color: #19177C } /* Name.Variable.Global */ +.highlight .vi { color: #19177C } /* Name.Variable.Instance */ +.highlight .vm { color: #19177C } /* Name.Variable.Magic */ +.highlight .il { color: #666666 } /* Literal.Number.Integer.Long */ \ No newline at end of file diff --git a/_static/searchtools.js b/_static/searchtools.js new file mode 100644 index 000000000..97d56a74d --- /dev/null +++ b/_static/searchtools.js @@ -0,0 +1,566 @@ +/* + * searchtools.js + * ~~~~~~~~~~~~~~~~ + * + * Sphinx JavaScript utilities for the full-text search. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +/** + * Simple result scoring code. + */ +if (typeof Scorer === "undefined") { + var Scorer = { + // Implement the following function to further tweak the score for each result + // The function takes a result array [docname, title, anchor, descr, score, filename] + // and returns the new score. + /* + score: result => { + const [docname, title, anchor, descr, score, filename] = result + return score + }, + */ + + // query matches the full name of an object + objNameMatch: 11, + // or matches in the last dotted part of the object name + objPartialMatch: 6, + // Additive scores depending on the priority of the object + objPrio: { + 0: 15, // used to be importantResults + 1: 5, // used to be objectResults + 2: -5, // used to be unimportantResults + }, + // Used when the priority is not in the mapping. + objPrioDefault: 0, + + // query found in title + title: 15, + partialTitle: 7, + // query found in terms + term: 5, + partialTerm: 2, + }; +} + +const _removeChildren = (element) => { + while (element && element.lastChild) element.removeChild(element.lastChild); +}; + +/** + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping + */ +const _escapeRegExp = (string) => + string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string + +const _displayItem = (item, searchTerms) => { + const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; + const docUrlRoot = DOCUMENTATION_OPTIONS.URL_ROOT; + const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; + const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; + const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; + + const [docName, title, anchor, descr, score, _filename] = item; + + let listItem = document.createElement("li"); + let requestUrl; + let linkUrl; + if (docBuilder === "dirhtml") { + // dirhtml builder + let dirname = docName + "/"; + if (dirname.match(/\/index\/$/)) + dirname = dirname.substring(0, dirname.length - 6); + else if (dirname === "index/") dirname = ""; + requestUrl = docUrlRoot + dirname; + linkUrl = requestUrl; + } else { + // normal html builders + requestUrl = docUrlRoot + docName + docFileSuffix; + linkUrl = docName + docLinkSuffix; + } + let linkEl = listItem.appendChild(document.createElement("a")); + linkEl.href = linkUrl + anchor; + linkEl.dataset.score = score; + linkEl.innerHTML = title; + if (descr) + listItem.appendChild(document.createElement("span")).innerHTML = + " (" + descr + ")"; + else if (showSearchSummary) + fetch(requestUrl) + .then((responseData) => responseData.text()) + .then((data) => { + if (data) + listItem.appendChild( + Search.makeSearchSummary(data, searchTerms) + ); + }); + Search.output.appendChild(listItem); +}; +const _finishSearch = (resultCount) => { + Search.stopPulse(); + Search.title.innerText = _("Search Results"); + if (!resultCount) + Search.status.innerText = Documentation.gettext( + "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories." + ); + else + Search.status.innerText = _( + `Search finished, found ${resultCount} page(s) matching the search query.` + ); +}; +const _displayNextItem = ( + results, + resultCount, + searchTerms +) => { + // results left, load the summary and display it + // this is intended to be dynamic (don't sub resultsCount) + if (results.length) { + _displayItem(results.pop(), searchTerms); + setTimeout( + () => _displayNextItem(results, resultCount, searchTerms), + 5 + ); + } + // search finished, update title and status message + else _finishSearch(resultCount); +}; + +/** + * Default splitQuery function. Can be overridden in ``sphinx.search`` with a + * custom function per language. + * + * The regular expression works by splitting the string on consecutive characters + * that are not Unicode letters, numbers, underscores, or emoji characters. + * This is the same as ``\W+`` in Python, preserving the surrogate pair area. + */ +if (typeof splitQuery === "undefined") { + var splitQuery = (query) => query + .split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/gu) + .filter(term => term) // remove remaining empty strings +} + +/** + * Search Module + */ +const Search = { + _index: null, + _queued_query: null, + _pulse_status: -1, + + htmlToText: (htmlString) => { + const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html'); + htmlElement.querySelectorAll(".headerlink").forEach((el) => { el.remove() }); + const docContent = htmlElement.querySelector('[role="main"]'); + if (docContent !== undefined) return docContent.textContent; + console.warn( + "Content block not found. Sphinx search tries to obtain it via '[role=main]'. Could you check your theme or template." + ); + return ""; + }, + + init: () => { + const query = new URLSearchParams(window.location.search).get("q"); + document + .querySelectorAll('input[name="q"]') + .forEach((el) => (el.value = query)); + if (query) Search.performSearch(query); + }, + + loadIndex: (url) => + (document.body.appendChild(document.createElement("script")).src = url), + + setIndex: (index) => { + Search._index = index; + if (Search._queued_query !== null) { + const query = Search._queued_query; + Search._queued_query = null; + Search.query(query); + } + }, + + hasIndex: () => Search._index !== null, + + deferQuery: (query) => (Search._queued_query = query), + + stopPulse: () => (Search._pulse_status = -1), + + startPulse: () => { + if (Search._pulse_status >= 0) return; + + const pulse = () => { + Search._pulse_status = (Search._pulse_status + 1) % 4; + Search.dots.innerText = ".".repeat(Search._pulse_status); + if (Search._pulse_status >= 0) window.setTimeout(pulse, 500); + }; + pulse(); + }, + + /** + * perform a search for something (or wait until index is loaded) + */ + performSearch: (query) => { + // create the required interface elements + const searchText = document.createElement("h2"); + searchText.textContent = _("Searching"); + const searchSummary = document.createElement("p"); + searchSummary.classList.add("search-summary"); + searchSummary.innerText = ""; + const searchList = document.createElement("ul"); + searchList.classList.add("search"); + + const out = document.getElementById("search-results"); + Search.title = out.appendChild(searchText); + Search.dots = Search.title.appendChild(document.createElement("span")); + Search.status = out.appendChild(searchSummary); + Search.output = out.appendChild(searchList); + + const searchProgress = document.getElementById("search-progress"); + // Some themes don't use the search progress node + if (searchProgress) { + searchProgress.innerText = _("Preparing search..."); + } + Search.startPulse(); + + // index already loaded, the browser was quick! + if (Search.hasIndex()) Search.query(query); + else Search.deferQuery(query); + }, + + /** + * execute search (requires search index to be loaded) + */ + query: (query) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + const allTitles = Search._index.alltitles; + const indexEntries = Search._index.indexentries; + + // stem the search terms and add them to the correct list + const stemmer = new Stemmer(); + const searchTerms = new Set(); + const excludedTerms = new Set(); + const highlightTerms = new Set(); + const objectTerms = new Set(splitQuery(query.toLowerCase().trim())); + splitQuery(query.trim()).forEach((queryTerm) => { + const queryTermLower = queryTerm.toLowerCase(); + + // maybe skip this "word" + // stopwords array is from language_data.js + if ( + stopwords.indexOf(queryTermLower) !== -1 || + queryTerm.match(/^\d+$/) + ) + return; + + // stem the word + let word = stemmer.stemWord(queryTermLower); + // select the correct list + if (word[0] === "-") excludedTerms.add(word.substr(1)); + else { + searchTerms.add(word); + highlightTerms.add(queryTermLower); + } + }); + + if (SPHINX_HIGHLIGHT_ENABLED) { // set in sphinx_highlight.js + localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" ")) + } + + // console.debug("SEARCH: searching for:"); + // console.info("required: ", [...searchTerms]); + // console.info("excluded: ", [...excludedTerms]); + + // array of [docname, title, anchor, descr, score, filename] + let results = []; + _removeChildren(document.getElementById("search-progress")); + + const queryLower = query.toLowerCase(); + for (const [title, foundTitles] of Object.entries(allTitles)) { + if (title.toLowerCase().includes(queryLower) && (queryLower.length >= title.length/2)) { + for (const [file, id] of foundTitles) { + let score = Math.round(100 * queryLower.length / title.length) + results.push([ + docNames[file], + titles[file] !== title ? `${titles[file]} > ${title}` : title, + id !== null ? "#" + id : "", + null, + score, + filenames[file], + ]); + } + } + } + + // search for explicit entries in index directives + for (const [entry, foundEntries] of Object.entries(indexEntries)) { + if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) { + for (const [file, id] of foundEntries) { + let score = Math.round(100 * queryLower.length / entry.length) + results.push([ + docNames[file], + titles[file], + id ? "#" + id : "", + null, + score, + filenames[file], + ]); + } + } + } + + // lookup as object + objectTerms.forEach((term) => + results.push(...Search.performObjectSearch(term, objectTerms)) + ); + + // lookup as search terms in fulltext + results.push(...Search.performTermsSearch(searchTerms, excludedTerms)); + + // let the scorer override scores with a custom scoring function + if (Scorer.score) results.forEach((item) => (item[4] = Scorer.score(item))); + + // now sort the results by score (in opposite order of appearance, since the + // display function below uses pop() to retrieve items) and then + // alphabetically + results.sort((a, b) => { + const leftScore = a[4]; + const rightScore = b[4]; + if (leftScore === rightScore) { + // same score: sort alphabetically + const leftTitle = a[1].toLowerCase(); + const rightTitle = b[1].toLowerCase(); + if (leftTitle === rightTitle) return 0; + return leftTitle > rightTitle ? -1 : 1; // inverted is intentional + } + return leftScore > rightScore ? 1 : -1; + }); + + // remove duplicate search results + // note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept + let seen = new Set(); + results = results.reverse().reduce((acc, result) => { + let resultStr = result.slice(0, 4).concat([result[5]]).map(v => String(v)).join(','); + if (!seen.has(resultStr)) { + acc.push(result); + seen.add(resultStr); + } + return acc; + }, []); + + results = results.reverse(); + + // for debugging + //Search.lastresults = results.slice(); // a copy + // console.info("search results:", Search.lastresults); + + // print the results + _displayNextItem(results, results.length, searchTerms); + }, + + /** + * search for object names + */ + performObjectSearch: (object, objectTerms) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const objects = Search._index.objects; + const objNames = Search._index.objnames; + const titles = Search._index.titles; + + const results = []; + + const objectSearchCallback = (prefix, match) => { + const name = match[4] + const fullname = (prefix ? prefix + "." : "") + name; + const fullnameLower = fullname.toLowerCase(); + if (fullnameLower.indexOf(object) < 0) return; + + let score = 0; + const parts = fullnameLower.split("."); + + // check for different match types: exact matches of full name or + // "last name" (i.e. last dotted part) + if (fullnameLower === object || parts.slice(-1)[0] === object) + score += Scorer.objNameMatch; + else if (parts.slice(-1)[0].indexOf(object) > -1) + score += Scorer.objPartialMatch; // matches in last name + + const objName = objNames[match[1]][2]; + const title = titles[match[0]]; + + // If more than one term searched for, we require other words to be + // found in the name/title/description + const otherTerms = new Set(objectTerms); + otherTerms.delete(object); + if (otherTerms.size > 0) { + const haystack = `${prefix} ${name} ${objName} ${title}`.toLowerCase(); + if ( + [...otherTerms].some((otherTerm) => haystack.indexOf(otherTerm) < 0) + ) + return; + } + + let anchor = match[3]; + if (anchor === "") anchor = fullname; + else if (anchor === "-") anchor = objNames[match[1]][1] + "-" + fullname; + + const descr = objName + _(", in ") + title; + + // add custom score for some objects according to scorer + if (Scorer.objPrio.hasOwnProperty(match[2])) + score += Scorer.objPrio[match[2]]; + else score += Scorer.objPrioDefault; + + results.push([ + docNames[match[0]], + fullname, + "#" + anchor, + descr, + score, + filenames[match[0]], + ]); + }; + Object.keys(objects).forEach((prefix) => + objects[prefix].forEach((array) => + objectSearchCallback(prefix, array) + ) + ); + return results; + }, + + /** + * search for full-text terms in the index + */ + performTermsSearch: (searchTerms, excludedTerms) => { + // prepare search + const terms = Search._index.terms; + const titleTerms = Search._index.titleterms; + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + + const scoreMap = new Map(); + const fileMap = new Map(); + + // perform the search on the required terms + searchTerms.forEach((word) => { + const files = []; + const arr = [ + { files: terms[word], score: Scorer.term }, + { files: titleTerms[word], score: Scorer.title }, + ]; + // add support for partial matches + if (word.length > 2) { + const escapedWord = _escapeRegExp(word); + Object.keys(terms).forEach((term) => { + if (term.match(escapedWord) && !terms[word]) + arr.push({ files: terms[term], score: Scorer.partialTerm }); + }); + Object.keys(titleTerms).forEach((term) => { + if (term.match(escapedWord) && !titleTerms[word]) + arr.push({ files: titleTerms[word], score: Scorer.partialTitle }); + }); + } + + // no match but word was a required one + if (arr.every((record) => record.files === undefined)) return; + + // found search word in contents + arr.forEach((record) => { + if (record.files === undefined) return; + + let recordFiles = record.files; + if (recordFiles.length === undefined) recordFiles = [recordFiles]; + files.push(...recordFiles); + + // set score for the word in each file + recordFiles.forEach((file) => { + if (!scoreMap.has(file)) scoreMap.set(file, {}); + scoreMap.get(file)[word] = record.score; + }); + }); + + // create the mapping + files.forEach((file) => { + if (fileMap.has(file) && fileMap.get(file).indexOf(word) === -1) + fileMap.get(file).push(word); + else fileMap.set(file, [word]); + }); + }); + + // now check if the files don't contain excluded terms + const results = []; + for (const [file, wordList] of fileMap) { + // check if all requirements are matched + + // as search terms with length < 3 are discarded + const filteredTermCount = [...searchTerms].filter( + (term) => term.length > 2 + ).length; + if ( + wordList.length !== searchTerms.size && + wordList.length !== filteredTermCount + ) + continue; + + // ensure that none of the excluded terms is in the search result + if ( + [...excludedTerms].some( + (term) => + terms[term] === file || + titleTerms[term] === file || + (terms[term] || []).includes(file) || + (titleTerms[term] || []).includes(file) + ) + ) + break; + + // select one (max) score for the file. + const score = Math.max(...wordList.map((w) => scoreMap.get(file)[w])); + // add result to the result list + results.push([ + docNames[file], + titles[file], + "", + null, + score, + filenames[file], + ]); + } + return results; + }, + + /** + * helper function to return a node containing the + * search summary for a given text. keywords is a list + * of stemmed words. + */ + makeSearchSummary: (htmlText, keywords) => { + const text = Search.htmlToText(htmlText); + if (text === "") return null; + + const textLower = text.toLowerCase(); + const actualStartPosition = [...keywords] + .map((k) => textLower.indexOf(k.toLowerCase())) + .filter((i) => i > -1) + .slice(-1)[0]; + const startWithContext = Math.max(actualStartPosition - 120, 0); + + const top = startWithContext === 0 ? "" : "..."; + const tail = startWithContext + 240 < text.length ? "..." : ""; + + let summary = document.createElement("p"); + summary.classList.add("context"); + summary.textContent = top + text.substr(startWithContext, 240).trim() + tail; + + return summary; + }, +}; + +_ready(Search.init); diff --git a/_static/sphinx_highlight.js b/_static/sphinx_highlight.js new file mode 100644 index 000000000..aae669d7e --- /dev/null +++ b/_static/sphinx_highlight.js @@ -0,0 +1,144 @@ +/* Highlighting utilities for Sphinx HTML documentation. */ +"use strict"; + +const SPHINX_HIGHLIGHT_ENABLED = true + +/** + * highlight a given string on a node by wrapping it in + * span elements with the given class name. + */ +const _highlight = (node, addItems, text, className) => { + if (node.nodeType === Node.TEXT_NODE) { + const val = node.nodeValue; + const parent = node.parentNode; + const pos = val.toLowerCase().indexOf(text); + if ( + pos >= 0 && + !parent.classList.contains(className) && + !parent.classList.contains("nohighlight") + ) { + let span; + + const closestNode = parent.closest("body, svg, foreignObject"); + const isInSVG = closestNode && closestNode.matches("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.classList.add(className); + } + + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + parent.insertBefore( + span, + parent.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling + ) + ); + node.nodeValue = val.substr(0, pos); + + if (isInSVG) { + const rect = document.createElementNS( + "http://www.w3.org/2000/svg", + "rect" + ); + const bbox = parent.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute("class", className); + addItems.push({ parent: parent, target: rect }); + } + } + } else if (node.matches && !node.matches("button, select, textarea")) { + node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); + } +}; +const _highlightText = (thisNode, text, className) => { + let addItems = []; + _highlight(thisNode, addItems, text, className); + addItems.forEach((obj) => + obj.parent.insertAdjacentElement("beforebegin", obj.target) + ); +}; + +/** + * Small JavaScript module for the documentation. + */ +const SphinxHighlight = { + + /** + * highlight the search words provided in localstorage in the text + */ + highlightSearchWords: () => { + if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight + + // get and clear terms from localstorage + const url = new URL(window.location); + const highlight = + localStorage.getItem("sphinx_highlight_terms") + || url.searchParams.get("highlight") + || ""; + localStorage.removeItem("sphinx_highlight_terms") + url.searchParams.delete("highlight"); + window.history.replaceState({}, "", url); + + // get individual terms from highlight string + const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); + if (terms.length === 0) return; // nothing to do + + // There should never be more than one element matching "div.body" + const divBody = document.querySelectorAll("div.body"); + const body = divBody.length ? divBody[0] : document.querySelector("body"); + window.setTimeout(() => { + terms.forEach((term) => _highlightText(body, term, "highlighted")); + }, 10); + + const searchBox = document.getElementById("searchbox"); + if (searchBox === null) return; + searchBox.appendChild( + document + .createRange() + .createContextualFragment( + '" + ) + ); + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords: () => { + document + .querySelectorAll("#searchbox .highlight-link") + .forEach((el) => el.remove()); + document + .querySelectorAll("span.highlighted") + .forEach((el) => el.classList.remove("highlighted")); + localStorage.removeItem("sphinx_highlight_terms") + }, + + initEscapeListener: () => { + // only install a listener if it is really needed + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return; + if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) { + SphinxHighlight.hideSearchWords(); + event.preventDefault(); + } + }); + }, +}; + +_ready(SphinxHighlight.highlightSearchWords); +_ready(SphinxHighlight.initEscapeListener); diff --git a/_static/stylesheets/application-fixes.css b/_static/stylesheets/application-fixes.css new file mode 100644 index 000000000..a65d194b7 --- /dev/null +++ b/_static/stylesheets/application-fixes.css @@ -0,0 +1,423 @@ +.md-nav--primary ul, .md-nav--primary ul li ul, .md-nav--secondary ul, .md-nav--secondary ul li ul { + margin: 0; + padding: 0; + list-style: none +} + +.md-nav--primary ul li, .md-nav--primary ul li ul li, .md-nav--secondary ul li, .md-nav--secondary ul li ul li { + padding: 0 .6rem; +} + +.md-nav--primary a.reference, .md-nav--secondary a.reference { + display: block; + margin-top: .625em; + transition: color .125s; + text-overflow: ellipsis; + cursor: pointer; + overflow: hidden +} + +.md-typeset td p, .md-typeset th p { + margin: 0 +} + +.md-typeset .admonition, .md-typeset details { + font-size: 0.8rem +} + +.classifier:before { + font-style: normal; + margin: 0.5em; + content: ":"; +} + +dl.footnote > dt, dl.citation > dt { + float: left; +} + +code.xref { + background-color: transparent; + font-weight: bold; +} + +table.docutils { + width: 100%; +} + +.longtable tr td:first-child { + width: 50%; + white-space: nowrap; +} + +dt:target { + margin-top: -3.55rem; + padding-top: 3.45rem; +} + +.md-typeset code { + margin: 0 +} + +ul.search li div.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +span.highlighted { + background-color: #fbe54e; +} + +p.rubric { + margin-top: 1rem; + font-weight: bold; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} + +table.longtable { + border-collapse: collapse; +} + +.longtable tr { + border: solid; + border-width: 1px 0; +} + +.longtable tr:first-child { + border-top: none; +} + +.md-tabs code, kbd, pre, .md-footer-nav code, kbd, pre { + color: rgb(255, 255, 255); +} + +.toctree-wrapper.compound li { + list-style: none; + padding: 0; + margin: 0 0 0.1rem 0.2rem; +} + +table.indextable.genindextable li { + margin: 0 0.5rem; +} + +table.indextable.genindextable li ul li { + list-style: none; +} + +p.highlight-link { + margin: 0.625rem 0 0 0; +} + +table.longtable.docutils.align-default { + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; +} + +@media only screen and (max-width: 40em) { + table.longtable.docutils.align-default { + display: block; + } + + .longtable.docutils.align-default td { + padding-right: 1rem; + } +} + +.md-nav__extra_link:after { + font-family: Material Icons; + font-style: normal; + font-variant: normal; + font-weight: 400; + line-height: 1; + text-transform: none; + white-space: nowrap; + speak: none; + word-wrap: normal; + direction: ltr +} + +.md-nav__extra_link { + display: block; + margin-top: .625em; + transition: color .125s; + text-overflow: ellipsis; + cursor: pointer; + overflow: hidden +} + +.md-nav__extra_link:active { + color: #3f51b5 +} + +.md-nav__extra_link:focus, .md-nav__extra_link:hover { + color: #536dfe +} + +@media only screen and (max-width: 76.1875em) { + .md-nav--primary .md-nav--secondary .md-nav__extra_link { + position: static + } + + .md-nav--primary .md-nav--secondary .md-nav .md-nav__extra_link { + padding-left: 1.4rem + } + + .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav__extra_link { + padding-left: 2.6rem + } +} + +[data-md-color-primary=red] .md-nav__extra_link:active { + color: #ef5350 +} + +[data-md-color-primary=red] .md-nav__item--nested > .md-nav__extra_link { + color: inherit +} + +[data-md-color-primary=pink] .md-nav__extra_link:active { + color: #e91e63 +} + +[data-md-color-primary=pink] .md-nav__item--nested > .md-nav__extra_link { + color: inherit +} + +[data-md-color-primary=purple] .md-nav__extra_link:active { + color: #ab47bc +} + +[data-md-color-primary=purple] .md-nav__item--nested > .md-nav__extra_link { + color: inherit +} + +[data-md-color-primary=deep-purple] .md-nav__extra_link:active { + color: #7e57c2 +} + +[data-md-color-primary=deep-purple] .md-nav__item--nested > .md-nav__extra_link { + color: inherit +} + +[data-md-color-primary=indigo] .md-nav__extra_link:active { + color: #3f51b5 +} + +[data-md-color-primary=indigo] .md-nav__item--nested > .md-nav__extra_link { + color: inherit +} + +[data-md-color-primary=blue] .md-nav__extra_link:active { + color: #2196f3 +} + +[data-md-color-primary=blue] .md-nav__item--nested > .md-nav__extra_link { + color: inherit +} + +[data-md-color-primary=light-blue] .md-nav__extra_link:active { + color: #03a9f4 +} + +[data-md-color-primary=light-blue] .md-nav__item--nested > .md-nav__extra_link { + color: inherit +} + +[data-md-color-primary=cyan] .md-nav__extra_link:active { + color: #00bcd4 +} + +[data-md-color-primary=cyan] .md-nav__item--nested > .md-nav__extra_link { + color: inherit +} + +[data-md-color-primary=teal] .md-nav__extra_link:active { + color: #009688 +} + +[data-md-color-primary=teal] .md-nav__item--nested > .md-nav__extra_link { + color: inherit +} + +[data-md-color-primary=green] .md-nav__extra_link:active { + color: #4caf50 +} + +[data-md-color-primary=green] .md-nav__item--nested > .md-nav__extra_link { + color: inherit +} + +[data-md-color-primary=light-green] .md-nav__extra_link:active { + color: #7cb342 +} + +[data-md-color-primary=light-green] .md-nav__item--nested > .md-nav__extra_link { + color: inherit +} + +[data-md-color-primary=lime] .md-nav__extra_link:active { + color: #c0ca33 +} + +[data-md-color-primary=lime] .md-nav__item--nested > .md-nav__extra_link { + color: inherit +} + +[data-md-color-primary=yellow] .md-nav__extra_link:active { + color: #f9a825 +} + +[data-md-color-primary=yellow] .md-nav__item--nested > .md-nav__extra_link { + color: inherit +} + +[data-md-color-primary=amber] .md-nav__extra_link:active { + color: #ffa000 +} + +[data-md-color-primary=amber] .md-nav__item--nested > .md-nav__extra_link { + color: inherit +} + +[data-md-color-primary=orange] .md-nav__extra_link:active { + color: #fb8c00 +} + +[data-md-color-primary=orange] .md-nav__item--nested > .md-nav__extra_link { + color: inherit +} + +[data-md-color-primary=deep-orange] .md-nav__extra_link:active { + color: #ff7043 +} + +[data-md-color-primary=deep-orange] .md-nav__item--nested > .md-nav__extra_link { + color: inherit +} + +[data-md-color-primary=brown] .md-nav__extra_link:active { + color: #795548 +} + +[data-md-color-primary=brown] .md-nav__item--nested > .md-nav__extra_link { + color: inherit +} + +[data-md-color-primary=grey] .md-nav__extra_link:active { + color: #757575 +} + +[data-md-color-primary=grey] .md-nav__item--nested > .md-nav__extra_link { + color: inherit +} + +[data-md-color-primary=blue-grey] .md-nav__extra_link:active { + color: #546e7a +} + +[data-md-color-primary=blue-grey] .md-nav__item--nested > .md-nav__extra_link { + color: inherit +} + +[data-md-color-accent=red] .md-nav__extra_link:focus, [data-md-color-accent=red] .md-nav__extra_link:hover { + color: #ff1744 +} + +[data-md-color-accent=pink] .md-nav__extra_link:focus, [data-md-color-accent=pink] .md-nav__extra_link:hover { + color: #f50057 +} + +[data-md-color-accent=purple] .md-nav__extra_link:focus, [data-md-color-accent=purple] .md-nav__extra_link:hover { + color: #e040fb +} + +[data-md-color-accent=deep-purple] .md-nav__extra_link:focus, [data-md-color-accent=deep-purple] .md-nav__extra_link:hover { + color: #7c4dff +} + +[data-md-color-accent=indigo] .md-nav__extra_link:focus, [data-md-color-accent=indigo] .md-nav__extra_link:hover { + color: #536dfe +} + +[data-md-color-accent=blue] .md-nav__extra_link:focus, [data-md-color-accent=blue] .md-nav__extra_link:hover { + color: #448aff +} + +[data-md-color-accent=light-blue] .md-nav__extra_link:focus, [data-md-color-accent=light-blue] .md-nav__extra_link:hover { + color: #0091ea +} + +[data-md-color-accent=cyan] .md-nav__extra_link:focus, [data-md-color-accent=cyan] .md-nav__extra_link:hover { + color: #00b8d4 +} + +[data-md-color-accent=teal] .md-nav__extra_link:focus, [data-md-color-accent=teal] .md-nav__extra_link:hover { + color: #00bfa5 +} + +[data-md-color-accent=green] .md-nav__extra_link:focus, [data-md-color-accent=green] .md-nav__extra_link:hover { + color: #00c853 +} + +[data-md-color-accent=light-green] .md-nav__extra_link:focus, [data-md-color-accent=light-green] .md-nav__extra_link:hover { + color: #64dd17 +} + +[data-md-color-accent=lime] .md-nav__extra_link:focus, [data-md-color-accent=lime] .md-nav__extra_link:hover { + color: #aeea00 +} + +[data-md-color-accent=yellow] .md-nav__extra_link:focus, [data-md-color-accent=yellow] .md-nav__extra_link:hover { + color: #ffd600 +} + +[data-md-color-accent=amber] .md-nav__extra_link:focus, [data-md-color-accent=amber] .md-nav__extra_link:hover { + color: #ffab00 +} + +[data-md-color-accent=orange] .md-nav__extra_link:focus, [data-md-color-accent=orange] .md-nav__extra_link:hover { + color: #ff9100 +} + +[data-md-color-accent=deep-orange] .md-nav__extra_link:focus, [data-md-color-accent=deep-orange] .md-nav__extra_link:hover { + color: #ff6e40 +} + +div.rendered_html table { + font-size: 0.8rem !important; +} + +/* TODO: This is hacky; should have own class and not derive from link */ +.md-nav span.caption { + font-weight: 700; + pointer-events: none; +} + +.md-nav span.caption:hover, .md-nav span.caption:active { + color: #000; +} + +.md-typeset img.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +.md-typeset img.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +/* GH 93 */ +dl.citation dt span.brackets { + margin-right: 0.3rem; +} diff --git a/_static/stylesheets/application-palette.css b/_static/stylesheets/application-palette.css new file mode 100644 index 000000000..5eadc1c5b --- /dev/null +++ b/_static/stylesheets/application-palette.css @@ -0,0 +1,1352 @@ +button[data-md-color-accent], +button[data-md-color-primary] { + width: 6.5rem; + margin-bottom: .2rem; + padding: 1.2rem .4rem .2rem; + transition: background-color .25s, opacity .25s; + border-radius: .1rem; + color: #fff; + font-size: .64rem; + text-align: left; + cursor: pointer +} + +button[data-md-color-accent]:hover, +button[data-md-color-primary]:hover { + opacity: .75 +} + +button[data-md-color-primary=red] { + background-color: #ef5350 +} + +[data-md-color-primary=red] .md-typeset a { + color: #ef5350 +} + +[data-md-color-primary=red] .md-header, +[data-md-color-primary=red] .md-hero { + background-color: #ef5350 +} + +[data-md-color-primary=red] .md-nav__link--active, +[data-md-color-primary=red] .md-nav__link:active { + color: #ef5350 +} + +[data-md-color-primary=red] .md-nav__item--nested>.md-nav__link { + color: inherit +} + +button[data-md-color-primary=pink] { + background-color: #e91e63 +} + +[data-md-color-primary=pink] .md-typeset a { + color: #e91e63 +} + +[data-md-color-primary=pink] .md-header, +[data-md-color-primary=pink] .md-hero { + background-color: #e91e63 +} + +[data-md-color-primary=pink] .md-nav__link--active, +[data-md-color-primary=pink] .md-nav__link:active { + color: #e91e63 +} + +[data-md-color-primary=pink] .md-nav__item--nested>.md-nav__link { + color: inherit +} + +button[data-md-color-primary=purple] { + background-color: #ab47bc +} + +[data-md-color-primary=purple] .md-typeset a { + color: #ab47bc +} + +[data-md-color-primary=purple] .md-header, +[data-md-color-primary=purple] .md-hero { + background-color: #ab47bc +} + +[data-md-color-primary=purple] .md-nav__link--active, +[data-md-color-primary=purple] .md-nav__link:active { + color: #ab47bc +} + +[data-md-color-primary=purple] .md-nav__item--nested>.md-nav__link { + color: inherit +} + +button[data-md-color-primary=deep-purple] { + background-color: #7e57c2 +} + +[data-md-color-primary=deep-purple] .md-typeset a { + color: #7e57c2 +} + +[data-md-color-primary=deep-purple] .md-header, +[data-md-color-primary=deep-purple] .md-hero { + background-color: #7e57c2 +} + +[data-md-color-primary=deep-purple] .md-nav__link--active, +[data-md-color-primary=deep-purple] .md-nav__link:active { + color: #7e57c2 +} + +[data-md-color-primary=deep-purple] .md-nav__item--nested>.md-nav__link { + color: inherit +} + +button[data-md-color-primary=indigo] { + background-color: #3f51b5 +} + +[data-md-color-primary=indigo] .md-typeset a { + color: #3f51b5 +} + +[data-md-color-primary=indigo] .md-header, +[data-md-color-primary=indigo] .md-hero { + background-color: #3f51b5 +} + +[data-md-color-primary=indigo] .md-nav__link--active, +[data-md-color-primary=indigo] .md-nav__link:active { + color: #3f51b5 +} + +[data-md-color-primary=indigo] .md-nav__item--nested>.md-nav__link { + color: inherit +} + +button[data-md-color-primary=blue] { + background-color: #2196f3 +} + +[data-md-color-primary=blue] .md-typeset a { + color: #2196f3 +} + +[data-md-color-primary=blue] .md-header, +[data-md-color-primary=blue] .md-hero { + background-color: #2196f3 +} + +[data-md-color-primary=blue] .md-nav__link--active, +[data-md-color-primary=blue] .md-nav__link:active { + color: #2196f3 +} + +[data-md-color-primary=blue] .md-nav__item--nested>.md-nav__link { + color: inherit +} + +button[data-md-color-primary=light-blue] { + background-color: #03a9f4 +} + +[data-md-color-primary=light-blue] .md-typeset a { + color: #03a9f4 +} + +[data-md-color-primary=light-blue] .md-header, +[data-md-color-primary=light-blue] .md-hero { + background-color: #03a9f4 +} + +[data-md-color-primary=light-blue] .md-nav__link--active, +[data-md-color-primary=light-blue] .md-nav__link:active { + color: #03a9f4 +} + +[data-md-color-primary=light-blue] .md-nav__item--nested>.md-nav__link { + color: inherit +} + +button[data-md-color-primary=cyan] { + background-color: #00bcd4 +} + +[data-md-color-primary=cyan] .md-typeset a { + color: #00bcd4 +} + +[data-md-color-primary=cyan] .md-header, +[data-md-color-primary=cyan] .md-hero { + background-color: #00bcd4 +} + +[data-md-color-primary=cyan] .md-nav__link--active, +[data-md-color-primary=cyan] .md-nav__link:active { + color: #00bcd4 +} + +[data-md-color-primary=cyan] .md-nav__item--nested>.md-nav__link { + color: inherit +} + +button[data-md-color-primary=teal] { + background-color: #009688 +} + +[data-md-color-primary=teal] .md-typeset a { + color: #009688 +} + +[data-md-color-primary=teal] .md-header, +[data-md-color-primary=teal] .md-hero { + background-color: #009688 +} + +[data-md-color-primary=teal] .md-nav__link--active, +[data-md-color-primary=teal] .md-nav__link:active { + color: #009688 +} + +[data-md-color-primary=teal] .md-nav__item--nested>.md-nav__link { + color: inherit +} + +button[data-md-color-primary=green] { + background-color: #4caf50 +} + +[data-md-color-primary=green] .md-typeset a { + color: #4caf50 +} + +[data-md-color-primary=green] .md-header, +[data-md-color-primary=green] .md-hero { + background-color: #4caf50 +} + +[data-md-color-primary=green] .md-nav__link--active, +[data-md-color-primary=green] .md-nav__link:active { + color: #4caf50 +} + +[data-md-color-primary=green] .md-nav__item--nested>.md-nav__link { + color: inherit +} + +button[data-md-color-primary=light-green] { + background-color: #7cb342 +} + +[data-md-color-primary=light-green] .md-typeset a { + color: #7cb342 +} + +[data-md-color-primary=light-green] .md-header, +[data-md-color-primary=light-green] .md-hero { + background-color: #7cb342 +} + +[data-md-color-primary=light-green] .md-nav__link--active, +[data-md-color-primary=light-green] .md-nav__link:active { + color: #7cb342 +} + +[data-md-color-primary=light-green] .md-nav__item--nested>.md-nav__link { + color: inherit +} + +button[data-md-color-primary=lime] { + background-color: #c0ca33 +} + +[data-md-color-primary=lime] .md-typeset a { + color: #c0ca33 +} + +[data-md-color-primary=lime] .md-header, +[data-md-color-primary=lime] .md-hero { + background-color: #c0ca33 +} + +[data-md-color-primary=lime] .md-nav__link--active, +[data-md-color-primary=lime] .md-nav__link:active { + color: #c0ca33 +} + +[data-md-color-primary=lime] .md-nav__item--nested>.md-nav__link { + color: inherit +} + +button[data-md-color-primary=yellow] { + background-color: #f9a825 +} + +[data-md-color-primary=yellow] .md-typeset a { + color: #f9a825 +} + +[data-md-color-primary=yellow] .md-header, +[data-md-color-primary=yellow] .md-hero { + background-color: #f9a825 +} + +[data-md-color-primary=yellow] .md-nav__link--active, +[data-md-color-primary=yellow] .md-nav__link:active { + color: #f9a825 +} + +[data-md-color-primary=yellow] .md-nav__item--nested>.md-nav__link { + color: inherit +} + +button[data-md-color-primary=amber] { + background-color: #ffa000 +} + +[data-md-color-primary=amber] .md-typeset a { + color: #ffa000 +} + +[data-md-color-primary=amber] .md-header, +[data-md-color-primary=amber] .md-hero { + background-color: #ffa000 +} + +[data-md-color-primary=amber] .md-nav__link--active, +[data-md-color-primary=amber] .md-nav__link:active { + color: #ffa000 +} + +[data-md-color-primary=amber] .md-nav__item--nested>.md-nav__link { + color: inherit +} + +button[data-md-color-primary=orange] { + background-color: #fb8c00 +} + +[data-md-color-primary=orange] .md-typeset a { + color: #fb8c00 +} + +[data-md-color-primary=orange] .md-header, +[data-md-color-primary=orange] .md-hero { + background-color: #fb8c00 +} + +[data-md-color-primary=orange] .md-nav__link--active, +[data-md-color-primary=orange] .md-nav__link:active { + color: #fb8c00 +} + +[data-md-color-primary=orange] .md-nav__item--nested>.md-nav__link { + color: inherit +} + +button[data-md-color-primary=deep-orange] { + background-color: #ff7043 +} + +[data-md-color-primary=deep-orange] .md-typeset a { + color: #ff7043 +} + +[data-md-color-primary=deep-orange] .md-header, +[data-md-color-primary=deep-orange] .md-hero { + background-color: #ff7043 +} + +[data-md-color-primary=deep-orange] .md-nav__link--active, +[data-md-color-primary=deep-orange] .md-nav__link:active { + color: #ff7043 +} + +[data-md-color-primary=deep-orange] .md-nav__item--nested>.md-nav__link { + color: inherit +} + +button[data-md-color-primary=brown] { + background-color: #795548 +} + +[data-md-color-primary=brown] .md-typeset a { + color: #795548 +} + +[data-md-color-primary=brown] .md-header, +[data-md-color-primary=brown] .md-hero { + background-color: #795548 +} + +[data-md-color-primary=brown] .md-nav__link--active, +[data-md-color-primary=brown] .md-nav__link:active { + color: #795548 +} + +[data-md-color-primary=brown] .md-nav__item--nested>.md-nav__link { + color: inherit +} + +button[data-md-color-primary=grey] { + background-color: #757575 +} + +[data-md-color-primary=grey] .md-typeset a { + color: #757575 +} + +[data-md-color-primary=grey] .md-header, +[data-md-color-primary=grey] .md-hero { + background-color: #757575 +} + +[data-md-color-primary=grey] .md-nav__link--active, +[data-md-color-primary=grey] .md-nav__link:active { + color: #757575 +} + +[data-md-color-primary=grey] .md-nav__item--nested>.md-nav__link { + color: inherit +} + +button[data-md-color-primary=blue-grey] { + background-color: #546e7a +} + +[data-md-color-primary=blue-grey] .md-typeset a { + color: #546e7a +} + +[data-md-color-primary=blue-grey] .md-header, +[data-md-color-primary=blue-grey] .md-hero { + background-color: #546e7a +} + +[data-md-color-primary=blue-grey] .md-nav__link--active, +[data-md-color-primary=blue-grey] .md-nav__link:active { + color: #546e7a +} + +[data-md-color-primary=blue-grey] .md-nav__item--nested>.md-nav__link { + color: inherit +} + +button[data-md-color-primary=white] { + box-shadow: inset 0 0 .05rem rgba(0, 0, 0, .54) +} + +[data-md-color-primary=white] .md-header, +[data-md-color-primary=white] .md-hero, +button[data-md-color-primary=white] { + background-color: #fff; + color: rgba(0, 0, 0, .87) +} + +[data-md-color-primary=white] .md-hero--expand { + border-bottom: .05rem solid rgba(0, 0, 0, .07) +} + +button[data-md-color-accent=red] { + background-color: #ff1744 +} + +[data-md-color-accent=red] .md-typeset a:active, +[data-md-color-accent=red] .md-typeset a:hover { + color: #ff1744 +} + +[data-md-color-accent=red] .md-typeset .codehilite pre::-webkit-scrollbar-thumb:hover, +[data-md-color-accent=red] .md-typeset pre code::-webkit-scrollbar-thumb:hover { + background-color: #ff1744 +} + +[data-md-color-accent=red] .md-nav__link:focus, +[data-md-color-accent=red] .md-nav__link:hover, +[data-md-color-accent=red] .md-typeset .footnote li:hover .footnote-backref:hover, +[data-md-color-accent=red] .md-typeset .footnote li:target .footnote-backref, +[data-md-color-accent=red] .md-typeset .md-clipboard:active:before, +[data-md-color-accent=red] .md-typeset .md-clipboard:hover:before, +[data-md-color-accent=red] .md-typeset [id] .headerlink:focus, +[data-md-color-accent=red] .md-typeset [id]:hover .headerlink:hover, +[data-md-color-accent=red] .md-typeset [id]:target .headerlink { + color: #ff1744 +} + +[data-md-color-accent=red] .md-search__scrollwrap::-webkit-scrollbar-thumb:hover { + background-color: #ff1744 +} + +[data-md-color-accent=red] .md-search-result__link:hover, +[data-md-color-accent=red] .md-search-result__link[data-md-state=active] { + background-color: rgba(255, 23, 68, .1) +} + +[data-md-color-accent=red] .md-sidebar__scrollwrap::-webkit-scrollbar-thumb:hover { + background-color: #ff1744 +} + +[data-md-color-accent=red] .md-source-file:hover:before { + background-color: #ff1744 +} + +button[data-md-color-accent=pink] { + background-color: #f50057 +} + +[data-md-color-accent=pink] .md-typeset a:active, +[data-md-color-accent=pink] .md-typeset a:hover { + color: #f50057 +} + +[data-md-color-accent=pink] .md-typeset .codehilite pre::-webkit-scrollbar-thumb:hover, +[data-md-color-accent=pink] .md-typeset pre code::-webkit-scrollbar-thumb:hover { + background-color: #f50057 +} + +[data-md-color-accent=pink] .md-nav__link:focus, +[data-md-color-accent=pink] .md-nav__link:hover, +[data-md-color-accent=pink] .md-typeset .footnote li:hover .footnote-backref:hover, +[data-md-color-accent=pink] .md-typeset .footnote li:target .footnote-backref, +[data-md-color-accent=pink] .md-typeset .md-clipboard:active:before, +[data-md-color-accent=pink] .md-typeset .md-clipboard:hover:before, +[data-md-color-accent=pink] .md-typeset [id] .headerlink:focus, +[data-md-color-accent=pink] .md-typeset [id]:hover .headerlink:hover, +[data-md-color-accent=pink] .md-typeset [id]:target .headerlink { + color: #f50057 +} + +[data-md-color-accent=pink] .md-search__scrollwrap::-webkit-scrollbar-thumb:hover { + background-color: #f50057 +} + +[data-md-color-accent=pink] .md-search-result__link:hover, +[data-md-color-accent=pink] .md-search-result__link[data-md-state=active] { + background-color: rgba(245, 0, 87, .1) +} + +[data-md-color-accent=pink] .md-sidebar__scrollwrap::-webkit-scrollbar-thumb:hover { + background-color: #f50057 +} + +[data-md-color-accent=pink] .md-source-file:hover:before { + background-color: #f50057 +} + +button[data-md-color-accent=purple] { + background-color: #e040fb +} + +[data-md-color-accent=purple] .md-typeset a:active, +[data-md-color-accent=purple] .md-typeset a:hover { + color: #e040fb +} + +[data-md-color-accent=purple] .md-typeset .codehilite pre::-webkit-scrollbar-thumb:hover, +[data-md-color-accent=purple] .md-typeset pre code::-webkit-scrollbar-thumb:hover { + background-color: #e040fb +} + +[data-md-color-accent=purple] .md-nav__link:focus, +[data-md-color-accent=purple] .md-nav__link:hover, +[data-md-color-accent=purple] .md-typeset .footnote li:hover .footnote-backref:hover, +[data-md-color-accent=purple] .md-typeset .footnote li:target .footnote-backref, +[data-md-color-accent=purple] .md-typeset .md-clipboard:active:before, +[data-md-color-accent=purple] .md-typeset .md-clipboard:hover:before, +[data-md-color-accent=purple] .md-typeset [id] .headerlink:focus, +[data-md-color-accent=purple] .md-typeset [id]:hover .headerlink:hover, +[data-md-color-accent=purple] .md-typeset [id]:target .headerlink { + color: #e040fb +} + +[data-md-color-accent=purple] .md-search__scrollwrap::-webkit-scrollbar-thumb:hover { + background-color: #e040fb +} + +[data-md-color-accent=purple] .md-search-result__link:hover, +[data-md-color-accent=purple] .md-search-result__link[data-md-state=active] { + background-color: rgba(224, 64, 251, .1) +} + +[data-md-color-accent=purple] .md-sidebar__scrollwrap::-webkit-scrollbar-thumb:hover { + background-color: #e040fb +} + +[data-md-color-accent=purple] .md-source-file:hover:before { + background-color: #e040fb +} + +button[data-md-color-accent=deep-purple] { + background-color: #7c4dff +} + +[data-md-color-accent=deep-purple] .md-typeset a:active, +[data-md-color-accent=deep-purple] .md-typeset a:hover { + color: #7c4dff +} + +[data-md-color-accent=deep-purple] .md-typeset .codehilite pre::-webkit-scrollbar-thumb:hover, +[data-md-color-accent=deep-purple] .md-typeset pre code::-webkit-scrollbar-thumb:hover { + background-color: #7c4dff +} + +[data-md-color-accent=deep-purple] .md-nav__link:focus, +[data-md-color-accent=deep-purple] .md-nav__link:hover, +[data-md-color-accent=deep-purple] .md-typeset .footnote li:hover .footnote-backref:hover, +[data-md-color-accent=deep-purple] .md-typeset .footnote li:target .footnote-backref, +[data-md-color-accent=deep-purple] .md-typeset .md-clipboard:active:before, +[data-md-color-accent=deep-purple] .md-typeset .md-clipboard:hover:before, +[data-md-color-accent=deep-purple] .md-typeset [id] .headerlink:focus, +[data-md-color-accent=deep-purple] .md-typeset [id]:hover .headerlink:hover, +[data-md-color-accent=deep-purple] .md-typeset [id]:target .headerlink { + color: #7c4dff +} + +[data-md-color-accent=deep-purple] .md-search__scrollwrap::-webkit-scrollbar-thumb:hover { + background-color: #7c4dff +} + +[data-md-color-accent=deep-purple] .md-search-result__link:hover, +[data-md-color-accent=deep-purple] .md-search-result__link[data-md-state=active] { + background-color: rgba(124, 77, 255, .1) +} + +[data-md-color-accent=deep-purple] .md-sidebar__scrollwrap::-webkit-scrollbar-thumb:hover { + background-color: #7c4dff +} + +[data-md-color-accent=deep-purple] .md-source-file:hover:before { + background-color: #7c4dff +} + +button[data-md-color-accent=indigo] { + background-color: #536dfe +} + +[data-md-color-accent=indigo] .md-typeset a:active, +[data-md-color-accent=indigo] .md-typeset a:hover { + color: #536dfe +} + +[data-md-color-accent=indigo] .md-typeset .codehilite pre::-webkit-scrollbar-thumb:hover, +[data-md-color-accent=indigo] .md-typeset pre code::-webkit-scrollbar-thumb:hover { + background-color: #536dfe +} + +[data-md-color-accent=indigo] .md-nav__link:focus, +[data-md-color-accent=indigo] .md-nav__link:hover, +[data-md-color-accent=indigo] .md-typeset .footnote li:hover .footnote-backref:hover, +[data-md-color-accent=indigo] .md-typeset .footnote li:target .footnote-backref, +[data-md-color-accent=indigo] .md-typeset .md-clipboard:active:before, +[data-md-color-accent=indigo] .md-typeset .md-clipboard:hover:before, +[data-md-color-accent=indigo] .md-typeset [id] .headerlink:focus, +[data-md-color-accent=indigo] .md-typeset [id]:hover .headerlink:hover, +[data-md-color-accent=indigo] .md-typeset [id]:target .headerlink { + color: #536dfe +} + +[data-md-color-accent=indigo] .md-search__scrollwrap::-webkit-scrollbar-thumb:hover { + background-color: #536dfe +} + +[data-md-color-accent=indigo] .md-search-result__link:hover, +[data-md-color-accent=indigo] .md-search-result__link[data-md-state=active] { + background-color: rgba(83, 109, 254, .1) +} + +[data-md-color-accent=indigo] .md-sidebar__scrollwrap::-webkit-scrollbar-thumb:hover { + background-color: #536dfe +} + +[data-md-color-accent=indigo] .md-source-file:hover:before { + background-color: #536dfe +} + +button[data-md-color-accent=blue] { + background-color: #448aff +} + +[data-md-color-accent=blue] .md-typeset a:active, +[data-md-color-accent=blue] .md-typeset a:hover { + color: #448aff +} + +[data-md-color-accent=blue] .md-typeset .codehilite pre::-webkit-scrollbar-thumb:hover, +[data-md-color-accent=blue] .md-typeset pre code::-webkit-scrollbar-thumb:hover { + background-color: #448aff +} + +[data-md-color-accent=blue] .md-nav__link:focus, +[data-md-color-accent=blue] .md-nav__link:hover, +[data-md-color-accent=blue] .md-typeset .footnote li:hover .footnote-backref:hover, +[data-md-color-accent=blue] .md-typeset .footnote li:target .footnote-backref, +[data-md-color-accent=blue] .md-typeset .md-clipboard:active:before, +[data-md-color-accent=blue] .md-typeset .md-clipboard:hover:before, +[data-md-color-accent=blue] .md-typeset [id] .headerlink:focus, +[data-md-color-accent=blue] .md-typeset [id]:hover .headerlink:hover, +[data-md-color-accent=blue] .md-typeset [id]:target .headerlink { + color: #448aff +} + +[data-md-color-accent=blue] .md-search__scrollwrap::-webkit-scrollbar-thumb:hover { + background-color: #448aff +} + +[data-md-color-accent=blue] .md-search-result__link:hover, +[data-md-color-accent=blue] .md-search-result__link[data-md-state=active] { + background-color: rgba(68, 138, 255, .1) +} + +[data-md-color-accent=blue] .md-sidebar__scrollwrap::-webkit-scrollbar-thumb:hover { + background-color: #448aff +} + +[data-md-color-accent=blue] .md-source-file:hover:before { + background-color: #448aff +} + +button[data-md-color-accent=light-blue] { + background-color: #0091ea +} + +[data-md-color-accent=light-blue] .md-typeset a:active, +[data-md-color-accent=light-blue] .md-typeset a:hover { + color: #0091ea +} + +[data-md-color-accent=light-blue] .md-typeset .codehilite pre::-webkit-scrollbar-thumb:hover, +[data-md-color-accent=light-blue] .md-typeset pre code::-webkit-scrollbar-thumb:hover { + background-color: #0091ea +} + +[data-md-color-accent=light-blue] .md-nav__link:focus, +[data-md-color-accent=light-blue] .md-nav__link:hover, +[data-md-color-accent=light-blue] .md-typeset .footnote li:hover .footnote-backref:hover, +[data-md-color-accent=light-blue] .md-typeset .footnote li:target .footnote-backref, +[data-md-color-accent=light-blue] .md-typeset .md-clipboard:active:before, +[data-md-color-accent=light-blue] .md-typeset .md-clipboard:hover:before, +[data-md-color-accent=light-blue] .md-typeset [id] .headerlink:focus, +[data-md-color-accent=light-blue] .md-typeset [id]:hover .headerlink:hover, +[data-md-color-accent=light-blue] .md-typeset [id]:target .headerlink { + color: #0091ea +} + +[data-md-color-accent=light-blue] .md-search__scrollwrap::-webkit-scrollbar-thumb:hover { + background-color: #0091ea +} + +[data-md-color-accent=light-blue] .md-search-result__link:hover, +[data-md-color-accent=light-blue] .md-search-result__link[data-md-state=active] { + background-color: rgba(0, 145, 234, .1) +} + +[data-md-color-accent=light-blue] .md-sidebar__scrollwrap::-webkit-scrollbar-thumb:hover { + background-color: #0091ea +} + +[data-md-color-accent=light-blue] .md-source-file:hover:before { + background-color: #0091ea +} + +button[data-md-color-accent=cyan] { + background-color: #00b8d4 +} + +[data-md-color-accent=cyan] .md-typeset a:active, +[data-md-color-accent=cyan] .md-typeset a:hover { + color: #00b8d4 +} + +[data-md-color-accent=cyan] .md-typeset .codehilite pre::-webkit-scrollbar-thumb:hover, +[data-md-color-accent=cyan] .md-typeset pre code::-webkit-scrollbar-thumb:hover { + background-color: #00b8d4 +} + +[data-md-color-accent=cyan] .md-nav__link:focus, +[data-md-color-accent=cyan] .md-nav__link:hover, +[data-md-color-accent=cyan] .md-typeset .footnote li:hover .footnote-backref:hover, +[data-md-color-accent=cyan] .md-typeset .footnote li:target .footnote-backref, +[data-md-color-accent=cyan] .md-typeset .md-clipboard:active:before, +[data-md-color-accent=cyan] .md-typeset .md-clipboard:hover:before, +[data-md-color-accent=cyan] .md-typeset [id] .headerlink:focus, +[data-md-color-accent=cyan] .md-typeset [id]:hover .headerlink:hover, +[data-md-color-accent=cyan] .md-typeset [id]:target .headerlink { + color: #00b8d4 +} + +[data-md-color-accent=cyan] .md-search__scrollwrap::-webkit-scrollbar-thumb:hover { + background-color: #00b8d4 +} + +[data-md-color-accent=cyan] .md-search-result__link:hover, +[data-md-color-accent=cyan] .md-search-result__link[data-md-state=active] { + background-color: rgba(0, 184, 212, .1) +} + +[data-md-color-accent=cyan] .md-sidebar__scrollwrap::-webkit-scrollbar-thumb:hover { + background-color: #00b8d4 +} + +[data-md-color-accent=cyan] .md-source-file:hover:before { + background-color: #00b8d4 +} + +button[data-md-color-accent=teal] { + background-color: #00bfa5 +} + +[data-md-color-accent=teal] .md-typeset a:active, +[data-md-color-accent=teal] .md-typeset a:hover { + color: #00bfa5 +} + +[data-md-color-accent=teal] .md-typeset .codehilite pre::-webkit-scrollbar-thumb:hover, +[data-md-color-accent=teal] .md-typeset pre code::-webkit-scrollbar-thumb:hover { + background-color: #00bfa5 +} + +[data-md-color-accent=teal] .md-nav__link:focus, +[data-md-color-accent=teal] .md-nav__link:hover, +[data-md-color-accent=teal] .md-typeset .footnote li:hover .footnote-backref:hover, +[data-md-color-accent=teal] .md-typeset .footnote li:target .footnote-backref, +[data-md-color-accent=teal] .md-typeset .md-clipboard:active:before, +[data-md-color-accent=teal] .md-typeset .md-clipboard:hover:before, +[data-md-color-accent=teal] .md-typeset [id] .headerlink:focus, +[data-md-color-accent=teal] .md-typeset [id]:hover .headerlink:hover, +[data-md-color-accent=teal] .md-typeset [id]:target .headerlink { + color: #00bfa5 +} + +[data-md-color-accent=teal] .md-search__scrollwrap::-webkit-scrollbar-thumb:hover { + background-color: #00bfa5 +} + +[data-md-color-accent=teal] .md-search-result__link:hover, +[data-md-color-accent=teal] .md-search-result__link[data-md-state=active] { + background-color: rgba(0, 191, 165, .1) +} + +[data-md-color-accent=teal] .md-sidebar__scrollwrap::-webkit-scrollbar-thumb:hover { + background-color: #00bfa5 +} + +[data-md-color-accent=teal] .md-source-file:hover:before { + background-color: #00bfa5 +} + +button[data-md-color-accent=green] { + background-color: #00c853 +} + +[data-md-color-accent=green] .md-typeset a:active, +[data-md-color-accent=green] .md-typeset a:hover { + color: #00c853 +} + +[data-md-color-accent=green] .md-typeset .codehilite pre::-webkit-scrollbar-thumb:hover, +[data-md-color-accent=green] .md-typeset pre code::-webkit-scrollbar-thumb:hover { + background-color: #00c853 +} + +[data-md-color-accent=green] .md-nav__link:focus, +[data-md-color-accent=green] .md-nav__link:hover, +[data-md-color-accent=green] .md-typeset .footnote li:hover .footnote-backref:hover, +[data-md-color-accent=green] .md-typeset .footnote li:target .footnote-backref, +[data-md-color-accent=green] .md-typeset .md-clipboard:active:before, +[data-md-color-accent=green] .md-typeset .md-clipboard:hover:before, +[data-md-color-accent=green] .md-typeset [id] .headerlink:focus, +[data-md-color-accent=green] .md-typeset [id]:hover .headerlink:hover, +[data-md-color-accent=green] .md-typeset [id]:target .headerlink { + color: #00c853 +} + +[data-md-color-accent=green] .md-search__scrollwrap::-webkit-scrollbar-thumb:hover { + background-color: #00c853 +} + +[data-md-color-accent=green] .md-search-result__link:hover, +[data-md-color-accent=green] .md-search-result__link[data-md-state=active] { + background-color: rgba(0, 200, 83, .1) +} + +[data-md-color-accent=green] .md-sidebar__scrollwrap::-webkit-scrollbar-thumb:hover { + background-color: #00c853 +} + +[data-md-color-accent=green] .md-source-file:hover:before { + background-color: #00c853 +} + +button[data-md-color-accent=light-green] { + background-color: #64dd17 +} + +[data-md-color-accent=light-green] .md-typeset a:active, +[data-md-color-accent=light-green] .md-typeset a:hover { + color: #64dd17 +} + +[data-md-color-accent=light-green] .md-typeset .codehilite pre::-webkit-scrollbar-thumb:hover, +[data-md-color-accent=light-green] .md-typeset pre code::-webkit-scrollbar-thumb:hover { + background-color: #64dd17 +} + +[data-md-color-accent=light-green] .md-nav__link:focus, +[data-md-color-accent=light-green] .md-nav__link:hover, +[data-md-color-accent=light-green] .md-typeset .footnote li:hover .footnote-backref:hover, +[data-md-color-accent=light-green] .md-typeset .footnote li:target .footnote-backref, +[data-md-color-accent=light-green] .md-typeset .md-clipboard:active:before, +[data-md-color-accent=light-green] .md-typeset .md-clipboard:hover:before, +[data-md-color-accent=light-green] .md-typeset [id] .headerlink:focus, +[data-md-color-accent=light-green] .md-typeset [id]:hover .headerlink:hover, +[data-md-color-accent=light-green] .md-typeset [id]:target .headerlink { + color: #64dd17 +} + +[data-md-color-accent=light-green] .md-search__scrollwrap::-webkit-scrollbar-thumb:hover { + background-color: #64dd17 +} + +[data-md-color-accent=light-green] .md-search-result__link:hover, +[data-md-color-accent=light-green] .md-search-result__link[data-md-state=active] { + background-color: rgba(100, 221, 23, .1) +} + +[data-md-color-accent=light-green] .md-sidebar__scrollwrap::-webkit-scrollbar-thumb:hover { + background-color: #64dd17 +} + +[data-md-color-accent=light-green] .md-source-file:hover:before { + background-color: #64dd17 +} + +button[data-md-color-accent=lime] { + background-color: #aeea00 +} + +[data-md-color-accent=lime] .md-typeset a:active, +[data-md-color-accent=lime] .md-typeset a:hover { + color: #aeea00 +} + +[data-md-color-accent=lime] .md-typeset .codehilite pre::-webkit-scrollbar-thumb:hover, +[data-md-color-accent=lime] .md-typeset pre code::-webkit-scrollbar-thumb:hover { + background-color: #aeea00 +} + +[data-md-color-accent=lime] .md-nav__link:focus, +[data-md-color-accent=lime] .md-nav__link:hover, +[data-md-color-accent=lime] .md-typeset .footnote li:hover .footnote-backref:hover, +[data-md-color-accent=lime] .md-typeset .footnote li:target .footnote-backref, +[data-md-color-accent=lime] .md-typeset .md-clipboard:active:before, +[data-md-color-accent=lime] .md-typeset .md-clipboard:hover:before, +[data-md-color-accent=lime] .md-typeset [id] .headerlink:focus, +[data-md-color-accent=lime] .md-typeset [id]:hover .headerlink:hover, +[data-md-color-accent=lime] .md-typeset [id]:target .headerlink { + color: #aeea00 +} + +[data-md-color-accent=lime] .md-search__scrollwrap::-webkit-scrollbar-thumb:hover { + background-color: #aeea00 +} + +[data-md-color-accent=lime] .md-search-result__link:hover, +[data-md-color-accent=lime] .md-search-result__link[data-md-state=active] { + background-color: rgba(174, 234, 0, .1) +} + +[data-md-color-accent=lime] .md-sidebar__scrollwrap::-webkit-scrollbar-thumb:hover { + background-color: #aeea00 +} + +[data-md-color-accent=lime] .md-source-file:hover:before { + background-color: #aeea00 +} + +button[data-md-color-accent=yellow] { + background-color: #ffd600 +} + +[data-md-color-accent=yellow] .md-typeset a:active, +[data-md-color-accent=yellow] .md-typeset a:hover { + color: #ffd600 +} + +[data-md-color-accent=yellow] .md-typeset .codehilite pre::-webkit-scrollbar-thumb:hover, +[data-md-color-accent=yellow] .md-typeset pre code::-webkit-scrollbar-thumb:hover { + background-color: #ffd600 +} + +[data-md-color-accent=yellow] .md-nav__link:focus, +[data-md-color-accent=yellow] .md-nav__link:hover, +[data-md-color-accent=yellow] .md-typeset .footnote li:hover .footnote-backref:hover, +[data-md-color-accent=yellow] .md-typeset .footnote li:target .footnote-backref, +[data-md-color-accent=yellow] .md-typeset .md-clipboard:active:before, +[data-md-color-accent=yellow] .md-typeset .md-clipboard:hover:before, +[data-md-color-accent=yellow] .md-typeset [id] .headerlink:focus, +[data-md-color-accent=yellow] .md-typeset [id]:hover .headerlink:hover, +[data-md-color-accent=yellow] .md-typeset [id]:target .headerlink { + color: #ffd600 +} + +[data-md-color-accent=yellow] .md-search__scrollwrap::-webkit-scrollbar-thumb:hover { + background-color: #ffd600 +} + +[data-md-color-accent=yellow] .md-search-result__link:hover, +[data-md-color-accent=yellow] .md-search-result__link[data-md-state=active] { + background-color: rgba(255, 214, 0, .1) +} + +[data-md-color-accent=yellow] .md-sidebar__scrollwrap::-webkit-scrollbar-thumb:hover { + background-color: #ffd600 +} + +[data-md-color-accent=yellow] .md-source-file:hover:before { + background-color: #ffd600 +} + +button[data-md-color-accent=amber] { + background-color: #ffab00 +} + +[data-md-color-accent=amber] .md-typeset a:active, +[data-md-color-accent=amber] .md-typeset a:hover { + color: #ffab00 +} + +[data-md-color-accent=amber] .md-typeset .codehilite pre::-webkit-scrollbar-thumb:hover, +[data-md-color-accent=amber] .md-typeset pre code::-webkit-scrollbar-thumb:hover { + background-color: #ffab00 +} + +[data-md-color-accent=amber] .md-nav__link:focus, +[data-md-color-accent=amber] .md-nav__link:hover, +[data-md-color-accent=amber] .md-typeset .footnote li:hover .footnote-backref:hover, +[data-md-color-accent=amber] .md-typeset .footnote li:target .footnote-backref, +[data-md-color-accent=amber] .md-typeset .md-clipboard:active:before, +[data-md-color-accent=amber] .md-typeset .md-clipboard:hover:before, +[data-md-color-accent=amber] .md-typeset [id] .headerlink:focus, +[data-md-color-accent=amber] .md-typeset [id]:hover .headerlink:hover, +[data-md-color-accent=amber] .md-typeset [id]:target .headerlink { + color: #ffab00 +} + +[data-md-color-accent=amber] .md-search__scrollwrap::-webkit-scrollbar-thumb:hover { + background-color: #ffab00 +} + +[data-md-color-accent=amber] .md-search-result__link:hover, +[data-md-color-accent=amber] .md-search-result__link[data-md-state=active] { + background-color: rgba(255, 171, 0, .1) +} + +[data-md-color-accent=amber] .md-sidebar__scrollwrap::-webkit-scrollbar-thumb:hover { + background-color: #ffab00 +} + +[data-md-color-accent=amber] .md-source-file:hover:before { + background-color: #ffab00 +} + +button[data-md-color-accent=orange] { + background-color: #ff9100 +} + +[data-md-color-accent=orange] .md-typeset a:active, +[data-md-color-accent=orange] .md-typeset a:hover { + color: #ff9100 +} + +[data-md-color-accent=orange] .md-typeset .codehilite pre::-webkit-scrollbar-thumb:hover, +[data-md-color-accent=orange] .md-typeset pre code::-webkit-scrollbar-thumb:hover { + background-color: #ff9100 +} + +[data-md-color-accent=orange] .md-nav__link:focus, +[data-md-color-accent=orange] .md-nav__link:hover, +[data-md-color-accent=orange] .md-typeset .footnote li:hover .footnote-backref:hover, +[data-md-color-accent=orange] .md-typeset .footnote li:target .footnote-backref, +[data-md-color-accent=orange] .md-typeset .md-clipboard:active:before, +[data-md-color-accent=orange] .md-typeset .md-clipboard:hover:before, +[data-md-color-accent=orange] .md-typeset [id] .headerlink:focus, +[data-md-color-accent=orange] .md-typeset [id]:hover .headerlink:hover, +[data-md-color-accent=orange] .md-typeset [id]:target .headerlink { + color: #ff9100 +} + +[data-md-color-accent=orange] .md-search__scrollwrap::-webkit-scrollbar-thumb:hover { + background-color: #ff9100 +} + +[data-md-color-accent=orange] .md-search-result__link:hover, +[data-md-color-accent=orange] .md-search-result__link[data-md-state=active] { + background-color: rgba(255, 145, 0, .1) +} + +[data-md-color-accent=orange] .md-sidebar__scrollwrap::-webkit-scrollbar-thumb:hover { + background-color: #ff9100 +} + +[data-md-color-accent=orange] .md-source-file:hover:before { + background-color: #ff9100 +} + +button[data-md-color-accent=deep-orange] { + background-color: #ff6e40 +} + +[data-md-color-accent=deep-orange] .md-typeset a:active, +[data-md-color-accent=deep-orange] .md-typeset a:hover { + color: #ff6e40 +} + +[data-md-color-accent=deep-orange] .md-typeset .codehilite pre::-webkit-scrollbar-thumb:hover, +[data-md-color-accent=deep-orange] .md-typeset pre code::-webkit-scrollbar-thumb:hover { + background-color: #ff6e40 +} + +[data-md-color-accent=deep-orange] .md-nav__link:focus, +[data-md-color-accent=deep-orange] .md-nav__link:hover, +[data-md-color-accent=deep-orange] .md-typeset .footnote li:hover .footnote-backref:hover, +[data-md-color-accent=deep-orange] .md-typeset .footnote li:target .footnote-backref, +[data-md-color-accent=deep-orange] .md-typeset .md-clipboard:active:before, +[data-md-color-accent=deep-orange] .md-typeset .md-clipboard:hover:before, +[data-md-color-accent=deep-orange] .md-typeset [id] .headerlink:focus, +[data-md-color-accent=deep-orange] .md-typeset [id]:hover .headerlink:hover, +[data-md-color-accent=deep-orange] .md-typeset [id]:target .headerlink { + color: #ff6e40 +} + +[data-md-color-accent=deep-orange] .md-search__scrollwrap::-webkit-scrollbar-thumb:hover { + background-color: #ff6e40 +} + +[data-md-color-accent=deep-orange] .md-search-result__link:hover, +[data-md-color-accent=deep-orange] .md-search-result__link[data-md-state=active] { + background-color: rgba(255, 110, 64, .1) +} + +[data-md-color-accent=deep-orange] .md-sidebar__scrollwrap::-webkit-scrollbar-thumb:hover { + background-color: #ff6e40 +} + +[data-md-color-accent=deep-orange] .md-source-file:hover:before { + background-color: #ff6e40 +} + +@media only screen and (max-width:59.9375em) { + [data-md-color-primary=red] .md-nav__source { + background-color: rgba(190, 66, 64, .9675) + } + [data-md-color-primary=pink] .md-nav__source { + background-color: rgba(185, 24, 79, .9675) + } + [data-md-color-primary=purple] .md-nav__source { + background-color: rgba(136, 57, 150, .9675) + } + [data-md-color-primary=deep-purple] .md-nav__source { + background-color: rgba(100, 69, 154, .9675) + } + [data-md-color-primary=indigo] .md-nav__source { + background-color: rgba(50, 64, 144, .9675) + } + [data-md-color-primary=blue] .md-nav__source { + background-color: rgba(26, 119, 193, .9675) + } + [data-md-color-primary=light-blue] .md-nav__source { + background-color: rgba(2, 134, 194, .9675) + } + [data-md-color-primary=cyan] .md-nav__source { + background-color: rgba(0, 150, 169, .9675) + } + [data-md-color-primary=teal] .md-nav__source { + background-color: rgba(0, 119, 108, .9675) + } + [data-md-color-primary=green] .md-nav__source { + background-color: rgba(60, 139, 64, .9675) + } + [data-md-color-primary=light-green] .md-nav__source { + background-color: rgba(99, 142, 53, .9675) + } + [data-md-color-primary=lime] .md-nav__source { + background-color: rgba(153, 161, 41, .9675) + } + [data-md-color-primary=yellow] .md-nav__source { + background-color: rgba(198, 134, 29, .9675) + } + [data-md-color-primary=amber] .md-nav__source { + background-color: rgba(203, 127, 0, .9675) + } + [data-md-color-primary=orange] .md-nav__source { + background-color: rgba(200, 111, 0, .9675) + } + [data-md-color-primary=deep-orange] .md-nav__source { + background-color: rgba(203, 89, 53, .9675) + } + [data-md-color-primary=brown] .md-nav__source { + background-color: rgba(96, 68, 57, .9675) + } + [data-md-color-primary=grey] .md-nav__source { + background-color: rgba(93, 93, 93, .9675) + } + [data-md-color-primary=blue-grey] .md-nav__source { + background-color: rgba(67, 88, 97, .9675) + } + [data-md-color-primary=white] .md-nav__source { + background-color: rgba(0, 0, 0, .07); + color: rgba(0, 0, 0, .87) + } +} + +@media only screen and (max-width:76.1875em) { + html [data-md-color-primary=red] .md-nav--primary .md-nav__title--site { + background-color: #ef5350 + } + html [data-md-color-primary=pink] .md-nav--primary .md-nav__title--site { + background-color: #e91e63 + } + html [data-md-color-primary=purple] .md-nav--primary .md-nav__title--site { + background-color: #ab47bc + } + html [data-md-color-primary=deep-purple] .md-nav--primary .md-nav__title--site { + background-color: #7e57c2 + } + html [data-md-color-primary=indigo] .md-nav--primary .md-nav__title--site { + background-color: #3f51b5 + } + html [data-md-color-primary=blue] .md-nav--primary .md-nav__title--site { + background-color: #2196f3 + } + html [data-md-color-primary=light-blue] .md-nav--primary .md-nav__title--site { + background-color: #03a9f4 + } + html [data-md-color-primary=cyan] .md-nav--primary .md-nav__title--site { + background-color: #00bcd4 + } + html [data-md-color-primary=teal] .md-nav--primary .md-nav__title--site { + background-color: #009688 + } + html [data-md-color-primary=green] .md-nav--primary .md-nav__title--site { + background-color: #4caf50 + } + html [data-md-color-primary=light-green] .md-nav--primary .md-nav__title--site { + background-color: #7cb342 + } + html [data-md-color-primary=lime] .md-nav--primary .md-nav__title--site { + background-color: #c0ca33 + } + html [data-md-color-primary=yellow] .md-nav--primary .md-nav__title--site { + background-color: #f9a825 + } + html [data-md-color-primary=amber] .md-nav--primary .md-nav__title--site { + background-color: #ffa000 + } + html [data-md-color-primary=orange] .md-nav--primary .md-nav__title--site { + background-color: #fb8c00 + } + html [data-md-color-primary=deep-orange] .md-nav--primary .md-nav__title--site { + background-color: #ff7043 + } + html [data-md-color-primary=brown] .md-nav--primary .md-nav__title--site { + background-color: #795548 + } + html [data-md-color-primary=grey] .md-nav--primary .md-nav__title--site { + background-color: #757575 + } + html [data-md-color-primary=blue-grey] .md-nav--primary .md-nav__title--site { + background-color: #546e7a + } + html [data-md-color-primary=white] .md-nav--primary .md-nav__title--site { + background-color: #fff; + color: rgba(0, 0, 0, .87) + } + [data-md-color-primary=white] .md-hero { + border-bottom: .05rem solid rgba(0, 0, 0, .07) + } +} + +@media only screen and (min-width:76.25em) { + [data-md-color-primary=red] .md-tabs { + background-color: #ef5350 + } + [data-md-color-primary=pink] .md-tabs { + background-color: #e91e63 + } + [data-md-color-primary=purple] .md-tabs { + background-color: #ab47bc + } + [data-md-color-primary=deep-purple] .md-tabs { + background-color: #7e57c2 + } + [data-md-color-primary=indigo] .md-tabs { + background-color: #3f51b5 + } + [data-md-color-primary=blue] .md-tabs { + background-color: #2196f3 + } + [data-md-color-primary=light-blue] .md-tabs { + background-color: #03a9f4 + } + [data-md-color-primary=cyan] .md-tabs { + background-color: #00bcd4 + } + [data-md-color-primary=teal] .md-tabs { + background-color: #009688 + } + [data-md-color-primary=green] .md-tabs { + background-color: #4caf50 + } + [data-md-color-primary=light-green] .md-tabs { + background-color: #7cb342 + } + [data-md-color-primary=lime] .md-tabs { + background-color: #c0ca33 + } + [data-md-color-primary=yellow] .md-tabs { + background-color: #f9a825 + } + [data-md-color-primary=amber] .md-tabs { + background-color: #ffa000 + } + [data-md-color-primary=orange] .md-tabs { + background-color: #fb8c00 + } + [data-md-color-primary=deep-orange] .md-tabs { + background-color: #ff7043 + } + [data-md-color-primary=brown] .md-tabs { + background-color: #795548 + } + [data-md-color-primary=grey] .md-tabs { + background-color: #757575 + } + [data-md-color-primary=blue-grey] .md-tabs { + background-color: #546e7a + } + [data-md-color-primary=white] .md-tabs { + border-bottom: .05rem solid rgba(0, 0, 0, .07); + background-color: #fff; + color: rgba(0, 0, 0, .87) + } +} + +@media only screen and (min-width:60em) { + [data-md-color-primary=white] .md-search__input { + background-color: rgba(0, 0, 0, .07) + } + [data-md-color-primary=white] .md-search__input::-webkit-input-placeholder { + color: rgba(0, 0, 0, .54) + } + [data-md-color-primary=white] .md-search__input:-ms-input-placeholder { + color: rgba(0, 0, 0, .54) + } + [data-md-color-primary=white] .md-search__input::-ms-input-placeholder { + color: rgba(0, 0, 0, .54) + } + [data-md-color-primary=white] .md-search__input::placeholder { + color: rgba(0, 0, 0, .54) + } +} diff --git a/_static/stylesheets/application.css b/_static/stylesheets/application.css new file mode 100644 index 000000000..4a4189d00 --- /dev/null +++ b/_static/stylesheets/application.css @@ -0,0 +1,2882 @@ +@charset "UTF-8"; +html{ + box-sizing:border-box +} +*,:after,:before{ + box-sizing:inherit +} +html{ + -webkit-text-size-adjust:none; + -moz-text-size-adjust:none; + -ms-text-size-adjust:none; + text-size-adjust:none +} +body{ + margin:0 +} +hr{ + overflow:visible; + box-sizing:content-box +} +a{ + -webkit-text-decoration-skip:objects +} +a,button,input,label{ + -webkit-tap-highlight-color:transparent +} +a{ + color:inherit; + text-decoration:none +} +small,sub,sup{ + font-size:80% +} +sub,sup{ + position:relative; + line-height:0; + vertical-align:baseline +} +sub{ + bottom:-.25em +} +sup{ + top:-.5em +} +img{ + border-style:none +} +table{ + border-collapse:separate; + border-spacing:0 +} +td,th{ + font-weight:400; + vertical-align:top +} +button{ + margin:0; + padding:0; + border:0; + outline-style:none; + background:transparent; + font-size:inherit +} +input{ + border:0; + outline:0 +} +.md-clipboard:before,.md-icon,.md-nav__button,.md-nav__link:after,.md-nav__title:before,.md-search-result__article--document:before,.md-source-file:before,.md-typeset .admonition>.admonition-title:before,.md-typeset .admonition>summary:before,.md-typeset .critic.comment:before,.md-typeset .footnote-backref,.md-typeset .task-list-control .task-list-indicator:before,.md-typeset details>.admonition-title:before,.md-typeset details>summary:before,.md-typeset summary:after{ + font-family:Material Icons; + font-style:normal; + font-variant:normal; + font-weight:400; + line-height:1; + text-transform:none; + white-space:nowrap; + speak:none; + word-wrap:normal; + direction:ltr +} +.md-content__icon,.md-footer-nav__button,.md-header-nav__button,.md-nav__button,.md-nav__title:before,.md-search-result__article--document:before{ + display:inline-block; + margin:.2rem; + padding:.4rem; + font-size:1.2rem; + cursor:pointer +} +.md-icon--arrow-back:before{ + content:"" +} +.md-icon--arrow-forward:before{ + content:"" +} +.md-icon--menu:before{ + content:"" +} +.md-icon--search:before{ + content:"" +} +[dir=rtl] .md-icon--arrow-back:before{ + content:"" +} +[dir=rtl] .md-icon--arrow-forward:before{ + content:"" +} +body{ + -webkit-font-smoothing:antialiased; + -moz-osx-font-smoothing:grayscale +} +body,input{ + color:rgba(0,0,0,.87); + -webkit-font-feature-settings:"kern","liga"; + font-feature-settings:"kern","liga"; + font-family:"Roboto", "Helvetica Neue", Helvetica, Arial, sans-serif; +} +code,kbd,pre{ + color:rgba(0,0,0,.87); + -webkit-font-feature-settings:"kern"; + font-feature-settings:"kern"; + font-family:"Roboto Mono", "Courier New", Courier, monospace; +} +.md-typeset{ + font-size:.8rem; + line-height:1.6; + -webkit-print-color-adjust:exact +} +.md-typeset blockquote,.md-typeset ol,.md-typeset p,.md-typeset ul{ + margin:1em 0 +} +.md-typeset h1{ + margin:0 0 2rem; + color:rgba(0,0,0,.54); + font-size:1.5625rem; + line-height:1.3 +} +.md-typeset h1,.md-typeset h2{ + font-weight:300; + letter-spacing:-.01em +} +.md-typeset h2{ + margin:2rem 0 .8rem; + font-size:1.25rem; + line-height:1.4 +} +.md-typeset h3{ + margin:1.6rem 0 .8rem; + font-size:1rem; + font-weight:400; + letter-spacing:-.01em; + line-height:1.5 +} +.md-typeset h2+h3{ + margin-top:.8rem +} +.md-typeset h4{ + font-size:.8rem +} +.md-typeset h4,.md-typeset h5,.md-typeset h6{ + margin:.8rem 0; + font-weight:700; + letter-spacing:-.01em +} +.md-typeset h5,.md-typeset h6{ + color:rgba(0,0,0,.54); + font-size:.64rem +} +.md-typeset h5{ + text-transform:uppercase +} +.md-typeset hr{ + margin:1.5em 0; + border-bottom:.05rem dotted rgba(0,0,0,.26) +} +.md-typeset a{ + color:#3f51b5; + word-break:break-word +} +.md-typeset a,.md-typeset a:before{ + transition:color .125s +} +.md-typeset a:active,.md-typeset a:hover{ + color:#536dfe +} +.md-typeset code,.md-typeset pre{ + background-color:hsla(0,0%,92.5%,.5); + color:#37474f; + font-size:85%; + direction:ltr +} +.md-typeset code{ + margin:0 .29412em; + padding:.07353em 0; + border-radius:.1rem; + word-break:break-word; + -webkit-box-decoration-break:clone; + box-decoration-break:clone +} +/* TODO: Reverted from #35, needs a different fix +.md-typeset code::before { + content: "\00a0"; +} +.md-typeset code::after { + content: "\00a0"; +} +*/ +.md-typeset h1 code,.md-typeset h2 code,.md-typeset h3 code,.md-typeset h4 code,.md-typeset h5 code,.md-typeset h6 code{ + margin:0; + background-color:transparent; + box-shadow:none +} +.md-typeset a>code{ + margin:inherit; + padding:inherit; + border-radius:initial; + background-color:inherit; + color:inherit; + box-shadow:none +} +.md-typeset pre{ + position:relative; + margin:1em 0; + border-radius:.1rem; + line-height:1.4; + -webkit-overflow-scrolling:touch +} +.md-typeset pre>code{ + /* + See GH #32 + display:block; + */ + margin:0; + padding:.525rem .6rem; + background-color:transparent; + font-size:inherit; + box-shadow:none; + -webkit-box-decoration-break:slice; + box-decoration-break:slice; + overflow:auto +} +.md-typeset pre>code::-webkit-scrollbar{ + width:.2rem; + height:.2rem +} +.md-typeset pre>code::-webkit-scrollbar-thumb{ + background-color:rgba(0,0,0,.26) +} +.md-typeset pre>code::-webkit-scrollbar-thumb:hover{ + background-color:#536dfe +} +.md-typeset kbd{ + padding:0 .29412em; + border-radius:.15rem; + border:.05rem solid #c9c9c9; + border-bottom-color:#bcbcbc; + background-color:#fcfcfc; + color:#555; + font-size:85%; + box-shadow:0 .05rem 0 #b0b0b0; + word-break:break-word +} +.md-typeset mark{ + margin:0 .25em; + padding:.0625em 0; + border-radius:.1rem; + background-color:rgba(255,235,59,.5); + box-shadow:.25em 0 0 rgba(255,235,59,.5),-.25em 0 0 rgba(255,235,59,.5); + word-break:break-word; + -webkit-box-decoration-break:clone; + box-decoration-break:clone +} +.md-typeset abbr{ + border-bottom:.05rem dotted rgba(0,0,0,.54); + text-decoration:none; + cursor:help +} +.md-typeset small{ + opacity:.75 +} +.md-typeset sub,.md-typeset sup{ + margin-left:.07812em +} +[dir=rtl] .md-typeset sub,[dir=rtl] .md-typeset sup{ + margin-right:.07812em; + margin-left:0 +} +.md-typeset blockquote{ + padding-left:.6rem; + border-left:.2rem solid rgba(0,0,0,.26); + color:rgba(0,0,0,.54) +} +[dir=rtl] .md-typeset blockquote{ + padding-right:.6rem; + padding-left:0; + border-right:.2rem solid rgba(0,0,0,.26); + border-left:initial +} +.md-typeset ul{ + list-style-type:disc +} +.md-typeset ol,.md-typeset ul{ + margin-left:.625em; + padding:0 +} +[dir=rtl] .md-typeset ol,[dir=rtl] .md-typeset ul{ + margin-right:.625em; + margin-left:0 +} +.md-typeset ol ol,.md-typeset ul ol{ + list-style-type:lower-alpha +} +.md-typeset ol ol ol,.md-typeset ul ol ol{ + list-style-type:lower-roman +} +.md-typeset ol li,.md-typeset ul li{ + margin-bottom:.5em; + margin-left:1.25em +} +[dir=rtl] .md-typeset ol li,[dir=rtl] .md-typeset ul li{ + margin-right:1.25em; + margin-left:0 +} +.md-typeset ol li blockquote,.md-typeset ol li p,.md-typeset ul li blockquote,.md-typeset ul li p{ + margin:.5em 0 +} +.md-typeset ol li:last-child,.md-typeset ul li:last-child{ + margin-bottom:0 +} +.md-typeset ol li ol,.md-typeset ol li ul,.md-typeset ul li ol,.md-typeset ul li ul{ + margin:.5em 0 .5em .625em +} +[dir=rtl] .md-typeset ol li ol,[dir=rtl] .md-typeset ol li ul,[dir=rtl] .md-typeset ul li ol,[dir=rtl] .md-typeset ul li ul{ + margin-right:.625em; + margin-left:0 +} +.md-typeset dd{ + margin:1em 0 1em 1.875em +} +[dir=rtl] .md-typeset dd{ + margin-right:1.875em; + margin-left:0 +} +.md-typeset iframe,.md-typeset img,.md-typeset svg{ + max-width:100% +} +.md-typeset table:not([class]){ + box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.2); + display:inline-block; + max-width:100%; + border-radius:.1rem; + font-size:.64rem; + overflow:auto; + -webkit-overflow-scrolling:touch +} +.md-typeset table:not([class])+*{ + margin-top:1.5em +} +.md-typeset table:not([class]) td:not([align]),.md-typeset table:not([class]) th:not([align]){ + text-align:left +} +[dir=rtl] .md-typeset table:not([class]) td:not([align]),[dir=rtl] .md-typeset table:not([class]) th:not([align]){ + text-align:right +} +.md-typeset table:not([class]) th{ + min-width:5rem; + padding:.6rem .8rem; + background-color:rgba(0,0,0,.54); + color:#fff; + vertical-align:top +} +.md-typeset table:not([class]) td{ + padding:.6rem .8rem; + border-top:.05rem solid rgba(0,0,0,.07); + vertical-align:top +} +.md-typeset table:not([class]) tr{ + transition:background-color .125s +} +.md-typeset table:not([class]) tr:hover{ + background-color:rgba(0,0,0,.035); + box-shadow:inset 0 .05rem 0 #fff +} +.md-typeset table:not([class]) tr:first-child td{ + border-top:0 +} +.md-typeset table:not([class]) a{ + word-break:normal +} +.md-typeset__scrollwrap{ + margin:1em -.8rem; + overflow-x:auto; + -webkit-overflow-scrolling:touch +} +.md-typeset .md-typeset__table{ + display:inline-block; + margin-bottom:.5em; + padding:0 .8rem +} +.md-typeset .md-typeset__table table{ + display:table; + width:100%; + margin:0; + overflow:hidden +} +html{ + font-size:125%; + overflow-x:hidden +} +body,html{ + height:100% +} +body{ + position:relative; + font-size:.5rem +} +hr{ + display:block; + height:.05rem; + padding:0; + border:0 +} +.md-svg{ + display:none +} +.md-grid{ + max-width:73rem; + margin-right:auto; + margin-left:auto +} +.md-container,.md-main{ + overflow:auto +} +.md-container{ + display:table; + width:100%; + height:100%; + padding-top:2.4rem; + table-layout:fixed +} +.md-main{ + display:table-row; + height:100% +} +.md-main__inner{ + height:100%; + padding-top:1.5rem; + padding-bottom:.05rem +} +.md-toggle{ + display:none +} +.md-overlay{ + position:fixed; + top:0; + width:0; + height:0; + transition:width 0s .25s,height 0s .25s,opacity .25s; + background-color:rgba(0,0,0,.54); + opacity:0; + z-index:3 +} +.md-flex{ + display:table +} +.md-flex__cell{ + display:table-cell; + position:relative; + vertical-align:top +} +.md-flex__cell--shrink{ + width:0 +} +.md-flex__cell--stretch{ + display:table; + width:100%; + table-layout:fixed +} +.md-flex__ellipsis{ + display:table-cell; + text-overflow:ellipsis; + white-space:nowrap; + overflow:hidden +} +.md-skip{ + position:fixed; + width:.05rem; + height:.05rem; + margin:.5rem; + padding:.3rem .5rem; + -webkit-transform:translateY(.4rem); + transform:translateY(.4rem); + border-radius:.1rem; + background-color:rgba(0,0,0,.87); + color:#fff; + font-size:.64rem; + opacity:0; + overflow:hidden +} +.md-skip:focus{ + width:auto; + height:auto; + clip:auto; + -webkit-transform:translateX(0); + transform:translateX(0); + transition:opacity .175s 75ms,-webkit-transform .25s cubic-bezier(.4,0,.2,1); + transition:transform .25s cubic-bezier(.4,0,.2,1),opacity .175s 75ms; + transition:transform .25s cubic-bezier(.4,0,.2,1),opacity .175s 75ms,-webkit-transform .25s cubic-bezier(.4,0,.2,1); + opacity:1; + z-index:10 +} +@page{ + margin:25mm +} +.md-clipboard{ + position:absolute; + top:.3rem; + right:.3rem; + width:1.4rem; + height:1.4rem; + border-radius:.1rem; + font-size:.8rem; + cursor:pointer; + z-index:1; + -webkit-backface-visibility:hidden; + backface-visibility:hidden +} +.md-clipboard:before{ + transition:color .25s,opacity .25s; + color:rgba(0,0,0,.07); + content:"\E14D" +} +.codehilite:hover .md-clipboard:before,.md-typeset .highlight:hover .md-clipboard:before,pre:hover .md-clipboard:before{ + color:rgba(0,0,0,.54) +} +.md-clipboard:focus:before,.md-clipboard:hover:before{ + color:#536dfe +} +.md-clipboard__message{ + display:block; + position:absolute; + top:0; + right:1.7rem; + padding:.3rem .5rem; + -webkit-transform:translateX(.4rem); + transform:translateX(.4rem); + transition:opacity .175s,-webkit-transform .25s cubic-bezier(.9,.1,.9,0); + transition:transform .25s cubic-bezier(.9,.1,.9,0),opacity .175s; + transition:transform .25s cubic-bezier(.9,.1,.9,0),opacity .175s,-webkit-transform .25s cubic-bezier(.9,.1,.9,0); + border-radius:.1rem; + background-color:rgba(0,0,0,.54); + color:#fff; + font-size:.64rem; + white-space:nowrap; + opacity:0; + pointer-events:none +} +.md-clipboard__message--active{ + -webkit-transform:translateX(0); + transform:translateX(0); + transition:opacity .175s 75ms,-webkit-transform .25s cubic-bezier(.4,0,.2,1); + transition:transform .25s cubic-bezier(.4,0,.2,1),opacity .175s 75ms; + transition:transform .25s cubic-bezier(.4,0,.2,1),opacity .175s 75ms,-webkit-transform .25s cubic-bezier(.4,0,.2,1); + opacity:1; + pointer-events:auto +} +.md-clipboard__message:before{ + content:attr(aria-label) +} +.md-clipboard__message:after{ + display:block; + position:absolute; + top:50%; + right:-.2rem; + width:0; + margin-top:-.2rem; + border-color:transparent rgba(0,0,0,.54); + border-style:solid; + border-width:.2rem 0 .2rem .2rem; + content:"" +} +.md-content__inner{ + margin:0 .8rem 1.2rem; + padding-top:.6rem +} +.md-content__inner:before{ + display:block; + height:.4rem; + content:"" +} +.md-content__inner>:last-child{ + margin-bottom:0 +} +.md-content__icon{ + position:relative; + margin:.4rem 0; + padding:0; + float:right +} +.md-typeset .md-content__icon{ + color:rgba(0,0,0,.26) +} +.md-header{ + position:fixed; + top:0; + right:0; + left:0; + height:2.4rem; + transition:background-color .25s,color .25s; + background-color:#3f51b5; + color:#fff; + box-shadow:none; + z-index:2; + -webkit-backface-visibility:hidden; + backface-visibility:hidden +} +.no-js .md-header{ + transition:none; + box-shadow:none +} +.md-header[data-md-state=shadow]{ + transition:background-color .25s,color .25s,box-shadow .25s; + box-shadow:0 0 .2rem rgba(0,0,0,.1),0 .2rem .4rem rgba(0,0,0,.2) +} +.md-header-nav{ + padding:0 .2rem +} +.md-header-nav__button{ + position:relative; + transition:opacity .25s; + z-index:1 +} +.md-header-nav__button:hover{ + opacity:.7 +} +.md-header-nav__button.md-logo *{ + display:block +} +.no-js .md-header-nav__button.md-icon--search{ + display:none +} +.md-header-nav__topic{ + display:block; + position:absolute; + transition:opacity .15s,-webkit-transform .4s cubic-bezier(.1,.7,.1,1); + transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s; + transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s,-webkit-transform .4s cubic-bezier(.1,.7,.1,1); + text-overflow:ellipsis; + white-space:nowrap; + overflow:hidden +} +.md-header-nav__topic+.md-header-nav__topic{ + -webkit-transform:translateX(1.25rem); + transform:translateX(1.25rem); + transition:opacity .15s,-webkit-transform .4s cubic-bezier(1,.7,.1,.1); + transition:transform .4s cubic-bezier(1,.7,.1,.1),opacity .15s; + transition:transform .4s cubic-bezier(1,.7,.1,.1),opacity .15s,-webkit-transform .4s cubic-bezier(1,.7,.1,.1); + opacity:0; + z-index:-1; + pointer-events:none +} +[dir=rtl] .md-header-nav__topic+.md-header-nav__topic{ + -webkit-transform:translateX(-1.25rem); + transform:translateX(-1.25rem) +} +.no-js .md-header-nav__topic{ + position:static +} +.no-js .md-header-nav__topic+.md-header-nav__topic{ + display:none +} +.md-header-nav__title{ + padding:0 1rem; + font-size:.9rem; + line-height:2.4rem +} +.md-header-nav__title[data-md-state=active] .md-header-nav__topic{ + -webkit-transform:translateX(-1.25rem); + transform:translateX(-1.25rem); + transition:opacity .15s,-webkit-transform .4s cubic-bezier(1,.7,.1,.1); + transition:transform .4s cubic-bezier(1,.7,.1,.1),opacity .15s; + transition:transform .4s cubic-bezier(1,.7,.1,.1),opacity .15s,-webkit-transform .4s cubic-bezier(1,.7,.1,.1); + opacity:0; + z-index:-1; + pointer-events:none +} +[dir=rtl] .md-header-nav__title[data-md-state=active] .md-header-nav__topic{ + -webkit-transform:translateX(1.25rem); + transform:translateX(1.25rem) +} +.md-header-nav__title[data-md-state=active] .md-header-nav__topic+.md-header-nav__topic{ + -webkit-transform:translateX(0); + transform:translateX(0); + transition:opacity .15s,-webkit-transform .4s cubic-bezier(.1,.7,.1,1); + transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s; + transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s,-webkit-transform .4s cubic-bezier(.1,.7,.1,1); + opacity:1; + z-index:0; + pointer-events:auto +} +.md-header-nav__source{ + display:none +} +.md-hero{ + transition:background .25s; + background-color:#3f51b5; + color:#fff; + font-size:1rem; + overflow:hidden +} +.md-hero__inner{ + margin-top:1rem; + padding:.8rem .8rem .4rem; + transition:opacity .25s,-webkit-transform .4s cubic-bezier(.1,.7,.1,1); + transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .25s; + transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .25s,-webkit-transform .4s cubic-bezier(.1,.7,.1,1); + transition-delay:.1s +} +[data-md-state=hidden] .md-hero__inner{ + pointer-events:none; + -webkit-transform:translateY(.625rem); + transform:translateY(.625rem); + transition:opacity .1s 0s,-webkit-transform 0s .4s; + transition:transform 0s .4s,opacity .1s 0s; + transition:transform 0s .4s,opacity .1s 0s,-webkit-transform 0s .4s; + opacity:0 +} +.md-hero--expand .md-hero__inner{ + margin-bottom:1.2rem +} +.md-footer-nav{ + background-color:rgba(0,0,0,.87); + color:#fff +} +.md-footer-nav__inner{ + padding:.2rem; + overflow:auto +} +.md-footer-nav__link{ + padding-top:1.4rem; + padding-bottom:.4rem; + transition:opacity .25s +} +.md-footer-nav__link:hover{ + opacity:.7 +} +.md-footer-nav__link--prev{ + width:25%; + float:left +} +[dir=rtl] .md-footer-nav__link--prev{ + float:right +} +.md-footer-nav__link--next{ + width:75%; + float:right; + text-align:right +} +[dir=rtl] .md-footer-nav__link--next{ + float:left; + text-align:left +} +.md-footer-nav__button{ + transition:background .25s +} +.md-footer-nav__title{ + position:relative; + padding:0 1rem; + font-size:.9rem; + line-height:2.4rem +} +.md-footer-nav__direction{ + position:absolute; + right:0; + left:0; + margin-top:-1rem; + padding:0 1rem; + color:hsla(0,0%,100%,.7); + font-size:.75rem +} +.md-footer-meta{ + background-color:rgba(0,0,0,.895) +} +.md-footer-meta__inner{ + padding:.2rem; + overflow:auto +} +html .md-footer-meta.md-typeset a{ + color:hsla(0,0%,100%,.7) +} +html .md-footer-meta.md-typeset a:focus,html .md-footer-meta.md-typeset a:hover{ + color:#fff +} +.md-footer-copyright{ + margin:0 .6rem; + padding:.4rem 0; + color:hsla(0,0%,100%,.3); + font-size:.64rem +} +.md-footer-copyright__highlight{ + color:hsla(0,0%,100%,.7) +} +.md-footer-social{ + margin:0 .4rem; + padding:.2rem 0 .6rem +} +.md-footer-social__link{ + display:inline; + width:1.6rem; + height:1.6rem; + font-size:.7rem; + text-align:center; + padding-right: 0.5rem; +} +.md-footer-social__link:before{ + line-height:1.9 +} +.md-nav{ + font-size:.7rem; + line-height:1.3 +} +.md-nav__title{ + display:block; + padding:0 .6rem; + font-weight:700; + text-overflow:ellipsis; + overflow:hidden +} +.md-nav__title:before{ + display:none; + content:"\E5C4" +} +[dir=rtl] .md-nav__title:before{ + content:"\E5C8" +} +.md-nav__title .md-nav__button{ + display:none +} +.md-nav__list{ + margin:0; + padding:0; + list-style:none +} +.md-nav__item{ + padding:0 .6rem +} +.md-nav__item:last-child{ + padding-bottom:.6rem +} +.md-nav__item .md-nav__item{ + padding-right:0 +} +[dir=rtl] .md-nav__item .md-nav__item{ + padding-right:.6rem; + padding-left:0 +} +.md-nav__item .md-nav__item:last-child{ + padding-bottom:0 +} +.md-nav__button img{ + width:100%; + height:auto +} +.md-nav__link{ + display:block; + margin-top:.625em; + transition:color .125s; + text-overflow:ellipsis; + cursor:pointer; + overflow:hidden +} +.md-nav__item--nested>.md-nav__link:after{ + content:"\E313" +} +.md-nav__link[data-md-state=blur]{ + color:rgba(0,0,0,.54) +} +.md-nav__link--active,.md-nav__link:active{ + color:#3f51b5 +} +.md-nav__item--nested>.md-nav__link{ + color:inherit +} +.md-nav__link:focus,.md-nav__link:hover{ + color:#536dfe +} +.md-nav__source,.no-js .md-search{ + display:none +} +.md-search__overlay{ + opacity:0; + z-index:1 +} +.md-search__form{ + position:relative +} +.md-search__input{ + position:relative; + padding:0 2.2rem 0 3.6rem; + text-overflow:ellipsis; + z-index:2 +} +[dir=rtl] .md-search__input{ + padding:0 3.6rem 0 2.2rem +} +.md-search__input::-webkit-input-placeholder{ + transition:color .25s cubic-bezier(.1,.7,.1,1) +} +.md-search__input:-ms-input-placeholder{ + transition:color .25s cubic-bezier(.1,.7,.1,1) +} +.md-search__input::-ms-input-placeholder{ + transition:color .25s cubic-bezier(.1,.7,.1,1) +} +.md-search__input::placeholder{ + transition:color .25s cubic-bezier(.1,.7,.1,1) +} +.md-search__input::-webkit-input-placeholder,.md-search__input~.md-search__icon{ + color:rgba(0,0,0,.54) +} +.md-search__input:-ms-input-placeholder,.md-search__input~.md-search__icon{ + color:rgba(0,0,0,.54) +} +.md-search__input::-ms-input-placeholder,.md-search__input~.md-search__icon{ + color:rgba(0,0,0,.54) +} +.md-search__input::placeholder,.md-search__input~.md-search__icon{ + color:rgba(0,0,0,.54) +} +.md-search__input::-ms-clear{ + display:none +} +.md-search__icon{ + position:absolute; + transition:color .25s cubic-bezier(.1,.7,.1,1),opacity .25s; + font-size:1.2rem; + cursor:pointer; + z-index:2 +} +.md-search__icon:hover{ + opacity:.7 +} +.md-search__icon[for=__search]{ + top:.3rem; + left:.5rem +} +[dir=rtl] .md-search__icon[for=__search]{ + right:.5rem; + left:auto +} +.md-search__icon[for=__search]:before{ + content:"\E8B6" +} +.md-search__icon[type=reset]{ + top:.3rem; + right:.5rem; + -webkit-transform:scale(.125); + transform:scale(.125); + transition:opacity .15s,-webkit-transform .15s cubic-bezier(.1,.7,.1,1); + transition:transform .15s cubic-bezier(.1,.7,.1,1),opacity .15s; + transition:transform .15s cubic-bezier(.1,.7,.1,1),opacity .15s,-webkit-transform .15s cubic-bezier(.1,.7,.1,1); + opacity:0 +} +[dir=rtl] .md-search__icon[type=reset]{ + right:auto; + left:.5rem +} +[data-md-toggle=search]:checked~.md-header .md-search__input:valid~.md-search__icon[type=reset]{ + -webkit-transform:scale(1); + transform:scale(1); + opacity:1 +} +[data-md-toggle=search]:checked~.md-header .md-search__input:valid~.md-search__icon[type=reset]:hover{ + opacity:.7 +} +.md-search__output{ + position:absolute; + width:100%; + border-radius:0 0 .1rem .1rem; + overflow:hidden; + z-index:1 +} +.md-search__scrollwrap{ + height:100%; + background-color:#fff; + box-shadow:inset 0 .05rem 0 rgba(0,0,0,.07); + overflow-y:auto; + -webkit-overflow-scrolling:touch +} +.md-search-result{ + color:rgba(0,0,0,.87); + word-break:break-word +} +.md-search-result__meta{ + padding:0 .8rem; + background-color:rgba(0,0,0,.07); + color:rgba(0,0,0,.54); + font-size:.64rem; + line-height:1.8rem +} +.md-search-result__list{ + margin:0; + padding:0; + border-top:.05rem solid rgba(0,0,0,.07); + list-style:none +} +.md-search-result__item{ + box-shadow:0 -.05rem 0 rgba(0,0,0,.07) +} +.md-search-result__link{ + display:block; + transition:background .25s; + outline:0; + overflow:hidden +} +.md-search-result__link:hover,.md-search-result__link[data-md-state=active]{ + background-color:rgba(83,109,254,.1) +} +.md-search-result__link:hover .md-search-result__article:before,.md-search-result__link[data-md-state=active] .md-search-result__article:before{ + opacity:.7 +} +.md-search-result__link:last-child .md-search-result__teaser{ + margin-bottom:.6rem +} +.md-search-result__article{ + position:relative; + padding:0 .8rem; + overflow:auto +} +.md-search-result__article--document:before{ + position:absolute; + left:0; + margin:.1rem; + transition:opacity .25s; + color:rgba(0,0,0,.54); + content:"\E880" +} +[dir=rtl] .md-search-result__article--document:before{ + right:0; + left:auto +} +.md-search-result__article--document .md-search-result__title{ + margin:.55rem 0; + font-size:.8rem; + font-weight:400; + line-height:1.4 +} +.md-search-result__title{ + margin:.5em 0; + font-size:.64rem; + font-weight:700; + line-height:1.4 +} +.md-search-result__teaser{ + display:-webkit-box; + max-height:1.65rem; + margin:.5em 0; + color:rgba(0,0,0,.54); + font-size:.64rem; + line-height:1.4; + text-overflow:ellipsis; + overflow:hidden; + -webkit-line-clamp:2 +} +.md-search-result em{ + font-style:normal; + font-weight:700; + text-decoration:underline +} +.md-sidebar{ + position:absolute; + width:12.1rem; + padding:1.2rem 0; + overflow:hidden +} +.md-sidebar[data-md-state=lock]{ + position:fixed; + top:2.4rem +} +.md-sidebar--secondary{ + display:none +} +.md-sidebar__scrollwrap{ + max-height:100%; + margin:0 .2rem; + overflow-y:auto; + -webkit-backface-visibility:hidden; + backface-visibility:hidden +} +.md-sidebar__scrollwrap::-webkit-scrollbar{ + width:.2rem; + height:.2rem +} +.md-sidebar__scrollwrap::-webkit-scrollbar-thumb{ + background-color:rgba(0,0,0,.26) +} +.md-sidebar__scrollwrap::-webkit-scrollbar-thumb:hover{ + background-color:#536dfe +} + +.rst-versions { + /* Read the Docs' versions menu */ + font-size: .85rem; +} + +@-webkit-keyframes md-source__facts--done{ + 0%{ + height:0 + } + to{ + height:.65rem + } +} +@keyframes md-source__facts--done{ + 0%{ + height:0 + } + to{ + height:.65rem + } +} +@-webkit-keyframes md-source__fact--done{ + 0%{ + -webkit-transform:translateY(100%); + transform:translateY(100%); + opacity:0 + } + 50%{ + opacity:0 + } + to{ + -webkit-transform:translateY(0); + transform:translateY(0); + opacity:1 + } +} +@keyframes md-source__fact--done{ + 0%{ + -webkit-transform:translateY(100%); + transform:translateY(100%); + opacity:0 + } + 50%{ + opacity:0 + } + to{ + -webkit-transform:translateY(0); + transform:translateY(0); + opacity:1 + } +} +.md-source{ + display:block; + padding-right:.6rem; + transition:opacity .25s; + font-size:.65rem; + line-height:1.2; + white-space:nowrap +} +[dir=rtl] .md-source{ + padding-right:0; + padding-left:.6rem +} +.md-source:hover{ + opacity:.7 +} +.md-source:after,.md-source__icon{ + display:inline-block; + height:2.4rem; + content:""; + vertical-align:middle +} +.md-source__icon{ + width:2.4rem +} +.md-source__icon svg{ + width:1.2rem; + height:1.2rem; + margin-top:.6rem; + margin-left:.6rem +} +[dir=rtl] .md-source__icon svg{ + margin-right:.6rem; + margin-left:0 +} +.md-source__icon+.md-source__repository{ + margin-left:-2rem; + padding-left:2rem +} +[dir=rtl] .md-source__icon+.md-source__repository{ + margin-right:-2rem; + margin-left:0; + padding-right:2rem; + padding-left:0 +} +.md-source__repository{ + display:inline-block; + max-width:100%; + margin-left:.6rem; + font-weight:700; + text-overflow:ellipsis; + overflow:hidden; + vertical-align:middle +} +.md-source__facts{ + margin:0; + padding:0; + font-size:.55rem; + font-weight:700; + list-style-type:none; + opacity:.75; + overflow:hidden +} +[data-md-state=done] .md-source__facts{ + -webkit-animation:md-source__facts--done .25s ease-in; + animation:md-source__facts--done .25s ease-in +} +.md-source__fact{ + float:left +} +[dir=rtl] .md-source__fact{ + float:right +} +[data-md-state=done] .md-source__fact{ + -webkit-animation:md-source__fact--done .4s ease-out; + animation:md-source__fact--done .4s ease-out +} +.md-source__fact:before{ + margin:0 .1rem; + content:"\00B7" +} +.md-source__fact:first-child:before{ + display:none +} +.md-source-file{ + display:inline-block; + margin:1em .5em 1em 0; + padding-right:.25rem; + border-radius:.1rem; + background-color:rgba(0,0,0,.07); + font-size:.64rem; + list-style-type:none; + cursor:pointer; + overflow:hidden +} +.md-source-file:before{ + display:inline-block; + margin-right:.25rem; + padding:.25rem; + background-color:rgba(0,0,0,.26); + color:#fff; + font-size:.8rem; + content:"\E86F"; + vertical-align:middle +} +html .md-source-file{ + transition:background .4s,color .4s,box-shadow .4s cubic-bezier(.4,0,.2,1) +} +html .md-source-file:before{ + transition:inherit +} +html body .md-typeset .md-source-file{ + color:rgba(0,0,0,.54) +} +.md-source-file:hover{ + box-shadow:0 0 8px rgba(0,0,0,.18),0 8px 16px rgba(0,0,0,.36) +} +.md-source-file:hover:before{ + background-color:#536dfe +} +.md-tabs{ + width:100%; + transition:background .25s; + background-color:#3f51b5; + color:#fff; + overflow:auto +} +.md-tabs__list{ + margin:0 0 0 .2rem; + padding:0; + list-style:none; + white-space:nowrap +} +.md-tabs__item{ + display:inline-block; + height:2.4rem; + padding-right:.6rem; + padding-left:.6rem +} +.md-tabs__link{ + display:block; + margin-top:.8rem; + transition:opacity .25s,-webkit-transform .4s cubic-bezier(.1,.7,.1,1); + transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .25s; + transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .25s,-webkit-transform .4s cubic-bezier(.1,.7,.1,1); + font-size:.7rem; + opacity:.7 +} +.md-tabs__link--active,.md-tabs__link:hover{ + color:inherit; + opacity:1 +} +.md-tabs__item:nth-child(2) .md-tabs__link{ + transition-delay:.02s +} +.md-tabs__item:nth-child(3) .md-tabs__link{ + transition-delay:.04s +} +.md-tabs__item:nth-child(4) .md-tabs__link{ + transition-delay:.06s +} +.md-tabs__item:nth-child(5) .md-tabs__link{ + transition-delay:.08s +} +.md-tabs__item:nth-child(6) .md-tabs__link{ + transition-delay:.1s +} +.md-tabs__item:nth-child(7) .md-tabs__link{ + transition-delay:.12s +} +.md-tabs__item:nth-child(8) .md-tabs__link{ + transition-delay:.14s +} +.md-tabs__item:nth-child(9) .md-tabs__link{ + transition-delay:.16s +} +.md-tabs__item:nth-child(10) .md-tabs__link{ + transition-delay:.18s +} +.md-tabs__item:nth-child(11) .md-tabs__link{ + transition-delay:.2s +} +.md-tabs__item:nth-child(12) .md-tabs__link{ + transition-delay:.22s +} +.md-tabs__item:nth-child(13) .md-tabs__link{ + transition-delay:.24s +} +.md-tabs__item:nth-child(14) .md-tabs__link{ + transition-delay:.26s +} +.md-tabs__item:nth-child(15) .md-tabs__link{ + transition-delay:.28s +} +.md-tabs__item:nth-child(16) .md-tabs__link{ + transition-delay:.3s +} +.md-tabs[data-md-state=hidden]{ + pointer-events:none +} +.md-tabs[data-md-state=hidden] .md-tabs__link{ + -webkit-transform:translateY(50%); + transform:translateY(50%); + transition:color .25s,opacity .1s,-webkit-transform 0s .4s; + transition:color .25s,transform 0s .4s,opacity .1s; + transition:color .25s,transform 0s .4s,opacity .1s,-webkit-transform 0s .4s; + opacity:0 +} +.md-typeset .admonition,.md-typeset details{ + box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.2); + position:relative; + margin:1.5625em 0; + padding:0 .6rem; + border-left:.2rem solid #448aff; + border-radius:.1rem; + font-size:.64rem; + overflow:auto +} +[dir=rtl] .md-typeset .admonition,[dir=rtl] .md-typeset details{ + border-right:.2rem solid #448aff; + border-left:none +} +html .md-typeset .admonition>:last-child,html .md-typeset details>:last-child{ + margin-bottom:.6rem +} +.md-typeset .admonition .admonition,.md-typeset .admonition details,.md-typeset details .admonition,.md-typeset details details{ + margin:1em 0 +} +.md-typeset .admonition>.admonition-title,.md-typeset .admonition>summary,.md-typeset details>.admonition-title,.md-typeset details>summary{ + margin:0 -.6rem; + padding:.4rem .6rem .4rem 2rem; + border-bottom:.05rem solid rgba(68,138,255,.1); + background-color:rgba(68,138,255,.1); + font-weight:700 +} +[dir=rtl] .md-typeset .admonition>.admonition-title,[dir=rtl] .md-typeset .admonition>summary,[dir=rtl] .md-typeset details>.admonition-title,[dir=rtl] .md-typeset details>summary{ + padding:.4rem 2rem .4rem .6rem +} +.md-typeset .admonition>.admonition-title:last-child,.md-typeset .admonition>summary:last-child,.md-typeset details>.admonition-title:last-child,.md-typeset details>summary:last-child{ + margin-bottom:0 +} +.md-typeset .admonition>.admonition-title:before,.md-typeset .admonition>summary:before,.md-typeset details>.admonition-title:before,.md-typeset details>summary:before{ + position:absolute; + left:.6rem; + color:#448aff; + font-size:1rem; + content:"\E3C9" +} +[dir=rtl] .md-typeset .admonition>.admonition-title:before,[dir=rtl] .md-typeset .admonition>summary:before,[dir=rtl] .md-typeset details>.admonition-title:before,[dir=rtl] .md-typeset details>summary:before{ + right:.6rem; + left:auto +} +.md-typeset .admonition.abstract,.md-typeset .admonition.summary,.md-typeset .admonition.tldr,.md-typeset details.abstract,.md-typeset details.summary,.md-typeset details.tldr{ + border-left-color:#00b0ff +} +[dir=rtl] .md-typeset .admonition.abstract,[dir=rtl] .md-typeset .admonition.summary,[dir=rtl] .md-typeset .admonition.tldr,[dir=rtl] .md-typeset details.abstract,[dir=rtl] .md-typeset details.summary,[dir=rtl] .md-typeset details.tldr{ + border-right-color:#00b0ff +} +.md-typeset .admonition.abstract>.admonition-title,.md-typeset .admonition.abstract>summary,.md-typeset .admonition.summary>.admonition-title,.md-typeset .admonition.summary>summary,.md-typeset .admonition.tldr>.admonition-title,.md-typeset .admonition.tldr>summary,.md-typeset details.abstract>.admonition-title,.md-typeset details.abstract>summary,.md-typeset details.summary>.admonition-title,.md-typeset details.summary>summary,.md-typeset details.tldr>.admonition-title,.md-typeset details.tldr>summary{ + border-bottom-color:rgba(0,176,255,.1); + background-color:rgba(0,176,255,.1) +} +.md-typeset .admonition.abstract>.admonition-title:before,.md-typeset .admonition.abstract>summary:before,.md-typeset .admonition.summary>.admonition-title:before,.md-typeset .admonition.summary>summary:before,.md-typeset .admonition.tldr>.admonition-title:before,.md-typeset .admonition.tldr>summary:before,.md-typeset details.abstract>.admonition-title:before,.md-typeset details.abstract>summary:before,.md-typeset details.summary>.admonition-title:before,.md-typeset details.summary>summary:before,.md-typeset details.tldr>.admonition-title:before,.md-typeset details.tldr>summary:before{ + color:#00b0ff; + content:"" +} +.md-typeset .admonition.info,.md-typeset .admonition.todo,.md-typeset details.info,.md-typeset details.todo{ + border-left-color:#00b8d4 +} +[dir=rtl] .md-typeset .admonition.info,[dir=rtl] .md-typeset .admonition.todo,[dir=rtl] .md-typeset details.info,[dir=rtl] .md-typeset details.todo{ + border-right-color:#00b8d4 +} +.md-typeset .admonition.info>.admonition-title,.md-typeset .admonition.info>summary,.md-typeset .admonition.todo>.admonition-title,.md-typeset .admonition.todo>summary,.md-typeset details.info>.admonition-title,.md-typeset details.info>summary,.md-typeset details.todo>.admonition-title,.md-typeset details.todo>summary{ + border-bottom-color:rgba(0,184,212,.1); + background-color:rgba(0,184,212,.1) +} +.md-typeset .admonition.info>.admonition-title:before,.md-typeset .admonition.info>summary:before,.md-typeset .admonition.todo>.admonition-title:before,.md-typeset .admonition.todo>summary:before,.md-typeset details.info>.admonition-title:before,.md-typeset details.info>summary:before,.md-typeset details.todo>.admonition-title:before,.md-typeset details.todo>summary:before{ + color:#00b8d4; + content:"" +} +.md-typeset .admonition.hint,.md-typeset .admonition.important,.md-typeset .admonition.tip,.md-typeset details.hint,.md-typeset details.important,.md-typeset details.tip{ + border-left-color:#00bfa5 +} +[dir=rtl] .md-typeset .admonition.hint,[dir=rtl] .md-typeset .admonition.important,[dir=rtl] .md-typeset .admonition.tip,[dir=rtl] .md-typeset details.hint,[dir=rtl] .md-typeset details.important,[dir=rtl] .md-typeset details.tip{ + border-right-color:#00bfa5 +} +.md-typeset .admonition.hint>.admonition-title,.md-typeset .admonition.hint>summary,.md-typeset .admonition.important>.admonition-title,.md-typeset .admonition.important>summary,.md-typeset .admonition.tip>.admonition-title,.md-typeset .admonition.tip>summary,.md-typeset details.hint>.admonition-title,.md-typeset details.hint>summary,.md-typeset details.important>.admonition-title,.md-typeset details.important>summary,.md-typeset details.tip>.admonition-title,.md-typeset details.tip>summary{ + border-bottom-color:rgba(0,191,165,.1); + background-color:rgba(0,191,165,.1) +} +.md-typeset .admonition.hint>.admonition-title:before,.md-typeset .admonition.hint>summary:before,.md-typeset .admonition.important>.admonition-title:before,.md-typeset .admonition.important>summary:before,.md-typeset .admonition.tip>.admonition-title:before,.md-typeset .admonition.tip>summary:before,.md-typeset details.hint>.admonition-title:before,.md-typeset details.hint>summary:before,.md-typeset details.important>.admonition-title:before,.md-typeset details.important>summary:before,.md-typeset details.tip>.admonition-title:before,.md-typeset details.tip>summary:before{ + color:#00bfa5; + content:"" +} +.md-typeset .admonition.check,.md-typeset .admonition.done,.md-typeset .admonition.success,.md-typeset details.check,.md-typeset details.done,.md-typeset details.success{ + border-left-color:#00c853 +} +[dir=rtl] .md-typeset .admonition.check,[dir=rtl] .md-typeset .admonition.done,[dir=rtl] .md-typeset .admonition.success,[dir=rtl] .md-typeset details.check,[dir=rtl] .md-typeset details.done,[dir=rtl] .md-typeset details.success{ + border-right-color:#00c853 +} +.md-typeset .admonition.check>.admonition-title,.md-typeset .admonition.check>summary,.md-typeset .admonition.done>.admonition-title,.md-typeset .admonition.done>summary,.md-typeset .admonition.success>.admonition-title,.md-typeset .admonition.success>summary,.md-typeset details.check>.admonition-title,.md-typeset details.check>summary,.md-typeset details.done>.admonition-title,.md-typeset details.done>summary,.md-typeset details.success>.admonition-title,.md-typeset details.success>summary{ + border-bottom-color:rgba(0,200,83,.1); + background-color:rgba(0,200,83,.1) +} +.md-typeset .admonition.check>.admonition-title:before,.md-typeset .admonition.check>summary:before,.md-typeset .admonition.done>.admonition-title:before,.md-typeset .admonition.done>summary:before,.md-typeset .admonition.success>.admonition-title:before,.md-typeset .admonition.success>summary:before,.md-typeset details.check>.admonition-title:before,.md-typeset details.check>summary:before,.md-typeset details.done>.admonition-title:before,.md-typeset details.done>summary:before,.md-typeset details.success>.admonition-title:before,.md-typeset details.success>summary:before{ + color:#00c853; + content:"" +} +.md-typeset .admonition.faq,.md-typeset .admonition.help,.md-typeset .admonition.question,.md-typeset details.faq,.md-typeset details.help,.md-typeset details.question{ + border-left-color:#64dd17 +} +[dir=rtl] .md-typeset .admonition.faq,[dir=rtl] .md-typeset .admonition.help,[dir=rtl] .md-typeset .admonition.question,[dir=rtl] .md-typeset details.faq,[dir=rtl] .md-typeset details.help,[dir=rtl] .md-typeset details.question{ + border-right-color:#64dd17 +} +.md-typeset .admonition.faq>.admonition-title,.md-typeset .admonition.faq>summary,.md-typeset .admonition.help>.admonition-title,.md-typeset .admonition.help>summary,.md-typeset .admonition.question>.admonition-title,.md-typeset .admonition.question>summary,.md-typeset details.faq>.admonition-title,.md-typeset details.faq>summary,.md-typeset details.help>.admonition-title,.md-typeset details.help>summary,.md-typeset details.question>.admonition-title,.md-typeset details.question>summary{ + border-bottom-color:rgba(100,221,23,.1); + background-color:rgba(100,221,23,.1) +} +.md-typeset .admonition.faq>.admonition-title:before,.md-typeset .admonition.faq>summary:before,.md-typeset .admonition.help>.admonition-title:before,.md-typeset .admonition.help>summary:before,.md-typeset .admonition.question>.admonition-title:before,.md-typeset .admonition.question>summary:before,.md-typeset details.faq>.admonition-title:before,.md-typeset details.faq>summary:before,.md-typeset details.help>.admonition-title:before,.md-typeset details.help>summary:before,.md-typeset details.question>.admonition-title:before,.md-typeset details.question>summary:before{ + color:#64dd17; + content:"" +} +.md-typeset .admonition.attention,.md-typeset .admonition.caution,.md-typeset .admonition.warning,.md-typeset details.attention,.md-typeset details.caution,.md-typeset details.warning{ + border-left-color:#ff9100 +} +[dir=rtl] .md-typeset .admonition.attention,[dir=rtl] .md-typeset .admonition.caution,[dir=rtl] .md-typeset .admonition.warning,[dir=rtl] .md-typeset details.attention,[dir=rtl] .md-typeset details.caution,[dir=rtl] .md-typeset details.warning{ + border-right-color:#ff9100 +} +.md-typeset .admonition.attention>.admonition-title,.md-typeset .admonition.attention>summary,.md-typeset .admonition.caution>.admonition-title,.md-typeset .admonition.caution>summary,.md-typeset .admonition.warning>.admonition-title,.md-typeset .admonition.warning>summary,.md-typeset details.attention>.admonition-title,.md-typeset details.attention>summary,.md-typeset details.caution>.admonition-title,.md-typeset details.caution>summary,.md-typeset details.warning>.admonition-title,.md-typeset details.warning>summary{ + border-bottom-color:rgba(255,145,0,.1); + background-color:rgba(255,145,0,.1) +} +.md-typeset .admonition.attention>.admonition-title:before,.md-typeset .admonition.attention>summary:before,.md-typeset .admonition.caution>.admonition-title:before,.md-typeset .admonition.caution>summary:before,.md-typeset .admonition.warning>.admonition-title:before,.md-typeset .admonition.warning>summary:before,.md-typeset details.attention>.admonition-title:before,.md-typeset details.attention>summary:before,.md-typeset details.caution>.admonition-title:before,.md-typeset details.caution>summary:before,.md-typeset details.warning>.admonition-title:before,.md-typeset details.warning>summary:before{ + color:#ff9100; + content:"" +} +.md-typeset .admonition.fail,.md-typeset .admonition.failure,.md-typeset .admonition.missing,.md-typeset details.fail,.md-typeset details.failure,.md-typeset details.missing{ + border-left-color:#ff5252 +} +[dir=rtl] .md-typeset .admonition.fail,[dir=rtl] .md-typeset .admonition.failure,[dir=rtl] .md-typeset .admonition.missing,[dir=rtl] .md-typeset details.fail,[dir=rtl] .md-typeset details.failure,[dir=rtl] .md-typeset details.missing{ + border-right-color:#ff5252 +} +.md-typeset .admonition.fail>.admonition-title,.md-typeset .admonition.fail>summary,.md-typeset .admonition.failure>.admonition-title,.md-typeset .admonition.failure>summary,.md-typeset .admonition.missing>.admonition-title,.md-typeset .admonition.missing>summary,.md-typeset details.fail>.admonition-title,.md-typeset details.fail>summary,.md-typeset details.failure>.admonition-title,.md-typeset details.failure>summary,.md-typeset details.missing>.admonition-title,.md-typeset details.missing>summary{ + border-bottom-color:rgba(255,82,82,.1); + background-color:rgba(255,82,82,.1) +} +.md-typeset .admonition.fail>.admonition-title:before,.md-typeset .admonition.fail>summary:before,.md-typeset .admonition.failure>.admonition-title:before,.md-typeset .admonition.failure>summary:before,.md-typeset .admonition.missing>.admonition-title:before,.md-typeset .admonition.missing>summary:before,.md-typeset details.fail>.admonition-title:before,.md-typeset details.fail>summary:before,.md-typeset details.failure>.admonition-title:before,.md-typeset details.failure>summary:before,.md-typeset details.missing>.admonition-title:before,.md-typeset details.missing>summary:before{ + color:#ff5252; + content:"" +} +.md-typeset .admonition.danger,.md-typeset .admonition.error,.md-typeset details.danger,.md-typeset details.error{ + border-left-color:#ff1744 +} +[dir=rtl] .md-typeset .admonition.danger,[dir=rtl] .md-typeset .admonition.error,[dir=rtl] .md-typeset details.danger,[dir=rtl] .md-typeset details.error{ + border-right-color:#ff1744 +} +.md-typeset .admonition.danger>.admonition-title,.md-typeset .admonition.danger>summary,.md-typeset .admonition.error>.admonition-title,.md-typeset .admonition.error>summary,.md-typeset details.danger>.admonition-title,.md-typeset details.danger>summary,.md-typeset details.error>.admonition-title,.md-typeset details.error>summary{ + border-bottom-color:rgba(255,23,68,.1); + background-color:rgba(255,23,68,.1) +} +.md-typeset .admonition.danger>.admonition-title:before,.md-typeset .admonition.danger>summary:before,.md-typeset .admonition.error>.admonition-title:before,.md-typeset .admonition.error>summary:before,.md-typeset details.danger>.admonition-title:before,.md-typeset details.danger>summary:before,.md-typeset details.error>.admonition-title:before,.md-typeset details.error>summary:before{ + color:#ff1744; + content:"" +} +.md-typeset .admonition.bug,.md-typeset details.bug{ + border-left-color:#f50057 +} +[dir=rtl] .md-typeset .admonition.bug,[dir=rtl] .md-typeset details.bug{ + border-right-color:#f50057 +} +.md-typeset .admonition.bug>.admonition-title,.md-typeset .admonition.bug>summary,.md-typeset details.bug>.admonition-title,.md-typeset details.bug>summary{ + border-bottom-color:rgba(245,0,87,.1); + background-color:rgba(245,0,87,.1) +} +.md-typeset .admonition.bug>.admonition-title:before,.md-typeset .admonition.bug>summary:before,.md-typeset details.bug>.admonition-title:before,.md-typeset details.bug>summary:before{ + color:#f50057; + content:"" +} +.md-typeset .admonition.example,.md-typeset details.example{ + border-left-color:#651fff +} +[dir=rtl] .md-typeset .admonition.example,[dir=rtl] .md-typeset details.example{ + border-right-color:#651fff +} +.md-typeset .admonition.example>.admonition-title,.md-typeset .admonition.example>summary,.md-typeset details.example>.admonition-title,.md-typeset details.example>summary{ + border-bottom-color:rgba(101,31,255,.1); + background-color:rgba(101,31,255,.1) +} +.md-typeset .admonition.example>.admonition-title:before,.md-typeset .admonition.example>summary:before,.md-typeset details.example>.admonition-title:before,.md-typeset details.example>summary:before{ + color:#651fff; + content:"" +} +.md-typeset .admonition.cite,.md-typeset .admonition.quote,.md-typeset details.cite,.md-typeset details.quote{ + border-left-color:#9e9e9e +} +[dir=rtl] .md-typeset .admonition.cite,[dir=rtl] .md-typeset .admonition.quote,[dir=rtl] .md-typeset details.cite,[dir=rtl] .md-typeset details.quote{ + border-right-color:#9e9e9e +} +.md-typeset .admonition.cite>.admonition-title,.md-typeset .admonition.cite>summary,.md-typeset .admonition.quote>.admonition-title,.md-typeset .admonition.quote>summary,.md-typeset details.cite>.admonition-title,.md-typeset details.cite>summary,.md-typeset details.quote>.admonition-title,.md-typeset details.quote>summary{ + border-bottom-color:hsla(0,0%,62%,.1); + background-color:hsla(0,0%,62%,.1) +} +.md-typeset .admonition.cite>.admonition-title:before,.md-typeset .admonition.cite>summary:before,.md-typeset .admonition.quote>.admonition-title:before,.md-typeset .admonition.quote>summary:before,.md-typeset details.cite>.admonition-title:before,.md-typeset details.cite>summary:before,.md-typeset details.quote>.admonition-title:before,.md-typeset details.quote>summary:before{ + color:#9e9e9e; + content:"" +} +.codehilite .o,.codehilite .ow,.highlight .o,.highlight .ow{ + color:inherit +} +.codehilite .ge,.highlight .ge{ + color:#000 +} +.codehilite .gr,.highlight .gr{ + color:#a00 +} +.codehilite .gh,.highlight .gh{ + color:#999 +} +.codehilite .go,.highlight .go{ + color:#888 +} +.codehilite .gp,.highlight .gp{ + color:#555 +} +.codehilite .gs,.highlight .gs{ + color:inherit +} +.codehilite .gu,.highlight .gu{ + color:#aaa +} +.codehilite .gt,.highlight .gt{ + color:#a00 +} +.codehilite .gd,.highlight .gd{ + background-color:#fdd +} +.codehilite .gi,.highlight .gi{ + background-color:#dfd +} +.codehilite .k,.highlight .k{ + color:#3b78e7 +} +.codehilite .kc,.highlight .kc{ + color:#a71d5d +} +.codehilite .kd,.codehilite .kn,.highlight .kd,.highlight .kn{ + color:#3b78e7 +} +.codehilite .kp,.highlight .kp{ + color:#a71d5d +} +.codehilite .kr,.codehilite .kt,.highlight .kr,.highlight .kt{ + color:#3e61a2 +} +.codehilite .c,.codehilite .cm,.highlight .c,.highlight .cm{ + color:#999 +} +.codehilite .cp,.highlight .cp{ + color:#666 +} +.codehilite .c1,.codehilite .ch,.codehilite .cs,.highlight .c1,.highlight .ch,.highlight .cs{ + color:#999 +} +.codehilite .na,.codehilite .nb,.highlight .na,.highlight .nb{ + color:#c2185b +} +.codehilite .bp,.highlight .bp{ + color:#3e61a2 +} +.codehilite .nc,.highlight .nc{ + color:#c2185b +} +.codehilite .no,.highlight .no{ + color:#3e61a2 +} +.codehilite .nd,.codehilite .ni,.highlight .nd,.highlight .ni{ + color:#666 +} +.codehilite .ne,.codehilite .nf,.highlight .ne,.highlight .nf{ + color:#c2185b +} +.codehilite .nl,.highlight .nl{ + color:#3b5179 +} +.codehilite .nn,.highlight .nn{ + color:#ec407a +} +.codehilite .nt,.highlight .nt{ + color:#3b78e7 +} +.codehilite .nv,.codehilite .vc,.codehilite .vg,.codehilite .vi,.highlight .nv,.highlight .vc,.highlight .vg,.highlight .vi{ + color:#3e61a2 +} +.codehilite .nx,.highlight .nx{ + color:#ec407a +} +.codehilite .il,.codehilite .m,.codehilite .mf,.codehilite .mh,.codehilite .mi,.codehilite .mo,.highlight .il,.highlight .m,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{ + color:#e74c3c +} +.codehilite .s,.codehilite .sb,.codehilite .sc,.highlight .s,.highlight .sb,.highlight .sc{ + color:#0d904f +} +.codehilite .sd,.highlight .sd{ + color:#999 +} +.codehilite .s2,.highlight .s2{ + color:#0d904f +} +.codehilite .se,.codehilite .sh,.codehilite .si,.codehilite .sx,.highlight .se,.highlight .sh,.highlight .si,.highlight .sx{ + color:#183691 +} +.codehilite .sr,.highlight .sr{ + color:#009926 +} +.codehilite .s1,.codehilite .ss,.highlight .s1,.highlight .ss{ + color:#0d904f +} +.codehilite .err,.highlight .err{ + color:#a61717 +} +.codehilite .w,.highlight .w{ + color:transparent +} +.codehilite .hll, .highlight .hll{ + display:block; + margin:0 -.6rem; + padding:0 .6rem; + background-color:rgba(255,235,59,.5) +} +.md-typeset .codehilite,.highlight{ + position:relative; + margin:1em 0; + padding:0; + border-radius:.1rem; + background-color:hsla(0,0%,92.5%,.5); + color:#37474f; + line-height:1.4; + -webkit-overflow-scrolling:touch +} +.md-typeset .codehilite code,.md-typeset .codehilite pre,.highlight code,.highlight pre{ + display:block; + margin:0; + padding:.525rem .6rem; + background-color:transparent; + overflow:auto; + vertical-align:top +} +.md-typeset .codehilite code::-webkit-scrollbar,.md-typeset .codehilite pre::-webkit-scrollbar,.highlight code::-webkit-scrollbar,.highlight pre::-webkit-scrollbar{ + width:.2rem; + height:.2rem +} +.md-typeset .codehilite code::-webkit-scrollbar-thumb,.md-typeset .codehilite pre::-webkit-scrollbar-thumb,.highlight code::-webkit-scrollbar-thumb,.highlight pre::-webkit-scrollbar-thumb{ + background-color:rgba(0,0,0,.26) +} +.md-typeset .codehilite code::-webkit-scrollbar-thumb:hover,.md-typeset .codehilite pre::-webkit-scrollbar-thumb:hover,.highlight code::-webkit-scrollbar-thumb:hover, .highlight pre::-webkit-scrollbar-thumb:hover{ + background-color:#536dfe +} +.md-typeset pre.codehilite,.md-typeset pre.highlight{ + overflow:visible +} +.md-typeset pre.codehilite code,.md-typeset pre.highlight code{ + display:block; + padding:.525rem .6rem; + overflow:auto +} +.md-typeset .codehilitetable,.md-typeset .highlighttable{ + display:block; + margin:1em 0; + border-radius:.2em; + font-size:.8rem; + overflow:hidden +} +.md-typeset .codehilitetable tbody,.md-typeset .codehilitetable td,.md-typeset .highlighttable tbody,.md-typeset .highlighttable td{ + display:block; + padding:0 +} +.md-typeset .codehilitetable tr,.md-typeset .highlighttable tr{ + display:flex +} +.md-typeset .codehilitetable .codehilite,.md-typeset .codehilitetable .highlight,.md-typeset .codehilitetable .linenodiv,.md-typeset .highlighttable .codehilite,.md-typeset .highlighttable .highlight,.md-typeset .highlighttable .linenodiv{ + margin:0; + border-radius:0 +} +.md-typeset .codehilitetable .linenodiv,.md-typeset .highlighttable .linenodiv{ + padding:.525rem .6rem +} +.md-typeset .codehilitetable .linenos,.md-typeset .highlighttable .linenos{ + background-color:rgba(0,0,0,.07); + color:rgba(0,0,0,.26); + -webkit-user-select:none; + -moz-user-select:none; + -ms-user-select:none; + user-select:none +} +.md-typeset .codehilitetable .linenos pre,.md-typeset .highlighttable .linenos pre{ + margin:0; + padding:0; + background-color:transparent; + color:inherit; + text-align:right +} +.md-typeset .codehilitetable .code,.md-typeset .highlighttable .code{ + flex:1; + overflow:hidden +} +.md-typeset>.codehilitetable,.md-typeset>.highlighttable{ + box-shadow:none +} +.md-typeset [id^="fnref:"]{ + display:inline-block +} +.md-typeset [id^="fnref:"]:target{ + margin-top:-3.8rem; + padding-top:3.8rem; + pointer-events:none +} +.md-typeset [id^="fn:"]:before{ + display:none; + height:0; + content:"" +} +.md-typeset [id^="fn:"]:target:before{ + display:block; + margin-top:-3.5rem; + padding-top:3.5rem; + pointer-events:none +} +.md-typeset .footnote{ + color:rgba(0,0,0,.54); + font-size:.64rem +} +.md-typeset .footnote ol{ + margin-left:0 +} +.md-typeset .footnote li{ + transition:color .25s +} +.md-typeset .footnote li:target{ + color:rgba(0,0,0,.87) +} +.md-typeset .footnote li :first-child{ + margin-top:0 +} +.md-typeset .footnote li:hover .footnote-backref,.md-typeset .footnote li:target .footnote-backref{ + -webkit-transform:translateX(0); + transform:translateX(0); + opacity:1 +} +.md-typeset .footnote li:hover .footnote-backref:hover,.md-typeset .footnote li:target .footnote-backref{ + color:#536dfe +} +.md-typeset .footnote-ref{ + display:inline-block; + pointer-events:auto +} +.md-typeset .footnote-ref:before{ + display:inline; + margin:0 .2em; + border-left:.05rem solid rgba(0,0,0,.26); + font-size:1.25em; + content:""; + vertical-align:-.25rem +} +.md-typeset .footnote-backref{ + display:inline-block; + -webkit-transform:translateX(.25rem); + transform:translateX(.25rem); + transition:color .25s,opacity .125s .125s,-webkit-transform .25s .125s; + transition:transform .25s .125s,color .25s,opacity .125s .125s; + transition:transform .25s .125s,color .25s,opacity .125s .125s,-webkit-transform .25s .125s; + color:rgba(0,0,0,.26); + font-size:0; + opacity:0; + vertical-align:text-bottom +} +[dir=rtl] .md-typeset .footnote-backref{ + -webkit-transform:translateX(-.25rem); + transform:translateX(-.25rem) +} +.md-typeset .footnote-backref:before{ + display:inline-block; + font-size:.8rem; + content:"\E31B" +} +[dir=rtl] .md-typeset .footnote-backref:before{ + -webkit-transform:scaleX(-1); + transform:scaleX(-1) +} +.md-typeset .headerlink{ + display:inline-block; + margin-left:.5rem; + -webkit-transform:translateY(.25rem); + transform:translateY(.25rem); + transition:color .25s,opacity .125s .25s,-webkit-transform .25s .25s; + transition:transform .25s .25s,color .25s,opacity .125s .25s; + transition:transform .25s .25s,color .25s,opacity .125s .25s,-webkit-transform .25s .25s; + opacity:0 +} +[dir=rtl] .md-typeset .headerlink{ + margin-right:.5rem; + margin-left:0 +} +html body .md-typeset .headerlink{ + color:rgba(0,0,0,.26) +} +.md-typeset h1[id]:before{ + display:block; + margin-top:-9px; + padding-top:9px; + content:"" +} +.md-typeset h1[id]:target:before{ + margin-top:-3.45rem; + padding-top:3.45rem +} +.md-typeset h1[id] .headerlink:focus,.md-typeset h1[id]:hover .headerlink,.md-typeset h1[id]:target .headerlink{ + -webkit-transform:translate(0); + transform:translate(0); + opacity:1 +} +.md-typeset h1[id] .headerlink:focus,.md-typeset h1[id]:hover .headerlink:hover,.md-typeset h1[id]:target .headerlink{ + color:#536dfe +} +.md-typeset h2[id]:before{ + display:block; + margin-top:-8px; + padding-top:8px; + content:"" +} +.md-typeset h2[id]:target:before{ + margin-top:-3.4rem; + padding-top:3.4rem +} +.md-typeset h2[id] .headerlink:focus,.md-typeset h2[id]:hover .headerlink,.md-typeset h2[id]:target .headerlink{ + -webkit-transform:translate(0); + transform:translate(0); + opacity:1 +} +.md-typeset h2[id] .headerlink:focus,.md-typeset h2[id]:hover .headerlink:hover,.md-typeset h2[id]:target .headerlink{ + color:#536dfe +} +.md-typeset h3[id]:before{ + display:block; + margin-top:-9px; + padding-top:9px; + content:"" +} +.md-typeset h3[id]:target:before{ + margin-top:-3.45rem; + padding-top:3.45rem +} +.md-typeset h3[id] .headerlink:focus,.md-typeset h3[id]:hover .headerlink,.md-typeset h3[id]:target .headerlink{ + -webkit-transform:translate(0); + transform:translate(0); + opacity:1 +} +.md-typeset h3[id] .headerlink:focus,.md-typeset h3[id]:hover .headerlink:hover,.md-typeset h3[id]:target .headerlink{ + color:#536dfe +} +.md-typeset h4[id]:before{ + display:block; + margin-top:-9px; + padding-top:9px; + content:"" +} +.md-typeset h4[id]:target:before{ + margin-top:-3.45rem; + padding-top:3.45rem +} +.md-typeset h4[id] .headerlink:focus,.md-typeset h4[id]:hover .headerlink,.md-typeset h4[id]:target .headerlink{ + -webkit-transform:translate(0); + transform:translate(0); + opacity:1 +} +.md-typeset h4[id] .headerlink:focus,.md-typeset h4[id]:hover .headerlink:hover,.md-typeset h4[id]:target .headerlink{ + color:#536dfe +} +.md-typeset h5[id]:before{ + display:block; + margin-top:-11px; + padding-top:11px; + content:"" +} +.md-typeset h5[id]:target:before{ + margin-top:-3.55rem; + padding-top:3.55rem +} +.md-typeset h5[id] .headerlink:focus,.md-typeset h5[id]:hover .headerlink,.md-typeset h5[id]:target .headerlink{ + -webkit-transform:translate(0); + transform:translate(0); + opacity:1 +} +.md-typeset h5[id] .headerlink:focus,.md-typeset h5[id]:hover .headerlink:hover,.md-typeset h5[id]:target .headerlink{ + color:#536dfe +} +.md-typeset h6[id]:before{ + display:block; + margin-top:-11px; + padding-top:11px; + content:"" +} +.md-typeset h6[id]:target:before{ + margin-top:-3.55rem; + padding-top:3.55rem +} +.md-typeset h6[id] .headerlink:focus,.md-typeset h6[id]:hover .headerlink,.md-typeset h6[id]:target .headerlink{ + -webkit-transform:translate(0); + transform:translate(0); + opacity:1 +} +.md-typeset h6[id] .headerlink:focus,.md-typeset h6[id]:hover .headerlink:hover,.md-typeset h6[id]:target .headerlink{ + color:#536dfe +} +.md-typeset .MJXc-display{ + margin:.75em 0; + padding:.75em 0; + overflow:auto; + -webkit-overflow-scrolling:touch +} +.md-typeset .MathJax_CHTML{ + outline:0 +} +.md-typeset .critic.comment,.md-typeset del.critic,.md-typeset ins.critic{ + margin:0 .25em; + padding:.0625em 0; + border-radius:.1rem; + -webkit-box-decoration-break:clone; + box-decoration-break:clone +} +.md-typeset del.critic{ + background-color:#fdd; + box-shadow:.25em 0 0 #fdd,-.25em 0 0 #fdd +} +.md-typeset ins.critic{ + background-color:#dfd; + box-shadow:.25em 0 0 #dfd,-.25em 0 0 #dfd +} +.md-typeset .critic.comment{ + background-color:hsla(0,0%,92.5%,.5); + color:#37474f; + box-shadow:.25em 0 0 hsla(0,0%,92.5%,.5),-.25em 0 0 hsla(0,0%,92.5%,.5) +} +.md-typeset .critic.comment:before{ + padding-right:.125em; + color:rgba(0,0,0,.26); + content:"\E0B7"; + vertical-align:-.125em +} +.md-typeset .critic.block{ + display:block; + margin:1em 0; + padding-right:.8rem; + padding-left:.8rem; + box-shadow:none +} +.md-typeset .critic.block :first-child{ + margin-top:.5em +} +.md-typeset .critic.block :last-child{ + margin-bottom:.5em +} +.md-typeset details{ + display:block; + padding-top:0 +} +.md-typeset details[open]>summary:after{ + -webkit-transform:rotate(180deg); + transform:rotate(180deg) +} +.md-typeset details:not([open]){ + padding-bottom:0 +} +.md-typeset details:not([open])>summary{ + border-bottom:none +} +.md-typeset details summary{ + padding-right:2rem +} +[dir=rtl] .md-typeset details summary{ + padding-left:2rem +} +.no-details .md-typeset details:not([open])>*{ + display:none +} +.no-details .md-typeset details:not([open]) summary{ + display:block +} +.md-typeset summary{ + display:block; + outline:none; + cursor:pointer +} +.md-typeset summary::-webkit-details-marker{ + display:none +} +.md-typeset summary:after{ + position:absolute; + top:.4rem; + right:.6rem; + color:rgba(0,0,0,.26); + font-size:1rem; + content:"\E313" +} +[dir=rtl] .md-typeset summary:after{ + right:auto; + left:.6rem +} +.md-typeset .emojione{ + width:1rem; + vertical-align:text-top +} +.md-typeset code.codehilite,.md-typeset code.highlight{ + margin:0 .29412em; + padding:.07353em 0 +} +.md-typeset .superfences-content{ + display:none; + order:99; + width:100%; + background-color:#fff +} +.md-typeset .superfences-content>*{ + margin:0; + border-radius:0 +} +.md-typeset .superfences-tabs{ + display:flex; + position:relative; + flex-wrap:wrap; + margin:1em 0; + border:.05rem solid rgba(0,0,0,.07); + border-radius:.2em +} +.md-typeset .superfences-tabs>input{ + display:none +} +.md-typeset .superfences-tabs>input:checked+label{ + font-weight:700 +} +.md-typeset .superfences-tabs>input:checked+label+.superfences-content{ + display:block +} +.md-typeset .superfences-tabs>label{ + width:auto; + padding:.6rem; + transition:color .125s; + font-size:.64rem; + cursor:pointer +} +html .md-typeset .superfences-tabs>label:hover{ + color:#536dfe +} +.md-typeset .task-list-item{ + position:relative; + list-style-type:none +} +.md-typeset .task-list-item [type=checkbox]{ + position:absolute; + top:.45em; + left:-2em +} +[dir=rtl] .md-typeset .task-list-item [type=checkbox]{ + right:-2em; + left:auto +} +.md-typeset .task-list-control .task-list-indicator:before{ + position:absolute; + top:.15em; + left:-1.25em; + color:rgba(0,0,0,.26); + font-size:1.25em; + content:"\E835"; + vertical-align:-.25em +} +[dir=rtl] .md-typeset .task-list-control .task-list-indicator:before{ + right:-1.25em; + left:auto +} +.md-typeset .task-list-control [type=checkbox]:checked+.task-list-indicator:before{ + content:"\E834" +} +.md-typeset .task-list-control [type=checkbox]{ + opacity:0; + z-index:-1 +} +@media print{ + .md-typeset a:after{ + color:rgba(0,0,0,.54); + content:" [" attr(href) "]" + } + .md-typeset code,.md-typeset pre{ + white-space:pre-wrap + } + .md-typeset code{ + box-shadow:none; + -webkit-box-decoration-break:initial; + box-decoration-break:slice + } + .md-clipboard,.md-content__icon,.md-footer,.md-header,.md-sidebar,.md-tabs,.md-typeset .headerlink{ + display:none + } +} +@media only screen and (max-width:44.9375em){ + .md-typeset pre{ + margin:1em -.8rem; + border-radius:0 + } + .md-typeset pre>code{ + padding:.525rem .8rem + } + .md-footer-nav__link--prev .md-footer-nav__title{ + display:none + } + .md-search-result__teaser{ + max-height:2.5rem; + -webkit-line-clamp:3 + } + .codehilite .hll,.md-typeset .highlight .hll{ + margin:0 -.8rem; + padding:0 .8rem + } + .md-typeset>.codehilite,.md-typeset>.highlight{ + margin:1em -.8rem; + border-radius:0 + } + .md-typeset>.codehilite code,.md-typeset>.codehilite pre,.md-typeset>.highlight code,.md-typeset>.highlight pre{ + padding:.525rem .8rem + } + .md-typeset>.codehilitetable,.md-typeset>.highlighttable{ + margin:1em -.8rem; + border-radius:0 + } + .md-typeset>.codehilitetable .codehilite>code,.md-typeset>.codehilitetable .codehilite>pre,.md-typeset>.codehilitetable .highlight>code,.md-typeset>.codehilitetable .highlight>pre,.md-typeset>.codehilitetable .linenodiv,.md-typeset>.highlighttable .codehilite>code,.md-typeset>.highlighttable .codehilite>pre,.md-typeset>.highlighttable .highlight>code,.md-typeset>.highlighttable .highlight>pre,.md-typeset>.highlighttable .linenodiv{ + padding:.5rem .8rem + } + .md-typeset>p>.MJXc-display{ + margin:.75em -.8rem; + padding:.25em .8rem + } + .md-typeset>.superfences-tabs{ + margin:1em -.8rem; + border:0; + border-top:.05rem solid rgba(0,0,0,.07); + border-radius:0 + } + .md-typeset>.superfences-tabs code,.md-typeset>.superfences-tabs pre{ + padding:.525rem .8rem + } +} +@media only screen and (min-width:100em){ + html{ + font-size:137.5% + } +} +@media only screen and (min-width:125em){ + html{ + font-size:150% + } +} +@media only screen and (max-width:59.9375em){ + body[data-md-state=lock]{ + overflow:hidden + } + .ios body[data-md-state=lock] .md-container{ + display:none + } + html .md-nav__link[for=__toc]{ + display:block; + padding-right:2.4rem + } + html .md-nav__link[for=__toc]:after{ + color:inherit; + content:"\E8DE" + } + html .md-nav__link[for=__toc]~.md-nav{ + display:flex + } + html [dir=rtl] .md-nav__link{ + padding-right:.8rem; + padding-left:2.4rem + } + .md-nav__source{ + display:block; + padding:0 .2rem; + background-color:rgba(50,64,144,.9675); + color:#fff + } + .md-search__overlay{ + position:absolute; + top:.2rem; + left:.2rem; + width:1.8rem; + height:1.8rem; + -webkit-transform-origin:center; + transform-origin:center; + transition:opacity .2s .2s,-webkit-transform .3s .1s; + transition:transform .3s .1s,opacity .2s .2s; + transition:transform .3s .1s,opacity .2s .2s,-webkit-transform .3s .1s; + border-radius:1rem; + background-color:#fff; + overflow:hidden; + pointer-events:none + } + [dir=rtl] .md-search__overlay{ + right:.2rem; + left:auto + } + [data-md-toggle=search]:checked~.md-header .md-search__overlay{ + transition:opacity .1s,-webkit-transform .4s; + transition:transform .4s,opacity .1s; + transition:transform .4s,opacity .1s,-webkit-transform .4s; + opacity:1 + } + .md-search__inner{ + position:fixed; + top:0; + left:100%; + width:100%; + height:100%; + -webkit-transform:translateX(5%); + transform:translateX(5%); + transition:right 0s .3s,left 0s .3s,opacity .15s .15s,-webkit-transform .15s cubic-bezier(.4,0,.2,1) .15s; + transition:right 0s .3s,left 0s .3s,transform .15s cubic-bezier(.4,0,.2,1) .15s,opacity .15s .15s; + transition:right 0s .3s,left 0s .3s,transform .15s cubic-bezier(.4,0,.2,1) .15s,opacity .15s .15s,-webkit-transform .15s cubic-bezier(.4,0,.2,1) .15s; + opacity:0; + z-index:2 + } + [data-md-toggle=search]:checked~.md-header .md-search__inner{ + left:0; + -webkit-transform:translateX(0); + transform:translateX(0); + transition:right 0s 0s,left 0s 0s,opacity .15s .15s,-webkit-transform .15s cubic-bezier(.1,.7,.1,1) .15s; + transition:right 0s 0s,left 0s 0s,transform .15s cubic-bezier(.1,.7,.1,1) .15s,opacity .15s .15s; + transition:right 0s 0s,left 0s 0s,transform .15s cubic-bezier(.1,.7,.1,1) .15s,opacity .15s .15s,-webkit-transform .15s cubic-bezier(.1,.7,.1,1) .15s; + opacity:1 + } + [dir=rtl] [data-md-toggle=search]:checked~.md-header .md-search__inner{ + right:0; + left:auto + } + html [dir=rtl] .md-search__inner{ + right:100%; + left:auto; + -webkit-transform:translateX(-5%); + transform:translateX(-5%) + } + .md-search__input{ + width:100%; + height:2.4rem; + font-size:.9rem + } + .md-search__icon[for=__search]{ + top:.6rem; + left:.8rem + } + .md-search__icon[for=__search][for=__search]:before{ + content:"\E5C4" + } + [dir=rtl] .md-search__icon[for=__search][for=__search]:before{ + content:"\E5C8" + } + .md-search__icon[type=reset]{ + top:.6rem; + right:.8rem + } + .md-search__output{ + top:2.4rem; + bottom:0 + } + .md-search-result__article--document:before{ + display:none + } +} +@media only screen and (max-width:76.1875em){ + [data-md-toggle=drawer]:checked~.md-overlay{ + width:100%; + height:100%; + transition:width 0s,height 0s,opacity .25s; + opacity:1 + } + .md-header-nav__button.md-icon--home,.md-header-nav__button.md-logo{ + display:none + } + .md-hero__inner{ + margin-top:2.4rem; + margin-bottom:1.2rem + } + .md-nav{ + background-color:#fff + } + .md-nav--primary,.md-nav--primary .md-nav{ + display:flex; + position:absolute; + top:0; + right:0; + left:0; + flex-direction:column; + height:100%; + z-index:1 + } + .md-nav--primary .md-nav__item,.md-nav--primary .md-nav__title{ + font-size:.8rem; + line-height:1.5 + } + html .md-nav--primary .md-nav__title{ + position:relative; + height:5.6rem; + padding:3rem .8rem .2rem; + background-color:rgba(0,0,0,.07); + color:rgba(0,0,0,.54); + font-weight:400; + line-height:2.4rem; + white-space:nowrap; + cursor:pointer + } + html .md-nav--primary .md-nav__title:before{ + display:block; + position:absolute; + top:.2rem; + left:.2rem; + width:2rem; + height:2rem; + color:rgba(0,0,0,.54) + } + html .md-nav--primary .md-nav__title~.md-nav__list{ + background-color:#fff; + box-shadow:inset 0 .05rem 0 rgba(0,0,0,.07) + } + html .md-nav--primary .md-nav__title~.md-nav__list>.md-nav__item:first-child{ + border-top:0 + } + html .md-nav--primary .md-nav__title--site{ + position:relative; + background-color:#3f51b5; + color:#fff + } + html .md-nav--primary .md-nav__title--site .md-nav__button{ + display:block; + position:absolute; + top:.2rem; + left:.2rem; + width:3.2rem; + height:3.2rem; + font-size:2.4rem + } + html .md-nav--primary .md-nav__title--site:before{ + display:none + } + html [dir=rtl] .md-nav--primary .md-nav__title--site .md-nav__button,html [dir=rtl] .md-nav--primary .md-nav__title:before{ + right:.2rem; + left:auto + } + .md-nav--primary .md-nav__list{ + /* TODO: Consider changing, but need more fix + See GH#48 + */ + flex:1; + overflow-y:auto + } + .md-nav--primary .md-nav__item{ + padding:0; + border-top:.05rem solid rgba(0,0,0,.07) + } + [dir=rtl] .md-nav--primary .md-nav__item{ + padding:0 + } + .md-nav--primary .md-nav__item--nested>.md-nav__link{ + padding-right:2.4rem + } + [dir=rtl] .md-nav--primary .md-nav__item--nested>.md-nav__link{ + padding-right:.8rem; + padding-left:2.4rem + } + .md-nav--primary .md-nav__item--nested>.md-nav__link:after{ + content:"\E315" + } + [dir=rtl] .md-nav--primary .md-nav__item--nested>.md-nav__link:after{ + content:"\E314" + } + .md-nav--primary .md-nav__link{ + position:relative; + margin-top:0; + padding:.6rem .8rem + } + .md-nav--primary .md-nav__link:after{ + position:absolute; + top:50%; + right:.6rem; + margin-top:-.6rem; + color:inherit; + font-size:1.2rem + } + [dir=rtl] .md-nav--primary .md-nav__link:after{ + right:auto; + left:.6rem + } + .md-nav--primary .md-nav--secondary .md-nav__link{ + position:static + } + .md-nav--primary .md-nav--secondary .md-nav{ + position:static; + background-color:transparent + } + .md-nav--primary .md-nav--secondary .md-nav .md-nav__link{ + padding-left:1.4rem + } + [dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav__link{ + padding-right:1.4rem; + padding-left:0 + } + .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav__link{ + padding-left:2rem + } + [dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav__link{ + padding-right:2rem; + padding-left:0 + } + .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav__link{ + padding-left:2.6rem + } + [dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav__link{ + padding-right:2.6rem; + padding-left:0 + } + .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav .md-nav__link{ + padding-left:3.2rem + } + [dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav .md-nav__link{ + padding-right:3.2rem; + padding-left:0 + } + .md-nav__toggle~.md-nav{ + display:flex; + -webkit-transform:translateX(100%); + transform:translateX(100%); + transition:opacity .125s .05s,-webkit-transform .25s cubic-bezier(.8,0,.6,1); + transition:transform .25s cubic-bezier(.8,0,.6,1),opacity .125s .05s; + transition:transform .25s cubic-bezier(.8,0,.6,1),opacity .125s .05s,-webkit-transform .25s cubic-bezier(.8,0,.6,1); + opacity:0 + } + [dir=rtl] .md-nav__toggle~.md-nav{ + -webkit-transform:translateX(-100%); + transform:translateX(-100%) + } + .no-csstransforms3d .md-nav__toggle~.md-nav{ + display:none + } + .md-nav__toggle:checked~.md-nav{ + -webkit-transform:translateX(0); + transform:translateX(0); + transition:opacity .125s .125s,-webkit-transform .25s cubic-bezier(.4,0,.2,1); + transition:transform .25s cubic-bezier(.4,0,.2,1),opacity .125s .125s; + transition:transform .25s cubic-bezier(.4,0,.2,1),opacity .125s .125s,-webkit-transform .25s cubic-bezier(.4,0,.2,1); + opacity:1 + } + .no-csstransforms3d .md-nav__toggle:checked~.md-nav{ + display:flex + } + .md-sidebar--primary{ + position:fixed; + top:0; + left:-12.1rem; + width:12.1rem; + height:100%; + -webkit-transform:translateX(0); + transform:translateX(0); + transition:box-shadow .25s,-webkit-transform .25s cubic-bezier(.4,0,.2,1); + transition:transform .25s cubic-bezier(.4,0,.2,1),box-shadow .25s; + transition:transform .25s cubic-bezier(.4,0,.2,1),box-shadow .25s,-webkit-transform .25s cubic-bezier(.4,0,.2,1); + background-color:#fff; + z-index:3 + } + [dir=rtl] .md-sidebar--primary{ + right:-12.1rem; + left:auto + } + .no-csstransforms3d .md-sidebar--primary{ + display:none + } + [data-md-toggle=drawer]:checked~.md-container .md-sidebar--primary{ + box-shadow:0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12),0 5px 5px -3px rgba(0,0,0,.4); + -webkit-transform:translateX(12.1rem); + transform:translateX(12.1rem) + } + [dir=rtl] [data-md-toggle=drawer]:checked~.md-container .md-sidebar--primary{ + -webkit-transform:translateX(-12.1rem); + transform:translateX(-12.1rem) + } + .no-csstransforms3d [data-md-toggle=drawer]:checked~.md-container .md-sidebar--primary{ + display:block + } + .md-sidebar--primary .md-sidebar__scrollwrap{ + overflow:hidden; + position:absolute; + top:0; + right:0; + bottom:0; + left:0; + margin:0 + } + .md-tabs{ + display:none + } +} +@media only screen and (min-width:60em){ + .md-content{ + margin-right:12.1rem + } + [dir=rtl] .md-content{ + margin-right:0; + margin-left:12.1rem + } + .md-header-nav__button.md-icon--search{ + display:none + } + .md-header-nav__source{ + display:block; + width:11.7rem; + max-width:11.7rem; + padding-right:.6rem + } + [dir=rtl] .md-header-nav__source{ + padding-right:0; + padding-left:.6rem + } + .md-search{ + padding:.2rem + } + .md-search__overlay{ + position:fixed; + top:0; + left:0; + width:0; + height:0; + transition:width 0s .25s,height 0s .25s,opacity .25s; + background-color:rgba(0,0,0,.54); + cursor:pointer + } + [dir=rtl] .md-search__overlay{ + right:0; + left:auto + } + [data-md-toggle=search]:checked~.md-header .md-search__overlay{ + width:100%; + height:100%; + transition:width 0s,height 0s,opacity .25s; + opacity:1 + } + .md-search__inner{ + position:relative; + width:11.5rem; + margin-right:.8rem; + padding:.1rem 0; + float:right; + transition:width .25s cubic-bezier(.1,.7,.1,1) + } + [dir=rtl] .md-search__inner{ + margin-right:0; + margin-left:.8rem; + float:left + } + .md-search__form,.md-search__input{ + border-radius:.1rem + } + .md-search__input{ + width:100%; + height:1.8rem; + padding-left:2.2rem; + transition:background-color .25s cubic-bezier(.1,.7,.1,1),color .25s cubic-bezier(.1,.7,.1,1); + background-color:rgba(0,0,0,.26); + color:inherit; + font-size:.8rem + } + [dir=rtl] .md-search__input{ + padding-right:2.2rem + } + .md-search__input+.md-search__icon{ + color:inherit + } + .md-search__input::-webkit-input-placeholder{ + color:hsla(0,0%,100%,.7) + } + .md-search__input:-ms-input-placeholder{ + color:hsla(0,0%,100%,.7) + } + .md-search__input::-ms-input-placeholder{ + color:hsla(0,0%,100%,.7) + } + .md-search__input::placeholder{ + color:hsla(0,0%,100%,.7) + } + .md-search__input:hover{ + background-color:hsla(0,0%,100%,.12) + } + [data-md-toggle=search]:checked~.md-header .md-search__input{ + border-radius:.1rem .1rem 0 0; + background-color:#fff; + color:rgba(0,0,0,.87); + text-overflow:clip + } + [data-md-toggle=search]:checked~.md-header .md-search__input+.md-search__icon,[data-md-toggle=search]:checked~.md-header .md-search__input::-webkit-input-placeholder{ + color:rgba(0,0,0,.54) + } + [data-md-toggle=search]:checked~.md-header .md-search__input+.md-search__icon,[data-md-toggle=search]:checked~.md-header .md-search__input:-ms-input-placeholder{ + color:rgba(0,0,0,.54) + } + [data-md-toggle=search]:checked~.md-header .md-search__input+.md-search__icon,[data-md-toggle=search]:checked~.md-header .md-search__input::-ms-input-placeholder{ + color:rgba(0,0,0,.54) + } + [data-md-toggle=search]:checked~.md-header .md-search__input+.md-search__icon,[data-md-toggle=search]:checked~.md-header .md-search__input::placeholder{ + color:rgba(0,0,0,.54) + } + .md-search__output{ + top:1.9rem; + transition:opacity .4s; + opacity:0 + } + [data-md-toggle=search]:checked~.md-header .md-search__output{ + box-shadow:0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12),0 3px 5px -1px rgba(0,0,0,.4); + opacity:1 + } + .md-search__scrollwrap{ + max-height:0 + } + [data-md-toggle=search]:checked~.md-header .md-search__scrollwrap{ + max-height:75vh + } + .md-search__scrollwrap::-webkit-scrollbar{ + width:.2rem; + height:.2rem + } + .md-search__scrollwrap::-webkit-scrollbar-thumb{ + background-color:rgba(0,0,0,.26) + } + .md-search__scrollwrap::-webkit-scrollbar-thumb:hover{ + background-color:#536dfe + } + .md-search-result__meta{ + padding-left:2.2rem + } + [dir=rtl] .md-search-result__meta{ + padding-right:2.2rem; + padding-left:0 + } + .md-search-result__article{ + padding-left:2.2rem + } + [dir=rtl] .md-search-result__article{ + padding-right:2.2rem; + padding-left:.8rem + } + .md-sidebar--secondary{ + display:block; + margin-left:100%; + -webkit-transform:translate(-100%); + transform:translate(-100%) + } + [dir=rtl] .md-sidebar--secondary{ + margin-right:100%; + margin-left:0; + -webkit-transform:translate(100%); + transform:translate(100%) + } +} +@media only screen and (min-width:88.25em) { + .md-sidebar--secondary { + margin-left: 73rem + } + [dir=rtl] .md-sidebar--secondary { + margin-right: 73rem; + margin-left: 0 + } +} +@media only screen and (min-width:76.25em){ + .md-content{ + margin-left:12.1rem + } + [dir=rtl] .md-content{ + margin-right:12.1rem + } + .md-content__inner{ + margin-right:1.2rem; + margin-left:1.2rem + } + .md-header-nav__button.md-icon--menu{ + display:none + } + .md-nav[data-md-state=animate]{ + transition:max-height .25s cubic-bezier(.86,0,.07,1) + } + .md-nav__toggle~.md-nav{ + max-height:0; + overflow:hidden + } + .no-js .md-nav__toggle~.md-nav{ + display:none + } + .md-nav[data-md-state=expand],.md-nav__toggle:checked~.md-nav{ + max-height:100% + } + .no-js .md-nav[data-md-state=expand],.no-js .md-nav__toggle:checked~.md-nav{ + display:block + } + .md-nav__icon { + float: right; + } + .md-nav__icon .md-icon { + display: inline-block; + transition: transform 250ms; + } + .md-nav__icon .md-icon:before { + content: "\e409"; + vertical-align: -0.15rem; + } + .md-nav__toggle:checked~.md-nav__link .md-icon, + .md-nav__toggle:indeterminate~.md-nav__link .md-icon + { + transform: rotate(90deg); + } + .md-nav__item--nested>.md-nav>.md-nav__title{ + display:none + } + .md-nav__item--nested>.md-nav__link:after{ + display:inline-block; + -webkit-transform-origin:.45em .45em; + transform-origin:.45em .45em; + -webkit-transform-style:preserve-3d; + transform-style:preserve-3d; + vertical-align:-.125em + } + .js .md-nav__item--nested>.md-nav__link:after{ + transition:-webkit-transform .4s; + transition:transform .4s; + transition:transform .4s,-webkit-transform .4s + } + .md-nav__item--nested .md-nav__toggle:checked~.md-nav__link:after{ + -webkit-transform:rotateX(180deg); + transform:rotateX(180deg) + } + .md-search__inner{ + margin-right:1.2rem + } + [dir=rtl] .md-search__inner{ + margin-left:1.2rem + } + .md-search__scrollwrap,[data-md-toggle=search]:checked~.md-header .md-search__inner{ + width:34.4rem + } + .md-tabs~.md-main .md-nav--primary>.md-nav__list>.md-nav__item--nested{ + font-size:0; + visibility:hidden + } + .md-tabs--active~.md-main .md-nav--primary .md-nav__title{ + display:block; + padding:0 + } + .md-tabs--active~.md-main .md-nav--primary .md-nav__title--site{ + display:none + } + .no-js .md-tabs--active~.md-main .md-nav--primary .md-nav{ + display:block + } + .md-tabs--active~.md-main .md-nav--primary>.md-nav__list>.md-nav__item{ + font-size:0; + visibility:hidden + } + .md-tabs--active~.md-main .md-nav--primary>.md-nav__list>.md-nav__item--nested{ + display:none; + font-size:.7rem; + overflow:auto; + visibility:visible + } + .md-tabs--active~.md-main .md-nav--primary>.md-nav__list>.md-nav__item--nested>.md-nav__link{ + display:none + } + .md-tabs--active~.md-main .md-nav--primary>.md-nav__list>.md-nav__item--active{ + display:block + } + .md-tabs--active~.md-main .md-nav[data-md-level="1"]{ + max-height:none; + overflow:visible + } + .md-tabs--active~.md-main .md-nav[data-md-level="1"]>.md-nav__list>.md-nav__item{ + padding-left:0 + } + .md-tabs--active~.md-main .md-nav[data-md-level="1"] .md-nav .md-nav__title{ + display:none + } +} +@media only screen and (min-width:45em){ + .md-footer-nav__link{ + width:50% + } + .md-footer-copyright{ + max-width:75%; + float:right + } + [dir=rtl] .md-footer-copyright{ + float:left + } + .md-footer-social{ + padding:.6rem 0; + float:left + } + [dir=rtl] .md-footer-social{ + float:right + } +} +@media only screen and (max-width:29.9375em){ + [data-md-toggle=search]:checked~.md-header .md-search__overlay{ + -webkit-transform:scale(45); + transform:scale(45) + } +} +@media only screen and (min-width:30em) and (max-width:44.9375em){ + [data-md-toggle=search]:checked~.md-header .md-search__overlay{ + -webkit-transform:scale(60); + transform:scale(60) + } +} +@media only screen and (min-width:45em) and (max-width:59.9375em){ + [data-md-toggle=search]:checked~.md-header .md-search__overlay{ + -webkit-transform:scale(75); + transform:scale(75) + } +} +@media only screen and (min-width:60em) and (max-width:76.1875em){ + .md-search__scrollwrap,[data-md-toggle=search]:checked~.md-header .md-search__inner{ + width:23.4rem + } + .md-search-result__teaser{ + max-height:2.5rem; + -webkit-line-clamp:3 + } +} diff --git a/_static/stylesheets/f4pga.css b/_static/stylesheets/f4pga.css new file mode 100644 index 000000000..0271d4187 --- /dev/null +++ b/_static/stylesheets/f4pga.css @@ -0,0 +1,25 @@ +#f4pga-header { + margin-bottom: 0.4rem; +} + +#f4pga-header a>i { + position: relative; + bottom: 0.08rem; + vertical-align: middle; + padding-right: 0.2rem; + font-size: 1.3rem; +} + +.highlight>pre:hover:before { + padding: 0.1rem 0.5rem; + content: attr(click-to-copy); + color: rgba(0, 0, 0, 0.5); + border-radius: 4px; + position: absolute; + float: right; + top: 0.5rem; + right: 0.5rem; + background: rgb(200, 200, 200); + font-size: 0.6rem; + cursor: pointer; +} \ No newline at end of file diff --git a/community.html b/community.html new file mode 100644 index 000000000..12ed9aeba --- /dev/null +++ b/community.html @@ -0,0 +1,577 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Community — F4PGA documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

Community

+

FOSS Flows For FPGA (F4PGA) project is a Workgroup +under the CHIPS Alliance. +The F4PGA Workgroup consists of members from different backgrounds, including FPGA vendors +(Xilinx +and QuickLogic), +industrial users +(Google +and Antmicro) +and academia +(University of Toronto), +who collaborate to build a more open source and software-driven FPGA ecosystem (IP, tools and workflows) to drive the +adoption of FPGAs in existing and new use cases, and eliminate barriers of entry.

+
+

Communication

+ +
+
+

Sources

+ +
+
+

Contributing

+

Are you interested in helping this project move forward? +F4PGA is a collaborative project and we welcome your contributions. +The code is available on GitHub, while the HTML documentation is available on Read The Docs. +There are multiple areas and technologies we need help with - reach out to us, we’re sure we will find something for you.

+
    +
  • Do you know Python? +Almost all scripts are written in Python!

  • +
  • Do you know C++? +VPR & nextpnr & libraries written in C++!

  • +
  • Do you know TCL? +All the EDA tools use TCL!

  • +
  • Do you know (System) Verilog, VHDL, Chisel, Migen and/or Amaranth? +Simulation and models are written in Hardware Description Languages (HDLs)!

  • +
  • Do you know XML? +Most file formats are XML!

  • +
  • Do you know English? +Documentation is written in English!

  • +
  • Do you know Docker and/or Podman? +Help make it easier to set up F4PGA!

  • +
  • Do you have time? +We will find you a task!

  • +
+
+
+ + +
+
+
+
+
+ + + + + + \ No newline at end of file diff --git a/development/building-docs.html b/development/building-docs.html new file mode 100644 index 000000000..0d58b4993 --- /dev/null +++ b/development/building-docs.html @@ -0,0 +1,521 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Building the documentation — F4PGA documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

Building the documentation

+

Activate the virtual environment and install dependencies:

+
make env
+make enter
+
+
+

Build the whole documentation:

+
make html
+
+
+

For more options see:

+
make help
+
+
+
+ + +
+
+
+
+
+ + + + + + \ No newline at end of file diff --git a/development/changes.html b/development/changes.html new file mode 100644 index 000000000..205452bb6 --- /dev/null +++ b/development/changes.html @@ -0,0 +1,794 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Changes — F4PGA documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

Changes

+
+

Tested environments

+
+

8

+
+

Note

+
    +
  • Python scripts from f4pga-arch-defs tarballs were moved to f4pga.

  • +
  • Yosys ‘conv’ and ‘synth’ TCL scripts combined in a single pipeline.

  • +
+
+ +
+
+

7

+
+

Note

+
    +
  • Yosys TCL scripts from f4pga-arch-defs tarballs were moved to f4pga as f4pga.wrappers.tcl.

  • +
  • Use -- (instead of -a|--additional_vpr_options) to provide additional VPR arguments to the (deprecated) +symbiflow_* entrypoints.

  • +
  • Setting FPGA_FAM before installing f4pga is not required anymore.

  • +
  • Sources related to f4pga build were moved to submodule f4pga.flows.

  • +
+
+ +
+
+

6

+
+

Note

+
    +
  • Tarballs from f4pga-arch-defs now include usable environment and requirements files which allow bootstraping +minimal Conda environments.

  • +
  • The default F4PGA_SHARE_DIR path does not include subdir ‘install’ by default.

  • +
  • F4PGA_BIN_DIR and VPRPATH are not used anymore.

  • +
+
+ +
+
+

5

+
+

Note

+

f4pga build now supports QuickLogic’s EOS-S3 devices.

+
+ +
+
+

4

+
+

Note

+

The default F4PGA_SHARE_DIR is now consistent for AMD/Xilinx or QuickLogic: +F4PGA_INSTALL_DIR / FPGA_FAM / 'install/share/f4pga'.

+
+ +
+
+

3

+
+

Note

+

Architecture Definitions:

+
    +
  • AMD/Xilinx base package is now *-install-xc7-*.

  • +
  • QuickLogic now has a base package named *-install-ql-*.

  • +
  • Python scripts in QuickLogic packages moved from bin/python to share/f4pga/scripts.

  • +
  • Share paths modified:

    +
      +
    • AND/Xilinx and QuickLogic arch-defs packages homogenized.

    • +
    • s/symbiflow/f4pga/

    • +
    +
  • +
+
+ +
+
+

2

+
+

Note

+
    +
  • Environment variables were renamed and are now supported by f4pga build:

    +
      +
    • s/F4PGA_ENV_BIN/F4PGA_BIN_DIR/

    • +
    • s/F4PGA_ENV_SHARE/F4PGA_SHARE_DIR/

    • +
    +
  • +
  • f4pga is now pinned in the requirements files of f4pga-examples.

  • +
+
+ +
+
+

1

+
+

Note

+

First release being tracked.

+
+ +
+
+
+

Future work

+
    +
  • f4pga build now supports Lattice’s ICE40 devices.

  • +
  • f4pga build now supports Lattice’s ECP5 devices.

  • +
  • f4pga build now supports Lattice’s NX devices.

  • +
+
+
+ + +
+
+
+
+
+ + + + + + \ No newline at end of file diff --git a/development/venv.html b/development/venv.html new file mode 100644 index 000000000..a28f23988 --- /dev/null +++ b/development/venv.html @@ -0,0 +1,514 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Packages in virtual environment — F4PGA documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

Packages in virtual environment

+

To install packages in conda environment you can use both +conda and pip.

+

Note that pip is installed in the conda environment which uses python3, +and is related to pip3 inside the virtual environment, +whereas invocation of pip3 directly uses your system pip3 instance, +typically located in /usr/bin/pip3

+
+ + +
+
+
+
+
+ + + + + + \ No newline at end of file diff --git a/f4pga/Deprecated.html b/f4pga/Deprecated.html new file mode 100644 index 000000000..10686e676 --- /dev/null +++ b/f4pga/Deprecated.html @@ -0,0 +1,725 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Understanding the (deprecated) flow — F4PGA documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

Understanding the (deprecated) flow

+
+

Important

+

This section describes the usage of the now deprecated symbiflow_* entrypoints/wrappers. +It is provided for backwards compatibility, so that users of the old flow can keep using it. +However, it is recommended for new users to use the approach explained in Overview.

+
+

This section provides valuable information on how each of the commands used to compile and build +designs in F4PGA work. It is especially helpful for debugging or for using methods +other than a makefile to build your designs, such as a bash or python script.

+

The following describes the commands for running each of the steps for a full design flow +(synthesis, place and route, and generate bitstream) as well as giving a description of the most +common flags for those commands. If you would like a more detailed break down of how the design +flow for F4PGA works take a look at the Design Flows section.

+
+

Note

+

Files created by synthesis, implementation, and bitstream generation will be dumped into +the directory from which the command is run by default. To keep all of the files generated by +the toolchain separate from your design files, you might consider running the toolchain +commands in a separate directory from your design files.

+
+
+

Synthesis

+

To synthesize your designs run the symbiflow_synth command. The command has the following +flags:

+ + + + + + + + + + + + + + + + + + + + + + + + +
Table 1 symbiflow_synth

Flag

Argument

-t

Defines the name for the top level module

-v

A list of paths to verilog files for the design

-d

FPGA family (i.e. artix7 or zynq7)

-p

The part number for the FPGA (i.e xc7a35tcsg324-1)

-x

Optional command: path to xdc files for design

+

An example of how to run synthesis on a design containing two separate +verilog HDL files is below. The design is built for a basys3 board which comes from the artix7 +family and uses the xc7a35tcpg236-1 chip.

+
symbiflow_synth -t top -v example.v top_example.v -d artix7 -p xc7a35tcpg236-1 -x design_constraint.xdc
+
+
+

Synthesis is carried out using the Yosys open source tool. symbiflow_synth generates +an .eblif file, a few verilog netlists that describe the gate level design for your project, and a log +file. For more information on Yosys and its relation to F4PGA go to Yosys.

+
+

Note

+

The build files generated by the toolchain (for example .eblif from synthesis, .net from +packing, .bit from generate bitstream) are named using the top module specified in +symbiflow_synth. For example if you specified switch_top as the top level module name +during synthesis using the -t flag, the build files generated by the toolchain would be +named switch_top.eblif, switch_top.net, etc.

+
+
+
+

Place and Route

+

The three steps for implementing a design are internally handled by the open source VPR +(Versatile Place and Route) tool. For more information go to VPR ➚.

+
+

Pack

+

Packing is run by the symbiflow_pack command and generates several files containing +a pin usage report, a timing report, a log file, and a netlist. The various flags for the +pack command are as follows:

+ + + + + + + + + + + + + + + + + + +
Table 2 symbiflow_pack

Flag

Argument

-e

Path to .eblif file generated by synthesis

-d

Fabric definition for the board (i.e. xc7a100t_test)

-s

Optional: SDC file path

+

Note that the -d option for this step (defining the fabric definition) is different +from the -d from synthesis (defining the FPGA family).

+

The following example runs packing on the basys3 board:

+
symbiflow_pack -e top.eblif -d xc7a35t_test
+
+
+
+
+

Place

+

Placement generates several files describing the location of design elements +as well as a log file. Placement is run using symbiflow_place which utilizes +the following flags:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 3 symbiflow_place

Flag

Argument

-e

Path to .eblif file generated by synthesis

-d

Fabric definition (xc7a50t_test)

-p

Optional: PCF file path

-n

Path to the .net file generated by pack step

-P

The part number for the FPGA (i.e xc7a35tcsg324-1)

-s

Optional: SDC file path

+

For the basys3:

+
symbiflow_pack -e top.eblif -d xc7a35t_test -p design.pcf -n top.net -P xc7a35tcpg236-1 -s design.sdc
+
+
+
+
+

Route

+

Routing produces several timing reports as well as a post routing netlist and log file. +symbiflow_route uses the -e, -d, and the optional -s flags. The arguments for these flags +are the same as in the placement step (.eblif, fabric definition, and SDC file path respectively). +The following is an example:

+
symbiflow_route -e top.eblif -d xc7a35t_test -s design.sdc
+
+
+
+
+
+

Generating Bitstream

+

Generating the bitstream consists of two steps. First, run symbiflow_write_fasm to generate +the .fasm file used to create the bitstream. symbiflow_write_fasm uses the -e and -d flags +with the same arguments as the placing and routing steps (.eblif path, and fabric definition). +Second, run symbiflow_write_bitstream which has the following flags:

+ + + + + + + + + + + + + + + + + + + + + +
Table 4 symbiflow_write_bitstream

Flag

Argument

-d

FPGA family (i.e. artix7 or zynq7)

-f

The path to the .fasm file generated in by write_fasm

-p

The FPGA part number (i.e xc7a35tcsg324-1)

-b

Name of the file to write the bitstream to

+

Notice that the specification for the part number is a lowercase -p instead of a capital +-P as in the placement step. Also note that the -d in write_bitstream defines the FPGA +family instead of the fabric as in the write_fasm step.

+
+

Warning

+

If you change the name of the output for your bitstream to something other than top.bit then the +openFPGALoader command used in the examples would need to change too. For example if I used +-b my_module_top in symbiflow_write_bitstream then my openFPGALoader command would change to:

+
openFPGALoader -b $OFL_BOARD my_module_top.bit
+
+
+

Note that the only part of the command that changes is “<top module name>.bit;”

+
+

The following example generates a bitstream file named example.bit for the basys3 board:

+
symbiflow_write_fasm -e top.eblif -d xc7a50t_test
+symbiflow_write_bitstream -d artix7 -f top.fasm -p xc7a35tcpg236-1 -b example.bit
+
+
+
+
+ + +
+
+
+
+
+ + + + + + \ No newline at end of file diff --git a/f4pga/DevNotes.html b/f4pga/DevNotes.html new file mode 100644 index 000000000..215fb2e7d --- /dev/null +++ b/f4pga/DevNotes.html @@ -0,0 +1,635 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Developer’s notes — F4PGA documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+ + +
+
+ +
+

Developer’s notes

+
+

Last update: 2022-05-06

+
+

Warning

+

These notes are provided as-is and they shouldn’t be treated as a full-blown accurate +documentation, but rather as a helpful resource for those who want to get involved with +development of f4pga. These are not updated regularly.

+

For more detailed, up-to-date information about the code, refer to the pydoc documentation.

+
+
+
+

Project’s structure

+
    +
  • __init__.py contains the logic and entry point of the build system

  • +
  • argparser.py contains boring code for CLI interface

  • +
  • cache.py contains code needed for tracking modifications in the project.

  • +
  • common.py contains code shared by the main utility and the modules

  • +
  • flow_config.py contains code for reading and accessing flow definitions and configurations

  • +
  • module_inspector.py contains utilities for inspecting I/O of modules

  • +
  • module_runner.py contains code required to load modules at run-time

  • +
  • module.py contains definitions required for writing and using f4pga modules

  • +
  • part_db.json contains mappings from part names to platform names

  • +
  • setup.py contains a package installation script

  • +
  • stage.py contains classes relevant to stage representation

  • +
  • modules contains loadable modules

  • +
  • platforms contains platform flow definitions

  • +
+
+

Important

+

Through the codebase f4pga (tool) might be often referenced as sfbuild. +Similarly, F4PGA (toolchain) might get called Symbiflow. +This is due to the project being written back when F4PGA was called Symbiflow.

+
+
+
+

Different subsystems and where to find them?

+
+

Building and dependency resolution

+

All the code regarding dependency resolution is located in __init__.py file. +Take a look at the Flow class.

+

Most of the work is done in Flow._resolve_dependencies method. Basically it +performs a DFS with stages (instances of f4pga modules) as its nodes +which are linked using symbolic names of dependencies on inputs and outputs. +It queries the modules for information regarding i/o (most importantly the paths +on which they are going to produce outputs), checks whether +their inputs are going to be satisfied, checks if dependencies were modified, etc.

+

The actual building is done using Flow._build_dep procedure. It uses a similar +DFS approach to invoke modules and check their inputs and outputs.

+
+
+

Modification tracking

+

Modification tracking is done by taking, comparing and keeping track of adler32 +hashes of all dependencies. Each dependency has a set of hashes associated with it. +The reason for having multiple hashes is that a dependency may have multiple +“consumers”, ie. stages which take it as input. Each hash is associated with +particular consumer. This is necessary, because the system tries to avoid rebuilds +when possible and status of each file (modified/unmodified) may differ in regards +to individual stages.

+

Keeping track of status of each file is done using F4Cache class, which is +defined in cache.py file. F4Cache is used mostly inside Flow’s methods.

+
+
+

Internal environmental variable system

+

f4pga exposes some data to the user as well as reads some using internal +environmental variables. These can be referenced by users in +platform flow definitions and project flow configurations using the +${variable_name} syntax when defining values. They can also be read inside +f4pga modules by accessing the ctx.values namespace.

+

The core of its system is the ResolutionEnvironemt class which can be found +inside the common module.

+
+
+

Installation

+

Check CMakeLists.txt.

+
+
+
+

TODO:

+
    +
  • Define a clear specification for entries in platform flow definitions and +platform flow configurations. Which environmental variables can be accessed +where, and when?

  • +
  • Force “on-demand” outputs if they are required by another stage. +This may require redesigning the “on-demand” feature, which currently works +by producing a dependency if and only if the user explicitly provides the +path. Otherwise the path is unknown.

  • +
  • Make commenting style consistent

  • +
  • Document writing flow definitions

  • +
  • Extend the metadata system for modules, perhaps make it easier to use.

  • +
  • Add missing metadata for module targets.

  • +
  • (suggestion) Generate platform definitions using CMake.

  • +
+
+

Out of the current scope

+
    +
  • Change interfaces of some internal python scripts. This could lead to possibly +merging some modules for XC7 and Quicklogic into one common module.

  • +
+
+
+
+ + +
+
+
+
+
+ + + + + + \ No newline at end of file diff --git a/f4pga/Usage.html b/f4pga/Usage.html new file mode 100644 index 000000000..a078d01ce --- /dev/null +++ b/f4pga/Usage.html @@ -0,0 +1,1123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Usage — F4PGA documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+ + +
+
+ +
+

Usage

+
+

Getting started

+

To use f4pga you need a working Python 3 installation which should be included as a part of the conda virtual +environment set up during F4PGA installation. +f4pga is installed together with F4PGA, regardless of the version of the toolchain. +However, only XC7 architectures are supported currently and Quicklogic support is a work in progress.

+

To get started with a project that already uses f4pga, go to the project’s directory and run the following line to +generate a bitstream:

+
$ f4pga build -f flow.json
+
+
+

flow.json should be a project flow configuration file included with the project. +If you are unsure if you got the right file, you can check an example of the contents of such file shown in the +Build a target section below.

+

The location of the bitstream will be indicated by f4pga after the flow completes. +Look for a line like this one on stdout:

+
Target `bitstream` -> build/arty_35/top.bit
+
+
+
+
+

Fundamental concepts

+

If you want to create a new project, it’s highly recommended that you read this section first.

+
+

f4pga

+

f4pga is a modular build system designed to handle various Verilog-to-bitstream flows for FPGAs. +It works by wrapping the necessary tools in Python, which are called f4pga modules. +Modules are then referenced in platform flow definition files, together with configuration specific for a given +platform. +Flow definition files for the following platforms are included as a part of f4pga:

+
    +
  • AMD Xilinx x7a50t (and architecturally equivalent devices, such as x7a35t)

  • +
  • AMD Xilinx x7a100t

  • +
  • AMD Xilinx x7a200t

  • +
  • Quicklogic EOS-S3 (currently unsupported, provided only for development purposes)

  • +
  • Quicklogic K4N8 (currently unsupported, provided only for development purposes)

  • +
+

You can also write your own platform flow definition file if you want to bring support for a different device.

+

Each project that uses f4pga to perform any flow should include a .json file describing the project. +The purpose of that file is to configure inputs for the flow and override configuration values if necessary.

+
+
+

Modules

+

A module (also referred to as f4pga module in situations where there might be confusion between arbitrary Python +modules and f4pga modules) is a Python script that wraps a tool used within the F4PGA ecosystem. +The main purpose of the wrappers is to provide a unified interface for f4pga to use and to configure the tool, +as well as provide information about files required and produced by the tool.

+
+
+

Dependencies

+

A dependency is any file, directory or a list of such that a module takes as its input or produces on its output.

+

Modules specify their dependencies by using symbolic names instead of file paths. +The files they produce are also given symbolic names and paths which are either set through project flow configuration +file or derived from the paths of the dependencies taken by the module.

+
+
+

Target

+

Target is a dependency that the user has asked F4PGA to produce.

+
+
+

Flow

+

A flow is set of modules executed in a right order to produce a target.

+
+
+

.f4cache

+

All dependencies are tracked by a modification tracking system which stores hashes of the files +(directories get always '0' hash) in .f4cache file in the root of the project. +When F4PGA constructs a flow, it will try to omit execution of modules which would receive the same data on their +input. +There is a strong assumption there that a module’s output remains unchanged if the input configuration isn’t +changed, ie. modules are deterministic. This is might be not true for some tools and in case you really want to re-run +a stage, there’s a --nocache option that treats the .f4cache file as if it was empty.

+
+
+

Resolution

+

A dependency is said to be resolved if it meets one of the following criteria:

+
    +
  • it exists on persistent storage and its hash matches the one stored in .f4cache

  • +
  • there exists such flow that all of the dependencies of its modules are resolved and it produces the dependency in +question.

  • +
+
+
+

Platform’s flow definition

+

Platform flow definition is a piece of data describing a space of flows for a given platform, serialized into a JSON. +It’s stored in a file that’s named after the device’s name under f4pga/platforms.

+

Platform flow definition contains a list of modules available for constructing flows and defines a set of values which +the modules can reference. +In case of some modules it may also define a set of parameters used during their construction. +mkdirs module uses that to allow production of of multiple directories as separate dependencies. +This however is an experimental feature which possibly will be removed in favor of having multiple instances of the same +module with renameable outputs.

+

Not all dependencies* have to be resolved at this stage, a platform’s flow definition for example won’t be able to +provide a list of source files needed in a flow.

+
+
+

Project’s flow configuration

+

Similarly to platform flow definition, Projects flow configuration is a JSON that is used to configure modules. There are however a couple differences here and there.

+
    +
  • The most obvious one is that this file is unique for a project and is provided by the user of f4pga.

  • +
  • The other difference is that it doesn’t list modules available for the platform.

  • +
  • All the values provided in projects flow configuration will override those provided in platform flow definition.

  • +
  • It can contain sections with configurations for different platforms.

  • +
  • Unlike platform flow definition it can give explicit paths to dependencies.

  • +
  • At this stage all mandatory dependencies should be resolved.

  • +
+

Typically projects flow configuration will be used to resolve dependencies for HDL source code and device constraints.

+
+
+
+

Build a target

+
+

Using flow configuration file

+

To build a target target_name, use the following command:

+
$ f4pga build -f flow.json -p platform_device_name -t target_name
+
+
+

where flow.json is a path to projects flow configuration.

+

For example, let’s consider the following projects flow configuration (flow.json):

+
{
+    "default_part": "XC7A35TCSG324-1",
+    "dependencies": {
+        "sources": ["counter.v"],
+        "xdc": ["arty.xdc"],
+        "synth_log": "synth.log",
+        "pack_log": "pack.log",
+    },
+    "values": {
+        "top": "top"
+    },
+    "XC7A35TCSG324-1": {
+        "default_target": "bitstream",
+        "dependencies": {
+            "build_dir": "build/arty_35"
+        }
+    }
+}
+
+
+

It specifies list of paths to Verilog source files as sources dependency. +Similarly it also provides an XDC file with constrains (xdc dependency).

+

It also names a path for synthesis and logs (synth_log, pack_log). +These two are optional on-demand outputs, meaning they won’t be produces unless their paths are explicitly set.

+

top value is set to in order to specify the name of top Verilog module, which is required during synthesis.

+

build_dir is an optional helper dependency. +When available, modules will put their outputs into that directory. +It’s also an on-demand output of mkdirs module in xc7a50t flow definition, which means that if specified directory +does not exist, mkdirs will create it and provide as build_dir dependency.

+

With this flow configuration, you can build a bitstream for arty_35 using the +following command:

+
$ f4pga build -f flow.json -p XC7A35TCSG324-1 -t bitstream
+
+
+

Because we have default_platform defined, we can skip the --part argument. +We can also skip the --target argument because we have a default_target defined for the +chosen platform. This will default to the bitstream target of xc7a50t platform:

+
$ f4pga build -f flow.json
+
+
+
+
+

Using Command-Line Interface

+

Alternatively you can use CLI to pass the configuration without creating a flow file:

+
$ f4pga build -p XC7A35TCSG324-1 -Dsources=[counter.v] -Dxdc=[arty.xdc] -Dsynth_log=synth.log -Dpack_log=pack.log -Dbuild_dir=build/arty_35 -Vtop=top -t bitstream
+
+
+

CLI flow configuration can be used alongside a flow configuration file and will override +conflicting dependencies/values from the file.

+

CLI configuration follows the following format:

+

<dependency/value identifier>=<expression>

+

<dependency/value identifier> is the name of dependency or value optionally prefixed by a stage +name and a dot (.). Using the notation with stage name sets the dependency/value only for the +specified stage.

+

<expression> is a form of defining a dependency path or a value. Characters are interpreted +as strings unless the follow one of the following format:

+
    +
  • [item1,item2,item3,...] - this is a list of strings

  • +
  • {key1:value1,key2:value2,key3:value3,...} - this is a dictionary

  • +
+

Nesting structures is currently unsupported in CLI.

+
+
+

Pretend mode

+

You can also add a --pretend (-P) option if you just want to see the results of dependency resolution for a +specified target without building it. +This is useful when you just want to know what files will be generated and where will they be stored.

+
+
+

Info mode

+

Modules have the ability to include description to the dependencies they produce.

+

Running f4pga with --info (-i) flag allows you to see descriptions of these dependencies. +This option doesn’t require a target to be specified, but you still have to provide a flow configuration and platform +name.

+

This is still an experimental option, most targets currently lack descriptions and no information whether the output is +on-demand is currently displayed.

+

Example:

+
$ f4pga -v build -f flow.json -p XC7A35TCSG324-1 -i
+
+
+
Platform dependencies/targets:
+    build_dir:          <no descritption>
+                        module: `mk_build_dir`
+    eblif:              Extended BLIF hierarchical sequential designs file
+                        generated by YOSYS
+                        module: `synth`
+    fasm_extra:         <no description>
+                        module: `synth`
+    json:               JSON file containing a design generated by YOSYS
+                        module: `synth`
+    synth_json:         <no description>
+                        module: `synth`
+    sdc:                <no description>
+                        module: `synth`
+
+
+
+

Important

+

This is only a snippet of the entire output.

+
+
+
+

Summary of global options

+ + + + + + + + + + + + + + + + + + + + +

long

short

arguments

description

–verbose

-v

-

Control verbosity level. 0 for no verbose output. 2 for maximum verbosity

–silent

-s

-

Suppress any output

+
+
+

Summary of all available sub-commands

+ + + + + + + + + + + + + + +

name

description

build

Build a project

showd

Print value of a dependency

+
+
+

Summary of all options available for build sub-command

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

long

short

arguments

description

–flow

-f

flow configuration file

Use flow configuration file

–part

-p

part name

Specify target part name

–target

-t

target dependency name

Specify target to produce

–info

-i

-

Display information about available targets

–pretend

-P

-

Resolve dependencies without executing the flow

–nocache

-

Do not perform incremental build (do full a full build)

–stageinfo

-S

stage name

Display information about a specified stage

–dep

-D

dependency_name=pathexpr

Add a dependency to configuration

–val

-V

value_name=valueexpr

Add a value to configuration

+
+
+

Summary of all options available for showd sub-command

+ + + + + + + + + + + + + + + + + + + + + + + + + +

long

short

arguments

description

–flow

-f

flow configuration file

Use flow configuration file

–part

-p

part name

Specify target part name

–stage

-s

part name

Specify stage name (to display stage-specific dependencies)

+
+
+

Dependency resolution display

+

F4PGA displays some information about dependencies when requesting a target.

+

Here’s an example of a possible output when trying to build bitstream target (use -P):

+
F4PGA Build System
+Scanning modules...
+
+Project status:
+    [R] bitstream:  bitstream -> build/arty_35/top.bit
+    [O] build_dir:  build/arty_35
+    [R] eblif:  synth -> build/arty_35/top.eblif
+    [R] fasm:  fasm -> build/arty_35/top.fasm
+    [R] fasm_extra:  synth -> build/arty_35/top_fasm_extra.fasm
+    [R] io_place:  ioplace -> build/arty_35/top.ioplace
+    [R] net:  pack -> build/arty_35/top.net
+    [X] pcf:  MISSING
+    [R] place:  place -> build/arty_35/top.place
+    [R] place_constraints:  place_constraints -> build/arty_35/top.preplace
+    [R] route:  route -> build/arty_35/top.route
+    [R] sdc:  synth -> build/arty_35/top.sdc
+    [N] sources:  ['counter.v']
+    [O] xdc:  ['arty.xdc']
+
+f4pga: DONE
+
+
+

The letters in the boxes describe the status of a dependency whose name is next to the box.

+
    +
  • X - dependency unresolved. +Dependency is not present or cannot be produced. +This isn’t always a bad sign. Some dependencies are not required to, such as pcf.

  • +
  • O - dependency present, unchanged. +This dependency is already built and is confirmed to stay unchanged during flow execution.

  • +
  • N - dependency present, new/changed. +This dependency is already present on the persistent storage, but it was either missing earlier, or its content +changed since the last time it was used.

    +
    +

    Warning

    +

    It won’t continue to be reported as “N” after a successful build of any target. +This may lead to some false “O”s in some complex scenarios. +This should be fixed in the future.

    +
    +
  • +
  • S - dependency not present, resolved. +This dependency is not currently available on the persistent storage, however it will be produced within flow’s +execution.

  • +
  • R - dependency present, resolved, requires rebuild. +This dependency is currently available on the persistent storage, however it has to be rebuilt due to the changes in +the project.

  • +
+

Additional info about a dependency will be displayed next to its name after a colon:

+
    +
  • In case of dependencies that are to be built (S/R), there’s a name of a module that will produce this +dependency, followed by -> and a path or list of paths to file(s)/directory(ies) that will be produced as this +dependency.

  • +
  • In case of dependencies which do not require execution of any modules, only a path or list of paths to +file(s)/directory(ies) that will be displayed.

  • +
  • In case of unresolved dependencies (X), which are never produced by any module, a text saying “MISSING” will be +displayed.

  • +
+

In the example above file counter.v has been modified and is now marked as “N”. +This causes a bunch of other dependencies to be rebuilt (”R”). +build_dir and xdc were already present, so they are marked as “O”.

+
+
+
+

Common targets and values

+

Targets and values are named with some conventions. +Below are lists of the target and value names along with their meanings.

+
+

Need to be provided by the user

+ + + + + + + + + + + + + + + + + + + + + + + + + +

Target name

list

Description

sources

yes

Verilog sources

sdc

no

Synopsys Design Constraints

xdc

yes

Xilinx Design Constraints (available only for Xilinx platforms)

pcf

no

Physical Constraints File

+
+
+

Available in most flows

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Target name

list

Description

eblif

no

Extended blif file

bitstream

no

Bitstream

net

no

Netlist

fasm

no

Final FPGA Assembly

fasm_extra

no

Additional FPGA assembly that may be generated during synthesis

build_dir

no

A directory to put the output files in

+
+
+

Built-in values

+ + + + + + + + + + + + + + + + + + + + + + + + + +

Value name

type

Description

shareDir

string

Path to f4pga’s installation “share” directory

python3

string

Path to Python 3 executable

noisyWarnings

string

Path to noisy warnings log (should be deprecated)

prjxray_db

string

Path to Project X-Ray database

+
+
+

Used in flow definitions

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Value name

type

Description

top

string

Top module name

build_dir

string

Path to build directory (should be optional)

device

string

Name of the device

vpr_options

dict[string -> string | number]

Named options passed to VPR. No -- prefix included.

part_name

string

Name of the chip used. The distinction between device and part_name is ambiguous at the moment and should be addressed in the future.

arch_def

string

Path to an XML file containing architecture definition.

+
+
+
+ + +
+
+
+
+
+ + + + + + \ No newline at end of file diff --git a/f4pga/index.html b/f4pga/index.html new file mode 100644 index 000000000..9baf56160 --- /dev/null +++ b/f4pga/index.html @@ -0,0 +1,542 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Overview — F4PGA documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

Overview

+

Python F4PGA is a package containing multiple modules to facilitate the usage of all the tools integrated in the F4PGA +ecosystem, and beyond. +The scope of Python F4PGA is threefold:

+
    +
  • Provide a fine-grained pythonic interface to the tools and utilities available as either command-line interfaces +(CLIs) or application proggraming interfaces (APIs) (either web or through shared libraries).

  • +
  • Provide a CLI entrypoint covering the whole flows for end-users to produce bitstreams from HDL and/or software sources.

  • +
  • Provide a CLI entrypoint for developers contributing to bitstream documentation and testing (continuous integration).

  • +
+
+

Attention

+

This is work-in-progress to adapt and organize the existing shell/bash based plumbing from multiple F4PGA repositories. +Therefore, it’s still a pre-alpha and the codebase, commands and flows are subject to change. +It is strongly suggested not to rely on Python F4PGA until this note is updated/removed.

+
+
+

References

+ +
+
+ + +
+
+
+
+
+ + + + + + \ No newline at end of file diff --git a/f4pga/modules/fasm.html b/f4pga/modules/fasm.html new file mode 100644 index 000000000..d314723ce --- /dev/null +++ b/f4pga/modules/fasm.html @@ -0,0 +1,532 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + fasm — F4PGA documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

fasm

+

The fasm module generates FPGA assembly using genfasm (VPR-only).

+

The module should guarantee the following outputs:

+
    +
  • fasm

  • +
+

For detailed information about these targets, please refer to +docs/common targets and variables.md

+

The setup of the synth module follows the following specifications:

+
+

Values

+

The fasm module accepts the following values:

+
    +
  • pnr_corner (string, optional): PnR corner to use. Relevant only for Quicklogic’s +eFPGAs.

  • +
+
+
+ + +
+
+
+
+
+ + + + + + \ No newline at end of file diff --git a/f4pga/modules/generic_script_wrapper.html b/f4pga/modules/generic_script_wrapper.html new file mode 100644 index 000000000..261ad5b3e --- /dev/null +++ b/f4pga/modules/generic_script_wrapper.html @@ -0,0 +1,559 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + generic_script_wrapper — F4PGA documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

generic_script_wrapper

+

This module provides a way to integrate an external command into an f4pga flow. +Its inputs and outputs are fully defined by the author of flow definition.

+
+

Parameters

+

Parameters are everything when it comes to this module:

+
    +
  • stage_name (string, optional): Name describing the stage

  • +
  • script (string, mandatory): Path to the script to be executed

  • +
  • interpreter (string, optional): Interpreter for the script

  • +
  • cwd (string, optional): Current Working Directory for the script

  • +
  • outputs (dict[string -> dict[string -> string]], +mandatory): +A dict with output descriptions (dicts). Keys name output dependencies.

    +
      +
    • mode (string, mandatory): “file” or “stdout”. Describes how the output is +grabbed from the script.

    • +
    • file (string, required if mode is “file”): Name of the file generated by the +script.

    • +
    • target (string, required): Default name of the file of the generated +dependency. You can use all values available during map_io stage. Each input +dependency also gets two extra values associated with it: +:dependency_name[noext], which contains the path to the dependency the +extension with anything after last “.” removed and :dependency_name[dir] which +contains directory paths of the dependency. This is useful for deriving an output +name from the input.

    • +
    • meta (string, optional): Description of the output dependency.

    • +
    +
  • +
  • inputs (dict[string -> string | bool], mandatory): +A dict with input descriptions. Key is can be a name of a named argument, a +position of unnamed argument, when prefaced with “#” (eg. “#1”), or a name of an +environmental variable, when prefaced with “$”. Positions are indexed +from 1, as it’s a convention that 0th argument is the path of the executed program. +Values are strings that can contain references to variables to be resolved +after the project flow configuration is loaded (that means they can reference +values and dependencies which are to be set by the user). All of modules inputs +will be determined by the references used. Thus dependency and value definitions +are implicit. If the value of the resolved string is empty and is associated with a +named argument, the argument in question will be skipped entirely. This allows +using optional dependencies. To use a named argument as a flag instead, set it to +true.

  • +
+
+
+ + +
+
+
+
+
+ + + + + + \ No newline at end of file diff --git a/f4pga/modules/index.html b/f4pga/modules/index.html new file mode 100644 index 000000000..a8de84f31 --- /dev/null +++ b/f4pga/modules/index.html @@ -0,0 +1,826 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Modules — F4PGA documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+ + +
+
+ +
+

Modules

+
+

Interface

+

This document contains all the information needed to configure modules for +your f4pga project as well as some info about the API used to write +modules.

+
+

Configuration interface:

+

Modules are configured through an internal API by f4pga. +The basic requirement for a module script is to expose a class with Module +interface.

+

f4pga reads its configuration from two different sources: +platform’s flow definition, which is a file that usually comes bundled with f4pga +and project’s flow configuration, which is a set of configuration options provided by the user +through a JSON file or CLI interface.

+

Those sources contain snippets of module configurations.

+

A module configuration is a structure with the following fields:

+
    +
  • takes - a dictionary that contains keys which are names of the dependencies used by the module. +The values are paths to those dependencies. +They can be either singular strings or lists of strings.

  • +
  • produces - a dictionary that contains keys which are names of the dependencies produced by the module. +The values are requested filenames for the files generated by the module. +They can be either singular strings or lists of strings.

  • +
  • values - a dictionary that contains other values used to configure the module. +The keys are value’s names and the values can have any type.

  • +
+
+
+

Platform-level configuration

+

In case of platform’s flow definition, a values dictionary can be defined +globally and the values defined there will be passed to every module’s config.

+

Those values can be overridden per-module through module_options dictionary.

+

Parameters used during module’s construction can also be defined in module_options +as params (those are not a part of module configuration, instead they are used +during the actual construction of a module instance, before it declares any of its +input/outputs etc.. This is typically used to achieve some parametrization over module’s +I/O).

+

Defining dictionaries for takes and produces is currently disallowed within +platform’s flow definition.

+

For examples of platform’s flow definition described here, please have a look at +f4pga/platforms/ directory. It contains platform flow definitions that come bundled +with f4pga.

+
+
+

Project-level configuration

+

This section describes project’s flow configuration.

+

Similarly to platform’s flow definition, values dict can be provided. +The values provided there will overwrite the values from +platform’s flow definition in case of a collision.

+

Unlike platform’s flow definition, project’s flow configuration may contain +dependencies dict. This dictionary would be used to map symbolic dependency +names to actual paths. Most dependencies can have their paths resolved implicitly +without the need to provide explicit paths, which is a mechanism that is described +in a later section of this document. However some dependencies must be provided +explicitly, eg. paths to project’s Verilog source files. It should be noted that +depending on the flow definition and the dependency in question, the path does not +necessarily have to point to an already existing file. If the dependency is a +product of a module within the flow, the path assigned to it will be used +by the module to build that dependency. This is also used to in case of on-demand +dependencies, which won’t be produced unless the user explicitly provides a path +for them.

+

project’s flow configuration cannot specify params for modules and does not +use module_options dictionary. Neither it can instantiate any extra stages.

+

Any entry with a couple exceptions* is treated as a platform name. +Enabling support for a given platform within a project’s flow configuration file +requires having an entry for that platform. +Each of those entries may contain dependencies, values fields which will +overload the dependecies and values defined in a global scope of +project’s flow configuration. Any other field under those platform entries +is treated as a stage-specific-configuration. The key is a name of a stage within +a flow for the specified platform and the values are dicts which may contain +dependencies and values fields that overload dependencies and values +respectively, locally for the stage. Additionally a default_target field can be +provided to specify a default target to built when the user does not specify it through +a CLI interface.

+

The aforementioned *exceptions are:

+
    +
  • dependencies - dependencies shared by all platforms.

  • +
  • values - values shared by all platforms

  • +
  • default_platform - default platform to chose in case it doesn’t get specified +by the user

  • +
+

Those apply only to flow configuration file.

+
+
+

Internal environmental variables

+

It’s very useful to be able to refer to some data within +platform’s flow definition and project’s flow configuration to +either avoid redundant definitions or to store and access results of certain operations. +f4pga allows doing that by using a special syntax for accessing internal +environmental variables.

+

The syntax is ${variable_name}. Any string value within +platform’s flow definition and project’s flow configuration that contains +such patterns will have them replaced with the values of the variables referenced +if those values are strings. Eg.:

+

With the following values defined:

+
{
+  "a_value": "1234",
+  "another_value": "a_value: ${a_value}"
+}
+
+
+

another_value will resolve to:

+
"a_value: 1234"
+
+
+

If the value is a list however, the result would be a list with all entries being +the original string with the reference to a variable replaced by following +items of the original list. Eg.:

+

With the following values defined

+
{
+  "list_of_values": ["a", "b", "c"],
+  "some_string": "item: ${list_of_values}"
+}
+
+
+

some_string will resolve to

+
["item: a", "item: b", "item: c"]
+
+
+

Be careful when using this kind of resolution, as it’s computational and memory +complexity grows exponentially in regards to the number of list variables being +referenced, which is a rather obvious fact, but it’s still worth mentioning.

+

The variables that can be referenced within a definition/configuration fall into 3 +categories:

+
    +
  • value references - anything declared as a value can be accessed by it’s +name

  • +
  • dependency references - any dependency path can be referenced using the name +of the dependency prefaced with a ‘:’ prefix. Eg.: ${:eblif} will resolve +to the path of eblif dependency. Make sure that the dependency can be +actually resolved when you are using this kind of reference. For example +you can’t use the a reference to eblif dependency in a module which does not +rely on it. An exception is the producer module which can in fact reference it’s +own outputs but these references cannot be used during the mapping stage +(more on that later).

  • +
  • built-in references - there are a couple of built-in variables which are very +handy:

    +
      +
    • shareDir - path to f4pga’s share directory.

    • +
    • binDir - path to f4pga’s bin directory.

    • +
    • prjxray_db - Project X-Ray database path.

    • +
    • python3 - path to Python 3 interpreter.

    • +
    • noisyWarnings - (this one should probably get removed)

    • +
    +
  • +
+
+
+

Module class

+

Each module is represented as a class derived from Module class.

+

The class should implement the following methods:

+
    +
  • execute(self, ctx: ModuleContext) - executes the module in exec mode

  • +
  • map_io(self, ctx: ModuleContext) -> 'dict[str, ]' - executes the module in +mapping mode

  • +
  • __init__(self, params: 'dict[str, ]') - initializer. The params +is a dict with optional parameter for the module.

  • +
+

Each module script should expose the class by defining it’s name/type alias as +ModuleClass. f4pga tries to access a ModuleClass attribute within a package +when instantiating a module.

+
+
+

Module’s execution modes

+

A module has essentially two execution modes:

+
    +
  • mapping mode

  • +
  • exec mode

  • +
+
+

mapping mode

+

In mapping mode the module is provided with an incomplete configuration which +includes:

+
    +
  • takes namespace: this maps names of input dependencies to the paths of these +dependencies

  • +
  • values namespace: this maps names of variables to the values of those +variables.

  • +
+

The module has to provide a dictionary that will provide every output dependency +that’s not on-demand a default path. This is basically a promise that when +executed in exec mode, the module will produce files for this paths. +Typically such paths would be derived from a path of one of it’s input dependencies. +This mechanism allows the user to avoid specifying an explicit path for each +intermediate target.

+

It should be noted that variables referring to the output dependencies +can’t be accessed at this stage for the obvious reason as their values are yet +to be evaluated.

+
+
+

exec mode

+

In exec mode the module does the actual work.

+

The configuration passed into this mode is full and it includes:

+
    +
  • takes namespace: this maps names of input dependencies to the paths of these +dependencies

  • +
  • values namespace: this maps names of variables to the values of those +variables.

  • +
  • produces namespace: this maps names of output dependencies to explicit paths. +This should not be used directly really, but it’s useful for +ModuleContext.is_output_explicit method.

  • +
  • outputs namespace: this maps names of output dependencies to their paths.

  • +
+

When the module finishes executing in exec mode, all of the dependencies +described in outputs should be present.

+
+
+
+

Module initialization/instantiation

+

In the __init__ method of module’s class, the following fields should be +set:

+
    +
  • takes - a list of symbolic dependency names for dependencies used by the module

  • +
  • produces - a list of symbolic dependencies names for dependencies produced +by the module.

  • +
  • values - a list of names given to the variables used withing the module

  • +
  • prod_meta - A dictionary which maps product names to descriptions of these +products. Those entries are optional and can be skipped.

  • +
+
+

Qualifiers/decorators

+

By default the presence of all the dependencies and values is mandatory +(In case of produces that means that the module always has to produce the listed +dependencies). This can be changed by “decorating” a name in one of the following +ways:

+
    +
  • ?suffix

    +
      +
    • In takes - the dependency is not necessary for the module to execute

    • +
    • In produces - the dependency may be produced, but it is not guaranteed.

    • +
    • In values the value is not required for the module to execute. +Referring to it through ModuleContext.values.value_name won’t raise an +exception if the value is not present, instead None will be returned.

    • +
    +
  • +
  • !suffix

    +
      +
    • In produces - the dependency is going to be produced only if the user +provides an explicit path for it.

    • +
    +
  • +
+

Currently it’s impossible to combine both ‘!’ and ‘?’ together. This limitation +does not have any reason behind it other than the way the qualifier system +is implemented at the moment. It might be removed in the future.

+
+
+
+
+

Common modules

+ +
+
+ + +
+
+
+
+
+ + + + + + \ No newline at end of file diff --git a/f4pga/modules/io_rename.html b/f4pga/modules/io_rename.html new file mode 100644 index 000000000..d6af02465 --- /dev/null +++ b/f4pga/modules/io_rename.html @@ -0,0 +1,544 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + io_rename — F4PGA documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

io_rename

+

This module provides a way to rename (ie. change) dependencies and values of an +instance of a different module. It wraps another, module whose name is specified in params.module and changes the names of the dependencies and values it relies on.

+
+

Parameters

+
    +
  • module (string, required) - name of the wrapped module

  • +
  • params (dict[string -> any], optional): parameters passed to the wrapped +module instance.

  • +
  • rename_takes (dict[string -> string]) - mapping for inputs (“takes”)

  • +
  • rename_produces (dict[string -> string]) - mapping for outputs (“products”)

  • +
  • rename_values (dict[string -> string]) - mapping for values

  • +
+

In the three mapping dicts, keys represent the names visible to the wrapped module +and values represent the names visible to the modules outside. +Not specifying a mapping for a given entry will leave it with its original name.

+
+
+

Values

+

All values specified for this modules will be accessible by the wrapped module.

+
+
+

Extra notes

+

This module might be removed in the future in favor of a native renaming support.

+
+
+ + +
+
+
+
+
+ + + + + + \ No newline at end of file diff --git a/f4pga/modules/mkdirs.html b/f4pga/modules/mkdirs.html new file mode 100644 index 000000000..05d7f1220 --- /dev/null +++ b/f4pga/modules/mkdirs.html @@ -0,0 +1,523 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + mkdirs — F4PGA documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

mkdirs

+

This modules creates directories specified by the author of flow definition +as its targets..

+
+

Parameters

+

Each key serves as a name of a directory to be created, while the value is the +path for that directory.

+
+
+ + +
+
+
+
+
+ + + + + + \ No newline at end of file diff --git a/f4pga/modules/pack.html b/f4pga/modules/pack.html new file mode 100644 index 000000000..d14b71b8b --- /dev/null +++ b/f4pga/modules/pack.html @@ -0,0 +1,514 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + pack — F4PGA documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

pack

+
+

Warning

+

this page is under construction

+
+

Pack circuit with VPR.

+
+ + +
+
+
+
+
+ + + + + + \ No newline at end of file diff --git a/f4pga/modules/place.html b/f4pga/modules/place.html new file mode 100644 index 000000000..253313dd4 --- /dev/null +++ b/f4pga/modules/place.html @@ -0,0 +1,514 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + place — F4PGA documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

place

+
+

Warning

+

this page is under construction

+
+

Place cells with VPR.

+
+ + +
+
+
+
+
+ + + + + + \ No newline at end of file diff --git a/f4pga/modules/place_constraints.html b/f4pga/modules/place_constraints.html new file mode 100644 index 000000000..737bdc887 --- /dev/null +++ b/f4pga/modules/place_constraints.html @@ -0,0 +1,518 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + place_constraints — F4PGA documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

place_constraints

+
+

Warning

+

this page is under construction

+
+

Move cell placement to satisfy constraints imposed by an architecture. (VPR-only)

+
+

Note

+

This will be deprecated once VPR constraint system supports this functionality natively.

+
+
+ + +
+
+
+
+
+ + + + + + \ No newline at end of file diff --git a/f4pga/modules/route.html b/f4pga/modules/route.html new file mode 100644 index 000000000..1452446f6 --- /dev/null +++ b/f4pga/modules/route.html @@ -0,0 +1,514 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + route — F4PGA documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

route

+
+

Warning

+

this page is under construction

+
+

Route a design with VPR.

+
+ + +
+
+
+
+
+ + + + + + \ No newline at end of file diff --git a/f4pga/modules/synth.html b/f4pga/modules/synth.html new file mode 100644 index 000000000..fa56dbe1a --- /dev/null +++ b/f4pga/modules/synth.html @@ -0,0 +1,556 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + synth — F4PGA documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

synth

+

The synth module is meant to be used to execute YOSYS synthesis.

+

The module should guarantee the following outputs:

+
    +
  • eblif

  • +
  • fasm_extra (can be empty)

  • +
  • json

  • +
  • synth_json

  • +
  • synth_log (on demand)

  • +
+

For detailed information about these targets, please refer to +docs/common targets and variables.md

+

What files and how are they generated is dependent on TCL scripts executed +withing YOSYS and the script vary depending on the target platform. Due to this +design choice it is required for the author of the flow definition to parameterize +the synth module in a way that will GUARANTEE the targets mentioned above +will be generated upon a successful YOSYS run.

+

The setup of the synth module follows the following specifications:

+
+

Parameters

+

The params section of a stage configuration may contain a produces list. +The list should specify additional targets that will be generated +(? qualifier is allowed).

+
+
+

Values

+

The synth module requires the following values:

+
    +
  • tcl_scripts (string, required): A path to a directory containing synth.tcl +and conv.tcl scripts that will be used by YOSYS.

  • +
  • read_verilog_args (list[string | number], optional) - If specified, the Verilog +sources will be read using the read_verilog procedure with options contained in +this value.

  • +
  • yosys_tcl_env (dict[string -> string | list[string], required) - A mapping that +defines environmental variables that will be used within the TCL scripts. This +should contain the references to module’s inputs and outputs in order to guarantee +the generation of the desired targets.

  • +
+
+
+ + +
+
+
+
+
+ + + + + + \ No newline at end of file diff --git a/flows/bitstream.html b/flows/bitstream.html new file mode 100644 index 000000000..52cf7863e --- /dev/null +++ b/flows/bitstream.html @@ -0,0 +1,518 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Bitstream translation — F4PGA documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

Bitstream translation

+

The routing process results in an output file specifying the used blocks +and routing paths. It contains the resources that needs to be instantiated +on the FPGA chip, however, the output format is not understood +by the FPGA chip itself.

+

In the last step, the description of the chip is translated into +the appropriate format, suitable for the chosen FPGA. +That final file contains instructions readable by the configuration block of +the desired chip.

+

Documenting the bitstream format for different FPGA chips is one of the +most important tasks in the F4PGA Project!

+
+ + +
+
+
+
+
+ + + + + + \ No newline at end of file diff --git a/flows/f4pga.html b/flows/f4pga.html new file mode 100644 index 000000000..4d0a6097d --- /dev/null +++ b/flows/f4pga.html @@ -0,0 +1,931 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + In F4PGA — F4PGA documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+ + +
+
+ +
+

In F4PGA

+
+

Synthesis

+

In the F4PGA toolchain synthesis is made with the use of Yosys, that is able to perform all the mentioned steps and +convert HDL to netlist description. +The result of these steps is written to a file in .eblif format.

+
+

Yosys

+

Yosys is a Free and Open Source Verilog HDL synthesis tool. +It was designed to be highly extensible and multiplatform. +In F4PGA toolchain, it is responsible for the whole synthesis process described in FPGA Design Flow

+

It is not necessary to call Yosys directly using F4PGA. +Nevertheless, the following description, should provide sufficient introduction to Yosys usage inside the project. +It is also a good starting point for a deeper understanding of the whole toolchain.

+
+

Short description

+

Yosys consists of several subsystems. Most distinguishable are the first and last ones used in the synthesis process, +called frontend and backend respectively. +Intermediate subsystems are called passes.

+

The frontend is responsible for changing the Verilog input file into an internal Yosys, representation which is common +for all passes used by the program. +The passes are responsible for a variety of optimizations (opt_) and simplifications (proc_).

+

Two passes, that are worth to mention separately are ABC and techmap. +The first one optimizes logic functions from the design and assigns obtained results into Look Up Tables (LUTs) of +chosen width. +The second mentioned pass - techmap is responsible for mapping the synthesized design from Yosys internal blocks +to the primitives used by the implementation tool. +Recommended synthesis flows for different FPGAs are combined into macros i.e. synth_ice40 (for Lattice iCE40 FPGA) +or synth_xilinx (for Xilinx 7-series FPGAs).

+

The backend on the other hand, is responsible for converting internal Yosys representation into one of the +standardized formats. +F4PGA uses .eblif as its output file format.

+
+
+

Usage in Toolchain

+

All operations performed by Yosys are written in .tcl script. Commands used +in the scripts are responsible for preparing output file to match with the +expectations of other toolchain tools. +There is no need to change it even for big designs. +An example configuration script can be found below:

+
yosys -import
+
+synth_ice40 -nocarry
+
+opt_expr -undriven
+opt_clean
+
+setundef -zero -params
+write_blif -attr -cname -param $::env(OUT_EBLIF)
+write_verilog $::env(OUT_SYNTH_V)
+
+
+

It can be seen that this script performs a platform-specific process of synthesis, some optimization steps (opt_ +commands), and writes the final file in .eblif and Verilog formats. +Yosys synthesis configuration scripts are platform-specific and can by found in <platform-dir>/yosys/synth.tcl in +the F4PGA Architecture Definitions repository.

+

To understand performed operations, view the log file. +It is usually generated in the project build directory. It should be named top.eblif.log.

+
+
+

Output analysis

+

Input file:

+
module top (
+    input  clk,
+    output LD7,
+);
+    localparam BITS = 1;
+    localparam LOG2DELAY = 25;
+
+    reg [BITS+LOG2DELAY-1:0] counter = 0;
+    always @(posedge clk) begin
+            counter <= counter + 1;
+    end
+
+    assign {LD7} = counter >> LOG2DELAY;
+endmodule
+
+
+

after synthesis is described only with use of primitives appropriate for +chosen platform:

+
module top(clk, LD7);
+  wire [25:0] _000_;
+  wire _001_;
+
+...
+
+  FDRE_ZINI #(
+    .IS_C_INVERTED(1'h0),
+    .ZINI(1'h1)
+  ) _073_ (
+    .C(clk),
+    .CE(_012_),
+    .D(_000_[0]),
+    .Q(counter[0]),
+    .R(_013_)
+  );
+
+...
+
+  SR_GND _150_ (
+    .GND(_062_)
+  );
+  assign _003_[25:0] = _000_;
+  assign counter[25] = LD7;
+endmodule
+
+
+

The same structure is described by the .eblif file.

+
+
+

Technology mapping in F4PGA toolchain

+

It is important to understand the connection between the synthesis and +implementation tools used in the F4PGA toolchain. As mentioned before, +synthesis tools like Yosys take the design description from the source files +and convert them into a netlist that consists of the primitives used by +the implementation tool. Usually, to support multiple implementation tools, +an additional intermediate representation of FPGA primitives is provided. +The process of translating the primitives from the synthesis +tool’s internal representation to the specific primitives used in the +implementation tools is called technology mapping (or techmapping).

+
+
+

Technology mapping for VPR

+

As mentioned before, VPR is one of the implementation tools (often referred to +as Place & Route or P&R tools) used in F4PGA. By default, the F4PGA +toolchain uses it during bitstream generation for, i.e., Xilinx 7-Series +devices. Since the architecture models for this FPGA family were created from +scratch, appropriate techmaps were needed to instruct Yosys on translating +the primitives to the versions compatible with VPR.

+

The clock buffers used in the 7-Series devices are a good example for explaining +the techmapping process. Generally, as stated in the +Xilinx 7 Series FPGAs Clocking Resources User Guide, a designer has various +buffer types that they can use in designs:

+
    +
  • BUFGCTRL

  • +
  • BUFG

  • +
  • BUFGCE

  • +
  • BUFGCE_1

  • +
  • BUFGMUX

  • +
  • BUFGMUX_1

  • +
  • BUFGMUX_CTRL

  • +
+

Nevertheless, the actual chips consist only of the BUFGCTRL primitives, +which are the most universal and can function as other clock buffer +primitives from the Xilinx manual. Because of that, only one architecture model +is required for VPR. The rest of the primitives are mapped to this general +buffer during the techmapping process. The model of BUFGCTRL primitive used +by VPR is called BUFGCTR_VPR (More information about the architecture +modeling in VPR can be found in the VTR FPGA Architecture Description).

+

Support for particular primitive in VTR consist of two files:

+
    +
  • Model XML (xxx.model.xml) - Contains general information about +the module’s input and output ports and their relations.

  • +
  • Physical Block XML (xxx.pb_type.xml) - Describes the actual layout of the +primitive, with information about the timings, internal connections, etc.

  • +
+

Below you can see the pb_type XML for BUFGCTRL_VPR primitive:

+
<!-- Model of BUFG group in BUFG_CLK_TOP/BOT -->
+<pb_type name="BLK-TL-BUFGCTRL" xmlns:xi="https://www.w3.org/2001/XInclude">
+  <output name="O" num_pins="1"/>
+  <input name="CE0" num_pins="1"/>
+  <input name="CE1" num_pins="1"/>
+  <clock name="I0" num_pins="1"/>
+  <clock name="I1" num_pins="1"/>
+  <input name="IGNORE0" num_pins="1"/>
+  <input name="IGNORE1" num_pins="1"/>
+  <input name="S0" num_pins="1"/>
+  <input name="S1" num_pins="1"/>
+  <mode name="EMPTY">
+    <pb_type name="empty" blif_model=".latch" num_pb="1" />
+    <interconnect />
+  </mode>
+  <mode name="BUFGCTRL">
+    <pb_type name="BUFGCTRL_VPR" blif_model=".subckt BUFGCTRL_VPR" num_pb="1">
+      <output name="O" num_pins="1"/>
+      <input name="CE0" num_pins="1"/>
+      <input name="CE1" num_pins="1"/>
+      <clock name="I0" num_pins="1"/>
+      <clock name="I1" num_pins="1"/>
+      <input name="IGNORE0" num_pins="1"/>
+      <input name="IGNORE1" num_pins="1"/>
+      <input name="S0" num_pins="1"/>
+      <input name="S1" num_pins="1"/>
+      <metadata>
+        <meta name="fasm_params">
+          ZPRESELECT_I0 = ZPRESELECT_I0
+          ZPRESELECT_I1 = ZPRESELECT_I1
+          IS_IGNORE0_INVERTED = IS_IGNORE0_INVERTED
+          IS_IGNORE1_INVERTED = IS_IGNORE1_INVERTED
+          ZINV_CE0 = ZINV_CE0
+          ZINV_CE1 = ZINV_CE1
+          ZINV_S0 = ZINV_S0
+          ZINV_S1 = ZINV_S1
+        </meta>
+      </metadata>
+    </pb_type>
+    <interconnect>
+      <direct name="O" input="BUFGCTRL_VPR.O" output="BLK-TL-BUFGCTRL.O"/>
+      <direct name="CE0" input="BLK-TL-BUFGCTRL.CE0" output="BUFGCTRL_VPR.CE0"/>
+      <direct name="CE1" input="BLK-TL-BUFGCTRL.CE1" output="BUFGCTRL_VPR.CE1"/>
+      <direct name="I0" input="BLK-TL-BUFGCTRL.I0" output="BUFGCTRL_VPR.I0"/>
+      <direct name="I1" input="BLK-TL-BUFGCTRL.I1" output="BUFGCTRL_VPR.I1"/>
+      <direct name="IGNORE0" input="BLK-TL-BUFGCTRL.IGNORE0" output="BUFGCTRL_VPR.IGNORE0"/>
+      <direct name="IGNORE1" input="BLK-TL-BUFGCTRL.IGNORE1" output="BUFGCTRL_VPR.IGNORE1"/>
+      <direct name="S0" input="BLK-TL-BUFGCTRL.S0" output="BUFGCTRL_VPR.S0"/>
+      <direct name="S1" input="BLK-TL-BUFGCTRL.S1" output="BUFGCTRL_VPR.S1"/>
+
+    </interconnect>
+    <metadata>
+      <meta name="fasm_features">
+        IN_USE
+      </meta>
+    </metadata>
+  </mode>
+</pb_type>
+
+
+

A correctly prepared techmap for any VPR model contains a declaration of +the module that should be substituted. Inside the module declaration, one +should provide a necessary logic and instantiate another module that +will substitute its original version. Additionally, all equations within +a techmap that are not used directly in a module instantiation should evaluate +to a constant value. Therefore most of the techmaps use additional constant +parameters to modify the signals attached to the instantiated module.

+

Here is a piece of a techmap, which instructs Yosys to convert +a BUFG primitive to the BUFGCTRL_VPR. In this case, the techmaping process +consists of two steps. Firstly, the techmap shows how to translate the BUFG +primitive to the BUFGCTRL. Then how to translate the BUFGCTRL to +the BUFGCTRL_VPR:

+
module BUFG (
+  input I,
+  output O
+  );
+
+  BUFGCTRL _TECHMAP_REPLACE_ (
+    .O(O),
+    .CE0(1'b1),
+    .CE1(1'b0),
+    .I0(I),
+    .I1(1'b1),
+    .IGNORE0(1'b0),
+    .IGNORE1(1'b1),
+    .S0(1'b1),
+    .S1(1'b0)
+  );
+endmodule
+
+module BUFGCTRL (
+output O,
+input I0, input I1,
+input S0, input S1,
+input CE0, input CE1,
+input IGNORE0, input IGNORE1
+);
+
+  parameter [0:0] INIT_OUT = 1'b0;
+  parameter [0:0] PRESELECT_I0 = 1'b0;
+  parameter [0:0] PRESELECT_I1 = 1'b0;
+  parameter [0:0] IS_IGNORE0_INVERTED = 1'b0;
+  parameter [0:0] IS_IGNORE1_INVERTED = 1'b0;
+  parameter [0:0] IS_CE0_INVERTED = 1'b0;
+  parameter [0:0] IS_CE1_INVERTED = 1'b0;
+  parameter [0:0] IS_S0_INVERTED = 1'b0;
+  parameter [0:0] IS_S1_INVERTED = 1'b0;
+
+  parameter _TECHMAP_CONSTMSK_IGNORE0_ = 0;
+  parameter _TECHMAP_CONSTVAL_IGNORE0_ = 0;
+  parameter _TECHMAP_CONSTMSK_IGNORE1_ = 0;
+  parameter _TECHMAP_CONSTVAL_IGNORE1_ = 0;
+  parameter _TECHMAP_CONSTMSK_CE0_ = 0;
+  parameter _TECHMAP_CONSTVAL_CE0_ = 0;
+  parameter _TECHMAP_CONSTMSK_CE1_ = 0;
+  parameter _TECHMAP_CONSTVAL_CE1_ = 0;
+  parameter _TECHMAP_CONSTMSK_S0_ = 0;
+  parameter _TECHMAP_CONSTVAL_S0_ = 0;
+  parameter _TECHMAP_CONSTMSK_S1_ = 0;
+  parameter _TECHMAP_CONSTVAL_S1_ = 0;
+
+  localparam [0:0] INV_IGNORE0 = (
+      _TECHMAP_CONSTMSK_IGNORE0_ == 1 &&
+      _TECHMAP_CONSTVAL_IGNORE0_ == 0 &&
+      IS_IGNORE0_INVERTED == 0);
+  localparam [0:0] INV_IGNORE1 = (
+      _TECHMAP_CONSTMSK_IGNORE1_ == 1 &&
+      _TECHMAP_CONSTVAL_IGNORE1_ == 0 &&
+      IS_IGNORE1_INVERTED == 0);
+  localparam [0:0] INV_CE0 = (
+      _TECHMAP_CONSTMSK_CE0_ == 1 &&
+      _TECHMAP_CONSTVAL_CE0_ == 0 &&
+      IS_CE0_INVERTED == 0);
+  localparam [0:0] INV_CE1 = (
+      _TECHMAP_CONSTMSK_CE1_ == 1 &&
+      _TECHMAP_CONSTVAL_CE1_ == 0 &&
+      IS_CE1_INVERTED == 0);
+  localparam [0:0] INV_S0 = (
+      _TECHMAP_CONSTMSK_S0_ == 1 &&
+      _TECHMAP_CONSTVAL_S0_ == 0 &&
+      IS_S0_INVERTED == 0);
+  localparam [0:0] INV_S1 = (
+      _TECHMAP_CONSTMSK_S1_ == 1 &&
+      _TECHMAP_CONSTVAL_S1_ == 0 &&
+      IS_S1_INVERTED == 0);
+
+  BUFGCTRL_VPR #(
+      .INIT_OUT(INIT_OUT),
+      .ZPRESELECT_I0(PRESELECT_I0),
+      .ZPRESELECT_I1(PRESELECT_I1),
+      .IS_IGNORE0_INVERTED(!IS_IGNORE0_INVERTED ^ INV_IGNORE0),
+      .IS_IGNORE1_INVERTED(!IS_IGNORE1_INVERTED ^ INV_IGNORE1),
+      .ZINV_CE0(!IS_CE0_INVERTED ^ INV_CE0),
+      .ZINV_CE1(!IS_CE1_INVERTED ^ INV_CE1),
+      .ZINV_S0(!IS_S0_INVERTED ^ INV_S0),
+      .ZINV_S1(!IS_S1_INVERTED ^ INV_S1)
+  ) _TECHMAP_REPLACE_ (
+    .O(O),
+    .CE0(CE0 ^ INV_CE0),
+    .CE1(CE1 ^ INV_CE1),
+    .I0(I0),
+    .I1(I1),
+    .IGNORE0(IGNORE0 ^ INV_IGNORE0),
+    .IGNORE1(IGNORE1 ^ INV_IGNORE1),
+    .S0(S0 ^ INV_S0),
+    .S1(S1 ^ INV_S1)
+  );
+
+ endmodule
+
+
+
+

Note

+

All F4PGA techmaps for Xilinx 7-Series devices use special inverter +logic that converts constant 0 signals at the BEL to constant-1 signals +at the site. This behavior is desired since VCC is the default signal in +7-Series and US/US+ devices. The presented solution matches the conventions +used by the vendor tools and gives the opportunity to validate generated +bitstreams with fasm2bels and Vivado.

+
+

Yosys provides special techmapping naming conventions for wires, +parameters, and modules. The special names that start with _TECHMAP_ +can be used to force certain behavior during the techmapping process. +Currently, the following special names are used in F4PGA techmaps:

+
    +
  • _TECHMAP_REPLACE_ is used as a name for an instantiated module, which will +replace the one used in the original design. This special name causes +the instantiated module to inherit the name and all attributes +from the module that is being replaced.

  • +
  • _TECHMAP_CONSTMSK_<port_name>_ and _TECHMAP_CONSTVAL_<port_name>_ +are used together as names of parameters. The _TECHMAP_CONSTMASK_<port_name>_ +has a length of the input signal. Its bits take the value 1 if +the corresponding signal bit has a constant value, or 0 otherwise. +The _TECHMAP_CONSTVAL_<port_name>_ bits store the actual constant signal +values when the _TECHMAP_CONSTMASK_<port_name>_ is equal to 1.

  • +
+

More information about special wire, parameter, and module names can be found in +techmap section in the Yosys Manual.

+
+

Note

+

Techmapping can be used not only to change the names of the primitives +but primarily to match the port declarations and express the logic behind +the primitive substitution:

+
+
+module BUFG(output O, input I)
+
+
+
+module BUFGCTRL(output O, input CE0, input CE1, input I0, input I1, input IGNORE0, input IGNORE1, input S0, input S1)
+
+
+
+
+

More information

+

Additional information about Yosys can be found on the Yosys Project Website , or in Yosys Manual. You can also compile +one of the tests described in Getting Started section and watch the log file +to understand which operations are performed by Yosys.

+
+
+
+
+

Place & Route

+

The F4PGA Project uses two different tools for the PnR process - nextpnr and Versatile Place and Route (VPR). +Both of them write their final result to a file in the .fasm format.

+
+

VPR

+

See VPR ➚.

+
+
+

nextpnr

+

See nextpnr ➚.

+
+
+
+ + +
+
+
+
+
+ + + + + + \ No newline at end of file diff --git a/flows/index.html b/flows/index.html new file mode 100644 index 000000000..66bf948b8 --- /dev/null +++ b/flows/index.html @@ -0,0 +1,524 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Introduction — F4PGA documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

Introduction

+

This section provides a description of the F4PGA toolchain as well as the basic concepts of the FPGA design flow.

+

F4PGA is an end-to-end FPGA synthesis toolchain, because of that it provides all the necessary tools to convert input +Hardware Description Language (HDL) sources into a final bitstream. +It is simple to use however, the whole synthesis and implementation process is not trivial.

+

The final bitstream format depends on the used platform. +What’s more, every platform has different resources and even if some of them provide similar functionality, they can be +implemented in a different way. +In order to be able to match all that variety of possible situations, the creation of the final bitstream is divided +into few steps. +F4PGA uses different programs to create the bitstream and is responsible for their proper integration. +The procedure of converting HDL files into the bitstream is described in the next sections.

+
+../_images/toolchain-flow.svg
+

Fig. 1 F4PGA Toolchain design flow

+
+
+
+ + +
+
+
+
+
+ + + + + + \ No newline at end of file diff --git a/flows/pnr.html b/flows/pnr.html new file mode 100644 index 000000000..d18e9f101 --- /dev/null +++ b/flows/pnr.html @@ -0,0 +1,562 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Place & Route — F4PGA documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

Place & Route

+

The Synthesis process results in an output containing logical elements +available on the desired FPGA chip with the specified connections between them. +However, it does not specify the physical layout of those elements in the +final design. The goal of the Place and Route (PnR) process is to take the +synthesized design and implement it into the target FPGA device. The PnR tool +needs to have information about the physical composition of the device, routing +paths between the different logical blocks and signal propagation timings. +The working flow of different PnR tools may vary, however, the process presented +below represents the typical one, adopted by most of these tools. Usually, it +consists of four steps - packing, placing, routing and analysis.

+
+

Packing

+

In the first step, the tool collects and analyzes the primitives present +in the synthesized design (e.g. Flip-Flops, Muxes, Carry-chains, etc), and +organizes them in clusters, each one belonging to a physical tile of the device. +The PnR tool makes the best possible decision, based on the FPGA routing +resources and timings between different points in the chip.

+
+
+

Placing

+

After having clustered all the various primitives into the physical tiles of the +device, the tool begins the placement process. This step consists in assigning a +physical location to every cluster generated in the packing stage. The choice of +the locations is based on the chosen algorithm and on the user’s parameters, but +generally, the final goal is to find the best placement that allows the routing +step to find more optimal solutions.

+
+
+

Routing

+

Routing is one of the most demanding tasks of the whole process. +All possible connections between the placed blocks and the information on +the signals propagation timings, form a complex graph. +The tool tries to find the optimal path connecting all the placed +clusters using the information provided in the routing graph. Once all the nets +have been routed, an output file containing the implemented design is produced.

+
+
+

Analysis

+

This last step usually checks the whole design in terms of timings and power +consumption.

+
+
+ + +
+
+
+
+
+ + + + + + \ No newline at end of file diff --git a/flows/synthesis.html b/flows/synthesis.html new file mode 100644 index 000000000..55643639c --- /dev/null +++ b/flows/synthesis.html @@ -0,0 +1,567 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Synthesis — F4PGA documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

Synthesis

+

Synthesis is the process of converting input Verilog file into a netlist, +which describes the connections between different block available on the +desired FPGA chip. However, it is worth to notice that these are only +logical connections. So the synthesized model is only a draft of the final +design, made with the use of available resources.

+
+

RTL Generation

+

the input Verilog file is often really complicated. Usually it is written in +a way that it is hard to distinguish the digital circuit standing behind +the implemented functionality. Designers often use a so-called +Behavioral Level of abstraction, in their designs, which means that the whole +description is mostly event-driven. In Verilog, support for behavioral models +is made with use of always statements.

+

However, FPGA mostly consist of Look Up Tables (LUT) and flip-flops. +Look Up Tables implement only the functionality of logic gates. +Due to that, the synthesis process has to convert the complicated +Behavioral model to a simpler description.

+

Firstly, the design is described in terms of registers and logical operations. +This is the so-called Register-Transfer Level (RTL). +Secondly, in order to simplify the design even more, some complex logic is +rewritten in the way that the final result contain only logic gates +and registers. This model is on Logical Gate level of abstraction.

+

The process of simplification is quite complicated, because of that it often +demands additional simulations between mentioned steps to prove that the input +design is equivalent to its simplified form.

+
+
+

Technology mapping

+

FPGAs from different architectures may have different architecture. For example, +they may contain some complicated functional blocks (i.e. RAM, DSP blocks) +and even some of the basic blocks like LUT tables and flip-flops may vary +between chips. Because of that, there is a need to describe the final design +in terms of platform-specific resources. This is the next step in the process +of synthesis. The simplified description containing i.e. logic gates, flip-flops +and a few more complicated blocks like RAM is taken and used “general” blocks +are substituted with that physically located in the chosen FPGA. +The vendor-specific definitions of these blocks are often located +in a separate library.

+
+
+

Optimization

+

Optimization is the key factor that allows to better utilize resources +of an FPGA. There are some universal situations in which the design +can be optimized, for example by substituting a bunch of logic gates +in terms of fewer, different gates. However, some operations can be performed +only after certain steps i.e. after technology mapping. +As a result, optimization is an integral part of most of the synthesis steps.

+
+
+ + +
+
+
+
+
+ + + + + + \ No newline at end of file diff --git a/genindex.html b/genindex.html new file mode 100644 index 000000000..6296b86c7 --- /dev/null +++ b/genindex.html @@ -0,0 +1,601 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index — F4PGA documentation + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+ +
+
+
+
+ + + + + + \ No newline at end of file diff --git a/getting-started.html b/getting-started.html new file mode 100644 index 000000000..ec7ba5991 --- /dev/null +++ b/getting-started.html @@ -0,0 +1,687 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Getting started — F4PGA documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+ + +
+
+ +
+

Getting started

+

To begin using F4PGA, you might want to take a look at the Guidelines below, which make for a good +starting point. +They will guide you through the process of installing and using the flows, explaining how to generate and load a +bitstream into your FPGA.

+

F4PGA flows are composed of multiple tools, scripts and CLI utilities. +Fortunately, various alternatives exist for setting up the whole ecosystem without going through the daunting task of +installing pieces one-by-one. +See Toolchain installation below.

+
+

Guidelines

+

This is the main documentation, which gathers info about the Python CLI tools and APIs and the +Design Flows supported by F4PGA, along with a Glossary, references to specifications, plugins and +publications.

+

Since F4PGA is meant for users with varying backgrounds and expertise, three paths are provided to walk into the ecosystem.

+

Newcomers are invited to go through Examples ➚, which provides +step-by-step guidelines to install the tools through Conda ➚, generate a bitstream from one of the +provided designs and load the bitstream into a development board. +See Customizing the Makefiles for adapting the build plumbing to your own desings.

+

For Intermediate users and contributors, who are already familiar with installing the tools and building bitstreams, +it is recommended to read the shell scripts in subdir scripts, as well as the Continuous Integration +Pipeline. +Moreover, workflow containers-conda-f4pga.yml +in gh:hdl/packages shows how to use the */conda/f4pga/* containers from gh:hdl/containers +(see workflow runs and +Containers).

+

Advanced users and developers willing to support new devices and/or enhance the features of the supported families +(see F4PGA Architectures Visualizer ➚) +should head to Architecture Definitions ➚. +The effort to document the details of each device/family are distributed on multiple projects:

+ +
+
+

Toolchain installation

+

F4PGA flows require multiple radpidly moving tools, assets and scripts, which makes it difficult for system packagers to +catch up. +Although some of the tools used in F4PGA (such as yosys, nextpnr or vpr) are available already through apt, dnf, +pacman, etc. they typically use pinned versions which are not the latest. +Therefore, the recommended installation procedure to follow the guidelines in F4PGA is repositories is using Conda ➚, +or some other pre-packaged solution combining latest releases.

+ +
+

Other

+

Apart from Conda, multiple other solutions exist for setting up all the tools required in F4PGA. +gh:hdl/packages is an index for several projects providing great prepackaged/prebuilt and easy-to-set-up +bleeding-edge packages/environments of electronic design automation (EDA) tools/projects.

+
+

Containers

+

Ready-to-use docker/podman containers are maintained in gh:hdl/containers and made available through +gcr.io/hdl-containers or ghcr.io/hdl/containers. +Some of those include Conda, the Architecture Definitions and the f4pga Python package, so they are ready to use along +with the examples in gh:chipsalliance/f4pga-examples. +See F4PGA (Conda).

+
+

Hint

+

#574 is work in progress to provide an F4PGA Action +(see Understanding GitHub Actions) +based on */conda/f4pga/* containers.

+
+
+
+
+
+

Loading bitstreams

+

For every board, the loading process may vary and different tools may be required. +Typically, each tool supports a specific target family or the lines of products of a vendor. +Some of the most known are listed in hdl/constraints: Programming and debugging. +The tools used in the F4PGA Toolchain are e.g. OpenOCD, tinyfpgab or tinyprog. +Moreover, OpenFPGALoader is a universal utility for programming FPGA devices, which is +becoming an alternative to the fragmentation in bitstream loading tools. +OpenFPGALoader supports many different boards with FPGAs based on the architectures including xc7, ECP5, iCE40 and many +more. +It can utilize a variety of the programming adapters based on JTAG, DAP interface, ORBTrace, DFU and FTDI chips.

+
+

Installing OpenFPGALoader

+

OpenFPGALoader is available in several packaging solutions. +It can be installed with distribution specific package managers on Arch Linux and Fedora. +There are also prebuilt packages available in conda +or packages in tool repository. +OpenFPGALoader can also be built from sources. +For installation guidelines using both prebuilt packages and building from source, please refer to instructions in +readme.

+
+
+

Usage

+

For programming the FPGA, use one of these commands:

+
openFPGALoader -b <board> <bitstream>           # (e.g. arty)
+openFPGALoader -c <cable> <bitstream>           # (e.g. digilent)
+openFPGALoader -d <device> <bitstream>          # (e.g. /dev/ttyUSB0)
+
+
+

You can also list the supported boards, cables and FPGAs:

+
openFPGALoader --list-boards
+openFPGALoader --list-cables
+openFPGALoader --list-fpga
+
+
+

If you encounter any issues, please refer to openFPGALoader: universal utility for programming FPGA.

+
+
+
+ + +
+
+
+
+
+ + + + + + \ No newline at end of file diff --git a/glossary.html b/glossary.html new file mode 100644 index 000000000..38e223302 --- /dev/null +++ b/glossary.html @@ -0,0 +1,620 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Glossary — F4PGA documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

Glossary

+
+

Warning

+

This is work-in-progress, since the utilities and wrappers developed in F4PGA are being redesigned (from shell to Python). +Therefore, the terms and definitions shown below are subject to change. +It is strongly suggested not to rely on the content below until this note is updated/removed.

+
+
+
Artifact

An artifact is a result produced by a step when executed. +Typically, artifacts are files and logs generated by the tools. +However, within f4pga flows, (meta)data can be passed across steps without saving +it to disk.

+
+
Cache

Within f4pga, the content of dependencies and artifacts can +be tracked to optimize consecutive executions of the same flow. +The cache contains the hash ➚ of the assets.

+
+
CLI

A Command-Line Interface (CLI) ➚ is an application that processes commands to +a computer program in the form of lines of text, typically interactively (through a terminal) or in batch mode +(through scripts). +Most of the applications used in F4PGA are meant to be used through CLIs. +Precisely, f4pga tools provide Python abstractions around the CLIs.

+
+
Configuration

Within f4pga, a project configuration is the set of parameters needed for executing a +flow on a given design. +The configuration might be provided through a Python API, or through a file using declarative format (such as JSON, +YAML, INI,…).

+
+
Constraints

Set of parameters that allow users to select/specify certain physical characteristics of the FPGA device, such as +the pins/pads or the logic standard to use.

+
+
Definition

Within f4pga, a flow definition is the description of which steps +are to be executed and which dependencies and artifacts are to be passed +along.

+
+
Dependency

A dependency is a prerequisite to execute a f4pga step in a flow. +Dependencies might be files (such as HDL sources, constraints, etc.), artifacts from previous +steps or tools.

+
+
Design

Required HDL sources, constraints and other assets to execute a flow and achieve a task.

+
+
F4PGA
    +
  • Uppercase:

    +
      +
    • FOSS Flows For FPGA (F4PGA), the name of the project as a whole.

    • +
    • A Workgroup under the CHIPS Alliance. +See Community.

    • +
    +
  • +
  • Lowercase:

    +
      +
    • Python package providing utilities.

    • +
    • The main CLI entrypoint provided by the Python package.

    • +
    +
  • +
+
+
Flow

Within f4pga, a flow is a directed graph ➚ of steps, which +describes end-to-end sequences to achieve specific tasks. +A flow might used as a step within another flow. +In such cases, terms subflow or partial flow are used.

+_images/flow.png +
+
HDL

A Hardware Description Language (HDL) is a computer language used for describing hardware designs. +HDLs in the scope of F4PGA include established (such as Verilog and VHDL ➚) or +emerging software-inspired paradigms like +Chisel ➚, +SpinalHDL ➚, +Migen ➚, or +Amaranth ➚.

+
+
Model
    +
  • Project model: a generic description of an EDA project, independent of vendor and tools. +It reflects multiple design variants, grouping of source files into file sets or linking testbenches to +components or subsystems in a design.

  • +
  • Simulation model: HDL sources interpreted as programming languages by simulators, which can +generate interpeted or executable artifacts.

  • +
+
+
Module

The Python Tutorial » Modules ➚ are files containing Python statements and definitions +(variables, functions, clases,…). +The file name is the module name with the suffix .py appended.

+

Within f4pga, user-defined modules allow extending the built-in flows and +steps to achieve custom and/or complex tasks.

+
+
Project

A set of HDL sources, constraints and other assets used in a hardware design or set of +designs.

+
+
Resolution

Relations between f4pga steps, dependencies and artifacts +can get complex easily. +On top of computing the topological sorting, f4pga checks the existence of the assets, and supports +displaying the status.

+
+
Step

Within f4pga, a step is a unit of execution, which is characterized by a set of +dependencies and a set of artifacts, +and it is composable in a flow. +Steps might wrap a single or multiple tools.

+_images/step.png +
+
Target

Within f4pga, flows can have multiple leaf steps, producing different results off some +shared previous steps. +The target of a flow specifies which steps to execute in a run.

+
+
Tool
    +
  • A software application available as a CLI entrypoint, a shared library or an (interpreted) script.

  • +
  • Within f4pga, a tool is a Python abstraction that wraps a software application:

  • +
+_images/tool.png +
+
Toolchain

Toolchain ➚ is a generic term used to refer to a set of programming tools used +consecutively to perform a complex software development task.

+
+
+
+ + +
+
+
+
+
+ + + + + + \ No newline at end of file diff --git a/how.html b/how.html new file mode 100644 index 000000000..16b385ec5 --- /dev/null +++ b/how.html @@ -0,0 +1,563 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + How it works — F4PGA documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

How it works

+

To understand how F4PGA works, it is best to start with an overview of the general EDA tooling ecosystem and then +proceed to see what the F4PGA project consists of. +For both ASIC- and FPGA-oriented EDA tooling, there are three major areas that the workflows need to cover: description, +frontend and backend.

+_images/EDA.svg

Hardware description languages are either established (such as Verilog and VHDL ➚) or +emerging software-inspired paradigms like +Chisel ➚, +SpinalHDL ➚, +Migen ➚, or +Amaranth ➚. +Since early 2000s, free and open source tools allow simulating HDLs. +However, for several decades the major problem lay in the frontend and backend, where there was no established +standard vendor-neutral tooling that would cover all the necessary components for an end-to-end flow. +This pertains both to ASIC and FPGA workflows. +Although F4PGA focuses on the latter, some parts of F4PGA will also be useful in the former.

+

To achieve F4PGA’s goal of a complete FOSS FPGA toolchain, a number of tools and projects are necessary to provide all +the needed components of an end-to-end flow. +The F4PGA toolchains consist of logic synthesis and implementation tools, as well as chip documentation projects for +chips of various vendors. +Thus, F4PGA serves as an umbrella project for several activities.

+_images/parts.svg

The central resources are the so-called FPGA “architecture definitions” (i.e. documentation of how specific FPGAs work +internally) and the “interchange schema” (for logical and physical netlists). +Those definitions serve as input to frontend and backend tools, such as +Yosys ➚, +nextpnr ➚ and Verilog to Routing ➚. +They are created within separate collaborating projects targeting different FPGAs:

+ +

More information can be found at F4PGA Architecture Definitions ➚ and FPGA Interchange ➚.

+

To prepare a working bitstream for a particular FPGA chip, the toolchain goes through the following stages:

+
    +
  • A description of the FPGA chip is created with the information from the relevant bitstream documentation +project. +This part is done within the F4PGA Architecture Definitions ➚. +The project prepares information about the timings and resources available in the chip needed at the implementation +stage, as well as techmaps for the synthesis tools.

    +
    +

    Note

    +

    This stage is typically pre-built and installed as assets. +However, developers contributing to the bitstream documentation might build it.

    +
    +
  • +
  • Then, logic synthesis is carried out in the Yosys ➚ framework, which expresses the +user-provided hardware description by means of the block and connection types available in the chosen chip.

  • +
  • The next step is implementation. +Placement and routing tools put individual blocks from the synthesis description in specific chip locations and create +paths between them. +To do that, F4PGA uses either nextpnr ➚ or Verilog to Routing ➚.

  • +
  • Finally, the design properties are translated into a set of features available in the given FPGA chip. +These features are saved in the FASM format ➚, which is developed as part of F4PGA. +The FASM file is then translated to a bitstream, using the information from the bitstream documentation projects.

  • +
+
+ + +
+
+
+
+
+ + + + + + \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 000000000..c4c88782e --- /dev/null +++ b/index.html @@ -0,0 +1,695 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + FOSS Flows For FPGA — F4PGA documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

FOSS Flows For FPGA

+

F4PGA ➚, which is a Workgroup under the CHIPS Alliance ➚, is an +Open Source solution for Hardware Description Language (HDL) to Bitstream FPGA synthesis, currently targeting +Xilinx’s 7-Series, QuickLogic’s EOS-S3, and Lattice’ iCE40 and ECP5 devices. +Think of it as the GCC of FPGAs. +The project aims to design tools that are highly extendable and multiplatform.

+_images/hero.svg

The elements of the project include (but are not limited to):

+ +
+

Table of Contents

+ + + + + +
+

Appendix

+ +
+
+
+ + +
+
+
+
+
+ + + + + + \ No newline at end of file diff --git a/objects.inv b/objects.inv new file mode 100644 index 0000000000000000000000000000000000000000..97e336f3c4107e143a78557b93dd92483ae2d175 GIT binary patch literal 1154 zcmV-|1bzD>AX9K?X>NERX>N99Zgg*Qc_4OWa&u{KZXhxWBOp+6Z)#;@bUGkLG*CxD z3L_v^WpZ8b#rNMXCQiPX<{x4c-pO3&2Hm15Wedv2qY+W4{A_gPr4-z>&=)neY2%NRh+wwK9B1b3?Q#GQ(6&(qBkfNv)|m z{=7GJbz!aPB}tRT{aqA{=6eKV@z;D@(3mz+e%NiyMCh}t( zTJthWclm9-x{d-?@+}7U{q{Zv_Ny#d6$xyss1LSQ@(&hwRyIt_s*T`Jj!dz`zUKLC-SgYqGV@ws2JAx zr5GSz$qw$`pnCXCn&}d!9#p)=%$fSL;YRM&H!??t*D1=NxWrg;9MbHy9;@}_753pp=#8jtd)eL=u8i=4Po z4y%z4`SL|EL2LGoMh`)qVHzmauLW27ybStL1IK|t184I*-FlI1M7Tl~qBbC5!9rKmQ*qhN6`UE_cY?UbJMq$*6TGu~BG*Q!IR%Ve zopT4`C$hoqbWXQ9&|T;`Z*U>|v7aI{bE#)XsgEbObzIqnGo;RtBK~*#H-Wo6u5zIF z)_##N1f;P~PYNYf1qC>8A!~(3(iwYxH_ghHL$|^O(_!ej*2R>Ydfe483+R8ti zkN*&7E^&_*GMd7$rf)Ae+&NlRW2^h2(5Gd_-o-aZrI0}pDCj38lA_qc{r$3Gwpp>Q zbn*2Axn$e6Zf1SY|I8`vMQ`x`m4v5Mare=5!*agkIkEh>50^=}Z|bu$M6n0^_XE-G zZW-_}r9U;1)YDxI!=&$oCl}oBj>)Q-z3OCE zbG<^ee0Y2$OZSK@r6NmPso}9XQNWsG+B^Ivqbp^e_Xo7~(d^;g1?=%584GUE!oj+S zCQh*(gU%$Mc9^3TLv4n6NEm_y6o}!GG@~ltPYG!2-VXGyZ669p!L*ZX(9$8>rjf43 zUju_1_yO1|h|o?t>J!TkT5!lOrU}1PQkpEgd0wsvY#Fa)nPCe-PCR5C0`B>)gdb=g UdGWNl|DZr_6r`X03(5yD17*u7NB{r; literal 0 HcmV?d00001 diff --git a/references.html b/references.html new file mode 100644 index 000000000..1ec0dbf35 --- /dev/null +++ b/references.html @@ -0,0 +1,592 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + References — F4PGA documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

References

+
+
+
+[R1] +

Vikram Adve, Chris Lattner, and LLVM Developer Group. LLVM Project, a collection of modular and reusable compiler and toolchain technologies. 2003. URL: https://www.llvm.org/.

+
+
+[R2] +

Tim Ansell and Mehdi Saligane. The Missing Pieces of Open Design Enablement: A Recent History of Google Efforts : Invited Paper. In 2020 IEEE/ACM International Conference On Computer Aided Design (ICCAD), 1–8. 2020. URL: https://dl.acm.org/doi/abs/10.1145/3400302.3415736.

+
+
+[R3] +

Georg Brandl, Takeshi KOMIYA, and contributors. Sphinx, Python Documentation Generator. 2007. URL: https://www.sphinx-doc.org.

+
+
+[R4] +

Tony Bybell and contributors. GTKWave: a is a fully featured GTK+ based wave viewer for Unix, Win32, and Mac OSX. 1998. URL: https://github.com/gtkwave/gtkwave.

+
+
+[R5] +

Aliaksei Chapyzhenka and contributors. Wavedrom, digital timing diagram rendering engine. 2014. URL: https://github.com/wavedrom/wavedrom.

+
+
+[R6] +

Alain Dargelas and Henner Zeller. Universal Hardware Data Model. In Workshop on Open-Source EDA Technology 2020 (WOSET). 10 2020. URL: https://woset-workshop.github.io/PDFs/2020/a10.pdf.

+
+
+[R7] +

Alain Dargelas, Henner Zeller, and contributors. Surelog, SystemVerilog 2017 Pre-processor, Parser, Elaborator, UHDM Compiler. 2019. URL: https://github.com/alainmarcel/Surelog/.

+
+
+[R8] +

David Fang, Henner Zeller, and contributors. Verible, a suite of SystemVerilog developer tools, including a parser, style-linter, and formatter. 2019. URL: https://chipsalliance.github.io/verible/.

+
+
+[R9] +

gatecat and contributors. nextpnr: portable FPGA place and route tool. URL: https://github.com/YosysHQ/nextpnr.

+
+
+[R10] +

Tristan Gingold and contributors. GHDL: open-source analyzer, compiler, simulator and (experimental) synthesizer for VHDL. Sep 2003. URL: https://github.com/ghdl/ghdl.

+
+
+[R11] +

Tristan Gingold and contributors. ghdl-yosys-plugin: VHDL synthesis (based on ghdl and yosys). 2017. URL: https://github.com/ghdl/ghdl-yosys-plugin.

+
+
+[R12] +

Andrew B. Kahng. Open-Source EDA: If We Build It, Who Will Come? In 2020 IFIP/IEEE 28th International Conference on Very Large Scale Integration (VLSI-SOC), 1–6. 2020. doi:10.1109/VLSI-SOC46417.2020.9344073.

+
+
+[R13] +

Kevin E. Murray, Mohamed A. Elgammal, Vaughn Betz, Tim Ansell, Keith Rothman, and Alessandro Comodi. SymbiFlow and VPR: An Open-Source Design Flow for Commercial and Novel FPGAs. IEEE Micro, 40(4):49–57, 2020. doi:10.1109/MM.2020.2998435.

+
+
+[R14] +

Kevin E. Murray, Oleg Petelin, Sheng Zhong, Jia Min Wang, Mohamed Eldafrawy, Jean-Philippe Legault, Eugene Sha, Aaron G. Graham, Jean Wu, Matthew J. P. Walker, Hanqing Zeng, Panagiotis Patros, Jason Luu, Kenneth B. Kent, and Vaughn Betz. VTR 8: High-Performance CAD and Customizable FPGA Architecture Modelling. ACM Trans. Reconfigurable Technol. Syst., May 2020. URL: https://doi.org/10.1145/3388617, doi:10.1145/3388617.

+
+
+[R15] +

Austin Rovinski, Tutu Ajayi, Minsoo Kim, Guanru Wang, and Mehdi Saligane. Bridging Academic Open-Source EDA to Real-World Usability. In 2020 IEEE/ACM International Conference On Computer Aided Design (ICCAD), 1–7. 2020. URL: https://dl.acm.org/doi/10.1145/3400302.3415734.

+
+
+[R16] +

Wilson Snyder and contributors. Verilator, FOSS tool which converts Verilog to a cycle-accurate behavioral model in C++ or SystemC. 2003. URL: https://www.veripool.org/verilator/.

+
+
+[R17] +

Richard Stallman and contributors. GCC, the GNU Compiler Collection. May 1987. URL: https://gcc.gnu.org/.

+
+
+[R18] +

Richard Stallman and GNU Project. GDB: The GNU Project Debugger. 1986. URL: https://www.gnu.org/software/gdb/.

+
+
+[R19] +

Kevin Thibedeau. Symbolator, a component diagramming tool for VHDL and Verilog. URL: https://kevinpt.github.io/symbolator.

+
+
+[R20] +

Stephen Williams and contributors. Icarus Verilog, a Verilog simulation and synthesis tool. URL: http://iverilog.icarus.com/.

+
+
+[R21] +

Claire Wolf and contributors. SymbiYosys: front-end for Yosys-based formal verification flows. URL: https://github.com/YosysHQ/SymbiYosys.

+
+
+[R22] +

Claire Wolf and contributors. Yosys Open SYnthesis Suite. URL: https://github.com/YosysHQ/yosys.

+
+
+[R23] +

Clifford Wolf and Johann Glaser. A Free Verilog Synthesis Suite. In Proceedings of Austrochip 2013. 2013. URL: https://yosyshq.net/yosys/.

+
+
+
+
+ + +
+
+
+
+
+ + + + + + \ No newline at end of file diff --git a/search.html b/search.html new file mode 100644 index 000000000..ab86f7814 --- /dev/null +++ b/search.html @@ -0,0 +1,494 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Search — F4PGA documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +

Search

+
+ +

+ Please activate JavaScript to enable the search + functionality. +

+
+ +
+ +
+ +
+
+
+
+
+ + + + + + \ No newline at end of file diff --git a/searchindex.js b/searchindex.js new file mode 100644 index 000000000..540c948d8 --- /dev/null +++ b/searchindex.js @@ -0,0 +1 @@ +Search.setIndex({"docnames": ["community", "development/building-docs", "development/changes", "development/venv", "f4pga/Deprecated", "f4pga/DevNotes", "f4pga/Usage", "f4pga/index", "f4pga/modules/fasm", "f4pga/modules/generic_script_wrapper", "f4pga/modules/index", "f4pga/modules/io_rename", "f4pga/modules/mkdirs", "f4pga/modules/pack", "f4pga/modules/place", "f4pga/modules/place_constraints", "f4pga/modules/route", "f4pga/modules/synth", "flows/bitstream", "flows/f4pga", "flows/index", "flows/pnr", "flows/synthesis", "getting-started", "glossary", "how", "index", "references", "status"], "filenames": ["community.rst", "development/building-docs.rst", "development/changes.rst", "development/venv.rst", "f4pga/Deprecated.rst", "f4pga/DevNotes.md", "f4pga/Usage.md", "f4pga/index.rst", "f4pga/modules/fasm.md", "f4pga/modules/generic_script_wrapper.md", "f4pga/modules/index.md", "f4pga/modules/io_rename.md", "f4pga/modules/mkdirs.md", "f4pga/modules/pack.md", "f4pga/modules/place.md", "f4pga/modules/place_constraints.md", "f4pga/modules/route.md", "f4pga/modules/synth.md", "flows/bitstream.rst", "flows/f4pga.rst", "flows/index.rst", "flows/pnr.rst", "flows/synthesis.rst", "getting-started.rst", "glossary.rst", "how.rst", "index.rst", "references.rst", "status.rst"], "titles": ["Community", "Building the documentation", "Changes", "Packages in virtual environment", "Understanding the (deprecated) flow", "Developer\u2019s notes", "Usage", "Overview", "fasm", "generic_script_wrapper", "Modules", "io_rename", "mkdirs", "pack", "place", "place_constraints", "route", "synth", "Bitstream translation", "In F4PGA", "Introduction", "Place & Route", "Synthesis", "Getting started", "Glossary", "How it works", "FOSS Flows For FPGA", "References", "Supported Architectures"], "terms": {"foss": [0, 24, 25, 27], "flow": [0, 2, 5, 7, 9, 10, 12, 17, 19, 20, 21, 23, 24, 25, 27], "For": [0, 1, 4, 5, 6, 8, 10, 17, 22, 23, 24, 25], "fpga": [0, 4, 6, 7, 8, 18, 19, 20, 21, 22, 23, 24, 25, 27, 28], "f4pga": [0, 2, 4, 5, 7, 9, 10, 18, 20, 23, 24, 25, 28], "project": [0, 4, 7, 9, 18, 19, 23, 24, 25, 26, 27, 28], "i": [0, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27], "workgroup": [0, 24, 26], "under": [0, 6, 10, 13, 14, 15, 16, 24, 26], "chip": [0, 4, 6, 18, 19, 21, 22, 23, 24, 25, 26], "allianc": [0, 24, 26], "The": [0, 2, 4, 5, 6, 7, 8, 10, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27], "consist": [0, 2, 4, 5, 19, 21, 22, 25], "member": 0, "from": [0, 2, 4, 5, 6, 7, 9, 10, 19, 22, 23, 24, 25], "differ": [0, 4, 6, 10, 11, 18, 19, 20, 21, 22, 23, 24, 25, 26], "background": [0, 23], "includ": [0, 2, 6, 10, 23, 24, 26, 27], "vendor": [0, 19, 22, 23, 24, 25], "xilinx": [0, 2, 6, 19, 25, 26, 28], "quicklog": [0, 2, 5, 6, 8, 26, 28], "industri": 0, "user": [0, 4, 5, 7, 9, 10, 19, 21, 23, 24, 25], "googl": [0, 27], "antmicro": 0, "academia": 0, "univers": [0, 19, 22, 23, 27], "toronto": 0, "who": [0, 5, 23, 27], "collabor": [0, 25], "build": [0, 2, 4, 10, 19, 23, 25, 26, 27], "more": [0, 1, 4, 5, 10, 20, 21, 22, 23, 25, 26, 28], "open": [0, 4, 19, 25, 26, 27], "softwar": [0, 7, 24, 25, 27], "driven": [0, 22], "ecosystem": [0, 6, 7, 23, 25], "ip": 0, "tool": [0, 4, 5, 6, 7, 19, 20, 21, 24, 25, 26, 27], "workflow": [0, 23, 25], "drive": 0, "adopt": [0, 21, 26], "exist": [0, 6, 7, 10, 23, 24], "new": [0, 4, 6, 23], "us": [0, 2, 3, 4, 5, 8, 9, 10, 17, 18, 19, 20, 21, 22, 23, 24, 25], "case": [0, 6, 10, 19, 24], "elimin": 0, "barrier": 0, "entri": [0, 5, 10, 11], "twitter": 0, "slack": 0, "chipsalli": [0, 7, 23, 27], "com": [0, 27], "To": [0, 3, 4, 6, 9, 19, 23, 25], "regist": [0, 22, 28], "workspac": 0, "follow": [0, 4, 6, 8, 10, 17, 19, 23, 25], "invit": [0, 23, 27], "irc": 0, "libera": 0, "chat": 0, "mail": 0, "list": [0, 4, 6, 10, 17, 23], "org": [0, 19, 27, 28], "g": [0, 21, 23, 27], "wg": 0, "github": [0, 23, 27], "ar": [0, 2, 4, 5, 6, 7, 9, 10, 17, 19, 22, 23, 24, 25, 26], "you": [0, 3, 4, 6, 9, 10, 19, 23, 28], "interest": 0, "help": [0, 1, 4, 5, 28], "thi": [0, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 21, 22, 23, 24, 25], "move": [0, 2, 15, 23], "forward": 0, "we": [0, 6, 27], "welcom": 0, "your": [0, 3, 4, 6, 10, 23], "code": [0, 5, 6], "avail": [0, 7, 9, 21, 22, 23, 24, 25], "while": [0, 12], "html": [0, 1], "document": [0, 5, 7, 10, 18, 23, 25, 26, 27], "read": [0, 5, 6, 10, 17, 23], "doc": [0, 8, 17, 27], "There": [0, 6, 19, 22, 23], "multipl": [0, 5, 6, 7, 19, 23, 24], "area": [0, 25], "technologi": [0, 26, 27], "need": [0, 4, 5, 10, 18, 19, 21, 22, 24, 25], "reach": 0, "out": [0, 4, 25], "u": [0, 19, 28], "re": [0, 6], "sure": [0, 10], "find": [0, 21, 23, 26], "someth": [0, 4], "do": [0, 6, 10, 25, 28], "know": [0, 6], "python": [0, 2, 4, 5, 6, 7, 10, 23, 24, 27], "almost": 0, "all": [0, 4, 5, 7, 9, 10, 11, 19, 20, 21, 23, 25], "script": [0, 2, 4, 5, 6, 7, 9, 10, 17, 19, 23, 24], "written": [0, 5, 19, 22], "c": [0, 10, 19, 23, 27], "vpr": [0, 2, 4, 6, 8, 13, 14, 15, 16, 23, 26, 27], "nextpnr": [0, 23, 25, 26, 27], "librari": [0, 7, 22, 24, 26], "tcl": [0, 2, 17, 19], "eda": [0, 23, 24, 25, 27], "system": [0, 3, 6, 10, 15, 23], "verilog": [0, 4, 6, 10, 17, 19, 22, 24, 25, 26, 27], "vhdl": [0, 24, 25, 27], "chisel": [0, 24, 25], "migen": [0, 24, 25], "amaranth": [0, 24, 25], "simul": [0, 22, 24, 25, 27], "model": [0, 19, 22, 24, 27], "hardwar": [0, 20, 24, 25, 26, 27], "descript": [0, 4, 6, 9, 10, 18, 20, 22, 24, 25, 26], "languag": [0, 20, 24, 25, 26], "hdl": [0, 4, 6, 7, 19, 20, 23, 24, 25, 26], "xml": [0, 6, 19, 26], "most": [0, 4, 5, 10, 18, 19, 21, 22, 23, 24, 28], "file": [0, 2, 4, 5, 9, 10, 17, 18, 19, 20, 21, 22, 23, 24, 25], "format": [0, 6, 18, 19, 20, 24, 25, 26], "english": 0, "docker": [0, 23], "podman": [0, 23], "make": [0, 1, 5, 7, 10, 21, 23], "easier": [0, 5], "set": [0, 2, 5, 6, 9, 10, 23, 24, 25], "up": [0, 5, 6, 19, 22, 23], "have": [0, 5, 6, 10, 21, 22, 24], "time": [0, 4, 5, 6, 19, 21, 25, 26, 27], "task": [0, 18, 21, 23, 24], "activ": [1, 25], "virtual": [1, 6, 26], "environ": [1, 6, 23, 26], "instal": [1, 2, 3, 6, 7, 25, 26], "depend": [1, 9, 10, 11, 17, 20, 23, 24], "env": [1, 19], "enter": 1, "whole": [1, 7, 19, 20, 21, 22, 23, 24], "option": [1, 4, 8, 9, 10, 11, 17, 23], "see": [1, 6, 19, 23, 24, 25, 28], "arch": [2, 23], "def": [2, 23], "tarbal": [2, 23], "were": [2, 5, 6, 19], "yosi": [2, 4, 6, 17, 23, 25, 26, 27], "conv": [2, 17], "synth": [2, 6, 8, 10, 19], "combin": [2, 10, 19, 23], "singl": [2, 24], "pipelin": [2, 23], "exampl": [2, 4, 6, 10, 19, 22, 23, 26], "e3a23897c2692d54a3abb57f5199cded6852da60": 2, "cli": [2, 5, 6, 7, 10, 23, 24, 26], "6b4976a028e8a8a3b78711b6471655d3bfe58ed7": 2, "architectur": [2, 6, 15, 19, 22, 23, 25, 26, 27], "definit": [2, 4, 5, 9, 10, 12, 17, 19, 22, 23, 24, 25, 26], "20220907": 2, "210059": 2, "66a976d": 2, "xc7": [2, 5, 6, 23], "symbiflow": [2, 5, 23, 26, 27], "tar": 2, "xz": 2, "xc7a50t_test": [2, 4], "eo": [2, 6, 26, 28], "s3": [2, 6, 26, 28], "ql": 2, "s3_wlcsp": 2, "wrapper": [2, 4, 6, 7, 24], "instead": [2, 4, 6, 9, 10], "additional_vpr_opt": 2, "provid": [2, 4, 5, 7, 9, 10, 11, 19, 20, 21, 23, 24, 25], "addit": [2, 6, 17, 19, 22, 23], "argument": [2, 4, 6, 9], "deprec": [2, 6, 15, 26], "symbiflow_": [2, 4], "entrypoint": [2, 4, 7, 24], "fpga_fam": 2, "befor": [2, 10, 19], "requir": [2, 5, 6, 9, 10, 11, 17, 19, 23, 24], "anymor": 2, "sourc": [2, 4, 6, 7, 10, 17, 19, 20, 23, 24, 25, 26, 27], "relat": [2, 3, 4, 19, 24], "submodul": 2, "954a21090b14808b50d259b552e353b69f0ddae0": 2, "2d8d85706ecc7a72e17078ea903e2751022825da": 2, "20220818": 2, "143856": 2, "24e8f73": 2, "now": [2, 4, 6], "usabl": [2, 27], "which": [2, 3, 4, 5, 6, 9, 10, 19, 22, 23, 24, 25, 26, 27], "allow": [2, 6, 9, 10, 17, 21, 22, 24, 25], "bootstrap": [2, 23], "minim": [2, 23], "conda": [2, 3, 6, 26], "default": [2, 4, 6, 9, 10, 19], "f4pga_share_dir": [2, 23], "path": [2, 4, 5, 6, 9, 10, 12, 17, 18, 21, 23, 25], "doe": [2, 6, 10, 21], "subdir": [2, 23], "f4pga_bin_dir": 2, "vprpath": 2, "78b5e8f2845985be0c63631324adc33756de642d": 2, "e9a520a17a00cfd268f8ee549340aaa297b63da5": 2, "20220803": 2, "160711": 2, "df6d9e5": 2, "support": [2, 6, 10, 11, 15, 19, 22, 23, 24, 26], "": [2, 4, 7, 8, 9, 17, 19, 20, 21, 25, 26, 28], "devic": [2, 6, 19, 21, 23, 24, 26, 28], "524dfb6e746b632fdeddc9d06d8a002a3c7a3118": 2, "c342fc6ff1684f3dc6072713730ac9fc574ab2f3": 2, "20220729": 2, "181657": 2, "7833050": 2, "amd": [2, 6], "f4pga_install_dir": [2, 23], "share": [2, 5, 6, 7, 10, 24], "52bc71a0506cad647951a16fb214ea82934bed0a": 2, "df55ee75e4a1da978ffa5f7385bed47faf255661": 2, "base": [2, 7, 21, 23, 27], "packag": [2, 5, 7, 10, 23, 24, 26], "ha": [2, 4, 5, 6, 10, 19, 20, 22], "name": [2, 4, 5, 6, 9, 10, 11, 12, 19, 23, 24], "bin": [2, 3, 10], "modifi": [2, 5, 6, 19], "AND": 2, "homogen": 2, "d8134c926167a8092d5b392110ce2932bdae8f54": 2, "8c411eb74e4bb23d1ec243a1515b9bfb48e2cd83": 2, "variabl": [2, 8, 9, 17, 23, 24], "renam": [2, 6, 11], "f4pga_env_bin": 2, "f4pga_env_shar": 2, "pin": [2, 4, 23, 24], "3e8a003cabec84f7841571a6929fe2623e702e96": 2, "27eca4f35db3c4e04ce255ab319611774de9b9a1": 2, "20220721": 2, "204939": 2, "38358c4": 2, "qlf": [2, 28], "fc5d8da": 2, "gz": 2, "first": [2, 4, 6, 19, 21], "releas": [2, 23], "being": [2, 5, 10, 19, 24], "track": [2, 6, 23, 24], "6b0e7b8a75fb8715bb081cb7f24948c3aec0df31": 2, "39da9c9f17513ea0c3dd12be655a3684e5b77519": 2, "20220714": 2, "173445": 2, "f7afc12": 2, "lattic": [2, 19, 25, 26, 28], "ice40": [2, 19, 23, 25, 26, 28], "ecp5": [2, 23, 25, 26, 28], "nx": 2, "can": [3, 4, 5, 6, 9, 10, 17, 19, 20, 22, 23, 24, 25], "both": [3, 10, 19, 23, 25], "pip": 3, "note": [3, 4, 7, 10, 24, 26], "python3": [3, 6, 10], "pip3": 3, "insid": [3, 5, 19], "wherea": 3, "invoc": 3, "directli": [3, 10, 19], "instanc": [3, 5, 6, 10, 11], "typic": [3, 6, 10, 21, 23, 24, 25], "locat": [3, 4, 5, 6, 21, 22, 25], "usr": 3, "section": [4, 6, 10, 17, 19, 20], "describ": [4, 6, 9, 10, 19, 20, 22, 24], "usag": [4, 7, 26], "It": [4, 5, 6, 7, 10, 11, 18, 19, 20, 23, 24, 27], "backward": 4, "compat": [4, 19], "so": [4, 6, 22, 23, 25], "old": 4, "keep": [4, 5], "howev": [4, 6, 10, 18, 20, 21, 22, 23, 24, 25], "recommend": [4, 6, 19, 26], "approach": [4, 5], "explain": [4, 19, 23], "overview": [4, 25, 26], "valuabl": 4, "inform": [4, 5, 6, 8, 10, 17, 21, 25, 26], "how": [4, 9, 17, 19, 23, 26], "each": [4, 5, 6, 9, 10, 12, 21, 23], "command": [4, 7, 9, 19, 23, 24], "compil": [4, 19, 27], "design": [4, 6, 7, 16, 17, 19, 20, 21, 22, 23, 24, 25, 27], "work": [4, 5, 6, 7, 9, 10, 21, 23, 24, 26], "especi": 4, "debug": [4, 23], "method": [4, 5, 10], "other": [4, 6, 10, 19, 24, 26], "than": [4, 10], "makefil": [4, 23], "bash": [4, 7], "run": [4, 5, 6, 17, 23, 24], "step": [4, 18, 19, 20, 21, 22, 23, 24, 25], "full": [4, 5, 6, 10], "well": [4, 5, 6, 10, 20, 23, 25], "give": [4, 6, 19], "common": [4, 5, 8, 17, 19, 26], "flag": [4, 6, 9], "those": [4, 5, 6, 10, 21, 23, 25], "If": [4, 6, 9, 10, 17, 23, 27], "would": [4, 6, 10, 25], "like": [4, 6, 19, 22, 24, 25], "detail": [4, 5, 8, 17, 23], "break": 4, "down": 4, "take": [4, 5, 6, 10, 11, 19, 21, 23], "look": [4, 5, 6, 10, 19, 22, 23], "creat": [4, 6, 12, 19, 20, 25], "implement": [4, 10, 19, 20, 21, 22, 25], "dump": 4, "directori": [4, 6, 9, 10, 12, 17, 19], "toolchain": [4, 5, 6, 7, 20, 24, 25, 26, 27], "separ": [4, 6, 19, 22, 25], "might": [4, 5, 6, 10, 11, 23, 24, 25], "consid": [4, 6], "synthes": [4, 19, 21, 22, 27], "t": [4, 5, 6, 10], "defin": [4, 5, 6, 9, 10, 17, 24, 26], "top": [4, 6, 19, 24], "level": [4, 6, 22], "modul": [4, 5, 7, 8, 9, 11, 12, 17, 19, 24, 26], "v": [4, 6], "A": [4, 6, 9, 10, 17, 19, 24, 25, 27], "d": [4, 6, 19, 23], "famili": [4, 19, 23, 28], "e": [4, 19, 21, 22, 23, 25, 27], "artix7": 4, "zynq7": 4, "p": [4, 6, 19, 27], "part": [4, 5, 6, 10, 22, 25], "number": [4, 6, 10, 17, 25], "xc7a35tcsg324": [4, 6], "1": [4, 6, 9, 19, 26, 27], "x": [4, 6, 10, 23, 25, 28], "xdc": [4, 6], "an": [4, 6, 9, 10, 11, 15, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27], "contain": [4, 5, 6, 7, 9, 10, 17, 18, 19, 21, 22, 24, 26], "two": [4, 6, 9, 10, 19, 23], "below": [4, 6, 19, 21, 23, 24], "built": [4, 10, 23, 24, 25], "basys3": 4, "board": [4, 23, 26], "come": [4, 9, 10, 27], "xc7a35tcpg236": 4, "top_exampl": 4, "design_constraint": 4, "carri": [4, 21, 25], "eblif": [4, 6, 10, 17, 19], "few": [4, 20, 22], "netlist": [4, 6, 19, 22, 25], "gate": [4, 22], "log": [4, 6, 19, 24], "its": [4, 5, 6, 10, 11, 12, 19, 22], "go": [4, 5, 6, 10, 23], "net": [4, 6, 21, 27], "bit": [4, 6, 19], "specifi": [4, 6, 10, 11, 12, 17, 18, 21, 24], "switch_top": 4, "dure": [4, 6, 9, 10, 19], "etc": [4, 5, 10, 19, 21, 23, 24], "three": [4, 11, 23, 25], "intern": [4, 19, 25, 27], "handl": [4, 6, 23], "versatil": [4, 19], "sever": [4, 19, 23, 25], "report": [4, 6], "variou": [4, 6, 19, 21, 23, 25, 26], "fabric": 4, "xc7a100t_test": 4, "sdc": [4, 6], "xc7a35t_test": 4, "placement": [4, 15, 21, 25], "element": [4, 21, 26], "util": [4, 5, 7, 22, 23, 24], "pcf": [4, 6], "n": [4, 6], "produc": [4, 5, 6, 7, 10, 17, 21, 24], "post": 4, "symbiflow_rout": 4, "same": [4, 6, 19, 24], "respect": [4, 10, 19], "symbiflow_write_fasm": 4, "fasm": [4, 6, 10, 19, 25, 26], "second": [4, 19], "f": [4, 6], "write_fasm": 4, "b": [4, 10, 23, 27], "write": [4, 5, 6, 10, 19], "notic": [4, 22], "specif": [4, 5, 6, 8, 10, 17, 19, 22, 24, 25], "lowercas": [4, 24], "capit": 4, "also": [4, 5, 6, 9, 10, 19, 23, 25], "write_bitstream": 4, "chang": [4, 5, 6, 7, 10, 11, 19, 24, 26], "output": [4, 5, 6, 8, 9, 10, 11, 17, 18, 21, 26], "openfpgaload": [4, 26], "too": 4, "my_module_top": 4, "my": 4, "ofl_board": 4, "onli": [4, 5, 6, 8, 10, 15, 19, 22], "These": [5, 6, 25], "thei": [5, 6, 9, 10, 17, 19, 20, 22, 23, 25], "shouldn": 5, "treat": [5, 6, 10], "blown": 5, "accur": [5, 27], "rather": [5, 10], "resourc": [5, 18, 19, 20, 21, 22, 25], "want": [5, 6, 23, 28], "get": [5, 9, 10, 19, 24, 26], "involv": 5, "regularli": 5, "date": 5, "about": [5, 6, 8, 10, 17, 19, 21, 23, 25], "refer": [5, 6, 8, 9, 10, 17, 19, 23, 24, 26], "pydoc": 5, "__init__": [5, 10], "py": [5, 24], "logic": [5, 19, 21, 22, 24, 25, 28], "point": [5, 10, 19, 21, 23], "argpars": 5, "bore": 5, "interfac": [5, 7, 23, 24, 26], "cach": [5, 24], "main": [5, 6, 23, 24], "flow_config": 5, "access": [5, 10, 11], "configur": [5, 9, 17, 18, 19, 24], "module_inspector": 5, "inspect": 5, "o": [5, 6, 7, 10, 19], "module_runn": 5, "load": [5, 9, 26], "part_db": 5, "json": [5, 6, 10, 17, 24], "map": [5, 11, 17, 26], "platform": [5, 17, 19, 20, 22, 28], "setup": [5, 8, 17], "stage": [5, 6, 9, 10, 17, 21, 25], "class": 5, "relev": [5, 8, 25], "represent": [5, 19], "loadabl": 5, "through": [5, 6, 7, 10, 23, 24, 25], "codebas": [5, 7], "often": [5, 19, 22], "referenc": [5, 6, 10], "sfbuild": 5, "similarli": [5, 6, 10], "call": [5, 6, 19, 22, 25], "due": [5, 6, 17, 22, 23], "back": 5, "when": [5, 6, 9, 10, 19, 24], "wa": [5, 6, 19, 25], "regard": [5, 10], "done": [5, 6, 23, 25], "_resolve_depend": 5, "basic": [5, 10, 20, 22, 28], "perform": [5, 6, 19, 22, 24, 26, 27, 28], "df": 5, "node": 5, "link": [5, 24], "symbol": [5, 6, 10, 27], "input": [5, 6, 9, 10, 11, 17, 19, 20, 22, 25], "queri": 5, "importantli": 5, "check": [5, 6, 21, 23, 24], "whether": [5, 6], "satisfi": [5, 15], "actual": [5, 10, 19], "_build_dep": 5, "procedur": [5, 17, 20, 23], "similar": [5, 20], "invok": 5, "compar": 5, "adler32": 5, "hash": [5, 6, 23, 24], "associ": [5, 9], "reason": [5, 10], "mai": [5, 6, 10, 17, 21, 22, 23, 27], "consum": 5, "ie": [5, 6, 11], "particular": [5, 19, 25], "necessari": [5, 6, 10, 19, 20, 25], "becaus": [5, 6, 19, 20, 22], "tri": [5, 10, 21], "avoid": [5, 10], "rebuild": [5, 6], "possibl": [5, 6, 20, 21], "statu": [5, 6, 24], "unmodifi": 5, "individu": [5, 25], "f4cach": 5, "mostli": [5, 22], "expos": [5, 10], "some": [5, 6, 10, 19, 20, 22, 23, 24, 25], "data": [5, 6, 10, 24, 26, 27], "variable_nam": [5, 10], "syntax": [5, 10], "valu": [5, 9, 10, 12, 19, 26], "ctx": [5, 10], "namespac": [5, 10], "core": 5, "resolutionenvironemt": 5, "found": [5, 19, 25], "cmakelist": 5, "txt": 5, "clear": 5, "forc": [5, 19], "demand": [5, 6, 10, 17, 21, 22], "anoth": [5, 11, 19, 24], "redesign": [5, 24], "featur": [5, 6, 23, 25, 27, 28], "explicitli": [5, 6, 10], "otherwis": [5, 19], "unknown": 5, "comment": 5, "style": [5, 27], "extend": [5, 6, 24, 26], "metadata": [5, 19], "perhap": 5, "add": [5, 6, 28], "miss": [5, 6, 27], "target": [5, 8, 9, 10, 12, 17, 21, 23, 24, 25, 26], "suggest": [5, 7, 24], "gener": [5, 6, 7, 8, 9, 10, 17, 19, 21, 23, 24, 25, 26, 27], "cmake": 5, "could": 5, "lead": [5, 6], "possibli": [5, 6], "merg": 5, "one": [5, 6, 10, 18, 19, 21, 23], "3": [6, 10, 26], "should": [6, 8, 10, 17, 19, 23], "togeth": [6, 10, 19], "regardless": 6, "version": [6, 19, 23], "current": [6, 9, 10, 19, 26], "progress": [6, 7, 23, 24], "alreadi": [6, 10, 23], "bitstream": [6, 7, 19, 20, 25, 26], "unsur": 6, "got": 6, "right": 6, "content": [6, 24], "shown": [6, 24], "indic": 6, "after": [6, 9, 19, 21, 22], "complet": [6, 25], "stdout": [6, 9], "arty_35": 6, "highli": [6, 19, 26], "modular": [6, 27], "wrap": [6, 11, 24], "given": [6, 10, 11, 24, 25], "x7a50t": 6, "equival": [6, 22], "x7a35t": 6, "x7a100t": 6, "x7a200t": 6, "unsupport": 6, "develop": [6, 7, 23, 24, 25, 27], "purpos": 6, "k4n8": [6, 28], "own": [6, 10, 23], "bring": 6, "ani": [6, 10, 11, 19, 23], "overrid": [6, 26], "situat": [6, 20, 22], "where": [6, 25, 26], "confus": 6, "between": [6, 19, 21, 22, 24, 25, 26], "arbitrari": 6, "within": [6, 10, 17, 19, 24, 25], "unifi": 6, "either": [6, 7, 10, 25], "deriv": [6, 9, 10], "taken": [6, 22], "ask": 6, "execut": [6, 9, 17, 24], "order": [6, 17, 20, 22, 23], "modif": 6, "store": [6, 10, 19], "alwai": [6, 10, 19, 22], "0": [6, 19], "root": 6, "construct": [6, 10, 13, 14, 15, 16], "try": 6, "omit": 6, "receiv": 6, "strong": 6, "assumpt": 6, "remain": 6, "unchang": 6, "isn": 6, "determinist": 6, "true": [6, 9], "realli": [6, 10, 22], "nocach": 6, "empti": [6, 9, 17, 19], "said": 6, "resolv": [6, 9, 10], "meet": 6, "criteria": 6, "persist": 6, "storag": 6, "match": [6, 19, 20], "question": [6, 9, 10], "piec": [6, 19, 23, 27], "space": 6, "serial": 6, "In": [6, 10, 11, 18, 20, 21, 22, 23, 24, 26, 27], "paramet": [6, 10, 19, 21, 24], "mkdir": [6, 10], "product": [6, 10, 11, 23], "experiment": [6, 27], "remov": [6, 7, 9, 10, 11, 24], "favor": [6, 11], "Not": [6, 11], "won": [6, 10], "abl": [6, 10, 19, 20], "coupl": [6, 10], "here": [6, 10, 19], "obviou": [6, 10], "uniqu": 6, "doesn": [6, 10], "unlik": [6, 10], "explicit": [6, 10], "At": 6, "mandatori": [6, 9, 10], "constraint": [6, 15, 23, 24], "target_nam": 6, "platform_device_nam": 6, "let": 6, "default_part": 6, "counter": [6, 19], "arti": [6, 23], "synth_log": [6, 17], "pack_log": 6, "pack": [6, 10, 26], "default_target": [6, 10], "build_dir": 6, "constrain": 6, "synthesi": [6, 17, 20, 21, 25, 26, 27], "mean": [6, 9, 10, 22, 25], "unless": [6, 10], "helper": 6, "put": [6, 25], "xc7a50t": 6, "With": [6, 10], "default_platform": [6, 10], "skip": [6, 9, 10], "chosen": [6, 18, 19, 21, 22, 25], "altern": [6, 23], "pass": [6, 10, 11, 19, 24], "without": [6, 10, 23, 24], "dsourc": 6, "dxdc": 6, "dsynth_log": 6, "dpack_log": 6, "dbuild_dir": 6, "vtop": 6, "alongsid": 6, "conflict": 6, "identifi": 6, "express": [6, 19, 25], "prefix": [6, 10], "dot": 6, "notat": 6, "form": [6, 21, 22, 24], "charact": 6, "interpret": [6, 9, 10, 24], "string": [6, 8, 9, 10, 11, 17], "item1": 6, "item2": 6, "item3": 6, "key1": 6, "value1": 6, "key2": 6, "value2": 6, "key3": 6, "value3": 6, "dictionari": [6, 10], "nest": 6, "structur": [6, 10, 19, 26], "just": 6, "result": [6, 10, 18, 19, 21, 22, 24], "what": [6, 17, 20, 25], "abil": 6, "still": [6, 7, 10], "lack": 6, "descritpt": 6, "mk_build_dir": 6, "blif": 6, "hierarch": 6, "sequenti": 6, "fasm_extra": [6, 17], "synth_json": [6, 17], "snippet": [6, 10], "entir": [6, 9], "long": 6, "short": [6, 26], "verbos": 6, "control": 6, "2": [6, 26], "maximum": 6, "silent": 6, "suppress": 6, "print": 6, "increment": 6, "stageinfo": 6, "dep": 6, "dependency_nam": [6, 9], "pathexpr": 6, "val": 6, "value_nam": [6, 10], "valueexpr": 6, "request": [6, 10], "scan": 6, "r": [6, 19], "top_fasm_extra": 6, "io_plac": 6, "ioplac": 6, "place": [6, 10, 26, 27], "place_constraint": [6, 10], "preplac": 6, "rout": [6, 10, 18, 25, 26, 27, 28], "letter": 6, "box": 6, "whose": [6, 11], "next": [6, 20, 22, 25], "unresolv": 6, "present": [6, 10, 19, 21], "cannot": [6, 10, 23], "bad": 6, "sign": 6, "confirm": 6, "stai": 6, "earlier": 6, "sinc": [6, 19, 23, 24, 25], "last": [6, 9, 18, 19, 21, 26], "continu": [6, 7, 23], "success": [6, 17, 23], "fals": 6, "complex": [6, 10, 21, 22, 24], "scenario": 6, "fix": 6, "futur": [6, 10, 11, 23, 26], "rebuilt": 6, "colon": 6, "never": 6, "text": [6, 24], "sai": 6, "abov": [6, 17, 23], "been": [6, 21], "mark": 6, "caus": [6, 19], "bunch": [6, 22], "convent": [6, 9, 19], "along": [6, 23, 24], "ye": [6, 28], "synopsi": 6, "physic": [6, 19, 21, 22, 24, 25], "final": [6, 18, 19, 20, 21, 22, 25], "assembli": [6, 8, 26], "type": [6, 10, 19, 25], "sharedir": [6, 10], "noisywarn": [6, 10], "noisi": 6, "warn": 6, "prjxray_db": [6, 10], "rai": [6, 10, 23, 25, 28], "databas": [6, 10, 26, 28], "vpr_option": 6, "dict": [6, 9, 10, 11, 17], "No": 6, "part_nam": 6, "distinct": 6, "ambigu": 6, "moment": [6, 10], "address": 6, "arch_def": 6, "facilit": 7, "integr": [7, 9, 20, 22, 23, 27], "beyond": 7, "scope": [7, 10, 24], "threefold": 7, "fine": 7, "grain": 7, "line": [7, 23, 24], "applic": [7, 24], "proggram": 7, "api": [7, 10, 23, 24], "web": 7, "cover": [7, 25], "end": [7, 19, 20, 24, 25, 27], "contribut": [7, 25, 26], "test": [7, 19, 26], "adapt": [7, 23], "organ": [7, 21], "shell": [7, 23, 24], "plumb": [7, 23], "repositori": [7, 19, 23], "therefor": [7, 19, 23, 24], "pre": [7, 23, 25, 27], "alpha": 7, "subject": [7, 24], "strongli": [7, 24], "reli": [7, 10, 11, 24], "until": [7, 24], "updat": [7, 24, 26], "perf": 7, "390": 7, "issuecom": 7, "1023487178": 7, "2225": 7, "2371": 7, "2455": 7, "gsoc": 7, "2022": [7, 26], "idea": 7, "them": [7, 10, 19, 20, 21, 25, 26], "agnost": 7, "fusesoc": 7, "edal": 7, "electron": [7, 23], "autom": [7, 23], "abstract": [7, 22, 24], "eda\u00b2": 7, "genfasm": 8, "guarante": [8, 10, 17], "pleas": [8, 10, 17, 23], "md": [8, 17], "accept": 8, "pnr_corner": 8, "pnr": [8, 19, 21], "corner": 8, "efpga": [8, 28], "wai": [9, 10, 11, 17, 20, 22], "extern": 9, "Its": [9, 19], "fulli": [9, 27], "author": [9, 12, 17], "everyth": 9, "stage_nam": 9, "cwd": 9, "kei": [9, 10, 11, 12, 22], "mode": [9, 19, 24], "grab": 9, "map_io": [9, 10], "extra": [9, 10], "noext": 9, "extens": [9, 19], "anyth": [9, 10], "dir": [9, 19], "meta": [9, 19, 24], "bool": 9, "posit": 9, "unnam": 9, "prefac": [9, 10], "eg": [9, 10], "environment": [9, 17], "index": [9, 23], "0th": 9, "program": [9, 19, 20, 23, 24, 26], "determin": 9, "thu": [9, 25], "implicit": 9, "info": [10, 23], "usual": [10, 19, 21, 22], "bundl": 10, "field": 10, "singular": 10, "filenam": 10, "global": 10, "everi": [10, 20, 21, 23], "config": 10, "overridden": 10, "per": 10, "module_opt": 10, "param": [10, 11, 17, 19], "declar": [10, 19, 24], "achiev": [10, 24, 25], "parametr": 10, "over": [10, 26], "disallow": 10, "overwrit": 10, "collis": 10, "implicitli": 10, "mechan": 10, "later": 10, "must": 10, "necessarili": 10, "assign": [10, 19, 21], "neither": 10, "except": 10, "enabl": [10, 26, 27], "overload": 10, "dependeci": 10, "local": 10, "addition": [10, 19], "aforement": 10, "chose": 10, "appli": 10, "veri": [10, 27], "redund": 10, "certain": [10, 19, 22, 24], "oper": [10, 19, 22], "special": [10, 19], "pattern": 10, "replac": [10, 19], "a_valu": 10, "1234": 10, "another_valu": 10, "origin": [10, 11, 19], "item": 10, "list_of_valu": 10, "some_str": 10, "Be": 10, "care": 10, "kind": 10, "resolut": [10, 24], "comput": [10, 24, 27], "memori": 10, "grow": 10, "exponenti": 10, "fact": 10, "worth": [10, 19, 22], "mention": [10, 17, 19, 22], "fall": 10, "categori": 10, "handi": 10, "bindir": 10, "probabl": 10, "repres": [10, 11, 21], "self": 10, "modulecontext": 10, "str": 10, "alia": 10, "moduleclass": 10, "attribut": [10, 19], "essenti": 10, "incomplet": 10, "promis": 10, "intermedi": [10, 19, 23], "yet": 10, "evalu": [10, 19], "is_output_explicit": 10, "finish": 10, "withing": [10, 17], "prod_meta": 10, "By": [10, 19], "presenc": 10, "suffix": [10, 24], "rais": 10, "none": 10, "return": 10, "imposs": 10, "limit": [10, 26], "behind": [10, 19, 22], "generic_script_wrapp": 10, "io_renam": 10, "rename_tak": 11, "rename_produc": 11, "rename_valu": 11, "visibl": 11, "outsid": 11, "leav": 11, "nativ": [11, 15], "serv": [12, 25], "page": [13, 14, 15, 16], "circuit": [13, 22], "cell": [14, 15], "impos": 15, "onc": [15, 21], "function": [15, 19, 20, 22, 23, 24], "meant": [17, 23, 24], "vari": [17, 21, 22, 23], "choic": [17, 21], "parameter": 17, "upon": 17, "qualifi": 17, "tcl_script": 17, "read_verilog_arg": 17, "read_verilog": 17, "yosys_tcl_env": 17, "desir": [17, 18, 19, 21, 22], "process": [18, 19, 20, 21, 22, 23, 24, 28], "block": [18, 19, 21, 22, 25, 28], "instanti": [18, 19], "understood": 18, "itself": 18, "appropri": [18, 19], "suitabl": 18, "That": 18, "instruct": [18, 19, 23], "readabl": 18, "import": [18, 19], "made": [19, 22, 23], "convert": [19, 20, 22, 27], "free": [19, 25, 27], "multiplatform": [19, 26], "respons": [19, 20], "nevertheless": 19, "suffici": 19, "introduct": [19, 26], "good": [19, 23], "start": [19, 25, 26], "deeper": 19, "understand": [19, 23, 25, 26], "subsystem": [19, 24, 26], "distinguish": [19, 22], "ones": [19, 23], "frontend": [19, 25], "backend": [19, 25], "varieti": [19, 20, 23], "optim": [19, 21, 24, 26], "opt_": 19, "simplif": [19, 22], "proc_": 19, "abc": 19, "techmap": [19, 25], "obtain": 19, "tabl": [19, 22], "lut": [19, 22], "width": 19, "primit": [19, 21], "macro": 19, "synth_ice40": 19, "synth_xilinx": 19, "7": [19, 25, 26, 27, 28], "seri": [19, 25, 26, 28], "hand": 19, "standard": [19, 24, 25], "prepar": [19, 25], "expect": 19, "even": [19, 20, 22], "big": 19, "nocarri": 19, "opt_expr": 19, "undriven": 19, "opt_clean": 19, "setundef": 19, "zero": 19, "write_blif": 19, "attr": 19, "cname": 19, "out_eblif": 19, "write_verilog": 19, "out_synth_v": 19, "seen": 19, "view": 19, "clk": 19, "ld7": 19, "localparam": 19, "log2delai": 19, "25": 19, "reg": 19, "posedg": 19, "begin": [19, 21, 23], "endmodul": 19, "wire": 19, "_000_": 19, "_001_": 19, "fdre_zini": 19, "is_c_invert": 19, "h0": 19, "zini": 19, "h1": 19, "_073_": 19, "ce": 19, "_012_": 19, "q": 19, "_013_": 19, "sr_gnd": 19, "_150_": 19, "gnd": 19, "_062_": 19, "_003_": 19, "connect": [19, 21, 22, 25], "As": [19, 22], "translat": [19, 25, 26], "scratch": 19, "clock": [19, 28], "buffer": 19, "state": 19, "guid": [19, 23], "bufgctrl": 19, "bufg": 19, "bufgc": 19, "bufgce_1": 19, "bufgmux": 19, "bufgmux_1": 19, "bufgmux_ctrl": 19, "manual": 19, "rest": 19, "bufgctr_vpr": 19, "vtr": [19, 27], "xxx": 19, "port": 19, "pb_type": 19, "layout": [19, 21], "bufgctrl_vpr": 19, "group": [19, 24, 27], "bufg_clk_top": 19, "bot": 19, "blk": 19, "tl": 19, "xmln": 19, "xi": 19, "http": [19, 27], "www": [19, 27], "w3": 19, "2001": 19, "xinclud": 19, "num_pin": 19, "ce0": 19, "ce1": 19, "i0": 19, "i1": 19, "ignore0": 19, "ignore1": 19, "s0": 19, "s1": 19, "blif_model": 19, "latch": 19, "num_pb": 19, "interconnect": 19, "subckt": 19, "fasm_param": 19, "zpreselect_i0": 19, "zpreselect_i1": 19, "is_ignore0_invert": 19, "is_ignore1_invert": 19, "zinv_ce0": 19, "zinv_ce1": 19, "zinv_s0": 19, "zinv_s1": 19, "direct": [19, 24], "fasm_featur": 19, "in_us": 19, "correctli": 19, "substitut": [19, 22], "equat": 19, "constant": 19, "signal": [19, 21], "attach": 19, "firstli": [19, 22], "show": [19, 23], "Then": [19, 25], "_techmap_replace_": 19, "b1": 19, "b0": 19, "init_out": 19, "preselect_i0": 19, "preselect_i1": 19, "is_ce0_invert": 19, "is_ce1_invert": 19, "is_s0_invert": 19, "is_s1_invert": 19, "_techmap_constmsk_ignore0_": 19, "_techmap_constval_ignore0_": 19, "_techmap_constmsk_ignore1_": 19, "_techmap_constval_ignore1_": 19, "_techmap_constmsk_ce0_": 19, "_techmap_constval_ce0_": 19, "_techmap_constmsk_ce1_": 19, "_techmap_constval_ce1_": 19, "_techmap_constmsk_s0_": 19, "_techmap_constval_s0_": 19, "_techmap_constmsk_s1_": 19, "_techmap_constval_s1_": 19, "inv_ignore0": 19, "inv_ignore1": 19, "inv_ce0": 19, "inv_ce1": 19, "inv_s0": 19, "inv_s1": 19, "invert": 19, "bel": 19, "site": 19, "behavior": [19, 22, 27], "vcc": 19, "solut": [19, 21, 23, 26], "opportun": 19, "valid": 19, "fasm2bel": 19, "vivado": 19, "_techmap_": 19, "inherit": 19, "_techmap_constmsk_": 19, "port_nam": 19, "_": 19, "_techmap_constval_": 19, "_techmap_constmask_": 19, "length": 19, "correspond": 19, "equal": 19, "primarili": 19, "websit": 19, "watch": 19, "concept": [20, 26], "simpl": 20, "trivial": 20, "creation": 20, "divid": 20, "proper": 20, "goal": [21, 25], "composit": 21, "propag": 21, "four": 21, "collect": [21, 27], "analyz": [21, 27], "flip": [21, 22, 28], "flop": [21, 22, 28], "mux": 21, "chain": 21, "cluster": 21, "belong": 21, "tile": [21, 28], "best": [21, 25], "decis": 21, "algorithm": 21, "graph": [21, 24], "term": [21, 22, 24], "power": 21, "consumpt": 21, "draft": 22, "complic": 22, "hard": [22, 28], "digit": [22, 27], "stand": 22, "event": 22, "statement": [22, 24], "simpler": 22, "transfer": 22, "secondli": 22, "simplifi": 22, "rewritten": 22, "quit": 22, "prove": 22, "ram": [22, 28], "dsp": [22, 28], "factor": 22, "better": 22, "fewer": 22, "compos": [23, 24], "fortun": 23, "daunt": 23, "gather": 23, "glossari": [23, 26], "plugin": [23, 26, 27], "public": 23, "expertis": 23, "walk": 23, "newcom": 23, "custom": [23, 24], "dese": 23, "contributor": [23, 27], "familiar": 23, "moreov": 23, "yml": 23, "gh": 23, "advanc": [23, 28], "willing": 23, "enhanc": 23, "visual": [23, 26], "head": 23, "effort": [23, 27], "distribut": 23, "quickstart": 23, "trelli": [23, 25, 28], "icestorm": [23, 25, 28], "radpidli": 23, "asset": [23, 24, 25], "difficult": 23, "catch": 23, "although": [23, 25], "apt": 23, "dnf": 23, "pacman": 23, "latest": 23, "size": 23, "henc": 23, "vice": [23, 26], "versa": [23, 26], "manag": [23, 26], "coher": 23, "ci": 23, "summar": 23, "impli": 23, "f4pga_fam": 23, "download": 23, "extract": 23, "clone": 23, "tweak": 23, "timestamp": 23, "commit": 23, "job": 23, "gc": 23, "automerg": 23, "branch": 23, "apart": 23, "great": 23, "prepackag": 23, "prebuilt": 23, "easi": 23, "bleed": 23, "edg": 23, "readi": 23, "maintain": 23, "gcr": 23, "io": [23, 27, 28], "ghcr": 23, "574": 23, "action": 23, "known": [23, 26], "openocd": 23, "tinyfpgab": 23, "tinyprog": 23, "becom": 23, "fragment": 23, "mani": 23, "jtag": 23, "dap": 23, "orbtrac": 23, "dfu": 23, "ftdi": 23, "linux": 23, "fedora": 23, "readm": 23, "cabl": 23, "digil": 23, "dev": 23, "ttyusb0": 23, "encount": 23, "issu": 23, "artifact": 24, "across": 24, "save": [24, 25], "disk": 24, "consecut": 24, "interact": 24, "termin": 24, "batch": 24, "precis": 24, "around": 24, "yaml": 24, "ini": 24, "select": 24, "characterist": 24, "pad": 24, "prerequisit": 24, "previou": 24, "uppercas": 24, "commun": [24, 26], "sequenc": 24, "subflow": 24, "partial": [24, 28], "establish": [24, 25], "emerg": [24, 25], "inspir": [24, 25], "paradigm": [24, 25], "spinalhdl": [24, 25], "independ": 24, "reflect": 24, "variant": 24, "testbench": 24, "compon": [24, 25, 27], "interpet": 24, "tutori": 24, "clase": 24, "append": 24, "easili": 24, "On": [24, 27], "topolog": 24, "sort": 24, "displai": 24, "unit": 24, "character": 24, "leaf": 24, "off": 24, "proce": 25, "asic": 25, "orient": 25, "major": 25, "earli": 25, "2000": 25, "decad": 25, "problem": 25, "lai": 25, "neutral": 25, "pertain": 25, "focus": 25, "latter": 25, "former": 25, "umbrella": 25, "central": 25, "interchang": [25, 26], "schema": [25, 26], "goe": 25, "framework": [25, 26], "properti": 25, "think": 26, "gcc": [26, 27], "aim": 26, "formerli": 26, "interoper": 26, "suit": [26, 27], "benchmark": 26, "against": 26, "visualis": 26, "explor": 26, "viewer": [26, 27], "sdf": 26, "sphinx": [26, 27], "theme": 26, "diagram": [26, 27], "domain": 26, "guidelin": 26, "bump": 26, "fundament": 26, "05": 26, "06": 26, "todo": 26, "8": [26, 27], "6": [26, 27], "5": 26, "4": [26, 27], "rtl": 26, "analysi": 26, "r1": 27, "vikram": 27, "adv": 27, "chri": 27, "lattner": 27, "llvm": 27, "reusabl": 27, "2003": 27, "url": 27, "r2": 27, "tim": 27, "ansel": 27, "mehdi": 27, "saligan": 27, "recent": 27, "histori": 27, "paper": 27, "2020": 27, "ieee": 27, "acm": 27, "confer": 27, "aid": 27, "iccad": 27, "dl": 27, "doi": 27, "ab": 27, "10": 27, "1145": 27, "3400302": 27, "3415736": 27, "r3": 27, "georg": 27, "brandl": 27, "takeshi": 27, "komiya": 27, "2007": 27, "r4": 27, "toni": 27, "bybel": 27, "gtkwave": 27, "gtk": 27, "wave": 27, "unix": 27, "win32": 27, "mac": 27, "osx": 27, "1998": 27, "r5": 27, "aliaksei": 27, "chapyzhenka": 27, "wavedrom": 27, "render": 27, "engin": 27, "2014": 27, "r6": 27, "alain": 27, "dargela": 27, "henner": 27, "zeller": 27, "workshop": 27, "woset": 27, "pdf": 27, "a10": 27, "r7": 27, "surelog": 27, "systemverilog": 27, "2017": 27, "processor": 27, "parser": 27, "elabor": 27, "uhdm": 27, "2019": 27, "alainmarcel": 27, "r8": 27, "david": 27, "fang": 27, "veribl": 27, "linter": 27, "formatt": 27, "r9": 27, "gatecat": 27, "portabl": 27, "yosyshq": 27, "r10": 27, "tristan": 27, "gingold": 27, "ghdl": 27, "sep": 27, "r11": 27, "r12": 27, "andrew": 27, "kahng": 27, "Will": 27, "ifip": 27, "28th": 27, "larg": 27, "scale": 27, "vlsi": 27, "soc": 27, "1109": 27, "soc46417": 27, "9344073": 27, "r13": 27, "kevin": 27, "murrai": 27, "moham": 27, "elgamm": 27, "vaughn": 27, "betz": 27, "keith": 27, "rothman": 27, "alessandro": 27, "comodi": 27, "commerci": 27, "novel": 27, "micro": 27, "40": 27, "49": 27, "57": 27, "mm": 27, "2998435": 27, "r14": 27, "oleg": 27, "petelin": 27, "sheng": 27, "zhong": 27, "jia": 27, "min": 27, "wang": 27, "eldafrawi": 27, "jean": 27, "philipp": 27, "legault": 27, "eugen": 27, "sha": 27, "aaron": 27, "graham": 27, "wu": 27, "matthew": 27, "j": 27, "walker": 27, "hanq": 27, "zeng": 27, "panagioti": 27, "patro": 27, "jason": 27, "luu": 27, "kenneth": 27, "kent": 27, "high": [27, 28], "cad": 27, "customiz": 27, "tran": 27, "reconfigur": 27, "technol": 27, "syst": 27, "3388617": 27, "r15": 27, "austin": 27, "rovinski": 27, "tutu": 27, "ajayi": 27, "minsoo": 27, "kim": 27, "guanru": 27, "bridg": 27, "academ": 27, "real": 27, "world": [27, 28], "3415734": 27, "r16": 27, "wilson": 27, "snyder": 27, "veril": 27, "cycl": 27, "systemc": 27, "veripool": 27, "r17": 27, "richard": 27, "stallman": 27, "gnu": 27, "1987": 27, "r18": 27, "gdb": 27, "debugg": 27, "1986": 27, "r19": 27, "thibedeau": 27, "kevinpt": 27, "r20": 27, "stephen": 27, "william": 27, "icaru": 27, "iverilog": 27, "r21": 27, "clair": 27, "wolf": 27, "symbiyosi": 27, "front": 27, "formal": 27, "verif": 27, "r22": 27, "r23": 27, "clifford": 27, "johann": 27, "glaser": 27, "proceed": 27, "austrochip": 27, "2013": 27, "popular": 28, "smallest": 28, "mobil": 28, "low": 28, "cost": 28, "cpu": 28, "sensor": 28, "24x24": 28, "6144": 28, "4608": 28, "lut4": 28, "adder": 28, "shift": 28}, "objects": {"": [[19, 0, 1, "verilog-bufg", "$root::BUFG"], [19, 0, 1, "verilog-bufgctrl", "$root::BUFGCTRL"]]}, "objtypes": {"0": "verilog:module"}, "objnames": {"0": ["verilog", "module", "module"]}, "titleterms": {"commun": 0, "sourc": 0, "contribut": 0, "build": [1, 5, 6], "document": [1, 28], "chang": 2, "test": 2, "environ": [2, 3], "8": 2, "7": 2, "6": 2, "5": 2, "4": 2, "3": 2, "2": 2, "1": 2, "futur": 2, "work": [2, 25], "packag": 3, "virtual": 3, "understand": 4, "deprec": 4, "flow": [4, 6, 26], "synthesi": [4, 19, 22], "symbiflow_synth": 4, "place": [4, 14, 19, 21], "rout": [4, 16, 19, 21], "pack": [4, 13, 21], "symbiflow_pack": 4, "symbiflow_plac": 4, "gener": [4, 22], "bitstream": [4, 18, 23, 28], "symbiflow_write_bitstream": 4, "develop": [5, 26], "": [5, 6, 10], "note": [5, 11], "last": 5, "updat": 5, "2022": 5, "05": 5, "06": 5, "project": [5, 6, 10], "structur": 5, "differ": 5, "subsystem": 5, "where": 5, "find": 5, "them": 5, "depend": [5, 6], "resolut": [5, 6], "modif": 5, "track": 5, "intern": [5, 10], "environment": [5, 10], "variabl": [5, 10], "system": 5, "instal": [5, 23], "todo": 5, "out": 5, "current": 5, "scope": 5, "usag": [6, 19, 23], "get": [6, 23], "start": [6, 23], "fundament": 6, "concept": 6, "f4pga": [6, 19, 26], "modul": [6, 10], "target": 6, "f4cach": 6, "platform": [6, 10], "definit": 6, "configur": [6, 10], "us": 6, "file": 6, "command": 6, "line": 6, "interfac": [6, 10], "pretend": 6, "mode": [6, 10], "info": 6, "summari": 6, "global": 6, "option": 6, "all": 6, "avail": 6, "sub": 6, "showd": 6, "displai": 6, "common": [6, 10], "valu": [6, 8, 11, 17], "need": 6, "provid": 6, "user": 6, "most": 6, "built": 6, "overview": 7, "refer": [7, 27], "fasm": 8, "generic_script_wrapp": 9, "paramet": [9, 11, 12, 17], "level": 10, "class": 10, "execut": 10, "map": [10, 19, 22], "exec": 10, "initi": 10, "instanti": 10, "qualifi": 10, "decor": 10, "io_renam": 11, "extra": 11, "mkdir": 12, "place_constraint": 15, "synth": 17, "translat": 18, "In": 19, "yosi": 19, "short": 19, "descript": 19, "toolchain": [19, 23], "output": 19, "analysi": [19, 21], "technologi": [19, 22], "vpr": 19, "more": 19, "inform": 19, "nextpnr": 19, "introduct": 20, "rtl": 22, "optim": 22, "guidelin": 23, "conda": 23, "recommend": 23, "bump": 23, "overrid": 23, "specif": [23, 26], "tool": 23, "other": 23, "contain": 23, "load": 23, "openfpgaload": 23, "glossari": 24, "how": 25, "foss": 26, "For": 26, "fpga": 26, "tabl": 26, "content": 26, "about": 26, "python": 26, "util": 26, "design": 26, "appendix": 26, "support": 28, "architectur": 28, "board": 28}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinxcontrib.bibtex": 9, "sphinx": 58}, "alltitles": {"Community": [[0, "community"]], "Communication": [[0, "communication"]], "Sources": [[0, "sources"]], "Contributing": [[0, "contributing"]], "Building the documentation": [[1, "building-the-documentation"]], "Changes": [[2, "changes"]], "Tested environments": [[2, "tested-environments"]], "8": [[2, "id1"]], "7": [[2, "id2"]], "6": [[2, "id3"]], "5": [[2, "id4"]], "4": [[2, "id5"]], "3": [[2, "id6"]], "2": [[2, "id7"]], "1": [[2, "id8"]], "Future work": [[2, "future-work"]], "Packages in virtual environment": [[3, "packages-in-virtual-environment"]], "Understanding the (deprecated) flow": [[4, "understanding-the-deprecated-flow"]], "Synthesis": [[4, "synthesis"], [19, "synthesis"], [22, "synthesis"]], "symbiflow_synth": [[4, "id1"]], "Place and Route": [[4, "place-and-route"]], "Pack": [[4, "pack"]], "symbiflow_pack": [[4, "id2"]], "Place": [[4, "place"]], "symbiflow_place": [[4, "id3"]], "Route": [[4, "route"]], "Generating Bitstream": [[4, "generating-bitstream"]], "symbiflow_write_bitstream": [[4, "id4"]], "Developer\u2019s notes": [[5, "developer-s-notes"]], "Last update: 2022-05-06": [[5, "last-update-2022-05-06"]], "Project\u2019s structure": [[5, "project-s-structure"]], "Different subsystems and where to find them?": [[5, "different-subsystems-and-where-to-find-them"]], "Building and dependency resolution": [[5, "building-and-dependency-resolution"]], "Modification tracking": [[5, "modification-tracking"]], "Internal environmental variable system": [[5, "internal-environmental-variable-system"]], "Installation": [[5, "installation"]], "TODO:": [[5, "todo"]], "Out of the current scope": [[5, "out-of-the-current-scope"]], "Usage": [[6, "usage"], [23, "usage"]], "Getting started": [[6, "getting-started"], [23, "getting-started"]], "Fundamental concepts": [[6, "fundamental-concepts"]], "f4pga": [[6, "f4pga"]], "Modules": [[6, "modules"], [10, "modules"]], "Dependencies": [[6, "dependencies"]], "Target": [[6, "target"]], "Flow": [[6, "flow"]], ".f4cache": [[6, "f4cache"]], "Resolution": [[6, "resolution"]], "Platform\u2019s flow definition": [[6, "platform-s-flow-definition"]], "Project\u2019s flow configuration": [[6, "project-s-flow-configuration"]], "Build a target": [[6, "build-a-target"]], "Using flow configuration file": [[6, "using-flow-configuration-file"]], "Using Command-Line Interface": [[6, "using-command-line-interface"]], "Pretend mode": [[6, "pretend-mode"]], "Info mode": [[6, "info-mode"]], "Summary of global options": [[6, "summary-of-global-options"]], "Summary of all available sub-commands": [[6, "summary-of-all-available-sub-commands"]], "Summary of all options available for build sub-command": [[6, "summary-of-all-options-available-for-build-sub-command"]], "Summary of all options available for showd sub-command": [[6, "summary-of-all-options-available-for-showd-sub-command"]], "Dependency resolution display": [[6, "dependency-resolution-display"]], "Common targets and values": [[6, "common-targets-and-values"]], "Need to be provided by the user": [[6, "need-to-be-provided-by-the-user"]], "Available in most flows": [[6, "available-in-most-flows"]], "Built-in values": [[6, "built-in-values"]], "Used in flow definitions": [[6, "used-in-flow-definitions"]], "Overview": [[7, "overview"]], "References": [[7, "references"], [27, "references"]], "fasm": [[8, "fasm"]], "Values": [[8, "values"], [11, "values"], [17, "values"]], "generic_script_wrapper": [[9, "generic-script-wrapper"]], "Parameters": [[9, "parameters"], [11, "parameters"], [12, "parameters"], [17, "parameters"]], "Interface": [[10, "interface"]], "Configuration interface:": [[10, "configuration-interface"]], "Platform-level configuration": [[10, "platform-level-configuration"]], "Project-level configuration": [[10, "project-level-configuration"]], "Internal environmental variables": [[10, "internal-environmental-variables"]], "Module class": [[10, "module-class"]], "Module\u2019s execution modes": [[10, "module-s-execution-modes"]], "mapping mode": [[10, "mapping-mode"]], "exec mode": [[10, "exec-mode"]], "Module initialization/instantiation": [[10, "module-initialization-instantiation"]], "Qualifiers/decorators": [[10, "qualifiers-decorators"]], "Common modules": [[10, "common-modules"]], "io_rename": [[11, "io-rename"]], "Extra notes": [[11, "extra-notes"]], "mkdirs": [[12, "mkdirs"]], "pack": [[13, "pack"]], "place": [[14, "place"]], "place_constraints": [[15, "place-constraints"]], "route": [[16, "route"]], "synth": [[17, "synth"]], "Bitstream translation": [[18, "bitstream-translation"]], "In F4PGA": [[19, "in-f4pga"]], "Yosys": [[19, "yosys"]], "Short description": [[19, "short-description"]], "Usage in Toolchain": [[19, "usage-in-toolchain"]], "Output analysis": [[19, "output-analysis"]], "Technology mapping in F4PGA toolchain": [[19, "technology-mapping-in-f4pga-toolchain"]], "Technology mapping for VPR": [[19, "technology-mapping-for-vpr"]], "More information": [[19, "more-information"]], "Place & Route": [[19, "place-route"], [21, "place-route"]], "VPR": [[19, "vpr"]], "nextpnr": [[19, "nextpnr"]], "Introduction": [[20, "introduction"]], "Packing": [[21, "packing"]], "Placing": [[21, "placing"]], "Routing": [[21, "routing"]], "Analysis": [[21, "analysis"]], "RTL Generation": [[22, "rtl-generation"]], "Technology mapping": [[22, "technology-mapping"]], "Optimization": [[22, "optimization"]], "Guidelines": [[23, "guidelines"]], "Toolchain installation": [[23, "toolchain-installation"]], "Conda (Recommended)": [[23, "conda-recommended"]], "Bumping/overriding specific tools": [[23, "bumping-overriding-specific-tools"]], "Other": [[23, "other"]], "Containers": [[23, "containers"]], "Loading bitstreams": [[23, "loading-bitstreams"]], "Installing OpenFPGALoader": [[23, "installing-openfpgaloader"]], "Glossary": [[24, "glossary"]], "How it works": [[25, "how-it-works"]], "FOSS Flows For FPGA": [[26, "foss-flows-for-fpga"]], "Table of Contents": [[26, "table-of-contents"]], "About F4PGA": [[26, null]], "Python utils": [[26, null]], "Development": [[26, null]], "Design Flows": [[26, null]], "Specifications": [[26, null]], "Appendix": [[26, null]], "Supported Architectures": [[28, "supported-architectures"]], "Bitstream documentation": [[28, "bitstream-documentation"]], "Boards": [[28, "boards"]]}, "indexentries": {"artifact": [[24, "term-Artifact"]], "cli": [[24, "term-CLI"]], "cache": [[24, "term-Cache"]], "configuration": [[24, "term-Configuration"]], "constraints": [[24, "term-Constraints"]], "definition": [[24, "term-Definition"]], "dependency": [[24, "term-Dependency"]], "design": [[24, "term-Design"]], "f4pga": [[24, "term-F4PGA"]], "flow": [[24, "term-Flow"]], "hdl": [[24, "term-HDL"]], "model": [[24, "term-Model"]], "module": [[24, "term-Module"]], "project": [[24, "term-Project"]], "resolution": [[24, "term-Resolution"]], "step": [[24, "term-Step"]], "target": [[24, "term-Target"]], "tool": [[24, "term-Tool"]], "toolchain": [[24, "term-Toolchain"]]}}) \ No newline at end of file diff --git a/status.html b/status.html new file mode 100644 index 000000000..6675a27d6 --- /dev/null +++ b/status.html @@ -0,0 +1,597 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Supported Architectures — F4PGA documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ +
+ + +
+ + + + +
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+

Supported Architectures

+ +
+

Bitstream documentation

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Project Icestorm

Project Trellis

Project X-Ray

QuickLogic Database

[Basic Tiles] Logic

Yes

Yes

Yes

Yes

[Basic Tiles] Block RAM

Yes

Yes

Partial

Yes

[Advanced Tiles] DSP

Yes

Yes

Partial

Yes

[Advanced Tiles] Hard Blocks

Yes

Yes

Partial

Yes

[Advanced Tiles] Clock Tiles

Yes

Yes

Yes

Yes

[Advanced Tiles] IO Tiles

Yes

Yes

Yes

Yes

[Routing] Logic

Yes

Yes

Yes

Yes

[Routing] Clock

Yes

Yes

Yes

Yes

+
+
+

Boards

+

See f4pga.org: Supported boards.

+
+
+ + +
+
+
+
+
+ + + + + + \ No newline at end of file