[
  {
    "path": ".gitignore",
    "content": "# Byte-compiled / optimized / DLL files\n__pycache__/\n*.py[cod]\n\n# C extensions\n*.so\n\n# Distribution / packaging\n.Python\nenv/\nbuild/\ndevelop-eggs/\ndist/\ndownloads/\neggs/\n.eggs/\nlib/\nlib64/\nparts/\nsdist/\nvar/\n*.egg-info/\n.installed.cfg\n*.egg\n\n# PyInstaller\n#  Usually these files are written by a python script from a template\n#  before PyInstaller builds the exe, so as to inject date/other infos into it.\n*.manifest\n*.spec\n\n# Installer logs\npip-log.txt\npip-delete-this-directory.txt\n\n# Unit test / coverage reports\nhtmlcov/\n.tox/\n.coverage\n.coverage.*\n.cache\nnosetests.xml\ncoverage.xml\n\n# Translations\n*.mo\n*.pot\n\n# Django stuff:\n*.log\n\n# Sphinx documentation\ndocs/_build/\n\n# PyBuilder\ntarget/\n\n*~\n*.bak\n"
  },
  {
    "path": "LICENSE.txt",
    "content": "                    GNU AFFERO GENERAL PUBLIC LICENSE\n                       Version 3, 19 November 2007\n\n Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n                            Preamble\n\n  The GNU Affero General Public License is a free, copyleft license for\nsoftware and other kinds of works, specifically designed to ensure\ncooperation with the community in the case of network server software.\n\n  The licenses for most software and other practical works are designed\nto take away your freedom to share and change the works.  By contrast,\nour General Public Licenses are intended to guarantee your freedom to\nshare and change all versions of a program--to make sure it remains free\nsoftware for all its users.\n\n  When we speak of free software, we are referring to freedom, not\nprice.  Our General Public Licenses are designed to make sure that you\nhave the freedom to distribute copies of free software (and charge for\nthem if you wish), that you receive source code or can get it if you\nwant it, that you can change the software or use pieces of it in new\nfree programs, and that you know you can do these things.\n\n  Developers that use our General Public Licenses protect your rights\nwith two steps: (1) assert copyright on the software, and (2) offer\nyou this License which gives you legal permission to copy, distribute\nand/or modify the software.\n\n  A secondary benefit of defending all users' freedom is that\nimprovements made in alternate versions of the program, if they\nreceive widespread use, become available for other developers to\nincorporate.  Many developers of free software are heartened and\nencouraged by the resulting cooperation.  However, in the case of\nsoftware used on network servers, this result may fail to come about.\nThe GNU General Public License permits making a modified version and\nletting the public access it on a server without ever releasing its\nsource code to the public.\n\n  The GNU Affero General Public License is designed specifically to\nensure that, in such cases, the modified source code becomes available\nto the community.  It requires the operator of a network server to\nprovide the source code of the modified version running there to the\nusers of that server.  Therefore, public use of a modified version, on\na publicly accessible server, gives the public access to the source\ncode of the modified version.\n\n  An older license, called the Affero General Public License and\npublished by Affero, was designed to accomplish similar goals.  This is\na different license, not a version of the Affero GPL, but Affero has\nreleased a new version of the Affero GPL which permits relicensing under\nthis license.\n\n  The precise terms and conditions for copying, distribution and\nmodification follow.\n\n                       TERMS AND CONDITIONS\n\n  0. Definitions.\n\n  \"This License\" refers to version 3 of the GNU Affero General Public License.\n\n  \"Copyright\" also means copyright-like laws that apply to other kinds of\nworks, such as semiconductor masks.\n\n  \"The Program\" refers to any copyrightable work licensed under this\nLicense.  Each licensee is addressed as \"you\".  \"Licensees\" and\n\"recipients\" may be individuals or organizations.\n\n  To \"modify\" a work means to copy from or adapt all or part of the work\nin a fashion requiring copyright permission, other than the making of an\nexact copy.  The resulting work is called a \"modified version\" of the\nearlier work or a work \"based on\" the earlier work.\n\n  A \"covered work\" means either the unmodified Program or a work based\non the Program.\n\n  To \"propagate\" a work means to do anything with it that, without\npermission, would make you directly or secondarily liable for\ninfringement under applicable copyright law, except executing it on a\ncomputer or modifying a private copy.  Propagation includes copying,\ndistribution (with or without modification), making available to the\npublic, and in some countries other activities as well.\n\n  To \"convey\" a work means any kind of propagation that enables other\nparties to make or receive copies.  Mere interaction with a user through\na computer network, with no transfer of a copy, is not conveying.\n\n  An interactive user interface displays \"Appropriate Legal Notices\"\nto the extent that it includes a convenient and prominently visible\nfeature that (1) displays an appropriate copyright notice, and (2)\ntells the user that there is no warranty for the work (except to the\nextent that warranties are provided), that licensees may convey the\nwork under this License, and how to view a copy of this License.  If\nthe interface presents a list of user commands or options, such as a\nmenu, a prominent item in the list meets this criterion.\n\n  1. Source Code.\n\n  The \"source code\" for a work means the preferred form of the work\nfor making modifications to it.  \"Object code\" means any non-source\nform of a work.\n\n  A \"Standard Interface\" means an interface that either is an official\nstandard defined by a recognized standards body, or, in the case of\ninterfaces specified for a particular programming language, one that\nis widely used among developers working in that language.\n\n  The \"System Libraries\" of an executable work include anything, other\nthan the work as a whole, that (a) is included in the normal form of\npackaging a Major Component, but which is not part of that Major\nComponent, and (b) serves only to enable use of the work with that\nMajor Component, or to implement a Standard Interface for which an\nimplementation is available to the public in source code form.  A\n\"Major Component\", in this context, means a major essential component\n(kernel, window system, and so on) of the specific operating system\n(if any) on which the executable work runs, or a compiler used to\nproduce the work, or an object code interpreter used to run it.\n\n  The \"Corresponding Source\" for a work in object code form means all\nthe source code needed to generate, install, and (for an executable\nwork) run the object code and to modify the work, including scripts to\ncontrol those activities.  However, it does not include the work's\nSystem Libraries, or general-purpose tools or generally available free\nprograms which are used unmodified in performing those activities but\nwhich are not part of the work.  For example, Corresponding Source\nincludes interface definition files associated with source files for\nthe work, and the source code for shared libraries and dynamically\nlinked subprograms that the work is specifically designed to require,\nsuch as by intimate data communication or control flow between those\nsubprograms and other parts of the work.\n\n  The Corresponding Source need not include anything that users\ncan regenerate automatically from other parts of the Corresponding\nSource.\n\n  The Corresponding Source for a work in source code form is that\nsame work.\n\n  2. Basic Permissions.\n\n  All rights granted under this License are granted for the term of\ncopyright on the Program, and are irrevocable provided the stated\nconditions are met.  This License explicitly affirms your unlimited\npermission to run the unmodified Program.  The output from running a\ncovered work is covered by this License only if the output, given its\ncontent, constitutes a covered work.  This License acknowledges your\nrights of fair use or other equivalent, as provided by copyright law.\n\n  You may make, run and propagate covered works that you do not\nconvey, without conditions so long as your license otherwise remains\nin force.  You may convey covered works to others for the sole purpose\nof having them make modifications exclusively for you, or provide you\nwith facilities for running those works, provided that you comply with\nthe terms of this License in conveying all material for which you do\nnot control copyright.  Those thus making or running the covered works\nfor you must do so exclusively on your behalf, under your direction\nand control, on terms that prohibit them from making any copies of\nyour copyrighted material outside their relationship with you.\n\n  Conveying under any other circumstances is permitted solely under\nthe conditions stated below.  Sublicensing is not allowed; section 10\nmakes it unnecessary.\n\n  3. Protecting Users' Legal Rights From Anti-Circumvention Law.\n\n  No covered work shall be deemed part of an effective technological\nmeasure under any applicable law fulfilling obligations under article\n11 of the WIPO copyright treaty adopted on 20 December 1996, or\nsimilar laws prohibiting or restricting circumvention of such\nmeasures.\n\n  When you convey a covered work, you waive any legal power to forbid\ncircumvention of technological measures to the extent such circumvention\nis effected by exercising rights under this License with respect to\nthe covered work, and you disclaim any intention to limit operation or\nmodification of the work as a means of enforcing, against the work's\nusers, your or third parties' legal rights to forbid circumvention of\ntechnological measures.\n\n  4. Conveying Verbatim Copies.\n\n  You may convey verbatim copies of the Program's source code as you\nreceive it, in any medium, provided that you conspicuously and\nappropriately publish on each copy an appropriate copyright notice;\nkeep intact all notices stating that this License and any\nnon-permissive terms added in accord with section 7 apply to the code;\nkeep intact all notices of the absence of any warranty; and give all\nrecipients a copy of this License along with the Program.\n\n  You may charge any price or no price for each copy that you convey,\nand you may offer support or warranty protection for a fee.\n\n  5. Conveying Modified Source Versions.\n\n  You may convey a work based on the Program, or the modifications to\nproduce it from the Program, in the form of source code under the\nterms of section 4, provided that you also meet all of these conditions:\n\n    a) The work must carry prominent notices stating that you modified\n    it, and giving a relevant date.\n\n    b) The work must carry prominent notices stating that it is\n    released under this License and any conditions added under section\n    7.  This requirement modifies the requirement in section 4 to\n    \"keep intact all notices\".\n\n    c) You must license the entire work, as a whole, under this\n    License to anyone who comes into possession of a copy.  This\n    License will therefore apply, along with any applicable section 7\n    additional terms, to the whole of the work, and all its parts,\n    regardless of how they are packaged.  This License gives no\n    permission to license the work in any other way, but it does not\n    invalidate such permission if you have separately received it.\n\n    d) If the work has interactive user interfaces, each must display\n    Appropriate Legal Notices; however, if the Program has interactive\n    interfaces that do not display Appropriate Legal Notices, your\n    work need not make them do so.\n\n  A compilation of a covered work with other separate and independent\nworks, which are not by their nature extensions of the covered work,\nand which are not combined with it such as to form a larger program,\nin or on a volume of a storage or distribution medium, is called an\n\"aggregate\" if the compilation and its resulting copyright are not\nused to limit the access or legal rights of the compilation's users\nbeyond what the individual works permit.  Inclusion of a covered work\nin an aggregate does not cause this License to apply to the other\nparts of the aggregate.\n\n  6. Conveying Non-Source Forms.\n\n  You may convey a covered work in object code form under the terms\nof sections 4 and 5, provided that you also convey the\nmachine-readable Corresponding Source under the terms of this License,\nin one of these ways:\n\n    a) Convey the object code in, or embodied in, a physical product\n    (including a physical distribution medium), accompanied by the\n    Corresponding Source fixed on a durable physical medium\n    customarily used for software interchange.\n\n    b) Convey the object code in, or embodied in, a physical product\n    (including a physical distribution medium), accompanied by a\n    written offer, valid for at least three years and valid for as\n    long as you offer spare parts or customer support for that product\n    model, to give anyone who possesses the object code either (1) a\n    copy of the Corresponding Source for all the software in the\n    product that is covered by this License, on a durable physical\n    medium customarily used for software interchange, for a price no\n    more than your reasonable cost of physically performing this\n    conveying of source, or (2) access to copy the\n    Corresponding Source from a network server at no charge.\n\n    c) Convey individual copies of the object code with a copy of the\n    written offer to provide the Corresponding Source.  This\n    alternative is allowed only occasionally and noncommercially, and\n    only if you received the object code with such an offer, in accord\n    with subsection 6b.\n\n    d) Convey the object code by offering access from a designated\n    place (gratis or for a charge), and offer equivalent access to the\n    Corresponding Source in the same way through the same place at no\n    further charge.  You need not require recipients to copy the\n    Corresponding Source along with the object code.  If the place to\n    copy the object code is a network server, the Corresponding Source\n    may be on a different server (operated by you or a third party)\n    that supports equivalent copying facilities, provided you maintain\n    clear directions next to the object code saying where to find the\n    Corresponding Source.  Regardless of what server hosts the\n    Corresponding Source, you remain obligated to ensure that it is\n    available for as long as needed to satisfy these requirements.\n\n    e) Convey the object code using peer-to-peer transmission, provided\n    you inform other peers where the object code and Corresponding\n    Source of the work are being offered to the general public at no\n    charge under subsection 6d.\n\n  A separable portion of the object code, whose source code is excluded\nfrom the Corresponding Source as a System Library, need not be\nincluded in conveying the object code work.\n\n  A \"User Product\" is either (1) a \"consumer product\", which means any\ntangible personal property which is normally used for personal, family,\nor household purposes, or (2) anything designed or sold for incorporation\ninto a dwelling.  In determining whether a product is a consumer product,\ndoubtful cases shall be resolved in favor of coverage.  For a particular\nproduct received by a particular user, \"normally used\" refers to a\ntypical or common use of that class of product, regardless of the status\nof the particular user or of the way in which the particular user\nactually uses, or expects or is expected to use, the product.  A product\nis a consumer product regardless of whether the product has substantial\ncommercial, industrial or non-consumer uses, unless such uses represent\nthe only significant mode of use of the product.\n\n  \"Installation Information\" for a User Product means any methods,\nprocedures, authorization keys, or other information required to install\nand execute modified versions of a covered work in that User Product from\na modified version of its Corresponding Source.  The information must\nsuffice to ensure that the continued functioning of the modified object\ncode is in no case prevented or interfered with solely because\nmodification has been made.\n\n  If you convey an object code work under this section in, or with, or\nspecifically for use in, a User Product, and the conveying occurs as\npart of a transaction in which the right of possession and use of the\nUser Product is transferred to the recipient in perpetuity or for a\nfixed term (regardless of how the transaction is characterized), the\nCorresponding Source conveyed under this section must be accompanied\nby the Installation Information.  But this requirement does not apply\nif neither you nor any third party retains the ability to install\nmodified object code on the User Product (for example, the work has\nbeen installed in ROM).\n\n  The requirement to provide Installation Information does not include a\nrequirement to continue to provide support service, warranty, or updates\nfor a work that has been modified or installed by the recipient, or for\nthe User Product in which it has been modified or installed.  Access to a\nnetwork may be denied when the modification itself materially and\nadversely affects the operation of the network or violates the rules and\nprotocols for communication across the network.\n\n  Corresponding Source conveyed, and Installation Information provided,\nin accord with this section must be in a format that is publicly\ndocumented (and with an implementation available to the public in\nsource code form), and must require no special password or key for\nunpacking, reading or copying.\n\n  7. Additional Terms.\n\n  \"Additional permissions\" are terms that supplement the terms of this\nLicense by making exceptions from one or more of its conditions.\nAdditional permissions that are applicable to the entire Program shall\nbe treated as though they were included in this License, to the extent\nthat they are valid under applicable law.  If additional permissions\napply only to part of the Program, that part may be used separately\nunder those permissions, but the entire Program remains governed by\nthis License without regard to the additional permissions.\n\n  When you convey a copy of a covered work, you may at your option\nremove any additional permissions from that copy, or from any part of\nit.  (Additional permissions may be written to require their own\nremoval in certain cases when you modify the work.)  You may place\nadditional permissions on material, added by you to a covered work,\nfor which you have or can give appropriate copyright permission.\n\n  Notwithstanding any other provision of this License, for material you\nadd to a covered work, you may (if authorized by the copyright holders of\nthat material) supplement the terms of this License with terms:\n\n    a) Disclaiming warranty or limiting liability differently from the\n    terms of sections 15 and 16 of this License; or\n\n    b) Requiring preservation of specified reasonable legal notices or\n    author attributions in that material or in the Appropriate Legal\n    Notices displayed by works containing it; or\n\n    c) Prohibiting misrepresentation of the origin of that material, or\n    requiring that modified versions of such material be marked in\n    reasonable ways as different from the original version; or\n\n    d) Limiting the use for publicity purposes of names of licensors or\n    authors of the material; or\n\n    e) Declining to grant rights under trademark law for use of some\n    trade names, trademarks, or service marks; or\n\n    f) Requiring indemnification of licensors and authors of that\n    material by anyone who conveys the material (or modified versions of\n    it) with contractual assumptions of liability to the recipient, for\n    any liability that these contractual assumptions directly impose on\n    those licensors and authors.\n\n  All other non-permissive additional terms are considered \"further\nrestrictions\" within the meaning of section 10.  If the Program as you\nreceived it, or any part of it, contains a notice stating that it is\ngoverned by this License along with a term that is a further\nrestriction, you may remove that term.  If a license document contains\na further restriction but permits relicensing or conveying under this\nLicense, you may add to a covered work material governed by the terms\nof that license document, provided that the further restriction does\nnot survive such relicensing or conveying.\n\n  If you add terms to a covered work in accord with this section, you\nmust place, in the relevant source files, a statement of the\nadditional terms that apply to those files, or a notice indicating\nwhere to find the applicable terms.\n\n  Additional terms, permissive or non-permissive, may be stated in the\nform of a separately written license, or stated as exceptions;\nthe above requirements apply either way.\n\n  8. Termination.\n\n  You may not propagate or modify a covered work except as expressly\nprovided under this License.  Any attempt otherwise to propagate or\nmodify it is void, and will automatically terminate your rights under\nthis License (including any patent licenses granted under the third\nparagraph of section 11).\n\n  However, if you cease all violation of this License, then your\nlicense from a particular copyright holder is reinstated (a)\nprovisionally, unless and until the copyright holder explicitly and\nfinally terminates your license, and (b) permanently, if the copyright\nholder fails to notify you of the violation by some reasonable means\nprior to 60 days after the cessation.\n\n  Moreover, your license from a particular copyright holder is\nreinstated permanently if the copyright holder notifies you of the\nviolation by some reasonable means, this is the first time you have\nreceived notice of violation of this License (for any work) from that\ncopyright holder, and you cure the violation prior to 30 days after\nyour receipt of the notice.\n\n  Termination of your rights under this section does not terminate the\nlicenses of parties who have received copies or rights from you under\nthis License.  If your rights have been terminated and not permanently\nreinstated, you do not qualify to receive new licenses for the same\nmaterial under section 10.\n\n  9. Acceptance Not Required for Having Copies.\n\n  You are not required to accept this License in order to receive or\nrun a copy of the Program.  Ancillary propagation of a covered work\noccurring solely as a consequence of using peer-to-peer transmission\nto receive a copy likewise does not require acceptance.  However,\nnothing other than this License grants you permission to propagate or\nmodify any covered work.  These actions infringe copyright if you do\nnot accept this License.  Therefore, by modifying or propagating a\ncovered work, you indicate your acceptance of this License to do so.\n\n  10. Automatic Licensing of Downstream Recipients.\n\n  Each time you convey a covered work, the recipient automatically\nreceives a license from the original licensors, to run, modify and\npropagate that work, subject to this License.  You are not responsible\nfor enforcing compliance by third parties with this License.\n\n  An \"entity transaction\" is a transaction transferring control of an\norganization, or substantially all assets of one, or subdividing an\norganization, or merging organizations.  If propagation of a covered\nwork results from an entity transaction, each party to that\ntransaction who receives a copy of the work also receives whatever\nlicenses to the work the party's predecessor in interest had or could\ngive under the previous paragraph, plus a right to possession of the\nCorresponding Source of the work from the predecessor in interest, if\nthe predecessor has it or can get it with reasonable efforts.\n\n  You may not impose any further restrictions on the exercise of the\nrights granted or affirmed under this License.  For example, you may\nnot impose a license fee, royalty, or other charge for exercise of\nrights granted under this License, and you may not initiate litigation\n(including a cross-claim or counterclaim in a lawsuit) alleging that\nany patent claim is infringed by making, using, selling, offering for\nsale, or importing the Program or any portion of it.\n\n  11. Patents.\n\n  A \"contributor\" is a copyright holder who authorizes use under this\nLicense of the Program or a work on which the Program is based.  The\nwork thus licensed is called the contributor's \"contributor version\".\n\n  A contributor's \"essential patent claims\" are all patent claims\nowned or controlled by the contributor, whether already acquired or\nhereafter acquired, that would be infringed by some manner, permitted\nby this License, of making, using, or selling its contributor version,\nbut do not include claims that would be infringed only as a\nconsequence of further modification of the contributor version.  For\npurposes of this definition, \"control\" includes the right to grant\npatent sublicenses in a manner consistent with the requirements of\nthis License.\n\n  Each contributor grants you a non-exclusive, worldwide, royalty-free\npatent license under the contributor's essential patent claims, to\nmake, use, sell, offer for sale, import and otherwise run, modify and\npropagate the contents of its contributor version.\n\n  In the following three paragraphs, a \"patent license\" is any express\nagreement or commitment, however denominated, not to enforce a patent\n(such as an express permission to practice a patent or covenant not to\nsue for patent infringement).  To \"grant\" such a patent license to a\nparty means to make such an agreement or commitment not to enforce a\npatent against the party.\n\n  If you convey a covered work, knowingly relying on a patent license,\nand the Corresponding Source of the work is not available for anyone\nto copy, free of charge and under the terms of this License, through a\npublicly available network server or other readily accessible means,\nthen you must either (1) cause the Corresponding Source to be so\navailable, or (2) arrange to deprive yourself of the benefit of the\npatent license for this particular work, or (3) arrange, in a manner\nconsistent with the requirements of this License, to extend the patent\nlicense to downstream recipients.  \"Knowingly relying\" means you have\nactual knowledge that, but for the patent license, your conveying the\ncovered work in a country, or your recipient's use of the covered work\nin a country, would infringe one or more identifiable patents in that\ncountry that you have reason to believe are valid.\n\n  If, pursuant to or in connection with a single transaction or\narrangement, you convey, or propagate by procuring conveyance of, a\ncovered work, and grant a patent license to some of the parties\nreceiving the covered work authorizing them to use, propagate, modify\nor convey a specific copy of the covered work, then the patent license\nyou grant is automatically extended to all recipients of the covered\nwork and works based on it.\n\n  A patent license is \"discriminatory\" if it does not include within\nthe scope of its coverage, prohibits the exercise of, or is\nconditioned on the non-exercise of one or more of the rights that are\nspecifically granted under this License.  You may not convey a covered\nwork if you are a party to an arrangement with a third party that is\nin the business of distributing software, under which you make payment\nto the third party based on the extent of your activity of conveying\nthe work, and under which the third party grants, to any of the\nparties who would receive the covered work from you, a discriminatory\npatent license (a) in connection with copies of the covered work\nconveyed by you (or copies made from those copies), or (b) primarily\nfor and in connection with specific products or compilations that\ncontain the covered work, unless you entered into that arrangement,\nor that patent license was granted, prior to 28 March 2007.\n\n  Nothing in this License shall be construed as excluding or limiting\nany implied license or other defenses to infringement that may\notherwise be available to you under applicable patent law.\n\n  12. No Surrender of Others' Freedom.\n\n  If conditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License.  If you cannot convey a\ncovered work so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you may\nnot convey it at all.  For example, if you agree to terms that obligate you\nto collect a royalty for further conveying from those to whom you convey\nthe Program, the only way you could satisfy both those terms and this\nLicense would be to refrain entirely from conveying the Program.\n\n  13. Remote Network Interaction; Use with the GNU General Public License.\n\n  Notwithstanding any other provision of this License, if you modify the\nProgram, your modified version must prominently offer all users\ninteracting with it remotely through a computer network (if your version\nsupports such interaction) an opportunity to receive the Corresponding\nSource of your version by providing access to the Corresponding Source\nfrom a network server at no charge, through some standard or customary\nmeans of facilitating copying of software.  This Corresponding Source\nshall include the Corresponding Source for any work covered by version 3\nof the GNU General Public License that is incorporated pursuant to the\nfollowing paragraph.\n\n  Notwithstanding any other provision of this License, you have\npermission to link or combine any covered work with a work licensed\nunder version 3 of the GNU General Public License into a single\ncombined work, and to convey the resulting work.  The terms of this\nLicense will continue to apply to the part which is the covered work,\nbut the work with which it is combined will remain governed by version\n3 of the GNU General Public License.\n\n  14. Revised Versions of this License.\n\n  The Free Software Foundation may publish revised and/or new versions of\nthe GNU Affero General Public License from time to time.  Such new versions\nwill be similar in spirit to the present version, but may differ in detail to\naddress new problems or concerns.\n\n  Each version is given a distinguishing version number.  If the\nProgram specifies that a certain numbered version of the GNU Affero General\nPublic License \"or any later version\" applies to it, you have the\noption of following the terms and conditions either of that numbered\nversion or of any later version published by the Free Software\nFoundation.  If the Program does not specify a version number of the\nGNU Affero General Public License, you may choose any version ever published\nby the Free Software Foundation.\n\n  If the Program specifies that a proxy can decide which future\nversions of the GNU Affero General Public License can be used, that proxy's\npublic statement of acceptance of a version permanently authorizes you\nto choose that version for the Program.\n\n  Later license versions may give you additional or different\npermissions.  However, no additional obligations are imposed on any\nauthor or copyright holder as a result of your choosing to follow a\nlater version.\n\n  15. Disclaimer of Warranty.\n\n  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY\nAPPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT\nHOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY\nOF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,\nTHE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\nPURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM\nIS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF\nALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n\n  16. Limitation of Liability.\n\n  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\nWILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS\nTHE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY\nGENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE\nUSE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF\nDATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD\nPARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),\nEVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF\nSUCH DAMAGES.\n\n  17. Interpretation of Sections 15 and 16.\n\n  If the disclaimer of warranty and limitation of liability provided\nabove cannot be given local legal effect according to their terms,\nreviewing courts shall apply local law that most closely approximates\nan absolute waiver of all civil liability in connection with the\nProgram, unless a warranty or assumption of liability accompanies a\ncopy of the Program in return for a fee.\n\n                     END OF TERMS AND CONDITIONS\n\n            How to Apply These Terms to Your New Programs\n\n  If you develop a new program, and you want it to be of the greatest\npossible use to the public, the best way to achieve this is to make it\nfree software which everyone can redistribute and change under these terms.\n\n  To do so, attach the following notices to the program.  It is safest\nto attach them to the start of each source file to most effectively\nstate the exclusion of warranty; and each file should have at least\nthe \"copyright\" line and a pointer to where the full notice is found.\n\n    <one line to give the program's name and a brief idea of what it does.>\n    Copyright (C) <year>  <name of author>\n\n    This program is free software: you can redistribute it and/or modify\n    it under the terms of the GNU Affero General Public License as published by\n    the Free Software Foundation, either version 3 of the License, or\n    (at your option) any later version.\n\n    This program is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU Affero General Public License for more details.\n\n    You should have received a copy of the GNU Affero General Public License\n    along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\nAlso add information on how to contact you by electronic and paper mail.\n\n  If your software can interact with users remotely through a computer\nnetwork, you should also make sure that it provides a way for users to\nget its source.  For example, if your program is a web application, its\ninterface could display a \"Source\" link that leads users to an archive\nof the code.  There are many ways you could offer source, and different\nsolutions will be better for different programs; see section 13 for the\nspecific requirements.\n\n  You should also get your employer (if you work as a programmer) or school,\nif any, to sign a \"copyright disclaimer\" for the program, if necessary.\nFor more information on this, and how to apply and follow the GNU AGPL, see\n<http://www.gnu.org/licenses/>.\n"
  },
  {
    "path": "MANIFEST.in",
    "content": "include *.txt\ninclude *.md\ngraft doc\nprune doc/_build\nglobal-exclude *.pyc\n"
  },
  {
    "path": "README.md",
    "content": "Urubu 1.4.1\n===========\n\nUrubu is a micro CMS for static websites, with a focus on good navigation\npractices.\n\nAll info can be found on the website: https://urubu.jandecaluwe.com\n"
  },
  {
    "path": "doc/.nojekyll",
    "content": ""
  },
  {
    "path": "doc/CNAME",
    "content": "urubu.jandecaluwe.com\n"
  },
  {
    "path": "doc/Makefile",
    "content": "GH-PAGES = ${HOME}/dev/urubu-gh-pages/\n\nall: build\n\nbuild:\n\tpython3 -m urubu build\n\nserve:\n\tpython3 -m urubu serve\n\npublish:\n\tcd ..; git subtree push --prefix doc/_build origin gh-pages    \n"
  },
  {
    "path": "doc/_build/.nojekyll",
    "content": ""
  },
  {
    "path": "doc/_build/CNAME",
    "content": "urubu.jandecaluwe.com\n"
  },
  {
    "path": "doc/_build/css/bootstrap.css",
    "content": "/*!\n * Bootstrap v3.4.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\nhtml {\n  font-family: sans-serif;\n  -ms-text-size-adjust: 100%;\n  -webkit-text-size-adjust: 100%;\n}\nbody {\n  margin: 0;\n}\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n  display: block;\n}\naudio,\ncanvas,\nprogress,\nvideo {\n  display: inline-block;\n  vertical-align: baseline;\n}\naudio:not([controls]) {\n  display: none;\n  height: 0;\n}\n[hidden],\ntemplate {\n  display: none;\n}\na {\n  background-color: transparent;\n}\na:active,\na:hover {\n  outline: 0;\n}\nabbr[title] {\n  border-bottom: none;\n  text-decoration: underline;\n  -webkit-text-decoration: underline dotted;\n  -moz-text-decoration: underline dotted;\n  text-decoration: underline dotted;\n}\nb,\nstrong {\n  font-weight: bold;\n}\ndfn {\n  font-style: italic;\n}\nh1 {\n  font-size: 2em;\n  margin: 0.67em 0;\n}\nmark {\n  background: #ff0;\n  color: #000;\n}\nsmall {\n  font-size: 80%;\n}\nsub,\nsup {\n  font-size: 75%;\n  line-height: 0;\n  position: relative;\n  vertical-align: baseline;\n}\nsup {\n  top: -0.5em;\n}\nsub {\n  bottom: -0.25em;\n}\nimg {\n  border: 0;\n}\nsvg:not(:root) {\n  overflow: hidden;\n}\nfigure {\n  margin: 1em 40px;\n}\nhr {\n  -webkit-box-sizing: content-box;\n  -moz-box-sizing: content-box;\n  box-sizing: content-box;\n  height: 0;\n}\npre {\n  overflow: auto;\n}\ncode,\nkbd,\npre,\nsamp {\n  font-family: monospace, monospace;\n  font-size: 1em;\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n  color: inherit;\n  font: inherit;\n  margin: 0;\n}\nbutton {\n  overflow: visible;\n}\nbutton,\nselect {\n  text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n  -webkit-appearance: button;\n  cursor: pointer;\n}\nbutton[disabled],\nhtml input[disabled] {\n  cursor: default;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n  border: 0;\n  padding: 0;\n}\ninput {\n  line-height: normal;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n  padding: 0;\n}\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n  height: auto;\n}\ninput[type=\"search\"] {\n  -webkit-appearance: textfield;\n  -webkit-box-sizing: content-box;\n  -moz-box-sizing: content-box;\n  box-sizing: content-box;\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\nfieldset {\n  border: 1px solid #c0c0c0;\n  margin: 0 2px;\n  padding: 0.35em 0.625em 0.75em;\n}\nlegend {\n  border: 0;\n  padding: 0;\n}\ntextarea {\n  overflow: auto;\n}\noptgroup {\n  font-weight: bold;\n}\ntable {\n  border-collapse: collapse;\n  border-spacing: 0;\n}\ntd,\nth {\n  padding: 0;\n}\n/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n@media print {\n  *,\n  *:before,\n  *:after {\n    color: #000 !important;\n    text-shadow: none !important;\n    background: transparent !important;\n    -webkit-box-shadow: none !important;\n    box-shadow: none !important;\n  }\n  a,\n  a:visited {\n    text-decoration: underline;\n  }\n  a[href]:after {\n    content: \" (\" attr(href) \")\";\n  }\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\";\n  }\n  a[href^=\"#\"]:after,\n  a[href^=\"javascript:\"]:after {\n    content: \"\";\n  }\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid;\n  }\n  thead {\n    display: table-header-group;\n  }\n  tr,\n  img {\n    page-break-inside: avoid;\n  }\n  img {\n    max-width: 100% !important;\n  }\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3;\n  }\n  h2,\n  h3 {\n    page-break-after: avoid;\n  }\n  .navbar {\n    display: none;\n  }\n  .btn > .caret,\n  .dropup > .btn > .caret {\n    border-top-color: #000 !important;\n  }\n  .label {\n    border: 1px solid #000;\n  }\n  .table {\n    border-collapse: collapse !important;\n  }\n  .table td,\n  .table th {\n    background-color: #fff !important;\n  }\n  .table-bordered th,\n  .table-bordered td {\n    border: 1px solid #ddd !important;\n  }\n}\n@font-face {\n  font-family: \"Glyphicons Halflings\";\n  src: url(\"../fonts/glyphicons-halflings-regular.eot\");\n  src: url(\"../fonts/glyphicons-halflings-regular.eot?#iefix\") format(\"embedded-opentype\"), url(\"../fonts/glyphicons-halflings-regular.woff2\") format(\"woff2\"), url(\"../fonts/glyphicons-halflings-regular.woff\") format(\"woff\"), url(\"../fonts/glyphicons-halflings-regular.ttf\") format(\"truetype\"), url(\"../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular\") format(\"svg\");\n}\n.glyphicon {\n  position: relative;\n  top: 1px;\n  display: inline-block;\n  font-family: \"Glyphicons Halflings\";\n  font-style: normal;\n  font-weight: 400;\n  line-height: 1;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n.glyphicon-asterisk:before {\n  content: \"\\002a\";\n}\n.glyphicon-plus:before {\n  content: \"\\002b\";\n}\n.glyphicon-euro:before,\n.glyphicon-eur:before {\n  content: \"\\20ac\";\n}\n.glyphicon-minus:before {\n  content: \"\\2212\";\n}\n.glyphicon-cloud:before {\n  content: \"\\2601\";\n}\n.glyphicon-envelope:before {\n  content: \"\\2709\";\n}\n.glyphicon-pencil:before {\n  content: \"\\270f\";\n}\n.glyphicon-glass:before {\n  content: \"\\e001\";\n}\n.glyphicon-music:before {\n  content: \"\\e002\";\n}\n.glyphicon-search:before {\n  content: \"\\e003\";\n}\n.glyphicon-heart:before {\n  content: \"\\e005\";\n}\n.glyphicon-star:before {\n  content: \"\\e006\";\n}\n.glyphicon-star-empty:before {\n  content: \"\\e007\";\n}\n.glyphicon-user:before {\n  content: \"\\e008\";\n}\n.glyphicon-film:before {\n  content: \"\\e009\";\n}\n.glyphicon-th-large:before {\n  content: \"\\e010\";\n}\n.glyphicon-th:before {\n  content: \"\\e011\";\n}\n.glyphicon-th-list:before {\n  content: \"\\e012\";\n}\n.glyphicon-ok:before {\n  content: \"\\e013\";\n}\n.glyphicon-remove:before {\n  content: \"\\e014\";\n}\n.glyphicon-zoom-in:before {\n  content: \"\\e015\";\n}\n.glyphicon-zoom-out:before {\n  content: \"\\e016\";\n}\n.glyphicon-off:before {\n  content: \"\\e017\";\n}\n.glyphicon-signal:before {\n  content: \"\\e018\";\n}\n.glyphicon-cog:before {\n  content: \"\\e019\";\n}\n.glyphicon-trash:before {\n  content: \"\\e020\";\n}\n.glyphicon-home:before {\n  content: \"\\e021\";\n}\n.glyphicon-file:before {\n  content: \"\\e022\";\n}\n.glyphicon-time:before {\n  content: \"\\e023\";\n}\n.glyphicon-road:before {\n  content: \"\\e024\";\n}\n.glyphicon-download-alt:before {\n  content: \"\\e025\";\n}\n.glyphicon-download:before {\n  content: \"\\e026\";\n}\n.glyphicon-upload:before {\n  content: \"\\e027\";\n}\n.glyphicon-inbox:before {\n  content: \"\\e028\";\n}\n.glyphicon-play-circle:before {\n  content: \"\\e029\";\n}\n.glyphicon-repeat:before {\n  content: \"\\e030\";\n}\n.glyphicon-refresh:before {\n  content: \"\\e031\";\n}\n.glyphicon-list-alt:before {\n  content: \"\\e032\";\n}\n.glyphicon-lock:before {\n  content: \"\\e033\";\n}\n.glyphicon-flag:before {\n  content: \"\\e034\";\n}\n.glyphicon-headphones:before {\n  content: \"\\e035\";\n}\n.glyphicon-volume-off:before {\n  content: \"\\e036\";\n}\n.glyphicon-volume-down:before {\n  content: \"\\e037\";\n}\n.glyphicon-volume-up:before {\n  content: \"\\e038\";\n}\n.glyphicon-qrcode:before {\n  content: \"\\e039\";\n}\n.glyphicon-barcode:before {\n  content: \"\\e040\";\n}\n.glyphicon-tag:before {\n  content: \"\\e041\";\n}\n.glyphicon-tags:before {\n  content: \"\\e042\";\n}\n.glyphicon-book:before {\n  content: \"\\e043\";\n}\n.glyphicon-bookmark:before {\n  content: \"\\e044\";\n}\n.glyphicon-print:before {\n  content: \"\\e045\";\n}\n.glyphicon-camera:before {\n  content: \"\\e046\";\n}\n.glyphicon-font:before {\n  content: \"\\e047\";\n}\n.glyphicon-bold:before {\n  content: \"\\e048\";\n}\n.glyphicon-italic:before {\n  content: \"\\e049\";\n}\n.glyphicon-text-height:before {\n  content: \"\\e050\";\n}\n.glyphicon-text-width:before {\n  content: \"\\e051\";\n}\n.glyphicon-align-left:before {\n  content: \"\\e052\";\n}\n.glyphicon-align-center:before {\n  content: \"\\e053\";\n}\n.glyphicon-align-right:before {\n  content: \"\\e054\";\n}\n.glyphicon-align-justify:before {\n  content: \"\\e055\";\n}\n.glyphicon-list:before {\n  content: \"\\e056\";\n}\n.glyphicon-indent-left:before {\n  content: \"\\e057\";\n}\n.glyphicon-indent-right:before {\n  content: \"\\e058\";\n}\n.glyphicon-facetime-video:before {\n  content: \"\\e059\";\n}\n.glyphicon-picture:before {\n  content: \"\\e060\";\n}\n.glyphicon-map-marker:before {\n  content: \"\\e062\";\n}\n.glyphicon-adjust:before {\n  content: \"\\e063\";\n}\n.glyphicon-tint:before {\n  content: \"\\e064\";\n}\n.glyphicon-edit:before {\n  content: \"\\e065\";\n}\n.glyphicon-share:before {\n  content: \"\\e066\";\n}\n.glyphicon-check:before {\n  content: \"\\e067\";\n}\n.glyphicon-move:before {\n  content: \"\\e068\";\n}\n.glyphicon-step-backward:before {\n  content: \"\\e069\";\n}\n.glyphicon-fast-backward:before {\n  content: \"\\e070\";\n}\n.glyphicon-backward:before {\n  content: \"\\e071\";\n}\n.glyphicon-play:before {\n  content: \"\\e072\";\n}\n.glyphicon-pause:before {\n  content: \"\\e073\";\n}\n.glyphicon-stop:before {\n  content: \"\\e074\";\n}\n.glyphicon-forward:before {\n  content: \"\\e075\";\n}\n.glyphicon-fast-forward:before {\n  content: \"\\e076\";\n}\n.glyphicon-step-forward:before {\n  content: \"\\e077\";\n}\n.glyphicon-eject:before {\n  content: \"\\e078\";\n}\n.glyphicon-chevron-left:before {\n  content: \"\\e079\";\n}\n.glyphicon-chevron-right:before {\n  content: \"\\e080\";\n}\n.glyphicon-plus-sign:before {\n  content: \"\\e081\";\n}\n.glyphicon-minus-sign:before {\n  content: \"\\e082\";\n}\n.glyphicon-remove-sign:before {\n  content: \"\\e083\";\n}\n.glyphicon-ok-sign:before {\n  content: \"\\e084\";\n}\n.glyphicon-question-sign:before {\n  content: \"\\e085\";\n}\n.glyphicon-info-sign:before {\n  content: \"\\e086\";\n}\n.glyphicon-screenshot:before {\n  content: \"\\e087\";\n}\n.glyphicon-remove-circle:before {\n  content: \"\\e088\";\n}\n.glyphicon-ok-circle:before {\n  content: \"\\e089\";\n}\n.glyphicon-ban-circle:before {\n  content: \"\\e090\";\n}\n.glyphicon-arrow-left:before {\n  content: \"\\e091\";\n}\n.glyphicon-arrow-right:before {\n  content: \"\\e092\";\n}\n.glyphicon-arrow-up:before {\n  content: \"\\e093\";\n}\n.glyphicon-arrow-down:before {\n  content: \"\\e094\";\n}\n.glyphicon-share-alt:before {\n  content: \"\\e095\";\n}\n.glyphicon-resize-full:before {\n  content: \"\\e096\";\n}\n.glyphicon-resize-small:before {\n  content: \"\\e097\";\n}\n.glyphicon-exclamation-sign:before {\n  content: \"\\e101\";\n}\n.glyphicon-gift:before {\n  content: \"\\e102\";\n}\n.glyphicon-leaf:before {\n  content: \"\\e103\";\n}\n.glyphicon-fire:before {\n  content: \"\\e104\";\n}\n.glyphicon-eye-open:before {\n  content: \"\\e105\";\n}\n.glyphicon-eye-close:before {\n  content: \"\\e106\";\n}\n.glyphicon-warning-sign:before {\n  content: \"\\e107\";\n}\n.glyphicon-plane:before {\n  content: \"\\e108\";\n}\n.glyphicon-calendar:before {\n  content: \"\\e109\";\n}\n.glyphicon-random:before {\n  content: \"\\e110\";\n}\n.glyphicon-comment:before {\n  content: \"\\e111\";\n}\n.glyphicon-magnet:before {\n  content: \"\\e112\";\n}\n.glyphicon-chevron-up:before {\n  content: \"\\e113\";\n}\n.glyphicon-chevron-down:before {\n  content: \"\\e114\";\n}\n.glyphicon-retweet:before {\n  content: \"\\e115\";\n}\n.glyphicon-shopping-cart:before {\n  content: \"\\e116\";\n}\n.glyphicon-folder-close:before {\n  content: \"\\e117\";\n}\n.glyphicon-folder-open:before {\n  content: \"\\e118\";\n}\n.glyphicon-resize-vertical:before {\n  content: \"\\e119\";\n}\n.glyphicon-resize-horizontal:before {\n  content: \"\\e120\";\n}\n.glyphicon-hdd:before {\n  content: \"\\e121\";\n}\n.glyphicon-bullhorn:before {\n  content: \"\\e122\";\n}\n.glyphicon-bell:before {\n  content: \"\\e123\";\n}\n.glyphicon-certificate:before {\n  content: \"\\e124\";\n}\n.glyphicon-thumbs-up:before {\n  content: \"\\e125\";\n}\n.glyphicon-thumbs-down:before {\n  content: \"\\e126\";\n}\n.glyphicon-hand-right:before {\n  content: \"\\e127\";\n}\n.glyphicon-hand-left:before {\n  content: \"\\e128\";\n}\n.glyphicon-hand-up:before {\n  content: \"\\e129\";\n}\n.glyphicon-hand-down:before {\n  content: \"\\e130\";\n}\n.glyphicon-circle-arrow-right:before {\n  content: \"\\e131\";\n}\n.glyphicon-circle-arrow-left:before {\n  content: \"\\e132\";\n}\n.glyphicon-circle-arrow-up:before {\n  content: \"\\e133\";\n}\n.glyphicon-circle-arrow-down:before {\n  content: \"\\e134\";\n}\n.glyphicon-globe:before {\n  content: \"\\e135\";\n}\n.glyphicon-wrench:before {\n  content: \"\\e136\";\n}\n.glyphicon-tasks:before {\n  content: \"\\e137\";\n}\n.glyphicon-filter:before {\n  content: \"\\e138\";\n}\n.glyphicon-briefcase:before {\n  content: \"\\e139\";\n}\n.glyphicon-fullscreen:before {\n  content: \"\\e140\";\n}\n.glyphicon-dashboard:before {\n  content: \"\\e141\";\n}\n.glyphicon-paperclip:before {\n  content: \"\\e142\";\n}\n.glyphicon-heart-empty:before {\n  content: \"\\e143\";\n}\n.glyphicon-link:before {\n  content: \"\\e144\";\n}\n.glyphicon-phone:before {\n  content: \"\\e145\";\n}\n.glyphicon-pushpin:before {\n  content: \"\\e146\";\n}\n.glyphicon-usd:before {\n  content: \"\\e148\";\n}\n.glyphicon-gbp:before {\n  content: \"\\e149\";\n}\n.glyphicon-sort:before {\n  content: \"\\e150\";\n}\n.glyphicon-sort-by-alphabet:before {\n  content: \"\\e151\";\n}\n.glyphicon-sort-by-alphabet-alt:before {\n  content: \"\\e152\";\n}\n.glyphicon-sort-by-order:before {\n  content: \"\\e153\";\n}\n.glyphicon-sort-by-order-alt:before {\n  content: \"\\e154\";\n}\n.glyphicon-sort-by-attributes:before {\n  content: \"\\e155\";\n}\n.glyphicon-sort-by-attributes-alt:before {\n  content: \"\\e156\";\n}\n.glyphicon-unchecked:before {\n  content: \"\\e157\";\n}\n.glyphicon-expand:before {\n  content: \"\\e158\";\n}\n.glyphicon-collapse-down:before {\n  content: \"\\e159\";\n}\n.glyphicon-collapse-up:before {\n  content: \"\\e160\";\n}\n.glyphicon-log-in:before {\n  content: \"\\e161\";\n}\n.glyphicon-flash:before {\n  content: \"\\e162\";\n}\n.glyphicon-log-out:before {\n  content: \"\\e163\";\n}\n.glyphicon-new-window:before {\n  content: \"\\e164\";\n}\n.glyphicon-record:before {\n  content: \"\\e165\";\n}\n.glyphicon-save:before {\n  content: \"\\e166\";\n}\n.glyphicon-open:before {\n  content: \"\\e167\";\n}\n.glyphicon-saved:before {\n  content: \"\\e168\";\n}\n.glyphicon-import:before {\n  content: \"\\e169\";\n}\n.glyphicon-export:before {\n  content: \"\\e170\";\n}\n.glyphicon-send:before {\n  content: \"\\e171\";\n}\n.glyphicon-floppy-disk:before {\n  content: \"\\e172\";\n}\n.glyphicon-floppy-saved:before {\n  content: \"\\e173\";\n}\n.glyphicon-floppy-remove:before {\n  content: \"\\e174\";\n}\n.glyphicon-floppy-save:before {\n  content: \"\\e175\";\n}\n.glyphicon-floppy-open:before {\n  content: \"\\e176\";\n}\n.glyphicon-credit-card:before {\n  content: \"\\e177\";\n}\n.glyphicon-transfer:before {\n  content: \"\\e178\";\n}\n.glyphicon-cutlery:before {\n  content: \"\\e179\";\n}\n.glyphicon-header:before {\n  content: \"\\e180\";\n}\n.glyphicon-compressed:before {\n  content: \"\\e181\";\n}\n.glyphicon-earphone:before {\n  content: \"\\e182\";\n}\n.glyphicon-phone-alt:before {\n  content: \"\\e183\";\n}\n.glyphicon-tower:before {\n  content: \"\\e184\";\n}\n.glyphicon-stats:before {\n  content: \"\\e185\";\n}\n.glyphicon-sd-video:before {\n  content: \"\\e186\";\n}\n.glyphicon-hd-video:before {\n  content: \"\\e187\";\n}\n.glyphicon-subtitles:before {\n  content: \"\\e188\";\n}\n.glyphicon-sound-stereo:before {\n  content: \"\\e189\";\n}\n.glyphicon-sound-dolby:before {\n  content: \"\\e190\";\n}\n.glyphicon-sound-5-1:before {\n  content: \"\\e191\";\n}\n.glyphicon-sound-6-1:before {\n  content: \"\\e192\";\n}\n.glyphicon-sound-7-1:before {\n  content: \"\\e193\";\n}\n.glyphicon-copyright-mark:before {\n  content: \"\\e194\";\n}\n.glyphicon-registration-mark:before {\n  content: \"\\e195\";\n}\n.glyphicon-cloud-download:before {\n  content: \"\\e197\";\n}\n.glyphicon-cloud-upload:before {\n  content: \"\\e198\";\n}\n.glyphicon-tree-conifer:before {\n  content: \"\\e199\";\n}\n.glyphicon-tree-deciduous:before {\n  content: \"\\e200\";\n}\n.glyphicon-cd:before {\n  content: \"\\e201\";\n}\n.glyphicon-save-file:before {\n  content: \"\\e202\";\n}\n.glyphicon-open-file:before {\n  content: \"\\e203\";\n}\n.glyphicon-level-up:before {\n  content: \"\\e204\";\n}\n.glyphicon-copy:before {\n  content: \"\\e205\";\n}\n.glyphicon-paste:before {\n  content: \"\\e206\";\n}\n.glyphicon-alert:before {\n  content: \"\\e209\";\n}\n.glyphicon-equalizer:before {\n  content: \"\\e210\";\n}\n.glyphicon-king:before {\n  content: \"\\e211\";\n}\n.glyphicon-queen:before {\n  content: \"\\e212\";\n}\n.glyphicon-pawn:before {\n  content: \"\\e213\";\n}\n.glyphicon-bishop:before {\n  content: \"\\e214\";\n}\n.glyphicon-knight:before {\n  content: \"\\e215\";\n}\n.glyphicon-baby-formula:before {\n  content: \"\\e216\";\n}\n.glyphicon-tent:before {\n  content: \"\\26fa\";\n}\n.glyphicon-blackboard:before {\n  content: \"\\e218\";\n}\n.glyphicon-bed:before {\n  content: \"\\e219\";\n}\n.glyphicon-apple:before {\n  content: \"\\f8ff\";\n}\n.glyphicon-erase:before {\n  content: \"\\e221\";\n}\n.glyphicon-hourglass:before {\n  content: \"\\231b\";\n}\n.glyphicon-lamp:before {\n  content: \"\\e223\";\n}\n.glyphicon-duplicate:before {\n  content: \"\\e224\";\n}\n.glyphicon-piggy-bank:before {\n  content: \"\\e225\";\n}\n.glyphicon-scissors:before {\n  content: \"\\e226\";\n}\n.glyphicon-bitcoin:before {\n  content: \"\\e227\";\n}\n.glyphicon-btc:before {\n  content: \"\\e227\";\n}\n.glyphicon-xbt:before {\n  content: \"\\e227\";\n}\n.glyphicon-yen:before {\n  content: \"\\00a5\";\n}\n.glyphicon-jpy:before {\n  content: \"\\00a5\";\n}\n.glyphicon-ruble:before {\n  content: \"\\20bd\";\n}\n.glyphicon-rub:before {\n  content: \"\\20bd\";\n}\n.glyphicon-scale:before {\n  content: \"\\e230\";\n}\n.glyphicon-ice-lolly:before {\n  content: \"\\e231\";\n}\n.glyphicon-ice-lolly-tasted:before {\n  content: \"\\e232\";\n}\n.glyphicon-education:before {\n  content: \"\\e233\";\n}\n.glyphicon-option-horizontal:before {\n  content: \"\\e234\";\n}\n.glyphicon-option-vertical:before {\n  content: \"\\e235\";\n}\n.glyphicon-menu-hamburger:before {\n  content: \"\\e236\";\n}\n.glyphicon-modal-window:before {\n  content: \"\\e237\";\n}\n.glyphicon-oil:before {\n  content: \"\\e238\";\n}\n.glyphicon-grain:before {\n  content: \"\\e239\";\n}\n.glyphicon-sunglasses:before {\n  content: \"\\e240\";\n}\n.glyphicon-text-size:before {\n  content: \"\\e241\";\n}\n.glyphicon-text-color:before {\n  content: \"\\e242\";\n}\n.glyphicon-text-background:before {\n  content: \"\\e243\";\n}\n.glyphicon-object-align-top:before {\n  content: \"\\e244\";\n}\n.glyphicon-object-align-bottom:before {\n  content: \"\\e245\";\n}\n.glyphicon-object-align-horizontal:before {\n  content: \"\\e246\";\n}\n.glyphicon-object-align-left:before {\n  content: \"\\e247\";\n}\n.glyphicon-object-align-vertical:before {\n  content: \"\\e248\";\n}\n.glyphicon-object-align-right:before {\n  content: \"\\e249\";\n}\n.glyphicon-triangle-right:before {\n  content: \"\\e250\";\n}\n.glyphicon-triangle-left:before {\n  content: \"\\e251\";\n}\n.glyphicon-triangle-bottom:before {\n  content: \"\\e252\";\n}\n.glyphicon-triangle-top:before {\n  content: \"\\e253\";\n}\n.glyphicon-console:before {\n  content: \"\\e254\";\n}\n.glyphicon-superscript:before {\n  content: \"\\e255\";\n}\n.glyphicon-subscript:before {\n  content: \"\\e256\";\n}\n.glyphicon-menu-left:before {\n  content: \"\\e257\";\n}\n.glyphicon-menu-right:before {\n  content: \"\\e258\";\n}\n.glyphicon-menu-down:before {\n  content: \"\\e259\";\n}\n.glyphicon-menu-up:before {\n  content: \"\\e260\";\n}\n* {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\n*:before,\n*:after {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\nhtml {\n  font-size: 10px;\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #333333;\n  background-color: #fff;\n}\ninput,\nbutton,\nselect,\ntextarea {\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\na {\n  color: #337ab7;\n  text-decoration: none;\n}\na:hover,\na:focus {\n  color: #23527c;\n  text-decoration: underline;\n}\na:focus {\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\nfigure {\n  margin: 0;\n}\nimg {\n  vertical-align: middle;\n}\n.img-responsive,\n.thumbnail > img,\n.thumbnail a > img,\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n  display: block;\n  max-width: 100%;\n  height: auto;\n}\n.img-rounded {\n  border-radius: 6px;\n}\n.img-thumbnail {\n  padding: 4px;\n  line-height: 1.42857143;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 4px;\n  -webkit-transition: all 0.2s ease-in-out;\n  -o-transition: all 0.2s ease-in-out;\n  transition: all 0.2s ease-in-out;\n  display: inline-block;\n  max-width: 100%;\n  height: auto;\n}\n.img-circle {\n  border-radius: 50%;\n}\nhr {\n  margin-top: 20px;\n  margin-bottom: 20px;\n  border: 0;\n  border-top: 1px solid #eeeeee;\n}\n.sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  padding: 0;\n  margin: -1px;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n}\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n  position: static;\n  width: auto;\n  height: auto;\n  margin: 0;\n  overflow: visible;\n  clip: auto;\n}\n[role=\"button\"] {\n  cursor: pointer;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n  font-family: inherit;\n  font-weight: 500;\n  line-height: 1.1;\n  color: inherit;\n}\nh1 small,\nh2 small,\nh3 small,\nh4 small,\nh5 small,\nh6 small,\n.h1 small,\n.h2 small,\n.h3 small,\n.h4 small,\n.h5 small,\n.h6 small,\nh1 .small,\nh2 .small,\nh3 .small,\nh4 .small,\nh5 .small,\nh6 .small,\n.h1 .small,\n.h2 .small,\n.h3 .small,\n.h4 .small,\n.h5 .small,\n.h6 .small {\n  font-weight: 400;\n  line-height: 1;\n  color: #777777;\n}\nh1,\n.h1,\nh2,\n.h2,\nh3,\n.h3 {\n  margin-top: 20px;\n  margin-bottom: 10px;\n}\nh1 small,\n.h1 small,\nh2 small,\n.h2 small,\nh3 small,\n.h3 small,\nh1 .small,\n.h1 .small,\nh2 .small,\n.h2 .small,\nh3 .small,\n.h3 .small {\n  font-size: 65%;\n}\nh4,\n.h4,\nh5,\n.h5,\nh6,\n.h6 {\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\nh4 small,\n.h4 small,\nh5 small,\n.h5 small,\nh6 small,\n.h6 small,\nh4 .small,\n.h4 .small,\nh5 .small,\n.h5 .small,\nh6 .small,\n.h6 .small {\n  font-size: 75%;\n}\nh1,\n.h1 {\n  font-size: 36px;\n}\nh2,\n.h2 {\n  font-size: 30px;\n}\nh3,\n.h3 {\n  font-size: 24px;\n}\nh4,\n.h4 {\n  font-size: 18px;\n}\nh5,\n.h5 {\n  font-size: 14px;\n}\nh6,\n.h6 {\n  font-size: 12px;\n}\np {\n  margin: 0 0 10px;\n}\n.lead {\n  margin-bottom: 20px;\n  font-size: 16px;\n  font-weight: 300;\n  line-height: 1.4;\n}\n@media (min-width: 768px) {\n  .lead {\n    font-size: 21px;\n  }\n}\nsmall,\n.small {\n  font-size: 85%;\n}\nmark,\n.mark {\n  padding: 0.2em;\n  background-color: #fcf8e3;\n}\n.text-left {\n  text-align: left;\n}\n.text-right {\n  text-align: right;\n}\n.text-center {\n  text-align: center;\n}\n.text-justify {\n  text-align: justify;\n}\n.text-nowrap {\n  white-space: nowrap;\n}\n.text-lowercase {\n  text-transform: lowercase;\n}\n.text-uppercase {\n  text-transform: uppercase;\n}\n.text-capitalize {\n  text-transform: capitalize;\n}\n.text-muted {\n  color: #777777;\n}\n.text-primary {\n  color: #337ab7;\n}\na.text-primary:hover,\na.text-primary:focus {\n  color: #286090;\n}\n.text-success {\n  color: #3c763d;\n}\na.text-success:hover,\na.text-success:focus {\n  color: #2b542c;\n}\n.text-info {\n  color: #31708f;\n}\na.text-info:hover,\na.text-info:focus {\n  color: #245269;\n}\n.text-warning {\n  color: #8a6d3b;\n}\na.text-warning:hover,\na.text-warning:focus {\n  color: #66512c;\n}\n.text-danger {\n  color: #a94442;\n}\na.text-danger:hover,\na.text-danger:focus {\n  color: #843534;\n}\n.bg-primary {\n  color: #fff;\n  background-color: #337ab7;\n}\na.bg-primary:hover,\na.bg-primary:focus {\n  background-color: #286090;\n}\n.bg-success {\n  background-color: #dff0d8;\n}\na.bg-success:hover,\na.bg-success:focus {\n  background-color: #c1e2b3;\n}\n.bg-info {\n  background-color: #d9edf7;\n}\na.bg-info:hover,\na.bg-info:focus {\n  background-color: #afd9ee;\n}\n.bg-warning {\n  background-color: #fcf8e3;\n}\na.bg-warning:hover,\na.bg-warning:focus {\n  background-color: #f7ecb5;\n}\n.bg-danger {\n  background-color: #f2dede;\n}\na.bg-danger:hover,\na.bg-danger:focus {\n  background-color: #e4b9b9;\n}\n.page-header {\n  padding-bottom: 9px;\n  margin: 40px 0 20px;\n  border-bottom: 1px solid #eeeeee;\n}\nul,\nol {\n  margin-top: 0;\n  margin-bottom: 10px;\n}\nul ul,\nol ul,\nul ol,\nol ol {\n  margin-bottom: 0;\n}\n.list-unstyled {\n  padding-left: 0;\n  list-style: none;\n}\n.list-inline {\n  padding-left: 0;\n  list-style: none;\n  margin-left: -5px;\n}\n.list-inline > li {\n  display: inline-block;\n  padding-right: 5px;\n  padding-left: 5px;\n}\ndl {\n  margin-top: 0;\n  margin-bottom: 20px;\n}\ndt,\ndd {\n  line-height: 1.42857143;\n}\ndt {\n  font-weight: 700;\n}\ndd {\n  margin-left: 0;\n}\n@media (min-width: 768px) {\n  .dl-horizontal dt {\n    float: left;\n    width: 160px;\n    clear: left;\n    text-align: right;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n  .dl-horizontal dd {\n    margin-left: 180px;\n  }\n}\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n}\n.initialism {\n  font-size: 90%;\n  text-transform: uppercase;\n}\nblockquote {\n  padding: 10px 20px;\n  margin: 0 0 20px;\n  font-size: 17.5px;\n  border-left: 5px solid #eeeeee;\n}\nblockquote p:last-child,\nblockquote ul:last-child,\nblockquote ol:last-child {\n  margin-bottom: 0;\n}\nblockquote footer,\nblockquote small,\nblockquote .small {\n  display: block;\n  font-size: 80%;\n  line-height: 1.42857143;\n  color: #777777;\n}\nblockquote footer:before,\nblockquote small:before,\nblockquote .small:before {\n  content: \"\\2014 \\00A0\";\n}\n.blockquote-reverse,\nblockquote.pull-right {\n  padding-right: 15px;\n  padding-left: 0;\n  text-align: right;\n  border-right: 5px solid #eeeeee;\n  border-left: 0;\n}\n.blockquote-reverse footer:before,\nblockquote.pull-right footer:before,\n.blockquote-reverse small:before,\nblockquote.pull-right small:before,\n.blockquote-reverse .small:before,\nblockquote.pull-right .small:before {\n  content: \"\";\n}\n.blockquote-reverse footer:after,\nblockquote.pull-right footer:after,\n.blockquote-reverse small:after,\nblockquote.pull-right small:after,\n.blockquote-reverse .small:after,\nblockquote.pull-right .small:after {\n  content: \"\\00A0 \\2014\";\n}\naddress {\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 1.42857143;\n}\ncode,\nkbd,\npre,\nsamp {\n  font-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n}\ncode {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: #c7254e;\n  background-color: #f9f2f4;\n  border-radius: 4px;\n}\nkbd {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: #fff;\n  background-color: #333;\n  border-radius: 3px;\n  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);\n  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\nkbd kbd {\n  padding: 0;\n  font-size: 100%;\n  font-weight: 700;\n  -webkit-box-shadow: none;\n  box-shadow: none;\n}\npre {\n  display: block;\n  padding: 9.5px;\n  margin: 0 0 10px;\n  font-size: 13px;\n  line-height: 1.42857143;\n  color: #333333;\n  word-break: break-all;\n  word-wrap: break-word;\n  background-color: #f5f5f5;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n}\npre code {\n  padding: 0;\n  font-size: inherit;\n  color: inherit;\n  white-space: pre-wrap;\n  background-color: transparent;\n  border-radius: 0;\n}\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll;\n}\n.container {\n  padding-right: 15px;\n  padding-left: 15px;\n  margin-right: auto;\n  margin-left: auto;\n}\n@media (min-width: 768px) {\n  .container {\n    width: 750px;\n  }\n}\n@media (min-width: 992px) {\n  .container {\n    width: 970px;\n  }\n}\n@media (min-width: 1200px) {\n  .container {\n    width: 1170px;\n  }\n}\n.container-fluid {\n  padding-right: 15px;\n  padding-left: 15px;\n  margin-right: auto;\n  margin-left: auto;\n}\n.row {\n  margin-right: -15px;\n  margin-left: -15px;\n}\n.row-no-gutters {\n  margin-right: 0;\n  margin-left: 0;\n}\n.row-no-gutters [class*=\"col-\"] {\n  padding-right: 0;\n  padding-left: 0;\n}\n.col-xs-1,\n.col-sm-1,\n.col-md-1,\n.col-lg-1,\n.col-xs-2,\n.col-sm-2,\n.col-md-2,\n.col-lg-2,\n.col-xs-3,\n.col-sm-3,\n.col-md-3,\n.col-lg-3,\n.col-xs-4,\n.col-sm-4,\n.col-md-4,\n.col-lg-4,\n.col-xs-5,\n.col-sm-5,\n.col-md-5,\n.col-lg-5,\n.col-xs-6,\n.col-sm-6,\n.col-md-6,\n.col-lg-6,\n.col-xs-7,\n.col-sm-7,\n.col-md-7,\n.col-lg-7,\n.col-xs-8,\n.col-sm-8,\n.col-md-8,\n.col-lg-8,\n.col-xs-9,\n.col-sm-9,\n.col-md-9,\n.col-lg-9,\n.col-xs-10,\n.col-sm-10,\n.col-md-10,\n.col-lg-10,\n.col-xs-11,\n.col-sm-11,\n.col-md-11,\n.col-lg-11,\n.col-xs-12,\n.col-sm-12,\n.col-md-12,\n.col-lg-12 {\n  position: relative;\n  min-height: 1px;\n  padding-right: 15px;\n  padding-left: 15px;\n}\n.col-xs-1,\n.col-xs-2,\n.col-xs-3,\n.col-xs-4,\n.col-xs-5,\n.col-xs-6,\n.col-xs-7,\n.col-xs-8,\n.col-xs-9,\n.col-xs-10,\n.col-xs-11,\n.col-xs-12 {\n  float: left;\n}\n.col-xs-12 {\n  width: 100%;\n}\n.col-xs-11 {\n  width: 91.66666667%;\n}\n.col-xs-10 {\n  width: 83.33333333%;\n}\n.col-xs-9 {\n  width: 75%;\n}\n.col-xs-8 {\n  width: 66.66666667%;\n}\n.col-xs-7 {\n  width: 58.33333333%;\n}\n.col-xs-6 {\n  width: 50%;\n}\n.col-xs-5 {\n  width: 41.66666667%;\n}\n.col-xs-4 {\n  width: 33.33333333%;\n}\n.col-xs-3 {\n  width: 25%;\n}\n.col-xs-2 {\n  width: 16.66666667%;\n}\n.col-xs-1 {\n  width: 8.33333333%;\n}\n.col-xs-pull-12 {\n  right: 100%;\n}\n.col-xs-pull-11 {\n  right: 91.66666667%;\n}\n.col-xs-pull-10 {\n  right: 83.33333333%;\n}\n.col-xs-pull-9 {\n  right: 75%;\n}\n.col-xs-pull-8 {\n  right: 66.66666667%;\n}\n.col-xs-pull-7 {\n  right: 58.33333333%;\n}\n.col-xs-pull-6 {\n  right: 50%;\n}\n.col-xs-pull-5 {\n  right: 41.66666667%;\n}\n.col-xs-pull-4 {\n  right: 33.33333333%;\n}\n.col-xs-pull-3 {\n  right: 25%;\n}\n.col-xs-pull-2 {\n  right: 16.66666667%;\n}\n.col-xs-pull-1 {\n  right: 8.33333333%;\n}\n.col-xs-pull-0 {\n  right: auto;\n}\n.col-xs-push-12 {\n  left: 100%;\n}\n.col-xs-push-11 {\n  left: 91.66666667%;\n}\n.col-xs-push-10 {\n  left: 83.33333333%;\n}\n.col-xs-push-9 {\n  left: 75%;\n}\n.col-xs-push-8 {\n  left: 66.66666667%;\n}\n.col-xs-push-7 {\n  left: 58.33333333%;\n}\n.col-xs-push-6 {\n  left: 50%;\n}\n.col-xs-push-5 {\n  left: 41.66666667%;\n}\n.col-xs-push-4 {\n  left: 33.33333333%;\n}\n.col-xs-push-3 {\n  left: 25%;\n}\n.col-xs-push-2 {\n  left: 16.66666667%;\n}\n.col-xs-push-1 {\n  left: 8.33333333%;\n}\n.col-xs-push-0 {\n  left: auto;\n}\n.col-xs-offset-12 {\n  margin-left: 100%;\n}\n.col-xs-offset-11 {\n  margin-left: 91.66666667%;\n}\n.col-xs-offset-10 {\n  margin-left: 83.33333333%;\n}\n.col-xs-offset-9 {\n  margin-left: 75%;\n}\n.col-xs-offset-8 {\n  margin-left: 66.66666667%;\n}\n.col-xs-offset-7 {\n  margin-left: 58.33333333%;\n}\n.col-xs-offset-6 {\n  margin-left: 50%;\n}\n.col-xs-offset-5 {\n  margin-left: 41.66666667%;\n}\n.col-xs-offset-4 {\n  margin-left: 33.33333333%;\n}\n.col-xs-offset-3 {\n  margin-left: 25%;\n}\n.col-xs-offset-2 {\n  margin-left: 16.66666667%;\n}\n.col-xs-offset-1 {\n  margin-left: 8.33333333%;\n}\n.col-xs-offset-0 {\n  margin-left: 0%;\n}\n@media (min-width: 768px) {\n  .col-sm-1,\n  .col-sm-2,\n  .col-sm-3,\n  .col-sm-4,\n  .col-sm-5,\n  .col-sm-6,\n  .col-sm-7,\n  .col-sm-8,\n  .col-sm-9,\n  .col-sm-10,\n  .col-sm-11,\n  .col-sm-12 {\n    float: left;\n  }\n  .col-sm-12 {\n    width: 100%;\n  }\n  .col-sm-11 {\n    width: 91.66666667%;\n  }\n  .col-sm-10 {\n    width: 83.33333333%;\n  }\n  .col-sm-9 {\n    width: 75%;\n  }\n  .col-sm-8 {\n    width: 66.66666667%;\n  }\n  .col-sm-7 {\n    width: 58.33333333%;\n  }\n  .col-sm-6 {\n    width: 50%;\n  }\n  .col-sm-5 {\n    width: 41.66666667%;\n  }\n  .col-sm-4 {\n    width: 33.33333333%;\n  }\n  .col-sm-3 {\n    width: 25%;\n  }\n  .col-sm-2 {\n    width: 16.66666667%;\n  }\n  .col-sm-1 {\n    width: 8.33333333%;\n  }\n  .col-sm-pull-12 {\n    right: 100%;\n  }\n  .col-sm-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-sm-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-sm-pull-9 {\n    right: 75%;\n  }\n  .col-sm-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-sm-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-sm-pull-6 {\n    right: 50%;\n  }\n  .col-sm-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-sm-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-sm-pull-3 {\n    right: 25%;\n  }\n  .col-sm-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-sm-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-sm-pull-0 {\n    right: auto;\n  }\n  .col-sm-push-12 {\n    left: 100%;\n  }\n  .col-sm-push-11 {\n    left: 91.66666667%;\n  }\n  .col-sm-push-10 {\n    left: 83.33333333%;\n  }\n  .col-sm-push-9 {\n    left: 75%;\n  }\n  .col-sm-push-8 {\n    left: 66.66666667%;\n  }\n  .col-sm-push-7 {\n    left: 58.33333333%;\n  }\n  .col-sm-push-6 {\n    left: 50%;\n  }\n  .col-sm-push-5 {\n    left: 41.66666667%;\n  }\n  .col-sm-push-4 {\n    left: 33.33333333%;\n  }\n  .col-sm-push-3 {\n    left: 25%;\n  }\n  .col-sm-push-2 {\n    left: 16.66666667%;\n  }\n  .col-sm-push-1 {\n    left: 8.33333333%;\n  }\n  .col-sm-push-0 {\n    left: auto;\n  }\n  .col-sm-offset-12 {\n    margin-left: 100%;\n  }\n  .col-sm-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-sm-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-sm-offset-9 {\n    margin-left: 75%;\n  }\n  .col-sm-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-sm-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-sm-offset-6 {\n    margin-left: 50%;\n  }\n  .col-sm-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-sm-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-sm-offset-3 {\n    margin-left: 25%;\n  }\n  .col-sm-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-sm-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-sm-offset-0 {\n    margin-left: 0%;\n  }\n}\n@media (min-width: 992px) {\n  .col-md-1,\n  .col-md-2,\n  .col-md-3,\n  .col-md-4,\n  .col-md-5,\n  .col-md-6,\n  .col-md-7,\n  .col-md-8,\n  .col-md-9,\n  .col-md-10,\n  .col-md-11,\n  .col-md-12 {\n    float: left;\n  }\n  .col-md-12 {\n    width: 100%;\n  }\n  .col-md-11 {\n    width: 91.66666667%;\n  }\n  .col-md-10 {\n    width: 83.33333333%;\n  }\n  .col-md-9 {\n    width: 75%;\n  }\n  .col-md-8 {\n    width: 66.66666667%;\n  }\n  .col-md-7 {\n    width: 58.33333333%;\n  }\n  .col-md-6 {\n    width: 50%;\n  }\n  .col-md-5 {\n    width: 41.66666667%;\n  }\n  .col-md-4 {\n    width: 33.33333333%;\n  }\n  .col-md-3 {\n    width: 25%;\n  }\n  .col-md-2 {\n    width: 16.66666667%;\n  }\n  .col-md-1 {\n    width: 8.33333333%;\n  }\n  .col-md-pull-12 {\n    right: 100%;\n  }\n  .col-md-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-md-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-md-pull-9 {\n    right: 75%;\n  }\n  .col-md-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-md-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-md-pull-6 {\n    right: 50%;\n  }\n  .col-md-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-md-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-md-pull-3 {\n    right: 25%;\n  }\n  .col-md-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-md-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-md-pull-0 {\n    right: auto;\n  }\n  .col-md-push-12 {\n    left: 100%;\n  }\n  .col-md-push-11 {\n    left: 91.66666667%;\n  }\n  .col-md-push-10 {\n    left: 83.33333333%;\n  }\n  .col-md-push-9 {\n    left: 75%;\n  }\n  .col-md-push-8 {\n    left: 66.66666667%;\n  }\n  .col-md-push-7 {\n    left: 58.33333333%;\n  }\n  .col-md-push-6 {\n    left: 50%;\n  }\n  .col-md-push-5 {\n    left: 41.66666667%;\n  }\n  .col-md-push-4 {\n    left: 33.33333333%;\n  }\n  .col-md-push-3 {\n    left: 25%;\n  }\n  .col-md-push-2 {\n    left: 16.66666667%;\n  }\n  .col-md-push-1 {\n    left: 8.33333333%;\n  }\n  .col-md-push-0 {\n    left: auto;\n  }\n  .col-md-offset-12 {\n    margin-left: 100%;\n  }\n  .col-md-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-md-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-md-offset-9 {\n    margin-left: 75%;\n  }\n  .col-md-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-md-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-md-offset-6 {\n    margin-left: 50%;\n  }\n  .col-md-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-md-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-md-offset-3 {\n    margin-left: 25%;\n  }\n  .col-md-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-md-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-md-offset-0 {\n    margin-left: 0%;\n  }\n}\n@media (min-width: 1200px) {\n  .col-lg-1,\n  .col-lg-2,\n  .col-lg-3,\n  .col-lg-4,\n  .col-lg-5,\n  .col-lg-6,\n  .col-lg-7,\n  .col-lg-8,\n  .col-lg-9,\n  .col-lg-10,\n  .col-lg-11,\n  .col-lg-12 {\n    float: left;\n  }\n  .col-lg-12 {\n    width: 100%;\n  }\n  .col-lg-11 {\n    width: 91.66666667%;\n  }\n  .col-lg-10 {\n    width: 83.33333333%;\n  }\n  .col-lg-9 {\n    width: 75%;\n  }\n  .col-lg-8 {\n    width: 66.66666667%;\n  }\n  .col-lg-7 {\n    width: 58.33333333%;\n  }\n  .col-lg-6 {\n    width: 50%;\n  }\n  .col-lg-5 {\n    width: 41.66666667%;\n  }\n  .col-lg-4 {\n    width: 33.33333333%;\n  }\n  .col-lg-3 {\n    width: 25%;\n  }\n  .col-lg-2 {\n    width: 16.66666667%;\n  }\n  .col-lg-1 {\n    width: 8.33333333%;\n  }\n  .col-lg-pull-12 {\n    right: 100%;\n  }\n  .col-lg-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-lg-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-lg-pull-9 {\n    right: 75%;\n  }\n  .col-lg-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-lg-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-lg-pull-6 {\n    right: 50%;\n  }\n  .col-lg-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-lg-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-lg-pull-3 {\n    right: 25%;\n  }\n  .col-lg-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-lg-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-lg-pull-0 {\n    right: auto;\n  }\n  .col-lg-push-12 {\n    left: 100%;\n  }\n  .col-lg-push-11 {\n    left: 91.66666667%;\n  }\n  .col-lg-push-10 {\n    left: 83.33333333%;\n  }\n  .col-lg-push-9 {\n    left: 75%;\n  }\n  .col-lg-push-8 {\n    left: 66.66666667%;\n  }\n  .col-lg-push-7 {\n    left: 58.33333333%;\n  }\n  .col-lg-push-6 {\n    left: 50%;\n  }\n  .col-lg-push-5 {\n    left: 41.66666667%;\n  }\n  .col-lg-push-4 {\n    left: 33.33333333%;\n  }\n  .col-lg-push-3 {\n    left: 25%;\n  }\n  .col-lg-push-2 {\n    left: 16.66666667%;\n  }\n  .col-lg-push-1 {\n    left: 8.33333333%;\n  }\n  .col-lg-push-0 {\n    left: auto;\n  }\n  .col-lg-offset-12 {\n    margin-left: 100%;\n  }\n  .col-lg-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-lg-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-lg-offset-9 {\n    margin-left: 75%;\n  }\n  .col-lg-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-lg-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-lg-offset-6 {\n    margin-left: 50%;\n  }\n  .col-lg-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-lg-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-lg-offset-3 {\n    margin-left: 25%;\n  }\n  .col-lg-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-lg-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-lg-offset-0 {\n    margin-left: 0%;\n  }\n}\ntable {\n  background-color: transparent;\n}\ntable col[class*=\"col-\"] {\n  position: static;\n  display: table-column;\n  float: none;\n}\ntable td[class*=\"col-\"],\ntable th[class*=\"col-\"] {\n  position: static;\n  display: table-cell;\n  float: none;\n}\ncaption {\n  padding-top: 8px;\n  padding-bottom: 8px;\n  color: #777777;\n  text-align: left;\n}\nth {\n  text-align: left;\n}\n.table {\n  width: 100%;\n  max-width: 100%;\n  margin-bottom: 20px;\n}\n.table > thead > tr > th,\n.table > tbody > tr > th,\n.table > tfoot > tr > th,\n.table > thead > tr > td,\n.table > tbody > tr > td,\n.table > tfoot > tr > td {\n  padding: 8px;\n  line-height: 1.42857143;\n  vertical-align: top;\n  border-top: 1px solid #ddd;\n}\n.table > thead > tr > th {\n  vertical-align: bottom;\n  border-bottom: 2px solid #ddd;\n}\n.table > caption + thead > tr:first-child > th,\n.table > colgroup + thead > tr:first-child > th,\n.table > thead:first-child > tr:first-child > th,\n.table > caption + thead > tr:first-child > td,\n.table > colgroup + thead > tr:first-child > td,\n.table > thead:first-child > tr:first-child > td {\n  border-top: 0;\n}\n.table > tbody + tbody {\n  border-top: 2px solid #ddd;\n}\n.table .table {\n  background-color: #fff;\n}\n.table-condensed > thead > tr > th,\n.table-condensed > tbody > tr > th,\n.table-condensed > tfoot > tr > th,\n.table-condensed > thead > tr > td,\n.table-condensed > tbody > tr > td,\n.table-condensed > tfoot > tr > td {\n  padding: 5px;\n}\n.table-bordered {\n  border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > tbody > tr > th,\n.table-bordered > tfoot > tr > th,\n.table-bordered > thead > tr > td,\n.table-bordered > tbody > tr > td,\n.table-bordered > tfoot > tr > td {\n  border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > thead > tr > td {\n  border-bottom-width: 2px;\n}\n.table-striped > tbody > tr:nth-of-type(odd) {\n  background-color: #f9f9f9;\n}\n.table-hover > tbody > tr:hover {\n  background-color: #f5f5f5;\n}\n.table > thead > tr > td.active,\n.table > tbody > tr > td.active,\n.table > tfoot > tr > td.active,\n.table > thead > tr > th.active,\n.table > tbody > tr > th.active,\n.table > tfoot > tr > th.active,\n.table > thead > tr.active > td,\n.table > tbody > tr.active > td,\n.table > tfoot > tr.active > td,\n.table > thead > tr.active > th,\n.table > tbody > tr.active > th,\n.table > tfoot > tr.active > th {\n  background-color: #f5f5f5;\n}\n.table-hover > tbody > tr > td.active:hover,\n.table-hover > tbody > tr > th.active:hover,\n.table-hover > tbody > tr.active:hover > td,\n.table-hover > tbody > tr:hover > .active,\n.table-hover > tbody > tr.active:hover > th {\n  background-color: #e8e8e8;\n}\n.table > thead > tr > td.success,\n.table > tbody > tr > td.success,\n.table > tfoot > tr > td.success,\n.table > thead > tr > th.success,\n.table > tbody > tr > th.success,\n.table > tfoot > tr > th.success,\n.table > thead > tr.success > td,\n.table > tbody > tr.success > td,\n.table > tfoot > tr.success > td,\n.table > thead > tr.success > th,\n.table > tbody > tr.success > th,\n.table > tfoot > tr.success > th {\n  background-color: #dff0d8;\n}\n.table-hover > tbody > tr > td.success:hover,\n.table-hover > tbody > tr > th.success:hover,\n.table-hover > tbody > tr.success:hover > td,\n.table-hover > tbody > tr:hover > .success,\n.table-hover > tbody > tr.success:hover > th {\n  background-color: #d0e9c6;\n}\n.table > thead > tr > td.info,\n.table > tbody > tr > td.info,\n.table > tfoot > tr > td.info,\n.table > thead > tr > th.info,\n.table > tbody > tr > th.info,\n.table > tfoot > tr > th.info,\n.table > thead > tr.info > td,\n.table > tbody > tr.info > td,\n.table > tfoot > tr.info > td,\n.table > thead > tr.info > th,\n.table > tbody > tr.info > th,\n.table > tfoot > tr.info > th {\n  background-color: #d9edf7;\n}\n.table-hover > tbody > tr > td.info:hover,\n.table-hover > tbody > tr > th.info:hover,\n.table-hover > tbody > tr.info:hover > td,\n.table-hover > tbody > tr:hover > .info,\n.table-hover > tbody > tr.info:hover > th {\n  background-color: #c4e3f3;\n}\n.table > thead > tr > td.warning,\n.table > tbody > tr > td.warning,\n.table > tfoot > tr > td.warning,\n.table > thead > tr > th.warning,\n.table > tbody > tr > th.warning,\n.table > tfoot > tr > th.warning,\n.table > thead > tr.warning > td,\n.table > tbody > tr.warning > td,\n.table > tfoot > tr.warning > td,\n.table > thead > tr.warning > th,\n.table > tbody > tr.warning > th,\n.table > tfoot > tr.warning > th {\n  background-color: #fcf8e3;\n}\n.table-hover > tbody > tr > td.warning:hover,\n.table-hover > tbody > tr > th.warning:hover,\n.table-hover > tbody > tr.warning:hover > td,\n.table-hover > tbody > tr:hover > .warning,\n.table-hover > tbody > tr.warning:hover > th {\n  background-color: #faf2cc;\n}\n.table > thead > tr > td.danger,\n.table > tbody > tr > td.danger,\n.table > tfoot > tr > td.danger,\n.table > thead > tr > th.danger,\n.table > tbody > tr > th.danger,\n.table > tfoot > tr > th.danger,\n.table > thead > tr.danger > td,\n.table > tbody > tr.danger > td,\n.table > tfoot > tr.danger > td,\n.table > thead > tr.danger > th,\n.table > tbody > tr.danger > th,\n.table > tfoot > tr.danger > th {\n  background-color: #f2dede;\n}\n.table-hover > tbody > tr > td.danger:hover,\n.table-hover > tbody > tr > th.danger:hover,\n.table-hover > tbody > tr.danger:hover > td,\n.table-hover > tbody > tr:hover > .danger,\n.table-hover > tbody > tr.danger:hover > th {\n  background-color: #ebcccc;\n}\n.table-responsive {\n  min-height: 0.01%;\n  overflow-x: auto;\n}\n@media screen and (max-width: 767px) {\n  .table-responsive {\n    width: 100%;\n    margin-bottom: 15px;\n    overflow-y: hidden;\n    -ms-overflow-style: -ms-autohiding-scrollbar;\n    border: 1px solid #ddd;\n  }\n  .table-responsive > .table {\n    margin-bottom: 0;\n  }\n  .table-responsive > .table > thead > tr > th,\n  .table-responsive > .table > tbody > tr > th,\n  .table-responsive > .table > tfoot > tr > th,\n  .table-responsive > .table > thead > tr > td,\n  .table-responsive > .table > tbody > tr > td,\n  .table-responsive > .table > tfoot > tr > td {\n    white-space: nowrap;\n  }\n  .table-responsive > .table-bordered {\n    border: 0;\n  }\n  .table-responsive > .table-bordered > thead > tr > th:first-child,\n  .table-responsive > .table-bordered > tbody > tr > th:first-child,\n  .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n  .table-responsive > .table-bordered > thead > tr > td:first-child,\n  .table-responsive > .table-bordered > tbody > tr > td:first-child,\n  .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n    border-left: 0;\n  }\n  .table-responsive > .table-bordered > thead > tr > th:last-child,\n  .table-responsive > .table-bordered > tbody > tr > th:last-child,\n  .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n  .table-responsive > .table-bordered > thead > tr > td:last-child,\n  .table-responsive > .table-bordered > tbody > tr > td:last-child,\n  .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n    border-right: 0;\n  }\n  .table-responsive > .table-bordered > tbody > tr:last-child > th,\n  .table-responsive > .table-bordered > tfoot > tr:last-child > th,\n  .table-responsive > .table-bordered > tbody > tr:last-child > td,\n  .table-responsive > .table-bordered > tfoot > tr:last-child > td {\n    border-bottom: 0;\n  }\n}\nfieldset {\n  min-width: 0;\n  padding: 0;\n  margin: 0;\n  border: 0;\n}\nlegend {\n  display: block;\n  width: 100%;\n  padding: 0;\n  margin-bottom: 20px;\n  font-size: 21px;\n  line-height: inherit;\n  color: #333333;\n  border: 0;\n  border-bottom: 1px solid #e5e5e5;\n}\nlabel {\n  display: inline-block;\n  max-width: 100%;\n  margin-bottom: 5px;\n  font-weight: 700;\n}\ninput[type=\"search\"] {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n  -webkit-appearance: none;\n  -moz-appearance: none;\n  appearance: none;\n}\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n  margin: 4px 0 0;\n  margin-top: 1px \\9;\n  line-height: normal;\n}\ninput[type=\"radio\"][disabled],\ninput[type=\"checkbox\"][disabled],\ninput[type=\"radio\"].disabled,\ninput[type=\"checkbox\"].disabled,\nfieldset[disabled] input[type=\"radio\"],\nfieldset[disabled] input[type=\"checkbox\"] {\n  cursor: not-allowed;\n}\ninput[type=\"file\"] {\n  display: block;\n}\ninput[type=\"range\"] {\n  display: block;\n  width: 100%;\n}\nselect[multiple],\nselect[size] {\n  height: auto;\n}\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\noutput {\n  display: block;\n  padding-top: 7px;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #555555;\n}\n.form-control {\n  display: block;\n  width: 100%;\n  height: 34px;\n  padding: 6px 12px;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #555555;\n  background-color: #fff;\n  background-image: none;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n  -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n  -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;\n  transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;\n  transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n  transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;\n}\n.form-control:focus {\n  border-color: #66afe9;\n  outline: 0;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, 0.6);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, 0.6);\n}\n.form-control::-moz-placeholder {\n  color: #999;\n  opacity: 1;\n}\n.form-control:-ms-input-placeholder {\n  color: #999;\n}\n.form-control::-webkit-input-placeholder {\n  color: #999;\n}\n.form-control::-ms-expand {\n  background-color: transparent;\n  border: 0;\n}\n.form-control[disabled],\n.form-control[readonly],\nfieldset[disabled] .form-control {\n  background-color: #eeeeee;\n  opacity: 1;\n}\n.form-control[disabled],\nfieldset[disabled] .form-control {\n  cursor: not-allowed;\n}\ntextarea.form-control {\n  height: auto;\n}\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n  input[type=\"date\"].form-control,\n  input[type=\"time\"].form-control,\n  input[type=\"datetime-local\"].form-control,\n  input[type=\"month\"].form-control {\n    line-height: 34px;\n  }\n  input[type=\"date\"].input-sm,\n  input[type=\"time\"].input-sm,\n  input[type=\"datetime-local\"].input-sm,\n  input[type=\"month\"].input-sm,\n  .input-group-sm input[type=\"date\"],\n  .input-group-sm input[type=\"time\"],\n  .input-group-sm input[type=\"datetime-local\"],\n  .input-group-sm input[type=\"month\"] {\n    line-height: 30px;\n  }\n  input[type=\"date\"].input-lg,\n  input[type=\"time\"].input-lg,\n  input[type=\"datetime-local\"].input-lg,\n  input[type=\"month\"].input-lg,\n  .input-group-lg input[type=\"date\"],\n  .input-group-lg input[type=\"time\"],\n  .input-group-lg input[type=\"datetime-local\"],\n  .input-group-lg input[type=\"month\"] {\n    line-height: 46px;\n  }\n}\n.form-group {\n  margin-bottom: 15px;\n}\n.radio,\n.checkbox {\n  position: relative;\n  display: block;\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\n.radio.disabled label,\n.checkbox.disabled label,\nfieldset[disabled] .radio label,\nfieldset[disabled] .checkbox label {\n  cursor: not-allowed;\n}\n.radio label,\n.checkbox label {\n  min-height: 20px;\n  padding-left: 20px;\n  margin-bottom: 0;\n  font-weight: 400;\n  cursor: pointer;\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n  position: absolute;\n  margin-top: 4px \\9;\n  margin-left: -20px;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n  margin-top: -5px;\n}\n.radio-inline,\n.checkbox-inline {\n  position: relative;\n  display: inline-block;\n  padding-left: 20px;\n  margin-bottom: 0;\n  font-weight: 400;\n  vertical-align: middle;\n  cursor: pointer;\n}\n.radio-inline.disabled,\n.checkbox-inline.disabled,\nfieldset[disabled] .radio-inline,\nfieldset[disabled] .checkbox-inline {\n  cursor: not-allowed;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n  margin-top: 0;\n  margin-left: 10px;\n}\n.form-control-static {\n  min-height: 34px;\n  padding-top: 7px;\n  padding-bottom: 7px;\n  margin-bottom: 0;\n}\n.form-control-static.input-lg,\n.form-control-static.input-sm {\n  padding-right: 0;\n  padding-left: 0;\n}\n.input-sm {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\nselect.input-sm {\n  height: 30px;\n  line-height: 30px;\n}\ntextarea.input-sm,\nselect[multiple].input-sm {\n  height: auto;\n}\n.form-group-sm .form-control {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.form-group-sm select.form-control {\n  height: 30px;\n  line-height: 30px;\n}\n.form-group-sm textarea.form-control,\n.form-group-sm select[multiple].form-control {\n  height: auto;\n}\n.form-group-sm .form-control-static {\n  height: 30px;\n  min-height: 32px;\n  padding: 6px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n}\n.input-lg {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\nselect.input-lg {\n  height: 46px;\n  line-height: 46px;\n}\ntextarea.input-lg,\nselect[multiple].input-lg {\n  height: auto;\n}\n.form-group-lg .form-control {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\n.form-group-lg select.form-control {\n  height: 46px;\n  line-height: 46px;\n}\n.form-group-lg textarea.form-control,\n.form-group-lg select[multiple].form-control {\n  height: auto;\n}\n.form-group-lg .form-control-static {\n  height: 46px;\n  min-height: 38px;\n  padding: 11px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n}\n.has-feedback {\n  position: relative;\n}\n.has-feedback .form-control {\n  padding-right: 42.5px;\n}\n.form-control-feedback {\n  position: absolute;\n  top: 0;\n  right: 0;\n  z-index: 2;\n  display: block;\n  width: 34px;\n  height: 34px;\n  line-height: 34px;\n  text-align: center;\n  pointer-events: none;\n}\n.input-lg + .form-control-feedback,\n.input-group-lg + .form-control-feedback,\n.form-group-lg .form-control + .form-control-feedback {\n  width: 46px;\n  height: 46px;\n  line-height: 46px;\n}\n.input-sm + .form-control-feedback,\n.input-group-sm + .form-control-feedback,\n.form-group-sm .form-control + .form-control-feedback {\n  width: 30px;\n  height: 30px;\n  line-height: 30px;\n}\n.has-success .help-block,\n.has-success .control-label,\n.has-success .radio,\n.has-success .checkbox,\n.has-success .radio-inline,\n.has-success .checkbox-inline,\n.has-success.radio label,\n.has-success.checkbox label,\n.has-success.radio-inline label,\n.has-success.checkbox-inline label {\n  color: #3c763d;\n}\n.has-success .form-control {\n  border-color: #3c763d;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-success .form-control:focus {\n  border-color: #2b542c;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n}\n.has-success .input-group-addon {\n  color: #3c763d;\n  background-color: #dff0d8;\n  border-color: #3c763d;\n}\n.has-success .form-control-feedback {\n  color: #3c763d;\n}\n.has-warning .help-block,\n.has-warning .control-label,\n.has-warning .radio,\n.has-warning .checkbox,\n.has-warning .radio-inline,\n.has-warning .checkbox-inline,\n.has-warning.radio label,\n.has-warning.checkbox label,\n.has-warning.radio-inline label,\n.has-warning.checkbox-inline label {\n  color: #8a6d3b;\n}\n.has-warning .form-control {\n  border-color: #8a6d3b;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-warning .form-control:focus {\n  border-color: #66512c;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n}\n.has-warning .input-group-addon {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n  border-color: #8a6d3b;\n}\n.has-warning .form-control-feedback {\n  color: #8a6d3b;\n}\n.has-error .help-block,\n.has-error .control-label,\n.has-error .radio,\n.has-error .checkbox,\n.has-error .radio-inline,\n.has-error .checkbox-inline,\n.has-error.radio label,\n.has-error.checkbox label,\n.has-error.radio-inline label,\n.has-error.checkbox-inline label {\n  color: #a94442;\n}\n.has-error .form-control {\n  border-color: #a94442;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-error .form-control:focus {\n  border-color: #843534;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n}\n.has-error .input-group-addon {\n  color: #a94442;\n  background-color: #f2dede;\n  border-color: #a94442;\n}\n.has-error .form-control-feedback {\n  color: #a94442;\n}\n.has-feedback label ~ .form-control-feedback {\n  top: 25px;\n}\n.has-feedback label.sr-only ~ .form-control-feedback {\n  top: 0;\n}\n.help-block {\n  display: block;\n  margin-top: 5px;\n  margin-bottom: 10px;\n  color: #737373;\n}\n@media (min-width: 768px) {\n  .form-inline .form-group {\n    display: inline-block;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .form-control {\n    display: inline-block;\n    width: auto;\n    vertical-align: middle;\n  }\n  .form-inline .form-control-static {\n    display: inline-block;\n  }\n  .form-inline .input-group {\n    display: inline-table;\n    vertical-align: middle;\n  }\n  .form-inline .input-group .input-group-addon,\n  .form-inline .input-group .input-group-btn,\n  .form-inline .input-group .form-control {\n    width: auto;\n  }\n  .form-inline .input-group > .form-control {\n    width: 100%;\n  }\n  .form-inline .control-label {\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .radio,\n  .form-inline .checkbox {\n    display: inline-block;\n    margin-top: 0;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .radio label,\n  .form-inline .checkbox label {\n    padding-left: 0;\n  }\n  .form-inline .radio input[type=\"radio\"],\n  .form-inline .checkbox input[type=\"checkbox\"] {\n    position: relative;\n    margin-left: 0;\n  }\n  .form-inline .has-feedback .form-control-feedback {\n    top: 0;\n  }\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox,\n.form-horizontal .radio-inline,\n.form-horizontal .checkbox-inline {\n  padding-top: 7px;\n  margin-top: 0;\n  margin-bottom: 0;\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox {\n  min-height: 27px;\n}\n.form-horizontal .form-group {\n  margin-right: -15px;\n  margin-left: -15px;\n}\n@media (min-width: 768px) {\n  .form-horizontal .control-label {\n    padding-top: 7px;\n    margin-bottom: 0;\n    text-align: right;\n  }\n}\n.form-horizontal .has-feedback .form-control-feedback {\n  right: 15px;\n}\n@media (min-width: 768px) {\n  .form-horizontal .form-group-lg .control-label {\n    padding-top: 11px;\n    font-size: 18px;\n  }\n}\n@media (min-width: 768px) {\n  .form-horizontal .form-group-sm .control-label {\n    padding-top: 6px;\n    font-size: 12px;\n  }\n}\n.btn {\n  display: inline-block;\n  margin-bottom: 0;\n  font-weight: normal;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: middle;\n  -ms-touch-action: manipulation;\n  touch-action: manipulation;\n  cursor: pointer;\n  background-image: none;\n  border: 1px solid transparent;\n  padding: 6px 12px;\n  font-size: 14px;\n  line-height: 1.42857143;\n  border-radius: 4px;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  user-select: none;\n}\n.btn:focus,\n.btn:active:focus,\n.btn.active:focus,\n.btn.focus,\n.btn:active.focus,\n.btn.active.focus {\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\n.btn:hover,\n.btn:focus,\n.btn.focus {\n  color: #333;\n  text-decoration: none;\n}\n.btn:active,\n.btn.active {\n  background-image: none;\n  outline: 0;\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn.disabled,\n.btn[disabled],\nfieldset[disabled] .btn {\n  cursor: not-allowed;\n  filter: alpha(opacity=65);\n  opacity: 0.65;\n  -webkit-box-shadow: none;\n  box-shadow: none;\n}\na.btn.disabled,\nfieldset[disabled] a.btn {\n  pointer-events: none;\n}\n.btn-default {\n  color: #333;\n  background-color: #fff;\n  border-color: #ccc;\n}\n.btn-default:focus,\n.btn-default.focus {\n  color: #333;\n  background-color: #e6e6e6;\n  border-color: #8c8c8c;\n}\n.btn-default:hover {\n  color: #333;\n  background-color: #e6e6e6;\n  border-color: #adadad;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n  color: #333;\n  background-color: #e6e6e6;\n  background-image: none;\n  border-color: #adadad;\n}\n.btn-default:active:hover,\n.btn-default.active:hover,\n.open > .dropdown-toggle.btn-default:hover,\n.btn-default:active:focus,\n.btn-default.active:focus,\n.open > .dropdown-toggle.btn-default:focus,\n.btn-default:active.focus,\n.btn-default.active.focus,\n.open > .dropdown-toggle.btn-default.focus {\n  color: #333;\n  background-color: #d4d4d4;\n  border-color: #8c8c8c;\n}\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus {\n  background-color: #fff;\n  border-color: #ccc;\n}\n.btn-default .badge {\n  color: #fff;\n  background-color: #333;\n}\n.btn-primary {\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #2e6da4;\n}\n.btn-primary:focus,\n.btn-primary.focus {\n  color: #fff;\n  background-color: #286090;\n  border-color: #122b40;\n}\n.btn-primary:hover {\n  color: #fff;\n  background-color: #286090;\n  border-color: #204d74;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n  color: #fff;\n  background-color: #286090;\n  background-image: none;\n  border-color: #204d74;\n}\n.btn-primary:active:hover,\n.btn-primary.active:hover,\n.open > .dropdown-toggle.btn-primary:hover,\n.btn-primary:active:focus,\n.btn-primary.active:focus,\n.open > .dropdown-toggle.btn-primary:focus,\n.btn-primary:active.focus,\n.btn-primary.active.focus,\n.open > .dropdown-toggle.btn-primary.focus {\n  color: #fff;\n  background-color: #204d74;\n  border-color: #122b40;\n}\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus {\n  background-color: #337ab7;\n  border-color: #2e6da4;\n}\n.btn-primary .badge {\n  color: #337ab7;\n  background-color: #fff;\n}\n.btn-success {\n  color: #fff;\n  background-color: #5cb85c;\n  border-color: #4cae4c;\n}\n.btn-success:focus,\n.btn-success.focus {\n  color: #fff;\n  background-color: #449d44;\n  border-color: #255625;\n}\n.btn-success:hover {\n  color: #fff;\n  background-color: #449d44;\n  border-color: #398439;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n  color: #fff;\n  background-color: #449d44;\n  background-image: none;\n  border-color: #398439;\n}\n.btn-success:active:hover,\n.btn-success.active:hover,\n.open > .dropdown-toggle.btn-success:hover,\n.btn-success:active:focus,\n.btn-success.active:focus,\n.open > .dropdown-toggle.btn-success:focus,\n.btn-success:active.focus,\n.btn-success.active.focus,\n.open > .dropdown-toggle.btn-success.focus {\n  color: #fff;\n  background-color: #398439;\n  border-color: #255625;\n}\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus {\n  background-color: #5cb85c;\n  border-color: #4cae4c;\n}\n.btn-success .badge {\n  color: #5cb85c;\n  background-color: #fff;\n}\n.btn-info {\n  color: #fff;\n  background-color: #5bc0de;\n  border-color: #46b8da;\n}\n.btn-info:focus,\n.btn-info.focus {\n  color: #fff;\n  background-color: #31b0d5;\n  border-color: #1b6d85;\n}\n.btn-info:hover {\n  color: #fff;\n  background-color: #31b0d5;\n  border-color: #269abc;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n  color: #fff;\n  background-color: #31b0d5;\n  background-image: none;\n  border-color: #269abc;\n}\n.btn-info:active:hover,\n.btn-info.active:hover,\n.open > .dropdown-toggle.btn-info:hover,\n.btn-info:active:focus,\n.btn-info.active:focus,\n.open > .dropdown-toggle.btn-info:focus,\n.btn-info:active.focus,\n.btn-info.active.focus,\n.open > .dropdown-toggle.btn-info.focus {\n  color: #fff;\n  background-color: #269abc;\n  border-color: #1b6d85;\n}\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus {\n  background-color: #5bc0de;\n  border-color: #46b8da;\n}\n.btn-info .badge {\n  color: #5bc0de;\n  background-color: #fff;\n}\n.btn-warning {\n  color: #fff;\n  background-color: #f0ad4e;\n  border-color: #eea236;\n}\n.btn-warning:focus,\n.btn-warning.focus {\n  color: #fff;\n  background-color: #ec971f;\n  border-color: #985f0d;\n}\n.btn-warning:hover {\n  color: #fff;\n  background-color: #ec971f;\n  border-color: #d58512;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n  color: #fff;\n  background-color: #ec971f;\n  background-image: none;\n  border-color: #d58512;\n}\n.btn-warning:active:hover,\n.btn-warning.active:hover,\n.open > .dropdown-toggle.btn-warning:hover,\n.btn-warning:active:focus,\n.btn-warning.active:focus,\n.open > .dropdown-toggle.btn-warning:focus,\n.btn-warning:active.focus,\n.btn-warning.active.focus,\n.open > .dropdown-toggle.btn-warning.focus {\n  color: #fff;\n  background-color: #d58512;\n  border-color: #985f0d;\n}\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus {\n  background-color: #f0ad4e;\n  border-color: #eea236;\n}\n.btn-warning .badge {\n  color: #f0ad4e;\n  background-color: #fff;\n}\n.btn-danger {\n  color: #fff;\n  background-color: #d9534f;\n  border-color: #d43f3a;\n}\n.btn-danger:focus,\n.btn-danger.focus {\n  color: #fff;\n  background-color: #c9302c;\n  border-color: #761c19;\n}\n.btn-danger:hover {\n  color: #fff;\n  background-color: #c9302c;\n  border-color: #ac2925;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n  color: #fff;\n  background-color: #c9302c;\n  background-image: none;\n  border-color: #ac2925;\n}\n.btn-danger:active:hover,\n.btn-danger.active:hover,\n.open > .dropdown-toggle.btn-danger:hover,\n.btn-danger:active:focus,\n.btn-danger.active:focus,\n.open > .dropdown-toggle.btn-danger:focus,\n.btn-danger:active.focus,\n.btn-danger.active.focus,\n.open > .dropdown-toggle.btn-danger.focus {\n  color: #fff;\n  background-color: #ac2925;\n  border-color: #761c19;\n}\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus {\n  background-color: #d9534f;\n  border-color: #d43f3a;\n}\n.btn-danger .badge {\n  color: #d9534f;\n  background-color: #fff;\n}\n.btn-link {\n  font-weight: 400;\n  color: #337ab7;\n  border-radius: 0;\n}\n.btn-link,\n.btn-link:active,\n.btn-link.active,\n.btn-link[disabled],\nfieldset[disabled] .btn-link {\n  background-color: transparent;\n  -webkit-box-shadow: none;\n  box-shadow: none;\n}\n.btn-link,\n.btn-link:hover,\n.btn-link:focus,\n.btn-link:active {\n  border-color: transparent;\n}\n.btn-link:hover,\n.btn-link:focus {\n  color: #23527c;\n  text-decoration: underline;\n  background-color: transparent;\n}\n.btn-link[disabled]:hover,\nfieldset[disabled] .btn-link:hover,\n.btn-link[disabled]:focus,\nfieldset[disabled] .btn-link:focus {\n  color: #777777;\n  text-decoration: none;\n}\n.btn-lg,\n.btn-group-lg > .btn {\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\n.btn-sm,\n.btn-group-sm > .btn {\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.btn-xs,\n.btn-group-xs > .btn {\n  padding: 1px 5px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.btn-block {\n  display: block;\n  width: 100%;\n}\n.btn-block + .btn-block {\n  margin-top: 5px;\n}\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n  width: 100%;\n}\n.fade {\n  opacity: 0;\n  -webkit-transition: opacity 0.15s linear;\n  -o-transition: opacity 0.15s linear;\n  transition: opacity 0.15s linear;\n}\n.fade.in {\n  opacity: 1;\n}\n.collapse {\n  display: none;\n}\n.collapse.in {\n  display: block;\n}\ntr.collapse.in {\n  display: table-row;\n}\ntbody.collapse.in {\n  display: table-row-group;\n}\n.collapsing {\n  position: relative;\n  height: 0;\n  overflow: hidden;\n  -webkit-transition-property: height, visibility;\n  -o-transition-property: height, visibility;\n  transition-property: height, visibility;\n  -webkit-transition-duration: 0.35s;\n  -o-transition-duration: 0.35s;\n  transition-duration: 0.35s;\n  -webkit-transition-timing-function: ease;\n  -o-transition-timing-function: ease;\n  transition-timing-function: ease;\n}\n.caret {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 2px;\n  vertical-align: middle;\n  border-top: 4px dashed;\n  border-top: 4px solid \\9;\n  border-right: 4px solid transparent;\n  border-left: 4px solid transparent;\n}\n.dropup,\n.dropdown {\n  position: relative;\n}\n.dropdown-toggle:focus {\n  outline: 0;\n}\n.dropdown-menu {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  z-index: 1000;\n  display: none;\n  float: left;\n  min-width: 160px;\n  padding: 5px 0;\n  margin: 2px 0 0;\n  font-size: 14px;\n  text-align: left;\n  list-style: none;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.15);\n  border-radius: 4px;\n  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n}\n.dropdown-menu.pull-right {\n  right: 0;\n  left: auto;\n}\n.dropdown-menu .divider {\n  height: 1px;\n  margin: 9px 0;\n  overflow: hidden;\n  background-color: #e5e5e5;\n}\n.dropdown-menu > li > a {\n  display: block;\n  padding: 3px 20px;\n  clear: both;\n  font-weight: 400;\n  line-height: 1.42857143;\n  color: #333333;\n  white-space: nowrap;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n  color: #262626;\n  text-decoration: none;\n  background-color: #f5f5f5;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n  color: #fff;\n  text-decoration: none;\n  background-color: #337ab7;\n  outline: 0;\n}\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n  color: #777777;\n}\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n  text-decoration: none;\n  cursor: not-allowed;\n  background-color: transparent;\n  background-image: none;\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n}\n.open > .dropdown-menu {\n  display: block;\n}\n.open > a {\n  outline: 0;\n}\n.dropdown-menu-right {\n  right: 0;\n  left: auto;\n}\n.dropdown-menu-left {\n  right: auto;\n  left: 0;\n}\n.dropdown-header {\n  display: block;\n  padding: 3px 20px;\n  font-size: 12px;\n  line-height: 1.42857143;\n  color: #777777;\n  white-space: nowrap;\n}\n.dropdown-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 990;\n}\n.pull-right > .dropdown-menu {\n  right: 0;\n  left: auto;\n}\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n  content: \"\";\n  border-top: 0;\n  border-bottom: 4px dashed;\n  border-bottom: 4px solid \\9;\n}\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n  top: auto;\n  bottom: 100%;\n  margin-bottom: 2px;\n}\n@media (min-width: 768px) {\n  .navbar-right .dropdown-menu {\n    right: 0;\n    left: auto;\n  }\n  .navbar-right .dropdown-menu-left {\n    right: auto;\n    left: 0;\n  }\n}\n.btn-group,\n.btn-group-vertical {\n  position: relative;\n  display: inline-block;\n  vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n  position: relative;\n  float: left;\n}\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus,\n.btn-group > .btn:active,\n.btn-group-vertical > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn.active {\n  z-index: 2;\n}\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group {\n  margin-left: -1px;\n}\n.btn-toolbar {\n  margin-left: -5px;\n}\n.btn-toolbar .btn,\n.btn-toolbar .btn-group,\n.btn-toolbar .input-group {\n  float: left;\n}\n.btn-toolbar > .btn,\n.btn-toolbar > .btn-group,\n.btn-toolbar > .input-group {\n  margin-left: 5px;\n}\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n  border-radius: 0;\n}\n.btn-group > .btn:first-child {\n  margin-left: 0;\n}\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group > .btn-group {\n  float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n  outline: 0;\n}\n.btn-group > .btn + .dropdown-toggle {\n  padding-right: 8px;\n  padding-left: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n  padding-right: 12px;\n  padding-left: 12px;\n}\n.btn-group.open .dropdown-toggle {\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-group.open .dropdown-toggle.btn-link {\n  -webkit-box-shadow: none;\n  box-shadow: none;\n}\n.btn .caret {\n  margin-left: 0;\n}\n.btn-lg .caret {\n  border-width: 5px 5px 0;\n  border-bottom-width: 0;\n}\n.dropup .btn-lg .caret {\n  border-width: 0 5px 5px;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group,\n.btn-group-vertical > .btn-group > .btn {\n  display: block;\n  float: none;\n  width: 100%;\n  max-width: 100%;\n}\n.btn-group-vertical > .btn-group > .btn {\n  float: none;\n}\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n  margin-top: -1px;\n  margin-left: 0;\n}\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n  border-radius: 0;\n}\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n  border-top-left-radius: 4px;\n  border-top-right-radius: 4px;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 4px;\n  border-bottom-left-radius: 4px;\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.btn-group-justified {\n  display: table;\n  width: 100%;\n  table-layout: fixed;\n  border-collapse: separate;\n}\n.btn-group-justified > .btn,\n.btn-group-justified > .btn-group {\n  display: table-cell;\n  float: none;\n  width: 1%;\n}\n.btn-group-justified > .btn-group .btn {\n  width: 100%;\n}\n.btn-group-justified > .btn-group .dropdown-menu {\n  left: auto;\n}\n[data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n  position: absolute;\n  clip: rect(0, 0, 0, 0);\n  pointer-events: none;\n}\n.input-group {\n  position: relative;\n  display: table;\n  border-collapse: separate;\n}\n.input-group[class*=\"col-\"] {\n  float: none;\n  padding-right: 0;\n  padding-left: 0;\n}\n.input-group .form-control {\n  position: relative;\n  z-index: 2;\n  float: left;\n  width: 100%;\n  margin-bottom: 0;\n}\n.input-group .form-control:focus {\n  z-index: 3;\n}\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\nselect.input-group-lg > .form-control,\nselect.input-group-lg > .input-group-addon,\nselect.input-group-lg > .input-group-btn > .btn {\n  height: 46px;\n  line-height: 46px;\n}\ntextarea.input-group-lg > .form-control,\ntextarea.input-group-lg > .input-group-addon,\ntextarea.input-group-lg > .input-group-btn > .btn,\nselect[multiple].input-group-lg > .form-control,\nselect[multiple].input-group-lg > .input-group-addon,\nselect[multiple].input-group-lg > .input-group-btn > .btn {\n  height: auto;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\nselect.input-group-sm > .form-control,\nselect.input-group-sm > .input-group-addon,\nselect.input-group-sm > .input-group-btn > .btn {\n  height: 30px;\n  line-height: 30px;\n}\ntextarea.input-group-sm > .form-control,\ntextarea.input-group-sm > .input-group-addon,\ntextarea.input-group-sm > .input-group-btn > .btn,\nselect[multiple].input-group-sm > .form-control,\nselect[multiple].input-group-sm > .input-group-addon,\nselect[multiple].input-group-sm > .input-group-btn > .btn {\n  height: auto;\n}\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n  display: table-cell;\n}\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n  border-radius: 0;\n}\n.input-group-addon,\n.input-group-btn {\n  width: 1%;\n  white-space: nowrap;\n  vertical-align: middle;\n}\n.input-group-addon {\n  padding: 6px 12px;\n  font-size: 14px;\n  font-weight: 400;\n  line-height: 1;\n  color: #555555;\n  text-align: center;\n  background-color: #eeeeee;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n}\n.input-group-addon.input-sm {\n  padding: 5px 10px;\n  font-size: 12px;\n  border-radius: 3px;\n}\n.input-group-addon.input-lg {\n  padding: 10px 16px;\n  font-size: 18px;\n  border-radius: 6px;\n}\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n  margin-top: 0;\n}\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.input-group-addon:first-child {\n  border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.input-group-addon:last-child {\n  border-left: 0;\n}\n.input-group-btn {\n  position: relative;\n  font-size: 0;\n  white-space: nowrap;\n}\n.input-group-btn > .btn {\n  position: relative;\n}\n.input-group-btn > .btn + .btn {\n  margin-left: -1px;\n}\n.input-group-btn > .btn:hover,\n.input-group-btn > .btn:focus,\n.input-group-btn > .btn:active {\n  z-index: 2;\n}\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group {\n  margin-right: -1px;\n}\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group {\n  z-index: 2;\n  margin-left: -1px;\n}\n.nav {\n  padding-left: 0;\n  margin-bottom: 0;\n  list-style: none;\n}\n.nav > li {\n  position: relative;\n  display: block;\n}\n.nav > li > a {\n  position: relative;\n  display: block;\n  padding: 10px 15px;\n}\n.nav > li > a:hover,\n.nav > li > a:focus {\n  text-decoration: none;\n  background-color: #eeeeee;\n}\n.nav > li.disabled > a {\n  color: #777777;\n}\n.nav > li.disabled > a:hover,\n.nav > li.disabled > a:focus {\n  color: #777777;\n  text-decoration: none;\n  cursor: not-allowed;\n  background-color: transparent;\n}\n.nav .open > a,\n.nav .open > a:hover,\n.nav .open > a:focus {\n  background-color: #eeeeee;\n  border-color: #337ab7;\n}\n.nav .nav-divider {\n  height: 1px;\n  margin: 9px 0;\n  overflow: hidden;\n  background-color: #e5e5e5;\n}\n.nav > li > a > img {\n  max-width: none;\n}\n.nav-tabs {\n  border-bottom: 1px solid #ddd;\n}\n.nav-tabs > li {\n  float: left;\n  margin-bottom: -1px;\n}\n.nav-tabs > li > a {\n  margin-right: 2px;\n  line-height: 1.42857143;\n  border: 1px solid transparent;\n  border-radius: 4px 4px 0 0;\n}\n.nav-tabs > li > a:hover {\n  border-color: #eeeeee #eeeeee #ddd;\n}\n.nav-tabs > li.active > a,\n.nav-tabs > li.active > a:hover,\n.nav-tabs > li.active > a:focus {\n  color: #555555;\n  cursor: default;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-bottom-color: transparent;\n}\n.nav-tabs.nav-justified {\n  width: 100%;\n  border-bottom: 0;\n}\n.nav-tabs.nav-justified > li {\n  float: none;\n}\n.nav-tabs.nav-justified > li > a {\n  margin-bottom: 5px;\n  text-align: center;\n}\n.nav-tabs.nav-justified > .dropdown .dropdown-menu {\n  top: auto;\n  left: auto;\n}\n@media (min-width: 768px) {\n  .nav-tabs.nav-justified > li {\n    display: table-cell;\n    width: 1%;\n  }\n  .nav-tabs.nav-justified > li > a {\n    margin-bottom: 0;\n  }\n}\n.nav-tabs.nav-justified > li > a {\n  margin-right: 0;\n  border-radius: 4px;\n}\n.nav-tabs.nav-justified > .active > a,\n.nav-tabs.nav-justified > .active > a:hover,\n.nav-tabs.nav-justified > .active > a:focus {\n  border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n  .nav-tabs.nav-justified > li > a {\n    border-bottom: 1px solid #ddd;\n    border-radius: 4px 4px 0 0;\n  }\n  .nav-tabs.nav-justified > .active > a,\n  .nav-tabs.nav-justified > .active > a:hover,\n  .nav-tabs.nav-justified > .active > a:focus {\n    border-bottom-color: #fff;\n  }\n}\n.nav-pills > li {\n  float: left;\n}\n.nav-pills > li > a {\n  border-radius: 4px;\n}\n.nav-pills > li + li {\n  margin-left: 2px;\n}\n.nav-pills > li.active > a,\n.nav-pills > li.active > a:hover,\n.nav-pills > li.active > a:focus {\n  color: #fff;\n  background-color: #337ab7;\n}\n.nav-stacked > li {\n  float: none;\n}\n.nav-stacked > li + li {\n  margin-top: 2px;\n  margin-left: 0;\n}\n.nav-justified {\n  width: 100%;\n}\n.nav-justified > li {\n  float: none;\n}\n.nav-justified > li > a {\n  margin-bottom: 5px;\n  text-align: center;\n}\n.nav-justified > .dropdown .dropdown-menu {\n  top: auto;\n  left: auto;\n}\n@media (min-width: 768px) {\n  .nav-justified > li {\n    display: table-cell;\n    width: 1%;\n  }\n  .nav-justified > li > a {\n    margin-bottom: 0;\n  }\n}\n.nav-tabs-justified {\n  border-bottom: 0;\n}\n.nav-tabs-justified > li > a {\n  margin-right: 0;\n  border-radius: 4px;\n}\n.nav-tabs-justified > .active > a,\n.nav-tabs-justified > .active > a:hover,\n.nav-tabs-justified > .active > a:focus {\n  border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n  .nav-tabs-justified > li > a {\n    border-bottom: 1px solid #ddd;\n    border-radius: 4px 4px 0 0;\n  }\n  .nav-tabs-justified > .active > a,\n  .nav-tabs-justified > .active > a:hover,\n  .nav-tabs-justified > .active > a:focus {\n    border-bottom-color: #fff;\n  }\n}\n.tab-content > .tab-pane {\n  display: none;\n}\n.tab-content > .active {\n  display: block;\n}\n.nav-tabs .dropdown-menu {\n  margin-top: -1px;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.navbar {\n  position: relative;\n  min-height: 50px;\n  margin-bottom: 20px;\n  border: 1px solid transparent;\n}\n@media (min-width: 768px) {\n  .navbar {\n    border-radius: 4px;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-header {\n    float: left;\n  }\n}\n.navbar-collapse {\n  padding-right: 15px;\n  padding-left: 15px;\n  overflow-x: visible;\n  border-top: 1px solid transparent;\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\n  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\n  -webkit-overflow-scrolling: touch;\n}\n.navbar-collapse.in {\n  overflow-y: auto;\n}\n@media (min-width: 768px) {\n  .navbar-collapse {\n    width: auto;\n    border-top: 0;\n    -webkit-box-shadow: none;\n    box-shadow: none;\n  }\n  .navbar-collapse.collapse {\n    display: block !important;\n    height: auto !important;\n    padding-bottom: 0;\n    overflow: visible !important;\n  }\n  .navbar-collapse.in {\n    overflow-y: visible;\n  }\n  .navbar-fixed-top .navbar-collapse,\n  .navbar-static-top .navbar-collapse,\n  .navbar-fixed-bottom .navbar-collapse {\n    padding-right: 0;\n    padding-left: 0;\n  }\n}\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  position: fixed;\n  right: 0;\n  left: 0;\n  z-index: 1030;\n}\n.navbar-fixed-top .navbar-collapse,\n.navbar-fixed-bottom .navbar-collapse {\n  max-height: 340px;\n}\n@media (max-device-width: 480px) and (orientation: landscape) {\n  .navbar-fixed-top .navbar-collapse,\n  .navbar-fixed-bottom .navbar-collapse {\n    max-height: 200px;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-fixed-top,\n  .navbar-fixed-bottom {\n    border-radius: 0;\n  }\n}\n.navbar-fixed-top {\n  top: 0;\n  border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n  bottom: 0;\n  margin-bottom: 0;\n  border-width: 1px 0 0;\n}\n.container > .navbar-header,\n.container-fluid > .navbar-header,\n.container > .navbar-collapse,\n.container-fluid > .navbar-collapse {\n  margin-right: -15px;\n  margin-left: -15px;\n}\n@media (min-width: 768px) {\n  .container > .navbar-header,\n  .container-fluid > .navbar-header,\n  .container > .navbar-collapse,\n  .container-fluid > .navbar-collapse {\n    margin-right: 0;\n    margin-left: 0;\n  }\n}\n.navbar-static-top {\n  z-index: 1000;\n  border-width: 0 0 1px;\n}\n@media (min-width: 768px) {\n  .navbar-static-top {\n    border-radius: 0;\n  }\n}\n.navbar-brand {\n  float: left;\n  height: 50px;\n  padding: 15px 15px;\n  font-size: 18px;\n  line-height: 20px;\n}\n.navbar-brand:hover,\n.navbar-brand:focus {\n  text-decoration: none;\n}\n.navbar-brand > img {\n  display: block;\n}\n@media (min-width: 768px) {\n  .navbar > .container .navbar-brand,\n  .navbar > .container-fluid .navbar-brand {\n    margin-left: -15px;\n  }\n}\n.navbar-toggle {\n  position: relative;\n  float: right;\n  padding: 9px 10px;\n  margin-right: 15px;\n  margin-top: 8px;\n  margin-bottom: 8px;\n  background-color: transparent;\n  background-image: none;\n  border: 1px solid transparent;\n  border-radius: 4px;\n}\n.navbar-toggle:focus {\n  outline: 0;\n}\n.navbar-toggle .icon-bar {\n  display: block;\n  width: 22px;\n  height: 2px;\n  border-radius: 1px;\n}\n.navbar-toggle .icon-bar + .icon-bar {\n  margin-top: 4px;\n}\n@media (min-width: 768px) {\n  .navbar-toggle {\n    display: none;\n  }\n}\n.navbar-nav {\n  margin: 7.5px -15px;\n}\n.navbar-nav > li > a {\n  padding-top: 10px;\n  padding-bottom: 10px;\n  line-height: 20px;\n}\n@media (max-width: 767px) {\n  .navbar-nav .open .dropdown-menu {\n    position: static;\n    float: none;\n    width: auto;\n    margin-top: 0;\n    background-color: transparent;\n    border: 0;\n    -webkit-box-shadow: none;\n    box-shadow: none;\n  }\n  .navbar-nav .open .dropdown-menu > li > a,\n  .navbar-nav .open .dropdown-menu .dropdown-header {\n    padding: 5px 15px 5px 25px;\n  }\n  .navbar-nav .open .dropdown-menu > li > a {\n    line-height: 20px;\n  }\n  .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-nav .open .dropdown-menu > li > a:focus {\n    background-image: none;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-nav {\n    float: left;\n    margin: 0;\n  }\n  .navbar-nav > li {\n    float: left;\n  }\n  .navbar-nav > li > a {\n    padding-top: 15px;\n    padding-bottom: 15px;\n  }\n}\n.navbar-form {\n  padding: 10px 15px;\n  margin-right: -15px;\n  margin-left: -15px;\n  border-top: 1px solid transparent;\n  border-bottom: 1px solid transparent;\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n  margin-top: 8px;\n  margin-bottom: 8px;\n}\n@media (min-width: 768px) {\n  .navbar-form .form-group {\n    display: inline-block;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .form-control {\n    display: inline-block;\n    width: auto;\n    vertical-align: middle;\n  }\n  .navbar-form .form-control-static {\n    display: inline-block;\n  }\n  .navbar-form .input-group {\n    display: inline-table;\n    vertical-align: middle;\n  }\n  .navbar-form .input-group .input-group-addon,\n  .navbar-form .input-group .input-group-btn,\n  .navbar-form .input-group .form-control {\n    width: auto;\n  }\n  .navbar-form .input-group > .form-control {\n    width: 100%;\n  }\n  .navbar-form .control-label {\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .radio,\n  .navbar-form .checkbox {\n    display: inline-block;\n    margin-top: 0;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .radio label,\n  .navbar-form .checkbox label {\n    padding-left: 0;\n  }\n  .navbar-form .radio input[type=\"radio\"],\n  .navbar-form .checkbox input[type=\"checkbox\"] {\n    position: relative;\n    margin-left: 0;\n  }\n  .navbar-form .has-feedback .form-control-feedback {\n    top: 0;\n  }\n}\n@media (max-width: 767px) {\n  .navbar-form .form-group {\n    margin-bottom: 5px;\n  }\n  .navbar-form .form-group:last-child {\n    margin-bottom: 0;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-form {\n    width: auto;\n    padding-top: 0;\n    padding-bottom: 0;\n    margin-right: 0;\n    margin-left: 0;\n    border: 0;\n    -webkit-box-shadow: none;\n    box-shadow: none;\n  }\n}\n.navbar-nav > li > .dropdown-menu {\n  margin-top: 0;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n  margin-bottom: 0;\n  border-top-left-radius: 4px;\n  border-top-right-radius: 4px;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.navbar-btn {\n  margin-top: 8px;\n  margin-bottom: 8px;\n}\n.navbar-btn.btn-sm {\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\n.navbar-btn.btn-xs {\n  margin-top: 14px;\n  margin-bottom: 14px;\n}\n.navbar-text {\n  margin-top: 15px;\n  margin-bottom: 15px;\n}\n@media (min-width: 768px) {\n  .navbar-text {\n    float: left;\n    margin-right: 15px;\n    margin-left: 15px;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-left {\n    float: left !important;\n  }\n  .navbar-right {\n    float: right !important;\n    margin-right: -15px;\n  }\n  .navbar-right ~ .navbar-right {\n    margin-right: 0;\n  }\n}\n.navbar-default {\n  background-color: #f8f8f8;\n  border-color: #e7e7e7;\n}\n.navbar-default .navbar-brand {\n  color: #777;\n}\n.navbar-default .navbar-brand:hover,\n.navbar-default .navbar-brand:focus {\n  color: #5e5e5e;\n  background-color: transparent;\n}\n.navbar-default .navbar-text {\n  color: #777;\n}\n.navbar-default .navbar-nav > li > a {\n  color: #777;\n}\n.navbar-default .navbar-nav > li > a:hover,\n.navbar-default .navbar-nav > li > a:focus {\n  color: #333;\n  background-color: transparent;\n}\n.navbar-default .navbar-nav > .active > a,\n.navbar-default .navbar-nav > .active > a:hover,\n.navbar-default .navbar-nav > .active > a:focus {\n  color: #555;\n  background-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .disabled > a,\n.navbar-default .navbar-nav > .disabled > a:hover,\n.navbar-default .navbar-nav > .disabled > a:focus {\n  color: #ccc;\n  background-color: transparent;\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .open > a:hover,\n.navbar-default .navbar-nav > .open > a:focus {\n  color: #555;\n  background-color: #e7e7e7;\n}\n@media (max-width: 767px) {\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n    color: #777;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n    color: #333;\n    background-color: transparent;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n    color: #555;\n    background-color: #e7e7e7;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n    color: #ccc;\n    background-color: transparent;\n  }\n}\n.navbar-default .navbar-toggle {\n  border-color: #ddd;\n}\n.navbar-default .navbar-toggle:hover,\n.navbar-default .navbar-toggle:focus {\n  background-color: #ddd;\n}\n.navbar-default .navbar-toggle .icon-bar {\n  background-color: #888;\n}\n.navbar-default .navbar-collapse,\n.navbar-default .navbar-form {\n  border-color: #e7e7e7;\n}\n.navbar-default .navbar-link {\n  color: #777;\n}\n.navbar-default .navbar-link:hover {\n  color: #333;\n}\n.navbar-default .btn-link {\n  color: #777;\n}\n.navbar-default .btn-link:hover,\n.navbar-default .btn-link:focus {\n  color: #333;\n}\n.navbar-default .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-default .btn-link:hover,\n.navbar-default .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-default .btn-link:focus {\n  color: #ccc;\n}\n.navbar-inverse {\n  background-color: #222;\n  border-color: #080808;\n}\n.navbar-inverse .navbar-brand {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-brand:hover,\n.navbar-inverse .navbar-brand:focus {\n  color: #fff;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-text {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a:hover,\n.navbar-inverse .navbar-nav > li > a:focus {\n  color: #fff;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .active > a,\n.navbar-inverse .navbar-nav > .active > a:hover,\n.navbar-inverse .navbar-nav > .active > a:focus {\n  color: #fff;\n  background-color: #080808;\n}\n.navbar-inverse .navbar-nav > .disabled > a,\n.navbar-inverse .navbar-nav > .disabled > a:hover,\n.navbar-inverse .navbar-nav > .disabled > a:focus {\n  color: #444;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .open > a:hover,\n.navbar-inverse .navbar-nav > .open > a:focus {\n  color: #fff;\n  background-color: #080808;\n}\n@media (max-width: 767px) {\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n    border-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n    background-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n    color: #9d9d9d;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n    color: #fff;\n    background-color: transparent;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n    color: #fff;\n    background-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n    color: #444;\n    background-color: transparent;\n  }\n}\n.navbar-inverse .navbar-toggle {\n  border-color: #333;\n}\n.navbar-inverse .navbar-toggle:hover,\n.navbar-inverse .navbar-toggle:focus {\n  background-color: #333;\n}\n.navbar-inverse .navbar-toggle .icon-bar {\n  background-color: #fff;\n}\n.navbar-inverse .navbar-collapse,\n.navbar-inverse .navbar-form {\n  border-color: #101010;\n}\n.navbar-inverse .navbar-link {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-link:hover {\n  color: #fff;\n}\n.navbar-inverse .btn-link {\n  color: #9d9d9d;\n}\n.navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link:focus {\n  color: #fff;\n}\n.navbar-inverse .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-inverse .btn-link:focus {\n  color: #444;\n}\n.breadcrumb {\n  padding: 8px 15px;\n  margin-bottom: 20px;\n  list-style: none;\n  background-color: #f5f5f5;\n  border-radius: 4px;\n}\n.breadcrumb > li {\n  display: inline-block;\n}\n.breadcrumb > li + li:before {\n  padding: 0 5px;\n  color: #ccc;\n  content: \"/\\00a0\";\n}\n.breadcrumb > .active {\n  color: #777777;\n}\n.pagination {\n  display: inline-block;\n  padding-left: 0;\n  margin: 20px 0;\n  border-radius: 4px;\n}\n.pagination > li {\n  display: inline;\n}\n.pagination > li > a,\n.pagination > li > span {\n  position: relative;\n  float: left;\n  padding: 6px 12px;\n  margin-left: -1px;\n  line-height: 1.42857143;\n  color: #337ab7;\n  text-decoration: none;\n  background-color: #fff;\n  border: 1px solid #ddd;\n}\n.pagination > li > a:hover,\n.pagination > li > span:hover,\n.pagination > li > a:focus,\n.pagination > li > span:focus {\n  z-index: 2;\n  color: #23527c;\n  background-color: #eeeeee;\n  border-color: #ddd;\n}\n.pagination > li:first-child > a,\n.pagination > li:first-child > span {\n  margin-left: 0;\n  border-top-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n}\n.pagination > li:last-child > a,\n.pagination > li:last-child > span {\n  border-top-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n}\n.pagination > .active > a,\n.pagination > .active > span,\n.pagination > .active > a:hover,\n.pagination > .active > span:hover,\n.pagination > .active > a:focus,\n.pagination > .active > span:focus {\n  z-index: 3;\n  color: #fff;\n  cursor: default;\n  background-color: #337ab7;\n  border-color: #337ab7;\n}\n.pagination > .disabled > span,\n.pagination > .disabled > span:hover,\n.pagination > .disabled > span:focus,\n.pagination > .disabled > a,\n.pagination > .disabled > a:hover,\n.pagination > .disabled > a:focus {\n  color: #777777;\n  cursor: not-allowed;\n  background-color: #fff;\n  border-color: #ddd;\n}\n.pagination-lg > li > a,\n.pagination-lg > li > span {\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n}\n.pagination-lg > li:first-child > a,\n.pagination-lg > li:first-child > span {\n  border-top-left-radius: 6px;\n  border-bottom-left-radius: 6px;\n}\n.pagination-lg > li:last-child > a,\n.pagination-lg > li:last-child > span {\n  border-top-right-radius: 6px;\n  border-bottom-right-radius: 6px;\n}\n.pagination-sm > li > a,\n.pagination-sm > li > span {\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n}\n.pagination-sm > li:first-child > a,\n.pagination-sm > li:first-child > span {\n  border-top-left-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.pagination-sm > li:last-child > a,\n.pagination-sm > li:last-child > span {\n  border-top-right-radius: 3px;\n  border-bottom-right-radius: 3px;\n}\n.pager {\n  padding-left: 0;\n  margin: 20px 0;\n  text-align: center;\n  list-style: none;\n}\n.pager li {\n  display: inline;\n}\n.pager li > a,\n.pager li > span {\n  display: inline-block;\n  padding: 5px 14px;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 15px;\n}\n.pager li > a:hover,\n.pager li > a:focus {\n  text-decoration: none;\n  background-color: #eeeeee;\n}\n.pager .next > a,\n.pager .next > span {\n  float: right;\n}\n.pager .previous > a,\n.pager .previous > span {\n  float: left;\n}\n.pager .disabled > a,\n.pager .disabled > a:hover,\n.pager .disabled > a:focus,\n.pager .disabled > span {\n  color: #777777;\n  cursor: not-allowed;\n  background-color: #fff;\n}\n.label {\n  display: inline;\n  padding: 0.2em 0.6em 0.3em;\n  font-size: 75%;\n  font-weight: 700;\n  line-height: 1;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  border-radius: 0.25em;\n}\na.label:hover,\na.label:focus {\n  color: #fff;\n  text-decoration: none;\n  cursor: pointer;\n}\n.label:empty {\n  display: none;\n}\n.btn .label {\n  position: relative;\n  top: -1px;\n}\n.label-default {\n  background-color: #777777;\n}\n.label-default[href]:hover,\n.label-default[href]:focus {\n  background-color: #5e5e5e;\n}\n.label-primary {\n  background-color: #337ab7;\n}\n.label-primary[href]:hover,\n.label-primary[href]:focus {\n  background-color: #286090;\n}\n.label-success {\n  background-color: #5cb85c;\n}\n.label-success[href]:hover,\n.label-success[href]:focus {\n  background-color: #449d44;\n}\n.label-info {\n  background-color: #5bc0de;\n}\n.label-info[href]:hover,\n.label-info[href]:focus {\n  background-color: #31b0d5;\n}\n.label-warning {\n  background-color: #f0ad4e;\n}\n.label-warning[href]:hover,\n.label-warning[href]:focus {\n  background-color: #ec971f;\n}\n.label-danger {\n  background-color: #d9534f;\n}\n.label-danger[href]:hover,\n.label-danger[href]:focus {\n  background-color: #c9302c;\n}\n.badge {\n  display: inline-block;\n  min-width: 10px;\n  padding: 3px 7px;\n  font-size: 12px;\n  font-weight: bold;\n  line-height: 1;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: middle;\n  background-color: #777777;\n  border-radius: 10px;\n}\n.badge:empty {\n  display: none;\n}\n.btn .badge {\n  position: relative;\n  top: -1px;\n}\n.btn-xs .badge,\n.btn-group-xs > .btn .badge {\n  top: 0;\n  padding: 1px 5px;\n}\na.badge:hover,\na.badge:focus {\n  color: #fff;\n  text-decoration: none;\n  cursor: pointer;\n}\n.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n  color: #337ab7;\n  background-color: #fff;\n}\n.list-group-item > .badge {\n  float: right;\n}\n.list-group-item > .badge + .badge {\n  margin-right: 5px;\n}\n.nav-pills > li > a > .badge {\n  margin-left: 3px;\n}\n.jumbotron {\n  padding-top: 30px;\n  padding-bottom: 30px;\n  margin-bottom: 30px;\n  color: inherit;\n  background-color: #eeeeee;\n}\n.jumbotron h1,\n.jumbotron .h1 {\n  color: inherit;\n}\n.jumbotron p {\n  margin-bottom: 15px;\n  font-size: 21px;\n  font-weight: 200;\n}\n.jumbotron > hr {\n  border-top-color: #d5d5d5;\n}\n.container .jumbotron,\n.container-fluid .jumbotron {\n  padding-right: 15px;\n  padding-left: 15px;\n  border-radius: 6px;\n}\n.jumbotron .container {\n  max-width: 100%;\n}\n@media screen and (min-width: 768px) {\n  .jumbotron {\n    padding-top: 48px;\n    padding-bottom: 48px;\n  }\n  .container .jumbotron,\n  .container-fluid .jumbotron {\n    padding-right: 60px;\n    padding-left: 60px;\n  }\n  .jumbotron h1,\n  .jumbotron .h1 {\n    font-size: 63px;\n  }\n}\n.thumbnail {\n  display: block;\n  padding: 4px;\n  margin-bottom: 20px;\n  line-height: 1.42857143;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 4px;\n  -webkit-transition: border 0.2s ease-in-out;\n  -o-transition: border 0.2s ease-in-out;\n  transition: border 0.2s ease-in-out;\n}\n.thumbnail > img,\n.thumbnail a > img {\n  margin-right: auto;\n  margin-left: auto;\n}\na.thumbnail:hover,\na.thumbnail:focus,\na.thumbnail.active {\n  border-color: #337ab7;\n}\n.thumbnail .caption {\n  padding: 9px;\n  color: #333333;\n}\n.alert {\n  padding: 15px;\n  margin-bottom: 20px;\n  border: 1px solid transparent;\n  border-radius: 4px;\n}\n.alert h4 {\n  margin-top: 0;\n  color: inherit;\n}\n.alert .alert-link {\n  font-weight: bold;\n}\n.alert > p,\n.alert > ul {\n  margin-bottom: 0;\n}\n.alert > p + p {\n  margin-top: 5px;\n}\n.alert-dismissable,\n.alert-dismissible {\n  padding-right: 35px;\n}\n.alert-dismissable .close,\n.alert-dismissible .close {\n  position: relative;\n  top: -2px;\n  right: -21px;\n  color: inherit;\n}\n.alert-success {\n  color: #3c763d;\n  background-color: #dff0d8;\n  border-color: #d6e9c6;\n}\n.alert-success hr {\n  border-top-color: #c9e2b3;\n}\n.alert-success .alert-link {\n  color: #2b542c;\n}\n.alert-info {\n  color: #31708f;\n  background-color: #d9edf7;\n  border-color: #bce8f1;\n}\n.alert-info hr {\n  border-top-color: #a6e1ec;\n}\n.alert-info .alert-link {\n  color: #245269;\n}\n.alert-warning {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n  border-color: #faebcc;\n}\n.alert-warning hr {\n  border-top-color: #f7e1b5;\n}\n.alert-warning .alert-link {\n  color: #66512c;\n}\n.alert-danger {\n  color: #a94442;\n  background-color: #f2dede;\n  border-color: #ebccd1;\n}\n.alert-danger hr {\n  border-top-color: #e4b9c0;\n}\n.alert-danger .alert-link {\n  color: #843534;\n}\n@-webkit-keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n@-o-keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n@keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n.progress {\n  height: 20px;\n  margin-bottom: 20px;\n  overflow: hidden;\n  background-color: #f5f5f5;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n.progress-bar {\n  float: left;\n  width: 0%;\n  height: 100%;\n  font-size: 12px;\n  line-height: 20px;\n  color: #fff;\n  text-align: center;\n  background-color: #337ab7;\n  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n  -webkit-transition: width 0.6s ease;\n  -o-transition: width 0.6s ease;\n  transition: width 0.6s ease;\n}\n.progress-striped .progress-bar,\n.progress-bar-striped {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  -webkit-background-size: 40px 40px;\n  background-size: 40px 40px;\n}\n.progress.active .progress-bar,\n.progress-bar.active {\n  -webkit-animation: progress-bar-stripes 2s linear infinite;\n  -o-animation: progress-bar-stripes 2s linear infinite;\n  animation: progress-bar-stripes 2s linear infinite;\n}\n.progress-bar-success {\n  background-color: #5cb85c;\n}\n.progress-striped .progress-bar-success {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-info {\n  background-color: #5bc0de;\n}\n.progress-striped .progress-bar-info {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-warning {\n  background-color: #f0ad4e;\n}\n.progress-striped .progress-bar-warning {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-danger {\n  background-color: #d9534f;\n}\n.progress-striped .progress-bar-danger {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.media {\n  margin-top: 15px;\n}\n.media:first-child {\n  margin-top: 0;\n}\n.media,\n.media-body {\n  overflow: hidden;\n  zoom: 1;\n}\n.media-body {\n  width: 10000px;\n}\n.media-object {\n  display: block;\n}\n.media-object.img-thumbnail {\n  max-width: none;\n}\n.media-right,\n.media > .pull-right {\n  padding-left: 10px;\n}\n.media-left,\n.media > .pull-left {\n  padding-right: 10px;\n}\n.media-left,\n.media-right,\n.media-body {\n  display: table-cell;\n  vertical-align: top;\n}\n.media-middle {\n  vertical-align: middle;\n}\n.media-bottom {\n  vertical-align: bottom;\n}\n.media-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n.media-list {\n  padding-left: 0;\n  list-style: none;\n}\n.list-group {\n  padding-left: 0;\n  margin-bottom: 20px;\n}\n.list-group-item {\n  position: relative;\n  display: block;\n  padding: 10px 15px;\n  margin-bottom: -1px;\n  background-color: #fff;\n  border: 1px solid #ddd;\n}\n.list-group-item:first-child {\n  border-top-left-radius: 4px;\n  border-top-right-radius: 4px;\n}\n.list-group-item:last-child {\n  margin-bottom: 0;\n  border-bottom-right-radius: 4px;\n  border-bottom-left-radius: 4px;\n}\n.list-group-item.disabled,\n.list-group-item.disabled:hover,\n.list-group-item.disabled:focus {\n  color: #777777;\n  cursor: not-allowed;\n  background-color: #eeeeee;\n}\n.list-group-item.disabled .list-group-item-heading,\n.list-group-item.disabled:hover .list-group-item-heading,\n.list-group-item.disabled:focus .list-group-item-heading {\n  color: inherit;\n}\n.list-group-item.disabled .list-group-item-text,\n.list-group-item.disabled:hover .list-group-item-text,\n.list-group-item.disabled:focus .list-group-item-text {\n  color: #777777;\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n  z-index: 2;\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #337ab7;\n}\n.list-group-item.active .list-group-item-heading,\n.list-group-item.active:hover .list-group-item-heading,\n.list-group-item.active:focus .list-group-item-heading,\n.list-group-item.active .list-group-item-heading > small,\n.list-group-item.active:hover .list-group-item-heading > small,\n.list-group-item.active:focus .list-group-item-heading > small,\n.list-group-item.active .list-group-item-heading > .small,\n.list-group-item.active:hover .list-group-item-heading > .small,\n.list-group-item.active:focus .list-group-item-heading > .small {\n  color: inherit;\n}\n.list-group-item.active .list-group-item-text,\n.list-group-item.active:hover .list-group-item-text,\n.list-group-item.active:focus .list-group-item-text {\n  color: #c7ddef;\n}\na.list-group-item,\nbutton.list-group-item {\n  color: #555;\n}\na.list-group-item .list-group-item-heading,\nbutton.list-group-item .list-group-item-heading {\n  color: #333;\n}\na.list-group-item:hover,\nbutton.list-group-item:hover,\na.list-group-item:focus,\nbutton.list-group-item:focus {\n  color: #555;\n  text-decoration: none;\n  background-color: #f5f5f5;\n}\nbutton.list-group-item {\n  width: 100%;\n  text-align: left;\n}\n.list-group-item-success {\n  color: #3c763d;\n  background-color: #dff0d8;\n}\na.list-group-item-success,\nbutton.list-group-item-success {\n  color: #3c763d;\n}\na.list-group-item-success .list-group-item-heading,\nbutton.list-group-item-success .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-success:hover,\nbutton.list-group-item-success:hover,\na.list-group-item-success:focus,\nbutton.list-group-item-success:focus {\n  color: #3c763d;\n  background-color: #d0e9c6;\n}\na.list-group-item-success.active,\nbutton.list-group-item-success.active,\na.list-group-item-success.active:hover,\nbutton.list-group-item-success.active:hover,\na.list-group-item-success.active:focus,\nbutton.list-group-item-success.active:focus {\n  color: #fff;\n  background-color: #3c763d;\n  border-color: #3c763d;\n}\n.list-group-item-info {\n  color: #31708f;\n  background-color: #d9edf7;\n}\na.list-group-item-info,\nbutton.list-group-item-info {\n  color: #31708f;\n}\na.list-group-item-info .list-group-item-heading,\nbutton.list-group-item-info .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-info:hover,\nbutton.list-group-item-info:hover,\na.list-group-item-info:focus,\nbutton.list-group-item-info:focus {\n  color: #31708f;\n  background-color: #c4e3f3;\n}\na.list-group-item-info.active,\nbutton.list-group-item-info.active,\na.list-group-item-info.active:hover,\nbutton.list-group-item-info.active:hover,\na.list-group-item-info.active:focus,\nbutton.list-group-item-info.active:focus {\n  color: #fff;\n  background-color: #31708f;\n  border-color: #31708f;\n}\n.list-group-item-warning {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n}\na.list-group-item-warning,\nbutton.list-group-item-warning {\n  color: #8a6d3b;\n}\na.list-group-item-warning .list-group-item-heading,\nbutton.list-group-item-warning .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-warning:hover,\nbutton.list-group-item-warning:hover,\na.list-group-item-warning:focus,\nbutton.list-group-item-warning:focus {\n  color: #8a6d3b;\n  background-color: #faf2cc;\n}\na.list-group-item-warning.active,\nbutton.list-group-item-warning.active,\na.list-group-item-warning.active:hover,\nbutton.list-group-item-warning.active:hover,\na.list-group-item-warning.active:focus,\nbutton.list-group-item-warning.active:focus {\n  color: #fff;\n  background-color: #8a6d3b;\n  border-color: #8a6d3b;\n}\n.list-group-item-danger {\n  color: #a94442;\n  background-color: #f2dede;\n}\na.list-group-item-danger,\nbutton.list-group-item-danger {\n  color: #a94442;\n}\na.list-group-item-danger .list-group-item-heading,\nbutton.list-group-item-danger .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-danger:hover,\nbutton.list-group-item-danger:hover,\na.list-group-item-danger:focus,\nbutton.list-group-item-danger:focus {\n  color: #a94442;\n  background-color: #ebcccc;\n}\na.list-group-item-danger.active,\nbutton.list-group-item-danger.active,\na.list-group-item-danger.active:hover,\nbutton.list-group-item-danger.active:hover,\na.list-group-item-danger.active:focus,\nbutton.list-group-item-danger.active:focus {\n  color: #fff;\n  background-color: #a94442;\n  border-color: #a94442;\n}\n.list-group-item-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n.list-group-item-text {\n  margin-bottom: 0;\n  line-height: 1.3;\n}\n.panel {\n  margin-bottom: 20px;\n  background-color: #fff;\n  border: 1px solid transparent;\n  border-radius: 4px;\n  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.panel-body {\n  padding: 15px;\n}\n.panel-heading {\n  padding: 10px 15px;\n  border-bottom: 1px solid transparent;\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel-heading > .dropdown .dropdown-toggle {\n  color: inherit;\n}\n.panel-title {\n  margin-top: 0;\n  margin-bottom: 0;\n  font-size: 16px;\n  color: inherit;\n}\n.panel-title > a,\n.panel-title > small,\n.panel-title > .small,\n.panel-title > small > a,\n.panel-title > .small > a {\n  color: inherit;\n}\n.panel-footer {\n  padding: 10px 15px;\n  background-color: #f5f5f5;\n  border-top: 1px solid #ddd;\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .list-group,\n.panel > .panel-collapse > .list-group {\n  margin-bottom: 0;\n}\n.panel > .list-group .list-group-item,\n.panel > .panel-collapse > .list-group .list-group-item {\n  border-width: 1px 0;\n  border-radius: 0;\n}\n.panel > .list-group:first-child .list-group-item:first-child,\n.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {\n  border-top: 0;\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel > .list-group:last-child .list-group-item:last-child,\n.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {\n  border-bottom: 0;\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.panel-heading + .list-group .list-group-item:first-child {\n  border-top-width: 0;\n}\n.list-group + .panel-footer {\n  border-top-width: 0;\n}\n.panel > .table,\n.panel > .table-responsive > .table,\n.panel > .panel-collapse > .table {\n  margin-bottom: 0;\n}\n.panel > .table caption,\n.panel > .table-responsive > .table caption,\n.panel > .panel-collapse > .table caption {\n  padding-right: 15px;\n  padding-left: 15px;\n}\n.panel > .table:first-child,\n.panel > .table-responsive:first-child > .table:first-child {\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n  border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n  border-top-right-radius: 3px;\n}\n.panel > .table:last-child,\n.panel > .table-responsive:last-child > .table:last-child {\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n  border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n  border-bottom-right-radius: 3px;\n}\n.panel > .panel-body + .table,\n.panel > .panel-body + .table-responsive,\n.panel > .table + .panel-body,\n.panel > .table-responsive + .panel-body {\n  border-top: 1px solid #ddd;\n}\n.panel > .table > tbody:first-child > tr:first-child th,\n.panel > .table > tbody:first-child > tr:first-child td {\n  border-top: 0;\n}\n.panel > .table-bordered,\n.panel > .table-responsive > .table-bordered {\n  border: 0;\n}\n.panel > .table-bordered > thead > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n.panel > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-bordered > thead > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n.panel > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-bordered > tfoot > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n  border-left: 0;\n}\n.panel > .table-bordered > thead > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n.panel > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-bordered > thead > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n.panel > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-bordered > tfoot > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n  border-right: 0;\n}\n.panel > .table-bordered > thead > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,\n.panel > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-bordered > thead > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,\n.panel > .table-bordered > tbody > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {\n  border-bottom: 0;\n}\n.panel > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-bordered > tfoot > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {\n  border-bottom: 0;\n}\n.panel > .table-responsive {\n  margin-bottom: 0;\n  border: 0;\n}\n.panel-group {\n  margin-bottom: 20px;\n}\n.panel-group .panel {\n  margin-bottom: 0;\n  border-radius: 4px;\n}\n.panel-group .panel + .panel {\n  margin-top: 5px;\n}\n.panel-group .panel-heading {\n  border-bottom: 0;\n}\n.panel-group .panel-heading + .panel-collapse > .panel-body,\n.panel-group .panel-heading + .panel-collapse > .list-group {\n  border-top: 1px solid #ddd;\n}\n.panel-group .panel-footer {\n  border-top: 0;\n}\n.panel-group .panel-footer + .panel-collapse .panel-body {\n  border-bottom: 1px solid #ddd;\n}\n.panel-default {\n  border-color: #ddd;\n}\n.panel-default > .panel-heading {\n  color: #333333;\n  background-color: #f5f5f5;\n  border-color: #ddd;\n}\n.panel-default > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #ddd;\n}\n.panel-default > .panel-heading .badge {\n  color: #f5f5f5;\n  background-color: #333333;\n}\n.panel-default > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #ddd;\n}\n.panel-primary {\n  border-color: #337ab7;\n}\n.panel-primary > .panel-heading {\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #337ab7;\n}\n.panel-primary > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #337ab7;\n}\n.panel-primary > .panel-heading .badge {\n  color: #337ab7;\n  background-color: #fff;\n}\n.panel-primary > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #337ab7;\n}\n.panel-success {\n  border-color: #d6e9c6;\n}\n.panel-success > .panel-heading {\n  color: #3c763d;\n  background-color: #dff0d8;\n  border-color: #d6e9c6;\n}\n.panel-success > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #d6e9c6;\n}\n.panel-success > .panel-heading .badge {\n  color: #dff0d8;\n  background-color: #3c763d;\n}\n.panel-success > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #d6e9c6;\n}\n.panel-info {\n  border-color: #bce8f1;\n}\n.panel-info > .panel-heading {\n  color: #31708f;\n  background-color: #d9edf7;\n  border-color: #bce8f1;\n}\n.panel-info > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #bce8f1;\n}\n.panel-info > .panel-heading .badge {\n  color: #d9edf7;\n  background-color: #31708f;\n}\n.panel-info > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #bce8f1;\n}\n.panel-warning {\n  border-color: #faebcc;\n}\n.panel-warning > .panel-heading {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n  border-color: #faebcc;\n}\n.panel-warning > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #faebcc;\n}\n.panel-warning > .panel-heading .badge {\n  color: #fcf8e3;\n  background-color: #8a6d3b;\n}\n.panel-warning > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #faebcc;\n}\n.panel-danger {\n  border-color: #ebccd1;\n}\n.panel-danger > .panel-heading {\n  color: #a94442;\n  background-color: #f2dede;\n  border-color: #ebccd1;\n}\n.panel-danger > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #ebccd1;\n}\n.panel-danger > .panel-heading .badge {\n  color: #f2dede;\n  background-color: #a94442;\n}\n.panel-danger > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #ebccd1;\n}\n.embed-responsive {\n  position: relative;\n  display: block;\n  height: 0;\n  padding: 0;\n  overflow: hidden;\n}\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  border: 0;\n}\n.embed-responsive-16by9 {\n  padding-bottom: 56.25%;\n}\n.embed-responsive-4by3 {\n  padding-bottom: 75%;\n}\n.well {\n  min-height: 20px;\n  padding: 19px;\n  margin-bottom: 20px;\n  background-color: #f5f5f5;\n  border: 1px solid #e3e3e3;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.well blockquote {\n  border-color: #ddd;\n  border-color: rgba(0, 0, 0, 0.15);\n}\n.well-lg {\n  padding: 24px;\n  border-radius: 6px;\n}\n.well-sm {\n  padding: 9px;\n  border-radius: 3px;\n}\n.close {\n  float: right;\n  font-size: 21px;\n  font-weight: bold;\n  line-height: 1;\n  color: #000;\n  text-shadow: 0 1px 0 #fff;\n  filter: alpha(opacity=20);\n  opacity: 0.2;\n}\n.close:hover,\n.close:focus {\n  color: #000;\n  text-decoration: none;\n  cursor: pointer;\n  filter: alpha(opacity=50);\n  opacity: 0.5;\n}\nbutton.close {\n  padding: 0;\n  cursor: pointer;\n  background: transparent;\n  border: 0;\n  -webkit-appearance: none;\n  -moz-appearance: none;\n  appearance: none;\n}\n.modal-open {\n  overflow: hidden;\n}\n.modal {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1050;\n  display: none;\n  overflow: hidden;\n  -webkit-overflow-scrolling: touch;\n  outline: 0;\n}\n.modal.fade .modal-dialog {\n  -webkit-transform: translate(0, -25%);\n  -ms-transform: translate(0, -25%);\n  -o-transform: translate(0, -25%);\n  transform: translate(0, -25%);\n  -webkit-transition: -webkit-transform 0.3s ease-out;\n  -o-transition: -o-transform 0.3s ease-out;\n  transition: -webkit-transform 0.3s ease-out;\n  transition: transform 0.3s ease-out;\n  transition: transform 0.3s ease-out, -webkit-transform 0.3s ease-out, -o-transform 0.3s ease-out;\n}\n.modal.in .modal-dialog {\n  -webkit-transform: translate(0, 0);\n  -ms-transform: translate(0, 0);\n  -o-transform: translate(0, 0);\n  transform: translate(0, 0);\n}\n.modal-open .modal {\n  overflow-x: hidden;\n  overflow-y: auto;\n}\n.modal-dialog {\n  position: relative;\n  width: auto;\n  margin: 10px;\n}\n.modal-content {\n  position: relative;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid #999;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 6px;\n  -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n  box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n  outline: 0;\n}\n.modal-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1040;\n  background-color: #000;\n}\n.modal-backdrop.fade {\n  filter: alpha(opacity=0);\n  opacity: 0;\n}\n.modal-backdrop.in {\n  filter: alpha(opacity=50);\n  opacity: 0.5;\n}\n.modal-header {\n  padding: 15px;\n  border-bottom: 1px solid #e5e5e5;\n}\n.modal-header .close {\n  margin-top: -2px;\n}\n.modal-title {\n  margin: 0;\n  line-height: 1.42857143;\n}\n.modal-body {\n  position: relative;\n  padding: 15px;\n}\n.modal-footer {\n  padding: 15px;\n  text-align: right;\n  border-top: 1px solid #e5e5e5;\n}\n.modal-footer .btn + .btn {\n  margin-bottom: 0;\n  margin-left: 5px;\n}\n.modal-footer .btn-group .btn + .btn {\n  margin-left: -1px;\n}\n.modal-footer .btn-block + .btn-block {\n  margin-left: 0;\n}\n.modal-scrollbar-measure {\n  position: absolute;\n  top: -9999px;\n  width: 50px;\n  height: 50px;\n  overflow: scroll;\n}\n@media (min-width: 768px) {\n  .modal-dialog {\n    width: 600px;\n    margin: 30px auto;\n  }\n  .modal-content {\n    -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n    box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n  }\n  .modal-sm {\n    width: 300px;\n  }\n}\n@media (min-width: 992px) {\n  .modal-lg {\n    width: 900px;\n  }\n}\n.tooltip {\n  position: absolute;\n  z-index: 1070;\n  display: block;\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-style: normal;\n  font-weight: 400;\n  line-height: 1.42857143;\n  line-break: auto;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  word-wrap: normal;\n  white-space: normal;\n  font-size: 12px;\n  filter: alpha(opacity=0);\n  opacity: 0;\n}\n.tooltip.in {\n  filter: alpha(opacity=90);\n  opacity: 0.9;\n}\n.tooltip.top {\n  padding: 5px 0;\n  margin-top: -3px;\n}\n.tooltip.right {\n  padding: 0 5px;\n  margin-left: 3px;\n}\n.tooltip.bottom {\n  padding: 5px 0;\n  margin-top: 3px;\n}\n.tooltip.left {\n  padding: 0 5px;\n  margin-left: -3px;\n}\n.tooltip.top .tooltip-arrow {\n  bottom: 0;\n  left: 50%;\n  margin-left: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.top-left .tooltip-arrow {\n  right: 5px;\n  bottom: 0;\n  margin-bottom: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.top-right .tooltip-arrow {\n  bottom: 0;\n  left: 5px;\n  margin-bottom: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.right .tooltip-arrow {\n  top: 50%;\n  left: 0;\n  margin-top: -5px;\n  border-width: 5px 5px 5px 0;\n  border-right-color: #000;\n}\n.tooltip.left .tooltip-arrow {\n  top: 50%;\n  right: 0;\n  margin-top: -5px;\n  border-width: 5px 0 5px 5px;\n  border-left-color: #000;\n}\n.tooltip.bottom .tooltip-arrow {\n  top: 0;\n  left: 50%;\n  margin-left: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.tooltip.bottom-left .tooltip-arrow {\n  top: 0;\n  right: 5px;\n  margin-top: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.tooltip.bottom-right .tooltip-arrow {\n  top: 0;\n  left: 5px;\n  margin-top: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.tooltip-inner {\n  max-width: 200px;\n  padding: 3px 8px;\n  color: #fff;\n  text-align: center;\n  background-color: #000;\n  border-radius: 4px;\n}\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n.popover {\n  position: absolute;\n  top: 0;\n  left: 0;\n  z-index: 1060;\n  display: none;\n  max-width: 276px;\n  padding: 1px;\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-style: normal;\n  font-weight: 400;\n  line-height: 1.42857143;\n  line-break: auto;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  word-wrap: normal;\n  white-space: normal;\n  font-size: 14px;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 6px;\n  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n}\n.popover.top {\n  margin-top: -10px;\n}\n.popover.right {\n  margin-left: 10px;\n}\n.popover.bottom {\n  margin-top: 10px;\n}\n.popover.left {\n  margin-left: -10px;\n}\n.popover > .arrow {\n  border-width: 11px;\n}\n.popover > .arrow,\n.popover > .arrow:after {\n  position: absolute;\n  display: block;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n.popover > .arrow:after {\n  content: \"\";\n  border-width: 10px;\n}\n.popover.top > .arrow {\n  bottom: -11px;\n  left: 50%;\n  margin-left: -11px;\n  border-top-color: #999999;\n  border-top-color: rgba(0, 0, 0, 0.25);\n  border-bottom-width: 0;\n}\n.popover.top > .arrow:after {\n  bottom: 1px;\n  margin-left: -10px;\n  content: \" \";\n  border-top-color: #fff;\n  border-bottom-width: 0;\n}\n.popover.right > .arrow {\n  top: 50%;\n  left: -11px;\n  margin-top: -11px;\n  border-right-color: #999999;\n  border-right-color: rgba(0, 0, 0, 0.25);\n  border-left-width: 0;\n}\n.popover.right > .arrow:after {\n  bottom: -10px;\n  left: 1px;\n  content: \" \";\n  border-right-color: #fff;\n  border-left-width: 0;\n}\n.popover.bottom > .arrow {\n  top: -11px;\n  left: 50%;\n  margin-left: -11px;\n  border-top-width: 0;\n  border-bottom-color: #999999;\n  border-bottom-color: rgba(0, 0, 0, 0.25);\n}\n.popover.bottom > .arrow:after {\n  top: 1px;\n  margin-left: -10px;\n  content: \" \";\n  border-top-width: 0;\n  border-bottom-color: #fff;\n}\n.popover.left > .arrow {\n  top: 50%;\n  right: -11px;\n  margin-top: -11px;\n  border-right-width: 0;\n  border-left-color: #999999;\n  border-left-color: rgba(0, 0, 0, 0.25);\n}\n.popover.left > .arrow:after {\n  right: 1px;\n  bottom: -10px;\n  content: \" \";\n  border-right-width: 0;\n  border-left-color: #fff;\n}\n.popover-title {\n  padding: 8px 14px;\n  margin: 0;\n  font-size: 14px;\n  background-color: #f7f7f7;\n  border-bottom: 1px solid #ebebeb;\n  border-radius: 5px 5px 0 0;\n}\n.popover-content {\n  padding: 9px 14px;\n}\n.carousel {\n  position: relative;\n}\n.carousel-inner {\n  position: relative;\n  width: 100%;\n  overflow: hidden;\n}\n.carousel-inner > .item {\n  position: relative;\n  display: none;\n  -webkit-transition: 0.6s ease-in-out left;\n  -o-transition: 0.6s ease-in-out left;\n  transition: 0.6s ease-in-out left;\n}\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n  line-height: 1;\n}\n@media all and (transform-3d), (-webkit-transform-3d) {\n  .carousel-inner > .item {\n    -webkit-transition: -webkit-transform 0.6s ease-in-out;\n    -o-transition: -o-transform 0.6s ease-in-out;\n    transition: -webkit-transform 0.6s ease-in-out;\n    transition: transform 0.6s ease-in-out;\n    transition: transform 0.6s ease-in-out, -webkit-transform 0.6s ease-in-out, -o-transform 0.6s ease-in-out;\n    -webkit-backface-visibility: hidden;\n    backface-visibility: hidden;\n    -webkit-perspective: 1000px;\n    perspective: 1000px;\n  }\n  .carousel-inner > .item.next,\n  .carousel-inner > .item.active.right {\n    -webkit-transform: translate3d(100%, 0, 0);\n    transform: translate3d(100%, 0, 0);\n    left: 0;\n  }\n  .carousel-inner > .item.prev,\n  .carousel-inner > .item.active.left {\n    -webkit-transform: translate3d(-100%, 0, 0);\n    transform: translate3d(-100%, 0, 0);\n    left: 0;\n  }\n  .carousel-inner > .item.next.left,\n  .carousel-inner > .item.prev.right,\n  .carousel-inner > .item.active {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n    left: 0;\n  }\n}\n.carousel-inner > .active,\n.carousel-inner > .next,\n.carousel-inner > .prev {\n  display: block;\n}\n.carousel-inner > .active {\n  left: 0;\n}\n.carousel-inner > .next,\n.carousel-inner > .prev {\n  position: absolute;\n  top: 0;\n  width: 100%;\n}\n.carousel-inner > .next {\n  left: 100%;\n}\n.carousel-inner > .prev {\n  left: -100%;\n}\n.carousel-inner > .next.left,\n.carousel-inner > .prev.right {\n  left: 0;\n}\n.carousel-inner > .active.left {\n  left: -100%;\n}\n.carousel-inner > .active.right {\n  left: 100%;\n}\n.carousel-control {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  width: 15%;\n  font-size: 20px;\n  color: #fff;\n  text-align: center;\n  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n  background-color: rgba(0, 0, 0, 0);\n  filter: alpha(opacity=50);\n  opacity: 0.5;\n}\n.carousel-control.left {\n  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n  background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n  background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0.0001)));\n  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n  background-repeat: repeat-x;\n}\n.carousel-control.right {\n  right: 0;\n  left: auto;\n  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n  background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n  background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.0001)), to(rgba(0, 0, 0, 0.5)));\n  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n  background-repeat: repeat-x;\n}\n.carousel-control:hover,\n.carousel-control:focus {\n  color: #fff;\n  text-decoration: none;\n  outline: 0;\n  filter: alpha(opacity=90);\n  opacity: 0.9;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-left,\n.carousel-control .glyphicon-chevron-right {\n  position: absolute;\n  top: 50%;\n  z-index: 5;\n  display: inline-block;\n  margin-top: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .glyphicon-chevron-left {\n  left: 50%;\n  margin-left: -10px;\n}\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-right {\n  right: 50%;\n  margin-right: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next {\n  width: 20px;\n  height: 20px;\n  font-family: serif;\n  line-height: 1;\n}\n.carousel-control .icon-prev:before {\n  content: \"\\2039\";\n}\n.carousel-control .icon-next:before {\n  content: \"\\203a\";\n}\n.carousel-indicators {\n  position: absolute;\n  bottom: 10px;\n  left: 50%;\n  z-index: 15;\n  width: 60%;\n  padding-left: 0;\n  margin-left: -30%;\n  text-align: center;\n  list-style: none;\n}\n.carousel-indicators li {\n  display: inline-block;\n  width: 10px;\n  height: 10px;\n  margin: 1px;\n  text-indent: -999px;\n  cursor: pointer;\n  background-color: #000 \\9;\n  background-color: rgba(0, 0, 0, 0);\n  border: 1px solid #fff;\n  border-radius: 10px;\n}\n.carousel-indicators .active {\n  width: 12px;\n  height: 12px;\n  margin: 0;\n  background-color: #fff;\n}\n.carousel-caption {\n  position: absolute;\n  right: 15%;\n  bottom: 20px;\n  left: 15%;\n  z-index: 10;\n  padding-top: 20px;\n  padding-bottom: 20px;\n  color: #fff;\n  text-align: center;\n  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n}\n.carousel-caption .btn {\n  text-shadow: none;\n}\n@media screen and (min-width: 768px) {\n  .carousel-control .glyphicon-chevron-left,\n  .carousel-control .glyphicon-chevron-right,\n  .carousel-control .icon-prev,\n  .carousel-control .icon-next {\n    width: 30px;\n    height: 30px;\n    margin-top: -10px;\n    font-size: 30px;\n  }\n  .carousel-control .glyphicon-chevron-left,\n  .carousel-control .icon-prev {\n    margin-left: -10px;\n  }\n  .carousel-control .glyphicon-chevron-right,\n  .carousel-control .icon-next {\n    margin-right: -10px;\n  }\n  .carousel-caption {\n    right: 20%;\n    left: 20%;\n    padding-bottom: 30px;\n  }\n  .carousel-indicators {\n    bottom: 20px;\n  }\n}\n.clearfix:before,\n.clearfix:after,\n.dl-horizontal dd:before,\n.dl-horizontal dd:after,\n.container:before,\n.container:after,\n.container-fluid:before,\n.container-fluid:after,\n.row:before,\n.row:after,\n.form-horizontal .form-group:before,\n.form-horizontal .form-group:after,\n.btn-toolbar:before,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:before,\n.btn-group-vertical > .btn-group:after,\n.nav:before,\n.nav:after,\n.navbar:before,\n.navbar:after,\n.navbar-header:before,\n.navbar-header:after,\n.navbar-collapse:before,\n.navbar-collapse:after,\n.pager:before,\n.pager:after,\n.panel-body:before,\n.panel-body:after,\n.modal-header:before,\n.modal-header:after,\n.modal-footer:before,\n.modal-footer:after {\n  display: table;\n  content: \" \";\n}\n.clearfix:after,\n.dl-horizontal dd:after,\n.container:after,\n.container-fluid:after,\n.row:after,\n.form-horizontal .form-group:after,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:after,\n.nav:after,\n.navbar:after,\n.navbar-header:after,\n.navbar-collapse:after,\n.pager:after,\n.panel-body:after,\n.modal-header:after,\n.modal-footer:after {\n  clear: both;\n}\n.center-block {\n  display: block;\n  margin-right: auto;\n  margin-left: auto;\n}\n.pull-right {\n  float: right !important;\n}\n.pull-left {\n  float: left !important;\n}\n.hide {\n  display: none !important;\n}\n.show {\n  display: block !important;\n}\n.invisible {\n  visibility: hidden;\n}\n.text-hide {\n  font: 0/0 a;\n  color: transparent;\n  text-shadow: none;\n  background-color: transparent;\n  border: 0;\n}\n.hidden {\n  display: none !important;\n}\n.affix {\n  position: fixed;\n}\n@-ms-viewport {\n  width: device-width;\n}\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n  display: none !important;\n}\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n  display: none !important;\n}\n@media (max-width: 767px) {\n  .visible-xs {\n    display: block !important;\n  }\n  table.visible-xs {\n    display: table !important;\n  }\n  tr.visible-xs {\n    display: table-row !important;\n  }\n  th.visible-xs,\n  td.visible-xs {\n    display: table-cell !important;\n  }\n}\n@media (max-width: 767px) {\n  .visible-xs-block {\n    display: block !important;\n  }\n}\n@media (max-width: 767px) {\n  .visible-xs-inline {\n    display: inline !important;\n  }\n}\n@media (max-width: 767px) {\n  .visible-xs-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm {\n    display: block !important;\n  }\n  table.visible-sm {\n    display: table !important;\n  }\n  tr.visible-sm {\n    display: table-row !important;\n  }\n  th.visible-sm,\n  td.visible-sm {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm-block {\n    display: block !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md {\n    display: block !important;\n  }\n  table.visible-md {\n    display: table !important;\n  }\n  tr.visible-md {\n    display: table-row !important;\n  }\n  th.visible-md,\n  td.visible-md {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md-block {\n    display: block !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg {\n    display: block !important;\n  }\n  table.visible-lg {\n    display: table !important;\n  }\n  tr.visible-lg {\n    display: table-row !important;\n  }\n  th.visible-lg,\n  td.visible-lg {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg-block {\n    display: block !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (max-width: 767px) {\n  .hidden-xs {\n    display: none !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .hidden-sm {\n    display: none !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .hidden-md {\n    display: none !important;\n  }\n}\n@media (min-width: 1200px) {\n  .hidden-lg {\n    display: none !important;\n  }\n}\n.visible-print {\n  display: none !important;\n}\n@media print {\n  .visible-print {\n    display: block !important;\n  }\n  table.visible-print {\n    display: table !important;\n  }\n  tr.visible-print {\n    display: table-row !important;\n  }\n  th.visible-print,\n  td.visible-print {\n    display: table-cell !important;\n  }\n}\n.visible-print-block {\n  display: none !important;\n}\n@media print {\n  .visible-print-block {\n    display: block !important;\n  }\n}\n.visible-print-inline {\n  display: none !important;\n}\n@media print {\n  .visible-print-inline {\n    display: inline !important;\n  }\n}\n.visible-print-inline-block {\n  display: none !important;\n}\n@media print {\n  .visible-print-inline-block {\n    display: inline-block !important;\n  }\n}\n@media print {\n  .hidden-print {\n    display: none !important;\n  }\n}\n/*# sourceMappingURL=bootstrap.css.map */"
  },
  {
    "path": "doc/_build/css/site.css",
    "content": ".urubu {\n  background-image: url(\"../img/urubu_cover.png\");\n  background-size: cover;\n  color: white;\n}\n\nbody {\n  position: relative;\n  padding-top: 50px;\n  padding-bottom: 20px;\n}\n\n.page-header {\n  margin-top: 30px;\n}\n\n.breadcrumb {\n  margin-top: 20px;\n}\n\n.content h2:first-of-type {\n  margin-top: 0px;\n}\n\n.half-rule {\n  width: 100px;\n  margin: 25px auto;\n}\n\n\n.fa {\n  margin-right: 0.5em;\n}\n\n.checklist {\n  padding: 0;\n  list-style: none;\n}\n\n/* footer */\n\n.footer {\n  margin-top: 30px;\n  padding-top: 16px;\n  color: #777;\n  border-top: 1px solid #eee;\n  font-size: 90%;\n  text-align: center;\n}\n\n.footer p {\n  margin: 0px;\n}\n\n/* toc */\n\n.sidebar {\n  font-size: 90%;\n  line-height: normal\n}\n\n.toc ul  {\n  padding-left: 0;\n  list-style: none;\n}\n\n.toc ul li {\n  padding-top: 3px;\n}\n\n.toc ul ul {\n  padding-left: 10px;\n  font-size: 95%;\n}\n\n/* heading scrolling */\n\nh2[id]:before,\nh3[id]:before{\n  content: \"\";\n  display: block;\n  height: 70px;\n  margin-top:-70px;\n}\n\n/* affix hacks from boostrap 3.0 docs */\n.sidebar.affix {\n    position: static;\n}\n\n@media (min-width: 992px) {\n  /* Widen the fixed sidebar */\n  .sidebar.affix,\n  .sidebar.affix-bottom {\n    width: 213px;\n  }\n  .sidebar.affix {\n    position: fixed; /* Undo the static from mobile first approach */\n    top: 80px;\n  }\n  .sidebar.affix-bottom {\n    position: absolute; /* Undo the static from mobile first approach */\n  }\n}\n\n@media (min-width: 1200px) {\n  /* Widen the fixed sidebar again */\n  .sidebar.affix,\n  .sidebar.affix-bottom {\n    width: 263px;\n  }\n}\n"
  },
  {
    "path": "doc/_build/css/syntax.css",
    "content": ".codehilite  { background: #ffffff; }\n.codehilite .c { color: #999988; font-style: italic } /* Comment */\n.codehilite .err { color: #a61717; background-color: #e3d2d2 } /* Error */\n.codehilite .k { font-weight: bold } /* Keyword */\n.codehilite .o { font-weight: bold } /* Operator */\n.codehilite .cm { color: #999988; font-style: italic } /* Comment.Multiline */\n.codehilite .cp { color: #999999; font-weight: bold } /* Comment.Preproc */\n.codehilite .c1 { color: #999988; font-style: italic } /* Comment.Single */\n.codehilite .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */\n.codehilite .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */\n.codehilite .gd .x { color: #000000; background-color: #ffaaaa } /* Generic.Deleted.Specific */\n.codehilite .ge { font-style: italic } /* Generic.Emph */\n.codehilite .gr { color: #aa0000 } /* Generic.Error */\n.codehilite .gh { color: #999999 } /* Generic.Heading */\n.codehilite .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */\n.codehilite .gi .x { color: #000000; background-color: #aaffaa } /* Generic.Inserted.Specific */\n.codehilite .go { color: #888888 } /* Generic.Output */\n.codehilite .gp { color: #555555 } /* Generic.Prompt */\n.codehilite .gs { font-weight: bold } /* Generic.Strong */\n.codehilite .gu { color: #aaaaaa } /* Generic.Subheading */\n.codehilite .gt { color: #aa0000 } /* Generic.Traceback */\n.codehilite .kc { font-weight: bold } /* Keyword.Constant */\n.codehilite .kd { font-weight: bold } /* Keyword.Declaration */\n.codehilite .kp { font-weight: bold } /* Keyword.Pseudo */\n.codehilite .kr { font-weight: bold } /* Keyword.Reserved */\n.codehilite .kt { color: #445588; font-weight: bold } /* Keyword.Type */\n.codehilite .m { color: #009999 } /* Literal.Number */\n.codehilite .s { color: #d14 } /* Literal.String */\n.codehilite .na { color: #008080 } /* Name.Attribute */\n.codehilite .nb { color: #0086B3 } /* Name.Builtin */\n.codehilite .nc { color: #445588; font-weight: bold } /* Name.Class */\n.codehilite .no { color: #008080 } /* Name.Constant */\n.codehilite .ni { color: #800080 } /* Name.Entity */\n.codehilite .ne { color: #990000; font-weight: bold } /* Name.Exception */\n.codehilite .nf { color: #990000; font-weight: bold } /* Name.Function */\n.codehilite .nn { color: #555555 } /* Name.Namespace */\n.codehilite .nt { color: #000080 } /* Name.Tag */\n.codehilite .nv { color: #008080 } /* Name.Variable */\n.codehilite .ow { font-weight: bold } /* Operator.Word */\n.codehilite .w { color: #bbbbbb } /* Text.Whitespace */\n.codehilite .mf { color: #009999 } /* Literal.Number.Float */\n.codehilite .mh { color: #009999 } /* Literal.Number.Hex */\n.codehilite .mi { color: #009999 } /* Literal.Number.Integer */\n.codehilite .mo { color: #009999 } /* Literal.Number.Oct */\n.codehilite .sb { color: #d14 } /* Literal.String.Backtick */\n.codehilite .sc { color: #d14 } /* Literal.String.Char */\n.codehilite .sd { color: #d14 } /* Literal.String.Doc */\n.codehilite .s2 { color: #d14 } /* Literal.String.Double */\n.codehilite .se { color: #d14 } /* Literal.String.Escape */\n.codehilite .sh { color: #d14 } /* Literal.String.Heredoc */\n.codehilite .si { color: #d14 } /* Literal.String.Interpol */\n.codehilite .sx { color: #d14 } /* Literal.String.Other */\n.codehilite .sr { color: #009926 } /* Literal.String.Regex */\n.codehilite .s1 { color: #d14 } /* Literal.String.Single */\n.codehilite .ss { color: #990073 } /* Literal.String.Symbol */\n.codehilite .bp { color: #999999 } /* Name.Builtin.Pseudo */\n.codehilite .vc { color: #008080 } /* Name.Variable.Class */\n.codehilite .vg { color: #008080 } /* Name.Variable.Global */\n.codehilite .vi { color: #008080 } /* Name.Variable.Instance */\n.codehilite .il { color: #009999 } /* Literal.Number.Integer.Long */\n"
  },
  {
    "path": "doc/_build/faq/baseurl-preview.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>How to preview sites that use the baseurl option?</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- customizations -->\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- pygments -->\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- icons -->\n    <link href=\"//netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.css\" rel=\"stylesheet\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n<script>\n  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\n  ga('create', 'UA-48968311-3', 'jandecaluwe.com');\n  ga('send', 'pageview');\n\n</script>\n \n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            <li><a href=\"/start.html\">Overview</a></li>\n            <li><a href=\"/manual/\">Manual</a></li>\n            <li><a href=\"http://urubu-quickstart.jandecaluwe.com\">Quickstart</a></li>\n            <li class=\"active\"><a href=\"/faq/\">FAQ</a></li>\n          </ul>\n          <form class=\"navbar-form navbar-left\" action=\"/search.html\" role=\"search\">\n            <div class=\"form-group\">\n                <input type=\"text\" required name=\"q\" id=\"tipue_search_input\" class=\"form-control\" placeholder=\"Search\"> \n            </div>\n          </form>\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li class=\"dropdown\">\n              <a href=\"/more/\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">More <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                <li><a href=\"https://github.com/jandecaluwe/urubu\">GitHub repository</a></li>\n                <li><a href=\"/more/sites.html\">Websites powered by Urubu</a></li>\n                <li><a href=\"/more/about.html\">About this site</a></li>\n              </ul>\n            </li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <ol class=\"breadcrumb\">\n    <li><a href=\"/\">Home</a></li>\n      <li><a href=\"/faq/\">FAQ</a></li>\n      <li class=\"active\">How to preview sites that use the baseurl option?</li>\n  </ol>\n\n  <div class=\"page-header\">\n    <h1>How to preview sites that use the baseurl option?</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"col-md-6 content\" role=\"main\">\n    <main>\n      <h3 id=\"urubu-version-08-and-higher\">Urubu version 0.8 and higher</h3>\n<p>The <code>urubu serve</code> command  takes the <code>baseurl</code> setting automatically into\naccount. </p>\n<h3 id=\"urubu-version-07\">Urubu version 0.7</h3>\n<p>The <code>urubu serve</code> server does not include the <code>baseurl</code> prefix when serving\npages so sites that use <code>baseurl</code> can't be previewed locally using <code>urubu\nserve</code>.  An alternative option is to use\n<a href=\"https://github.com/jiffyclub/tservice\">tservice</a>, which includes an option to\nserve a local static site with a URL prefix.  To use tservice with an Urubu\nsite instead of using <code>urubu serve</code> call <code>tserve</code> with the prefix option, e.g.</p>\n<div class=\"codehilite\"><pre><span></span><code>tserve --prefix &lt;baseurl&gt; _build\n</code></pre></div>\n\n<p>Where <code>&lt;baseurl&gt;</code> is your site's particular prefix.</p>\n    </main>\n    </div>\n\n    <div class=\"col-md-3\" role=\"complementary\">\n      <nav class=\"hidden-print hidden-xs hidden-sm\">\n        <div class=\"sidebar\" data-spy=\"affix\" data-offset-top=\"80\" data-offset-bottom=\"60\">\n          <div class=\"well\">\n            <a href=\"#\"><strong>How to preview sites that use the baseurl option?</strong></a>\n            <div class=\"toc\">\n<ul>\n<li><a href=\"#urubu-version-08-and-higher\">Urubu version 0.8 and higher</a></li>\n<li><a href=\"#urubu-version-07\">Urubu version 0.7</a></li>\n</ul>\n</div>\n\n          </div>\n        </div>\n      </nav>\n    </div>\n\n  </div>\n\n    <div class=\"footer\">\n        <div style=\"margin: 5px\">\n<a href=\"https://twitter.com/share\" class=\"twitter-share-button\">Tweet</a>\n<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>\n\n<!-- Place this tag where you want the +1 button to render. -->\n<div class=\"g-plusone\" data-size=\"medium\"></div>\n\n<!-- Place this tag after the last +1 button tag. -->\n<script type=\"text/javascript\">\nwindow.__gcfg = {\n    lang: 'en-US'\n};\n  (function() {\n    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;\n    po.src = 'https://apis.google.com/js/plusone.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);\n  })();\n</script>\n\n<script type=\"text/javascript\" src=\"http://www.reddit.com/static/button/button1.js\"></script>        </div>\n        <p> Content licensed under the\n           <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\">CC-BY-SA License</a>.\n        </p> \n        <p>Website powered by <a href=\"http://urubu.jandecaluwe.com\">Urubu</a>.</p>\n    </div>\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <!-- <script src=\"https://code.jquery.com/jquery.js\"></script> -->\n    <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n \n\n  </body>\n</html>\n"
  },
  {
    "path": "doc/_build/faq/formulas.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>Is there a way to render formulas?</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- customizations -->\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- pygments -->\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- icons -->\n    <link href=\"//netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.css\" rel=\"stylesheet\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n<script>\n  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\n  ga('create', 'UA-48968311-3', 'jandecaluwe.com');\n  ga('send', 'pageview');\n\n</script>\n \n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            <li><a href=\"/start.html\">Overview</a></li>\n            <li><a href=\"/manual/\">Manual</a></li>\n            <li><a href=\"http://urubu-quickstart.jandecaluwe.com\">Quickstart</a></li>\n            <li class=\"active\"><a href=\"/faq/\">FAQ</a></li>\n          </ul>\n          <form class=\"navbar-form navbar-left\" action=\"/search.html\" role=\"search\">\n            <div class=\"form-group\">\n                <input type=\"text\" required name=\"q\" id=\"tipue_search_input\" class=\"form-control\" placeholder=\"Search\"> \n            </div>\n          </form>\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li class=\"dropdown\">\n              <a href=\"/more/\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">More <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                <li><a href=\"https://github.com/jandecaluwe/urubu\">GitHub repository</a></li>\n                <li><a href=\"/more/sites.html\">Websites powered by Urubu</a></li>\n                <li><a href=\"/more/about.html\">About this site</a></li>\n              </ul>\n            </li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <ol class=\"breadcrumb\">\n    <li><a href=\"/\">Home</a></li>\n      <li><a href=\"/faq/\">FAQ</a></li>\n      <li class=\"active\">Is there a way to render formulas?</li>\n  </ol>\n\n  <div class=\"page-header\">\n    <h1>Is there a way to render formulas?</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"col-md-6 content\" role=\"main\">\n    <main>\n      <p>Yes: you can easily use MathJax with Urubu. Read more about it\n<a href=\"http://www.jandecaluwe.com/blog/urubu-formulas.html\">here</a>.</p>\n    </main>\n    </div>\n\n\n  </div>\n\n    <div class=\"footer\">\n        <div style=\"margin: 5px\">\n<a href=\"https://twitter.com/share\" class=\"twitter-share-button\">Tweet</a>\n<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>\n\n<!-- Place this tag where you want the +1 button to render. -->\n<div class=\"g-plusone\" data-size=\"medium\"></div>\n\n<!-- Place this tag after the last +1 button tag. -->\n<script type=\"text/javascript\">\nwindow.__gcfg = {\n    lang: 'en-US'\n};\n  (function() {\n    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;\n    po.src = 'https://apis.google.com/js/plusone.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);\n  })();\n</script>\n\n<script type=\"text/javascript\" src=\"http://www.reddit.com/static/button/button1.js\"></script>        </div>\n        <p> Content licensed under the\n           <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\">CC-BY-SA License</a>.\n        </p> \n        <p>Website powered by <a href=\"http://urubu.jandecaluwe.com\">Urubu</a>.</p>\n    </div>\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <!-- <script src=\"https://code.jquery.com/jquery.js\"></script> -->\n    <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n \n\n  </body>\n</html>\n"
  },
  {
    "path": "doc/_build/faq/index.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>FAQ</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- customizations -->\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- pygments -->\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- icons -->\n    <link href=\"//netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.css\" rel=\"stylesheet\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n<script>\n  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\n  ga('create', 'UA-48968311-3', 'jandecaluwe.com');\n  ga('send', 'pageview');\n\n</script>\n \n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            <li><a href=\"/start.html\">Overview</a></li>\n            <li><a href=\"/manual/\">Manual</a></li>\n            <li><a href=\"http://urubu-quickstart.jandecaluwe.com\">Quickstart</a></li>\n            <li class=\"active\"><a href=\"/faq/\">FAQ</a></li>\n          </ul>\n          <form class=\"navbar-form navbar-left\" action=\"/search.html\" role=\"search\">\n            <div class=\"form-group\">\n                <input type=\"text\" required name=\"q\" id=\"tipue_search_input\" class=\"form-control\" placeholder=\"Search\"> \n            </div>\n          </form>\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li class=\"dropdown\">\n              <a href=\"/more/\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">More <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                <li><a href=\"https://github.com/jandecaluwe/urubu\">GitHub repository</a></li>\n                <li><a href=\"/more/sites.html\">Websites powered by Urubu</a></li>\n                <li><a href=\"/more/about.html\">About this site</a></li>\n              </ul>\n            </li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"jumbotron\">\n  <div class=\"container\">\n    <div class=\"row\">\n       <div class=\"col-md-7\">\n         <h1>FAQ</h1>\n         <p></p>\n    </div>\n  </div>\n </div>\n</div>\n\n<div class=\"container\">\n  <div class=\"row\">\n\n    <div class=\"col-md-7\" role=\"main\">\n    <main>\n      <h4><a href=\"/faq/licensing-requirements.html\">What are the licensing requirements?</a></h4>\n        <p></p>\n      <h4><a href=\"/faq/media-files.html\">How to add media files?</a></h4>\n        <p></p>\n      <h4><a href=\"/faq/baseurl-preview.html\">How to preview sites that use the baseurl option?</a></h4>\n        <p></p>\n      <h4><a href=\"/faq/link2section.html\">Can I specify a link to a section in a page?</a></h4>\n        <p></p>\n      <h4><a href=\"/faq/formulas.html\">Is there a way to render formulas?</a></h4>\n        <p></p>\n      <h4><a href=\"/faq/tags.html\">How to use tags?</a></h4>\n        <p></p>\n      <h4><a href=\"/faq/sitemap.html\">How do I make a sitemap?</a></h4>\n        <p></p>\n    </main>\n    </div>\n\n </div>\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <!-- <script src=\"https://code.jquery.com/jquery.js\"></script> -->\n    <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n \n\n  </body>\n</html>\n"
  },
  {
    "path": "doc/_build/faq/licensing-requirements.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>What are the licensing requirements?</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- customizations -->\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- pygments -->\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- icons -->\n    <link href=\"//netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.css\" rel=\"stylesheet\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n<script>\n  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\n  ga('create', 'UA-48968311-3', 'jandecaluwe.com');\n  ga('send', 'pageview');\n\n</script>\n \n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            <li><a href=\"/start.html\">Overview</a></li>\n            <li><a href=\"/manual/\">Manual</a></li>\n            <li><a href=\"http://urubu-quickstart.jandecaluwe.com\">Quickstart</a></li>\n            <li class=\"active\"><a href=\"/faq/\">FAQ</a></li>\n          </ul>\n          <form class=\"navbar-form navbar-left\" action=\"/search.html\" role=\"search\">\n            <div class=\"form-group\">\n                <input type=\"text\" required name=\"q\" id=\"tipue_search_input\" class=\"form-control\" placeholder=\"Search\"> \n            </div>\n          </form>\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li class=\"dropdown\">\n              <a href=\"/more/\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">More <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                <li><a href=\"https://github.com/jandecaluwe/urubu\">GitHub repository</a></li>\n                <li><a href=\"/more/sites.html\">Websites powered by Urubu</a></li>\n                <li><a href=\"/more/about.html\">About this site</a></li>\n              </ul>\n            </li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <ol class=\"breadcrumb\">\n    <li><a href=\"/\">Home</a></li>\n      <li><a href=\"/faq/\">FAQ</a></li>\n      <li class=\"active\">What are the licensing requirements?</li>\n  </ol>\n\n  <div class=\"page-header\">\n    <h1>What are the licensing requirements?</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"col-md-6 content\" role=\"main\">\n    <main>\n      <p>Urubu is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.txt\" title=\"GNU Affero General Public License\">GNU Affero General Public License</a>.</p>\n<p>The first thing to understand is that this license applies only to the Urubu\nsoftware. It has no implications on website projects managed with Urubu. You\nare free to license your projects in any way you choose.</p>\n<p>The license only becomes relevant when you release a modified version of the\nUrubu software to the public in some way. In that case, you have to release the\nmodified source code also, under the same license. </p>\n<p>With the original GPL, a release meant shipping software to user that would\ninstall and run it locally.  However, these days software is often made\navailable by running it on a server.  Under the original GPL, there would be no\nrequirement to release the modified source code in such as case. This clearly\nviolates the spirit of the GNU Licenses.</p>\n<p>The <a href=\"http://www.gnu.org/licenses/agpl-3.0.txt\" title=\"GNU Affero General Public License\">GNU Affero General Public License</a> fixes that problem. If you make the modified software\navailable by running it on a server, you have to make the modified source code\navailable to the users under the same license.</p>\n    </main>\n    </div>\n\n\n  </div>\n\n    <div class=\"footer\">\n        <div style=\"margin: 5px\">\n<a href=\"https://twitter.com/share\" class=\"twitter-share-button\">Tweet</a>\n<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>\n\n<!-- Place this tag where you want the +1 button to render. -->\n<div class=\"g-plusone\" data-size=\"medium\"></div>\n\n<!-- Place this tag after the last +1 button tag. -->\n<script type=\"text/javascript\">\nwindow.__gcfg = {\n    lang: 'en-US'\n};\n  (function() {\n    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;\n    po.src = 'https://apis.google.com/js/plusone.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);\n  })();\n</script>\n\n<script type=\"text/javascript\" src=\"http://www.reddit.com/static/button/button1.js\"></script>        </div>\n        <p> Content licensed under the\n           <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\">CC-BY-SA License</a>.\n        </p> \n        <p>Website powered by <a href=\"http://urubu.jandecaluwe.com\">Urubu</a>.</p>\n    </div>\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <!-- <script src=\"https://code.jquery.com/jquery.js\"></script> -->\n    <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n \n\n  </body>\n</html>\n"
  },
  {
    "path": "doc/_build/faq/link2section.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>Can I specify a link to a section in a page?</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- customizations -->\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- pygments -->\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- icons -->\n    <link href=\"//netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.css\" rel=\"stylesheet\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n<script>\n  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\n  ga('create', 'UA-48968311-3', 'jandecaluwe.com');\n  ga('send', 'pageview');\n\n</script>\n \n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            <li><a href=\"/start.html\">Overview</a></li>\n            <li><a href=\"/manual/\">Manual</a></li>\n            <li><a href=\"http://urubu-quickstart.jandecaluwe.com\">Quickstart</a></li>\n            <li class=\"active\"><a href=\"/faq/\">FAQ</a></li>\n          </ul>\n          <form class=\"navbar-form navbar-left\" action=\"/search.html\" role=\"search\">\n            <div class=\"form-group\">\n                <input type=\"text\" required name=\"q\" id=\"tipue_search_input\" class=\"form-control\" placeholder=\"Search\"> \n            </div>\n          </form>\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li class=\"dropdown\">\n              <a href=\"/more/\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">More <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                <li><a href=\"https://github.com/jandecaluwe/urubu\">GitHub repository</a></li>\n                <li><a href=\"/more/sites.html\">Websites powered by Urubu</a></li>\n                <li><a href=\"/more/about.html\">About this site</a></li>\n              </ul>\n            </li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <ol class=\"breadcrumb\">\n    <li><a href=\"/\">Home</a></li>\n      <li><a href=\"/faq/\">FAQ</a></li>\n      <li class=\"active\">Can I specify a link to a section in a page?</li>\n  </ol>\n\n  <div class=\"page-header\">\n    <h1>Can I specify a link to a section in a page?</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"col-md-6 content\" role=\"main\">\n    <main>\n      <p>Yes, Urubu support links to page sections.\nRead <a href=\"http://www.jandecaluwe.com/blog/urubu-0-6.html\">this blog post</a>\nto learn how.</p>\n    </main>\n    </div>\n\n\n  </div>\n\n    <div class=\"footer\">\n        <div style=\"margin: 5px\">\n<a href=\"https://twitter.com/share\" class=\"twitter-share-button\">Tweet</a>\n<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>\n\n<!-- Place this tag where you want the +1 button to render. -->\n<div class=\"g-plusone\" data-size=\"medium\"></div>\n\n<!-- Place this tag after the last +1 button tag. -->\n<script type=\"text/javascript\">\nwindow.__gcfg = {\n    lang: 'en-US'\n};\n  (function() {\n    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;\n    po.src = 'https://apis.google.com/js/plusone.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);\n  })();\n</script>\n\n<script type=\"text/javascript\" src=\"http://www.reddit.com/static/button/button1.js\"></script>        </div>\n        <p> Content licensed under the\n           <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\">CC-BY-SA License</a>.\n        </p> \n        <p>Website powered by <a href=\"http://urubu.jandecaluwe.com\">Urubu</a>.</p>\n    </div>\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <!-- <script src=\"https://code.jquery.com/jquery.js\"></script> -->\n    <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n \n\n  </body>\n</html>\n"
  },
  {
    "path": "doc/_build/faq/media-files.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>How to add media files?</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- customizations -->\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- pygments -->\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- icons -->\n    <link href=\"//netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.css\" rel=\"stylesheet\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n<script>\n  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\n  ga('create', 'UA-48968311-3', 'jandecaluwe.com');\n  ga('send', 'pageview');\n\n</script>\n \n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            <li><a href=\"/start.html\">Overview</a></li>\n            <li><a href=\"/manual/\">Manual</a></li>\n            <li><a href=\"http://urubu-quickstart.jandecaluwe.com\">Quickstart</a></li>\n            <li class=\"active\"><a href=\"/faq/\">FAQ</a></li>\n          </ul>\n          <form class=\"navbar-form navbar-left\" action=\"/search.html\" role=\"search\">\n            <div class=\"form-group\">\n                <input type=\"text\" required name=\"q\" id=\"tipue_search_input\" class=\"form-control\" placeholder=\"Search\"> \n            </div>\n          </form>\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li class=\"dropdown\">\n              <a href=\"/more/\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">More <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                <li><a href=\"https://github.com/jandecaluwe/urubu\">GitHub repository</a></li>\n                <li><a href=\"/more/sites.html\">Websites powered by Urubu</a></li>\n                <li><a href=\"/more/about.html\">About this site</a></li>\n              </ul>\n            </li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <ol class=\"breadcrumb\">\n    <li><a href=\"/\">Home</a></li>\n      <li><a href=\"/faq/\">FAQ</a></li>\n      <li class=\"active\">How to add media files?</li>\n  </ol>\n\n  <div class=\"page-header\">\n    <h1>How to add media files?</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"col-md-6 content\" role=\"main\">\n    <main>\n      <p>The source structure of a project is preserved in the built website, and all\nnon-markdown content files are copied verbatim. See <a href=\"/manual/structure.html\" title=\"Project structure\">Project structure</a>. </p>\n<p>Therefore, you can put media files at any convenient place in the source, and\nrefer to them using Markdown image syntax, with a relative or root-relative\npath to the source file.</p>\n    </main>\n    </div>\n\n\n  </div>\n\n    <div class=\"footer\">\n        <div style=\"margin: 5px\">\n<a href=\"https://twitter.com/share\" class=\"twitter-share-button\">Tweet</a>\n<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>\n\n<!-- Place this tag where you want the +1 button to render. -->\n<div class=\"g-plusone\" data-size=\"medium\"></div>\n\n<!-- Place this tag after the last +1 button tag. -->\n<script type=\"text/javascript\">\nwindow.__gcfg = {\n    lang: 'en-US'\n};\n  (function() {\n    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;\n    po.src = 'https://apis.google.com/js/plusone.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);\n  })();\n</script>\n\n<script type=\"text/javascript\" src=\"http://www.reddit.com/static/button/button1.js\"></script>        </div>\n        <p> Content licensed under the\n           <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\">CC-BY-SA License</a>.\n        </p> \n        <p>Website powered by <a href=\"http://urubu.jandecaluwe.com\">Urubu</a>.</p>\n    </div>\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <!-- <script src=\"https://code.jquery.com/jquery.js\"></script> -->\n    <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n \n\n  </body>\n</html>\n"
  },
  {
    "path": "doc/_build/faq/sitemap.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>How do I make a sitemap?</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- customizations -->\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- pygments -->\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- icons -->\n    <link href=\"//netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.css\" rel=\"stylesheet\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n<script>\n  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\n  ga('create', 'UA-48968311-3', 'jandecaluwe.com');\n  ga('send', 'pageview');\n\n</script>\n \n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            <li><a href=\"/start.html\">Overview</a></li>\n            <li><a href=\"/manual/\">Manual</a></li>\n            <li><a href=\"http://urubu-quickstart.jandecaluwe.com\">Quickstart</a></li>\n            <li class=\"active\"><a href=\"/faq/\">FAQ</a></li>\n          </ul>\n          <form class=\"navbar-form navbar-left\" action=\"/search.html\" role=\"search\">\n            <div class=\"form-group\">\n                <input type=\"text\" required name=\"q\" id=\"tipue_search_input\" class=\"form-control\" placeholder=\"Search\"> \n            </div>\n          </form>\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li class=\"dropdown\">\n              <a href=\"/more/\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">More <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                <li><a href=\"https://github.com/jandecaluwe/urubu\">GitHub repository</a></li>\n                <li><a href=\"/more/sites.html\">Websites powered by Urubu</a></li>\n                <li><a href=\"/more/about.html\">About this site</a></li>\n              </ul>\n            </li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <ol class=\"breadcrumb\">\n    <li><a href=\"/\">Home</a></li>\n      <li><a href=\"/faq/\">FAQ</a></li>\n      <li class=\"active\">How do I make a sitemap?</li>\n  </ol>\n\n  <div class=\"page-header\">\n    <h1>How do I make a sitemap?</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"col-md-6 content\" role=\"main\">\n    <main>\n      <p>To generate a sitemap you need to do the following:</p>\n<ul>\n<li>Create a markdown file called <code>sitemap.md</code> like this:</li>\n</ul>\n<div class=\"codehilite\"><pre><span></span><code>---\ntitle: sitemap\nlayout: sitemap\nchangefreq: monthly\npriority: 1.0\nxmlns: http://www.google.com/schemas/sitemap/0.84\nsaveas: sitemap.xml\n---\n</code></pre></div>\n\n<ul>\n<li>Provide a <code>sitemap.html</code> in the <code>_layouts</code> directory, with looking something like the following:</li>\n</ul>\n<div class=\"codehilite\"><pre><span></span><code>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;\n&lt;urlset xmlns=&quot;{{ this.xmlns }}&quot;&gt;\n{% for t in site.reflinks %}\n    {% if site.reflinks[t].fn and not site.reflinks[t].hidden %}\n    &lt;url&gt;\n        &lt;loc&gt;{{ site.hostname }}{{ site.reflinks[t].url }}&lt;/loc&gt;\n        &lt;changefreq&gt;{{ this.changefreq }}&lt;/changefreq&gt;\n        &lt;priority&gt;{{ this.priority }}&lt;/priority&gt;\n    &lt;/url&gt;\n    {% endif %}\n{% endfor %}\n&lt;/urlset&gt;\n</code></pre></div>\n\n<p>What makes this work is for the main part the <code>saveas</code> parameter in the <code>sitemap.md</code> file, which overrides the default output filename with <code>sitemap.xml</code> instead of <code>sitemap.html</code>. If you add other sitemaps don't forget to specify distinct <code>id</code> and <code>saveas</code> for each one, to prevent <code>Ambiguous reference id</code> errors. </p>\n    </main>\n    </div>\n\n\n  </div>\n\n    <div class=\"footer\">\n        <div style=\"margin: 5px\">\n<a href=\"https://twitter.com/share\" class=\"twitter-share-button\">Tweet</a>\n<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>\n\n<!-- Place this tag where you want the +1 button to render. -->\n<div class=\"g-plusone\" data-size=\"medium\"></div>\n\n<!-- Place this tag after the last +1 button tag. -->\n<script type=\"text/javascript\">\nwindow.__gcfg = {\n    lang: 'en-US'\n};\n  (function() {\n    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;\n    po.src = 'https://apis.google.com/js/plusone.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);\n  })();\n</script>\n\n<script type=\"text/javascript\" src=\"http://www.reddit.com/static/button/button1.js\"></script>        </div>\n        <p> Content licensed under the\n           <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\">CC-BY-SA License</a>.\n        </p> \n        <p>Website powered by <a href=\"http://urubu.jandecaluwe.com\">Urubu</a>.</p>\n    </div>\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <!-- <script src=\"https://code.jquery.com/jquery.js\"></script> -->\n    <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n \n\n  </body>\n</html>\n"
  },
  {
    "path": "doc/_build/faq/tags.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>How to use tags?</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- customizations -->\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- pygments -->\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- icons -->\n    <link href=\"//netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.css\" rel=\"stylesheet\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n<script>\n  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\n  ga('create', 'UA-48968311-3', 'jandecaluwe.com');\n  ga('send', 'pageview');\n\n</script>\n \n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            <li><a href=\"/start.html\">Overview</a></li>\n            <li><a href=\"/manual/\">Manual</a></li>\n            <li><a href=\"http://urubu-quickstart.jandecaluwe.com\">Quickstart</a></li>\n            <li class=\"active\"><a href=\"/faq/\">FAQ</a></li>\n          </ul>\n          <form class=\"navbar-form navbar-left\" action=\"/search.html\" role=\"search\">\n            <div class=\"form-group\">\n                <input type=\"text\" required name=\"q\" id=\"tipue_search_input\" class=\"form-control\" placeholder=\"Search\"> \n            </div>\n          </form>\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li class=\"dropdown\">\n              <a href=\"/more/\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">More <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                <li><a href=\"https://github.com/jandecaluwe/urubu\">GitHub repository</a></li>\n                <li><a href=\"/more/sites.html\">Websites powered by Urubu</a></li>\n                <li><a href=\"/more/about.html\">About this site</a></li>\n              </ul>\n            </li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <ol class=\"breadcrumb\">\n    <li><a href=\"/\">Home</a></li>\n      <li><a href=\"/faq/\">FAQ</a></li>\n      <li class=\"active\">How to use tags?</li>\n  </ol>\n\n  <div class=\"page-header\">\n    <h1>How to use tags?</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"col-md-6 content\" role=\"main\">\n    <main>\n      <p>Urubu supports tags. To use them, you need 2 things:</p>\n<ul>\n<li>\n<p>Assign the desired tags to content pages, by assigning a tag or\na list of tags to the <code>tags</code> attribute.  See also: \n<a href=\"/manual/structure.html#content-files\" title=\"Project structure\">Content files</a>.</p>\n</li>\n<li>\n<p>Provide a <code>tag.html</code> layout in the <code>_layouts</code> directory. </p>\n</li>\n</ul>\n<p>It is the existence of the <code>tag.html</code> layout that triggers the generation of\ntag-related content. For example, if you have used tags <code>bar</code> and <code>foo</code> in the\nproject, you will see that the <code>_build</code> folder contains <code>tag/bar/index.html</code>\nand <code>tag/foo/index.html</code>. Those index files use the <code>tag.html</code> layout to show \nthe content related to a tag.</p>\n<p>Presumably, there is already a general <code>index.html</code> layout to show content in a\nfolder. An initial <code>tag.html</code> layout can then be a one-liner by using template\ninheritance, like so: </p>\n<div class=\"codehilite\"><pre><span></span><code>{% extends &quot;index.html&quot; %}\n</code></pre></div>\n\n<p>Of course, you may want to specialize the <code>tag.html</code> layout\nfurther to better reflect the purpose.</p>\n<p>Urubu also generates the corresponding tag objects so that you can use them in\nyour layouts. This is described in <a href=\"/manual/templates.html#tag-objects\" title=\"Templates\">Tag objects</a>.</p>\n<p>Note that the <code>_build</code> will contain a top-level <code>tag</code> folder, even when the\nsource directory does not. Optionally, you can define the <code>tag</code> folder in the\nsource also.  You can then define an index file and set attributes such as the\n<code>layout</code> to display the tags themselves.  However, the content will be\ngenerated by Urubu automatically and needs not be set. See also: \n<a href=\"/manual/templates.html#tag-folder-object\" title=\"Templates\">Tag folder object</a>.</p>\n    </main>\n    </div>\n\n\n  </div>\n\n    <div class=\"footer\">\n        <div style=\"margin: 5px\">\n<a href=\"https://twitter.com/share\" class=\"twitter-share-button\">Tweet</a>\n<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>\n\n<!-- Place this tag where you want the +1 button to render. -->\n<div class=\"g-plusone\" data-size=\"medium\"></div>\n\n<!-- Place this tag after the last +1 button tag. -->\n<script type=\"text/javascript\">\nwindow.__gcfg = {\n    lang: 'en-US'\n};\n  (function() {\n    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;\n    po.src = 'https://apis.google.com/js/plusone.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);\n  })();\n</script>\n\n<script type=\"text/javascript\" src=\"http://www.reddit.com/static/button/button1.js\"></script>        </div>\n        <p> Content licensed under the\n           <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\">CC-BY-SA License</a>.\n        </p> \n        <p>Website powered by <a href=\"http://urubu.jandecaluwe.com\">Urubu</a>.</p>\n    </div>\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <!-- <script src=\"https://code.jquery.com/jquery.js\"></script> -->\n    <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n \n\n  </body>\n</html>\n"
  },
  {
    "path": "doc/_build/index.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>Urubu</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- customizations -->\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- pygments -->\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- icons -->\n    <link href=\"//netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.css\" rel=\"stylesheet\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n<script>\n  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\n  ga('create', 'UA-48968311-3', 'jandecaluwe.com');\n  ga('send', 'pageview');\n\n</script>\n \n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n \n            <li><a href=\"/start.html\">Overview</a></li>\n            <li><a href=\"/manual/\">Manual</a></li>\n            <li><a href=\"http://urubu-quickstart.jandecaluwe.com\">Quickstart</a></li>\n            <li><a href=\"/faq/\">FAQ</a></li>\n          </ul>\n          <form class=\"navbar-form navbar-left\" action=\"/search.html\" role=\"search\">\n            <div class=\"form-group\">\n                <input type=\"text\" required name=\"q\" id=\"tipue_search_input\" class=\"form-control\" placeholder=\"Search\"> \n            </div>\n          </form>\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li class=\"dropdown\">\n              <a href=\"/more/\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">More <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                <li><a href=\"https://github.com/jandecaluwe/urubu\">GitHub repository</a></li>\n                <li><a href=\"/more/sites.html\">Websites powered by Urubu</a></li>\n                <li><a href=\"/more/about.html\">About this site</a></li>\n              </ul>\n            </li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"jumbotron urubu\">\n    <div class=\"container text-center\">\n        <div class=\"row\">\n            <div class=\"col-md-8 col-md-offset-2\">\n                <h1>Urubu</h1>\n                <h2>A micro CMS for static websites</h2>\n             </div>\n        </div>\n    </div>\n</div>\n\n<div class=\"container\">\n<main>\n<p class=\"lead text-center\">30-Mar-2026: <a href=\"news\">Urubu 1.4.1 released</a></p>\n<div class=\"row\">\n\n    <div class=\"col-md-4\">\n<h4>For websites, <mark>not just blogs</mark></h4>\n<p>\nSet up a website as logically related content. <mark>Content\nordering is flexible</mark>, not just by date.\n</p>  \n    </div>\n\n    <div class=\"col-md-4\">\n<h4>Focus on <mark>navigation</mark></h4>\n<p>\nEasily set up a navbar, a table of contents sidebar,\nbreadcrumbs and pagers. \n</p>\n    </div>\n\n    <div class=\"col-md-4\">\n<h4>Ready for Bootstrap</h4>\n<p>\nUrubu plays well with <mark>Bootstrap</mark>, the popular framework\nfor great looking websites.\n</p>\n    </div>\n\n<div class=\"clearfix visible-md visible-lg\"></div>\n\n    <div class=\"col-md-4\">\n<h4>Markdown content</h4>\n<p>\nEnter content in light-weight <mark>Markdown</mark> syntax, with\npopular extensions.\n</p>\n    </div>\n\n    <div class=\"col-md-4\">\n<h4>Wiki links</h4>\n<p>\n<mark>Easily refer to other pages like\nin wikis</mark>, using Markdown syntax. \n</p>\n    </div> \n\n    <div class=\"col-md-4\">\n<h4>Powerful templating</h4>\n<p>\nUse the powerful <mark>Jinja2 templating</mark> library to \ndefine page layouts.\n</p>  \n    </div>\n\n<div class=\"clearfix visible-md visible-lg\"></div>\n\n    <div class=\"col-md-4\">\n<h4>Sophisticated control</h4>\n<p>\n  Per-page control of page layout \n  and other stuff. Plus\n  <mark>user-defined variables</mark>.  \n</p>  \n    </div>\n\n    <div class=\"col-md-4\">\n<h4>Python power</h4>\n<p>\nUrubu is built with Python. It provides <mark>Python hooks</mark>\nto assist in templating.   \n</p>  \n    </div>\n\n    <div class=\"col-md-4\">\n<h4>Ideal with git</h4>\n<p>\nUse a <mark>git workflow</mark> to develop\nyour website. Deploy by pushing.\n</p>\n    </div>\n\n</div>\n\n<hr class=\"half-rule\">\n\n<div class=\"row\">\n  <div class=\"col-md-8 col-md-offset-2 text-center\">\n    <p class=\"lead\">And of course, it's open source!</p>  \n  </div>\n</div>\n</main>\n</div>\n\n    <div class=\"footer\">\n        <div style=\"margin: 5px\">\n<a href=\"https://twitter.com/share\" class=\"twitter-share-button\">Tweet</a>\n<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>\n\n<!-- Place this tag where you want the +1 button to render. -->\n<div class=\"g-plusone\" data-size=\"medium\"></div>\n\n<!-- Place this tag after the last +1 button tag. -->\n<script type=\"text/javascript\">\nwindow.__gcfg = {\n    lang: 'en-US'\n};\n  (function() {\n    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;\n    po.src = 'https://apis.google.com/js/plusone.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);\n  })();\n</script>\n\n<script type=\"text/javascript\" src=\"http://www.reddit.com/static/button/button1.js\"></script>        </div>\n        <p> Content licensed under the\n           <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\">CC-BY-SA License</a>.\n        </p> \n        <p>Website powered by <a href=\"http://urubu.jandecaluwe.com\">Urubu</a>.</p>\n    </div>\n\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <!-- <script src=\"https://code.jquery.com/jquery.js\"></script> -->\n    <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n \n\n  </body>\n</html>\n"
  },
  {
    "path": "doc/_build/js/bootstrap.js",
    "content": "/*!\n * Bootstrap v3.4.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under the MIT license\n */\n\nif (typeof jQuery === 'undefined') {\n  throw new Error('Bootstrap\\'s JavaScript requires jQuery')\n}\n\n+function ($) {\n  'use strict';\n  var version = $.fn.jquery.split(' ')[0].split('.')\n  if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 3)) {\n    throw new Error('Bootstrap\\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4')\n  }\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: transition.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#transitions\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // CSS TRANSITION SUPPORT (Shoutout: https://modernizr.com/)\n  // ============================================================\n\n  function transitionEnd() {\n    var el = document.createElement('bootstrap')\n\n    var transEndEventNames = {\n      WebkitTransition : 'webkitTransitionEnd',\n      MozTransition    : 'transitionend',\n      OTransition      : 'oTransitionEnd otransitionend',\n      transition       : 'transitionend'\n    }\n\n    for (var name in transEndEventNames) {\n      if (el.style[name] !== undefined) {\n        return { end: transEndEventNames[name] }\n      }\n    }\n\n    return false // explicit for ie8 (  ._.)\n  }\n\n  // https://blog.alexmaccaw.com/css-transitions\n  $.fn.emulateTransitionEnd = function (duration) {\n    var called = false\n    var $el = this\n    $(this).one('bsTransitionEnd', function () { called = true })\n    var callback = function () { if (!called) $($el).trigger($.support.transition.end) }\n    setTimeout(callback, duration)\n    return this\n  }\n\n  $(function () {\n    $.support.transition = transitionEnd()\n\n    if (!$.support.transition) return\n\n    $.event.special.bsTransitionEnd = {\n      bindType: $.support.transition.end,\n      delegateType: $.support.transition.end,\n      handle: function (e) {\n        if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)\n      }\n    }\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: alert.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#alerts\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // ALERT CLASS DEFINITION\n  // ======================\n\n  var dismiss = '[data-dismiss=\"alert\"]'\n  var Alert   = function (el) {\n    $(el).on('click', dismiss, this.close)\n  }\n\n  Alert.VERSION = '3.4.1'\n\n  Alert.TRANSITION_DURATION = 150\n\n  Alert.prototype.close = function (e) {\n    var $this    = $(this)\n    var selector = $this.attr('data-target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n    }\n\n    selector    = selector === '#' ? [] : selector\n    var $parent = $(document).find(selector)\n\n    if (e) e.preventDefault()\n\n    if (!$parent.length) {\n      $parent = $this.closest('.alert')\n    }\n\n    $parent.trigger(e = $.Event('close.bs.alert'))\n\n    if (e.isDefaultPrevented()) return\n\n    $parent.removeClass('in')\n\n    function removeElement() {\n      // detach from parent, fire event then clean up data\n      $parent.detach().trigger('closed.bs.alert').remove()\n    }\n\n    $.support.transition && $parent.hasClass('fade') ?\n      $parent\n        .one('bsTransitionEnd', removeElement)\n        .emulateTransitionEnd(Alert.TRANSITION_DURATION) :\n      removeElement()\n  }\n\n\n  // ALERT PLUGIN DEFINITION\n  // =======================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.alert')\n\n      if (!data) $this.data('bs.alert', (data = new Alert(this)))\n      if (typeof option == 'string') data[option].call($this)\n    })\n  }\n\n  var old = $.fn.alert\n\n  $.fn.alert             = Plugin\n  $.fn.alert.Constructor = Alert\n\n\n  // ALERT NO CONFLICT\n  // =================\n\n  $.fn.alert.noConflict = function () {\n    $.fn.alert = old\n    return this\n  }\n\n\n  // ALERT DATA-API\n  // ==============\n\n  $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: button.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#buttons\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // BUTTON PUBLIC CLASS DEFINITION\n  // ==============================\n\n  var Button = function (element, options) {\n    this.$element  = $(element)\n    this.options   = $.extend({}, Button.DEFAULTS, options)\n    this.isLoading = false\n  }\n\n  Button.VERSION  = '3.4.1'\n\n  Button.DEFAULTS = {\n    loadingText: 'loading...'\n  }\n\n  Button.prototype.setState = function (state) {\n    var d    = 'disabled'\n    var $el  = this.$element\n    var val  = $el.is('input') ? 'val' : 'html'\n    var data = $el.data()\n\n    state += 'Text'\n\n    if (data.resetText == null) $el.data('resetText', $el[val]())\n\n    // push to event loop to allow forms to submit\n    setTimeout($.proxy(function () {\n      $el[val](data[state] == null ? this.options[state] : data[state])\n\n      if (state == 'loadingText') {\n        this.isLoading = true\n        $el.addClass(d).attr(d, d).prop(d, true)\n      } else if (this.isLoading) {\n        this.isLoading = false\n        $el.removeClass(d).removeAttr(d).prop(d, false)\n      }\n    }, this), 0)\n  }\n\n  Button.prototype.toggle = function () {\n    var changed = true\n    var $parent = this.$element.closest('[data-toggle=\"buttons\"]')\n\n    if ($parent.length) {\n      var $input = this.$element.find('input')\n      if ($input.prop('type') == 'radio') {\n        if ($input.prop('checked')) changed = false\n        $parent.find('.active').removeClass('active')\n        this.$element.addClass('active')\n      } else if ($input.prop('type') == 'checkbox') {\n        if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false\n        this.$element.toggleClass('active')\n      }\n      $input.prop('checked', this.$element.hasClass('active'))\n      if (changed) $input.trigger('change')\n    } else {\n      this.$element.attr('aria-pressed', !this.$element.hasClass('active'))\n      this.$element.toggleClass('active')\n    }\n  }\n\n\n  // BUTTON PLUGIN DEFINITION\n  // ========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.button')\n      var options = typeof option == 'object' && option\n\n      if (!data) $this.data('bs.button', (data = new Button(this, options)))\n\n      if (option == 'toggle') data.toggle()\n      else if (option) data.setState(option)\n    })\n  }\n\n  var old = $.fn.button\n\n  $.fn.button             = Plugin\n  $.fn.button.Constructor = Button\n\n\n  // BUTTON NO CONFLICT\n  // ==================\n\n  $.fn.button.noConflict = function () {\n    $.fn.button = old\n    return this\n  }\n\n\n  // BUTTON DATA-API\n  // ===============\n\n  $(document)\n    .on('click.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n      var $btn = $(e.target).closest('.btn')\n      Plugin.call($btn, 'toggle')\n      if (!($(e.target).is('input[type=\"radio\"], input[type=\"checkbox\"]'))) {\n        // Prevent double click on radios, and the double selections (so cancellation) on checkboxes\n        e.preventDefault()\n        // The target component still receive the focus\n        if ($btn.is('input,button')) $btn.trigger('focus')\n        else $btn.find('input:visible,button:visible').first().trigger('focus')\n      }\n    })\n    .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n      $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))\n    })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: carousel.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#carousel\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // CAROUSEL CLASS DEFINITION\n  // =========================\n\n  var Carousel = function (element, options) {\n    this.$element    = $(element)\n    this.$indicators = this.$element.find('.carousel-indicators')\n    this.options     = options\n    this.paused      = null\n    this.sliding     = null\n    this.interval    = null\n    this.$active     = null\n    this.$items      = null\n\n    this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))\n\n    this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element\n      .on('mouseenter.bs.carousel', $.proxy(this.pause, this))\n      .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))\n  }\n\n  Carousel.VERSION  = '3.4.1'\n\n  Carousel.TRANSITION_DURATION = 600\n\n  Carousel.DEFAULTS = {\n    interval: 5000,\n    pause: 'hover',\n    wrap: true,\n    keyboard: true\n  }\n\n  Carousel.prototype.keydown = function (e) {\n    if (/input|textarea/i.test(e.target.tagName)) return\n    switch (e.which) {\n      case 37: this.prev(); break\n      case 39: this.next(); break\n      default: return\n    }\n\n    e.preventDefault()\n  }\n\n  Carousel.prototype.cycle = function (e) {\n    e || (this.paused = false)\n\n    this.interval && clearInterval(this.interval)\n\n    this.options.interval\n      && !this.paused\n      && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))\n\n    return this\n  }\n\n  Carousel.prototype.getItemIndex = function (item) {\n    this.$items = item.parent().children('.item')\n    return this.$items.index(item || this.$active)\n  }\n\n  Carousel.prototype.getItemForDirection = function (direction, active) {\n    var activeIndex = this.getItemIndex(active)\n    var willWrap = (direction == 'prev' && activeIndex === 0)\n                || (direction == 'next' && activeIndex == (this.$items.length - 1))\n    if (willWrap && !this.options.wrap) return active\n    var delta = direction == 'prev' ? -1 : 1\n    var itemIndex = (activeIndex + delta) % this.$items.length\n    return this.$items.eq(itemIndex)\n  }\n\n  Carousel.prototype.to = function (pos) {\n    var that        = this\n    var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))\n\n    if (pos > (this.$items.length - 1) || pos < 0) return\n\n    if (this.sliding)       return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, \"slid\"\n    if (activeIndex == pos) return this.pause().cycle()\n\n    return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))\n  }\n\n  Carousel.prototype.pause = function (e) {\n    e || (this.paused = true)\n\n    if (this.$element.find('.next, .prev').length && $.support.transition) {\n      this.$element.trigger($.support.transition.end)\n      this.cycle(true)\n    }\n\n    this.interval = clearInterval(this.interval)\n\n    return this\n  }\n\n  Carousel.prototype.next = function () {\n    if (this.sliding) return\n    return this.slide('next')\n  }\n\n  Carousel.prototype.prev = function () {\n    if (this.sliding) return\n    return this.slide('prev')\n  }\n\n  Carousel.prototype.slide = function (type, next) {\n    var $active   = this.$element.find('.item.active')\n    var $next     = next || this.getItemForDirection(type, $active)\n    var isCycling = this.interval\n    var direction = type == 'next' ? 'left' : 'right'\n    var that      = this\n\n    if ($next.hasClass('active')) return (this.sliding = false)\n\n    var relatedTarget = $next[0]\n    var slideEvent = $.Event('slide.bs.carousel', {\n      relatedTarget: relatedTarget,\n      direction: direction\n    })\n    this.$element.trigger(slideEvent)\n    if (slideEvent.isDefaultPrevented()) return\n\n    this.sliding = true\n\n    isCycling && this.pause()\n\n    if (this.$indicators.length) {\n      this.$indicators.find('.active').removeClass('active')\n      var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])\n      $nextIndicator && $nextIndicator.addClass('active')\n    }\n\n    var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, \"slid\"\n    if ($.support.transition && this.$element.hasClass('slide')) {\n      $next.addClass(type)\n      if (typeof $next === 'object' && $next.length) {\n        $next[0].offsetWidth // force reflow\n      }\n      $active.addClass(direction)\n      $next.addClass(direction)\n      $active\n        .one('bsTransitionEnd', function () {\n          $next.removeClass([type, direction].join(' ')).addClass('active')\n          $active.removeClass(['active', direction].join(' '))\n          that.sliding = false\n          setTimeout(function () {\n            that.$element.trigger(slidEvent)\n          }, 0)\n        })\n        .emulateTransitionEnd(Carousel.TRANSITION_DURATION)\n    } else {\n      $active.removeClass('active')\n      $next.addClass('active')\n      this.sliding = false\n      this.$element.trigger(slidEvent)\n    }\n\n    isCycling && this.cycle()\n\n    return this\n  }\n\n\n  // CAROUSEL PLUGIN DEFINITION\n  // ==========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.carousel')\n      var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)\n      var action  = typeof option == 'string' ? option : options.slide\n\n      if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))\n      if (typeof option == 'number') data.to(option)\n      else if (action) data[action]()\n      else if (options.interval) data.pause().cycle()\n    })\n  }\n\n  var old = $.fn.carousel\n\n  $.fn.carousel             = Plugin\n  $.fn.carousel.Constructor = Carousel\n\n\n  // CAROUSEL NO CONFLICT\n  // ====================\n\n  $.fn.carousel.noConflict = function () {\n    $.fn.carousel = old\n    return this\n  }\n\n\n  // CAROUSEL DATA-API\n  // =================\n\n  var clickHandler = function (e) {\n    var $this   = $(this)\n    var href    = $this.attr('href')\n    if (href) {\n      href = href.replace(/.*(?=#[^\\s]+$)/, '') // strip for ie7\n    }\n\n    var target  = $this.attr('data-target') || href\n    var $target = $(document).find(target)\n\n    if (!$target.hasClass('carousel')) return\n\n    var options = $.extend({}, $target.data(), $this.data())\n    var slideIndex = $this.attr('data-slide-to')\n    if (slideIndex) options.interval = false\n\n    Plugin.call($target, options)\n\n    if (slideIndex) {\n      $target.data('bs.carousel').to(slideIndex)\n    }\n\n    e.preventDefault()\n  }\n\n  $(document)\n    .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)\n    .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)\n\n  $(window).on('load', function () {\n    $('[data-ride=\"carousel\"]').each(function () {\n      var $carousel = $(this)\n      Plugin.call($carousel, $carousel.data())\n    })\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: collapse.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#collapse\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n/* jshint latedef: false */\n\n+function ($) {\n  'use strict';\n\n  // COLLAPSE PUBLIC CLASS DEFINITION\n  // ================================\n\n  var Collapse = function (element, options) {\n    this.$element      = $(element)\n    this.options       = $.extend({}, Collapse.DEFAULTS, options)\n    this.$trigger      = $('[data-toggle=\"collapse\"][href=\"#' + element.id + '\"],' +\n                           '[data-toggle=\"collapse\"][data-target=\"#' + element.id + '\"]')\n    this.transitioning = null\n\n    if (this.options.parent) {\n      this.$parent = this.getParent()\n    } else {\n      this.addAriaAndCollapsedClass(this.$element, this.$trigger)\n    }\n\n    if (this.options.toggle) this.toggle()\n  }\n\n  Collapse.VERSION  = '3.4.1'\n\n  Collapse.TRANSITION_DURATION = 350\n\n  Collapse.DEFAULTS = {\n    toggle: true\n  }\n\n  Collapse.prototype.dimension = function () {\n    var hasWidth = this.$element.hasClass('width')\n    return hasWidth ? 'width' : 'height'\n  }\n\n  Collapse.prototype.show = function () {\n    if (this.transitioning || this.$element.hasClass('in')) return\n\n    var activesData\n    var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')\n\n    if (actives && actives.length) {\n      activesData = actives.data('bs.collapse')\n      if (activesData && activesData.transitioning) return\n    }\n\n    var startEvent = $.Event('show.bs.collapse')\n    this.$element.trigger(startEvent)\n    if (startEvent.isDefaultPrevented()) return\n\n    if (actives && actives.length) {\n      Plugin.call(actives, 'hide')\n      activesData || actives.data('bs.collapse', null)\n    }\n\n    var dimension = this.dimension()\n\n    this.$element\n      .removeClass('collapse')\n      .addClass('collapsing')[dimension](0)\n      .attr('aria-expanded', true)\n\n    this.$trigger\n      .removeClass('collapsed')\n      .attr('aria-expanded', true)\n\n    this.transitioning = 1\n\n    var complete = function () {\n      this.$element\n        .removeClass('collapsing')\n        .addClass('collapse in')[dimension]('')\n      this.transitioning = 0\n      this.$element\n        .trigger('shown.bs.collapse')\n    }\n\n    if (!$.support.transition) return complete.call(this)\n\n    var scrollSize = $.camelCase(['scroll', dimension].join('-'))\n\n    this.$element\n      .one('bsTransitionEnd', $.proxy(complete, this))\n      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])\n  }\n\n  Collapse.prototype.hide = function () {\n    if (this.transitioning || !this.$element.hasClass('in')) return\n\n    var startEvent = $.Event('hide.bs.collapse')\n    this.$element.trigger(startEvent)\n    if (startEvent.isDefaultPrevented()) return\n\n    var dimension = this.dimension()\n\n    this.$element[dimension](this.$element[dimension]())[0].offsetHeight\n\n    this.$element\n      .addClass('collapsing')\n      .removeClass('collapse in')\n      .attr('aria-expanded', false)\n\n    this.$trigger\n      .addClass('collapsed')\n      .attr('aria-expanded', false)\n\n    this.transitioning = 1\n\n    var complete = function () {\n      this.transitioning = 0\n      this.$element\n        .removeClass('collapsing')\n        .addClass('collapse')\n        .trigger('hidden.bs.collapse')\n    }\n\n    if (!$.support.transition) return complete.call(this)\n\n    this.$element\n      [dimension](0)\n      .one('bsTransitionEnd', $.proxy(complete, this))\n      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)\n  }\n\n  Collapse.prototype.toggle = function () {\n    this[this.$element.hasClass('in') ? 'hide' : 'show']()\n  }\n\n  Collapse.prototype.getParent = function () {\n    return $(document).find(this.options.parent)\n      .find('[data-toggle=\"collapse\"][data-parent=\"' + this.options.parent + '\"]')\n      .each($.proxy(function (i, element) {\n        var $element = $(element)\n        this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)\n      }, this))\n      .end()\n  }\n\n  Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {\n    var isOpen = $element.hasClass('in')\n\n    $element.attr('aria-expanded', isOpen)\n    $trigger\n      .toggleClass('collapsed', !isOpen)\n      .attr('aria-expanded', isOpen)\n  }\n\n  function getTargetFromTrigger($trigger) {\n    var href\n    var target = $trigger.attr('data-target')\n      || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '') // strip for ie7\n\n    return $(document).find(target)\n  }\n\n\n  // COLLAPSE PLUGIN DEFINITION\n  // ==========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.collapse')\n      var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n      if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false\n      if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.collapse\n\n  $.fn.collapse             = Plugin\n  $.fn.collapse.Constructor = Collapse\n\n\n  // COLLAPSE NO CONFLICT\n  // ====================\n\n  $.fn.collapse.noConflict = function () {\n    $.fn.collapse = old\n    return this\n  }\n\n\n  // COLLAPSE DATA-API\n  // =================\n\n  $(document).on('click.bs.collapse.data-api', '[data-toggle=\"collapse\"]', function (e) {\n    var $this   = $(this)\n\n    if (!$this.attr('data-target')) e.preventDefault()\n\n    var $target = getTargetFromTrigger($this)\n    var data    = $target.data('bs.collapse')\n    var option  = data ? 'toggle' : $this.data()\n\n    Plugin.call($target, option)\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: dropdown.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#dropdowns\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // DROPDOWN CLASS DEFINITION\n  // =========================\n\n  var backdrop = '.dropdown-backdrop'\n  var toggle   = '[data-toggle=\"dropdown\"]'\n  var Dropdown = function (element) {\n    $(element).on('click.bs.dropdown', this.toggle)\n  }\n\n  Dropdown.VERSION = '3.4.1'\n\n  function getParent($this) {\n    var selector = $this.attr('data-target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n    }\n\n    var $parent = selector !== '#' ? $(document).find(selector) : null\n\n    return $parent && $parent.length ? $parent : $this.parent()\n  }\n\n  function clearMenus(e) {\n    if (e && e.which === 3) return\n    $(backdrop).remove()\n    $(toggle).each(function () {\n      var $this         = $(this)\n      var $parent       = getParent($this)\n      var relatedTarget = { relatedTarget: this }\n\n      if (!$parent.hasClass('open')) return\n\n      if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return\n\n      $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))\n\n      if (e.isDefaultPrevented()) return\n\n      $this.attr('aria-expanded', 'false')\n      $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))\n    })\n  }\n\n  Dropdown.prototype.toggle = function (e) {\n    var $this = $(this)\n\n    if ($this.is('.disabled, :disabled')) return\n\n    var $parent  = getParent($this)\n    var isActive = $parent.hasClass('open')\n\n    clearMenus()\n\n    if (!isActive) {\n      if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {\n        // if mobile we use a backdrop because click events don't delegate\n        $(document.createElement('div'))\n          .addClass('dropdown-backdrop')\n          .insertAfter($(this))\n          .on('click', clearMenus)\n      }\n\n      var relatedTarget = { relatedTarget: this }\n      $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))\n\n      if (e.isDefaultPrevented()) return\n\n      $this\n        .trigger('focus')\n        .attr('aria-expanded', 'true')\n\n      $parent\n        .toggleClass('open')\n        .trigger($.Event('shown.bs.dropdown', relatedTarget))\n    }\n\n    return false\n  }\n\n  Dropdown.prototype.keydown = function (e) {\n    if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return\n\n    var $this = $(this)\n\n    e.preventDefault()\n    e.stopPropagation()\n\n    if ($this.is('.disabled, :disabled')) return\n\n    var $parent  = getParent($this)\n    var isActive = $parent.hasClass('open')\n\n    if (!isActive && e.which != 27 || isActive && e.which == 27) {\n      if (e.which == 27) $parent.find(toggle).trigger('focus')\n      return $this.trigger('click')\n    }\n\n    var desc = ' li:not(.disabled):visible a'\n    var $items = $parent.find('.dropdown-menu' + desc)\n\n    if (!$items.length) return\n\n    var index = $items.index(e.target)\n\n    if (e.which == 38 && index > 0)                 index--         // up\n    if (e.which == 40 && index < $items.length - 1) index++         // down\n    if (!~index)                                    index = 0\n\n    $items.eq(index).trigger('focus')\n  }\n\n\n  // DROPDOWN PLUGIN DEFINITION\n  // ==========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.dropdown')\n\n      if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))\n      if (typeof option == 'string') data[option].call($this)\n    })\n  }\n\n  var old = $.fn.dropdown\n\n  $.fn.dropdown             = Plugin\n  $.fn.dropdown.Constructor = Dropdown\n\n\n  // DROPDOWN NO CONFLICT\n  // ====================\n\n  $.fn.dropdown.noConflict = function () {\n    $.fn.dropdown = old\n    return this\n  }\n\n\n  // APPLY TO STANDARD DROPDOWN ELEMENTS\n  // ===================================\n\n  $(document)\n    .on('click.bs.dropdown.data-api', clearMenus)\n    .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })\n    .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)\n    .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)\n    .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: modal.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#modals\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // MODAL CLASS DEFINITION\n  // ======================\n\n  var Modal = function (element, options) {\n    this.options = options\n    this.$body = $(document.body)\n    this.$element = $(element)\n    this.$dialog = this.$element.find('.modal-dialog')\n    this.$backdrop = null\n    this.isShown = null\n    this.originalBodyPad = null\n    this.scrollbarWidth = 0\n    this.ignoreBackdropClick = false\n    this.fixedContent = '.navbar-fixed-top, .navbar-fixed-bottom'\n\n    if (this.options.remote) {\n      this.$element\n        .find('.modal-content')\n        .load(this.options.remote, $.proxy(function () {\n          this.$element.trigger('loaded.bs.modal')\n        }, this))\n    }\n  }\n\n  Modal.VERSION = '3.4.1'\n\n  Modal.TRANSITION_DURATION = 300\n  Modal.BACKDROP_TRANSITION_DURATION = 150\n\n  Modal.DEFAULTS = {\n    backdrop: true,\n    keyboard: true,\n    show: true\n  }\n\n  Modal.prototype.toggle = function (_relatedTarget) {\n    return this.isShown ? this.hide() : this.show(_relatedTarget)\n  }\n\n  Modal.prototype.show = function (_relatedTarget) {\n    var that = this\n    var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })\n\n    this.$element.trigger(e)\n\n    if (this.isShown || e.isDefaultPrevented()) return\n\n    this.isShown = true\n\n    this.checkScrollbar()\n    this.setScrollbar()\n    this.$body.addClass('modal-open')\n\n    this.escape()\n    this.resize()\n\n    this.$element.on('click.dismiss.bs.modal', '[data-dismiss=\"modal\"]', $.proxy(this.hide, this))\n\n    this.$dialog.on('mousedown.dismiss.bs.modal', function () {\n      that.$element.one('mouseup.dismiss.bs.modal', function (e) {\n        if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true\n      })\n    })\n\n    this.backdrop(function () {\n      var transition = $.support.transition && that.$element.hasClass('fade')\n\n      if (!that.$element.parent().length) {\n        that.$element.appendTo(that.$body) // don't move modals dom position\n      }\n\n      that.$element\n        .show()\n        .scrollTop(0)\n\n      that.adjustDialog()\n\n      if (transition) {\n        that.$element[0].offsetWidth // force reflow\n      }\n\n      that.$element.addClass('in')\n\n      that.enforceFocus()\n\n      var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })\n\n      transition ?\n        that.$dialog // wait for modal to slide in\n          .one('bsTransitionEnd', function () {\n            that.$element.trigger('focus').trigger(e)\n          })\n          .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n        that.$element.trigger('focus').trigger(e)\n    })\n  }\n\n  Modal.prototype.hide = function (e) {\n    if (e) e.preventDefault()\n\n    e = $.Event('hide.bs.modal')\n\n    this.$element.trigger(e)\n\n    if (!this.isShown || e.isDefaultPrevented()) return\n\n    this.isShown = false\n\n    this.escape()\n    this.resize()\n\n    $(document).off('focusin.bs.modal')\n\n    this.$element\n      .removeClass('in')\n      .off('click.dismiss.bs.modal')\n      .off('mouseup.dismiss.bs.modal')\n\n    this.$dialog.off('mousedown.dismiss.bs.modal')\n\n    $.support.transition && this.$element.hasClass('fade') ?\n      this.$element\n        .one('bsTransitionEnd', $.proxy(this.hideModal, this))\n        .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n      this.hideModal()\n  }\n\n  Modal.prototype.enforceFocus = function () {\n    $(document)\n      .off('focusin.bs.modal') // guard against infinite focus loop\n      .on('focusin.bs.modal', $.proxy(function (e) {\n        if (document !== e.target &&\n          this.$element[0] !== e.target &&\n          !this.$element.has(e.target).length) {\n          this.$element.trigger('focus')\n        }\n      }, this))\n  }\n\n  Modal.prototype.escape = function () {\n    if (this.isShown && this.options.keyboard) {\n      this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {\n        e.which == 27 && this.hide()\n      }, this))\n    } else if (!this.isShown) {\n      this.$element.off('keydown.dismiss.bs.modal')\n    }\n  }\n\n  Modal.prototype.resize = function () {\n    if (this.isShown) {\n      $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))\n    } else {\n      $(window).off('resize.bs.modal')\n    }\n  }\n\n  Modal.prototype.hideModal = function () {\n    var that = this\n    this.$element.hide()\n    this.backdrop(function () {\n      that.$body.removeClass('modal-open')\n      that.resetAdjustments()\n      that.resetScrollbar()\n      that.$element.trigger('hidden.bs.modal')\n    })\n  }\n\n  Modal.prototype.removeBackdrop = function () {\n    this.$backdrop && this.$backdrop.remove()\n    this.$backdrop = null\n  }\n\n  Modal.prototype.backdrop = function (callback) {\n    var that = this\n    var animate = this.$element.hasClass('fade') ? 'fade' : ''\n\n    if (this.isShown && this.options.backdrop) {\n      var doAnimate = $.support.transition && animate\n\n      this.$backdrop = $(document.createElement('div'))\n        .addClass('modal-backdrop ' + animate)\n        .appendTo(this.$body)\n\n      this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {\n        if (this.ignoreBackdropClick) {\n          this.ignoreBackdropClick = false\n          return\n        }\n        if (e.target !== e.currentTarget) return\n        this.options.backdrop == 'static'\n          ? this.$element[0].focus()\n          : this.hide()\n      }, this))\n\n      if (doAnimate) this.$backdrop[0].offsetWidth // force reflow\n\n      this.$backdrop.addClass('in')\n\n      if (!callback) return\n\n      doAnimate ?\n        this.$backdrop\n          .one('bsTransitionEnd', callback)\n          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n        callback()\n\n    } else if (!this.isShown && this.$backdrop) {\n      this.$backdrop.removeClass('in')\n\n      var callbackRemove = function () {\n        that.removeBackdrop()\n        callback && callback()\n      }\n      $.support.transition && this.$element.hasClass('fade') ?\n        this.$backdrop\n          .one('bsTransitionEnd', callbackRemove)\n          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n        callbackRemove()\n\n    } else if (callback) {\n      callback()\n    }\n  }\n\n  // these following methods are used to handle overflowing modals\n\n  Modal.prototype.handleUpdate = function () {\n    this.adjustDialog()\n  }\n\n  Modal.prototype.adjustDialog = function () {\n    var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight\n\n    this.$element.css({\n      paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',\n      paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''\n    })\n  }\n\n  Modal.prototype.resetAdjustments = function () {\n    this.$element.css({\n      paddingLeft: '',\n      paddingRight: ''\n    })\n  }\n\n  Modal.prototype.checkScrollbar = function () {\n    var fullWindowWidth = window.innerWidth\n    if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8\n      var documentElementRect = document.documentElement.getBoundingClientRect()\n      fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)\n    }\n    this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth\n    this.scrollbarWidth = this.measureScrollbar()\n  }\n\n  Modal.prototype.setScrollbar = function () {\n    var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)\n    this.originalBodyPad = document.body.style.paddingRight || ''\n    var scrollbarWidth = this.scrollbarWidth\n    if (this.bodyIsOverflowing) {\n      this.$body.css('padding-right', bodyPad + scrollbarWidth)\n      $(this.fixedContent).each(function (index, element) {\n        var actualPadding = element.style.paddingRight\n        var calculatedPadding = $(element).css('padding-right')\n        $(element)\n          .data('padding-right', actualPadding)\n          .css('padding-right', parseFloat(calculatedPadding) + scrollbarWidth + 'px')\n      })\n    }\n  }\n\n  Modal.prototype.resetScrollbar = function () {\n    this.$body.css('padding-right', this.originalBodyPad)\n    $(this.fixedContent).each(function (index, element) {\n      var padding = $(element).data('padding-right')\n      $(element).removeData('padding-right')\n      element.style.paddingRight = padding ? padding : ''\n    })\n  }\n\n  Modal.prototype.measureScrollbar = function () { // thx walsh\n    var scrollDiv = document.createElement('div')\n    scrollDiv.className = 'modal-scrollbar-measure'\n    this.$body.append(scrollDiv)\n    var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth\n    this.$body[0].removeChild(scrollDiv)\n    return scrollbarWidth\n  }\n\n\n  // MODAL PLUGIN DEFINITION\n  // =======================\n\n  function Plugin(option, _relatedTarget) {\n    return this.each(function () {\n      var $this = $(this)\n      var data = $this.data('bs.modal')\n      var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n      if (!data) $this.data('bs.modal', (data = new Modal(this, options)))\n      if (typeof option == 'string') data[option](_relatedTarget)\n      else if (options.show) data.show(_relatedTarget)\n    })\n  }\n\n  var old = $.fn.modal\n\n  $.fn.modal = Plugin\n  $.fn.modal.Constructor = Modal\n\n\n  // MODAL NO CONFLICT\n  // =================\n\n  $.fn.modal.noConflict = function () {\n    $.fn.modal = old\n    return this\n  }\n\n\n  // MODAL DATA-API\n  // ==============\n\n  $(document).on('click.bs.modal.data-api', '[data-toggle=\"modal\"]', function (e) {\n    var $this = $(this)\n    var href = $this.attr('href')\n    var target = $this.attr('data-target') ||\n      (href && href.replace(/.*(?=#[^\\s]+$)/, '')) // strip for ie7\n\n    var $target = $(document).find(target)\n    var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())\n\n    if ($this.is('a')) e.preventDefault()\n\n    $target.one('show.bs.modal', function (showEvent) {\n      if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown\n      $target.one('hidden.bs.modal', function () {\n        $this.is(':visible') && $this.trigger('focus')\n      })\n    })\n    Plugin.call($target, option, this)\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: tooltip.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#tooltip\n * Inspired by the original jQuery.tipsy by Jason Frame\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n+function ($) {\n  'use strict';\n\n  var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']\n\n  var uriAttrs = [\n    'background',\n    'cite',\n    'href',\n    'itemtype',\n    'longdesc',\n    'poster',\n    'src',\n    'xlink:href'\n  ]\n\n  var ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\n  var DefaultWhitelist = {\n    // Global attributes allowed on any supplied element below.\n    '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n    a: ['target', 'href', 'title', 'rel'],\n    area: [],\n    b: [],\n    br: [],\n    col: [],\n    code: [],\n    div: [],\n    em: [],\n    hr: [],\n    h1: [],\n    h2: [],\n    h3: [],\n    h4: [],\n    h5: [],\n    h6: [],\n    i: [],\n    img: ['src', 'alt', 'title', 'width', 'height'],\n    li: [],\n    ol: [],\n    p: [],\n    pre: [],\n    s: [],\n    small: [],\n    span: [],\n    sub: [],\n    sup: [],\n    strong: [],\n    u: [],\n    ul: []\n  }\n\n  /**\n   * A pattern that recognizes a commonly useful subset of URLs that are safe.\n   *\n   * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n   */\n  var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi\n\n  /**\n   * A pattern that matches safe data URLs. Only matches image, video and audio types.\n   *\n   * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n   */\n  var DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i\n\n  function allowedAttribute(attr, allowedAttributeList) {\n    var attrName = attr.nodeName.toLowerCase()\n\n    if ($.inArray(attrName, allowedAttributeList) !== -1) {\n      if ($.inArray(attrName, uriAttrs) !== -1) {\n        return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))\n      }\n\n      return true\n    }\n\n    var regExp = $(allowedAttributeList).filter(function (index, value) {\n      return value instanceof RegExp\n    })\n\n    // Check if a regular expression validates the attribute.\n    for (var i = 0, l = regExp.length; i < l; i++) {\n      if (attrName.match(regExp[i])) {\n        return true\n      }\n    }\n\n    return false\n  }\n\n  function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n    if (unsafeHtml.length === 0) {\n      return unsafeHtml\n    }\n\n    if (sanitizeFn && typeof sanitizeFn === 'function') {\n      return sanitizeFn(unsafeHtml)\n    }\n\n    // IE 8 and below don't support createHTMLDocument\n    if (!document.implementation || !document.implementation.createHTMLDocument) {\n      return unsafeHtml\n    }\n\n    var createdDocument = document.implementation.createHTMLDocument('sanitization')\n    createdDocument.body.innerHTML = unsafeHtml\n\n    var whitelistKeys = $.map(whiteList, function (el, i) { return i })\n    var elements = $(createdDocument.body).find('*')\n\n    for (var i = 0, len = elements.length; i < len; i++) {\n      var el = elements[i]\n      var elName = el.nodeName.toLowerCase()\n\n      if ($.inArray(elName, whitelistKeys) === -1) {\n        el.parentNode.removeChild(el)\n\n        continue\n      }\n\n      var attributeList = $.map(el.attributes, function (el) { return el })\n      var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || [])\n\n      for (var j = 0, len2 = attributeList.length; j < len2; j++) {\n        if (!allowedAttribute(attributeList[j], whitelistedAttributes)) {\n          el.removeAttribute(attributeList[j].nodeName)\n        }\n      }\n    }\n\n    return createdDocument.body.innerHTML\n  }\n\n  // TOOLTIP PUBLIC CLASS DEFINITION\n  // ===============================\n\n  var Tooltip = function (element, options) {\n    this.type       = null\n    this.options    = null\n    this.enabled    = null\n    this.timeout    = null\n    this.hoverState = null\n    this.$element   = null\n    this.inState    = null\n\n    this.init('tooltip', element, options)\n  }\n\n  Tooltip.VERSION  = '3.4.1'\n\n  Tooltip.TRANSITION_DURATION = 150\n\n  Tooltip.DEFAULTS = {\n    animation: true,\n    placement: 'top',\n    selector: false,\n    template: '<div class=\"tooltip\" role=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>',\n    trigger: 'hover focus',\n    title: '',\n    delay: 0,\n    html: false,\n    container: false,\n    viewport: {\n      selector: 'body',\n      padding: 0\n    },\n    sanitize : true,\n    sanitizeFn : null,\n    whiteList : DefaultWhitelist\n  }\n\n  Tooltip.prototype.init = function (type, element, options) {\n    this.enabled   = true\n    this.type      = type\n    this.$element  = $(element)\n    this.options   = this.getOptions(options)\n    this.$viewport = this.options.viewport && $(document).find($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))\n    this.inState   = { click: false, hover: false, focus: false }\n\n    if (this.$element[0] instanceof document.constructor && !this.options.selector) {\n      throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')\n    }\n\n    var triggers = this.options.trigger.split(' ')\n\n    for (var i = triggers.length; i--;) {\n      var trigger = triggers[i]\n\n      if (trigger == 'click') {\n        this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))\n      } else if (trigger != 'manual') {\n        var eventIn  = trigger == 'hover' ? 'mouseenter' : 'focusin'\n        var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'\n\n        this.$element.on(eventIn  + '.' + this.type, this.options.selector, $.proxy(this.enter, this))\n        this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))\n      }\n    }\n\n    this.options.selector ?\n      (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :\n      this.fixTitle()\n  }\n\n  Tooltip.prototype.getDefaults = function () {\n    return Tooltip.DEFAULTS\n  }\n\n  Tooltip.prototype.getOptions = function (options) {\n    var dataAttributes = this.$element.data()\n\n    for (var dataAttr in dataAttributes) {\n      if (dataAttributes.hasOwnProperty(dataAttr) && $.inArray(dataAttr, DISALLOWED_ATTRIBUTES) !== -1) {\n        delete dataAttributes[dataAttr]\n      }\n    }\n\n    options = $.extend({}, this.getDefaults(), dataAttributes, options)\n\n    if (options.delay && typeof options.delay == 'number') {\n      options.delay = {\n        show: options.delay,\n        hide: options.delay\n      }\n    }\n\n    if (options.sanitize) {\n      options.template = sanitizeHtml(options.template, options.whiteList, options.sanitizeFn)\n    }\n\n    return options\n  }\n\n  Tooltip.prototype.getDelegateOptions = function () {\n    var options  = {}\n    var defaults = this.getDefaults()\n\n    this._options && $.each(this._options, function (key, value) {\n      if (defaults[key] != value) options[key] = value\n    })\n\n    return options\n  }\n\n  Tooltip.prototype.enter = function (obj) {\n    var self = obj instanceof this.constructor ?\n      obj : $(obj.currentTarget).data('bs.' + this.type)\n\n    if (!self) {\n      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n      $(obj.currentTarget).data('bs.' + this.type, self)\n    }\n\n    if (obj instanceof $.Event) {\n      self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true\n    }\n\n    if (self.tip().hasClass('in') || self.hoverState == 'in') {\n      self.hoverState = 'in'\n      return\n    }\n\n    clearTimeout(self.timeout)\n\n    self.hoverState = 'in'\n\n    if (!self.options.delay || !self.options.delay.show) return self.show()\n\n    self.timeout = setTimeout(function () {\n      if (self.hoverState == 'in') self.show()\n    }, self.options.delay.show)\n  }\n\n  Tooltip.prototype.isInStateTrue = function () {\n    for (var key in this.inState) {\n      if (this.inState[key]) return true\n    }\n\n    return false\n  }\n\n  Tooltip.prototype.leave = function (obj) {\n    var self = obj instanceof this.constructor ?\n      obj : $(obj.currentTarget).data('bs.' + this.type)\n\n    if (!self) {\n      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n      $(obj.currentTarget).data('bs.' + this.type, self)\n    }\n\n    if (obj instanceof $.Event) {\n      self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false\n    }\n\n    if (self.isInStateTrue()) return\n\n    clearTimeout(self.timeout)\n\n    self.hoverState = 'out'\n\n    if (!self.options.delay || !self.options.delay.hide) return self.hide()\n\n    self.timeout = setTimeout(function () {\n      if (self.hoverState == 'out') self.hide()\n    }, self.options.delay.hide)\n  }\n\n  Tooltip.prototype.show = function () {\n    var e = $.Event('show.bs.' + this.type)\n\n    if (this.hasContent() && this.enabled) {\n      this.$element.trigger(e)\n\n      var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])\n      if (e.isDefaultPrevented() || !inDom) return\n      var that = this\n\n      var $tip = this.tip()\n\n      var tipId = this.getUID(this.type)\n\n      this.setContent()\n      $tip.attr('id', tipId)\n      this.$element.attr('aria-describedby', tipId)\n\n      if (this.options.animation) $tip.addClass('fade')\n\n      var placement = typeof this.options.placement == 'function' ?\n        this.options.placement.call(this, $tip[0], this.$element[0]) :\n        this.options.placement\n\n      var autoToken = /\\s?auto?\\s?/i\n      var autoPlace = autoToken.test(placement)\n      if (autoPlace) placement = placement.replace(autoToken, '') || 'top'\n\n      $tip\n        .detach()\n        .css({ top: 0, left: 0, display: 'block' })\n        .addClass(placement)\n        .data('bs.' + this.type, this)\n\n      this.options.container ? $tip.appendTo($(document).find(this.options.container)) : $tip.insertAfter(this.$element)\n      this.$element.trigger('inserted.bs.' + this.type)\n\n      var pos          = this.getPosition()\n      var actualWidth  = $tip[0].offsetWidth\n      var actualHeight = $tip[0].offsetHeight\n\n      if (autoPlace) {\n        var orgPlacement = placement\n        var viewportDim = this.getPosition(this.$viewport)\n\n        placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top'    :\n                    placement == 'top'    && pos.top    - actualHeight < viewportDim.top    ? 'bottom' :\n                    placement == 'right'  && pos.right  + actualWidth  > viewportDim.width  ? 'left'   :\n                    placement == 'left'   && pos.left   - actualWidth  < viewportDim.left   ? 'right'  :\n                    placement\n\n        $tip\n          .removeClass(orgPlacement)\n          .addClass(placement)\n      }\n\n      var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)\n\n      this.applyPlacement(calculatedOffset, placement)\n\n      var complete = function () {\n        var prevHoverState = that.hoverState\n        that.$element.trigger('shown.bs.' + that.type)\n        that.hoverState = null\n\n        if (prevHoverState == 'out') that.leave(that)\n      }\n\n      $.support.transition && this.$tip.hasClass('fade') ?\n        $tip\n          .one('bsTransitionEnd', complete)\n          .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n        complete()\n    }\n  }\n\n  Tooltip.prototype.applyPlacement = function (offset, placement) {\n    var $tip   = this.tip()\n    var width  = $tip[0].offsetWidth\n    var height = $tip[0].offsetHeight\n\n    // manually read margins because getBoundingClientRect includes difference\n    var marginTop = parseInt($tip.css('margin-top'), 10)\n    var marginLeft = parseInt($tip.css('margin-left'), 10)\n\n    // we must check for NaN for ie 8/9\n    if (isNaN(marginTop))  marginTop  = 0\n    if (isNaN(marginLeft)) marginLeft = 0\n\n    offset.top  += marginTop\n    offset.left += marginLeft\n\n    // $.fn.offset doesn't round pixel values\n    // so we use setOffset directly with our own function B-0\n    $.offset.setOffset($tip[0], $.extend({\n      using: function (props) {\n        $tip.css({\n          top: Math.round(props.top),\n          left: Math.round(props.left)\n        })\n      }\n    }, offset), 0)\n\n    $tip.addClass('in')\n\n    // check to see if placing tip in new offset caused the tip to resize itself\n    var actualWidth  = $tip[0].offsetWidth\n    var actualHeight = $tip[0].offsetHeight\n\n    if (placement == 'top' && actualHeight != height) {\n      offset.top = offset.top + height - actualHeight\n    }\n\n    var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)\n\n    if (delta.left) offset.left += delta.left\n    else offset.top += delta.top\n\n    var isVertical          = /top|bottom/.test(placement)\n    var arrowDelta          = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight\n    var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'\n\n    $tip.offset(offset)\n    this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)\n  }\n\n  Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {\n    this.arrow()\n      .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')\n      .css(isVertical ? 'top' : 'left', '')\n  }\n\n  Tooltip.prototype.setContent = function () {\n    var $tip  = this.tip()\n    var title = this.getTitle()\n\n    if (this.options.html) {\n      if (this.options.sanitize) {\n        title = sanitizeHtml(title, this.options.whiteList, this.options.sanitizeFn)\n      }\n\n      $tip.find('.tooltip-inner').html(title)\n    } else {\n      $tip.find('.tooltip-inner').text(title)\n    }\n\n    $tip.removeClass('fade in top bottom left right')\n  }\n\n  Tooltip.prototype.hide = function (callback) {\n    var that = this\n    var $tip = $(this.$tip)\n    var e    = $.Event('hide.bs.' + this.type)\n\n    function complete() {\n      if (that.hoverState != 'in') $tip.detach()\n      if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary.\n        that.$element\n          .removeAttr('aria-describedby')\n          .trigger('hidden.bs.' + that.type)\n      }\n      callback && callback()\n    }\n\n    this.$element.trigger(e)\n\n    if (e.isDefaultPrevented()) return\n\n    $tip.removeClass('in')\n\n    $.support.transition && $tip.hasClass('fade') ?\n      $tip\n        .one('bsTransitionEnd', complete)\n        .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n      complete()\n\n    this.hoverState = null\n\n    return this\n  }\n\n  Tooltip.prototype.fixTitle = function () {\n    var $e = this.$element\n    if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {\n      $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')\n    }\n  }\n\n  Tooltip.prototype.hasContent = function () {\n    return this.getTitle()\n  }\n\n  Tooltip.prototype.getPosition = function ($element) {\n    $element   = $element || this.$element\n\n    var el     = $element[0]\n    var isBody = el.tagName == 'BODY'\n\n    var elRect    = el.getBoundingClientRect()\n    if (elRect.width == null) {\n      // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093\n      elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })\n    }\n    var isSvg = window.SVGElement && el instanceof window.SVGElement\n    // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.\n    // See https://github.com/twbs/bootstrap/issues/20280\n    var elOffset  = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset())\n    var scroll    = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }\n    var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null\n\n    return $.extend({}, elRect, scroll, outerDims, elOffset)\n  }\n\n  Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {\n    return placement == 'bottom' ? { top: pos.top + pos.height,   left: pos.left + pos.width / 2 - actualWidth / 2 } :\n           placement == 'top'    ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n           placement == 'left'   ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :\n        /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }\n\n  }\n\n  Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {\n    var delta = { top: 0, left: 0 }\n    if (!this.$viewport) return delta\n\n    var viewportPadding = this.options.viewport && this.options.viewport.padding || 0\n    var viewportDimensions = this.getPosition(this.$viewport)\n\n    if (/right|left/.test(placement)) {\n      var topEdgeOffset    = pos.top - viewportPadding - viewportDimensions.scroll\n      var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight\n      if (topEdgeOffset < viewportDimensions.top) { // top overflow\n        delta.top = viewportDimensions.top - topEdgeOffset\n      } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow\n        delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset\n      }\n    } else {\n      var leftEdgeOffset  = pos.left - viewportPadding\n      var rightEdgeOffset = pos.left + viewportPadding + actualWidth\n      if (leftEdgeOffset < viewportDimensions.left) { // left overflow\n        delta.left = viewportDimensions.left - leftEdgeOffset\n      } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow\n        delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset\n      }\n    }\n\n    return delta\n  }\n\n  Tooltip.prototype.getTitle = function () {\n    var title\n    var $e = this.$element\n    var o  = this.options\n\n    title = $e.attr('data-original-title')\n      || (typeof o.title == 'function' ? o.title.call($e[0]) :  o.title)\n\n    return title\n  }\n\n  Tooltip.prototype.getUID = function (prefix) {\n    do prefix += ~~(Math.random() * 1000000)\n    while (document.getElementById(prefix))\n    return prefix\n  }\n\n  Tooltip.prototype.tip = function () {\n    if (!this.$tip) {\n      this.$tip = $(this.options.template)\n      if (this.$tip.length != 1) {\n        throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')\n      }\n    }\n    return this.$tip\n  }\n\n  Tooltip.prototype.arrow = function () {\n    return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))\n  }\n\n  Tooltip.prototype.enable = function () {\n    this.enabled = true\n  }\n\n  Tooltip.prototype.disable = function () {\n    this.enabled = false\n  }\n\n  Tooltip.prototype.toggleEnabled = function () {\n    this.enabled = !this.enabled\n  }\n\n  Tooltip.prototype.toggle = function (e) {\n    var self = this\n    if (e) {\n      self = $(e.currentTarget).data('bs.' + this.type)\n      if (!self) {\n        self = new this.constructor(e.currentTarget, this.getDelegateOptions())\n        $(e.currentTarget).data('bs.' + this.type, self)\n      }\n    }\n\n    if (e) {\n      self.inState.click = !self.inState.click\n      if (self.isInStateTrue()) self.enter(self)\n      else self.leave(self)\n    } else {\n      self.tip().hasClass('in') ? self.leave(self) : self.enter(self)\n    }\n  }\n\n  Tooltip.prototype.destroy = function () {\n    var that = this\n    clearTimeout(this.timeout)\n    this.hide(function () {\n      that.$element.off('.' + that.type).removeData('bs.' + that.type)\n      if (that.$tip) {\n        that.$tip.detach()\n      }\n      that.$tip = null\n      that.$arrow = null\n      that.$viewport = null\n      that.$element = null\n    })\n  }\n\n  Tooltip.prototype.sanitizeHtml = function (unsafeHtml) {\n    return sanitizeHtml(unsafeHtml, this.options.whiteList, this.options.sanitizeFn)\n  }\n\n  // TOOLTIP PLUGIN DEFINITION\n  // =========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.tooltip')\n      var options = typeof option == 'object' && option\n\n      if (!data && /destroy|hide/.test(option)) return\n      if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.tooltip\n\n  $.fn.tooltip             = Plugin\n  $.fn.tooltip.Constructor = Tooltip\n\n\n  // TOOLTIP NO CONFLICT\n  // ===================\n\n  $.fn.tooltip.noConflict = function () {\n    $.fn.tooltip = old\n    return this\n  }\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: popover.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#popovers\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // POPOVER PUBLIC CLASS DEFINITION\n  // ===============================\n\n  var Popover = function (element, options) {\n    this.init('popover', element, options)\n  }\n\n  if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')\n\n  Popover.VERSION  = '3.4.1'\n\n  Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {\n    placement: 'right',\n    trigger: 'click',\n    content: '',\n    template: '<div class=\"popover\" role=\"tooltip\"><div class=\"arrow\"></div><h3 class=\"popover-title\"></h3><div class=\"popover-content\"></div></div>'\n  })\n\n\n  // NOTE: POPOVER EXTENDS tooltip.js\n  // ================================\n\n  Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)\n\n  Popover.prototype.constructor = Popover\n\n  Popover.prototype.getDefaults = function () {\n    return Popover.DEFAULTS\n  }\n\n  Popover.prototype.setContent = function () {\n    var $tip    = this.tip()\n    var title   = this.getTitle()\n    var content = this.getContent()\n\n    if (this.options.html) {\n      var typeContent = typeof content\n\n      if (this.options.sanitize) {\n        title = this.sanitizeHtml(title)\n\n        if (typeContent === 'string') {\n          content = this.sanitizeHtml(content)\n        }\n      }\n\n      $tip.find('.popover-title').html(title)\n      $tip.find('.popover-content').children().detach().end()[\n        typeContent === 'string' ? 'html' : 'append'\n      ](content)\n    } else {\n      $tip.find('.popover-title').text(title)\n      $tip.find('.popover-content').children().detach().end().text(content)\n    }\n\n    $tip.removeClass('fade top bottom left right in')\n\n    // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do\n    // this manually by checking the contents.\n    if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()\n  }\n\n  Popover.prototype.hasContent = function () {\n    return this.getTitle() || this.getContent()\n  }\n\n  Popover.prototype.getContent = function () {\n    var $e = this.$element\n    var o  = this.options\n\n    return $e.attr('data-content')\n      || (typeof o.content == 'function' ?\n        o.content.call($e[0]) :\n        o.content)\n  }\n\n  Popover.prototype.arrow = function () {\n    return (this.$arrow = this.$arrow || this.tip().find('.arrow'))\n  }\n\n\n  // POPOVER PLUGIN DEFINITION\n  // =========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.popover')\n      var options = typeof option == 'object' && option\n\n      if (!data && /destroy|hide/.test(option)) return\n      if (!data) $this.data('bs.popover', (data = new Popover(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.popover\n\n  $.fn.popover             = Plugin\n  $.fn.popover.Constructor = Popover\n\n\n  // POPOVER NO CONFLICT\n  // ===================\n\n  $.fn.popover.noConflict = function () {\n    $.fn.popover = old\n    return this\n  }\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: scrollspy.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#scrollspy\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // SCROLLSPY CLASS DEFINITION\n  // ==========================\n\n  function ScrollSpy(element, options) {\n    this.$body          = $(document.body)\n    this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)\n    this.options        = $.extend({}, ScrollSpy.DEFAULTS, options)\n    this.selector       = (this.options.target || '') + ' .nav li > a'\n    this.offsets        = []\n    this.targets        = []\n    this.activeTarget   = null\n    this.scrollHeight   = 0\n\n    this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))\n    this.refresh()\n    this.process()\n  }\n\n  ScrollSpy.VERSION  = '3.4.1'\n\n  ScrollSpy.DEFAULTS = {\n    offset: 10\n  }\n\n  ScrollSpy.prototype.getScrollHeight = function () {\n    return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)\n  }\n\n  ScrollSpy.prototype.refresh = function () {\n    var that          = this\n    var offsetMethod  = 'offset'\n    var offsetBase    = 0\n\n    this.offsets      = []\n    this.targets      = []\n    this.scrollHeight = this.getScrollHeight()\n\n    if (!$.isWindow(this.$scrollElement[0])) {\n      offsetMethod = 'position'\n      offsetBase   = this.$scrollElement.scrollTop()\n    }\n\n    this.$body\n      .find(this.selector)\n      .map(function () {\n        var $el   = $(this)\n        var href  = $el.data('target') || $el.attr('href')\n        var $href = /^#./.test(href) && $(href)\n\n        return ($href\n          && $href.length\n          && $href.is(':visible')\n          && [[$href[offsetMethod]().top + offsetBase, href]]) || null\n      })\n      .sort(function (a, b) { return a[0] - b[0] })\n      .each(function () {\n        that.offsets.push(this[0])\n        that.targets.push(this[1])\n      })\n  }\n\n  ScrollSpy.prototype.process = function () {\n    var scrollTop    = this.$scrollElement.scrollTop() + this.options.offset\n    var scrollHeight = this.getScrollHeight()\n    var maxScroll    = this.options.offset + scrollHeight - this.$scrollElement.height()\n    var offsets      = this.offsets\n    var targets      = this.targets\n    var activeTarget = this.activeTarget\n    var i\n\n    if (this.scrollHeight != scrollHeight) {\n      this.refresh()\n    }\n\n    if (scrollTop >= maxScroll) {\n      return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)\n    }\n\n    if (activeTarget && scrollTop < offsets[0]) {\n      this.activeTarget = null\n      return this.clear()\n    }\n\n    for (i = offsets.length; i--;) {\n      activeTarget != targets[i]\n        && scrollTop >= offsets[i]\n        && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])\n        && this.activate(targets[i])\n    }\n  }\n\n  ScrollSpy.prototype.activate = function (target) {\n    this.activeTarget = target\n\n    this.clear()\n\n    var selector = this.selector +\n      '[data-target=\"' + target + '\"],' +\n      this.selector + '[href=\"' + target + '\"]'\n\n    var active = $(selector)\n      .parents('li')\n      .addClass('active')\n\n    if (active.parent('.dropdown-menu').length) {\n      active = active\n        .closest('li.dropdown')\n        .addClass('active')\n    }\n\n    active.trigger('activate.bs.scrollspy')\n  }\n\n  ScrollSpy.prototype.clear = function () {\n    $(this.selector)\n      .parentsUntil(this.options.target, '.active')\n      .removeClass('active')\n  }\n\n\n  // SCROLLSPY PLUGIN DEFINITION\n  // ===========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.scrollspy')\n      var options = typeof option == 'object' && option\n\n      if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.scrollspy\n\n  $.fn.scrollspy             = Plugin\n  $.fn.scrollspy.Constructor = ScrollSpy\n\n\n  // SCROLLSPY NO CONFLICT\n  // =====================\n\n  $.fn.scrollspy.noConflict = function () {\n    $.fn.scrollspy = old\n    return this\n  }\n\n\n  // SCROLLSPY DATA-API\n  // ==================\n\n  $(window).on('load.bs.scrollspy.data-api', function () {\n    $('[data-spy=\"scroll\"]').each(function () {\n      var $spy = $(this)\n      Plugin.call($spy, $spy.data())\n    })\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: tab.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#tabs\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // TAB CLASS DEFINITION\n  // ====================\n\n  var Tab = function (element) {\n    // jscs:disable requireDollarBeforejQueryAssignment\n    this.element = $(element)\n    // jscs:enable requireDollarBeforejQueryAssignment\n  }\n\n  Tab.VERSION = '3.4.1'\n\n  Tab.TRANSITION_DURATION = 150\n\n  Tab.prototype.show = function () {\n    var $this    = this.element\n    var $ul      = $this.closest('ul:not(.dropdown-menu)')\n    var selector = $this.data('target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n    }\n\n    if ($this.parent('li').hasClass('active')) return\n\n    var $previous = $ul.find('.active:last a')\n    var hideEvent = $.Event('hide.bs.tab', {\n      relatedTarget: $this[0]\n    })\n    var showEvent = $.Event('show.bs.tab', {\n      relatedTarget: $previous[0]\n    })\n\n    $previous.trigger(hideEvent)\n    $this.trigger(showEvent)\n\n    if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return\n\n    var $target = $(document).find(selector)\n\n    this.activate($this.closest('li'), $ul)\n    this.activate($target, $target.parent(), function () {\n      $previous.trigger({\n        type: 'hidden.bs.tab',\n        relatedTarget: $this[0]\n      })\n      $this.trigger({\n        type: 'shown.bs.tab',\n        relatedTarget: $previous[0]\n      })\n    })\n  }\n\n  Tab.prototype.activate = function (element, container, callback) {\n    var $active    = container.find('> .active')\n    var transition = callback\n      && $.support.transition\n      && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)\n\n    function next() {\n      $active\n        .removeClass('active')\n        .find('> .dropdown-menu > .active')\n        .removeClass('active')\n        .end()\n        .find('[data-toggle=\"tab\"]')\n        .attr('aria-expanded', false)\n\n      element\n        .addClass('active')\n        .find('[data-toggle=\"tab\"]')\n        .attr('aria-expanded', true)\n\n      if (transition) {\n        element[0].offsetWidth // reflow for transition\n        element.addClass('in')\n      } else {\n        element.removeClass('fade')\n      }\n\n      if (element.parent('.dropdown-menu').length) {\n        element\n          .closest('li.dropdown')\n          .addClass('active')\n          .end()\n          .find('[data-toggle=\"tab\"]')\n          .attr('aria-expanded', true)\n      }\n\n      callback && callback()\n    }\n\n    $active.length && transition ?\n      $active\n        .one('bsTransitionEnd', next)\n        .emulateTransitionEnd(Tab.TRANSITION_DURATION) :\n      next()\n\n    $active.removeClass('in')\n  }\n\n\n  // TAB PLUGIN DEFINITION\n  // =====================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.tab')\n\n      if (!data) $this.data('bs.tab', (data = new Tab(this)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.tab\n\n  $.fn.tab             = Plugin\n  $.fn.tab.Constructor = Tab\n\n\n  // TAB NO CONFLICT\n  // ===============\n\n  $.fn.tab.noConflict = function () {\n    $.fn.tab = old\n    return this\n  }\n\n\n  // TAB DATA-API\n  // ============\n\n  var clickHandler = function (e) {\n    e.preventDefault()\n    Plugin.call($(this), 'show')\n  }\n\n  $(document)\n    .on('click.bs.tab.data-api', '[data-toggle=\"tab\"]', clickHandler)\n    .on('click.bs.tab.data-api', '[data-toggle=\"pill\"]', clickHandler)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: affix.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#affix\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // AFFIX CLASS DEFINITION\n  // ======================\n\n  var Affix = function (element, options) {\n    this.options = $.extend({}, Affix.DEFAULTS, options)\n\n    var target = this.options.target === Affix.DEFAULTS.target ? $(this.options.target) : $(document).find(this.options.target)\n\n    this.$target = target\n      .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))\n      .on('click.bs.affix.data-api',  $.proxy(this.checkPositionWithEventLoop, this))\n\n    this.$element     = $(element)\n    this.affixed      = null\n    this.unpin        = null\n    this.pinnedOffset = null\n\n    this.checkPosition()\n  }\n\n  Affix.VERSION  = '3.4.1'\n\n  Affix.RESET    = 'affix affix-top affix-bottom'\n\n  Affix.DEFAULTS = {\n    offset: 0,\n    target: window\n  }\n\n  Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {\n    var scrollTop    = this.$target.scrollTop()\n    var position     = this.$element.offset()\n    var targetHeight = this.$target.height()\n\n    if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false\n\n    if (this.affixed == 'bottom') {\n      if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'\n      return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'\n    }\n\n    var initializing   = this.affixed == null\n    var colliderTop    = initializing ? scrollTop : position.top\n    var colliderHeight = initializing ? targetHeight : height\n\n    if (offsetTop != null && scrollTop <= offsetTop) return 'top'\n    if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'\n\n    return false\n  }\n\n  Affix.prototype.getPinnedOffset = function () {\n    if (this.pinnedOffset) return this.pinnedOffset\n    this.$element.removeClass(Affix.RESET).addClass('affix')\n    var scrollTop = this.$target.scrollTop()\n    var position  = this.$element.offset()\n    return (this.pinnedOffset = position.top - scrollTop)\n  }\n\n  Affix.prototype.checkPositionWithEventLoop = function () {\n    setTimeout($.proxy(this.checkPosition, this), 1)\n  }\n\n  Affix.prototype.checkPosition = function () {\n    if (!this.$element.is(':visible')) return\n\n    var height       = this.$element.height()\n    var offset       = this.options.offset\n    var offsetTop    = offset.top\n    var offsetBottom = offset.bottom\n    var scrollHeight = Math.max($(document).height(), $(document.body).height())\n\n    if (typeof offset != 'object')         offsetBottom = offsetTop = offset\n    if (typeof offsetTop == 'function')    offsetTop    = offset.top(this.$element)\n    if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)\n\n    var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)\n\n    if (this.affixed != affix) {\n      if (this.unpin != null) this.$element.css('top', '')\n\n      var affixType = 'affix' + (affix ? '-' + affix : '')\n      var e         = $.Event(affixType + '.bs.affix')\n\n      this.$element.trigger(e)\n\n      if (e.isDefaultPrevented()) return\n\n      this.affixed = affix\n      this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null\n\n      this.$element\n        .removeClass(Affix.RESET)\n        .addClass(affixType)\n        .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')\n    }\n\n    if (affix == 'bottom') {\n      this.$element.offset({\n        top: scrollHeight - height - offsetBottom\n      })\n    }\n  }\n\n\n  // AFFIX PLUGIN DEFINITION\n  // =======================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.affix')\n      var options = typeof option == 'object' && option\n\n      if (!data) $this.data('bs.affix', (data = new Affix(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.affix\n\n  $.fn.affix             = Plugin\n  $.fn.affix.Constructor = Affix\n\n\n  // AFFIX NO CONFLICT\n  // =================\n\n  $.fn.affix.noConflict = function () {\n    $.fn.affix = old\n    return this\n  }\n\n\n  // AFFIX DATA-API\n  // ==============\n\n  $(window).on('load', function () {\n    $('[data-spy=\"affix\"]').each(function () {\n      var $spy = $(this)\n      var data = $spy.data()\n\n      data.offset = data.offset || {}\n\n      if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom\n      if (data.offsetTop    != null) data.offset.top    = data.offsetTop\n\n      Plugin.call($spy, data)\n    })\n  })\n\n}(jQuery);\n"
  },
  {
    "path": "doc/_build/manual/alt_layouts.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>Alt Layouts</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- customizations -->\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- pygments -->\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- icons -->\n    <link href=\"//netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.css\" rel=\"stylesheet\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n<script>\n  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\n  ga('create', 'UA-48968311-3', 'jandecaluwe.com');\n  ga('send', 'pageview');\n\n</script>\n \n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            <li><a href=\"/start.html\">Overview</a></li>\n            <li class=\"active\"><a href=\"/manual/\">Manual</a></li>\n            <li><a href=\"http://urubu-quickstart.jandecaluwe.com\">Quickstart</a></li>\n            <li><a href=\"/faq/\">FAQ</a></li>\n          </ul>\n          <form class=\"navbar-form navbar-left\" action=\"/search.html\" role=\"search\">\n            <div class=\"form-group\">\n                <input type=\"text\" required name=\"q\" id=\"tipue_search_input\" class=\"form-control\" placeholder=\"Search\"> \n            </div>\n          </form>\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li class=\"dropdown\">\n              <a href=\"/more/\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">More <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                <li><a href=\"https://github.com/jandecaluwe/urubu\">GitHub repository</a></li>\n                <li><a href=\"/more/sites.html\">Websites powered by Urubu</a></li>\n                <li><a href=\"/more/about.html\">About this site</a></li>\n              </ul>\n            </li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <ol class=\"breadcrumb\">\n    <li><a href=\"/\">Home</a></li>\n      <li><a href=\"/manual/\">Manual</a></li>\n      <li class=\"active\">Alt Layouts</li>\n  </ol>\n\n  <div class=\"page-header\">\n    <h1>Alt Layouts</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"col-md-6 content\" role=\"main\">\n    <main>\n      <p>Alt Layouts are for when you want to create more than one physical .html file per .md file.  This is most useful when the additional .html files do not depend on the content of the original page, but on the front matter attributes.</p>\n<h2 id=\"usage\">Usage</h2>\n<p>To enable alt layouts for a .md file, add an <code>alt_layouts</code> attribute to the front matter of a page.  This is a list of objects containing two attributes, <code>layout</code> and <code>location</code>.</p>\n<p>The <code>layout</code> attribute gives the name of an alternate layout to use.  The <code>location</code> attribute gives the directory where the .html file should be put.  That directory must already exist in your directory structure.</p>\n<p>Also add either <code>items_index</code> or <code>items_filter</code> to say where the list of it</p>\n<h2 id=\"example\">Example</h2>\n<p>The following is a sample of generating two additional .html files for a product page:</p>\n<div class=\"codehilite\"><pre><span></span><code>layout: product\n\nalt_layouts:\n    - layout: confirmation\n      location: confirmations\n    - layout: product_details\n      location: details\n</code></pre></div>\n\n<p>If the original foo.md file was in the products directory, three .html files would be generated:</p>\n<div class=\"codehilite\"><pre><span></span><code>products/foo.html\nconfirmations/foo.html\ndetails/foo.html\n</code></pre></div>\n    </main>\n    </div>\n\n    <div class=\"col-md-3\" role=\"complementary\">\n      <nav class=\"hidden-print hidden-xs hidden-sm\">\n        <div class=\"sidebar\" data-spy=\"affix\" data-offset-top=\"80\" data-offset-bottom=\"60\">\n          <div class=\"well\">\n            <a href=\"#\"><strong>Alt Layouts</strong></a>\n            <div class=\"toc\">\n<ul>\n<li><a href=\"#usage\">Usage</a></li>\n<li><a href=\"#example\">Example</a></li>\n</ul>\n</div>\n\n          </div>\n        </div>\n      </nav>\n    </div>\n\n  </div>\n\n    <div class=\"footer\">\n        <div style=\"margin: 5px\">\n<a href=\"https://twitter.com/share\" class=\"twitter-share-button\">Tweet</a>\n<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>\n\n<!-- Place this tag where you want the +1 button to render. -->\n<div class=\"g-plusone\" data-size=\"medium\"></div>\n\n<!-- Place this tag after the last +1 button tag. -->\n<script type=\"text/javascript\">\nwindow.__gcfg = {\n    lang: 'en-US'\n};\n  (function() {\n    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;\n    po.src = 'https://apis.google.com/js/plusone.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);\n  })();\n</script>\n\n<script type=\"text/javascript\" src=\"http://www.reddit.com/static/button/button1.js\"></script>        </div>\n        <p> Content licensed under the\n           <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\">CC-BY-SA License</a>.\n        </p> \n        <p>Website powered by <a href=\"http://urubu.jandecaluwe.com\">Urubu</a>.</p>\n    </div>\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <!-- <script src=\"https://code.jquery.com/jquery.js\"></script> -->\n    <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n \n\n  </body>\n</html>\n"
  },
  {
    "path": "doc/_build/manual/authoring.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>Authoring</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- customizations -->\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- pygments -->\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- icons -->\n    <link href=\"//netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.css\" rel=\"stylesheet\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n<script>\n  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\n  ga('create', 'UA-48968311-3', 'jandecaluwe.com');\n  ga('send', 'pageview');\n\n</script>\n \n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            <li><a href=\"/start.html\">Overview</a></li>\n            <li class=\"active\"><a href=\"/manual/\">Manual</a></li>\n            <li><a href=\"http://urubu-quickstart.jandecaluwe.com\">Quickstart</a></li>\n            <li><a href=\"/faq/\">FAQ</a></li>\n          </ul>\n          <form class=\"navbar-form navbar-left\" action=\"/search.html\" role=\"search\">\n            <div class=\"form-group\">\n                <input type=\"text\" required name=\"q\" id=\"tipue_search_input\" class=\"form-control\" placeholder=\"Search\"> \n            </div>\n          </form>\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li class=\"dropdown\">\n              <a href=\"/more/\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">More <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                <li><a href=\"https://github.com/jandecaluwe/urubu\">GitHub repository</a></li>\n                <li><a href=\"/more/sites.html\">Websites powered by Urubu</a></li>\n                <li><a href=\"/more/about.html\">About this site</a></li>\n              </ul>\n            </li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <ol class=\"breadcrumb\">\n    <li><a href=\"/\">Home</a></li>\n      <li><a href=\"/manual/\">Manual</a></li>\n      <li class=\"active\">Authoring</li>\n  </ol>\n\n  <div class=\"page-header\">\n    <h1>Authoring</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"col-md-6 content\" role=\"main\">\n    <main>\n      <h2 id=\"content\">Content</h2>\n<p>In Urubu, content is entered in <a href=\"http://daringfireball.net/projects/markdown/\" title=\"Markdown\">Markdown</a> format. This is a lightweight format\nthat feels like a natural way to write content in plain text.</p>\n<p>Stock markdown has a small feature set. For example, it does not even\nsupport tables. For this reason, Urubu supports some extensions. In particular,\nit supports the <a href=\"http://python-markdown.github.io/extensions/extra/\" title=\"Markdown Extra\">Markdown Extra</a> extensions that have become an industry\nstandard, as well as a few others.</p>\n<p>The most notable supported extensions are:</p>\n<ul>\n<li><a href=\"http://python-markdown.github.io/extensions/tables/\" title=\"Tables\">Tables</a></li>\n<li><a href=\"http://python-markdown.github.io/extensions/attr_list/\" title=\"Attribute lists\">Attribute lists</a></li>\n<li><a href=\"http://python-markdown.github.io/extensions/abbreviations/\" title=\"Abbrevations\">Abbrevations</a></li>\n<li><a href=\"http://python-markdown.github.io/extensions/definition_lists/\" title=\"Definition Lists\">Definition Lists</a></li>\n<li><a href=\"http://python-markdown.github.io/extensions/fenced_code_blocks/\" title=\"Fenced Code Blocks\">Fenced Code Blocks</a> </li>\n<li><a href=\"http://python-markdown.github.io/extensions/code_hilite/\" title=\"CodeHilite\">CodeHilite</a></li>\n</ul>\n<h2 id=\"code\">Code</h2>\n<p>Urubu intents to offer good support for software projects. Therefore, it\nsupports nicely rendered code blocks. </p>\n<p>One part of the solution is <a href=\"http://python-markdown.github.io/extensions/fenced_code_blocks/\" title=\"Fenced Code Blocks\">Fenced Code Blocks</a>, provided by the Markdown Extra\nextensions.  This lets you enter language-specific code blocks without the need\nfor indentation.</p>\n<p>The second part is the <a href=\"http://python-markdown.github.io/extensions/code_hilite/\" title=\"CodeHilite\">CodeHilite</a> extension of Python-Markdown.  This\nextension enables language-specific syntax highlighting through the <a href=\"http://pygments.org\" title=\"Pygments\">Pygments</a>\nlibrary.</p>\n<p>To properly render the highlighted code, you will need to add a <code>syntax.css</code>\nstylesheet. A good solution is to use the <a href=\"https://github.com/mojombo/tpw/blob/master/css/syntax.css\">syntax stylesheet from\nGitHub</a>.</p>\n<h2 id=\"reference-links\">Reference links</h2>\n<p>Stock Markdown supports \"reference links\" that are resolved by defining them\nlater in the file. For example, you can use <code>[urubu]</code> in your content and\nfurther on define it as follows:</p>\n<div class=\"codehilite\"><pre><span></span><code>[urubu]: http://urubu.jandecaluwe.com\n</code></pre></div>\n\n<p>This is nice for readability, but it all remains file based.</p>\n<p>Urubu extends this behavior by automatically resolving <a href=\"/manual/structure.html#project-wide-reference-ids\" title=\"Project structure\">Project-wide reference ids</a>.  This feature is implemented as a Markdown extension. Note that\nit doesn't require a syntax change. It enables page linking like in wikis.</p>\n<p>In addition, you can add a fragment, like <code>#some-anchor</code>, to the reference id.\nThis represents a link to an anchor within a page.  Since Urubu automatically\nadds slugified anchors to markdown headers, you can use those as targets.  For\ninstance, <code>[authoring#reference-links]</code> is a link to the current\n<a href=\"/manual/authoring.html#reference-links\" title=\"Authoring\">Reference links</a> section.  You can also define your own anchors\nusing <a href=\"http://python-markdown.github.io/extensions/attr_list/\" title=\"Attribute lists\">Attribute lists</a>. </p>\n<p>Markdown supports reference links without a text.  In that case, Urubu inserts\nan appropriate text in the html.  For a reference link with no fragment, the\ntitle of the page is inserted.  For a reference link with a fragment, the\nfragment text is inserted. To make the result more readable, you can use\nnon-slugified fragment text.  For example, <code>[authoring#Reference links]</code> also\nlinks to the present section, and is rendered as <a href=\"/manual/authoring.html#reference-links\" title=\"Authoring\">Reference links</a>. </p>\n    </main>\n    <ul class=\"pager\">\n      <li class=\"previous\"><a href=\"/manual/structure.html\">&larr; Project structure</a></li>\n      <li class=\"next\"><a href=\"/manual/building.html\">Project building &rarr;</a></li>\n    </ul>\n    </div>\n\n    <div class=\"col-md-3\" role=\"complementary\">\n      <nav class=\"hidden-print hidden-xs hidden-sm\">\n        <div class=\"sidebar\" data-spy=\"affix\" data-offset-top=\"80\" data-offset-bottom=\"60\">\n          <div class=\"well\">\n            <a href=\"#\"><strong>Authoring</strong></a>\n            <div class=\"toc\">\n<ul>\n<li><a href=\"#content\">Content</a></li>\n<li><a href=\"#code\">Code</a></li>\n<li><a href=\"#reference-links\">Reference links</a></li>\n</ul>\n</div>\n\n          </div>\n        </div>\n      </nav>\n    </div>\n\n  </div>\n\n    <div class=\"footer\">\n        <div style=\"margin: 5px\">\n<a href=\"https://twitter.com/share\" class=\"twitter-share-button\">Tweet</a>\n<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>\n\n<!-- Place this tag where you want the +1 button to render. -->\n<div class=\"g-plusone\" data-size=\"medium\"></div>\n\n<!-- Place this tag after the last +1 button tag. -->\n<script type=\"text/javascript\">\nwindow.__gcfg = {\n    lang: 'en-US'\n};\n  (function() {\n    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;\n    po.src = 'https://apis.google.com/js/plusone.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);\n  })();\n</script>\n\n<script type=\"text/javascript\" src=\"http://www.reddit.com/static/button/button1.js\"></script>        </div>\n        <p> Content licensed under the\n           <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\">CC-BY-SA License</a>.\n        </p> \n        <p>Website powered by <a href=\"http://urubu.jandecaluwe.com\">Urubu</a>.</p>\n    </div>\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <!-- <script src=\"https://code.jquery.com/jquery.js\"></script> -->\n    <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n \n\n  </body>\n</html>\n"
  },
  {
    "path": "doc/_build/manual/building.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>Project building</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- customizations -->\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- pygments -->\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- icons -->\n    <link href=\"//netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.css\" rel=\"stylesheet\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n<script>\n  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\n  ga('create', 'UA-48968311-3', 'jandecaluwe.com');\n  ga('send', 'pageview');\n\n</script>\n \n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            <li><a href=\"/start.html\">Overview</a></li>\n            <li class=\"active\"><a href=\"/manual/\">Manual</a></li>\n            <li><a href=\"http://urubu-quickstart.jandecaluwe.com\">Quickstart</a></li>\n            <li><a href=\"/faq/\">FAQ</a></li>\n          </ul>\n          <form class=\"navbar-form navbar-left\" action=\"/search.html\" role=\"search\">\n            <div class=\"form-group\">\n                <input type=\"text\" required name=\"q\" id=\"tipue_search_input\" class=\"form-control\" placeholder=\"Search\"> \n            </div>\n          </form>\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li class=\"dropdown\">\n              <a href=\"/more/\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">More <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                <li><a href=\"https://github.com/jandecaluwe/urubu\">GitHub repository</a></li>\n                <li><a href=\"/more/sites.html\">Websites powered by Urubu</a></li>\n                <li><a href=\"/more/about.html\">About this site</a></li>\n              </ul>\n            </li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <ol class=\"breadcrumb\">\n    <li><a href=\"/\">Home</a></li>\n      <li><a href=\"/manual/\">Manual</a></li>\n      <li class=\"active\">Project building</li>\n  </ol>\n\n  <div class=\"page-header\">\n    <h1>Project building</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"col-md-6 content\" role=\"main\">\n    <main>\n      <h2 id=\"the-urubu-command\">The <code>urubu</code> command</h2>\n<p>After installation, an <code>urubu</code> command will be available.</p>\n<p>If you prefer, you can call the installed package as a script using <code>python -m\nurubu</code>, with the same effect.</p>\n<h2 id=\"subcommands\">Subcommands</h2>\n<p>The <code>urubu</code> command supports two subcommands. Run these commands from the top\nlevel project directory.</p>\n<dl class=\"dl-horizontal\">\n<dt><code>urubu build</code></dt>\n<dd>Build the website.  The website will be in the <code>_build</code> subdirectory.</dd>\n<dt><code>urubu serve</code></dt>\n<dd>Start a local webserver to serve the website as you develop it.  The website\nwill be available at <code>localhost:8000</code>. Run this command in a separate terminal\nwindow, and kill the server when you are done.</dd>\n</dl>\n<h2 id=\"development-flow\">Development flow</h2>\n<p>I prefer to put the  commands in a Makefile, so that I can\nrun <code>make</code> to build and <code>make serve</code> to start a server.</p>\n<p>Currently, you have to build the site explicitly to see\nthe development changes in the browser.</p>\n    </main>\n    <ul class=\"pager\">\n      <li class=\"previous\"><a href=\"/manual/authoring.html\">&larr; Authoring</a></li>\n      <li class=\"next\"><a href=\"/manual/templates.html\">Templates &rarr;</a></li>\n    </ul>\n    </div>\n\n    <div class=\"col-md-3\" role=\"complementary\">\n      <nav class=\"hidden-print hidden-xs hidden-sm\">\n        <div class=\"sidebar\" data-spy=\"affix\" data-offset-top=\"80\" data-offset-bottom=\"60\">\n          <div class=\"well\">\n            <a href=\"#\"><strong>Project building</strong></a>\n            <div class=\"toc\">\n<ul>\n<li><a href=\"#the-urubu-command\">The urubu command</a></li>\n<li><a href=\"#subcommands\">Subcommands</a></li>\n<li><a href=\"#development-flow\">Development flow</a></li>\n</ul>\n</div>\n\n          </div>\n        </div>\n      </nav>\n    </div>\n\n  </div>\n\n    <div class=\"footer\">\n        <div style=\"margin: 5px\">\n<a href=\"https://twitter.com/share\" class=\"twitter-share-button\">Tweet</a>\n<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>\n\n<!-- Place this tag where you want the +1 button to render. -->\n<div class=\"g-plusone\" data-size=\"medium\"></div>\n\n<!-- Place this tag after the last +1 button tag. -->\n<script type=\"text/javascript\">\nwindow.__gcfg = {\n    lang: 'en-US'\n};\n  (function() {\n    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;\n    po.src = 'https://apis.google.com/js/plusone.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);\n  })();\n</script>\n\n<script type=\"text/javascript\" src=\"http://www.reddit.com/static/button/button1.js\"></script>        </div>\n        <p> Content licensed under the\n           <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\">CC-BY-SA License</a>.\n        </p> \n        <p>Website powered by <a href=\"http://urubu.jandecaluwe.com\">Urubu</a>.</p>\n    </div>\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <!-- <script src=\"https://code.jquery.com/jquery.js\"></script> -->\n    <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n \n\n  </body>\n</html>\n"
  },
  {
    "path": "doc/_build/manual/extensions.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>Markdown extensions</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- customizations -->\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- pygments -->\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- icons -->\n    <link href=\"//netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.css\" rel=\"stylesheet\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n<script>\n  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\n  ga('create', 'UA-48968311-3', 'jandecaluwe.com');\n  ga('send', 'pageview');\n\n</script>\n \n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            <li><a href=\"/start.html\">Overview</a></li>\n            <li class=\"active\"><a href=\"/manual/\">Manual</a></li>\n            <li><a href=\"http://urubu-quickstart.jandecaluwe.com\">Quickstart</a></li>\n            <li><a href=\"/faq/\">FAQ</a></li>\n          </ul>\n          <form class=\"navbar-form navbar-left\" action=\"/search.html\" role=\"search\">\n            <div class=\"form-group\">\n                <input type=\"text\" required name=\"q\" id=\"tipue_search_input\" class=\"form-control\" placeholder=\"Search\"> \n            </div>\n          </form>\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li class=\"dropdown\">\n              <a href=\"/more/\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">More <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                <li><a href=\"https://github.com/jandecaluwe/urubu\">GitHub repository</a></li>\n                <li><a href=\"/more/sites.html\">Websites powered by Urubu</a></li>\n                <li><a href=\"/more/about.html\">About this site</a></li>\n              </ul>\n            </li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <ol class=\"breadcrumb\">\n    <li><a href=\"/\">Home</a></li>\n      <li><a href=\"/manual/\">Manual</a></li>\n      <li class=\"active\">Markdown extensions</li>\n  </ol>\n\n  <div class=\"page-header\">\n    <h1>Markdown extensions</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"col-md-6 content\" role=\"main\">\n    <main>\n      <h2 id=\"introduction\">Introduction</h2>\n<p>Urubu implements a number of Markdown extensions. These extensions do not\nchange or extend the Markdown syntax. Rather, they add interesting features by\nprocessing and rendering the Markdown source in more sophisticated ways. </p>\n<p>The extensions are described in more detail below.</p>\n<h2 id=\"project-wide-reference-ids\">Project-wide reference ids</h2>\n<p>Urubu implements a Markdown extension to resolve project-wide reference ids.\nThis means that all pages in the project are automatically available as\nreference ids, and can be referred to using Markdown's syntax for reference\nlinks.</p>\n<p>This feature is described in more detail in the sections\n<a href=\"/manual/structure.html#project-wide-reference-ids\" title=\"Project structure\">Project-wide reference ids</a> and <a href=\"/manual/authoring.html#reference-links\" title=\"Authoring\">Reference links</a>. It is Urubu's most important extension and a fundamental feature of the\ntool.</p>\n<h2 id=\"bootstrap-specific-extensions\">Bootstrap-specific extensions</h2>\n<p>Urubu is designed to play well with <a href=\"http://getbootstrap.com\" title=\"Bootstrap\">Bootstrap</a>.  To use certain Bootstrap\nfeatures, it has extensions that add Bootstrap classes to certain tags.\nMore specifically, the following classes are added:</p>\n<dl class=\"dl-horizontal\">\n<dt>table</dt>\n<dd>Added to the <code>&lt;table&gt;</code> tag. This defines basic styling for tables.</dd>\n<dt>dl-horizontal</dt>\n<dd>Added to the <code>&lt;dl&gt;</code> tag that defines definition lists. This creates \na horizontal layout for definition lists in wide viewports.</dd>\n</dl>\n<h2 id=\"support-for-the-mark-tag\">Support for the <code>mark</code> tag</h2>\n<p>The html5 specification added <mark>a new tag to highlight text</mark>: the <code>&lt;mark&gt;</code>\ntag. For a good explanation of its purpose and the differences with the\n<code>&lt;strong&gt;</code> and <code>&lt;em&gt;</code> tags, see <a href=\"http://stackoverflow.com/a/14741437\">this answer on Stack Overflow</a>. </p>\n<p>Urubu supports lightweight markup for this tag by taking advantage of a\nredundancy in Markdown. In standard Markdown, you can either use asterisks\n(<code>*</code>) or underscores (<code>_</code>) to indicate emphasis. With the Urubu extension, the\nunderscore (<code>_</code>) version is rendered using <code>&lt;mark&gt;</code> instead.</p>\n<p>This is an experimental feature that may be taken out if there are\nserious objections, although at this point there do not seem to be\ndisadvantages. To disable the feature, the <code>mark_tag_support</code> variable\ncan be set to <code>false</code> in the <code>_site.yml</code> file. </p>\n    </main>\n    <ul class=\"pager\">\n      <li class=\"previous\"><a href=\"/manual/hooks.html\">&larr; Python hooks</a></li>\n      <li class=\"next\"><a href=\"/manual/search.html\">Adding Search &rarr;</a></li>\n    </ul>\n    </div>\n\n    <div class=\"col-md-3\" role=\"complementary\">\n      <nav class=\"hidden-print hidden-xs hidden-sm\">\n        <div class=\"sidebar\" data-spy=\"affix\" data-offset-top=\"80\" data-offset-bottom=\"60\">\n          <div class=\"well\">\n            <a href=\"#\"><strong>Markdown extensions</strong></a>\n            <div class=\"toc\">\n<ul>\n<li><a href=\"#introduction\">Introduction</a></li>\n<li><a href=\"#project-wide-reference-ids\">Project-wide reference ids</a></li>\n<li><a href=\"#bootstrap-specific-extensions\">Bootstrap-specific extensions</a></li>\n<li><a href=\"#support-for-the-mark-tag\">Support for the mark tag</a></li>\n</ul>\n</div>\n\n          </div>\n        </div>\n      </nav>\n    </div>\n\n  </div>\n\n    <div class=\"footer\">\n        <div style=\"margin: 5px\">\n<a href=\"https://twitter.com/share\" class=\"twitter-share-button\">Tweet</a>\n<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>\n\n<!-- Place this tag where you want the +1 button to render. -->\n<div class=\"g-plusone\" data-size=\"medium\"></div>\n\n<!-- Place this tag after the last +1 button tag. -->\n<script type=\"text/javascript\">\nwindow.__gcfg = {\n    lang: 'en-US'\n};\n  (function() {\n    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;\n    po.src = 'https://apis.google.com/js/plusone.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);\n  })();\n</script>\n\n<script type=\"text/javascript\" src=\"http://www.reddit.com/static/button/button1.js\"></script>        </div>\n        <p> Content licensed under the\n           <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\">CC-BY-SA License</a>.\n        </p> \n        <p>Website powered by <a href=\"http://urubu.jandecaluwe.com\">Urubu</a>.</p>\n    </div>\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <!-- <script src=\"https://code.jquery.com/jquery.js\"></script> -->\n    <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n \n\n  </body>\n</html>\n"
  },
  {
    "path": "doc/_build/manual/hooks.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>Python hooks</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- customizations -->\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- pygments -->\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- icons -->\n    <link href=\"//netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.css\" rel=\"stylesheet\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n<script>\n  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\n  ga('create', 'UA-48968311-3', 'jandecaluwe.com');\n  ga('send', 'pageview');\n\n</script>\n \n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            <li><a href=\"/start.html\">Overview</a></li>\n            <li class=\"active\"><a href=\"/manual/\">Manual</a></li>\n            <li><a href=\"http://urubu-quickstart.jandecaluwe.com\">Quickstart</a></li>\n            <li><a href=\"/faq/\">FAQ</a></li>\n          </ul>\n          <form class=\"navbar-form navbar-left\" action=\"/search.html\" role=\"search\">\n            <div class=\"form-group\">\n                <input type=\"text\" required name=\"q\" id=\"tipue_search_input\" class=\"form-control\" placeholder=\"Search\"> \n            </div>\n          </form>\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li class=\"dropdown\">\n              <a href=\"/more/\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">More <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                <li><a href=\"https://github.com/jandecaluwe/urubu\">GitHub repository</a></li>\n                <li><a href=\"/more/sites.html\">Websites powered by Urubu</a></li>\n                <li><a href=\"/more/about.html\">About this site</a></li>\n              </ul>\n            </li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <ol class=\"breadcrumb\">\n    <li><a href=\"/\">Home</a></li>\n      <li><a href=\"/manual/\">Manual</a></li>\n      <li class=\"active\">Python hooks</li>\n  </ol>\n\n  <div class=\"page-header\">\n    <h1>Python hooks</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"col-md-6 content\" role=\"main\">\n    <main>\n      <h2 id=\"introduction\">Introduction</h2>\n<p>Urubu supports Python hooks to make templating easier. Upon a build, it tries\nto import a <code>_python</code> module or package, and looks for hook variables with\npredefined names.  The following hooks are defined:</p>\n<table class=\"table\">\n<thead>\n<tr>\n<th>Variable</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>filters</code></td>\n<td>A mapping from filter names to filter functions.</td>\n</tr>\n<tr>\n<td><code>process_info</code></td>\n<td>A function to inspect and process content file info.</td>\n</tr>\n</tbody>\n</table>\n<p>You have to make sure that these names are exported correctly.  For example, if\nyou organize <code>_python</code> as a package, it could look as follows:</p>\n<div class=\"codehilite\"><pre><span></span><code>_python/\n    __init__.py\n    filters.py\n    hooks.py\n</code></pre></div>\n\n<p>If <code>filters</code> is defined in <code>filters.py</code>, and <code>process_info</code> in <code>hooks.py</code>, the\n<code>__init__.py</code> file would contain:</p>\n<div class=\"codehilite\"><pre><span></span><code>from .filters import filters\nfrom .hooks import process_info\n</code></pre></div>\n\n<h2 id=\"the-filters-hook\">The <code>filters</code> hook</h2>\n<p>Filters functions should be defined as <a href=\"http://jinja.pocoo.org/docs/api/#custom-filters\">custom filters in\nJinja2</a>.</p>\n<p>As a typical example, consider a filter that converts a date value into a\ndesired format. The <code>filters.py</code> module would contain the following:</p>\n<div class=\"codehilite\"><pre><span></span><code>def dateformat(value, format=&quot;%d-%b-%Y&quot;):\n    return value.strftime(format)\n\nfilters = {}\nfilters[&#39;dateformat&#39;] = dateformat\n</code></pre></div>\n\n<p>You can then use the <code>dateformat</code> filter in templates.</p>\n<h2 id=\"the-process_info-hook\">The <code>process_info</code> hook</h2>\n<p>The interface of the <code>process_info</code> function is as follows:</p>\n<div class=\"codehilite\"><pre><span></span><code>def process(info, site):\n    ...\n</code></pre></div>\n\n<p>This function is called for every content file in the project.</p>\n<p>The <code>site</code> variable provides access to the site variables defined in\n<code>_site.yml</code>.</p>\n<p>The <code>info</code> variable contains the file content info as it is being\nconstructed by Urubu. At the moment of the call, the following\ninferred attributes are available:</p>\n<table class=\"table\">\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>The unique id by which the object is known in the project.</td>\n</tr>\n<tr>\n<td><code>url</code></td>\n<td>The url of the object.</td>\n</tr>\n<tr>\n<td><code>components</code></td>\n<td>The components of the object's pathname, without file extension, as a list.</td>\n</tr>\n<tr>\n<td><code>fn</code></td>\n<td>The pathname of the file or directory corresponding the object.</td>\n</tr>\n<tr>\n<td><code>mdate</code></td>\n<td>Modification date</td>\n</tr>\n</tbody>\n</table>\n<p>In addition, all attributes specified in the YAML front matter of the\ncorresponding content file are available as attributes of the <code>info</code> object.</p>\n<p>The <code>site</code> and <code>info</code> variables are Python dictionaries. This means that the\nattributes are available via key access, not via Python attribute access.  This\nis because the YAML reader constructs Python dictionaries from the front\nmatter.</p>\n<p>The <code>process_info</code> function can can inspect the attributes, verify and modify\nthem, and add additional ones.</p>\n<h2 id=\"process_info-examples\"><code>process_info</code> examples</h2>\n<h3 id=\"defining-a-default-layout\">Defining a default <code>layout</code></h3>\n<p>It can be handy to define a default <code>layout</code> for the case this mandatory\nattribute is not specified in the content file.  Suppose we want a default\n<code>index</code> layout for index files, and a <code>page</code> layout for other files:</p>\n<div class=\"codehilite\"><pre><span></span><code>def process_info(info, site):\n    if &#39;layout&#39; not in info:\n        if info[&#39;components&#39;][-1] == &#39;index&#39;:\n            info[&#39;layout&#39;] = &#39;index&#39;\n        else:\n            info[&#39;layout&#39;] = &#39;page&#39;\n</code></pre></div>\n\n<h3 id=\"defining-a-specific-layout\">Defining a specific layout</h3>\n<p>Suppose we have a <code>blog</code> directory and we want to automatically define a\nspecific <code>post</code> layout for blog posts:</p>\n<div class=\"codehilite\"><pre><span></span><code>def process_info(info, site):\n    components = info[&#39;components&#39;]\n    if len(components) == 2:\n        if components[0] == &#39;blog&#39; and components[1] != &#39;index&#39;:\n            process_post(info)\n\ndef process_post(info):\n    if not &#39;layout&#39; in info:\n        info[&#39;layout&#39;] = &#39;post&#39;\n</code></pre></div>\n    </main>\n    <ul class=\"pager\">\n      <li class=\"previous\"><a href=\"/manual/templating-in-pages.html\">&larr; Templating constructs in pages</a></li>\n      <li class=\"next\"><a href=\"/manual/extensions.html\">Markdown extensions &rarr;</a></li>\n    </ul>\n    </div>\n\n    <div class=\"col-md-3\" role=\"complementary\">\n      <nav class=\"hidden-print hidden-xs hidden-sm\">\n        <div class=\"sidebar\" data-spy=\"affix\" data-offset-top=\"80\" data-offset-bottom=\"60\">\n          <div class=\"well\">\n            <a href=\"#\"><strong>Python hooks</strong></a>\n            <div class=\"toc\">\n<ul>\n<li><a href=\"#introduction\">Introduction</a></li>\n<li><a href=\"#the-filters-hook\">The filters hook</a></li>\n<li><a href=\"#the-process_info-hook\">The process_info hook</a></li>\n<li><a href=\"#process_info-examples\">process_info examples</a><ul>\n<li><a href=\"#defining-a-default-layout\">Defining a default layout</a></li>\n<li><a href=\"#defining-a-specific-layout\">Defining a specific layout</a></li>\n</ul>\n</li>\n</ul>\n</div>\n\n          </div>\n        </div>\n      </nav>\n    </div>\n\n  </div>\n\n    <div class=\"footer\">\n        <div style=\"margin: 5px\">\n<a href=\"https://twitter.com/share\" class=\"twitter-share-button\">Tweet</a>\n<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>\n\n<!-- Place this tag where you want the +1 button to render. -->\n<div class=\"g-plusone\" data-size=\"medium\"></div>\n\n<!-- Place this tag after the last +1 button tag. -->\n<script type=\"text/javascript\">\nwindow.__gcfg = {\n    lang: 'en-US'\n};\n  (function() {\n    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;\n    po.src = 'https://apis.google.com/js/plusone.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);\n  })();\n</script>\n\n<script type=\"text/javascript\" src=\"http://www.reddit.com/static/button/button1.js\"></script>        </div>\n        <p> Content licensed under the\n           <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\">CC-BY-SA License</a>.\n        </p> \n        <p>Website powered by <a href=\"http://urubu.jandecaluwe.com\">Urubu</a>.</p>\n    </div>\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <!-- <script src=\"https://code.jquery.com/jquery.js\"></script> -->\n    <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n \n\n  </body>\n</html>\n"
  },
  {
    "path": "doc/_build/manual/index.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>Manual</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- customizations -->\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- pygments -->\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- icons -->\n    <link href=\"//netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.css\" rel=\"stylesheet\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n<script>\n  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\n  ga('create', 'UA-48968311-3', 'jandecaluwe.com');\n  ga('send', 'pageview');\n\n</script>\n \n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            <li><a href=\"/start.html\">Overview</a></li>\n            <li class=\"active\"><a href=\"/manual/\">Manual</a></li>\n            <li><a href=\"http://urubu-quickstart.jandecaluwe.com\">Quickstart</a></li>\n            <li><a href=\"/faq/\">FAQ</a></li>\n          </ul>\n          <form class=\"navbar-form navbar-left\" action=\"/search.html\" role=\"search\">\n            <div class=\"form-group\">\n                <input type=\"text\" required name=\"q\" id=\"tipue_search_input\" class=\"form-control\" placeholder=\"Search\"> \n            </div>\n          </form>\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li class=\"dropdown\">\n              <a href=\"/more/\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">More <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                <li><a href=\"https://github.com/jandecaluwe/urubu\">GitHub repository</a></li>\n                <li><a href=\"/more/sites.html\">Websites powered by Urubu</a></li>\n                <li><a href=\"/more/about.html\">About this site</a></li>\n              </ul>\n            </li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"jumbotron\">\n  <div class=\"container\">\n    <div class=\"row\">\n       <div class=\"col-md-7\">\n         <h1>Manual</h1>\n         <p></p>\n    </div>\n  </div>\n </div>\n</div>\n\n<div class=\"container\">\n  <div class=\"row\">\n\n    <div class=\"col-md-7\" role=\"main\">\n    <main>\n      <h4><a href=\"/manual/intro.html\">Concepts</a></h4>\n        <p></p>\n      <h4><a href=\"/manual/install.html\">Installation</a></h4>\n        <p></p>\n      <h4><a href=\"/manual/structure.html\">Project structure</a></h4>\n        <p></p>\n      <h4><a href=\"/manual/authoring.html\">Authoring</a></h4>\n        <p></p>\n      <h4><a href=\"/manual/building.html\">Project building</a></h4>\n        <p></p>\n      <h4><a href=\"/manual/templates.html\">Templates</a></h4>\n        <p></p>\n      <h4><a href=\"/manual/templating-in-pages.html\">Templating constructs in pages</a></h4>\n        <p></p>\n      <h4><a href=\"/manual/hooks.html\">Python hooks</a></h4>\n        <p></p>\n      <h4><a href=\"/manual/extensions.html\">Markdown extensions</a></h4>\n        <p></p>\n      <h4><a href=\"/manual/search.html\">Adding Search</a></h4>\n        <p></p>\n      <h4><a href=\"/manual/pagination.html\">Pagination</a></h4>\n        <p></p>\n      <h4><a href=\"/manual/alt_layouts.html\">Alt Layouts</a></h4>\n        <p></p>\n    </main>\n    </div>\n\n </div>\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <!-- <script src=\"https://code.jquery.com/jquery.js\"></script> -->\n    <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n \n\n  </body>\n</html>\n"
  },
  {
    "path": "doc/_build/manual/install.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>Installation</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- customizations -->\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- pygments -->\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- icons -->\n    <link href=\"//netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.css\" rel=\"stylesheet\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n<script>\n  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\n  ga('create', 'UA-48968311-3', 'jandecaluwe.com');\n  ga('send', 'pageview');\n\n</script>\n \n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            <li><a href=\"/start.html\">Overview</a></li>\n            <li class=\"active\"><a href=\"/manual/\">Manual</a></li>\n            <li><a href=\"http://urubu-quickstart.jandecaluwe.com\">Quickstart</a></li>\n            <li><a href=\"/faq/\">FAQ</a></li>\n          </ul>\n          <form class=\"navbar-form navbar-left\" action=\"/search.html\" role=\"search\">\n            <div class=\"form-group\">\n                <input type=\"text\" required name=\"q\" id=\"tipue_search_input\" class=\"form-control\" placeholder=\"Search\"> \n            </div>\n          </form>\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li class=\"dropdown\">\n              <a href=\"/more/\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">More <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                <li><a href=\"https://github.com/jandecaluwe/urubu\">GitHub repository</a></li>\n                <li><a href=\"/more/sites.html\">Websites powered by Urubu</a></li>\n                <li><a href=\"/more/about.html\">About this site</a></li>\n              </ul>\n            </li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <ol class=\"breadcrumb\">\n    <li><a href=\"/\">Home</a></li>\n      <li><a href=\"/manual/\">Manual</a></li>\n      <li class=\"active\">Installation</li>\n  </ol>\n\n  <div class=\"page-header\">\n    <h1>Installation</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"col-md-6 content\" role=\"main\">\n    <main>\n      <p>Urubu works with modern versions of Python 2 and Python 3 using the same\ncodebase. More specifically, it requires Python 2.7 or Python 3.4.</p>\n<p>You can install Urubu using pip: </p>\n<div class=\"codehilite\"><pre><span></span><code>pip install urubu\n</code></pre></div>\n\n<p>To upgrade an existing installation to the\nlatest version, use:</p>\n<div class=\"codehilite\"><pre><span></span><code>pip install --upgrade urubu\n</code></pre></div>\n\n<p>If pip is not yet available on your system, follow the <a href=\"http://www.pip-installer.org/en/latest/installing.html\">pip installation\ninstructions</a>.</p>\n<p>You may want to install Urubu in an isolated environment using <a href=\"http://www.virtualenv.org/en/latest/virtualenv.html\" title=\"virtualenv\">virtualenv</a>.</p>\n<p>Urubu depends on a number of libraries that will automatically be installed if\nnot yet available: <a href=\"http://python-markdown.github.io/\" title=\"Python-Markdown\">Python-Markdown</a>, <a href=\"http://pyyaml.org\" title=\"PyYAML\">PyYAML</a>, <a href=\"http://pygments.org\" title=\"Pygments\">Pygments</a> and <a href=\"http://jinja.pocoo.org\" title=\"Jinja2\">Jinja2</a>.</p>\n<p>For a quick way to set up a new Urubu project, visit <a href=\"http://urubu-quickstart.jandecaluwe.com\" title=\"Urubu Quickstart\">Urubu Quickstart</a>.</p>\n    </main>\n    <ul class=\"pager\">\n      <li class=\"previous\"><a href=\"/manual/intro.html\">&larr; Concepts</a></li>\n      <li class=\"next\"><a href=\"/manual/structure.html\">Project structure &rarr;</a></li>\n    </ul>\n    </div>\n\n\n  </div>\n\n    <div class=\"footer\">\n        <div style=\"margin: 5px\">\n<a href=\"https://twitter.com/share\" class=\"twitter-share-button\">Tweet</a>\n<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>\n\n<!-- Place this tag where you want the +1 button to render. -->\n<div class=\"g-plusone\" data-size=\"medium\"></div>\n\n<!-- Place this tag after the last +1 button tag. -->\n<script type=\"text/javascript\">\nwindow.__gcfg = {\n    lang: 'en-US'\n};\n  (function() {\n    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;\n    po.src = 'https://apis.google.com/js/plusone.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);\n  })();\n</script>\n\n<script type=\"text/javascript\" src=\"http://www.reddit.com/static/button/button1.js\"></script>        </div>\n        <p> Content licensed under the\n           <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\">CC-BY-SA License</a>.\n        </p> \n        <p>Website powered by <a href=\"http://urubu.jandecaluwe.com\">Urubu</a>.</p>\n    </div>\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <!-- <script src=\"https://code.jquery.com/jquery.js\"></script> -->\n    <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n \n\n  </body>\n</html>\n"
  },
  {
    "path": "doc/_build/manual/intro.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>Concepts</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- customizations -->\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- pygments -->\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- icons -->\n    <link href=\"//netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.css\" rel=\"stylesheet\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n<script>\n  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\n  ga('create', 'UA-48968311-3', 'jandecaluwe.com');\n  ga('send', 'pageview');\n\n</script>\n \n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            <li><a href=\"/start.html\">Overview</a></li>\n            <li class=\"active\"><a href=\"/manual/\">Manual</a></li>\n            <li><a href=\"http://urubu-quickstart.jandecaluwe.com\">Quickstart</a></li>\n            <li><a href=\"/faq/\">FAQ</a></li>\n          </ul>\n          <form class=\"navbar-form navbar-left\" action=\"/search.html\" role=\"search\">\n            <div class=\"form-group\">\n                <input type=\"text\" required name=\"q\" id=\"tipue_search_input\" class=\"form-control\" placeholder=\"Search\"> \n            </div>\n          </form>\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li class=\"dropdown\">\n              <a href=\"/more/\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">More <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                <li><a href=\"https://github.com/jandecaluwe/urubu\">GitHub repository</a></li>\n                <li><a href=\"/more/sites.html\">Websites powered by Urubu</a></li>\n                <li><a href=\"/more/about.html\">About this site</a></li>\n              </ul>\n            </li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <ol class=\"breadcrumb\">\n    <li><a href=\"/\">Home</a></li>\n      <li><a href=\"/manual/\">Manual</a></li>\n      <li class=\"active\">Concepts</li>\n  </ol>\n\n  <div class=\"page-header\">\n    <h1>Concepts</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"col-md-6 content\" role=\"main\">\n    <main>\n      <h2 id=\"introduction\">Introduction</h2>\n<p>Welcome to Urubu! My name is Jan Decaluwe and I am Urubu's author.</p>\n<p>Urubu is a micro <abbr title=\"Content Management System\">CMS</abbr> for static websites.  The qualification \"micro* means that\nit has a small feature set, defined by what I need for my purposes.  To know\nwhether it is the right tool for you, check out <a href=\"/start.html\" title=\"Overview\">Overview</a>. </p>\n<p>Urubu's design philosophy is radical reuse of great software and ideas from\nothers. In the following sections, I will describe its concepts and how\nthey are implemented.</p>\n<h2 id=\"authoring\">Authoring</h2>\n<p>In Urubu, content is entered in <a href=\"http://daringfireball.net/projects/markdown/\" title=\"Markdown\">Markdown</a> format. This is a lightweight format\nthat feels like a natural way to write content in plain text.</p>\n<p>Markdown support in Urubu is implemented by the <a href=\"http://python-markdown.github.io/\" title=\"Python-Markdown\">Python-Markdown</a> package, that\nconverts the format to html. Urubu also supports the industry standard\n<a href=\"http://python-markdown.github.io/extensions/extra/\" title=\"Markdown Extra\">Markdown Extra</a> extensions, with useful features such as tables and definition\nlists.</p>\n<p>Urubu supports nicely rendered code blocks, an essential feature for software\nprojects documentation. <a href=\"http://python-markdown.github.io/extensions/fenced_code_blocks/\" title=\"Fenced Code Blocks\">Fenced Code Blocks</a> are provided by the Markdown Extra\nextensions.  This lets you enter language-specific code blocks without the need\nfor indentation. The <a href=\"http://python-markdown.github.io/extensions/code_hilite/\" title=\"CodeHilite\">CodeHilite</a> extension of Python-Markdown enables\nlanguage-specific syntax highlighting via the <a href=\"http://pygments.org\" title=\"Pygments\">Pygments</a> library.</p>\n<h2 id=\"configuration\">Configuration</h2>\n<p>The configuration options in Urubu are kept minimal, in the spirit of \"There\nshould be one obvious way to do it\".  Where used, the configuration format is\nYAML, implemented by the <a href=\"http://pyyaml.org\" title=\"PyYAML\">PyYAML</a> library.</p>\n<p>Configuration is mostly distributed, in the sense that every content file\nshould have a <em>front matter</em>, that specifies the title, layout, date and so on.\nThis idea is found in many tools, but Urubu reuses the technique from <a href=\"http://jekyllrb.com\" title=\"Jekyll\">Jekyll</a>.\nYAML front matter is specified between two sets of triple dashes.</p>\n<p>Urubu extends this configuration technique by treating index files specially.\nEach folder in the site should have an index file (called <code>index.md</code>) that\nspecifies the ordered folder content. This can be done explicitly by listing\nthe files, or implicitly by specifying how the files should be ordered. </p>\n<h2 id=\"templating\">Templating</h2>\n<p>With templates you specify the html layout for a particular type of a page.\nIn a template you can mix plain html with control structures and variable\ninterpolation. The actual html page is generated by evaluating the template\nwith the appropriate evaluation context provided by Urubu.</p>\n<p>Urubu uses the <a href=\"http://jinja.pocoo.org\" title=\"Jinja2\">Jinja2</a> templating language library.</p>\n<h2 id=\"theming\">Theming</h2>\n<p>A theme refers to the general look and feel of a web site. Partially this is\ndefined by the templates as discussed above. The other part is defined in style\nsheets, with a technique known as Cascading Style Sheets (CSS). Basically\nthis is a sophisticated technique to define how the various html elements\nshould be rendered by the web browser.</p>\n<p>With Urubu, you are free to design and use your own style sheets. However, it\nhas been developed with <a href=\"http://getbootstrap.com\" title=\"Bootstrap\">Bootstrap</a> in mind.  Bootstrap is a\nprofessionally-designed framework with lots of useful predefined styles\ncomponents. Urubu generates html that is Bootstrap-friendly, and infers the\nappropriate template variables for certain Bootstrap components. </p>\n<p>A great feature of Bootstrap is that it is \"mobile first\". This means that your\nwebsite will automatically adapt to any platform - smartphone, tablet or\nwidescreen.</p>\n<p>A notable project is <a href=\"http://bootswatch.com\" title=\"Bootswatch\">Bootswatch</a>. This is a set of themes designed as drop-in\nreplacement for the stock bootstrap styles. This gives you an effortless\noption to change the look and feel of your website.</p>\n<h2 id=\"navigation\">Navigation</h2>\n<p>I am a big fan of Steve Krug's book <a href=\"http://www.amazon.com/Dont-Make-Me-Think-Usability/dp/0321344758\">Don't make me think</a>,\nand I feel that the lessons from this book are still often ignored.\nActually, the lack of focus of other tools on these ideas are the\nmain reason why I wrote Urubu.</p>\n<p>A main concept is good navigation. Urubu supports various techniques\nby inferring navigation-oriented variables and making them available to\nthe template engine. Moreover, they work well with some well-defined\nand nicely style <a href=\"http://getbootstrap.com\" title=\"Bootstrap\">Bootstrap</a> navigation components. In this way,\nyou can easily implement the following:</p>\n<ul>\n<li>a navbar for navigation between major sections</li>\n<li>table of contents of a page in a sidebar</li>\n<li>breadcrumbs</li>\n<li>previous and next pager buttons</li>\n<li>active page or section highlighting </li>\n</ul>\n<p>Other techniques, independent from Urubu, can also help. Note for example that\nthe sidebar on this page is \"affixed\": it moves as you scroll through the page,\nbut never leaves the viewport. (Note: this description assumes that the\nviewport is wide enough to accomodate the sidebar.) At any time, the full\nstructure of the page remains visible and available for navigation. This was\nimplemented by borrowing code from the <a href=\"http://getbootstrap.com\" title=\"Bootstrap\">Bootstrap</a> theme.</p>\n<h2 id=\"project-wide-reference-ids\">Project-wide reference ids</h2>\n<p>Markdown defines the concept of a reference link. This is a way to refer to a\npage or an url using a reference id.  The syntax of a reference link is a\nreference id between square brackets, for example <code>[intro]</code>. </p>\n<p>Urubu supports the concept of project-wide reference ids.  First, global\nreference ids can be defined in the site configuration file.  Moreover, all\ncontent pages and folders have a corresponding reference id: their pathname\nwithout extension. In this case, reference links are similar to wiki links, the\ntypical way to link between pages in wiki's.</p>\n<p>Standard Markdown only resolves reference ids that are defined within the file.\nUrubu extends this behavior by resolving them over the project.  This feature\nis implemented as a Markdown extension. Note that it doesn't require new syntax.</p>\n<p>Project-wide reference ids are a unique Urubu feature.</p>\n<p>One of the messages of Steve Krug's book is that the text that you click should\nbe the title of the page where you land. Therefore, when you use reference\nlinks, Urubu will insert the page title in the generated html (unless you\nspecify an alternative text explicitly).</p>\n<h2 id=\"development-and-deployment\">Development and deployment</h2>\n<p>You can develop a Urubu project is like a software project, from a git or\nmercurial repository.  This gives you best-in-class revision control.\nMoreover, all the workflows that these systems provide are available. For\nexample, you can develop your website collaboratively on <a href=\"http://www.github.com\" title=\"GitHub\">GitHub</a> or\n<a href=\"http://www.bitbucket.com\" title=\"Bitbucket\">Bitbucket</a>.  Finally, it is easy to automate deployment, triggered by a push\nof the generated site to an upstream repository. </p>\n    </main>\n    <ul class=\"pager\">\n      <li class=\"next\"><a href=\"/manual/install.html\">Installation &rarr;</a></li>\n    </ul>\n    </div>\n\n    <div class=\"col-md-3\" role=\"complementary\">\n      <nav class=\"hidden-print hidden-xs hidden-sm\">\n        <div class=\"sidebar\" data-spy=\"affix\" data-offset-top=\"80\" data-offset-bottom=\"60\">\n          <div class=\"well\">\n            <a href=\"#\"><strong>Concepts</strong></a>\n            <div class=\"toc\">\n<ul>\n<li><a href=\"#introduction\">Introduction</a></li>\n<li><a href=\"#authoring\">Authoring</a></li>\n<li><a href=\"#configuration\">Configuration</a></li>\n<li><a href=\"#templating\">Templating</a></li>\n<li><a href=\"#theming\">Theming</a></li>\n<li><a href=\"#navigation\">Navigation</a></li>\n<li><a href=\"#project-wide-reference-ids\">Project-wide reference ids</a></li>\n<li><a href=\"#development-and-deployment\">Development and deployment</a></li>\n</ul>\n</div>\n\n          </div>\n        </div>\n      </nav>\n    </div>\n\n  </div>\n\n    <div class=\"footer\">\n        <div style=\"margin: 5px\">\n<a href=\"https://twitter.com/share\" class=\"twitter-share-button\">Tweet</a>\n<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>\n\n<!-- Place this tag where you want the +1 button to render. -->\n<div class=\"g-plusone\" data-size=\"medium\"></div>\n\n<!-- Place this tag after the last +1 button tag. -->\n<script type=\"text/javascript\">\nwindow.__gcfg = {\n    lang: 'en-US'\n};\n  (function() {\n    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;\n    po.src = 'https://apis.google.com/js/plusone.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);\n  })();\n</script>\n\n<script type=\"text/javascript\" src=\"http://www.reddit.com/static/button/button1.js\"></script>        </div>\n        <p> Content licensed under the\n           <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\">CC-BY-SA License</a>.\n        </p> \n        <p>Website powered by <a href=\"http://urubu.jandecaluwe.com\">Urubu</a>.</p>\n    </div>\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <!-- <script src=\"https://code.jquery.com/jquery.js\"></script> -->\n    <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n \n\n  </body>\n</html>\n"
  },
  {
    "path": "doc/_build/manual/pagination.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>Pagination</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- customizations -->\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- pygments -->\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- icons -->\n    <link href=\"//netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.css\" rel=\"stylesheet\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n<script>\n  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\n  ga('create', 'UA-48968311-3', 'jandecaluwe.com');\n  ga('send', 'pageview');\n\n</script>\n \n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            <li><a href=\"/start.html\">Overview</a></li>\n            <li class=\"active\"><a href=\"/manual/\">Manual</a></li>\n            <li><a href=\"http://urubu-quickstart.jandecaluwe.com\">Quickstart</a></li>\n            <li><a href=\"/faq/\">FAQ</a></li>\n          </ul>\n          <form class=\"navbar-form navbar-left\" action=\"/search.html\" role=\"search\">\n            <div class=\"form-group\">\n                <input type=\"text\" required name=\"q\" id=\"tipue_search_input\" class=\"form-control\" placeholder=\"Search\"> \n            </div>\n          </form>\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li class=\"dropdown\">\n              <a href=\"/more/\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">More <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                <li><a href=\"https://github.com/jandecaluwe/urubu\">GitHub repository</a></li>\n                <li><a href=\"/more/sites.html\">Websites powered by Urubu</a></li>\n                <li><a href=\"/more/about.html\">About this site</a></li>\n              </ul>\n            </li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <ol class=\"breadcrumb\">\n    <li><a href=\"/\">Home</a></li>\n      <li><a href=\"/manual/\">Manual</a></li>\n      <li class=\"active\">Pagination</li>\n  </ol>\n\n  <div class=\"page-header\">\n    <h1>Pagination</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"col-md-6 content\" role=\"main\">\n    <main>\n      <p>There are times when an index file will contain more entries than you want to include in a single page.  Pagination allows Urubu to automatically split that page into separate pages in your site.</p>\n<h2 id=\"usage\">Usage</h2>\n<p>To enable pagination, add an <code>items_per_page</code> attribute to the front matter of an index page.  Also add either <code>items_index</code> or <code>items_filter</code> to say where the list of items should pull from.  </p>\n<p>To pull from files in the current directory, with 5 items per page:</p>\n<div class=\"codehilite\"><pre><span></span><code>items_per_page: 5\nitems_index: this\n</code></pre></div>\n\n<p>To pull from a different index contents:</p>\n<div class=\"codehilite\"><pre><span></span><code>items_per_page: 5\nitems_index: news\\index.md\n</code></pre></div>\n\n<p>To filter the contents:</p>\n<div class=\"codehilite\"><pre><span></span><code>items_per_page: 5\nitems_filter: mysteries time-loop\n</code></pre></div>\n\n<h2 id=\"new-page-variables\">New Page Variables</h2>\n<p>Each of the pages generated by pagination will have three new variables available to layouts.</p>\n<p><code>numpages</code> - the number of total pages generated<br />\n<code>prevpage</code> - the previous page in the chain<br />\n<code>nextpage</code> - the next page in the chain  </p>\n<h3 id=\"example-pagination-controls\">Example pagination controls</h3>\n<p>The following is a sample of generating pagination controls in a layout:</p>\n<div class=\"codehilite\"><pre><span></span><code>\n</code></pre></div>\n    </main>\n    </div>\n\n    <div class=\"col-md-3\" role=\"complementary\">\n      <nav class=\"hidden-print hidden-xs hidden-sm\">\n        <div class=\"sidebar\" data-spy=\"affix\" data-offset-top=\"80\" data-offset-bottom=\"60\">\n          <div class=\"well\">\n            <a href=\"#\"><strong>Pagination</strong></a>\n            <div class=\"toc\">\n<ul>\n<li><a href=\"#usage\">Usage</a></li>\n<li><a href=\"#new-page-variables\">New Page Variables</a><ul>\n<li><a href=\"#example-pagination-controls\">Example pagination controls</a></li>\n</ul>\n</li>\n</ul>\n</div>\n\n          </div>\n        </div>\n      </nav>\n    </div>\n\n  </div>\n\n    <div class=\"footer\">\n        <div style=\"margin: 5px\">\n<a href=\"https://twitter.com/share\" class=\"twitter-share-button\">Tweet</a>\n<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>\n\n<!-- Place this tag where you want the +1 button to render. -->\n<div class=\"g-plusone\" data-size=\"medium\"></div>\n\n<!-- Place this tag after the last +1 button tag. -->\n<script type=\"text/javascript\">\nwindow.__gcfg = {\n    lang: 'en-US'\n};\n  (function() {\n    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;\n    po.src = 'https://apis.google.com/js/plusone.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);\n  })();\n</script>\n\n<script type=\"text/javascript\" src=\"http://www.reddit.com/static/button/button1.js\"></script>        </div>\n        <p> Content licensed under the\n           <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\">CC-BY-SA License</a>.\n        </p> \n        <p>Website powered by <a href=\"http://urubu.jandecaluwe.com\">Urubu</a>.</p>\n    </div>\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <!-- <script src=\"https://code.jquery.com/jquery.js\"></script> -->\n    <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n \n\n  </body>\n</html>\n"
  },
  {
    "path": "doc/_build/manual/search.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>Adding Search</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- customizations -->\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- pygments -->\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- icons -->\n    <link href=\"//netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.css\" rel=\"stylesheet\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n<script>\n  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\n  ga('create', 'UA-48968311-3', 'jandecaluwe.com');\n  ga('send', 'pageview');\n\n</script>\n \n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            <li><a href=\"/start.html\">Overview</a></li>\n            <li class=\"active\"><a href=\"/manual/\">Manual</a></li>\n            <li><a href=\"http://urubu-quickstart.jandecaluwe.com\">Quickstart</a></li>\n            <li><a href=\"/faq/\">FAQ</a></li>\n          </ul>\n          <form class=\"navbar-form navbar-left\" action=\"/search.html\" role=\"search\">\n            <div class=\"form-group\">\n                <input type=\"text\" required name=\"q\" id=\"tipue_search_input\" class=\"form-control\" placeholder=\"Search\"> \n            </div>\n          </form>\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li class=\"dropdown\">\n              <a href=\"/more/\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">More <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                <li><a href=\"https://github.com/jandecaluwe/urubu\">GitHub repository</a></li>\n                <li><a href=\"/more/sites.html\">Websites powered by Urubu</a></li>\n                <li><a href=\"/more/about.html\">About this site</a></li>\n              </ul>\n            </li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <ol class=\"breadcrumb\">\n    <li><a href=\"/\">Home</a></li>\n      <li><a href=\"/manual/\">Manual</a></li>\n      <li class=\"active\">Adding Search</li>\n  </ol>\n\n  <div class=\"page-header\">\n    <h1>Adding Search</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"col-md-6 content\" role=\"main\">\n    <main>\n      <h2 id=\"introduction\">Introduction</h2>\n<p>A static site cannot natively support dynamic services. Fortunately, it is\noften an elegant solution to integrate third party solutions within a\nstatic site.</p>\n<p>One of the most prominent examples is Search. One possibility is integrating an\nexternal service such as Google Custom Search. The disadvantage is that one has\neither to pay for it or accept the branding.  </p>\n<p>As an alternative, Urubu supports Tipue Search, an open source solution based\non javascript executed in the browser. As part of the site building, Urubu\ngenerates a view on the searchable content.  In this chapter, we describe how\nthe integration is accomplished.  </p>\n<h2 id=\"installing-tipue-search\">Installing Tipue Search</h2>\n<p>The first step is to <a href=\"https://github.com/calfzhou/Tipue-Search\">download</a> the Tipue Search distribution. It contains a\n<code>tipuesearch</code> directory. Copy that directory to the top level of your project.\nAs usual, Urubu copies it to the built website, so that the required\nstylesheets and javascript files are available in the expected location.</p>\n<p>Do not rename the <code>tipuesearch</code> directory. The existence of that\ndirectory triggers Urubu's support. </p>\n<h2 id=\"the-search-box\">The search box</h2>\n<p>The next step is to create a search box. Suppose you want to make it part of\nthe navbar, as in the present site. This is achieved with the following html\ncode: </p>\n<div class=\"codehilite\"><pre><span></span><code>&lt;form class=&quot;navbar-form navbar-left&quot; action=&quot;/search.html&quot; role=&quot;search&quot;&gt;\n  &lt;div class=&quot;form-group&quot;&gt;\n    &lt;input type=&quot;text&quot; required name=&quot;q&quot; id=&quot;tipue_search_input&quot; class=&quot;form-control&quot; placeholder=&quot;Search&quot;&gt; \n   &lt;/div&gt;\n&lt;/form&gt;\n</code></pre></div>\n\n<p>The <code>name</code> and the <code>id</code> values in the <code>&lt;input&gt;</code> tag of the search box are\nmandatory for Tipue Search. The typical place for this code would be in the\nnavbar code in a basic layout for the site.</p>\n<h2 id=\"the-search-results-page\">The search results page</h2>\n<p>The next step is to create a search result page. To integrate it we first\ncreate a dedicated layout using template inheritance.  Let us assume that is\nthere is  a <code>head_addon</code> and a <code>body_addon</code> block to add links and scripts to\nthe <code>&lt;head</code> and the <code>&lt;body&gt;</code> section respectively. The <code>search.html</code> layout is\nthen as follows:  </p>\n<div class=\"codehilite\"><pre><span></span><code>{% extends &quot;page.html&quot; %}\n\n{% block head_addon %}\n&lt;link href=&quot;tipuesearch/tipuesearch.css&quot; rel=&quot;stylesheet&quot;&gt;\n{% endblock %}\n\n{% block body_addon %}\n&lt;script src=&quot;tipuesearch/tipuesearch_content.js&quot;&gt;&lt;/script&gt;\n&lt;script src=&quot;tipuesearch/tipuesearch_set.js&quot;&gt;&lt;/script&gt;\n&lt;script src=&quot;tipuesearch/tipuesearch.min.js&quot;&gt;&lt;/script&gt;\n&lt;script&gt;\n$(document).ready(function() {\n     $(&#39;#tipue_search_input&#39;).tipuesearch({\n          &#39;mode&#39;: &#39;json&#39;,\n          &#39;contentLocation&#39;: &#39;tipuesearch/tipuesearch_content.json&#39; \n     });\n});\n&lt;/script&gt;\n{% endblock %}\n</code></pre></div>\n\n<p>We inherit from a <code>page.html</code> layout. In the <code>head_addon</code> block, we add\nthe Tipue Search style sheet for the result page. In the <code>body_addon</code> page we\nadd the Tipue Search java script modules, and the inline script that generates\nthe results. </p>\n<p>This setup assumes that the jQuery javascript library itself is already loaded\nin the body of the parent layout, with a line like the following: </p>\n<div class=\"codehilite\"><pre><span></span><code>&lt;script src=&quot;https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js&quot;&gt;&lt;/script&gt;\n</code></pre></div>\n\n<p>If you use the Bootstrap javascript modules, that will be the case.</p>\n<p>In the top level project directory, we can then create a <code>search.md</code> files that\nuses the <code>search.html</code> layout and has the generated search results as its\ncontent:</p>\n<div class=\"codehilite\"><pre><span></span><code>---\ntitle: Search results\nlayout: search\n---\n\n&lt;div id=&quot;tipue_search_content&quot;&gt;&lt;/div&gt;\n</code></pre></div>\n\n<p>After building the site, there will be a functional <code>search.html</code> file in the\ntop-level directory.</p>\n<p class=\"text-info\"><strong>Note</strong> The <code>tipuesearch.css</code> stylesheet also contains styling for the search\nbox. The result may be undesirable if you use your own styling, like in the\npresent website. The workaround is to comment the search box styling out. </p>\n<h2 id=\"the-search-content\">The search content</h2>\n<p>The searchable content itself is a JSON object defined in the file\n<code>tipuesearch/tipuesearch_content.json</code>.  This is where Urubu kicks in: this\nfile is generated automatically. </p>\n<p>Extracting meaningful searchable content from a web site is not trivial. A\ndesign decision for Urubu was to use modern techniques to help with this. In\nparticular, Urubu will only consider content that is wrapped with the <code>&lt;main&gt;</code>\ntag. This is a relatively new html5 tag with exactly the purpose to indicate\nthe page content explicitly.</p>\n<p>The site designer should therefore review the site layouts and wrap all\nsearchable content with the <code>&lt;main&gt;</code> tag. Typically, this is the region were\nthe <code>this.body</code> variable is called in a template.</p>\n<p class=\"text-info\"><strong>Note</strong> The <code>&lt;main&gt;</code> tag is not supported in IE11. A popular workaround is to\nuse the <code>html5shiv.js</code> Javascript module. Layouts based on Bootstrap do\nthis already.</p>\n    </main>\n    <ul class=\"pager\">\n      <li class=\"previous\"><a href=\"/manual/extensions.html\">&larr; Markdown extensions</a></li>\n      <li class=\"next\"><a href=\"/manual/pagination.html\">Pagination &rarr;</a></li>\n    </ul>\n    </div>\n\n    <div class=\"col-md-3\" role=\"complementary\">\n      <nav class=\"hidden-print hidden-xs hidden-sm\">\n        <div class=\"sidebar\" data-spy=\"affix\" data-offset-top=\"80\" data-offset-bottom=\"60\">\n          <div class=\"well\">\n            <a href=\"#\"><strong>Adding Search</strong></a>\n            <div class=\"toc\">\n<ul>\n<li><a href=\"#introduction\">Introduction</a></li>\n<li><a href=\"#installing-tipue-search\">Installing Tipue Search</a></li>\n<li><a href=\"#the-search-box\">The search box</a></li>\n<li><a href=\"#the-search-results-page\">The search results page</a></li>\n<li><a href=\"#the-search-content\">The search content</a></li>\n</ul>\n</div>\n\n          </div>\n        </div>\n      </nav>\n    </div>\n\n  </div>\n\n    <div class=\"footer\">\n        <div style=\"margin: 5px\">\n<a href=\"https://twitter.com/share\" class=\"twitter-share-button\">Tweet</a>\n<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>\n\n<!-- Place this tag where you want the +1 button to render. -->\n<div class=\"g-plusone\" data-size=\"medium\"></div>\n\n<!-- Place this tag after the last +1 button tag. -->\n<script type=\"text/javascript\">\nwindow.__gcfg = {\n    lang: 'en-US'\n};\n  (function() {\n    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;\n    po.src = 'https://apis.google.com/js/plusone.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);\n  })();\n</script>\n\n<script type=\"text/javascript\" src=\"http://www.reddit.com/static/button/button1.js\"></script>        </div>\n        <p> Content licensed under the\n           <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\">CC-BY-SA License</a>.\n        </p> \n        <p>Website powered by <a href=\"http://urubu.jandecaluwe.com\">Urubu</a>.</p>\n    </div>\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <!-- <script src=\"https://code.jquery.com/jquery.js\"></script> -->\n    <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n \n\n  </body>\n</html>\n"
  },
  {
    "path": "doc/_build/manual/structure.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>Project structure</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- customizations -->\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- pygments -->\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- icons -->\n    <link href=\"//netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.css\" rel=\"stylesheet\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n<script>\n  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\n  ga('create', 'UA-48968311-3', 'jandecaluwe.com');\n  ga('send', 'pageview');\n\n</script>\n \n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            <li><a href=\"/start.html\">Overview</a></li>\n            <li class=\"active\"><a href=\"/manual/\">Manual</a></li>\n            <li><a href=\"http://urubu-quickstart.jandecaluwe.com\">Quickstart</a></li>\n            <li><a href=\"/faq/\">FAQ</a></li>\n          </ul>\n          <form class=\"navbar-form navbar-left\" action=\"/search.html\" role=\"search\">\n            <div class=\"form-group\">\n                <input type=\"text\" required name=\"q\" id=\"tipue_search_input\" class=\"form-control\" placeholder=\"Search\"> \n            </div>\n          </form>\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li class=\"dropdown\">\n              <a href=\"/more/\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">More <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                <li><a href=\"https://github.com/jandecaluwe/urubu\">GitHub repository</a></li>\n                <li><a href=\"/more/sites.html\">Websites powered by Urubu</a></li>\n                <li><a href=\"/more/about.html\">About this site</a></li>\n              </ul>\n            </li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <ol class=\"breadcrumb\">\n    <li><a href=\"/\">Home</a></li>\n      <li><a href=\"/manual/\">Manual</a></li>\n      <li class=\"active\">Project structure</li>\n  </ol>\n\n  <div class=\"page-header\">\n    <h1>Project structure</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"col-md-6 content\" role=\"main\">\n    <main>\n      <h2 id=\"the-project-directory\">The project directory</h2>\n<p>A typical Urubu project directory looks as follows:</p>\n<div class=\"codehilite\"><pre><span></span><code>Makefile\n_site.yml\n_layouts/_base.html\n         page.html\n         ...\n_python/__init__.py\n        validators.py\n        filters.py\ncss/...\njs/...\nindex.md\nfolder1/index.md\n        file1.md\n        pic1.png\n        ...\nfolder2/index.md\n        file2.md\n        file3.md\n        ...\n</code></pre></div>\n\n<p>Files and directories with pathnames starting with an underscore <code>_</code> are\nspecial. They are used during processing, but excluded from the built website.\nTheir function will be discussed below.</p>\n<p>The <code>css</code> and <code>js</code> directories are just an example of how CSS style sheets and\njavascript files could be organized. You can use any organization that you\nprefer.</p>\n<p>Content files are in Markdown format and should have the <code>.md</code> extension. You\nhave complete freedom in organizing them in directories. However, every\ndirectory should have an <code>index.md</code> file, including the top-level directory.</p>\n<h2 id=\"processing-rules\">Processing rules</h2>\n<p>Urubu generates a website by processing the files and directory in the project\ndirectory, and putting the result in a <code>_build</code> subdirectory. The processing\ndepends on the pathname as follows:</p>\n<ul>\n<li>\n<p>a <code>Makefile</code> is ignored and not copied to the build.</p>\n</li>\n<li>\n<p>files and directories starting with a dot <code>.</code> or\nunderscore <code>_</code> are ignored and not copied to the build.</p>\n</li>\n<li>\n<p>Markdown files with extension <code>.md</code> are converted to a\nhtml file that is put into the build in the same relative location.</p>\n</li>\n<li>\n<p>all other files and directories are copied unmodified to the build in the\nsame relative location.</p>\n</li>\n</ul>\n<p>As a result of the project organization and the build process, the structure of\nthe build matches the structure of the project directory.  The relative\nlocation of all files is thus preserved.</p>\n<h2 id=\"special-files-and-directories\">Special files and directories</h2>\n<h3 id=\"_siteyml\"><code>_site.yml</code></h3>\n<p>This file contains site configuration info in YAML format.\nCurrently, these are the predefined attributes:</p>\n<table class=\"table\">\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>reflinks</code></td>\n<td>Holds a mapping from reference ids to link objects.</td>\n</tr>\n<tr>\n<td><code>baseurl</code></td>\n<td>Prefix for generated local URLs</td>\n</tr>\n<tr>\n<td><code>file_ext</code></td>\n<td>Change default file extension (<code>'.html'</code>) for processed <code>.md</code> files</td>\n</tr>\n<tr>\n<td><code>link_ext</code></td>\n<td>Change default file extension (<code>'.html'</code>) for links to site's pages</td>\n</tr>\n<tr>\n<td><code>ignore_patterns</code></td>\n<td>List of additional file names or globs to be ignored during processing</td>\n</tr>\n<tr>\n<td><code>keep_files</code></td>\n<td>List of explicit file names be kept, overriding any ignores</td>\n</tr>\n<tr>\n<td><code>strict_undefined</code></td>\n<td>Set the default behavior regarding undefined template variables</td>\n</tr>\n</tbody>\n</table>\n<p>Link objects, for the <code>reflinks</code> attribute, are a mapping with an <code>url</code> key that maps\nto the link URL and a <code>title</code> key that maps to the link title.</p>\n<p>The <code>baseurl</code> option mirrors the same feature in <a href=\"http://jekyllrb.com/docs/configuration/#serve-command-options\">Jekyll</a>.  It\nallows you to specify a prefix for all local URLs generated within your site.\nThis is necessary when your site will be served from a URL that has more than\njust the hostname. For example, on GitHub Pages sites are served from\nhttp://username.github.io/project_name/, so Urubu needs to include that\n<code>/project_name/</code> in generated URLs pointing to local content.</p>\n<p><code>baseurl</code> should be specified with no beginning or trailing slashes, e.g.:</p>\n<div class=\"codehilite\"><pre><span></span><code><span class=\"nt\">baseurl</span><span class=\"p\">:</span><span class=\"w\"> </span><span class=\"l l-Scalar l-Scalar-Plain\">prefix</span>\n</code></pre></div>\n\n<p>The file extension attributes, <code>file_ext</code> and <code>link_ext</code>, are both usually set to the\nsame value (i.e. <code>'.php'</code>), unless the target site has .htaccess rewrite rules that\naffect the file extensions.</p>\n<p>Examples of this are sites that internally redirect pages like <code>www.test.com/account</code>\nto <code>www.test.com/account.htm</code>. For this case, one would need to set <code>file_ext</code> to\n<code>'.htm'</code>, so Urubu generated files have the <code>.htm</code> extension, whereas <code>link_ext</code> would\nbe set to <code>''</code>, so that the <code>a href</code> links are directed to the files without extension.</p>\n<p>Otherwise, <code>file_ext</code> and <code>link_ext</code> should be set to the same extension, specially\nduring testing, so that the simple web server invoked by <code>urubu serve</code> works fine,\nas well as any web server that does not rewrite the file extensions of the requests.</p>\n<p>The <code>ignore_patterns</code> attribute specifies glob-style patterns to be ignored\nduring processing, in addition to the default ones according to the\n<a href=\"/manual/structure.html#processing-rules\" title=\"Project structure\">Processing Rules</a>.</p>\n<p>In some cases you may explicitly want to keep certain files that would normally\nbe ignored. For example, you may have hidden files like <code>.nojekyll</code> to prevent\nJekyll processing, or <code>.htaccess</code> and <code>.htpasswd</code> for access control.  You can\nkeep such files in the build using the <code>keep_files</code> attribute.</p>\n<p>The <code>strict_undefined</code> attribute controls whether the build should\nsilently ignore undefined template variables or raise an error when they are\nencountered. If <code>false</code> or undefined, undefined template variables are treated\nas empty strings (<code>''</code>). If <code>true</code>, the build will stop and raise an error.</p>\n<p>You can define additional attributes that will be made available as\nsite variables to the template engine. The following is an example of a\n<code>_site.yml</code> file:</p>\n<div class=\"codehilite\"><pre><span></span><code>brand: Urubu\n\nreflinks:\n    content_license:\n        url: http://creativecommons.org/licenses/by-sa/3.0/\n        title: CC-BY-SA License\n    software_license:\n        url: http://www.gnu.org/licenses/agpl-3.0.txt\n        title: GNU Affero General Public License\n    markdown:\n        url: http://daringfireball.net/projects/markdown/\n        title: Markdown\n\nfile_ext: &#39;.htm&#39;  # Change default file extension (&#39;.html&#39;)\nlink_ext: &#39;.htm&#39;  # Change default link extension (&#39;.html&#39;)\n</code></pre></div>\n\n<h3 id=\"_layouts\"><code>_layouts</code></h3>\n<p>This directory contains the available layouts.\nThey are used by the Jinja2 template engine to render html pages.\nThe layout files should have the <code>.html</code> extension.</p>\n<h3 id=\"_python\"><code>_python</code></h3>\n<p>This directory contains Python hooks for the template engine.</p>\n<h2 id=\"project-wide-reference-ids\">Project-wide reference ids</h2>\n<p>Urubu has the concept of project-wide reference ids.  You can use them to refer\nto link objects in your content and configuration.  Their definition comes\nfrom two sources:</p>\n<ul>\n<li>global reference ids are mapped to link objects in the <code>_site.yml</code>\nconfiguration file, as discussed earlier.</li>\n<li>all content pages and folders objects have reference ids.</li>\n</ul>\n<p>Project-wide references ids live in a single namespace. For pages and folders,\nthe id is a root-relative pathname starting with a slash <code>/</code> and without file\nextension. By convention, global reference ids should not start with a <code>/</code>.</p>\n<p>In your content and configuration info, you can also use relative reference\nids. Urubu will resolve them depending on the file location in the project. In\ncase of a name clash with a global reference id, you will have to disambiguate\nby adding pathname components.</p>\n<p>In accordance with Markdown conventions, reference ids are case-insensitive.</p>\n<h2 id=\"content-files\">Content files</h2>\n<p>Content files are Markdown files with extension <code>.md</code>. They should start with\nYAML front matter that defines a number of attributes, as in the following example:</p>\n<div class=\"codehilite\"><pre><span></span><code>---\ntitle: Read me first\nlayout: page\ndate: 2014-01-15\n---\n&lt;Markdown content&gt;\n</code></pre></div>\n\n<p>The following attributes are predefined:</p>\n<table class=\"table\">\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>title</code></td>\n<td>Specifies the page title. Mandatory.</td>\n</tr>\n<tr>\n<td><code>layout</code></td>\n<td>Specifies the layout, without the <code>.html</code> extension, or <code>null</code>. Mandatory.</td>\n</tr>\n<tr>\n<td><code>date</code></td>\n<td>Specifies the date in YYYY-MM-DD format. Optional.</td>\n</tr>\n<tr>\n<td><code>tags</code></td>\n<td>A tag or list of tags for the content.</td>\n</tr>\n<tr>\n<td><code>saveas</code></td>\n<td>Allows overriding of the output filename.</td>\n</tr>\n</tbody>\n</table>\n<p>The <code>layout</code> attribute is mandatory, but can be given a <code>null</code> value.\nThis is useful when the page content is used by other pages, but\nno html output is required for the page itself.</p>\n<p>In addition, you can add arbitrary user-defined attributes. All attributes\nare made available as page object attributes to the template engine.</p>\n<h2 id=\"markdown-in-attributes\">Markdown in attributes</h2>\n<p>Optionally, you can use markdown format in front matter attributes.  Markdown\nprocessing is enabled by adding a <code>.md</code> suffix to the attribute. The resulting\nhtml code will be stored in a synthesized attribute without the <code>.md</code> suffix.</p>\n<p>For example:</p>\n<div class=\"codehilite\"><pre><span></span><code>---\ntitle:\nlayout: page\nsummary.md: |\n    A summary of the page items as a list:\n\n    * item 1\n    * item 2\n    * item 3\n---\n</code></pre></div>\n\n<p>After processing, the page object will have a <code>summary</code> attribute with the html\ncode.</p>\n<h2 id=\"index-files\">Index files</h2>\n<p>Index files with basename <code>index.md</code> are a special kind of content files.  They\nare used to specify the attributes and the content of a directory. There are\ntwo options to specify the content, explicitly with the <code>content</code> attribute or\nimplicitly using the <code>order</code> attribute.</p>\n<table class=\"table\">\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>content</code></td>\n<td>Defines the content explicitly as a list of reference ids or local link objects.</td>\n</tr>\n<tr>\n<td><code>order</code></td>\n<td>Defines the attribute by which the content in the directory should be ordered.</td>\n</tr>\n<tr>\n<td><code>reverse</code></td>\n<td>Optional boolean attribute defines reverse order or not. Default is <code>false</code>.</td>\n</tr>\n</tbody>\n</table>\n<p><code>content</code> and <code>order</code> are mutually exclusive; you should use one of the two options.</p>\n<p>A local link object is a mapping with either a <code>url</code> key to an url, or a <code>ref</code>\nkey to a reference id as mandatory items. In addtion, you can specify a title\nwith a <code>title</code> key.</p>\n<p>The ordering attribute can be predefined or user-defined, but it should be\nspecified in each content file in the directory.  As an example, you can\nspecify that the content of a directory should be ordered as blog by the\nfollowing front matter in the index file:</p>\n<div class=\"codehilite\"><pre><span></span><code>---\ntitle: Blog\nlayout: blog_index\norder: date\nreverse: true\n---\n</code></pre></div>\n\n<h2 id=\"tag-directory\">Tag directory</h2>\n<p>The optional top-level directory called <code>tag</code> has a predefined meaning.  Urubu\nuses the corresponding folder in the build to hold the tag-related content view\nthat it generates automatically. You can use the index file to set attributes\nsuch as the <code>layout</code>. However, the content will be generated by Urubu\nautomatically and needs not be set.</p>\n    </main>\n    <ul class=\"pager\">\n      <li class=\"previous\"><a href=\"/manual/install.html\">&larr; Installation</a></li>\n      <li class=\"next\"><a href=\"/manual/authoring.html\">Authoring &rarr;</a></li>\n    </ul>\n    </div>\n\n    <div class=\"col-md-3\" role=\"complementary\">\n      <nav class=\"hidden-print hidden-xs hidden-sm\">\n        <div class=\"sidebar\" data-spy=\"affix\" data-offset-top=\"80\" data-offset-bottom=\"60\">\n          <div class=\"well\">\n            <a href=\"#\"><strong>Project structure</strong></a>\n            <div class=\"toc\">\n<ul>\n<li><a href=\"#the-project-directory\">The project directory</a></li>\n<li><a href=\"#processing-rules\">Processing rules</a></li>\n<li><a href=\"#special-files-and-directories\">Special files and directories</a><ul>\n<li><a href=\"#_siteyml\">_site.yml</a></li>\n<li><a href=\"#_layouts\">_layouts</a></li>\n<li><a href=\"#_python\">_python</a></li>\n</ul>\n</li>\n<li><a href=\"#project-wide-reference-ids\">Project-wide reference ids</a></li>\n<li><a href=\"#content-files\">Content files</a></li>\n<li><a href=\"#markdown-in-attributes\">Markdown in attributes</a></li>\n<li><a href=\"#index-files\">Index files</a></li>\n<li><a href=\"#tag-directory\">Tag directory</a></li>\n</ul>\n</div>\n\n          </div>\n        </div>\n      </nav>\n    </div>\n\n  </div>\n\n    <div class=\"footer\">\n        <div style=\"margin: 5px\">\n<a href=\"https://twitter.com/share\" class=\"twitter-share-button\">Tweet</a>\n<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>\n\n<!-- Place this tag where you want the +1 button to render. -->\n<div class=\"g-plusone\" data-size=\"medium\"></div>\n\n<!-- Place this tag after the last +1 button tag. -->\n<script type=\"text/javascript\">\nwindow.__gcfg = {\n    lang: 'en-US'\n};\n  (function() {\n    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;\n    po.src = 'https://apis.google.com/js/plusone.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);\n  })();\n</script>\n\n<script type=\"text/javascript\" src=\"http://www.reddit.com/static/button/button1.js\"></script>        </div>\n        <p> Content licensed under the\n           <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\">CC-BY-SA License</a>.\n        </p> \n        <p>Website powered by <a href=\"http://urubu.jandecaluwe.com\">Urubu</a>.</p>\n    </div>\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <!-- <script src=\"https://code.jquery.com/jquery.js\"></script> -->\n    <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n \n\n  </body>\n</html>\n"
  },
  {
    "path": "doc/_build/manual/templates.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>Templates</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- customizations -->\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- pygments -->\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- icons -->\n    <link href=\"//netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.css\" rel=\"stylesheet\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n<script>\n  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\n  ga('create', 'UA-48968311-3', 'jandecaluwe.com');\n  ga('send', 'pageview');\n\n</script>\n \n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            <li><a href=\"/start.html\">Overview</a></li>\n            <li class=\"active\"><a href=\"/manual/\">Manual</a></li>\n            <li><a href=\"http://urubu-quickstart.jandecaluwe.com\">Quickstart</a></li>\n            <li><a href=\"/faq/\">FAQ</a></li>\n          </ul>\n          <form class=\"navbar-form navbar-left\" action=\"/search.html\" role=\"search\">\n            <div class=\"form-group\">\n                <input type=\"text\" required name=\"q\" id=\"tipue_search_input\" class=\"form-control\" placeholder=\"Search\"> \n            </div>\n          </form>\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li class=\"dropdown\">\n              <a href=\"/more/\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">More <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                <li><a href=\"https://github.com/jandecaluwe/urubu\">GitHub repository</a></li>\n                <li><a href=\"/more/sites.html\">Websites powered by Urubu</a></li>\n                <li><a href=\"/more/about.html\">About this site</a></li>\n              </ul>\n            </li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <ol class=\"breadcrumb\">\n    <li><a href=\"/\">Home</a></li>\n      <li><a href=\"/manual/\">Manual</a></li>\n      <li class=\"active\">Templates</li>\n  </ol>\n\n  <div class=\"page-header\">\n    <h1>Templates</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"col-md-6 content\" role=\"main\">\n    <main>\n      <h2 id=\"overview\">Overview</h2>\n<p>Templates define the html layout for a particular page type.  In a template you\ncan mix plain html with control structures and variable interpolation. The html\npage is generated by evaluating the template with the appropriate evaluation\ncontext, provided by Urubu.</p>\n<p>Templates are part of the website project setup. If you are a content\ncontributor, you may not have to worry about them.  All you have to do is\nspecify the appropriate layout name in the YAML front matter of your content\nfiles.</p>\n<p>In general, it is better to do programming in Python code.  However, for the\npurpose of generation of pages in a format such as html, this is not very\npractical.  Therefore, a template contains both html and programming\nconstructs. Template programming is good for common tasks like the following:</p>\n<ul>\n<li>iteration over a list of items</li>\n<li>testing whether an item is defined</li>\n<li>filtering items, possibly with user-defined filters </li>\n<li>comparing the loop item object with the current object, to check whether it is active</li>\n</ul>\n<p>Urubu interacts with templates by providing an evaluation context with the\nappropriate objects.  The goal is to make the job of the templates as easy as\npossible with ready-to-use object attributes. </p>\n<h2 id=\"the-template-library\">The template library</h2>\n<p>Urubu uses the <a href=\"http://jinja.pocoo.org\" title=\"Jinja2\">Jinja2</a> templating language library.</p>\n<p>Jinja2 has great <a href=\"http://jinja2.pocoo.org/docs\">documentation</a> and you should\ncheck it out when using templates in Urubu.</p>\n<p>A great feature of Jinja2 is template inheritance. With this technique,\nyou can easily generate small variations of a parent template.</p>\n<h2 id=\"link-objects\">Link objects</h2>\n<h3 id=\"description\">Description</h3>\n<p>Link objects are the primary objects that you use in templates. \nThey come in a number of flavours: </p>\n<table class=\"table\">\n<thead>\n<tr>\n<th>Link object</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>global link object</td>\n<td>Defined in the <code>_site.yml</code> file.</td>\n</tr>\n<tr>\n<td>local link object</td>\n<td>Defined locally in the <code>content</code> attribute of an index file.</td>\n</tr>\n<tr>\n<td>folder object</td>\n<td>Corresponds to a project subdirectory.</td>\n</tr>\n<tr>\n<td>page object</td>\n<td>Corresponds to a Markdown content file.</td>\n</tr>\n<tr>\n<td>tag folder object</td>\n<td>Dedicated folder for content ordered by tag.</td>\n</tr>\n<tr>\n<td>tag object</td>\n<td>Represents content corresponding to a specific tag.</td>\n</tr>\n</tbody>\n</table>\n<h3 id=\"attributes\">Attributes</h3>\n<p>Link objects have attributes. The defined attributes depend on the type of the\nlink object. </p>\n<p>The following attributes are common to <strong>all link objects</strong>:</p>\n<table class=\"table\">\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>url</code></td>\n<td>The url of the object.</td>\n</tr>\n<tr>\n<td><code>title</code></td>\n<td>The title of the object.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>All link objects except local link objects</strong> also\nhave an <code>id</code> attribute:</p>\n<table class=\"table\">\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>The unique id by which the object is known in the project.</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Folder and page objects</strong> have the following attributes: </p>\n<table class=\"table\">\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>fn</code></td>\n<td>The pathname of the file or directory corresponding the object.</td>\n</tr>\n<tr>\n<td><code>components</code></td>\n<td>The components of the object's pathname, without file extension, as a list.</td>\n</tr>\n<tr>\n<td><code>mdate</code></td>\n<td>Modification date</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Folder objects</strong> also have a <code>content</code> attribute: </p>\n<table class=\"table\">\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>content</code></td>\n<td>The content of the folder as a list of page &amp; folder objects.</td>\n</tr>\n</tbody>\n</table>\n<p>In addition, all attributes specified in the YAML front matter\nof the corresponding index file will be available as attributes of\nthe folder object.</p>\n<p><strong>Page objects</strong> have the following additional attributes:</p>\n<table class=\"table\">\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>layout</code></td>\n<td>The template to render the object as a html file.</td>\n</tr>\n<tr>\n<td><code>body</code></td>\n<td>The page content in html.</td>\n</tr>\n<tr>\n<td><code>toc</code></td>\n<td>The table of contents of the page as an unordered html list.</td>\n</tr>\n<tr>\n<td><code>breadcrumbs</code></td>\n<td>Breadcrumbs as a list. The current page object is at position 0, the containing folder objects are at the higher positions.</td>\n</tr>\n<tr>\n<td><code>prev</code></td>\n<td>The previous page object in the content, or <code>None</code> if there is none</td>\n</tr>\n<tr>\n<td><code>next</code></td>\n<td>The next page object in the content, or <code>None</code> if there is none</td>\n</tr>\n</tbody>\n</table>\n<p>In addition, all attributes specified in the YAML front matter of the\ncorresponding content file are available as attributes of the page object.</p>\n<h3 id=\"index-pages\">Index pages</h3>\n<p>Index pages are associated with <code>index.md</code> files. They are special in the sense\nthat they define the attributes and the content of a folder. Therefore, they\nhave the same <code>content</code> attribute as the corresponding folder object.</p>\n<h3 id=\"tag-objects\">Tag objects</h3>\n<p>Tag objects are inferred by Urubu automatically. They list the content\ncorresponding to a tag.</p>\n<table class=\"table\">\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td><code>/tag/{{tag}}</code></td>\n</tr>\n<tr>\n<td><code>components</code></td>\n<td><code>[tag, {{tag}}]</code></td>\n</tr>\n<tr>\n<td><code>title</code></td>\n<td><code>tag</code></td>\n</tr>\n<tr>\n<td><code>tag</code></td>\n<td><code>tag</code></td>\n</tr>\n<tr>\n<td><code>layout</code></td>\n<td><code>tag</code></td>\n</tr>\n<tr>\n<td><code>content</code></td>\n<td>List of page &amp; folder objects corresponding to <code>tag</code>.</td>\n</tr>\n</tbody>\n</table>\n<p>The tag content is ordered by date, most recent first. If the date is not\ndefined, the modification date is used as a fallback (<code>mdate</code> attribute).</p>\n<p>The layout name is predefined to <code>tag</code>. You have to provide the <code>tag.html</code>\ntemplate to trigger the rendering of tag objects. In the simplest case, it\nmay be sufficient to inherit from a general index layout.</p>\n<h3 id=\"tag-folder-object\">Tag folder object</h3>\n<p>The tag folder object is a special top-level folder whose <code>id</code> is <code>/tag</code>. Urubu\ninfers tag-related content for this folder automatically.</p>\n<p>You can optionally create the corresponding directory in the source code, and\nuse the index file to set attributes such as the <code>layout</code>. In any case, Urubu\nwill create the object if tags are used, and infer the <code>content</code> attribute. </p>\n<table class=\"table\">\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td><code>/tag</code></td>\n</tr>\n<tr>\n<td><code>components</code></td>\n<td><code>[tag]</code></td>\n</tr>\n<tr>\n<td><code>content</code></td>\n<td>A list of tag objects, inferred by Urubu.</td>\n</tr>\n</tbody>\n</table>\n<p>The content is ordered according to the content size of tag objects,\nthe largest one first.</p>\n<h2 id=\"context-variables\">Context variables</h2>\n<p>Urubu makes the context available to templates with\ntwo context variables.</p>\n<h3 id=\"site\"><code>site</code></h3>\n<p>This variable holds site-wide information.</p>\n<p>It has one predefined attribute:</p>\n<table class=\"table\">\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>reflinks</code></td>\n<td>A mapping from all reference ids to link objects.</td>\n</tr>\n</tbody>\n</table>\n<p>Note that the id of the root object is <code>/</code>. Starting from there,\nyou can traverse the whole site.</p>\n<p>In addition, all the attributes specified in the <code>_site.yml</code> file\nwill be available as attributes of the <code>site</code> variable.</p>\n<h3 id=\"this\"><code>this</code></h3>\n<p>This variable holds the current page or tag object.</p>\n    </main>\n    <ul class=\"pager\">\n      <li class=\"previous\"><a href=\"/manual/building.html\">&larr; Project building</a></li>\n      <li class=\"next\"><a href=\"/manual/templating-in-pages.html\">Templating constructs in pages &rarr;</a></li>\n    </ul>\n    </div>\n\n    <div class=\"col-md-3\" role=\"complementary\">\n      <nav class=\"hidden-print hidden-xs hidden-sm\">\n        <div class=\"sidebar\" data-spy=\"affix\" data-offset-top=\"80\" data-offset-bottom=\"60\">\n          <div class=\"well\">\n            <a href=\"#\"><strong>Templates</strong></a>\n            <div class=\"toc\">\n<ul>\n<li><a href=\"#overview\">Overview</a></li>\n<li><a href=\"#the-template-library\">The template library</a></li>\n<li><a href=\"#link-objects\">Link objects</a><ul>\n<li><a href=\"#description\">Description</a></li>\n<li><a href=\"#attributes\">Attributes</a></li>\n<li><a href=\"#index-pages\">Index pages</a></li>\n<li><a href=\"#tag-objects\">Tag objects</a></li>\n<li><a href=\"#tag-folder-object\">Tag folder object</a></li>\n</ul>\n</li>\n<li><a href=\"#context-variables\">Context variables</a><ul>\n<li><a href=\"#site\">site</a></li>\n<li><a href=\"#this\">this</a></li>\n</ul>\n</li>\n</ul>\n</div>\n\n          </div>\n        </div>\n      </nav>\n    </div>\n\n  </div>\n\n    <div class=\"footer\">\n        <div style=\"margin: 5px\">\n<a href=\"https://twitter.com/share\" class=\"twitter-share-button\">Tweet</a>\n<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>\n\n<!-- Place this tag where you want the +1 button to render. -->\n<div class=\"g-plusone\" data-size=\"medium\"></div>\n\n<!-- Place this tag after the last +1 button tag. -->\n<script type=\"text/javascript\">\nwindow.__gcfg = {\n    lang: 'en-US'\n};\n  (function() {\n    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;\n    po.src = 'https://apis.google.com/js/plusone.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);\n  })();\n</script>\n\n<script type=\"text/javascript\" src=\"http://www.reddit.com/static/button/button1.js\"></script>        </div>\n        <p> Content licensed under the\n           <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\">CC-BY-SA License</a>.\n        </p> \n        <p>Website powered by <a href=\"http://urubu.jandecaluwe.com\">Urubu</a>.</p>\n    </div>\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <!-- <script src=\"https://code.jquery.com/jquery.js\"></script> -->\n    <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n \n\n  </body>\n</html>\n"
  },
  {
    "path": "doc/_build/manual/templating-in-pages.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>Templating constructs in pages</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- customizations -->\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- pygments -->\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- icons -->\n    <link href=\"//netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.css\" rel=\"stylesheet\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n<script>\n  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\n  ga('create', 'UA-48968311-3', 'jandecaluwe.com');\n  ga('send', 'pageview');\n\n</script>\n \n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            <li><a href=\"/start.html\">Overview</a></li>\n            <li class=\"active\"><a href=\"/manual/\">Manual</a></li>\n            <li><a href=\"http://urubu-quickstart.jandecaluwe.com\">Quickstart</a></li>\n            <li><a href=\"/faq/\">FAQ</a></li>\n          </ul>\n          <form class=\"navbar-form navbar-left\" action=\"/search.html\" role=\"search\">\n            <div class=\"form-group\">\n                <input type=\"text\" required name=\"q\" id=\"tipue_search_input\" class=\"form-control\" placeholder=\"Search\"> \n            </div>\n          </form>\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li class=\"dropdown\">\n              <a href=\"/more/\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">More <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                <li><a href=\"https://github.com/jandecaluwe/urubu\">GitHub repository</a></li>\n                <li><a href=\"/more/sites.html\">Websites powered by Urubu</a></li>\n                <li><a href=\"/more/about.html\">About this site</a></li>\n              </ul>\n            </li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <ol class=\"breadcrumb\">\n    <li><a href=\"/\">Home</a></li>\n      <li><a href=\"/manual/\">Manual</a></li>\n      <li class=\"active\">Templating constructs in pages</li>\n  </ol>\n\n  <div class=\"page-header\">\n    <h1>Templating constructs in pages</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"col-md-6 content\" role=\"main\">\n    <main>\n      <h2 id=\"overview\">Overview</h2>\n<p>Writing in Markdown is great, but sometimes you run into limitations. For those\ncases, Urubu supports a feature gratefully borrowed from <a href=\"http://jekyllrb.com\" title=\"Jekyll\">Jekyll</a>: using\ntemplating constructs in content pages.</p>\n<p>Basically, all content pages are processed by the templating engine before\ngoing to the Markdown processor. The full power of <a href=\"http://jinja.pocoo.org\" title=\"Jinja2\">Jinja2</a> is thus available\nin your content pages. </p>\n<p>The usage of templating constructs in content pages is best explained with\nexamples. Therefore, we will start with some examples, and review the concepts\nafterwards.</p>\n<h2 id=\"example-usage\">Example usage</h2>\n<h3 id=\"task-list-icons\">Task list icons</h3>\n<p>Suppose you want to emulate <a href=\"http://www.github.com\" title=\"GitHub\">GitHub</a> style task lists, as follows:</p>\n<ul>\n<li><i class=\"fa fa-square-o\"></i> Task 1</li>\n<li><i class=\"fa fa-check-square-o\"></i> Task 2</li>\n<li><i class=\"fa fa-square-o\"></i> Task 1</li>\n</ul>\n<p>An icon is used to show whether a task is still open or not. </p>\n<p>We can support this by defining well-named reusable variables in a dedicated\ntemplate file, as follows:</p>\n<div class=\"codehilite\"><pre><span></span><code>{% set open = &#39;&lt;i class=&quot;fa fa-square-o&quot;&gt;&lt;/i&gt;&#39; %}\n{% set done = &#39;&lt;i class=&quot;fa fa-check-square-o&quot;&gt;&lt;/i&gt;&#39; %}\n</code></pre></div>\n\n<p>Variables <code>open</code> and <code>done</code> now hold HTML code that refers to icons. In these\nexamples, I use the <a href=\"http://fortawesome.github.io/Font-Awesome\" title=\"Font Awesome\">Font Awesome</a> icon  library. You will need to add the\nappropriate reference to the icon stylesheet in your base template. </p>\n<p>Suppose these variables are defined in the file <code>_layouts/util.html</code>. We can\nimport them in any content page as follows:</p>\n<div class=\"codehilite\"><pre><span></span><code>{% from &#39;util.html&#39; import open, done %}\n</code></pre></div>\n\n<p>Note that Urubu knows to look up <code>util.html</code> in the <code>_layouts/</code> directory,\nbecause that is where templates should be located. </p>\n<p>Within the content page, we can use the variables as follows, to get the result\nas above:</p>\n<div class=\"codehilite\"><pre><span></span><code>* {{ open }} Task 1\n* {{ done }} Task 2\n* {{ open }} Task 1\n</code></pre></div>\n\n<h3 id=\"general-icon-interface\">General icon interface</h3>\n<p>Suppose you want a more general interface to icons, so that you can easily\nrefer to any icon by name. This can be done with a Jinja2 macro. A macro is\nlike a function that can take parameters:</p>\n<div class=\"codehilite\"><pre><span></span><code>{% macro fa(name, class=&#39;&#39;) %}\n&lt;i class=&quot;fa fa-{{name}} {{class}}&quot;&gt;&lt;/i&gt;\n{% endmacro %}\n</code></pre></div>\n\n<p>Again, we can import the macro <code>fa</code> in content pages:</p>\n<div class=\"codehilite\"><pre><span></span><code>{% from &#39;util.html&#39; import fa %}\n</code></pre></div>\n\n<p>Then we can use it as follows, for example to refer to the Github icon:</p>\n<div class=\"codehilite\"><pre><span></span><code>{{ fa(&#39;github&#39;) }}\n</code></pre></div>\n\n<p>This gives the following result:</p>\n<p><i class=\"fa fa-github \"></i></p>\n<p>We can pass additional CSS classes via the optional <code>class</code> parameter. The\nfollowing example gets the alternative Github icon in twice the basic size:</p>\n<div class=\"codehilite\"><pre><span></span><code>{{ fa(&#39;github-alt&#39;, &#39;fa-2x&#39;) }}\n</code></pre></div>\n\n<p>This gives the following result:</p>\n<p><i class=\"fa fa-github-alt fa-2x\"></i></p>\n<h3 id=\"figure\">Figure</h3>\n<p>Standard Markdown does not support the HTML5 <code>&lt;figure&gt;</code> tag, and the related\n<code>&lt;figcaption&gt;</code> tag to add captions. We can support this with the following\nmacro:</p>\n<div class=\"codehilite\"><pre><span></span><code>{% macro figure(fn, caption=&#39;&#39;) %}\n&lt;figure&gt;\n  &lt;img src=&quot;/img/{{fn}}&quot; class=&quot;img-responsive&quot; alt=&quot;{{caption}}&quot;&gt;\n  {% if caption %}\n  &lt;figcaption class=&quot;text-center&quot;&gt;{{caption}}&lt;/figcaption&gt;\n  {% endif %}\n&lt;/figure&gt;\n{% endmacro %}\n</code></pre></div>\n\n<p>This macro assumes that images will be placed in an <code>img/</code> directory. In\naddition, it makes the image responsive using a Bootstrap class, and centers\nthe optional caption.  Again, we can use the macro by importing:</p>\n<div class=\"codehilite\"><pre><span></span><code>{% from &#39;util.html&#39; import figure %}\n</code></pre></div>\n\n<p>This is an example usage:</p>\n<div class=\"codehilite\"><pre><span></span><code>{{ figure(&#39;urubu.jpg&#39;, &quot;An Urubu - a brazilian vulture&quot;) }}\n</code></pre></div>\n\n<p>This gives the following result:</p>\n<figure>\n  <img src=\"/img/urubu.jpg\" class=\"img-responsive\" alt=\"An Urubu - a brazilian vulture\">\n  <figcaption class=\"text-center\">An Urubu - a brazilian vulture</figcaption>\n</figure>\n\n<h2 id=\"templating-concepts\">Templating concepts</h2>\n<h3 id=\"template-processing-is-done-first\">Template processing is done first</h3>\n<p>The examples illustrate how you can use template variables and macros to\nconstruct HTML code. However, it is important to understand that template\nprocessing is done first, before Markdown processing (for good reasons).  Thus,\nthe HTML code from variables and macros first becomes part of Markdown source\ncode.  This works well because Markdown is designed to handle HTML\ntransparently.</p>\n<h3 id=\"full-template-power-available\">Full template power available</h3>\n<p>The examples demonstrate the use of variables, macros, and imports.  This is\nmerely the beginning: in fact, the full power of Jinja2 templates is available.\nThis is a vast subject. To learn what is possible, see the <a href=\"http://jinja.pocoo.org/docs/dev/templates\">Jinja2 Template\nDesigner Documentation</a>.</p>\n<h3 id=\"context-variables\">Context variables</h3>\n<p>When Urubu invokes template processing on a page, it automatically passes\ncertain context variables.  This works exactly like for regular templates, as\ndescribed in <a href=\"/manual/templates.html#context-variables\" title=\"Templates\">Context Variables</a>. Basically, variable <code>this</code>\nprovides access to the page attributes, and variable <code>site</code> provides access to\nthe global site attributes. </p>\n<h3 id=\"template-delimiters\">Template delimiters</h3>\n<p>Template support introduces new delimiters as follows:</p>\n<ul>\n<li><code>{# ... #}</code> for comments not included in the output</li>\n<li><code>{{ ... }}</code> for expressions, to print to the output</li>\n<li><code>{% ... %}</code> for statements</li>\n</ul>\n<p>These delimiters deserve some attention.</p>\n<p>First, the comment delimiters are interesting because they add a functionality\nthat is not available in Markdown: comments that will not show up in the\noutput.</p>\n<p>Secondly, as always with delimiters, there is the problem of how to escape them\nif you want to use them literally in source code, without interpretation.</p>\n<p>For an inline literal or snippet you can use literal expressions.  For example,\nto get <code>{{</code> you can write  <code>{{ '{{' }}</code> .   </p>\n<p>For a larger section, you can mark a block <em>raw</em>. For example, to\nget the list shown earlier in this section, you can write:</p>\n<div class=\"codehilite\"><pre><span></span><code>{% raw %}\n* `{# ... #}` for comments not included in the output\n* `{{ ... }}` for expressions, to print to the output\n* `{% ... %}` for statements\n{% endraw %}\n</code></pre></div>\n    </main>\n    <ul class=\"pager\">\n      <li class=\"previous\"><a href=\"/manual/templates.html\">&larr; Templates</a></li>\n      <li class=\"next\"><a href=\"/manual/hooks.html\">Python hooks &rarr;</a></li>\n    </ul>\n    </div>\n\n    <div class=\"col-md-3\" role=\"complementary\">\n      <nav class=\"hidden-print hidden-xs hidden-sm\">\n        <div class=\"sidebar\" data-spy=\"affix\" data-offset-top=\"80\" data-offset-bottom=\"60\">\n          <div class=\"well\">\n            <a href=\"#\"><strong>Templating constructs in pages</strong></a>\n            <div class=\"toc\">\n<ul>\n<li><a href=\"#overview\">Overview</a></li>\n<li><a href=\"#example-usage\">Example usage</a><ul>\n<li><a href=\"#task-list-icons\">Task list icons</a></li>\n<li><a href=\"#general-icon-interface\">General icon interface</a></li>\n<li><a href=\"#figure\">Figure</a></li>\n</ul>\n</li>\n<li><a href=\"#templating-concepts\">Templating concepts</a><ul>\n<li><a href=\"#template-processing-is-done-first\">Template processing is done first</a></li>\n<li><a href=\"#full-template-power-available\">Full template power available</a></li>\n<li><a href=\"#context-variables\">Context variables</a></li>\n<li><a href=\"#template-delimiters\">Template delimiters</a></li>\n</ul>\n</li>\n</ul>\n</div>\n\n          </div>\n        </div>\n      </nav>\n    </div>\n\n  </div>\n\n    <div class=\"footer\">\n        <div style=\"margin: 5px\">\n<a href=\"https://twitter.com/share\" class=\"twitter-share-button\">Tweet</a>\n<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>\n\n<!-- Place this tag where you want the +1 button to render. -->\n<div class=\"g-plusone\" data-size=\"medium\"></div>\n\n<!-- Place this tag after the last +1 button tag. -->\n<script type=\"text/javascript\">\nwindow.__gcfg = {\n    lang: 'en-US'\n};\n  (function() {\n    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;\n    po.src = 'https://apis.google.com/js/plusone.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);\n  })();\n</script>\n\n<script type=\"text/javascript\" src=\"http://www.reddit.com/static/button/button1.js\"></script>        </div>\n        <p> Content licensed under the\n           <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\">CC-BY-SA License</a>.\n        </p> \n        <p>Website powered by <a href=\"http://urubu.jandecaluwe.com\">Urubu</a>.</p>\n    </div>\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <!-- <script src=\"https://code.jquery.com/jquery.js\"></script> -->\n    <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n \n\n  </body>\n</html>\n"
  },
  {
    "path": "doc/_build/more/about.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>About this site</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- customizations -->\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- pygments -->\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- icons -->\n    <link href=\"//netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.css\" rel=\"stylesheet\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n<script>\n  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\n  ga('create', 'UA-48968311-3', 'jandecaluwe.com');\n  ga('send', 'pageview');\n\n</script>\n \n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            <li><a href=\"/start.html\">Overview</a></li>\n            <li><a href=\"/manual/\">Manual</a></li>\n            <li><a href=\"http://urubu-quickstart.jandecaluwe.com\">Quickstart</a></li>\n            <li><a href=\"/faq/\">FAQ</a></li>\n          </ul>\n          <form class=\"navbar-form navbar-left\" action=\"/search.html\" role=\"search\">\n            <div class=\"form-group\">\n                <input type=\"text\" required name=\"q\" id=\"tipue_search_input\" class=\"form-control\" placeholder=\"Search\"> \n            </div>\n          </form>\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li class=\"active\" class=\"dropdown\">\n              <a href=\"/more/\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">More <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                <li><a href=\"https://github.com/jandecaluwe/urubu\">GitHub repository</a></li>\n                <li><a href=\"/more/sites.html\">Websites powered by Urubu</a></li>\n                <li><a href=\"/more/about.html\">About this site</a></li>\n              </ul>\n            </li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <ol class=\"breadcrumb\">\n    <li><a href=\"/\">Home</a></li>\n      <li><a href=\"/more/\">More</a></li>\n      <li class=\"active\">About this site</li>\n  </ol>\n\n  <div class=\"page-header\">\n    <h1>About this site</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"col-md-6 content\" role=\"main\">\n    <main>\n      <h2 id=\"author\">Author</h2>\n<p>The Urubu software is written by <a href=\"http://www.jandecaluwe.com\" title=\"Jan Decaluwe\">Jan Decaluwe</a>.</p>\n<h2 id=\"license\">License</h2>\n<p>The Urubu software is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.txt\" title=\"GNU Affero General Public License\">GNU Affero General Public License</a>.</p>\n<p>The content on this documentation website is licensed\nunder the <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\" title=\"CC-BY-SA License\">CC-BY-SA License</a>.</p>\n<h2 id=\"development\">Development</h2>\n<p>The Urubu software is developed on <a href=\"http://www.github.com\" title=\"GitHub\">GitHub</a> in the <a href=\"https://github.com/jandecaluwe/urubu\" title=\"Urubu repo\">Urubu repo</a>.</p>\n<p>The documentation is developed as a website in a <code>gh-pages</code> branch in the same\nrepo. It can be accessed from the custom domain <a href=\"http://urubu.jandecaluwe.com\">urubu.jandecaluwe.com</a> but it\nis hosted on <a href=\"http://pages.github.com\">GitHub Pages</a>.</p>\n<h2 id=\"theme\">Theme</h2>\n<p>The theme on this website uses the <a href=\"http://getbootstrap.com\" title=\"Bootstrap\">Bootstrap</a> framework,\nand is based on stock <a href=\"http://getbootstrap.com\" title=\"Bootstrap\">Bootstrap</a>.</p>\n<h2 id=\"trivia\">Trivia</h2>\n<p>An urubu is a brazilian vulture. <a href=\"http://en.wikipedia.org/wiki/Urubu_(album)\">Urubu</a> is also the 10th album of\nAntonio Carlos Jobim, one of my favorite song composers.</p>\n    </main>\n    </div>\n\n    <div class=\"col-md-3\" role=\"complementary\">\n      <nav class=\"hidden-print hidden-xs hidden-sm\">\n        <div class=\"sidebar\" data-spy=\"affix\" data-offset-top=\"80\" data-offset-bottom=\"60\">\n          <div class=\"well\">\n            <a href=\"#\"><strong>About this site</strong></a>\n            <div class=\"toc\">\n<ul>\n<li><a href=\"#author\">Author</a></li>\n<li><a href=\"#license\">License</a></li>\n<li><a href=\"#development\">Development</a></li>\n<li><a href=\"#theme\">Theme</a></li>\n<li><a href=\"#trivia\">Trivia</a></li>\n</ul>\n</div>\n\n          </div>\n        </div>\n      </nav>\n    </div>\n\n  </div>\n\n    <div class=\"footer\">\n        <div style=\"margin: 5px\">\n<a href=\"https://twitter.com/share\" class=\"twitter-share-button\">Tweet</a>\n<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>\n\n<!-- Place this tag where you want the +1 button to render. -->\n<div class=\"g-plusone\" data-size=\"medium\"></div>\n\n<!-- Place this tag after the last +1 button tag. -->\n<script type=\"text/javascript\">\nwindow.__gcfg = {\n    lang: 'en-US'\n};\n  (function() {\n    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;\n    po.src = 'https://apis.google.com/js/plusone.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);\n  })();\n</script>\n\n<script type=\"text/javascript\" src=\"http://www.reddit.com/static/button/button1.js\"></script>        </div>\n        <p> Content licensed under the\n           <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\">CC-BY-SA License</a>.\n        </p> \n        <p>Website powered by <a href=\"http://urubu.jandecaluwe.com\">Urubu</a>.</p>\n    </div>\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <!-- <script src=\"https://code.jquery.com/jquery.js\"></script> -->\n    <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n \n\n  </body>\n</html>\n"
  },
  {
    "path": "doc/_build/more/index.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>More</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- customizations -->\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- pygments -->\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- icons -->\n    <link href=\"//netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.css\" rel=\"stylesheet\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n<script>\n  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\n  ga('create', 'UA-48968311-3', 'jandecaluwe.com');\n  ga('send', 'pageview');\n\n</script>\n \n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            <li><a href=\"/start.html\">Overview</a></li>\n            <li><a href=\"/manual/\">Manual</a></li>\n            <li><a href=\"http://urubu-quickstart.jandecaluwe.com\">Quickstart</a></li>\n            <li><a href=\"/faq/\">FAQ</a></li>\n          </ul>\n          <form class=\"navbar-form navbar-left\" action=\"/search.html\" role=\"search\">\n            <div class=\"form-group\">\n                <input type=\"text\" required name=\"q\" id=\"tipue_search_input\" class=\"form-control\" placeholder=\"Search\"> \n            </div>\n          </form>\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li class=\"active\" class=\"dropdown\">\n              <a href=\"/more/\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">More <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                <li><a href=\"https://github.com/jandecaluwe/urubu\">GitHub repository</a></li>\n                <li><a href=\"/more/sites.html\">Websites powered by Urubu</a></li>\n                <li><a href=\"/more/about.html\">About this site</a></li>\n              </ul>\n            </li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"jumbotron\">\n  <div class=\"container\">\n    <div class=\"row\">\n       <div class=\"col-md-7\">\n         <h1>More</h1>\n         <p></p>\n    </div>\n  </div>\n </div>\n</div>\n\n<div class=\"container\">\n  <div class=\"row\">\n\n    <div class=\"col-md-7\" role=\"main\">\n    <main>\n      <h4><a href=\"https://github.com/jandecaluwe/urubu\">GitHub repository</a></h4>\n        <p></p>\n      <h4><a href=\"/more/sites.html\">Websites powered by Urubu</a></h4>\n        <p></p>\n      <h4><a href=\"/more/about.html\">About this site</a></h4>\n        <p></p>\n    </main>\n    </div>\n\n </div>\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <!-- <script src=\"https://code.jquery.com/jquery.js\"></script> -->\n    <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n \n\n  </body>\n</html>\n"
  },
  {
    "path": "doc/_build/more/sites.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>Websites powered by Urubu</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- customizations -->\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- pygments -->\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- icons -->\n    <link href=\"//netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.css\" rel=\"stylesheet\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n<script>\n  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\n  ga('create', 'UA-48968311-3', 'jandecaluwe.com');\n  ga('send', 'pageview');\n\n</script>\n \n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            <li><a href=\"/start.html\">Overview</a></li>\n            <li><a href=\"/manual/\">Manual</a></li>\n            <li><a href=\"http://urubu-quickstart.jandecaluwe.com\">Quickstart</a></li>\n            <li><a href=\"/faq/\">FAQ</a></li>\n          </ul>\n          <form class=\"navbar-form navbar-left\" action=\"/search.html\" role=\"search\">\n            <div class=\"form-group\">\n                <input type=\"text\" required name=\"q\" id=\"tipue_search_input\" class=\"form-control\" placeholder=\"Search\"> \n            </div>\n          </form>\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li class=\"active\" class=\"dropdown\">\n              <a href=\"/more/\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">More <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                <li><a href=\"https://github.com/jandecaluwe/urubu\">GitHub repository</a></li>\n                <li><a href=\"/more/sites.html\">Websites powered by Urubu</a></li>\n                <li><a href=\"/more/about.html\">About this site</a></li>\n              </ul>\n            </li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <ol class=\"breadcrumb\">\n    <li><a href=\"/\">Home</a></li>\n      <li><a href=\"/more/\">More</a></li>\n      <li class=\"active\">Websites powered by Urubu</li>\n  </ol>\n\n  <div class=\"page-header\">\n    <h1>Websites powered by Urubu</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"col-md-6 content\" role=\"main\">\n    <main>\n      <p>I created Urubu to solve a personal problem: how to create and maintain\nwebsites for my projects. I open-sourced it \"in the hope it can be useful\".  On\nthis page I list a number of websites that are powered by Urubu.</p>\n<h2 id=\"by-others\">By others</h2>\n<p><a href=\"http://insights.sigasi.com\">Sigasi Insights</a> - Documentation for Sigasi's tools.</p>\n<p><a href=\"http://www.leouieda.com/\">Leonardo Uieda</a> - Website about Leonardo's professional activities.</p>\n<p><a href=\"http://www.pinga-lab.org/\">PINGA lab</a> - Site for the PINGA lab, a research group studying inverse\nproblems in geophysics.</p>\n<h2 id=\"for-others-by-me\">For others, by me</h2>\n<p><a href=\"http://www.vlaamsesofrologen.be\">Vlaamse sofrologen</a> - Site of the flemish sophrologists (in Dutch)</p>\n<p><a href=\"http://www.troca-vn.be\">Troca Vins Naturels</a> - Natural wines</p>\n<h2 id=\"myhdl\">MyHDL</h2>\n<p><a href=\"http://www.myhdl.org\" title=\"MyHDL website\">MyHDL website</a> - all about MyHDL, for users</p>\n<p><a href=\"http://dev.myhdl.org\" title=\"MyHDL development website\">MyHDL development website</a> - info for MyHDL developers</p>\n<h2 id=\"urubu\">Urubu</h2>\n<p><a href=\"http://urubu-quickstart.jandecaluwe.com\" title=\"Urubu Quickstart\">Urubu Quickstart</a> - the Quickstart companion site for Urubu</p>\n<p><a href=\"http://urubu.jandecaluwe.com\" title=\"Urubu Documentation\">Urubu Documentation</a> - this site</p>\n<h2 id=\"personal\">Personal</h2>\n<p><a href=\"http://www.jandecaluwe.com\">Jan Decaluwe</a> My site about professional activities</p>\n<p><a href=\"http://music.jandecaluwe.com\">Jan Decaluwe / Music</a> My music projects</p>\n<p><a href=\"http://nl.jandecaluwe.com\">Jan Decaluwe / Opinions</a> My opinions, in Dutch</p>\n    </main>\n    </div>\n\n\n  </div>\n\n    <div class=\"footer\">\n        <div style=\"margin: 5px\">\n<a href=\"https://twitter.com/share\" class=\"twitter-share-button\">Tweet</a>\n<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>\n\n<!-- Place this tag where you want the +1 button to render. -->\n<div class=\"g-plusone\" data-size=\"medium\"></div>\n\n<!-- Place this tag after the last +1 button tag. -->\n<script type=\"text/javascript\">\nwindow.__gcfg = {\n    lang: 'en-US'\n};\n  (function() {\n    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;\n    po.src = 'https://apis.google.com/js/plusone.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);\n  })();\n</script>\n\n<script type=\"text/javascript\" src=\"http://www.reddit.com/static/button/button1.js\"></script>        </div>\n        <p> Content licensed under the\n           <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\">CC-BY-SA License</a>.\n        </p> \n        <p>Website powered by <a href=\"http://urubu.jandecaluwe.com\">Urubu</a>.</p>\n    </div>\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <!-- <script src=\"https://code.jquery.com/jquery.js\"></script> -->\n    <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n \n\n  </body>\n</html>\n"
  },
  {
    "path": "doc/_build/news/2014-01-12.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>Urubu 0.1 released</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- customizations -->\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- pygments -->\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- icons -->\n    <link href=\"//netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.css\" rel=\"stylesheet\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n<script>\n  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\n  ga('create', 'UA-48968311-3', 'jandecaluwe.com');\n  ga('send', 'pageview');\n\n</script>\n \n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            <li><a href=\"/start.html\">Overview</a></li>\n            <li><a href=\"/manual/\">Manual</a></li>\n            <li><a href=\"http://urubu-quickstart.jandecaluwe.com\">Quickstart</a></li>\n            <li><a href=\"/faq/\">FAQ</a></li>\n          </ul>\n          <form class=\"navbar-form navbar-left\" action=\"/search.html\" role=\"search\">\n            <div class=\"form-group\">\n                <input type=\"text\" required name=\"q\" id=\"tipue_search_input\" class=\"form-control\" placeholder=\"Search\"> \n            </div>\n          </form>\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li class=\"dropdown\">\n              <a href=\"/more/\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">More <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                <li><a href=\"https://github.com/jandecaluwe/urubu\">GitHub repository</a></li>\n                <li><a href=\"/more/sites.html\">Websites powered by Urubu</a></li>\n                <li><a href=\"/more/about.html\">About this site</a></li>\n              </ul>\n            </li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <ol class=\"breadcrumb\">\n    <li><a href=\"/\">Home</a></li>\n      <li><a href=\"/news/\">Newsfeed</a></li>\n      <li class=\"active\">Urubu 0.1 released</li>\n  </ol>\n\n  <div class=\"page-header\">\n    <h1>Urubu 0.1 released</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"col-md-6 content\" role=\"main\">\n    <main>\n      <p>Introducing Urubu, a Python-based micro CMS for static websites.\nRead about <a href=\"http://www.jandecaluwe.com/blog/i-dont-like-blogs.html\">the rationale behind it</a>.</p>\n    </main>\n    </div>\n\n\n  </div>\n\n    <div class=\"footer\">\n        <div style=\"margin: 5px\">\n<a href=\"https://twitter.com/share\" class=\"twitter-share-button\">Tweet</a>\n<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>\n\n<!-- Place this tag where you want the +1 button to render. -->\n<div class=\"g-plusone\" data-size=\"medium\"></div>\n\n<!-- Place this tag after the last +1 button tag. -->\n<script type=\"text/javascript\">\nwindow.__gcfg = {\n    lang: 'en-US'\n};\n  (function() {\n    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;\n    po.src = 'https://apis.google.com/js/plusone.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);\n  })();\n</script>\n\n<script type=\"text/javascript\" src=\"http://www.reddit.com/static/button/button1.js\"></script>        </div>\n        <p> Content licensed under the\n           <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\">CC-BY-SA License</a>.\n        </p> \n        <p>Website powered by <a href=\"http://urubu.jandecaluwe.com\">Urubu</a>.</p>\n    </div>\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <!-- <script src=\"https://code.jquery.com/jquery.js\"></script> -->\n    <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n \n\n  </body>\n</html>\n"
  },
  {
    "path": "doc/_build/news/2014-01-22.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>Urubu 0.2 released</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- customizations -->\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- pygments -->\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- icons -->\n    <link href=\"//netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.css\" rel=\"stylesheet\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n<script>\n  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\n  ga('create', 'UA-48968311-3', 'jandecaluwe.com');\n  ga('send', 'pageview');\n\n</script>\n \n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            <li><a href=\"/start.html\">Overview</a></li>\n            <li><a href=\"/manual/\">Manual</a></li>\n            <li><a href=\"http://urubu-quickstart.jandecaluwe.com\">Quickstart</a></li>\n            <li><a href=\"/faq/\">FAQ</a></li>\n          </ul>\n          <form class=\"navbar-form navbar-left\" action=\"/search.html\" role=\"search\">\n            <div class=\"form-group\">\n                <input type=\"text\" required name=\"q\" id=\"tipue_search_input\" class=\"form-control\" placeholder=\"Search\"> \n            </div>\n          </form>\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li class=\"dropdown\">\n              <a href=\"/more/\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">More <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                <li><a href=\"https://github.com/jandecaluwe/urubu\">GitHub repository</a></li>\n                <li><a href=\"/more/sites.html\">Websites powered by Urubu</a></li>\n                <li><a href=\"/more/about.html\">About this site</a></li>\n              </ul>\n            </li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <ol class=\"breadcrumb\">\n    <li><a href=\"/\">Home</a></li>\n      <li><a href=\"/news/\">Newsfeed</a></li>\n      <li class=\"active\">Urubu 0.2 released</li>\n  </ol>\n\n  <div class=\"page-header\">\n    <h1>Urubu 0.2 released</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"col-md-6 content\" role=\"main\">\n    <main>\n      <p>This release adds support for github-style task lists.</p>\n    </main>\n    </div>\n\n\n  </div>\n\n    <div class=\"footer\">\n        <div style=\"margin: 5px\">\n<a href=\"https://twitter.com/share\" class=\"twitter-share-button\">Tweet</a>\n<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>\n\n<!-- Place this tag where you want the +1 button to render. -->\n<div class=\"g-plusone\" data-size=\"medium\"></div>\n\n<!-- Place this tag after the last +1 button tag. -->\n<script type=\"text/javascript\">\nwindow.__gcfg = {\n    lang: 'en-US'\n};\n  (function() {\n    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;\n    po.src = 'https://apis.google.com/js/plusone.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);\n  })();\n</script>\n\n<script type=\"text/javascript\" src=\"http://www.reddit.com/static/button/button1.js\"></script>        </div>\n        <p> Content licensed under the\n           <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\">CC-BY-SA License</a>.\n        </p> \n        <p>Website powered by <a href=\"http://urubu.jandecaluwe.com\">Urubu</a>.</p>\n    </div>\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <!-- <script src=\"https://code.jquery.com/jquery.js\"></script> -->\n    <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n \n\n  </body>\n</html>\n"
  },
  {
    "path": "doc/_build/news/2014-02-15.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>Urubu 0.2.1 released</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- customizations -->\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- pygments -->\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- icons -->\n    <link href=\"//netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.css\" rel=\"stylesheet\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n<script>\n  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\n  ga('create', 'UA-48968311-3', 'jandecaluwe.com');\n  ga('send', 'pageview');\n\n</script>\n \n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            <li><a href=\"/start.html\">Overview</a></li>\n            <li><a href=\"/manual/\">Manual</a></li>\n            <li><a href=\"http://urubu-quickstart.jandecaluwe.com\">Quickstart</a></li>\n            <li><a href=\"/faq/\">FAQ</a></li>\n          </ul>\n          <form class=\"navbar-form navbar-left\" action=\"/search.html\" role=\"search\">\n            <div class=\"form-group\">\n                <input type=\"text\" required name=\"q\" id=\"tipue_search_input\" class=\"form-control\" placeholder=\"Search\"> \n            </div>\n          </form>\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li class=\"dropdown\">\n              <a href=\"/more/\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">More <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                <li><a href=\"https://github.com/jandecaluwe/urubu\">GitHub repository</a></li>\n                <li><a href=\"/more/sites.html\">Websites powered by Urubu</a></li>\n                <li><a href=\"/more/about.html\">About this site</a></li>\n              </ul>\n            </li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <ol class=\"breadcrumb\">\n    <li><a href=\"/\">Home</a></li>\n      <li><a href=\"/news/\">Newsfeed</a></li>\n      <li class=\"active\">Urubu 0.2.1 released</li>\n  </ol>\n\n  <div class=\"page-header\">\n    <h1>Urubu 0.2.1 released</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"col-md-6 content\" role=\"main\">\n    <main>\n      <p>This is a bug fix release.</p>\n    </main>\n    </div>\n\n\n  </div>\n\n    <div class=\"footer\">\n        <div style=\"margin: 5px\">\n<a href=\"https://twitter.com/share\" class=\"twitter-share-button\">Tweet</a>\n<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>\n\n<!-- Place this tag where you want the +1 button to render. -->\n<div class=\"g-plusone\" data-size=\"medium\"></div>\n\n<!-- Place this tag after the last +1 button tag. -->\n<script type=\"text/javascript\">\nwindow.__gcfg = {\n    lang: 'en-US'\n};\n  (function() {\n    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;\n    po.src = 'https://apis.google.com/js/plusone.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);\n  })();\n</script>\n\n<script type=\"text/javascript\" src=\"http://www.reddit.com/static/button/button1.js\"></script>        </div>\n        <p> Content licensed under the\n           <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\">CC-BY-SA License</a>.\n        </p> \n        <p>Website powered by <a href=\"http://urubu.jandecaluwe.com\">Urubu</a>.</p>\n    </div>\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <!-- <script src=\"https://code.jquery.com/jquery.js\"></script> -->\n    <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n \n\n  </body>\n</html>\n"
  },
  {
    "path": "doc/_build/news/2014-02-27.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>Urubu 0.3 released</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- customizations -->\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- pygments -->\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- icons -->\n    <link href=\"//netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.css\" rel=\"stylesheet\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n<script>\n  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\n  ga('create', 'UA-48968311-3', 'jandecaluwe.com');\n  ga('send', 'pageview');\n\n</script>\n \n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            <li><a href=\"/start.html\">Overview</a></li>\n            <li><a href=\"/manual/\">Manual</a></li>\n            <li><a href=\"http://urubu-quickstart.jandecaluwe.com\">Quickstart</a></li>\n            <li><a href=\"/faq/\">FAQ</a></li>\n          </ul>\n          <form class=\"navbar-form navbar-left\" action=\"/search.html\" role=\"search\">\n            <div class=\"form-group\">\n                <input type=\"text\" required name=\"q\" id=\"tipue_search_input\" class=\"form-control\" placeholder=\"Search\"> \n            </div>\n          </form>\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li class=\"dropdown\">\n              <a href=\"/more/\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">More <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                <li><a href=\"https://github.com/jandecaluwe/urubu\">GitHub repository</a></li>\n                <li><a href=\"/more/sites.html\">Websites powered by Urubu</a></li>\n                <li><a href=\"/more/about.html\">About this site</a></li>\n              </ul>\n            </li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <ol class=\"breadcrumb\">\n    <li><a href=\"/\">Home</a></li>\n      <li><a href=\"/news/\">Newsfeed</a></li>\n      <li class=\"active\">Urubu 0.3 released</li>\n  </ol>\n\n  <div class=\"page-header\">\n    <h1>Urubu 0.3 released</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"col-md-6 content\" role=\"main\">\n    <main>\n      <p>This release adds markdown support for front-matter attributes.\n<a href=\"/manual/structure.html#markdown-in-attributes\">Read more&nbsp;&raquo;</a></p>\n    </main>\n    </div>\n\n\n  </div>\n\n    <div class=\"footer\">\n        <div style=\"margin: 5px\">\n<a href=\"https://twitter.com/share\" class=\"twitter-share-button\">Tweet</a>\n<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>\n\n<!-- Place this tag where you want the +1 button to render. -->\n<div class=\"g-plusone\" data-size=\"medium\"></div>\n\n<!-- Place this tag after the last +1 button tag. -->\n<script type=\"text/javascript\">\nwindow.__gcfg = {\n    lang: 'en-US'\n};\n  (function() {\n    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;\n    po.src = 'https://apis.google.com/js/plusone.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);\n  })();\n</script>\n\n<script type=\"text/javascript\" src=\"http://www.reddit.com/static/button/button1.js\"></script>        </div>\n        <p> Content licensed under the\n           <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\">CC-BY-SA License</a>.\n        </p> \n        <p>Website powered by <a href=\"http://urubu.jandecaluwe.com\">Urubu</a>.</p>\n    </div>\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <!-- <script src=\"https://code.jquery.com/jquery.js\"></script> -->\n    <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n \n\n  </body>\n</html>\n"
  },
  {
    "path": "doc/_build/news/2014-03-18.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>Urubu 0.3.1 released</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- customizations -->\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- pygments -->\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- icons -->\n    <link href=\"//netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.css\" rel=\"stylesheet\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n<script>\n  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\n  ga('create', 'UA-48968311-3', 'jandecaluwe.com');\n  ga('send', 'pageview');\n\n</script>\n \n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            <li><a href=\"/start.html\">Overview</a></li>\n            <li><a href=\"/manual/\">Manual</a></li>\n            <li><a href=\"http://urubu-quickstart.jandecaluwe.com\">Quickstart</a></li>\n            <li><a href=\"/faq/\">FAQ</a></li>\n          </ul>\n          <form class=\"navbar-form navbar-left\" action=\"/search.html\" role=\"search\">\n            <div class=\"form-group\">\n                <input type=\"text\" required name=\"q\" id=\"tipue_search_input\" class=\"form-control\" placeholder=\"Search\"> \n            </div>\n          </form>\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li class=\"dropdown\">\n              <a href=\"/more/\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">More <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                <li><a href=\"https://github.com/jandecaluwe/urubu\">GitHub repository</a></li>\n                <li><a href=\"/more/sites.html\">Websites powered by Urubu</a></li>\n                <li><a href=\"/more/about.html\">About this site</a></li>\n              </ul>\n            </li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <ol class=\"breadcrumb\">\n    <li><a href=\"/\">Home</a></li>\n      <li><a href=\"/news/\">Newsfeed</a></li>\n      <li class=\"active\">Urubu 0.3.1 released</li>\n  </ol>\n\n  <div class=\"page-header\">\n    <h1>Urubu 0.3.1 released</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"col-md-6 content\" role=\"main\">\n    <main>\n      <p>This is a bug-fix release.</p>\n    </main>\n    </div>\n\n\n  </div>\n\n    <div class=\"footer\">\n        <div style=\"margin: 5px\">\n<a href=\"https://twitter.com/share\" class=\"twitter-share-button\">Tweet</a>\n<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>\n\n<!-- Place this tag where you want the +1 button to render. -->\n<div class=\"g-plusone\" data-size=\"medium\"></div>\n\n<!-- Place this tag after the last +1 button tag. -->\n<script type=\"text/javascript\">\nwindow.__gcfg = {\n    lang: 'en-US'\n};\n  (function() {\n    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;\n    po.src = 'https://apis.google.com/js/plusone.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);\n  })();\n</script>\n\n<script type=\"text/javascript\" src=\"http://www.reddit.com/static/button/button1.js\"></script>        </div>\n        <p> Content licensed under the\n           <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\">CC-BY-SA License</a>.\n        </p> \n        <p>Website powered by <a href=\"http://urubu.jandecaluwe.com\">Urubu</a>.</p>\n    </div>\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <!-- <script src=\"https://code.jquery.com/jquery.js\"></script> -->\n    <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n \n\n  </body>\n</html>\n"
  },
  {
    "path": "doc/_build/news/2014-05-25.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>Urubu 0.4 and Urubu Quickstart released</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- customizations -->\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- pygments -->\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- icons -->\n    <link href=\"//netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.css\" rel=\"stylesheet\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n<script>\n  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\n  ga('create', 'UA-48968311-3', 'jandecaluwe.com');\n  ga('send', 'pageview');\n\n</script>\n \n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            <li><a href=\"/start.html\">Overview</a></li>\n            <li><a href=\"/manual/\">Manual</a></li>\n            <li><a href=\"http://urubu-quickstart.jandecaluwe.com\">Quickstart</a></li>\n            <li><a href=\"/faq/\">FAQ</a></li>\n          </ul>\n          <form class=\"navbar-form navbar-left\" action=\"/search.html\" role=\"search\">\n            <div class=\"form-group\">\n                <input type=\"text\" required name=\"q\" id=\"tipue_search_input\" class=\"form-control\" placeholder=\"Search\"> \n            </div>\n          </form>\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li class=\"dropdown\">\n              <a href=\"/more/\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">More <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                <li><a href=\"https://github.com/jandecaluwe/urubu\">GitHub repository</a></li>\n                <li><a href=\"/more/sites.html\">Websites powered by Urubu</a></li>\n                <li><a href=\"/more/about.html\">About this site</a></li>\n              </ul>\n            </li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <ol class=\"breadcrumb\">\n    <li><a href=\"/\">Home</a></li>\n      <li><a href=\"/news/\">Newsfeed</a></li>\n      <li class=\"active\">Urubu 0.4 and Urubu Quickstart released</li>\n  </ol>\n\n  <div class=\"page-header\">\n    <h1>Urubu 0.4 and Urubu Quickstart released</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"col-md-6 content\" role=\"main\">\n    <main>\n      <p>Release features: </p>\n<ul>\n<li>Run <code>urubu serve</code> from the top-level project directory. </li>\n<li><a href=\"/manual/structure.html\" title=\"Project structure\">Programmable file extensions</a> for site pages</li>\n<li>Introducing <a href=\"http://urubu-quickstart.jandecaluwe.com\" title=\"Urubu Quickstart\">Urubu Quickstart</a>: a quick way to set up a new Urubu project.</li>\n</ul>\n    </main>\n    </div>\n\n\n  </div>\n\n    <div class=\"footer\">\n        <div style=\"margin: 5px\">\n<a href=\"https://twitter.com/share\" class=\"twitter-share-button\">Tweet</a>\n<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>\n\n<!-- Place this tag where you want the +1 button to render. -->\n<div class=\"g-plusone\" data-size=\"medium\"></div>\n\n<!-- Place this tag after the last +1 button tag. -->\n<script type=\"text/javascript\">\nwindow.__gcfg = {\n    lang: 'en-US'\n};\n  (function() {\n    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;\n    po.src = 'https://apis.google.com/js/plusone.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);\n  })();\n</script>\n\n<script type=\"text/javascript\" src=\"http://www.reddit.com/static/button/button1.js\"></script>        </div>\n        <p> Content licensed under the\n           <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\">CC-BY-SA License</a>.\n        </p> \n        <p>Website powered by <a href=\"http://urubu.jandecaluwe.com\">Urubu</a>.</p>\n    </div>\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <!-- <script src=\"https://code.jquery.com/jquery.js\"></script> -->\n    <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n \n\n  </body>\n</html>\n"
  },
  {
    "path": "doc/_build/news/2014-09-08.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>Urubu 0.5 released</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- customizations -->\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- pygments -->\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- icons -->\n    <link href=\"//netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.css\" rel=\"stylesheet\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n<script>\n  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\n  ga('create', 'UA-48968311-3', 'jandecaluwe.com');\n  ga('send', 'pageview');\n\n</script>\n \n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            <li><a href=\"/start.html\">Overview</a></li>\n            <li><a href=\"/manual/\">Manual</a></li>\n            <li><a href=\"http://urubu-quickstart.jandecaluwe.com\">Quickstart</a></li>\n            <li><a href=\"/faq/\">FAQ</a></li>\n          </ul>\n          <form class=\"navbar-form navbar-left\" action=\"/search.html\" role=\"search\">\n            <div class=\"form-group\">\n                <input type=\"text\" required name=\"q\" id=\"tipue_search_input\" class=\"form-control\" placeholder=\"Search\"> \n            </div>\n          </form>\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li class=\"dropdown\">\n              <a href=\"/more/\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">More <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                <li><a href=\"https://github.com/jandecaluwe/urubu\">GitHub repository</a></li>\n                <li><a href=\"/more/sites.html\">Websites powered by Urubu</a></li>\n                <li><a href=\"/more/about.html\">About this site</a></li>\n              </ul>\n            </li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <ol class=\"breadcrumb\">\n    <li><a href=\"/\">Home</a></li>\n      <li><a href=\"/news/\">Newsfeed</a></li>\n      <li class=\"active\">Urubu 0.5 released</li>\n  </ol>\n\n  <div class=\"page-header\">\n    <h1>Urubu 0.5 released</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"col-md-6 content\" role=\"main\">\n    <main>\n      <p>Urubu 0.5 introduces tag support. </p>\n<p>Read <a href=\"http://www.jandecaluwe.com/blog/tag_support_urubu.html\">my blog post</a> for an introduction.</p>\n    </main>\n    </div>\n\n\n  </div>\n\n    <div class=\"footer\">\n        <div style=\"margin: 5px\">\n<a href=\"https://twitter.com/share\" class=\"twitter-share-button\">Tweet</a>\n<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>\n\n<!-- Place this tag where you want the +1 button to render. -->\n<div class=\"g-plusone\" data-size=\"medium\"></div>\n\n<!-- Place this tag after the last +1 button tag. -->\n<script type=\"text/javascript\">\nwindow.__gcfg = {\n    lang: 'en-US'\n};\n  (function() {\n    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;\n    po.src = 'https://apis.google.com/js/plusone.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);\n  })();\n</script>\n\n<script type=\"text/javascript\" src=\"http://www.reddit.com/static/button/button1.js\"></script>        </div>\n        <p> Content licensed under the\n           <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\">CC-BY-SA License</a>.\n        </p> \n        <p>Website powered by <a href=\"http://urubu.jandecaluwe.com\">Urubu</a>.</p>\n    </div>\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <!-- <script src=\"https://code.jquery.com/jquery.js\"></script> -->\n    <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n \n\n  </body>\n</html>\n"
  },
  {
    "path": "doc/_build/news/2015-01-28.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>Urubu 0.6 released</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- customizations -->\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- pygments -->\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- icons -->\n    <link href=\"//netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.css\" rel=\"stylesheet\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n<script>\n  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\n  ga('create', 'UA-48968311-3', 'jandecaluwe.com');\n  ga('send', 'pageview');\n\n</script>\n \n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            <li><a href=\"/start.html\">Overview</a></li>\n            <li><a href=\"/manual/\">Manual</a></li>\n            <li><a href=\"http://urubu-quickstart.jandecaluwe.com\">Quickstart</a></li>\n            <li><a href=\"/faq/\">FAQ</a></li>\n          </ul>\n          <form class=\"navbar-form navbar-left\" action=\"/search.html\" role=\"search\">\n            <div class=\"form-group\">\n                <input type=\"text\" required name=\"q\" id=\"tipue_search_input\" class=\"form-control\" placeholder=\"Search\"> \n            </div>\n          </form>\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li class=\"dropdown\">\n              <a href=\"/more/\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">More <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                <li><a href=\"https://github.com/jandecaluwe/urubu\">GitHub repository</a></li>\n                <li><a href=\"/more/sites.html\">Websites powered by Urubu</a></li>\n                <li><a href=\"/more/about.html\">About this site</a></li>\n              </ul>\n            </li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <ol class=\"breadcrumb\">\n    <li><a href=\"/\">Home</a></li>\n      <li><a href=\"/news/\">Newsfeed</a></li>\n      <li class=\"active\">Urubu 0.6 released</li>\n  </ol>\n\n  <div class=\"page-header\">\n    <h1>Urubu 0.6 released</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"col-md-6 content\" role=\"main\">\n    <main>\n      <p>Urubu 0.6 improves on wiki links: now you can link to a location within a page. </p>\n<p>Read <a href=\"http://www.jandecaluwe.com/blog/urubu-0-6.html\">my blog post</a> for more info.</p>\n    </main>\n    </div>\n\n\n  </div>\n\n    <div class=\"footer\">\n        <div style=\"margin: 5px\">\n<a href=\"https://twitter.com/share\" class=\"twitter-share-button\">Tweet</a>\n<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>\n\n<!-- Place this tag where you want the +1 button to render. -->\n<div class=\"g-plusone\" data-size=\"medium\"></div>\n\n<!-- Place this tag after the last +1 button tag. -->\n<script type=\"text/javascript\">\nwindow.__gcfg = {\n    lang: 'en-US'\n};\n  (function() {\n    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;\n    po.src = 'https://apis.google.com/js/plusone.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);\n  })();\n</script>\n\n<script type=\"text/javascript\" src=\"http://www.reddit.com/static/button/button1.js\"></script>        </div>\n        <p> Content licensed under the\n           <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\">CC-BY-SA License</a>.\n        </p> \n        <p>Website powered by <a href=\"http://urubu.jandecaluwe.com\">Urubu</a>.</p>\n    </div>\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <!-- <script src=\"https://code.jquery.com/jquery.js\"></script> -->\n    <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n \n\n  </body>\n</html>\n"
  },
  {
    "path": "doc/_build/news/2015-03-07.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>Urubu 0.7: Python 3 support, baseurl option</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- customizations -->\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- pygments -->\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- icons -->\n    <link href=\"//netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.css\" rel=\"stylesheet\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n<script>\n  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\n  ga('create', 'UA-48968311-3', 'jandecaluwe.com');\n  ga('send', 'pageview');\n\n</script>\n \n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            <li><a href=\"/start.html\">Overview</a></li>\n            <li><a href=\"/manual/\">Manual</a></li>\n            <li><a href=\"http://urubu-quickstart.jandecaluwe.com\">Quickstart</a></li>\n            <li><a href=\"/faq/\">FAQ</a></li>\n          </ul>\n          <form class=\"navbar-form navbar-left\" action=\"/search.html\" role=\"search\">\n            <div class=\"form-group\">\n                <input type=\"text\" required name=\"q\" id=\"tipue_search_input\" class=\"form-control\" placeholder=\"Search\"> \n            </div>\n          </form>\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li class=\"dropdown\">\n              <a href=\"/more/\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">More <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                <li><a href=\"https://github.com/jandecaluwe/urubu\">GitHub repository</a></li>\n                <li><a href=\"/more/sites.html\">Websites powered by Urubu</a></li>\n                <li><a href=\"/more/about.html\">About this site</a></li>\n              </ul>\n            </li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <ol class=\"breadcrumb\">\n    <li><a href=\"/\">Home</a></li>\n      <li><a href=\"/news/\">Newsfeed</a></li>\n      <li class=\"active\">Urubu 0.7: Python 3 support, baseurl option</li>\n  </ol>\n\n  <div class=\"page-header\">\n    <h1>Urubu 0.7: Python 3 support, baseurl option</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"col-md-6 content\" role=\"main\">\n    <main>\n      <p>Urubu 0.7 adds features that make it more flexible to use. </p>\n<p>First, the release adds Python 3 support, from a single codebase.\nYou can use Python 2.7 or Python 3.4.</p>\n<p>Second, there is now a <code>baseurl</code> option to add a prefix to generated local\nURLs. <a href=\"/manual/structure.html#_siteyml\" title=\"Project structure\">More info&nbsp;&raquo;</a>.</p>\n<p>On the other hand, the checklist extension has been removed as it caused issues\nwith reference id resolution.</p>\n    </main>\n    </div>\n\n\n  </div>\n\n    <div class=\"footer\">\n        <div style=\"margin: 5px\">\n<a href=\"https://twitter.com/share\" class=\"twitter-share-button\">Tweet</a>\n<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>\n\n<!-- Place this tag where you want the +1 button to render. -->\n<div class=\"g-plusone\" data-size=\"medium\"></div>\n\n<!-- Place this tag after the last +1 button tag. -->\n<script type=\"text/javascript\">\nwindow.__gcfg = {\n    lang: 'en-US'\n};\n  (function() {\n    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;\n    po.src = 'https://apis.google.com/js/plusone.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);\n  })();\n</script>\n\n<script type=\"text/javascript\" src=\"http://www.reddit.com/static/button/button1.js\"></script>        </div>\n        <p> Content licensed under the\n           <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\">CC-BY-SA License</a>.\n        </p> \n        <p>Website powered by <a href=\"http://urubu.jandecaluwe.com\">Urubu</a>.</p>\n    </div>\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <!-- <script src=\"https://code.jquery.com/jquery.js\"></script> -->\n    <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n \n\n  </body>\n</html>\n"
  },
  {
    "path": "doc/_build/news/2015-11-22.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>Urubu 0.8 released</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- customizations -->\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- pygments -->\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- icons -->\n    <link href=\"//netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.css\" rel=\"stylesheet\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n<script>\n  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\n  ga('create', 'UA-48968311-3', 'jandecaluwe.com');\n  ga('send', 'pageview');\n\n</script>\n \n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            <li><a href=\"/start.html\">Overview</a></li>\n            <li><a href=\"/manual/\">Manual</a></li>\n            <li><a href=\"http://urubu-quickstart.jandecaluwe.com\">Quickstart</a></li>\n            <li><a href=\"/faq/\">FAQ</a></li>\n          </ul>\n          <form class=\"navbar-form navbar-left\" action=\"/search.html\" role=\"search\">\n            <div class=\"form-group\">\n                <input type=\"text\" required name=\"q\" id=\"tipue_search_input\" class=\"form-control\" placeholder=\"Search\"> \n            </div>\n          </form>\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li class=\"dropdown\">\n              <a href=\"/more/\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">More <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                <li><a href=\"https://github.com/jandecaluwe/urubu\">GitHub repository</a></li>\n                <li><a href=\"/more/sites.html\">Websites powered by Urubu</a></li>\n                <li><a href=\"/more/about.html\">About this site</a></li>\n              </ul>\n            </li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <ol class=\"breadcrumb\">\n    <li><a href=\"/\">Home</a></li>\n      <li><a href=\"/news/\">Newsfeed</a></li>\n      <li class=\"active\">Urubu 0.8 released</li>\n  </ol>\n\n  <div class=\"page-header\">\n    <h1>Urubu 0.8 released</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"col-md-6 content\" role=\"main\">\n    <main>\n      <p>Release highlights:</p>\n<ul>\n<li>\n<p>the <code>urubu</code> serve command automatically takes\nthe <code>baseurl</code> option into account (Pull request #27).</p>\n</li>\n<li>\n<p>when an undefined anchor is referred to in a page, a\nwarning is generated, just like for references to undefined pages (Issue #30).</p>\n</li>\n<li>\n<p>the <code>layout</code> attribute can be assigned <code>null</code>. In this\nway the page content can be used by other pages, but no html is generated for\nthe page itself.</p>\n</li>\n</ul>\n<p>In addition, a significant effort was put into development robustness. In\nparticular, a regression test suite has been added. This is based on <code>py.test</code>\nand <code>tox</code>, so that both Python 2.7 and 3.4 are verified. </p>\n    </main>\n    </div>\n\n\n  </div>\n\n    <div class=\"footer\">\n        <div style=\"margin: 5px\">\n<a href=\"https://twitter.com/share\" class=\"twitter-share-button\">Tweet</a>\n<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>\n\n<!-- Place this tag where you want the +1 button to render. -->\n<div class=\"g-plusone\" data-size=\"medium\"></div>\n\n<!-- Place this tag after the last +1 button tag. -->\n<script type=\"text/javascript\">\nwindow.__gcfg = {\n    lang: 'en-US'\n};\n  (function() {\n    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;\n    po.src = 'https://apis.google.com/js/plusone.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);\n  })();\n</script>\n\n<script type=\"text/javascript\" src=\"http://www.reddit.com/static/button/button1.js\"></script>        </div>\n        <p> Content licensed under the\n           <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\">CC-BY-SA License</a>.\n        </p> \n        <p>Website powered by <a href=\"http://urubu.jandecaluwe.com\">Urubu</a>.</p>\n    </div>\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <!-- <script src=\"https://code.jquery.com/jquery.js\"></script> -->\n    <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n \n\n  </body>\n</html>\n"
  },
  {
    "path": "doc/_build/news/2015-12-15.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>Urubu 0.9.0 released</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- customizations -->\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- pygments -->\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- icons -->\n    <link href=\"//netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.css\" rel=\"stylesheet\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n<script>\n  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\n  ga('create', 'UA-48968311-3', 'jandecaluwe.com');\n  ga('send', 'pageview');\n\n</script>\n \n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            <li><a href=\"/start.html\">Overview</a></li>\n            <li><a href=\"/manual/\">Manual</a></li>\n            <li><a href=\"http://urubu-quickstart.jandecaluwe.com\">Quickstart</a></li>\n            <li><a href=\"/faq/\">FAQ</a></li>\n          </ul>\n          <form class=\"navbar-form navbar-left\" action=\"/search.html\" role=\"search\">\n            <div class=\"form-group\">\n                <input type=\"text\" required name=\"q\" id=\"tipue_search_input\" class=\"form-control\" placeholder=\"Search\"> \n            </div>\n          </form>\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li class=\"dropdown\">\n              <a href=\"/more/\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">More <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                <li><a href=\"https://github.com/jandecaluwe/urubu\">GitHub repository</a></li>\n                <li><a href=\"/more/sites.html\">Websites powered by Urubu</a></li>\n                <li><a href=\"/more/about.html\">About this site</a></li>\n              </ul>\n            </li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <ol class=\"breadcrumb\">\n    <li><a href=\"/\">Home</a></li>\n      <li><a href=\"/news/\">Newsfeed</a></li>\n      <li class=\"active\">Urubu 0.9.0 released</li>\n  </ol>\n\n  <div class=\"page-header\">\n    <h1>Urubu 0.9.0 released</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"col-md-6 content\" role=\"main\">\n    <main>\n      <p>This release adds support for Tipue Search, an open source search solution\nbased on Javascript in the browser.</p>\n<p>Read more in the chapter <a href=\"/manual/search.html\" title=\"Adding Search\">Adding Search</a> in the manual.</p>\n    </main>\n    </div>\n\n\n  </div>\n\n    <div class=\"footer\">\n        <div style=\"margin: 5px\">\n<a href=\"https://twitter.com/share\" class=\"twitter-share-button\">Tweet</a>\n<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>\n\n<!-- Place this tag where you want the +1 button to render. -->\n<div class=\"g-plusone\" data-size=\"medium\"></div>\n\n<!-- Place this tag after the last +1 button tag. -->\n<script type=\"text/javascript\">\nwindow.__gcfg = {\n    lang: 'en-US'\n};\n  (function() {\n    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;\n    po.src = 'https://apis.google.com/js/plusone.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);\n  })();\n</script>\n\n<script type=\"text/javascript\" src=\"http://www.reddit.com/static/button/button1.js\"></script>        </div>\n        <p> Content licensed under the\n           <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\">CC-BY-SA License</a>.\n        </p> \n        <p>Website powered by <a href=\"http://urubu.jandecaluwe.com\">Urubu</a>.</p>\n    </div>\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <!-- <script src=\"https://code.jquery.com/jquery.js\"></script> -->\n    <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n \n\n  </body>\n</html>\n"
  },
  {
    "path": "doc/_build/news/2016-01-01.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>Urubu 1.0.0 released</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- customizations -->\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- pygments -->\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- icons -->\n    <link href=\"//netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.css\" rel=\"stylesheet\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n<script>\n  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\n  ga('create', 'UA-48968311-3', 'jandecaluwe.com');\n  ga('send', 'pageview');\n\n</script>\n \n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            <li><a href=\"/start.html\">Overview</a></li>\n            <li><a href=\"/manual/\">Manual</a></li>\n            <li><a href=\"http://urubu-quickstart.jandecaluwe.com\">Quickstart</a></li>\n            <li><a href=\"/faq/\">FAQ</a></li>\n          </ul>\n          <form class=\"navbar-form navbar-left\" action=\"/search.html\" role=\"search\">\n            <div class=\"form-group\">\n                <input type=\"text\" required name=\"q\" id=\"tipue_search_input\" class=\"form-control\" placeholder=\"Search\"> \n            </div>\n          </form>\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li class=\"dropdown\">\n              <a href=\"/more/\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">More <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                <li><a href=\"https://github.com/jandecaluwe/urubu\">GitHub repository</a></li>\n                <li><a href=\"/more/sites.html\">Websites powered by Urubu</a></li>\n                <li><a href=\"/more/about.html\">About this site</a></li>\n              </ul>\n            </li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <ol class=\"breadcrumb\">\n    <li><a href=\"/\">Home</a></li>\n      <li><a href=\"/news/\">Newsfeed</a></li>\n      <li class=\"active\">Urubu 1.0.0 released</li>\n  </ol>\n\n  <div class=\"page-header\">\n    <h1>Urubu 1.0.0 released</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"col-md-6 content\" role=\"main\">\n    <main>\n      <p>This release adds support for the <code>process_info</code> Python hook.  This hook\nprovides a powerful way to assist in templating. Basically, it provides full\nPython power to inspect, verify, modify, and add page attributes. For example,\nyou can use it to define a default <code>layout</code>, or a specific <code>layout</code> \nfor pages in a certain directory.</p>\n<p>Read more in the manual: <a href=\"/manual/hooks.html#the-process_info-hook\" title=\"Python hooks\">The process_info hook</a>.</p>\n<p>There is also a new <code>keep_files</code> configuration attribute, that lets you\npreserve files that would otherwise be ignored.  See the\n<a href=\"/manual/structure.html#_siteyml\" title=\"Project structure\">documentation</a>.</p>\n    </main>\n    </div>\n\n\n  </div>\n\n    <div class=\"footer\">\n        <div style=\"margin: 5px\">\n<a href=\"https://twitter.com/share\" class=\"twitter-share-button\">Tweet</a>\n<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>\n\n<!-- Place this tag where you want the +1 button to render. -->\n<div class=\"g-plusone\" data-size=\"medium\"></div>\n\n<!-- Place this tag after the last +1 button tag. -->\n<script type=\"text/javascript\">\nwindow.__gcfg = {\n    lang: 'en-US'\n};\n  (function() {\n    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;\n    po.src = 'https://apis.google.com/js/plusone.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);\n  })();\n</script>\n\n<script type=\"text/javascript\" src=\"http://www.reddit.com/static/button/button1.js\"></script>        </div>\n        <p> Content licensed under the\n           <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\">CC-BY-SA License</a>.\n        </p> \n        <p>Website powered by <a href=\"http://urubu.jandecaluwe.com\">Urubu</a>.</p>\n    </div>\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <!-- <script src=\"https://code.jquery.com/jquery.js\"></script> -->\n    <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n \n\n  </body>\n</html>\n"
  },
  {
    "path": "doc/_build/news/2016-01-10.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>Urubu 1.1.0 released</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- customizations -->\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- pygments -->\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- icons -->\n    <link href=\"//netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.css\" rel=\"stylesheet\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n<script>\n  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\n  ga('create', 'UA-48968311-3', 'jandecaluwe.com');\n  ga('send', 'pageview');\n\n</script>\n \n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            <li><a href=\"/start.html\">Overview</a></li>\n            <li><a href=\"/manual/\">Manual</a></li>\n            <li><a href=\"http://urubu-quickstart.jandecaluwe.com\">Quickstart</a></li>\n            <li><a href=\"/faq/\">FAQ</a></li>\n          </ul>\n          <form class=\"navbar-form navbar-left\" action=\"/search.html\" role=\"search\">\n            <div class=\"form-group\">\n                <input type=\"text\" required name=\"q\" id=\"tipue_search_input\" class=\"form-control\" placeholder=\"Search\"> \n            </div>\n          </form>\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li class=\"dropdown\">\n              <a href=\"/more/\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">More <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                <li><a href=\"https://github.com/jandecaluwe/urubu\">GitHub repository</a></li>\n                <li><a href=\"/more/sites.html\">Websites powered by Urubu</a></li>\n                <li><a href=\"/more/about.html\">About this site</a></li>\n              </ul>\n            </li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <ol class=\"breadcrumb\">\n    <li><a href=\"/\">Home</a></li>\n      <li><a href=\"/news/\">Newsfeed</a></li>\n      <li class=\"active\">Urubu 1.1.0 released</li>\n  </ol>\n\n  <div class=\"page-header\">\n    <h1>Urubu 1.1.0 released</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"col-md-6 content\" role=\"main\">\n    <main>\n      <p>This release adds experimental support for the <code>&lt;mark</code>&gt; tag.</p>\n<p>Read more in the manual: <a href=\"/manual/extensions.html#support-for-the-mark-tag\" title=\"Markdown extensions\">Support for the mark tag</a>\nand in <a href=\"http://www.jandecaluwe.com/blog/mark-tag-support.html\">this blog post</a>.</p>\n    </main>\n    </div>\n\n\n  </div>\n\n    <div class=\"footer\">\n        <div style=\"margin: 5px\">\n<a href=\"https://twitter.com/share\" class=\"twitter-share-button\">Tweet</a>\n<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>\n\n<!-- Place this tag where you want the +1 button to render. -->\n<div class=\"g-plusone\" data-size=\"medium\"></div>\n\n<!-- Place this tag after the last +1 button tag. -->\n<script type=\"text/javascript\">\nwindow.__gcfg = {\n    lang: 'en-US'\n};\n  (function() {\n    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;\n    po.src = 'https://apis.google.com/js/plusone.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);\n  })();\n</script>\n\n<script type=\"text/javascript\" src=\"http://www.reddit.com/static/button/button1.js\"></script>        </div>\n        <p> Content licensed under the\n           <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\">CC-BY-SA License</a>.\n        </p> \n        <p>Website powered by <a href=\"http://urubu.jandecaluwe.com\">Urubu</a>.</p>\n    </div>\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <!-- <script src=\"https://code.jquery.com/jquery.js\"></script> -->\n    <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n \n\n  </body>\n</html>\n"
  },
  {
    "path": "doc/_build/news/2016-02-12.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>Urubu 1.2.0 released</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- customizations -->\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- pygments -->\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- icons -->\n    <link href=\"//netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.css\" rel=\"stylesheet\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n<script>\n  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\n  ga('create', 'UA-48968311-3', 'jandecaluwe.com');\n  ga('send', 'pageview');\n\n</script>\n \n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            <li><a href=\"/start.html\">Overview</a></li>\n            <li><a href=\"/manual/\">Manual</a></li>\n            <li><a href=\"http://urubu-quickstart.jandecaluwe.com\">Quickstart</a></li>\n            <li><a href=\"/faq/\">FAQ</a></li>\n          </ul>\n          <form class=\"navbar-form navbar-left\" action=\"/search.html\" role=\"search\">\n            <div class=\"form-group\">\n                <input type=\"text\" required name=\"q\" id=\"tipue_search_input\" class=\"form-control\" placeholder=\"Search\"> \n            </div>\n          </form>\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li class=\"dropdown\">\n              <a href=\"/more/\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">More <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                <li><a href=\"https://github.com/jandecaluwe/urubu\">GitHub repository</a></li>\n                <li><a href=\"/more/sites.html\">Websites powered by Urubu</a></li>\n                <li><a href=\"/more/about.html\">About this site</a></li>\n              </ul>\n            </li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <ol class=\"breadcrumb\">\n    <li><a href=\"/\">Home</a></li>\n      <li><a href=\"/news/\">Newsfeed</a></li>\n      <li class=\"active\">Urubu 1.2.0 released</li>\n  </ol>\n\n  <div class=\"page-header\">\n    <h1>Urubu 1.2.0 released</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"col-md-6 content\" role=\"main\">\n    <main>\n      <p>The highlight of this release is support for <a href=\"/manual/templating-in-pages.html\" title=\"Templating constructs in pages\">Templating constructs in pages</a>.</p>\n    </main>\n    </div>\n\n\n  </div>\n\n    <div class=\"footer\">\n        <div style=\"margin: 5px\">\n<a href=\"https://twitter.com/share\" class=\"twitter-share-button\">Tweet</a>\n<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>\n\n<!-- Place this tag where you want the +1 button to render. -->\n<div class=\"g-plusone\" data-size=\"medium\"></div>\n\n<!-- Place this tag after the last +1 button tag. -->\n<script type=\"text/javascript\">\nwindow.__gcfg = {\n    lang: 'en-US'\n};\n  (function() {\n    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;\n    po.src = 'https://apis.google.com/js/plusone.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);\n  })();\n</script>\n\n<script type=\"text/javascript\" src=\"http://www.reddit.com/static/button/button1.js\"></script>        </div>\n        <p> Content licensed under the\n           <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\">CC-BY-SA License</a>.\n        </p> \n        <p>Website powered by <a href=\"http://urubu.jandecaluwe.com\">Urubu</a>.</p>\n    </div>\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <!-- <script src=\"https://code.jquery.com/jquery.js\"></script> -->\n    <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n \n\n  </body>\n</html>\n"
  },
  {
    "path": "doc/_build/news/2016-11-14.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>Urubu 1.3.0 released</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- customizations -->\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- pygments -->\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- icons -->\n    <link href=\"//netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.css\" rel=\"stylesheet\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n<script>\n  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\n  ga('create', 'UA-48968311-3', 'jandecaluwe.com');\n  ga('send', 'pageview');\n\n</script>\n \n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            <li><a href=\"/start.html\">Overview</a></li>\n            <li><a href=\"/manual/\">Manual</a></li>\n            <li><a href=\"http://urubu-quickstart.jandecaluwe.com\">Quickstart</a></li>\n            <li><a href=\"/faq/\">FAQ</a></li>\n          </ul>\n          <form class=\"navbar-form navbar-left\" action=\"/search.html\" role=\"search\">\n            <div class=\"form-group\">\n                <input type=\"text\" required name=\"q\" id=\"tipue_search_input\" class=\"form-control\" placeholder=\"Search\"> \n            </div>\n          </form>\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li class=\"dropdown\">\n              <a href=\"/more/\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">More <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                <li><a href=\"https://github.com/jandecaluwe/urubu\">GitHub repository</a></li>\n                <li><a href=\"/more/sites.html\">Websites powered by Urubu</a></li>\n                <li><a href=\"/more/about.html\">About this site</a></li>\n              </ul>\n            </li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <ol class=\"breadcrumb\">\n    <li><a href=\"/\">Home</a></li>\n      <li><a href=\"/news/\">Newsfeed</a></li>\n      <li class=\"active\">Urubu 1.3.0 released</li>\n  </ol>\n\n  <div class=\"page-header\">\n    <h1>Urubu 1.3.0 released</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"col-md-6 content\" role=\"main\">\n    <main>\n      <p>Highlights:</p>\n<ul>\n<li>\n<p>Add posibility to override output filename. (#51). See the <code>saveas</code> attribute\nin the <a href=\"/manual/structure.html#content-files\" title=\"Project structure\">manual</a>.\nAn example usage, see <a href=\"/faq/sitemap.html\" title=\"How do I make a sitemap?\">How do I make a sitemap?</a>.</p>\n</li>\n<li>\n<p>The <code>urubu serve</code> command is more secure.  This is transparent to the user\n(#49).</p>\n</li>\n<li>\n<p>Added option for jinja2 to fail on undefined vars (#47). \nSee the <code>strict_undefined</code> attribute in the <a href=\"/manual/structure.html#_siteyml\" title=\"Project structure\">manual</a>.</p>\n</li>\n</ul>\n    </main>\n    </div>\n\n\n  </div>\n\n    <div class=\"footer\">\n        <div style=\"margin: 5px\">\n<a href=\"https://twitter.com/share\" class=\"twitter-share-button\">Tweet</a>\n<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>\n\n<!-- Place this tag where you want the +1 button to render. -->\n<div class=\"g-plusone\" data-size=\"medium\"></div>\n\n<!-- Place this tag after the last +1 button tag. -->\n<script type=\"text/javascript\">\nwindow.__gcfg = {\n    lang: 'en-US'\n};\n  (function() {\n    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;\n    po.src = 'https://apis.google.com/js/plusone.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);\n  })();\n</script>\n\n<script type=\"text/javascript\" src=\"http://www.reddit.com/static/button/button1.js\"></script>        </div>\n        <p> Content licensed under the\n           <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\">CC-BY-SA License</a>.\n        </p> \n        <p>Website powered by <a href=\"http://urubu.jandecaluwe.com\">Urubu</a>.</p>\n    </div>\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <!-- <script src=\"https://code.jquery.com/jquery.js\"></script> -->\n    <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n \n\n  </body>\n</html>\n"
  },
  {
    "path": "doc/_build/news/2018-08-15.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>Urubu 1.3.1 released</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- customizations -->\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- pygments -->\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- icons -->\n    <link href=\"//netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.css\" rel=\"stylesheet\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n<script>\n  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\n  ga('create', 'UA-48968311-3', 'jandecaluwe.com');\n  ga('send', 'pageview');\n\n</script>\n \n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            <li><a href=\"/start.html\">Overview</a></li>\n            <li><a href=\"/manual/\">Manual</a></li>\n            <li><a href=\"http://urubu-quickstart.jandecaluwe.com\">Quickstart</a></li>\n            <li><a href=\"/faq/\">FAQ</a></li>\n          </ul>\n          <form class=\"navbar-form navbar-left\" action=\"/search.html\" role=\"search\">\n            <div class=\"form-group\">\n                <input type=\"text\" required name=\"q\" id=\"tipue_search_input\" class=\"form-control\" placeholder=\"Search\"> \n            </div>\n          </form>\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li class=\"dropdown\">\n              <a href=\"/more/\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">More <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                <li><a href=\"https://github.com/jandecaluwe/urubu\">GitHub repository</a></li>\n                <li><a href=\"/more/sites.html\">Websites powered by Urubu</a></li>\n                <li><a href=\"/more/about.html\">About this site</a></li>\n              </ul>\n            </li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <ol class=\"breadcrumb\">\n    <li><a href=\"/\">Home</a></li>\n      <li><a href=\"/news/\">Newsfeed</a></li>\n      <li class=\"active\">Urubu 1.3.1 released</li>\n  </ol>\n\n  <div class=\"page-header\">\n    <h1>Urubu 1.3.1 released</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"col-md-6 content\" role=\"main\">\n    <main>\n      <p>Maintenance release: bug fixes and small enhancements to existing features.\nSee the git log and the manual.</p>\n    </main>\n    </div>\n\n\n  </div>\n\n    <div class=\"footer\">\n        <div style=\"margin: 5px\">\n<a href=\"https://twitter.com/share\" class=\"twitter-share-button\">Tweet</a>\n<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>\n\n<!-- Place this tag where you want the +1 button to render. -->\n<div class=\"g-plusone\" data-size=\"medium\"></div>\n\n<!-- Place this tag after the last +1 button tag. -->\n<script type=\"text/javascript\">\nwindow.__gcfg = {\n    lang: 'en-US'\n};\n  (function() {\n    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;\n    po.src = 'https://apis.google.com/js/plusone.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);\n  })();\n</script>\n\n<script type=\"text/javascript\" src=\"http://www.reddit.com/static/button/button1.js\"></script>        </div>\n        <p> Content licensed under the\n           <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\">CC-BY-SA License</a>.\n        </p> \n        <p>Website powered by <a href=\"http://urubu.jandecaluwe.com\">Urubu</a>.</p>\n    </div>\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <!-- <script src=\"https://code.jquery.com/jquery.js\"></script> -->\n    <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n \n\n  </body>\n</html>\n"
  },
  {
    "path": "doc/_build/news/2024-12-30.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>Urubu 1.4.0 released</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- customizations -->\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- pygments -->\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- icons -->\n    <link href=\"//netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.css\" rel=\"stylesheet\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n<script>\n  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\n  ga('create', 'UA-48968311-3', 'jandecaluwe.com');\n  ga('send', 'pageview');\n\n</script>\n \n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            <li><a href=\"/start.html\">Overview</a></li>\n            <li><a href=\"/manual/\">Manual</a></li>\n            <li><a href=\"http://urubu-quickstart.jandecaluwe.com\">Quickstart</a></li>\n            <li><a href=\"/faq/\">FAQ</a></li>\n          </ul>\n          <form class=\"navbar-form navbar-left\" action=\"/search.html\" role=\"search\">\n            <div class=\"form-group\">\n                <input type=\"text\" required name=\"q\" id=\"tipue_search_input\" class=\"form-control\" placeholder=\"Search\"> \n            </div>\n          </form>\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li class=\"dropdown\">\n              <a href=\"/more/\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">More <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                <li><a href=\"https://github.com/jandecaluwe/urubu\">GitHub repository</a></li>\n                <li><a href=\"/more/sites.html\">Websites powered by Urubu</a></li>\n                <li><a href=\"/more/about.html\">About this site</a></li>\n              </ul>\n            </li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <ol class=\"breadcrumb\">\n    <li><a href=\"/\">Home</a></li>\n      <li><a href=\"/news/\">Newsfeed</a></li>\n      <li class=\"active\">Urubu 1.4.0 released</li>\n  </ol>\n\n  <div class=\"page-header\">\n    <h1>Urubu 1.4.0 released</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"col-md-6 content\" role=\"main\">\n    <main>\n      <p>Python3 only.</p>\n    </main>\n    </div>\n\n\n  </div>\n\n    <div class=\"footer\">\n        <div style=\"margin: 5px\">\n<a href=\"https://twitter.com/share\" class=\"twitter-share-button\">Tweet</a>\n<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>\n\n<!-- Place this tag where you want the +1 button to render. -->\n<div class=\"g-plusone\" data-size=\"medium\"></div>\n\n<!-- Place this tag after the last +1 button tag. -->\n<script type=\"text/javascript\">\nwindow.__gcfg = {\n    lang: 'en-US'\n};\n  (function() {\n    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;\n    po.src = 'https://apis.google.com/js/plusone.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);\n  })();\n</script>\n\n<script type=\"text/javascript\" src=\"http://www.reddit.com/static/button/button1.js\"></script>        </div>\n        <p> Content licensed under the\n           <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\">CC-BY-SA License</a>.\n        </p> \n        <p>Website powered by <a href=\"http://urubu.jandecaluwe.com\">Urubu</a>.</p>\n    </div>\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <!-- <script src=\"https://code.jquery.com/jquery.js\"></script> -->\n    <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n \n\n  </body>\n</html>\n"
  },
  {
    "path": "doc/_build/news/2026-03-30.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>Urubu 1.4.1 released</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- customizations -->\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- pygments -->\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- icons -->\n    <link href=\"//netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.css\" rel=\"stylesheet\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n<script>\n  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\n  ga('create', 'UA-48968311-3', 'jandecaluwe.com');\n  ga('send', 'pageview');\n\n</script>\n \n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            <li><a href=\"/start.html\">Overview</a></li>\n            <li><a href=\"/manual/\">Manual</a></li>\n            <li><a href=\"http://urubu-quickstart.jandecaluwe.com\">Quickstart</a></li>\n            <li><a href=\"/faq/\">FAQ</a></li>\n          </ul>\n          <form class=\"navbar-form navbar-left\" action=\"/search.html\" role=\"search\">\n            <div class=\"form-group\">\n                <input type=\"text\" required name=\"q\" id=\"tipue_search_input\" class=\"form-control\" placeholder=\"Search\"> \n            </div>\n          </form>\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li class=\"dropdown\">\n              <a href=\"/more/\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">More <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                <li><a href=\"https://github.com/jandecaluwe/urubu\">GitHub repository</a></li>\n                <li><a href=\"/more/sites.html\">Websites powered by Urubu</a></li>\n                <li><a href=\"/more/about.html\">About this site</a></li>\n              </ul>\n            </li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <ol class=\"breadcrumb\">\n    <li><a href=\"/\">Home</a></li>\n      <li><a href=\"/news/\">Newsfeed</a></li>\n      <li class=\"active\">Urubu 1.4.1 released</li>\n  </ol>\n\n  <div class=\"page-header\">\n    <h1>Urubu 1.4.1 released</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"col-md-6 content\" role=\"main\">\n    <main>\n      <p>Maintenance release: added test dependencies to setup.py, removed Python 2\ncompatibility layer, and relaxed the Markdown version pin to &gt;= 3.0.</p>\n    </main>\n    </div>\n\n\n  </div>\n\n    <div class=\"footer\">\n        <div style=\"margin: 5px\">\n<a href=\"https://twitter.com/share\" class=\"twitter-share-button\">Tweet</a>\n<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>\n\n<!-- Place this tag where you want the +1 button to render. -->\n<div class=\"g-plusone\" data-size=\"medium\"></div>\n\n<!-- Place this tag after the last +1 button tag. -->\n<script type=\"text/javascript\">\nwindow.__gcfg = {\n    lang: 'en-US'\n};\n  (function() {\n    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;\n    po.src = 'https://apis.google.com/js/plusone.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);\n  })();\n</script>\n\n<script type=\"text/javascript\" src=\"http://www.reddit.com/static/button/button1.js\"></script>        </div>\n        <p> Content licensed under the\n           <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\">CC-BY-SA License</a>.\n        </p> \n        <p>Website powered by <a href=\"http://urubu.jandecaluwe.com\">Urubu</a>.</p>\n    </div>\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <!-- <script src=\"https://code.jquery.com/jquery.js\"></script> -->\n    <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n \n\n  </body>\n</html>\n"
  },
  {
    "path": "doc/_build/news/index.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>Newsfeed</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- customizations -->\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- pygments -->\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- icons -->\n    <link href=\"//netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.css\" rel=\"stylesheet\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n<script>\n  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\n  ga('create', 'UA-48968311-3', 'jandecaluwe.com');\n  ga('send', 'pageview');\n\n</script>\n \n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            <li><a href=\"/start.html\">Overview</a></li>\n            <li><a href=\"/manual/\">Manual</a></li>\n            <li><a href=\"http://urubu-quickstart.jandecaluwe.com\">Quickstart</a></li>\n            <li><a href=\"/faq/\">FAQ</a></li>\n          </ul>\n          <form class=\"navbar-form navbar-left\" action=\"/search.html\" role=\"search\">\n            <div class=\"form-group\">\n                <input type=\"text\" required name=\"q\" id=\"tipue_search_input\" class=\"form-control\" placeholder=\"Search\"> \n            </div>\n          </form>\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li class=\"dropdown\">\n              <a href=\"/more/\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">More <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                <li><a href=\"https://github.com/jandecaluwe/urubu\">GitHub repository</a></li>\n                <li><a href=\"/more/sites.html\">Websites powered by Urubu</a></li>\n                <li><a href=\"/more/about.html\">About this site</a></li>\n              </ul>\n            </li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n    <div class=\"row\">\n\n        <div class=\"col-md-8 role=\"main\">\n                <div> \n                  <h3>30-Mar-2026&nbsp;&nbsp;Urubu 1.4.1 released</h3>\n                </div>\n                <div>\n                    <p>Maintenance release: added test dependencies to setup.py, removed Python 2\ncompatibility layer, and relaxed the Markdown version pin to &gt;= 3.0.</p>\n                    <hr>\n                </div>\n                <div> \n                  <h3>30-Dec-2024&nbsp;&nbsp;Urubu 1.4.0 released</h3>\n                </div>\n                <div>\n                    <p>Python3 only.</p>\n                    <hr>\n                </div>\n                <div> \n                  <h3>15-Aug-2018&nbsp;&nbsp;Urubu 1.3.1 released</h3>\n                </div>\n                <div>\n                    <p>Maintenance release: bug fixes and small enhancements to existing features.\nSee the git log and the manual.</p>\n                    <hr>\n                </div>\n                <div> \n                  <h3>14-Nov-2016&nbsp;&nbsp;Urubu 1.3.0 released</h3>\n                </div>\n                <div>\n                    <p>Highlights:</p>\n<ul>\n<li>\n<p>Add posibility to override output filename. (#51). See the <code>saveas</code> attribute\nin the <a href=\"/manual/structure.html#content-files\" title=\"Project structure\">manual</a>.\nAn example usage, see <a href=\"/faq/sitemap.html\" title=\"How do I make a sitemap?\">How do I make a sitemap?</a>.</p>\n</li>\n<li>\n<p>The <code>urubu serve</code> command is more secure.  This is transparent to the user\n(#49).</p>\n</li>\n<li>\n<p>Added option for jinja2 to fail on undefined vars (#47). \nSee the <code>strict_undefined</code> attribute in the <a href=\"/manual/structure.html#_siteyml\" title=\"Project structure\">manual</a>.</p>\n</li>\n</ul>\n                    <hr>\n                </div>\n                <div> \n                  <h3>12-Feb-2016&nbsp;&nbsp;Urubu 1.2.0 released</h3>\n                </div>\n                <div>\n                    <p>The highlight of this release is support for <a href=\"/manual/templating-in-pages.html\" title=\"Templating constructs in pages\">Templating constructs in pages</a>.</p>\n                    <hr>\n                </div>\n                <div> \n                  <h3>10-Jan-2016&nbsp;&nbsp;Urubu 1.1.0 released</h3>\n                </div>\n                <div>\n                    <p>This release adds experimental support for the <code>&lt;mark</code>&gt; tag.</p>\n<p>Read more in the manual: <a href=\"/manual/extensions.html#support-for-the-mark-tag\" title=\"Markdown extensions\">Support for the mark tag</a>\nand in <a href=\"http://www.jandecaluwe.com/blog/mark-tag-support.html\">this blog post</a>.</p>\n                    <hr>\n                </div>\n                <div> \n                  <h3>01-Jan-2016&nbsp;&nbsp;Urubu 1.0.0 released</h3>\n                </div>\n                <div>\n                    <p>This release adds support for the <code>process_info</code> Python hook.  This hook\nprovides a powerful way to assist in templating. Basically, it provides full\nPython power to inspect, verify, modify, and add page attributes. For example,\nyou can use it to define a default <code>layout</code>, or a specific <code>layout</code> \nfor pages in a certain directory.</p>\n<p>Read more in the manual: <a href=\"/manual/hooks.html#the-process_info-hook\" title=\"Python hooks\">The process_info hook</a>.</p>\n<p>There is also a new <code>keep_files</code> configuration attribute, that lets you\npreserve files that would otherwise be ignored.  See the\n<a href=\"/manual/structure.html#_siteyml\" title=\"Project structure\">documentation</a>.</p>\n                    <hr>\n                </div>\n                <div> \n                  <h3>15-Dec-2015&nbsp;&nbsp;Urubu 0.9.0 released</h3>\n                </div>\n                <div>\n                    <p>This release adds support for Tipue Search, an open source search solution\nbased on Javascript in the browser.</p>\n<p>Read more in the chapter <a href=\"/manual/search.html\" title=\"Adding Search\">Adding Search</a> in the manual.</p>\n                    <hr>\n                </div>\n                <div> \n                  <h3>22-Nov-2015&nbsp;&nbsp;Urubu 0.8 released</h3>\n                </div>\n                <div>\n                    <p>Release highlights:</p>\n<ul>\n<li>\n<p>the <code>urubu</code> serve command automatically takes\nthe <code>baseurl</code> option into account (Pull request #27).</p>\n</li>\n<li>\n<p>when an undefined anchor is referred to in a page, a\nwarning is generated, just like for references to undefined pages (Issue #30).</p>\n</li>\n<li>\n<p>the <code>layout</code> attribute can be assigned <code>null</code>. In this\nway the page content can be used by other pages, but no html is generated for\nthe page itself.</p>\n</li>\n</ul>\n<p>In addition, a significant effort was put into development robustness. In\nparticular, a regression test suite has been added. This is based on <code>py.test</code>\nand <code>tox</code>, so that both Python 2.7 and 3.4 are verified. </p>\n                    <hr>\n                </div>\n                <div> \n                  <h3>07-Mar-2015&nbsp;&nbsp;Urubu 0.7: Python 3 support, baseurl option</h3>\n                </div>\n                <div>\n                    <p>Urubu 0.7 adds features that make it more flexible to use. </p>\n<p>First, the release adds Python 3 support, from a single codebase.\nYou can use Python 2.7 or Python 3.4.</p>\n<p>Second, there is now a <code>baseurl</code> option to add a prefix to generated local\nURLs. <a href=\"/manual/structure.html#_siteyml\" title=\"Project structure\">More info&nbsp;&raquo;</a>.</p>\n<p>On the other hand, the checklist extension has been removed as it caused issues\nwith reference id resolution.</p>\n                    <hr>\n                </div>\n                <div> \n                  <h3>28-Jan-2015&nbsp;&nbsp;Urubu 0.6 released</h3>\n                </div>\n                <div>\n                    <p>Urubu 0.6 improves on wiki links: now you can link to a location within a page. </p>\n<p>Read <a href=\"http://www.jandecaluwe.com/blog/urubu-0-6.html\">my blog post</a> for more info.</p>\n                    <hr>\n                </div>\n                <div> \n                  <h3>08-Sep-2014&nbsp;&nbsp;Urubu 0.5 released</h3>\n                </div>\n                <div>\n                    <p>Urubu 0.5 introduces tag support. </p>\n<p>Read <a href=\"http://www.jandecaluwe.com/blog/tag_support_urubu.html\">my blog post</a> for an introduction.</p>\n                    <hr>\n                </div>\n                <div> \n                  <h3>25-May-2014&nbsp;&nbsp;Urubu 0.4 and Urubu Quickstart released</h3>\n                </div>\n                <div>\n                    <p>Release features: </p>\n<ul>\n<li>Run <code>urubu serve</code> from the top-level project directory. </li>\n<li><a href=\"/manual/structure.html\" title=\"Project structure\">Programmable file extensions</a> for site pages</li>\n<li>Introducing <a href=\"http://urubu-quickstart.jandecaluwe.com\" title=\"Urubu Quickstart\">Urubu Quickstart</a>: a quick way to set up a new Urubu project.</li>\n</ul>\n                    <hr>\n                </div>\n                <div> \n                  <h3>18-Mar-2014&nbsp;&nbsp;Urubu 0.3.1 released</h3>\n                </div>\n                <div>\n                    <p>This is a bug-fix release.</p>\n                    <hr>\n                </div>\n                <div> \n                  <h3>27-Feb-2014&nbsp;&nbsp;Urubu 0.3 released</h3>\n                </div>\n                <div>\n                    <p>This release adds markdown support for front-matter attributes.\n<a href=\"/manual/structure.html#markdown-in-attributes\">Read more&nbsp;&raquo;</a></p>\n                    <hr>\n                </div>\n                <div> \n                  <h3>15-Feb-2014&nbsp;&nbsp;Urubu 0.2.1 released</h3>\n                </div>\n                <div>\n                    <p>This is a bug fix release.</p>\n                    <hr>\n                </div>\n                <div> \n                  <h3>22-Jan-2014&nbsp;&nbsp;Urubu 0.2 released</h3>\n                </div>\n                <div>\n                    <p>This release adds support for github-style task lists.</p>\n                    <hr>\n                </div>\n                <div> \n                  <h3>12-Jan-2014&nbsp;&nbsp;Urubu 0.1 released</h3>\n                </div>\n                <div>\n                    <p>Introducing Urubu, a Python-based micro CMS for static websites.\nRead about <a href=\"http://www.jandecaluwe.com/blog/i-dont-like-blogs.html\">the rationale behind it</a>.</p>\n                    <hr>\n                </div>\n        </div>\n\n    </div>\n\n    <div class=\"footer\">\n        <div style=\"margin: 5px\">\n<a href=\"https://twitter.com/share\" class=\"twitter-share-button\">Tweet</a>\n<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>\n\n<!-- Place this tag where you want the +1 button to render. -->\n<div class=\"g-plusone\" data-size=\"medium\"></div>\n\n<!-- Place this tag after the last +1 button tag. -->\n<script type=\"text/javascript\">\nwindow.__gcfg = {\n    lang: 'en-US'\n};\n  (function() {\n    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;\n    po.src = 'https://apis.google.com/js/plusone.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);\n  })();\n</script>\n\n<script type=\"text/javascript\" src=\"http://www.reddit.com/static/button/button1.js\"></script>        </div>\n        <p> Content licensed under the\n           <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\">CC-BY-SA License</a>.\n        </p> \n        <p>Website powered by <a href=\"http://urubu.jandecaluwe.com\">Urubu</a>.</p>\n    </div>\n\n\n</div \n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <!-- <script src=\"https://code.jquery.com/jquery.js\"></script> -->\n    <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n \n\n  </body>\n</html>\n"
  },
  {
    "path": "doc/_build/search.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>Search results</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- customizations -->\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- pygments -->\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- icons -->\n    <link href=\"//netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.css\" rel=\"stylesheet\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n<script>\n  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\n  ga('create', 'UA-48968311-3', 'jandecaluwe.com');\n  ga('send', 'pageview');\n\n</script>\n<link href=\"tipuesearch/tipuesearch.css\" rel=\"stylesheet\">\n \n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            <li><a href=\"/start.html\">Overview</a></li>\n            <li><a href=\"/manual/\">Manual</a></li>\n            <li><a href=\"http://urubu-quickstart.jandecaluwe.com\">Quickstart</a></li>\n            <li><a href=\"/faq/\">FAQ</a></li>\n          </ul>\n          <form class=\"navbar-form navbar-left\" action=\"/search.html\" role=\"search\">\n            <div class=\"form-group\">\n                <input type=\"text\" required name=\"q\" id=\"tipue_search_input\" class=\"form-control\" placeholder=\"Search\"> \n            </div>\n          </form>\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li class=\"dropdown\">\n              <a href=\"/more/\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">More <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                <li><a href=\"https://github.com/jandecaluwe/urubu\">GitHub repository</a></li>\n                <li><a href=\"/more/sites.html\">Websites powered by Urubu</a></li>\n                <li><a href=\"/more/about.html\">About this site</a></li>\n              </ul>\n            </li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <ol class=\"breadcrumb\">\n    <li><a href=\"/\">Home</a></li>\n      <li class=\"active\">Search results</li>\n  </ol>\n\n  <div class=\"page-header\">\n    <h1>Search results</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"col-md-6 content\" role=\"main\">\n    <main>\n      <div id=\"tipue_search_content\"></div>\n    </main>\n    </div>\n\n\n  </div>\n\n    <div class=\"footer\">\n        <div style=\"margin: 5px\">\n<a href=\"https://twitter.com/share\" class=\"twitter-share-button\">Tweet</a>\n<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>\n\n<!-- Place this tag where you want the +1 button to render. -->\n<div class=\"g-plusone\" data-size=\"medium\"></div>\n\n<!-- Place this tag after the last +1 button tag. -->\n<script type=\"text/javascript\">\nwindow.__gcfg = {\n    lang: 'en-US'\n};\n  (function() {\n    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;\n    po.src = 'https://apis.google.com/js/plusone.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);\n  })();\n</script>\n\n<script type=\"text/javascript\" src=\"http://www.reddit.com/static/button/button1.js\"></script>        </div>\n        <p> Content licensed under the\n           <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\">CC-BY-SA License</a>.\n        </p> \n        <p>Website powered by <a href=\"http://urubu.jandecaluwe.com\">Urubu</a>.</p>\n    </div>\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <!-- <script src=\"https://code.jquery.com/jquery.js\"></script> -->\n    <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n<script src=\"tipuesearch/tipuesearch_content.js\"></script>\n<script src=\"tipuesearch/tipuesearch_set.js\"></script>\n<script src=\"tipuesearch/tipuesearch.min.js\"></script>\n<script>\n$(document).ready(function() {\n     $('#tipue_search_input').tipuesearch({\n          'mode': 'json',\n          'contentLocation': 'tipuesearch/tipuesearch_content.json' \n     });\n});\n</script>\n \n\n  </body>\n</html>\n"
  },
  {
    "path": "doc/_build/start.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>Overview</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- customizations -->\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- pygments -->\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n    <!-- icons -->\n    <link href=\"//netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.css\" rel=\"stylesheet\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n<script>\n  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\n  ga('create', 'UA-48968311-3', 'jandecaluwe.com');\n  ga('send', 'pageview');\n\n</script>\n \n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            <li class=\"active\"><a href=\"/start.html\">Overview</a></li>\n            <li><a href=\"/manual/\">Manual</a></li>\n            <li><a href=\"http://urubu-quickstart.jandecaluwe.com\">Quickstart</a></li>\n            <li><a href=\"/faq/\">FAQ</a></li>\n          </ul>\n          <form class=\"navbar-form navbar-left\" action=\"/search.html\" role=\"search\">\n            <div class=\"form-group\">\n                <input type=\"text\" required name=\"q\" id=\"tipue_search_input\" class=\"form-control\" placeholder=\"Search\"> \n            </div>\n          </form>\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li class=\"dropdown\">\n              <a href=\"/more/\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">More <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                <li><a href=\"https://github.com/jandecaluwe/urubu\">GitHub repository</a></li>\n                <li><a href=\"/more/sites.html\">Websites powered by Urubu</a></li>\n                <li><a href=\"/more/about.html\">About this site</a></li>\n              </ul>\n            </li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <ol class=\"breadcrumb\">\n    <li><a href=\"/\">Home</a></li>\n      <li class=\"active\">Overview</li>\n  </ol>\n\n  <div class=\"page-header\">\n    <h1>Overview</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"col-md-6 content\" role=\"main\">\n    <main>\n      <h2 id=\"what-is-urubu\">What is Urubu?</h2>\n<p>Urubu is <mark>a tool to build static websites</mark>. The following sections will help\nyou to decide whether it is the right tool for you.</p>\n<h2 id=\"static-versus-dynamic\">Static versus dynamic</h2>\n<p>A static website is the simple case. It consists of a set of fixed pages. The\nonly job of the web server is to serve the page that you request.</p>\n<p>The opposite is a dynamic website. In this case, you interact with a program on\nthe web server. Depending on the request, the web server program generates a\nresponse page on the fly.</p>\n<p>Clearly, a dynamic website supports a much more interactive and sophisticated\nweb experience. If this is what you need, you should consider a full-fledged\nCMS or CMS generator tool. There is a <a href=\"https://wiki.python.org/moin/ContentManagementSystems\">wide choice</a> of them in the Python\nworld. </p>\n<p>On the other hand, a static website is great for performance, security and\nmaintainability. If you don't need the overhead of a dynamic CMS, it is a\nwise choice.</p>\n<h2 id=\"why-a-tool\">Why a tool?</h2>\n<p>One option is to write a static website by hand by editing the html code for\neach page. However, this quickly becomes an unpractical solution for two\nreasons.</p>\n<p>First, writing html is no fun. The markup overhead is error prone and makes it\ndifficult to read the actual content.  In Urubu, you use <a href=\"http://daringfireball.net/projects/markdown/\" title=\"Markdown\">Markdown</a> for\nauthoring instead.  Markdown is an almost zero overhead input format and feels\nlike a natural way to write content in plain text. </p>\n<p>Secondly, html pages have a lot of non-content overhead that is equal or\nsimilar across pages, such as navigation info. Duplicating and maintaining this\ninfo manually is error prone and time consuming. In Urubu, you use templates\n(also known as layouts) instead. They make it easy to define the common html\nstructure of a set of similar pages. </p>\n<h2 id=\"why-urubu\">Why Urubu?</h2>\n<p>There is no shortage of static web site generators, including a lot of <a href=\"https://wiki.python.org/moin/PythonBlogSoftware#Static\">Python\nsolutions</a>.   However, these tools are typically blog oriented. If\nyour website is primarily a blog, with content in reverse chronological order\nand with good support for tagging and archiving, there are many other solutions\nthan Urubu.</p>\n<p>On the other hand, <mark>if you view your website as a set of logically connected\ncontent pages, Urubu is an excellent choice</mark>. Urubu makes it it easy to define\na good navigation structure, so that a user is never \"lost\". This is especially\nimportant for technical content.</p>\n<p>Of course, you can also include a blog in an Urubu site.  Within a folder, you\ncan specify how the content should be ordered using an arbitrary key. For a\nblog, this would be reverse order by date.</p>\n<h2 id=\"urubus-ideal-use-case\">Urubu's ideal use case</h2>\n<p>If you would like to develop a website like a software project, you will feel\nat home with Urubu. For example, you can maintain an Urubu site in a git or\nmercurial repository and use the workflows that these systems enable.  For\nexample, you can collaborate on <a href=\"http://www.github.com\" title=\"GitHub\">GitHub</a> or <a href=\"http://www.bitbucket.com\" title=\"Bitbucket\">Bitbucket</a> through <a href=\"https://help.github.com/articles/using-pull-requests\">pull\nrequests</a>. Also, deployment can be as straightforward as pushing to an upstream\nrepository. </p>\n    </main>\n    <ul class=\"pager\">\n      <li class=\"next\"><a href=\"/manual/\">Manual &rarr;</a></li>\n    </ul>\n    </div>\n\n    <div class=\"col-md-3\" role=\"complementary\">\n      <nav class=\"hidden-print hidden-xs hidden-sm\">\n        <div class=\"sidebar\" data-spy=\"affix\" data-offset-top=\"80\" data-offset-bottom=\"60\">\n          <div class=\"well\">\n            <a href=\"#\"><strong>Overview</strong></a>\n            <div class=\"toc\">\n<ul>\n<li><a href=\"#what-is-urubu\">What is Urubu?</a></li>\n<li><a href=\"#static-versus-dynamic\">Static versus dynamic</a></li>\n<li><a href=\"#why-a-tool\">Why a tool?</a></li>\n<li><a href=\"#why-urubu\">Why Urubu?</a></li>\n<li><a href=\"#urubus-ideal-use-case\">Urubu's ideal use case</a></li>\n</ul>\n</div>\n\n          </div>\n        </div>\n      </nav>\n    </div>\n\n  </div>\n\n    <div class=\"footer\">\n        <div style=\"margin: 5px\">\n<a href=\"https://twitter.com/share\" class=\"twitter-share-button\">Tweet</a>\n<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>\n\n<!-- Place this tag where you want the +1 button to render. -->\n<div class=\"g-plusone\" data-size=\"medium\"></div>\n\n<!-- Place this tag after the last +1 button tag. -->\n<script type=\"text/javascript\">\nwindow.__gcfg = {\n    lang: 'en-US'\n};\n  (function() {\n    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;\n    po.src = 'https://apis.google.com/js/plusone.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);\n  })();\n</script>\n\n<script type=\"text/javascript\" src=\"http://www.reddit.com/static/button/button1.js\"></script>        </div>\n        <p> Content licensed under the\n           <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\">CC-BY-SA License</a>.\n        </p> \n        <p>Website powered by <a href=\"http://urubu.jandecaluwe.com\">Urubu</a>.</p>\n    </div>\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <!-- <script src=\"https://code.jquery.com/jquery.js\"></script> -->\n    <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n \n\n  </body>\n</html>\n"
  },
  {
    "path": "doc/_build/tipuesearch/tipuesearch.css",
    "content": "\n/*\nTipue Search 5.0\nCopyright (c) 2015 Tipue\nTipue Search is released under the MIT License\nhttp://www.tipue.com/search\n*/\n\n\n/*\n#tipue_search_input\n{\n     font: 13px/1.6 'open sans', sans-serif;\n\tcolor: #333;\n\tpadding: 12px 12px 12px 40px;\n\twidth: 170px;\n\tborder: 1px solid #e2e2e2;\n\tborder-radius: 0;\n\t-moz-appearance: none;\n\t-webkit-appearance: none;\n     box-shadow: none; \n\toutline: 0;\n\tmargin: 0;\n\tbackground: #fff url('img/search.png') no-repeat 15px 15px;\n}\n*/\n\n#tipue_search_content\n{\n     max-width: 650px;\n\tpadding-top: 15px;\n\tmargin: 0;\n}\n#tipue_search_warning\n{\n     font: 300 15px/1.6 'Open Sans', sans-serif;\n\tcolor: #555;\n\tmargin: 7px 0;\n}\n#tipue_search_warning a\n{\n     color: #396;\n     text-decoration: none;\n}\n#tipue_search_warning a:hover\n{\n     color: #555;  \n}\n#tipue_search_results_count\n{\n     font: 300 15px/1.7 'Open Sans', sans-serif;\n\tcolor: #555;\n}\n.tipue_search_content_title\n{\n     font: 300 21px/1.7 'Open Sans', sans-serif;\n\tmargin-top: 23px;\n}\n.tipue_search_content_title a\n{\n     color: #333;\n     text-decoration: none;\n}\n.tipue_search_content_title a:hover\n{\n     color: #555;\n}\n.tipue_search_content_url\n{\n     font: 300 14px/1.9 'Open Sans', sans-serif;\n     word-wrap: break-word;\n     hyphens: auto;\n}\n.tipue_search_content_url a\n{\n     color: #396;\n     text-decoration: none;\n}\n.tipue_search_content_url a:hover\n{\n     color: #555;   \n}\n.tipue_search_content_text\n{\n     font: 300 15px/1.6 'Open Sans', sans-serif;\n\tcolor: #555;\n     word-wrap: break-word;\n     hyphens: auto;\n     margin-top: 3px;\n}\n.tipue_search_content_debug\n{\n     font: 300 13px/1.6 'Open Sans', sans-serif;\n\tcolor: #555;\n     margin: 5px 0;\n}\n.h01\n{\n     color: #333;\n     font-weight: 400;\n}\n\n#tipue_search_foot\n{\n     margin: 51px 0 21px 0;\n}\n#tipue_search_foot_boxes\n{\n\tpadding: 0;\n\tmargin: 0;\n     font: 12px 'Open Sans', sans-serif;\n}\n#tipue_search_foot_boxes li\n{\n\tlist-style: none;\n\tmargin: 0;\n\tpadding: 0;\n\tdisplay: inline;\n}\n#tipue_search_foot_boxes li a\n{\n\tpadding: 10px 17px 11px 17px;\n     background-color: #fff;\n     border: 1px solid #e2e2e2;\n     border-radius: 1px;\n\tcolor: #333;\n\tmargin-right: 7px;\n\ttext-decoration: none;\n\ttext-align: center;\n}\n#tipue_search_foot_boxes li.current\n{\n\tpadding: 10px 17px 11px 17px;\n     background: #f6f6f6;\n     border: 1px solid #e2e2e2;\n     border-radius: 1px;\n\tcolor: #333;\n\tmargin-right: 7px;\n\ttext-align: center;\n}\n#tipue_search_foot_boxes li a:hover\n{\n     background: #f6f6f6;\n}\n\n\n/* spinner */\n\n\n.tipue_search_spinner\n{\n     padding: 31px 0;\n     width: 50px;\n     height: 28px;\n}\n.tipue_search_spinner > div\n{\n     background-color: #777;\n     height: 100%;\n     width: 3px;\n     display: inline-block;\n     margin-right: 2px;\n     -webkit-animation: stretchdelay 1.2s infinite ease-in-out;\n     animation: stretchdelay 1.2s infinite ease-in-out;\n}\n.tipue_search_spinner .tipue_search_rect2\n{\n     -webkit-animation-delay: -1.1s;\n     animation-delay: -1.1s;\n}\n.tipue_search_spinner .tipue_search_rect3\n{\n     -webkit-animation-delay: -1.0s;\n     animation-delay: -1.0s;\n}\n@-webkit-keyframes stretchdelay\n{\n     0%, 40%, 100%\n     {\n          -webkit-transform: scaleY(0.4)\n     }  \n     20%\n     {\n          -webkit-transform: scaleY(1.0)\n     }\n}\n@keyframes stretchdelay\n{\n     0%, 40%, 100%\n     { \n          transform: scaleY(0.4);\n          -webkit-transform: scaleY(0.4);\n     }\n     20%\n     { \n          transform: scaleY(1.0);\n          -webkit-transform: scaleY(1.0);\n     }\n}\n\n\n\n\n\n\n"
  },
  {
    "path": "doc/_build/tipuesearch/tipuesearch.css.in",
    "content": "\n/*\nTipue Search 5.0\nCopyright (c) 2015 Tipue\nTipue Search is released under the MIT License\nhttp://www.tipue.com/search\n*/\n\n\n#tipue_search_input\n{\n     font: 13px/1.6 'open sans', sans-serif;\n\tcolor: #333;\n\tpadding: 12px 12px 12px 40px;\n\twidth: 170px;\n\tborder: 1px solid #e2e2e2;\n\tborder-radius: 0;\n\t-moz-appearance: none;\n\t-webkit-appearance: none;\n     box-shadow: none; \n\toutline: 0;\n\tmargin: 0;\n\tbackground: #fff url('img/search.png') no-repeat 15px 15px;\n}\n\n#tipue_search_content\n{\n     max-width: 650px;\n\tpadding-top: 15px;\n\tmargin: 0;\n}\n#tipue_search_warning\n{\n     font: 300 15px/1.6 'Open Sans', sans-serif;\n\tcolor: #555;\n\tmargin: 7px 0;\n}\n#tipue_search_warning a\n{\n     color: #396;\n     text-decoration: none;\n}\n#tipue_search_warning a:hover\n{\n     color: #555;  \n}\n#tipue_search_results_count\n{\n     font: 300 15px/1.7 'Open Sans', sans-serif;\n\tcolor: #555;\n}\n.tipue_search_content_title\n{\n     font: 300 21px/1.7 'Open Sans', sans-serif;\n\tmargin-top: 23px;\n}\n.tipue_search_content_title a\n{\n     color: #333;\n     text-decoration: none;\n}\n.tipue_search_content_title a:hover\n{\n     color: #555;\n}\n.tipue_search_content_url\n{\n     font: 300 14px/1.9 'Open Sans', sans-serif;\n     word-wrap: break-word;\n     hyphens: auto;\n}\n.tipue_search_content_url a\n{\n     color: #396;\n     text-decoration: none;\n}\n.tipue_search_content_url a:hover\n{\n     color: #555;   \n}\n.tipue_search_content_text\n{\n     font: 300 15px/1.6 'Open Sans', sans-serif;\n\tcolor: #555;\n     word-wrap: break-word;\n     hyphens: auto;\n     margin-top: 3px;\n}\n.tipue_search_content_debug\n{\n     font: 300 13px/1.6 'Open Sans', sans-serif;\n\tcolor: #555;\n     margin: 5px 0;\n}\n.h01\n{\n     color: #333;\n     font-weight: 400;\n}\n\n#tipue_search_foot\n{\n     margin: 51px 0 21px 0;\n}\n#tipue_search_foot_boxes\n{\n\tpadding: 0;\n\tmargin: 0;\n     font: 12px 'Open Sans', sans-serif;\n}\n#tipue_search_foot_boxes li\n{\n\tlist-style: none;\n\tmargin: 0;\n\tpadding: 0;\n\tdisplay: inline;\n}\n#tipue_search_foot_boxes li a\n{\n\tpadding: 10px 17px 11px 17px;\n     background-color: #fff;\n     border: 1px solid #e2e2e2;\n     border-radius: 1px;\n\tcolor: #333;\n\tmargin-right: 7px;\n\ttext-decoration: none;\n\ttext-align: center;\n}\n#tipue_search_foot_boxes li.current\n{\n\tpadding: 10px 17px 11px 17px;\n     background: #f6f6f6;\n     border: 1px solid #e2e2e2;\n     border-radius: 1px;\n\tcolor: #333;\n\tmargin-right: 7px;\n\ttext-align: center;\n}\n#tipue_search_foot_boxes li a:hover\n{\n     background: #f6f6f6;\n}\n\n\n/* spinner */\n\n\n.tipue_search_spinner\n{\n     padding: 31px 0;\n     width: 50px;\n     height: 28px;\n}\n.tipue_search_spinner > div\n{\n     background-color: #777;\n     height: 100%;\n     width: 3px;\n     display: inline-block;\n     margin-right: 2px;\n     -webkit-animation: stretchdelay 1.2s infinite ease-in-out;\n     animation: stretchdelay 1.2s infinite ease-in-out;\n}\n.tipue_search_spinner .tipue_search_rect2\n{\n     -webkit-animation-delay: -1.1s;\n     animation-delay: -1.1s;\n}\n.tipue_search_spinner .tipue_search_rect3\n{\n     -webkit-animation-delay: -1.0s;\n     animation-delay: -1.0s;\n}\n@-webkit-keyframes stretchdelay\n{\n     0%, 40%, 100%\n     {\n          -webkit-transform: scaleY(0.4)\n     }  \n     20%\n     {\n          -webkit-transform: scaleY(1.0)\n     }\n}\n@keyframes stretchdelay\n{\n     0%, 40%, 100%\n     { \n          transform: scaleY(0.4);\n          -webkit-transform: scaleY(0.4);\n     }\n     20%\n     { \n          transform: scaleY(1.0);\n          -webkit-transform: scaleY(1.0);\n     }\n}\n\n\n\n\n\n\n"
  },
  {
    "path": "doc/_build/tipuesearch/tipuesearch.js",
    "content": "\n/*\nTipue Search 5.0\nCopyright (c) 2015 Tipue\nTipue Search is released under the MIT License\nhttp://www.tipue.com/search\n*/\n\n\n(function($) {\n\n     $.fn.tipuesearch = function(options) {\n\n          var set = $.extend( {\n          \n               'show'                   : 7,\n               'newWindow'              : false,\n               'showURL'                : true,\n               'showTitleCount'         : true,\n               'minimumLength'          : 3,\n               'descriptiveWords'       : 25,\n               'highlightTerms'         : true,\n               'highlightEveryTerm'     : false,\n               'mode'                   : 'static',\n               'liveDescription'        : '*',\n               'liveContent'            : '*',\n               'contentLocation'        : 'tipuesearch/tipuesearch_content.json',\n               'debug'                  : false\n          \n          }, options);\n          \n          return this.each(function() {\n\n               var tipuesearch_in = {\n                    pages: []\n               };\n               $.ajaxSetup({\n                    async: false\n               });\n               var tipuesearch_t_c = 0;\n\n               if (set.mode == 'live')\n               {\n                    for (var i = 0; i < tipuesearch_pages.length; i++)\n                    {\n                         $.get(tipuesearch_pages[i])\n                              .done(function(html)\n                              {\n                                   var cont = $(set.liveContent, html).text();\n                                   cont = cont.replace(/\\s+/g, ' ');\n                                   var desc = $(set.liveDescription, html).text();\n                                   desc = desc.replace(/\\s+/g, ' ');\n                                                                      \n                                   var t_1 = html.toLowerCase().indexOf('<title>');\n                                   var t_2 = html.toLowerCase().indexOf('</title>', t_1 + 7);\n                                   if (t_1 != -1 && t_2 != -1)\n                                   {\n                                        var tit = html.slice(t_1 + 7, t_2);\n                                   }\n                                   else\n                                   {\n                                        var tit = tipuesearch_string_1;\n                                   }\n\n                                   tipuesearch_in.pages.push(\n                                   {\n                                        \"title\": tit,\n                                        \"text\": desc,\n                                        \"tags\": cont,\n                                        \"url\": tipuesearch_pages[i] \n                                   });    \n                              });\n                    }\n               }\n               \n               if (set.mode == 'json')\n               {\n                    $.getJSON(set.contentLocation)\n                         .done(function(json)\n                         {\n                              tipuesearch_in = $.extend({}, json);\n                         });\n               }\n\n               if (set.mode == 'static')\n               {\n                    tipuesearch_in = $.extend({}, tipuesearch);\n               }                              \n               \n               var tipue_search_w = '';\n               if (set.newWindow)\n               {\n                    tipue_search_w = ' target=\"_blank\"';      \n               }\n\n               function getURLP(name)\n               {\n                    return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.search)||[,\"\"])[1].replace(/\\+/g, '%20')) || null;\n               }\n               if (getURLP('q'))\n               {\n                    $('#tipue_search_input').val(getURLP('q'));\n                    getTipueSearch(0, true);\n               }               \n               \n               $(this).keyup(function(event)\n               {\n                    if(event.keyCode == '13')\n                    {\n                         getTipueSearch(0, true);\n                    }\n               });\n               \n\n               function getTipueSearch(start, replace)\n               {\n                    $('#tipue_search_content').hide();\n                    $('#tipue_search_content').html('<div class=\"tipue_search_spinner\"><div class=\"tipue_search_rect1\"></div><div class=\"tipue_search_rect2\"></div><div class=\"rect3\"></div></div>');\n                    $('#tipue_search_content').show();\n                    \n                    var out = '';\n                    var results = '';\n                    var show_replace = false;\n                    var show_stop = false;\n                    var standard = true;\n                    var c = 0;\n                    found = [];\n                    \n                    var d = $('#tipue_search_input').val().toLowerCase();\n                    d = $.trim(d);\n                    \n                    if ((d.match(\"^\\\"\") && d.match(\"\\\"$\")) || (d.match(\"^'\") && d.match(\"'$\")))\n                    {\n                         standard = false;\n                    }\n                    \n                    if (standard)\n                    {\n                         var d_w = d.split(' ');\n                         d = '';\n                         for (var i = 0; i < d_w.length; i++)\n                         {\n                              var a_w = true;\n                              for (var f = 0; f < tipuesearch_stop_words.length; f++)\n                              {\n                                   if (d_w[i] == tipuesearch_stop_words[f])\n                                   {\n                                        a_w = false;\n                                        show_stop = true;          \n                                   }\n                              }\n                              if (a_w)\n                              {\n                                   d = d + ' ' + d_w[i];\n                              }\n                         }\n                         d = $.trim(d);\n                         d_w = d.split(' ');\n                    }\n                    else\n                    {\n                         d = d.substring(1, d.length - 1);\n                    }\n               \n                    if (d.length >= set.minimumLength)\n                    {\n                         if (standard)\n                         {\n                              if (replace)\n                              {\n                                   var d_r = d;\n                                   for (var i = 0; i < d_w.length; i++)\n                                   {\n                                        for (var f = 0; f < tipuesearch_replace.words.length; f++)\n                                        {\n                                             if (d_w[i] == tipuesearch_replace.words[f].word)\n                                             {\n                                                  d = d.replace(d_w[i], tipuesearch_replace.words[f].replace_with);\n                                                  show_replace = true;\n                                             }\n                                        }\n                                   }\n                                   d_w = d.split(' ');\n                              }                   \n                    \n                              var d_t = d;\n                              for (var i = 0; i < d_w.length; i++)\n                              {\n                                   for (var f = 0; f < tipuesearch_stem.words.length; f++)\n                                   {\n                                        if (d_w[i] == tipuesearch_stem.words[f].word)\n                                        {\n                                             d_t = d_t + ' ' + tipuesearch_stem.words[f].stem;\n                                        }\n                                   }\n                              }\n                              d_w = d_t.split(' ');\n\n                              for (var i = 0; i < tipuesearch_in.pages.length; i++)\n                              {\n                                   var score = 0;\n                                   var s_t = tipuesearch_in.pages[i].text;\n                                   for (var f = 0; f < d_w.length; f++)\n                                   {\n                                        var pat = new RegExp(d_w[f], 'gi');\n                                        if (tipuesearch_in.pages[i].title.search(pat) != -1)\n                                        {\n                                             var m_c = tipuesearch_in.pages[i].title.match(pat).length;\n                                             score += (20 * m_c);\n                                        }\n                                        if (tipuesearch_in.pages[i].text.search(pat) != -1)\n                                        {\n                                             var m_c = tipuesearch_in.pages[i].text.match(pat).length;\n                                             score += (20 * m_c);\n                                        }\n                                        \n                                        if (set.highlightTerms)\n                                        {\n                                             if (set.highlightEveryTerm) \n                                             {\n                                                  var patr = new RegExp('(' + d_w[f] + ')', 'gi');\n                                             }\n                                             else\n                                             {\n                                                  var patr = new RegExp('(' + d_w[f] + ')', 'i');\n                                             }\n                                             s_t = s_t.replace(patr, \"<span class=\\\"h01\\\">$1</span>\");\n                                        }\n                                        \n                                        if (tipuesearch_in.pages[i].tags.search(pat) != -1)\n                                        {\n                                             var m_c = tipuesearch_in.pages[i].tags.match(pat).length;\n                                             score += (10 * m_c);\n                                        }\n\n                                        if (tipuesearch_in.pages[i].url.search(pat) != -1)\n                                        {\n                                             score += 20;\n                                        }\n                                        \n                                        if (score != 0)\n                                        {\n                                             for (var e = 0; e < tipuesearch_weight.weight.length; e++)\n                                             {\n                                                  if (tipuesearch_in.pages[i].url == tipuesearch_weight.weight[e].url)\n                                                  {\n                                                       score += tipuesearch_weight.weight[e].score;\n                                                  }\n                                             }\n                                        }\n                                        \n                                        if (d_w[f].match('^-'))\n                                        {\n                                             pat = new RegExp(d_w[f].substring(1), 'i');\n                                             if (tipuesearch_in.pages[i].title.search(pat) != -1 || tipuesearch_in.pages[i].text.search(pat) != -1 || tipuesearch_in.pages[i].tags.search(pat) != -1)\n                                             {\n                                                  score = 0;     \n                                             }    \n                                        }\n                                   }\n                                   \n                                   if (score != 0)\n                                   {\n                                        found.push(\n                                        {\n                                             \"score\": score,\n                                             \"title\": tipuesearch_in.pages[i].title,\n                                             \"desc\": s_t,\n                                             \"url\": tipuesearch_in.pages[i].url \n                                        });\n                                        c++;                                                                   \n                                   }\n                              }\n                         }\n                         else\n                         {\n                              for (var i = 0; i < tipuesearch_in.pages.length; i++)\n                              {\n                                   var score = 0;\n                                   var s_t = tipuesearch_in.pages[i].text;\n                                   var pat = new RegExp(d, 'gi');\n                                   if (tipuesearch_in.pages[i].title.search(pat) != -1)\n                                   {\n                                        var m_c = tipuesearch_in.pages[i].title.match(pat).length;\n                                        score += (20 * m_c);\n                                   }\n                                   if (tipuesearch_in.pages[i].text.search(pat) != -1)\n                                   {\n                                        var m_c = tipuesearch_in.pages[i].text.match(pat).length;\n                                        score += (20 * m_c);\n                                   }\n                                   \n                                   if (set.highlightTerms)\n                                   {\n                                        if (set.highlightEveryTerm) \n                                        {\n                                             var patr = new RegExp('(' + d + ')', 'gi');\n                                        }\n                                        else\n                                        {\n                                             var patr = new RegExp('(' + d + ')', 'i');\n                                        }\n                                        s_t = s_t.replace(patr, \"<span class=\\\"h01\\\">$1</span>\");\n                                   }\n                                   \n                                   if (tipuesearch_in.pages[i].tags.search(pat) != -1)\n                                   {\n                                        var m_c = tipuesearch_in.pages[i].tags.match(pat).length;\n                                        score += (10 * m_c);\n                                   }\n                              \n                                   if (tipuesearch_in.pages[i].url.search(pat) != -1)\n                                   {\n                                        score += 20;\n                                   }\n                                   \n                                   if (score != 0)\n                                   {\n                                        for (var e = 0; e < tipuesearch_weight.weight.length; e++)\n                                        {\n                                             if (tipuesearch_in.pages[i].url == tipuesearch_weight.weight[e].url)\n                                             {\n                                                  score += tipuesearch_weight.weight[e].score;\n                                             }\n                                        }\n                                   }\n                              \n                                   if (score != 0)\n                                   {\n                                        found.push(\n                                        {\n                                             \"score\": score,\n                                             \"title\": tipuesearch_in.pages[i].title,\n                                             \"desc\": s_t,\n                                             \"url\": tipuesearch_in.pages[i].url\n                                        });\n                                        c++;                                                                  \n                                   }                              \n                              }\n                         }                         \n                         \n                         if (c != 0)\n                         {\n                              if (set.showTitleCount && tipuesearch_t_c == 0)\n                              {\n                                   var title = document.title;\n                                   document.title = '(' + c + ') ' + title;\n                                   tipuesearch_t_c++;\n                              }                         \n                         \n                              if (show_replace == 1)\n                              {\n                                   out += '<div id=\"tipue_search_warning\">' + tipuesearch_string_2 + ' ' + d + '. ' + tipuesearch_string_3 + ' <a id=\"tipue_search_replaced\">' + d_r + '</a></div>';\n                              }\n                              if (c == 1)\n                              {\n                                   out += '<div id=\"tipue_search_results_count\">' + tipuesearch_string_4 + '</div>';\n                              }\n                              else\n                              {\n                                   c_c = c.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n                                   out += '<div id=\"tipue_search_results_count\">' + c_c + ' ' + tipuesearch_string_5 + '</div>';\n                              }\n                              \n                              found.sort(function(a, b) { return b.score - a.score } );\n                              \n                              var l_o = 0;\n                              for (var i = 0; i < found.length; i++)\n                              {\n                                   if (l_o >= start && l_o < set.show + start)\n                                   {                                   \n                                        out += '<div class=\"tipue_search_content_title\"><a href=\"' + found[i].url + '\"' + tipue_search_w + '>' +  found[i].title + '</a></div>';\n \n                                        if (set.debug)\n                                        {                                             \n                                             out += '<div class=\"tipue_search_content_debug\">Score: ' + found[i].score + '</div>';\n                                        }\n                                        \n                                        if (set.showURL)\n                                        {\n                                             var s_u = found[i].url.toLowerCase();\n                                             if(s_u.indexOf('http://') == 0)\n                                             {\n                                                  s_u = s_u.slice(7);\n                                             }                                             \n                                             out += '<div class=\"tipue_search_content_url\"><a href=\"' + found[i].url + '\"' + tipue_search_w + '>' + s_u + '</a></div>';\n                                        }\n                                        \n                                        if (found[i].desc)\n                                        {                                        \n                                             var t = found[i].desc;\n                                             var t_d = '';\n                                             var t_w = t.split(' ');\n                                             if (t_w.length < set.descriptiveWords)\n                                             {\n                                                  t_d = t;\n                                             }\n                                             else\n                                             {\n                                                  for (var f = 0; f < set.descriptiveWords; f++)\n                                                  {\n                                                       t_d += t_w[f] + ' '; \t\n                                                  }\n                                             }\n                                             t_d = $.trim(t_d);\n                                             if (t_d.charAt(t_d.length - 1) != '.')\n                                             {\n                                                  t_d += ' ...';\n                                             }\n                                             out += '<div class=\"tipue_search_content_text\">' + t_d + '</div>';\n                                        }\n                                   }\n                                   l_o++;     \n                              }\n                              \n                              if (c > set.show)\n                              {\n                                   var pages = Math.ceil(c / set.show);\n                                   var page = (start / set.show);\n                                   out += '<div id=\"tipue_search_foot\"><ul id=\"tipue_search_foot_boxes\">';\n                                   \n                                   if (start > 0)\n                                   {\n                                       out += '<li><a class=\"tipue_search_foot_box\" id=\"' + (start - set.show) + '_' + replace + '\">' + tipuesearch_string_6 + '</a></li>'; \n                                   }\n                                                       \n                                   if (page <= 2)\n                                   {\n                                        var p_b = pages;\n                                        if (pages > 3)\n                                        {\n                                             p_b = 3;\n                                        }                    \n                                        for (var f = 0; f < p_b; f++)\n                                        {\n                                             if (f == page)\n                                             {\n                                                  out += '<li class=\"current\">' + (f + 1) + '</li>';\n                                             }\n                                             else\n                                             {\n                                                  out += '<li><a class=\"tipue_search_foot_box\" id=\"' + (f * set.show) + '_' + replace + '\">' + (f + 1) + '</a></li>';\n                                             }\n                                        }\n                                   }\n                                   else\n                                   {\n                                        var p_b = page + 2;\n                                        if (p_b > pages)\n                                        {\n                                             p_b = pages; \n                                        }\n                                        for (var f = page - 1; f < p_b; f++)\n                                        {\n                                             if (f == page)\n                                             {\n                                                  out += '<li class=\"current\">' + (f + 1) + '</li>';\n                                             }\n                                             else\n                                             {\n                                                  out += '<li><a class=\"tipue_search_foot_box\" id=\"' + (f * set.show) + '_' + replace + '\">' + (f + 1) + '</a></li>';\n                                             }\n                                        }\n                                   }                         \n                                                      \n                                   if (page + 1 != pages)\n                                   {\n                                       out += '<li><a class=\"tipue_search_foot_box\" id=\"' + (start + set.show) + '_' + replace + '\">' + tipuesearch_string_7 + '</a></li>'; \n                                   }                    \n                                   \n                                   out += '</ul></div>';\n                              }                        \n                         }\n                         else\n                         {\n                              out += '<div id=\"tipue_search_warning\">' + tipuesearch_string_8 + '</div>'; \n                         }\n                    }\n                    else\n                    {\n                         if (show_stop)\n                         {\n                              out += '<div id=\"tipue_search_warning\">' + tipuesearch_string_8 + '. ' + tipuesearch_string_9 + '</div>';     \n                         }\n                         else\n                         {\n                              out += '<div id=\"tipue_search_warning\">' + tipuesearch_string_10 + '</div>';\n                              if (set.minimumLength == 1)\n                              {\n                                   out += '<div id=\"tipue_search_warning\">' + tipuesearch_string_11 + '</div>';\n                              }\n                              else\n                              {\n                                   out += '<div id=\"tipue_search_warning\">' + tipuesearch_string_12 + ' ' + set.minimumLength + ' ' + tipuesearch_string_13 + '</div>';\n                              }\n                         }\n                    }                \n                    \n                    $('#tipue_search_content').hide();\n                    $('#tipue_search_content').html(out);\n                    $('#tipue_search_content').slideDown(200);\n                    \n                    $('#tipue_search_replaced').click(function()\n                    {\n                         getTipueSearch(0, false);\n                    });                \n               \n                    $('.tipue_search_foot_box').click(function()\n                    {\n                         var id_v = $(this).attr('id');\n                         var id_a = id_v.split('_');\n                    \n                         getTipueSearch(parseInt(id_a[0]), id_a[1]);\n                    });                                                       \n               }          \n          \n          });\n     };\n   \n})(jQuery);\n"
  },
  {
    "path": "doc/_build/tipuesearch/tipuesearch_content.js",
    "content": "\nvar tipuesearch = {\"pages\": [\n     {\"title\": \"Tipue\", \"text\": \"\", \"tags\": \"jQuery HTML5 CSS\", \"url\": \"http://www.tipue.com\"},\n     {\"title\": \"Tipue Search, a site search engine jQuery plugin\", \"text\": \"Tipue Search is a site search engine jQuery plugin. It's free, open source, responsive and fast. Tipue Search only needs a browser that supports jQuery. It doesn't need MySQL or similar. In Static mode it doesn't even need a web server.\", \"tags\": \"JavaScript\", \"url\": \"http://www.tipue.com/search\"},\n     {\"title\": \"Tipue Search Documentation\", \"text\": \"Tipue Search is a site search engine jQuery plugin. It's free, open source and responsive. Tipue Search uses various modes for loading content. Static mode uses a JavaScript object, while JSON mode uses JSON. Live mode grabs content from a list of pages dynamically.\", \"tags\": \"docs\", \"url\": \"http://www.tipue.com/search/docs\"},     \n     {\"title\": \"Tipue Search Static mode demo\", \"text\": \"Tipue Search is a site search engine jQuery plugin. This is a demo of Static mode. Enter tipue into the search box above.\", \"tags\": \"\", \"url\": \"http://www.tipue.com/search/demos/static\"},\n     {\"title\": \"Tipue Search Live mode demo\", \"text\": \"Tipue Search is a site search engine jQuery plugin. This is a demo of Live mode. Enter tipue into the search box above.\", \"tags\": \"\", \"url\": \"http://www.tipue.com/search/demos/live\"},\n     {\"title\": \"Tipue jQuery plugins Support\", \"text\": \"If you're stuck we offer a range of flexible support plans for our jQuery plugins.\", \"tags\": \"\", \"url\": \"http://www.tipue.com/support\"},\n     {\"title\": \"Tipr, a small and simple jQuery tooltip plugin\", \"text\": \"Tipr is a small and simple jQuery tooltip plugin. It's free and open source. Tipr displays attractive tooltips, and it's a shade under 4KB, CSS included.\", \"tags\": \"JavaScript\", \"url\": \"http://www.tipue.com/tipr\"},\n     {\"title\": \"The Tipue blog\", \"text\": \"An occasional blog covering CSS, web development, etc.\", \"tags\": \"HTML5\", \"url\": \"http://www.tipue.com/?d=2\"},\n     {\"title\": \"About Tipue\", \"text\": \"Tipue is a small web development studio based in North London. We've been around for well over a decade. We design innovative add-ins, plugins, code and features with heavy-duty Perl, MySQL and jQuery.\", \"tags\": \"\", \"url\": \"http://www.tipue.com/about\"},     \n     {\"title\": \"The Tipue blog - The complete guide to centering a div\", \"text\": \"Every new developer inevitably finds that centering a div isn't as obvious as you'd expect. Centering what's inside a div is easy enough by giving the text-align property a value of center, but then things tend to get a bit sticky. When you get to centering a div vertically, you can end up in a world of CSS hurt.\", \"tags\": \"HTML\", \"url\": \"http://www.tipue.com/blog/center-a-div\"},\n     {\"title\": \"The Tipue blog - Native HTML5 autocomplete with input list\", \"text\": \"This article shows how with the HTML5 input list attribute and datalist element you can easily set up an input box with a custom autocomplete without jQuery, JavaScript or similar.\", \"tags\": \"\", \"url\": \"http://www.tipue.com/blog/input-list\"},\n     {\"title\": \"The Tipue blog - The really simple guide to z-index\", \"text\": \"The CSS z-index property often trips up new and even experienced developers. The aim of this article is to boil down a somewhat-complex specification to 3 major points, which should ease most z-index pain.\", \"tags\": \"\", \"url\": \"http://www.tipue.com/z-index\"}\n]};\n\n\n\n"
  },
  {
    "path": "doc/_build/tipuesearch/tipuesearch_content.json",
    "content": "{\n    \"pages\": [\n        {\n            \"tags\": \"\",\n            \"text\": \"\",\n            \"title\": \"Search results\",\n            \"url\": \"/search.html\"\n        },\n        {\n            \"tags\": \"\",\n            \"text\": \"30-Mar-2026: Urubu 1.4.1 released For websites, not just blogs Set up a website as logically related content. Content\\nordering is flexible , not just by date. Focus on navigation Easily set up a navbar, a table of contents sidebar,\\nbreadcrumbs and pagers. Ready for Bootstrap Urubu plays well with Bootstrap , the popular framework\\nfor great looking websites. Markdown content Enter content in light-weight Markdown syntax, with\\npopular extensions. Wiki links Easily refer to other pages like\\nin wikis , using Markdown syntax. Powerful templating Use the powerful Jinja2 templating library to \\ndefine page layouts. Sophisticated control Per-page control of page layout \\n  and other stuff. Plus user-defined variables . Python power Urubu is built with Python. It provides Python hooks to assist in templating. Ideal with git Use a git workflow to develop\\nyour website. Deploy by pushing. And of course, it's open source!\",\n            \"title\": \"Urubu\",\n            \"url\": \"/index.html\"\n        },\n        {\n            \"tags\": \"\",\n            \"text\": \"What is Urubu? Urubu is a tool to build static websites . The following sections will help\\nyou to decide whether it is the right tool for you. Static versus dynamic A static website is the simple case. It consists of a set of fixed pages. The\\nonly job of the web server is to serve the page that you request. The opposite is a dynamic website. In this case, you interact with a program on\\nthe web server. Depending on the request, the web server program generates a\\nresponse page on the fly. Clearly, a dynamic website supports a much more interactive and sophisticated\\nweb experience. If this is what you need, you should consider a full-fledged\\nCMS or CMS generator tool. There is a wide choice of them in the Python\\nworld. On the other hand, a static website is great for performance, security and\\nmaintainability. If you don't need the overhead of a dynamic CMS, it is a\\nwise choice. Why a tool? One option is to write a static website by hand by editing the html code for\\neach page. However, this quickly becomes an unpractical solution for two\\nreasons. First, writing html is no fun. The markup overhead is error prone and makes it\\ndifficult to read the actual content.  In Urubu, you use Markdown for\\nauthoring instead.  Markdown is an almost zero overhead input format and feels\\nlike a natural way to write content in plain text. Secondly, html pages have a lot of non-content overhead that is equal or\\nsimilar across pages, such as navigation info. Duplicating and maintaining this\\ninfo manually is error prone and time consuming. In Urubu, you use templates\\n(also known as layouts) instead. They make it easy to define the common html\\nstructure of a set of similar pages. Why Urubu? There is no shortage of static web site generators, including a lot of Python\\nsolutions .   However, these tools are typically blog oriented. If\\nyour website is primarily a blog, with content in reverse chronological order\\nand with good support for tagging and archiving, there are many other solutions\\nthan Urubu. On the other hand, if you view your website as a set of logically connected\\ncontent pages, Urubu is an excellent choice . Urubu makes it it easy to define\\na good navigation structure, so that a user is never \\\"lost\\\". This is especially\\nimportant for technical content. Of course, you can also include a blog in an Urubu site.  Within a folder, you\\ncan specify how the content should be ordered using an arbitrary key. For a\\nblog, this would be reverse order by date. Urubu's ideal use case If you would like to develop a website like a software project, you will feel\\nat home with Urubu. For example, you can maintain an Urubu site in a git or\\nmercurial repository and use the workflows that these systems enable.  For\\nexample, you can collaborate on GitHub or Bitbucket through pull\\nrequests . Also, deployment can be as straightforward as pushing to an upstream\\nrepository.\",\n            \"title\": \"Overview\",\n            \"url\": \"/start.html\"\n        },\n        {\n            \"tags\": \"\",\n            \"text\": \"Urubu 0.5 introduces tag support. Read my blog post for an introduction.\",\n            \"title\": \"Urubu 0.5 released\",\n            \"url\": \"/news/2014-09-08.html\"\n        },\n        {\n            \"tags\": \"\",\n            \"text\": \"This release adds markdown support for front-matter attributes. Read more »\",\n            \"title\": \"Urubu 0.3 released\",\n            \"url\": \"/news/2014-02-27.html\"\n        },\n        {\n            \"tags\": \"\",\n            \"text\": \"Maintenance release: bug fixes and small enhancements to existing features.\\nSee the git log and the manual.\",\n            \"title\": \"Urubu 1.3.1 released\",\n            \"url\": \"/news/2018-08-15.html\"\n        },\n        {\n            \"tags\": \"\",\n            \"text\": \"This release adds support for Tipue Search, an open source search solution\\nbased on Javascript in the browser. Read more in the chapter Adding Search in the manual.\",\n            \"title\": \"Urubu 0.9.0 released\",\n            \"url\": \"/news/2015-12-15.html\"\n        },\n        {\n            \"tags\": \"\",\n            \"text\": \"Urubu 0.7 adds features that make it more flexible to use. First, the release adds Python 3 support, from a single codebase.\\nYou can use Python 2.7 or Python 3.4. Second, there is now a baseurl option to add a prefix to generated local\\nURLs. More info » . On the other hand, the checklist extension has been removed as it caused issues\\nwith reference id resolution.\",\n            \"title\": \"Urubu 0.7: Python 3 support, baseurl option\",\n            \"url\": \"/news/2015-03-07.html\"\n        },\n        {\n            \"tags\": \"\",\n            \"text\": \"Introducing Urubu, a Python-based micro CMS for static websites.\\nRead about the rationale behind it .\",\n            \"title\": \"Urubu 0.1 released\",\n            \"url\": \"/news/2014-01-12.html\"\n        },\n        {\n            \"tags\": \"\",\n            \"text\": \"Highlights: Add posibility to override output filename. (#51). See the saveas attribute\\nin the manual .\\nAn example usage, see How do I make a sitemap? . The urubu serve command is more secure.  This is transparent to the user\\n(#49). Added option for jinja2 to fail on undefined vars (#47). \\nSee the strict_undefined attribute in the manual .\",\n            \"title\": \"Urubu 1.3.0 released\",\n            \"url\": \"/news/2016-11-14.html\"\n        },\n        {\n            \"tags\": \"\",\n            \"text\": \"The highlight of this release is support for Templating constructs in pages .\",\n            \"title\": \"Urubu 1.2.0 released\",\n            \"url\": \"/news/2016-02-12.html\"\n        },\n        {\n            \"tags\": \"\",\n            \"text\": \"Maintenance release: added test dependencies to setup.py, removed Python 2\\ncompatibility layer, and relaxed the Markdown version pin to >= 3.0.\",\n            \"title\": \"Urubu 1.4.1 released\",\n            \"url\": \"/news/2026-03-30.html\"\n        },\n        {\n            \"tags\": \"\",\n            \"text\": \"This is a bug-fix release.\",\n            \"title\": \"Urubu 0.3.1 released\",\n            \"url\": \"/news/2014-03-18.html\"\n        },\n        {\n            \"tags\": \"\",\n            \"text\": \"This is a bug fix release.\",\n            \"title\": \"Urubu 0.2.1 released\",\n            \"url\": \"/news/2014-02-15.html\"\n        },\n        {\n            \"tags\": \"\",\n            \"text\": \"Python3 only.\",\n            \"title\": \"Urubu 1.4.0 released\",\n            \"url\": \"/news/2024-12-30.html\"\n        },\n        {\n            \"tags\": \"\",\n            \"text\": \"Release highlights: the urubu serve command automatically takes\\nthe baseurl option into account (Pull request #27). when an undefined anchor is referred to in a page, a\\nwarning is generated, just like for references to undefined pages (Issue #30). the layout attribute can be assigned null . In this\\nway the page content can be used by other pages, but no html is generated for\\nthe page itself. In addition, a significant effort was put into development robustness. In\\nparticular, a regression test suite has been added. This is based on py.test and tox , so that both Python 2.7 and 3.4 are verified.\",\n            \"title\": \"Urubu 0.8 released\",\n            \"url\": \"/news/2015-11-22.html\"\n        },\n        {\n            \"tags\": \"\",\n            \"text\": \"This release adds experimental support for the <mark > tag. Read more in the manual: Support for the mark tag and in this blog post .\",\n            \"title\": \"Urubu 1.1.0 released\",\n            \"url\": \"/news/2016-01-10.html\"\n        },\n        {\n            \"tags\": \"\",\n            \"text\": \"This release adds support for the process_info Python hook.  This hook\\nprovides a powerful way to assist in templating. Basically, it provides full\\nPython power to inspect, verify, modify, and add page attributes. For example,\\nyou can use it to define a default layout , or a specific layout for pages in a certain directory. Read more in the manual: The process_info hook . There is also a new keep_files configuration attribute, that lets you\\npreserve files that would otherwise be ignored.  See the documentation .\",\n            \"title\": \"Urubu 1.0.0 released\",\n            \"url\": \"/news/2016-01-01.html\"\n        },\n        {\n            \"tags\": \"\",\n            \"text\": \"Urubu 0.6 improves on wiki links: now you can link to a location within a page. Read my blog post for more info.\",\n            \"title\": \"Urubu 0.6 released\",\n            \"url\": \"/news/2015-01-28.html\"\n        },\n        {\n            \"tags\": \"\",\n            \"text\": \"\",\n            \"title\": \"Newsfeed\",\n            \"url\": \"/news/index.html\"\n        },\n        {\n            \"tags\": \"\",\n            \"text\": \"This release adds support for github-style task lists.\",\n            \"title\": \"Urubu 0.2 released\",\n            \"url\": \"/news/2014-01-22.html\"\n        },\n        {\n            \"tags\": \"\",\n            \"text\": \"Release features: Run urubu serve from the top-level project directory. Programmable file extensions for site pages Introducing Urubu Quickstart : a quick way to set up a new Urubu project.\",\n            \"title\": \"Urubu 0.4 and Urubu Quickstart released\",\n            \"url\": \"/news/2014-05-25.html\"\n        },\n        {\n            \"tags\": \"\",\n            \"text\": \"I created Urubu to solve a personal problem: how to create and maintain\\nwebsites for my projects. I open-sourced it \\\"in the hope it can be useful\\\".  On\\nthis page I list a number of websites that are powered by Urubu. By others Sigasi Insights - Documentation for Sigasi's tools. Leonardo Uieda - Website about Leonardo's professional activities. PINGA lab - Site for the PINGA lab, a research group studying inverse\\nproblems in geophysics. For others, by me Vlaamse sofrologen - Site of the flemish sophrologists (in Dutch) Troca Vins Naturels - Natural wines MyHDL MyHDL website - all about MyHDL, for users MyHDL development website - info for MyHDL developers Urubu Urubu Quickstart - the Quickstart companion site for Urubu Urubu Documentation - this site Personal Jan Decaluwe My site about professional activities Jan Decaluwe / Music My music projects Jan Decaluwe / Opinions My opinions, in Dutch\",\n            \"title\": \"Websites powered by Urubu\",\n            \"url\": \"/more/sites.html\"\n        },\n        {\n            \"tags\": \"\",\n            \"text\": \"Author The Urubu software is written by Jan Decaluwe . License The Urubu software is licensed under the GNU Affero General Public License . The content on this documentation website is licensed\\nunder the CC-BY-SA License . Development The Urubu software is developed on GitHub in the Urubu repo . The documentation is developed as a website in a gh-pages branch in the same\\nrepo. It can be accessed from the custom domain urubu.jandecaluwe.com but it\\nis hosted on GitHub Pages . Theme The theme on this website uses the Bootstrap framework,\\nand is based on stock Bootstrap . Trivia An urubu is a brazilian vulture. Urubu is also the 10th album of\\nAntonio Carlos Jobim, one of my favorite song composers.\",\n            \"title\": \"About this site\",\n            \"url\": \"/more/about.html\"\n        },\n        {\n            \"tags\": \"\",\n            \"text\": \"GitHub repository Websites powered by Urubu About this site\",\n            \"title\": \"More\",\n            \"url\": \"/more/index.html\"\n        },\n        {\n            \"tags\": \"\",\n            \"text\": \"Introduction Urubu implements a number of Markdown extensions. These extensions do not\\nchange or extend the Markdown syntax. Rather, they add interesting features by\\nprocessing and rendering the Markdown source in more sophisticated ways. The extensions are described in more detail below. Project-wide reference ids Urubu implements a Markdown extension to resolve project-wide reference ids.\\nThis means that all pages in the project are automatically available as\\nreference ids, and can be referred to using Markdown's syntax for reference\\nlinks. This feature is described in more detail in the sections Project-wide reference ids and Reference links . It is Urubu's most important extension and a fundamental feature of the\\ntool. Bootstrap-specific extensions Urubu is designed to play well with Bootstrap .  To use certain Bootstrap\\nfeatures, it has extensions that add Bootstrap classes to certain tags.\\nMore specifically, the following classes are added: table Added to the <table> tag. This defines basic styling for tables. dl-horizontal Added to the <dl> tag that defines definition lists. This creates \\na horizontal layout for definition lists in wide viewports. Support for the mark tag The html5 specification added a new tag to highlight text : the <mark> tag. For a good explanation of its purpose and the differences with the <strong> and <em> tags, see this answer on Stack Overflow . Urubu supports lightweight markup for this tag by taking advantage of a\\nredundancy in Markdown. In standard Markdown, you can either use asterisks\\n( * ) or underscores ( _ ) to indicate emphasis. With the Urubu extension, the\\nunderscore ( _ ) version is rendered using <mark> instead. This is an experimental feature that may be taken out if there are\\nserious objections, although at this point there do not seem to be\\ndisadvantages. To disable the feature, the mark_tag_support variable\\ncan be set to false in the _site.yml file.\",\n            \"title\": \"Markdown extensions\",\n            \"url\": \"/manual/extensions.html\"\n        },\n        {\n            \"tags\": \"\",\n            \"text\": \"The project directory A typical Urubu project directory looks as follows: Makefile\\n_site.yml\\n_layouts/_base.html\\n         page.html\\n         ...\\n_python/__init__.py\\n        validators.py\\n        filters.py\\ncss/...\\njs/...\\nindex.md\\nfolder1/index.md\\n        file1.md\\n        pic1.png\\n        ...\\nfolder2/index.md\\n        file2.md\\n        file3.md\\n        ... Files and directories with pathnames starting with an underscore _ are\\nspecial. They are used during processing, but excluded from the built website.\\nTheir function will be discussed below. The css and js directories are just an example of how CSS style sheets and\\njavascript files could be organized. You can use any organization that you\\nprefer. Content files are in Markdown format and should have the .md extension. You\\nhave complete freedom in organizing them in directories. However, every\\ndirectory should have an index.md file, including the top-level directory. Processing rules Urubu generates a website by processing the files and directory in the project\\ndirectory, and putting the result in a _build subdirectory. The processing\\ndepends on the pathname as follows: a Makefile is ignored and not copied to the build. files and directories starting with a dot . or\\nunderscore _ are ignored and not copied to the build. Markdown files with extension .md are converted to a\\nhtml file that is put into the build in the same relative location. all other files and directories are copied unmodified to the build in the\\nsame relative location. As a result of the project organization and the build process, the structure of\\nthe build matches the structure of the project directory.  The relative\\nlocation of all files is thus preserved. Special files and directories _site.yml This file contains site configuration info in YAML format.\\nCurrently, these are the predefined attributes: Attribute Description reflinks Holds a mapping from reference ids to link objects. baseurl Prefix for generated local URLs file_ext Change default file extension ( '.html' ) for processed .md files link_ext Change default file extension ( '.html' ) for links to site's pages ignore_patterns List of additional file names or globs to be ignored during processing keep_files List of explicit file names be kept, overriding any ignores strict_undefined Set the default behavior regarding undefined template variables Link objects, for the reflinks attribute, are a mapping with an url key that maps\\nto the link URL and a title key that maps to the link title. The baseurl option mirrors the same feature in Jekyll .  It\\nallows you to specify a prefix for all local URLs generated within your site.\\nThis is necessary when your site will be served from a URL that has more than\\njust the hostname. For example, on GitHub Pages sites are served from\\nhttp://username.github.io/project_name/, so Urubu needs to include that /project_name/ in generated URLs pointing to local content. baseurl should be specified with no beginning or trailing slashes, e.g.: baseurl : prefix The file extension attributes, file_ext and link_ext , are both usually set to the\\nsame value (i.e. '.php' ), unless the target site has .htaccess rewrite rules that\\naffect the file extensions. Examples of this are sites that internally redirect pages like www.test.com/account to www.test.com/account.htm . For this case, one would need to set file_ext to '.htm' , so Urubu generated files have the .htm extension, whereas link_ext would\\nbe set to '' , so that the a href links are directed to the files without extension. Otherwise, file_ext and link_ext should be set to the same extension, specially\\nduring testing, so that the simple web server invoked by urubu serve works fine,\\nas well as any web server that does not rewrite the file extensions of the requests. The ignore_patterns attribute specifies glob-style patterns to be ignored\\nduring processing, in addition to the default ones according to the Processing Rules . In some cases you may explicitly want to keep certain files that would normally\\nbe ignored. For example, you may have hidden files like .nojekyll to prevent\\nJekyll processing, or .htaccess and .htpasswd for access control.  You can\\nkeep such files in the build using the keep_files attribute. The strict_undefined attribute controls whether the build should\\nsilently ignore undefined template variables or raise an error when they are\\nencountered. If false or undefined, undefined template variables are treated\\nas empty strings ( '' ). If true , the build will stop and raise an error. You can define additional attributes that will be made available as\\nsite variables to the template engine. The following is an example of a _site.yml file: brand: Urubu\\n\\nreflinks:\\n    content_license:\\n        url: http://creativecommons.org/licenses/by-sa/3.0/\\n        title: CC-BY-SA License\\n    software_license:\\n        url: http://www.gnu.org/licenses/agpl-3.0.txt\\n        title: GNU Affero General Public License\\n    markdown:\\n        url: http://daringfireball.net/projects/markdown/\\n        title: Markdown\\n\\nfile_ext: '.htm'  # Change default file extension ('.html')\\nlink_ext: '.htm'  # Change default link extension ('.html') _layouts This directory contains the available layouts.\\nThey are used by the Jinja2 template engine to render html pages.\\nThe layout files should have the .html extension. _python This directory contains Python hooks for the template engine. Project-wide reference ids Urubu has the concept of project-wide reference ids.  You can use them to refer\\nto link objects in your content and configuration.  Their definition comes\\nfrom two sources: global reference ids are mapped to link objects in the _site.yml configuration file, as discussed earlier. all content pages and folders objects have reference ids. Project-wide references ids live in a single namespace. For pages and folders,\\nthe id is a root-relative pathname starting with a slash / and without file\\nextension. By convention, global reference ids should not start with a / . In your content and configuration info, you can also use relative reference\\nids. Urubu will resolve them depending on the file location in the project. In\\ncase of a name clash with a global reference id, you will have to disambiguate\\nby adding pathname components. In accordance with Markdown conventions, reference ids are case-insensitive. Content files Content files are Markdown files with extension .md . They should start with\\nYAML front matter that defines a number of attributes, as in the following example: ---\\ntitle: Read me first\\nlayout: page\\ndate: 2014-01-15\\n---\\n<Markdown content> The following attributes are predefined: Attribute Description title Specifies the page title. Mandatory. layout Specifies the layout, without the .html extension, or null . Mandatory. date Specifies the date in YYYY-MM-DD format. Optional. tags A tag or list of tags for the content. saveas Allows overriding of the output filename. The layout attribute is mandatory, but can be given a null value.\\nThis is useful when the page content is used by other pages, but\\nno html output is required for the page itself. In addition, you can add arbitrary user-defined attributes. All attributes\\nare made available as page object attributes to the template engine. Markdown in attributes Optionally, you can use markdown format in front matter attributes.  Markdown\\nprocessing is enabled by adding a .md suffix to the attribute. The resulting\\nhtml code will be stored in a synthesized attribute without the .md suffix. For example: ---\\ntitle:\\nlayout: page\\nsummary.md: |\\n    A summary of the page items as a list:\\n\\n    * item 1\\n    * item 2\\n    * item 3\\n--- After processing, the page object will have a summary attribute with the html\\ncode. Index files Index files with basename index.md are a special kind of content files.  They\\nare used to specify the attributes and the content of a directory. There are\\ntwo options to specify the content, explicitly with the content attribute or\\nimplicitly using the order attribute. Attribute Description content Defines the content explicitly as a list of reference ids or local link objects. order Defines the attribute by which the content in the directory should be ordered. reverse Optional boolean attribute defines reverse order or not. Default is false . content and order are mutually exclusive; you should use one of the two options. A local link object is a mapping with either a url key to an url, or a ref key to a reference id as mandatory items. In addtion, you can specify a title\\nwith a title key. The ordering attribute can be predefined or user-defined, but it should be\\nspecified in each content file in the directory.  As an example, you can\\nspecify that the content of a directory should be ordered as blog by the\\nfollowing front matter in the index file: ---\\ntitle: Blog\\nlayout: blog_index\\norder: date\\nreverse: true\\n--- Tag directory The optional top-level directory called tag has a predefined meaning.  Urubu\\nuses the corresponding folder in the build to hold the tag-related content view\\nthat it generates automatically. You can use the index file to set attributes\\nsuch as the layout . However, the content will be generated by Urubu\\nautomatically and needs not be set.\",\n            \"title\": \"Project structure\",\n            \"url\": \"/manual/structure.html\"\n        },\n        {\n            \"tags\": \"\",\n            \"text\": \"There are times when an index file will contain more entries than you want to include in a single page.  Pagination allows Urubu to automatically split that page into separate pages in your site. Usage To enable pagination, add an items_per_page attribute to the front matter of an index page.  Also add either items_index or items_filter to say where the list of items should pull from. To pull from files in the current directory, with 5 items per page: items_per_page: 5\\nitems_index: this To pull from a different index contents: items_per_page: 5\\nitems_index: news\\\\index.md To filter the contents: items_per_page: 5\\nitems_filter: mysteries time-loop New Page Variables Each of the pages generated by pagination will have three new variables available to layouts. numpages - the number of total pages generated prevpage - the previous page in the chain nextpage - the next page in the chain Example pagination controls The following is a sample of generating pagination controls in a layout:\",\n            \"title\": \"Pagination\",\n            \"url\": \"/manual/pagination.html\"\n        },\n        {\n            \"tags\": \"\",\n            \"text\": \"Introduction Welcome to Urubu! My name is Jan Decaluwe and I am Urubu's author. Urubu is a micro CMS for static websites.  The qualification \\\"micro* means that\\nit has a small feature set, defined by what I need for my purposes.  To know\\nwhether it is the right tool for you, check out Overview . Urubu's design philosophy is radical reuse of great software and ideas from\\nothers. In the following sections, I will describe its concepts and how\\nthey are implemented. Authoring In Urubu, content is entered in Markdown format. This is a lightweight format\\nthat feels like a natural way to write content in plain text. Markdown support in Urubu is implemented by the Python-Markdown package, that\\nconverts the format to html. Urubu also supports the industry standard Markdown Extra extensions, with useful features such as tables and definition\\nlists. Urubu supports nicely rendered code blocks, an essential feature for software\\nprojects documentation. Fenced Code Blocks are provided by the Markdown Extra\\nextensions.  This lets you enter language-specific code blocks without the need\\nfor indentation. The CodeHilite extension of Python-Markdown enables\\nlanguage-specific syntax highlighting via the Pygments library. Configuration The configuration options in Urubu are kept minimal, in the spirit of \\\"There\\nshould be one obvious way to do it\\\".  Where used, the configuration format is\\nYAML, implemented by the PyYAML library. Configuration is mostly distributed, in the sense that every content file\\nshould have a front matter , that specifies the title, layout, date and so on.\\nThis idea is found in many tools, but Urubu reuses the technique from Jekyll .\\nYAML front matter is specified between two sets of triple dashes. Urubu extends this configuration technique by treating index files specially.\\nEach folder in the site should have an index file (called index.md ) that\\nspecifies the ordered folder content. This can be done explicitly by listing\\nthe files, or implicitly by specifying how the files should be ordered. Templating With templates you specify the html layout for a particular type of a page.\\nIn a template you can mix plain html with control structures and variable\\ninterpolation. The actual html page is generated by evaluating the template\\nwith the appropriate evaluation context provided by Urubu. Urubu uses the Jinja2 templating language library. Theming A theme refers to the general look and feel of a web site. Partially this is\\ndefined by the templates as discussed above. The other part is defined in style\\nsheets, with a technique known as Cascading Style Sheets (CSS). Basically\\nthis is a sophisticated technique to define how the various html elements\\nshould be rendered by the web browser. With Urubu, you are free to design and use your own style sheets. However, it\\nhas been developed with Bootstrap in mind.  Bootstrap is a\\nprofessionally-designed framework with lots of useful predefined styles\\ncomponents. Urubu generates html that is Bootstrap-friendly, and infers the\\nappropriate template variables for certain Bootstrap components. A great feature of Bootstrap is that it is \\\"mobile first\\\". This means that your\\nwebsite will automatically adapt to any platform - smartphone, tablet or\\nwidescreen. A notable project is Bootswatch . This is a set of themes designed as drop-in\\nreplacement for the stock bootstrap styles. This gives you an effortless\\noption to change the look and feel of your website. Navigation I am a big fan of Steve Krug's book Don't make me think ,\\nand I feel that the lessons from this book are still often ignored.\\nActually, the lack of focus of other tools on these ideas are the\\nmain reason why I wrote Urubu. A main concept is good navigation. Urubu supports various techniques\\nby inferring navigation-oriented variables and making them available to\\nthe template engine. Moreover, they work well with some well-defined\\nand nicely style Bootstrap navigation components. In this way,\\nyou can easily implement the following: a navbar for navigation between major sections table of contents of a page in a sidebar breadcrumbs previous and next pager buttons active page or section highlighting Other techniques, independent from Urubu, can also help. Note for example that\\nthe sidebar on this page is \\\"affixed\\\": it moves as you scroll through the page,\\nbut never leaves the viewport. (Note: this description assumes that the\\nviewport is wide enough to accomodate the sidebar.) At any time, the full\\nstructure of the page remains visible and available for navigation. This was\\nimplemented by borrowing code from the Bootstrap theme. Project-wide reference ids Markdown defines the concept of a reference link. This is a way to refer to a\\npage or an url using a reference id.  The syntax of a reference link is a\\nreference id between square brackets, for example [intro] . Urubu supports the concept of project-wide reference ids.  First, global\\nreference ids can be defined in the site configuration file.  Moreover, all\\ncontent pages and folders have a corresponding reference id: their pathname\\nwithout extension. In this case, reference links are similar to wiki links, the\\ntypical way to link between pages in wiki's. Standard Markdown only resolves reference ids that are defined within the file.\\nUrubu extends this behavior by resolving them over the project.  This feature\\nis implemented as a Markdown extension. Note that it doesn't require new syntax. Project-wide reference ids are a unique Urubu feature. One of the messages of Steve Krug's book is that the text that you click should\\nbe the title of the page where you land. Therefore, when you use reference\\nlinks, Urubu will insert the page title in the generated html (unless you\\nspecify an alternative text explicitly). Development and deployment You can develop a Urubu project is like a software project, from a git or\\nmercurial repository.  This gives you best-in-class revision control.\\nMoreover, all the workflows that these systems provide are available. For\\nexample, you can develop your website collaboratively on GitHub or Bitbucket .  Finally, it is easy to automate deployment, triggered by a push\\nof the generated site to an upstream repository.\",\n            \"title\": \"Concepts\",\n            \"url\": \"/manual/intro.html\"\n        },\n        {\n            \"tags\": \"\",\n            \"text\": \"Urubu works with modern versions of Python 2 and Python 3 using the same\\ncodebase. More specifically, it requires Python 2.7 or Python 3.4. You can install Urubu using pip: pip install urubu To upgrade an existing installation to the\\nlatest version, use: pip install --upgrade urubu If pip is not yet available on your system, follow the pip installation\\ninstructions . You may want to install Urubu in an isolated environment using virtualenv . Urubu depends on a number of libraries that will automatically be installed if\\nnot yet available: Python-Markdown , PyYAML , Pygments and Jinja2 . For a quick way to set up a new Urubu project, visit Urubu Quickstart .\",\n            \"title\": \"Installation\",\n            \"url\": \"/manual/install.html\"\n        },\n        {\n            \"tags\": \"\",\n            \"text\": \"Content In Urubu, content is entered in Markdown format. This is a lightweight format\\nthat feels like a natural way to write content in plain text. Stock markdown has a small feature set. For example, it does not even\\nsupport tables. For this reason, Urubu supports some extensions. In particular,\\nit supports the Markdown Extra extensions that have become an industry\\nstandard, as well as a few others. The most notable supported extensions are: Tables Attribute lists Abbrevations Definition Lists Fenced Code Blocks CodeHilite Code Urubu intents to offer good support for software projects. Therefore, it\\nsupports nicely rendered code blocks. One part of the solution is Fenced Code Blocks , provided by the Markdown Extra\\nextensions.  This lets you enter language-specific code blocks without the need\\nfor indentation. The second part is the CodeHilite extension of Python-Markdown.  This\\nextension enables language-specific syntax highlighting through the Pygments library. To properly render the highlighted code, you will need to add a syntax.css stylesheet. A good solution is to use the syntax stylesheet from\\nGitHub . Reference links Stock Markdown supports \\\"reference links\\\" that are resolved by defining them\\nlater in the file. For example, you can use [urubu] in your content and\\nfurther on define it as follows: [urubu]: http://urubu.jandecaluwe.com This is nice for readability, but it all remains file based. Urubu extends this behavior by automatically resolving Project-wide reference ids .  This feature is implemented as a Markdown extension. Note that\\nit doesn't require a syntax change. It enables page linking like in wikis. In addition, you can add a fragment, like #some-anchor , to the reference id.\\nThis represents a link to an anchor within a page.  Since Urubu automatically\\nadds slugified anchors to markdown headers, you can use those as targets.  For\\ninstance, [authoring#reference-links] is a link to the current Reference links section.  You can also define your own anchors\\nusing Attribute lists . Markdown supports reference links without a text.  In that case, Urubu inserts\\nan appropriate text in the html.  For a reference link with no fragment, the\\ntitle of the page is inserted.  For a reference link with a fragment, the\\nfragment text is inserted. To make the result more readable, you can use\\nnon-slugified fragment text.  For example, [authoring#Reference links] also\\nlinks to the present section, and is rendered as Reference links .\",\n            \"title\": \"Authoring\",\n            \"url\": \"/manual/authoring.html\"\n        },\n        {\n            \"tags\": \"\",\n            \"text\": \"Overview Writing in Markdown is great, but sometimes you run into limitations. For those\\ncases, Urubu supports a feature gratefully borrowed from Jekyll : using\\ntemplating constructs in content pages. Basically, all content pages are processed by the templating engine before\\ngoing to the Markdown processor. The full power of Jinja2 is thus available\\nin your content pages. The usage of templating constructs in content pages is best explained with\\nexamples. Therefore, we will start with some examples, and review the concepts\\nafterwards. Example usage Task list icons Suppose you want to emulate GitHub style task lists, as follows: Task 1 Task 2 Task 1 An icon is used to show whether a task is still open or not. We can support this by defining well-named reusable variables in a dedicated\\ntemplate file, as follows: {% set open = '<i class=\\\"fa fa-square-o\\\"></i>' %}\\n{% set done = '<i class=\\\"fa fa-check-square-o\\\"></i>' %} Variables open and done now hold HTML code that refers to icons. In these\\nexamples, I use the Font Awesome icon  library. You will need to add the\\nappropriate reference to the icon stylesheet in your base template. Suppose these variables are defined in the file _layouts/util.html . We can\\nimport them in any content page as follows: {% from 'util.html' import open, done %} Note that Urubu knows to look up util.html in the _layouts/ directory,\\nbecause that is where templates should be located. Within the content page, we can use the variables as follows, to get the result\\nas above: * {{ open }} Task 1\\n* {{ done }} Task 2\\n* {{ open }} Task 1 General icon interface Suppose you want a more general interface to icons, so that you can easily\\nrefer to any icon by name. This can be done with a Jinja2 macro. A macro is\\nlike a function that can take parameters: {% macro fa(name, class='') %}\\n<i class=\\\"fa fa-{{name}} {{class}}\\\"></i>\\n{% endmacro %} Again, we can import the macro fa in content pages: {% from 'util.html' import fa %} Then we can use it as follows, for example to refer to the Github icon: {{ fa('github') }} This gives the following result: We can pass additional CSS classes via the optional class parameter. The\\nfollowing example gets the alternative Github icon in twice the basic size: {{ fa('github-alt', 'fa-2x') }} This gives the following result: Figure Standard Markdown does not support the HTML5 <figure> tag, and the related <figcaption> tag to add captions. We can support this with the following\\nmacro: {% macro figure(fn, caption='') %}\\n<figure>\\n  <img src=\\\"/img/{{fn}}\\\" class=\\\"img-responsive\\\" alt=\\\"{{caption}}\\\">\\n  {% if caption %}\\n  <figcaption class=\\\"text-center\\\">{{caption}}</figcaption>\\n  {% endif %}\\n</figure>\\n{% endmacro %} This macro assumes that images will be placed in an img/ directory. In\\naddition, it makes the image responsive using a Bootstrap class, and centers\\nthe optional caption.  Again, we can use the macro by importing: {% from 'util.html' import figure %} This is an example usage: {{ figure('urubu.jpg', \\\"An Urubu - a brazilian vulture\\\") }} This gives the following result: An Urubu - a brazilian vulture Templating concepts Template processing is done first The examples illustrate how you can use template variables and macros to\\nconstruct HTML code. However, it is important to understand that template\\nprocessing is done first, before Markdown processing (for good reasons).  Thus,\\nthe HTML code from variables and macros first becomes part of Markdown source\\ncode.  This works well because Markdown is designed to handle HTML\\ntransparently. Full template power available The examples demonstrate the use of variables, macros, and imports.  This is\\nmerely the beginning: in fact, the full power of Jinja2 templates is available.\\nThis is a vast subject. To learn what is possible, see the Jinja2 Template\\nDesigner Documentation . Context variables When Urubu invokes template processing on a page, it automatically passes\\ncertain context variables.  This works exactly like for regular templates, as\\ndescribed in Context Variables . Basically, variable this provides access to the page attributes, and variable site provides access to\\nthe global site attributes. Template delimiters Template support introduces new delimiters as follows: {# ... #} for comments not included in the output {{ ... }} for expressions, to print to the output {% ... %} for statements These delimiters deserve some attention. First, the comment delimiters are interesting because they add a functionality\\nthat is not available in Markdown: comments that will not show up in the\\noutput. Secondly, as always with delimiters, there is the problem of how to escape them\\nif you want to use them literally in source code, without interpretation. For an inline literal or snippet you can use literal expressions.  For example,\\nto get {{ you can write {{ '{{' }} . For a larger section, you can mark a block raw . For example, to\\nget the list shown earlier in this section, you can write: {% raw %}\\n* `{# ... #}` for comments not included in the output\\n* `{{ ... }}` for expressions, to print to the output\\n* `{% ... %}` for statements\\n{% endraw %}\",\n            \"title\": \"Templating constructs in pages\",\n            \"url\": \"/manual/templating-in-pages.html\"\n        },\n        {\n            \"tags\": \"\",\n            \"text\": \"Overview Templates define the html layout for a particular page type.  In a template you\\ncan mix plain html with control structures and variable interpolation. The html\\npage is generated by evaluating the template with the appropriate evaluation\\ncontext, provided by Urubu. Templates are part of the website project setup. If you are a content\\ncontributor, you may not have to worry about them.  All you have to do is\\nspecify the appropriate layout name in the YAML front matter of your content\\nfiles. In general, it is better to do programming in Python code.  However, for the\\npurpose of generation of pages in a format such as html, this is not very\\npractical.  Therefore, a template contains both html and programming\\nconstructs. Template programming is good for common tasks like the following: iteration over a list of items testing whether an item is defined filtering items, possibly with user-defined filters comparing the loop item object with the current object, to check whether it is active Urubu interacts with templates by providing an evaluation context with the\\nappropriate objects.  The goal is to make the job of the templates as easy as\\npossible with ready-to-use object attributes. The template library Urubu uses the Jinja2 templating language library. Jinja2 has great documentation and you should\\ncheck it out when using templates in Urubu. A great feature of Jinja2 is template inheritance. With this technique,\\nyou can easily generate small variations of a parent template. Link objects Description Link objects are the primary objects that you use in templates. \\nThey come in a number of flavours: Link object Description global link object Defined in the _site.yml file. local link object Defined locally in the content attribute of an index file. folder object Corresponds to a project subdirectory. page object Corresponds to a Markdown content file. tag folder object Dedicated folder for content ordered by tag. tag object Represents content corresponding to a specific tag. Attributes Link objects have attributes. The defined attributes depend on the type of the\\nlink object. The following attributes are common to all link objects : Attribute Description url The url of the object. title The title of the object. All link objects except local link objects also\\nhave an id attribute: Attribute Description id The unique id by which the object is known in the project. Folder and page objects have the following attributes: Attribute Description fn The pathname of the file or directory corresponding the object. components The components of the object's pathname, without file extension, as a list. mdate Modification date Folder objects also have a content attribute: Attribute Description content The content of the folder as a list of page & folder objects. In addition, all attributes specified in the YAML front matter\\nof the corresponding index file will be available as attributes of\\nthe folder object. Page objects have the following additional attributes: Attribute Description layout The template to render the object as a html file. body The page content in html. toc The table of contents of the page as an unordered html list. breadcrumbs Breadcrumbs as a list. The current page object is at position 0, the containing folder objects are at the higher positions. prev The previous page object in the content, or None if there is none next The next page object in the content, or None if there is none In addition, all attributes specified in the YAML front matter of the\\ncorresponding content file are available as attributes of the page object. Index pages Index pages are associated with index.md files. They are special in the sense\\nthat they define the attributes and the content of a folder. Therefore, they\\nhave the same content attribute as the corresponding folder object. Tag objects Tag objects are inferred by Urubu automatically. They list the content\\ncorresponding to a tag. Attribute Description id /tag/{{tag}} components [tag, {{tag}}] title tag tag tag layout tag content List of page & folder objects corresponding to tag . The tag content is ordered by date, most recent first. If the date is not\\ndefined, the modification date is used as a fallback ( mdate attribute). The layout name is predefined to tag . You have to provide the tag.html template to trigger the rendering of tag objects. In the simplest case, it\\nmay be sufficient to inherit from a general index layout. Tag folder object The tag folder object is a special top-level folder whose id is /tag . Urubu\\ninfers tag-related content for this folder automatically. You can optionally create the corresponding directory in the source code, and\\nuse the index file to set attributes such as the layout . In any case, Urubu\\nwill create the object if tags are used, and infer the content attribute. Attribute Description id /tag components [tag] content A list of tag objects, inferred by Urubu. The content is ordered according to the content size of tag objects,\\nthe largest one first. Context variables Urubu makes the context available to templates with\\ntwo context variables. site This variable holds site-wide information. It has one predefined attribute: Attribute Description reflinks A mapping from all reference ids to link objects. Note that the id of the root object is / . Starting from there,\\nyou can traverse the whole site. In addition, all the attributes specified in the _site.yml file\\nwill be available as attributes of the site variable. this This variable holds the current page or tag object.\",\n            \"title\": \"Templates\",\n            \"url\": \"/manual/templates.html\"\n        },\n        {\n            \"tags\": \"\",\n            \"text\": \"Alt Layouts are for when you want to create more than one physical .html file per .md file.  This is most useful when the additional .html files do not depend on the content of the original page, but on the front matter attributes. Usage To enable alt layouts for a .md file, add an alt_layouts attribute to the front matter of a page.  This is a list of objects containing two attributes, layout and location . The layout attribute gives the name of an alternate layout to use.  The location attribute gives the directory where the .html file should be put.  That directory must already exist in your directory structure. Also add either items_index or items_filter to say where the list of it Example The following is a sample of generating two additional .html files for a product page: layout: product\\n\\nalt_layouts:\\n    - layout: confirmation\\n      location: confirmations\\n    - layout: product_details\\n      location: details If the original foo.md file was in the products directory, three .html files would be generated: products/foo.html\\nconfirmations/foo.html\\ndetails/foo.html\",\n            \"title\": \"Alt Layouts\",\n            \"url\": \"/manual/alt_layouts.html\"\n        },\n        {\n            \"tags\": \"\",\n            \"text\": \"The urubu command After installation, an urubu command will be available. If you prefer, you can call the installed package as a script using python -m\\nurubu , with the same effect. Subcommands The urubu command supports two subcommands. Run these commands from the top\\nlevel project directory. urubu build Build the website.  The website will be in the _build subdirectory. urubu serve Start a local webserver to serve the website as you develop it.  The website\\nwill be available at localhost:8000 . Run this command in a separate terminal\\nwindow, and kill the server when you are done. Development flow I prefer to put the  commands in a Makefile, so that I can\\nrun make to build and make serve to start a server. Currently, you have to build the site explicitly to see\\nthe development changes in the browser.\",\n            \"title\": \"Project building\",\n            \"url\": \"/manual/building.html\"\n        },\n        {\n            \"tags\": \"\",\n            \"text\": \"Introduction A static site cannot natively support dynamic services. Fortunately, it is\\noften an elegant solution to integrate third party solutions within a\\nstatic site. One of the most prominent examples is Search. One possibility is integrating an\\nexternal service such as Google Custom Search. The disadvantage is that one has\\neither to pay for it or accept the branding. As an alternative, Urubu supports Tipue Search, an open source solution based\\non javascript executed in the browser. As part of the site building, Urubu\\ngenerates a view on the searchable content.  In this chapter, we describe how\\nthe integration is accomplished. Installing Tipue Search The first step is to download the Tipue Search distribution. It contains a tipuesearch directory. Copy that directory to the top level of your project.\\nAs usual, Urubu copies it to the built website, so that the required\\nstylesheets and javascript files are available in the expected location. Do not rename the tipuesearch directory. The existence of that\\ndirectory triggers Urubu's support. The search box The next step is to create a search box. Suppose you want to make it part of\\nthe navbar, as in the present site. This is achieved with the following html\\ncode: <form class=\\\"navbar-form navbar-left\\\" action=\\\"/search.html\\\" role=\\\"search\\\">\\n  <div class=\\\"form-group\\\">\\n    <input type=\\\"text\\\" required name=\\\"q\\\" id=\\\"tipue_search_input\\\" class=\\\"form-control\\\" placeholder=\\\"Search\\\"> \\n   </div>\\n</form> The name and the id values in the <input> tag of the search box are\\nmandatory for Tipue Search. The typical place for this code would be in the\\nnavbar code in a basic layout for the site. The search results page The next step is to create a search result page. To integrate it we first\\ncreate a dedicated layout using template inheritance.  Let us assume that is\\nthere is  a head_addon and a body_addon block to add links and scripts to\\nthe <head and the <body> section respectively. The search.html layout is\\nthen as follows: {% extends \\\"page.html\\\" %}\\n\\n{% block head_addon %}\\n<link href=\\\"tipuesearch/tipuesearch.css\\\" rel=\\\"stylesheet\\\">\\n{% endblock %}\\n\\n{% block body_addon %}\\n<script src=\\\"tipuesearch/tipuesearch_content.js\\\"></script>\\n<script src=\\\"tipuesearch/tipuesearch_set.js\\\"></script>\\n<script src=\\\"tipuesearch/tipuesearch.min.js\\\"></script>\\n<script>\\n$(document).ready(function() {\\n     $('#tipue_search_input').tipuesearch({\\n          'mode': 'json',\\n          'contentLocation': 'tipuesearch/tipuesearch_content.json' \\n     });\\n});\\n</script>\\n{% endblock %} We inherit from a page.html layout. In the head_addon block, we add\\nthe Tipue Search style sheet for the result page. In the body_addon page we\\nadd the Tipue Search java script modules, and the inline script that generates\\nthe results. This setup assumes that the jQuery javascript library itself is already loaded\\nin the body of the parent layout, with a line like the following: <script src=\\\"https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js\\\"></script> If you use the Bootstrap javascript modules, that will be the case. In the top level project directory, we can then create a search.md files that\\nuses the search.html layout and has the generated search results as its\\ncontent: ---\\ntitle: Search results\\nlayout: search\\n---\\n\\n<div id=\\\"tipue_search_content\\\"></div> After building the site, there will be a functional search.html file in the\\ntop-level directory. Note The tipuesearch.css stylesheet also contains styling for the search\\nbox. The result may be undesirable if you use your own styling, like in the\\npresent website. The workaround is to comment the search box styling out. The search content The searchable content itself is a JSON object defined in the file tipuesearch/tipuesearch_content.json .  This is where Urubu kicks in: this\\nfile is generated automatically. Extracting meaningful searchable content from a web site is not trivial. A\\ndesign decision for Urubu was to use modern techniques to help with this. In\\nparticular, Urubu will only consider content that is wrapped with the <main> tag. This is a relatively new html5 tag with exactly the purpose to indicate\\nthe page content explicitly. The site designer should therefore review the site layouts and wrap all\\nsearchable content with the <main> tag. Typically, this is the region were\\nthe this.body variable is called in a template. Note The <main> tag is not supported in IE11. A popular workaround is to\\nuse the html5shiv.js Javascript module. Layouts based on Bootstrap do\\nthis already.\",\n            \"title\": \"Adding Search\",\n            \"url\": \"/manual/search.html\"\n        },\n        {\n            \"tags\": \"\",\n            \"text\": \"Introduction Urubu supports Python hooks to make templating easier. Upon a build, it tries\\nto import a _python module or package, and looks for hook variables with\\npredefined names.  The following hooks are defined: Variable Description filters A mapping from filter names to filter functions. process_info A function to inspect and process content file info. You have to make sure that these names are exported correctly.  For example, if\\nyou organize _python as a package, it could look as follows: _python/\\n    __init__.py\\n    filters.py\\n    hooks.py If filters is defined in filters.py , and process_info in hooks.py , the __init__.py file would contain: from .filters import filters\\nfrom .hooks import process_info The filters hook Filters functions should be defined as custom filters in\\nJinja2 . As a typical example, consider a filter that converts a date value into a\\ndesired format. The filters.py module would contain the following: def dateformat(value, format=\\\"%d-%b-%Y\\\"):\\n    return value.strftime(format)\\n\\nfilters = {}\\nfilters['dateformat'] = dateformat You can then use the dateformat filter in templates. The process_info hook The interface of the process_info function is as follows: def process(info, site):\\n    ... This function is called for every content file in the project. The site variable provides access to the site variables defined in _site.yml . The info variable contains the file content info as it is being\\nconstructed by Urubu. At the moment of the call, the following\\ninferred attributes are available: Attribute Description id The unique id by which the object is known in the project. url The url of the object. components The components of the object's pathname, without file extension, as a list. fn The pathname of the file or directory corresponding the object. mdate Modification date In addition, all attributes specified in the YAML front matter of the\\ncorresponding content file are available as attributes of the info object. The site and info variables are Python dictionaries. This means that the\\nattributes are available via key access, not via Python attribute access.  This\\nis because the YAML reader constructs Python dictionaries from the front\\nmatter. The process_info function can can inspect the attributes, verify and modify\\nthem, and add additional ones. process_info examples Defining a default layout It can be handy to define a default layout for the case this mandatory\\nattribute is not specified in the content file.  Suppose we want a default index layout for index files, and a page layout for other files: def process_info(info, site):\\n    if 'layout' not in info:\\n        if info['components'][-1] == 'index':\\n            info['layout'] = 'index'\\n        else:\\n            info['layout'] = 'page' Defining a specific layout Suppose we have a blog directory and we want to automatically define a\\nspecific post layout for blog posts: def process_info(info, site):\\n    components = info['components']\\n    if len(components) == 2:\\n        if components[0] == 'blog' and components[1] != 'index':\\n            process_post(info)\\n\\ndef process_post(info):\\n    if not 'layout' in info:\\n        info['layout'] = 'post'\",\n            \"title\": \"Python hooks\",\n            \"url\": \"/manual/hooks.html\"\n        },\n        {\n            \"tags\": \"\",\n            \"text\": \"Concepts Installation Project structure Authoring Project building Templates Templating constructs in pages Python hooks Markdown extensions Adding Search Pagination Alt Layouts\",\n            \"title\": \"Manual\",\n            \"url\": \"/manual/index.html\"\n        },\n        {\n            \"tags\": \"\",\n            \"text\": \"The source structure of a project is preserved in the built website, and all\\nnon-markdown content files are copied verbatim. See Project structure . Therefore, you can put media files at any convenient place in the source, and\\nrefer to them using Markdown image syntax, with a relative or root-relative\\npath to the source file.\",\n            \"title\": \"How to add media files?\",\n            \"url\": \"/faq/media-files.html\"\n        },\n        {\n            \"tags\": \"\",\n            \"text\": \"To generate a sitemap you need to do the following: Create a markdown file called sitemap.md like this: ---\\ntitle: sitemap\\nlayout: sitemap\\nchangefreq: monthly\\npriority: 1.0\\nxmlns: http://www.google.com/schemas/sitemap/0.84\\nsaveas: sitemap.xml\\n--- Provide a sitemap.html in the _layouts directory, with looking something like the following: <?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?>\\n<urlset xmlns=\\\"{{ this.xmlns }}\\\">\\n{% for t in site.reflinks %}\\n    {% if site.reflinks[t].fn and not site.reflinks[t].hidden %}\\n    <url>\\n        <loc>{{ site.hostname }}{{ site.reflinks[t].url }}</loc>\\n        <changefreq>{{ this.changefreq }}</changefreq>\\n        <priority>{{ this.priority }}</priority>\\n    </url>\\n    {% endif %}\\n{% endfor %}\\n</urlset> What makes this work is for the main part the saveas parameter in the sitemap.md file, which overrides the default output filename with sitemap.xml instead of sitemap.html . If you add other sitemaps don't forget to specify distinct id and saveas for each one, to prevent Ambiguous reference id errors.\",\n            \"title\": \"How do I make a sitemap?\",\n            \"url\": \"/faq/sitemap.html\"\n        },\n        {\n            \"tags\": \"\",\n            \"text\": \"Yes, Urubu support links to page sections.\\nRead this blog post to learn how.\",\n            \"title\": \"Can I specify a link to a section in a page?\",\n            \"url\": \"/faq/link2section.html\"\n        },\n        {\n            \"tags\": \"\",\n            \"text\": \"Yes: you can easily use MathJax with Urubu. Read more about it here .\",\n            \"title\": \"Is there a way to render formulas?\",\n            \"url\": \"/faq/formulas.html\"\n        },\n        {\n            \"tags\": \"\",\n            \"text\": \"Urubu is licensed under the GNU Affero General Public License . The first thing to understand is that this license applies only to the Urubu\\nsoftware. It has no implications on website projects managed with Urubu. You\\nare free to license your projects in any way you choose. The license only becomes relevant when you release a modified version of the\\nUrubu software to the public in some way. In that case, you have to release the\\nmodified source code also, under the same license. With the original GPL, a release meant shipping software to user that would\\ninstall and run it locally.  However, these days software is often made\\navailable by running it on a server.  Under the original GPL, there would be no\\nrequirement to release the modified source code in such as case. This clearly\\nviolates the spirit of the GNU Licenses. The GNU Affero General Public License fixes that problem. If you make the modified software\\navailable by running it on a server, you have to make the modified source code\\navailable to the users under the same license.\",\n            \"title\": \"What are the licensing requirements?\",\n            \"url\": \"/faq/licensing-requirements.html\"\n        },\n        {\n            \"tags\": \"\",\n            \"text\": \"Urubu supports tags. To use them, you need 2 things: Assign the desired tags to content pages, by assigning a tag or\\na list of tags to the tags attribute.  See also: Content files . Provide a tag.html layout in the _layouts directory. It is the existence of the tag.html layout that triggers the generation of\\ntag-related content. For example, if you have used tags bar and foo in the\\nproject, you will see that the _build folder contains tag/bar/index.html and tag/foo/index.html . Those index files use the tag.html layout to show \\nthe content related to a tag. Presumably, there is already a general index.html layout to show content in a\\nfolder. An initial tag.html layout can then be a one-liner by using template\\ninheritance, like so: {% extends \\\"index.html\\\" %} Of course, you may want to specialize the tag.html layout\\nfurther to better reflect the purpose. Urubu also generates the corresponding tag objects so that you can use them in\\nyour layouts. This is described in Tag objects . Note that the _build will contain a top-level tag folder, even when the\\nsource directory does not. Optionally, you can define the tag folder in the\\nsource also.  You can then define an index file and set attributes such as the layout to display the tags themselves.  However, the content will be\\ngenerated by Urubu automatically and needs not be set. See also: Tag folder object .\",\n            \"title\": \"How to use tags?\",\n            \"url\": \"/faq/tags.html\"\n        },\n        {\n            \"tags\": \"\",\n            \"text\": \"Urubu version 0.8 and higher The urubu serve command  takes the baseurl setting automatically into\\naccount. Urubu version 0.7 The urubu serve server does not include the baseurl prefix when serving\\npages so sites that use baseurl can't be previewed locally using urubu\\nserve .  An alternative option is to use tservice , which includes an option to\\nserve a local static site with a URL prefix.  To use tservice with an Urubu\\nsite instead of using urubu serve call tserve with the prefix option, e.g. tserve --prefix <baseurl> _build Where <baseurl> is your site's particular prefix.\",\n            \"title\": \"How to preview sites that use the baseurl option?\",\n            \"url\": \"/faq/baseurl-preview.html\"\n        },\n        {\n            \"tags\": \"\",\n            \"text\": \"What are the licensing requirements? How to add media files? How to preview sites that use the baseurl option? Can I specify a link to a section in a page? Is there a way to render formulas? How to use tags? How do I make a sitemap?\",\n            \"title\": \"FAQ\",\n            \"url\": \"/faq/index.html\"\n        }\n    ]\n}"
  },
  {
    "path": "doc/_build/tipuesearch/tipuesearch_set.js",
    "content": "\n/*\nTipue Search 5.0\nCopyright (c) 2015 Tipue\nTipue Search is released under the MIT License\nhttp://www.tipue.com/search\n*/\n\n\n/*\nStop words\nStop words list from http://www.ranks.nl/stopwords\n*/\n\nvar tipuesearch_stop_words = [\"a\", \"about\", \"above\", \"after\", \"again\", \"against\", \"all\", \"am\", \"an\", \"and\", \"any\", \"are\", \"aren't\", \"as\", \"at\", \"be\", \"because\", \"been\", \"before\", \"being\", \"below\", \"between\", \"both\", \"but\", \"by\", \"can't\", \"cannot\", \"could\", \"couldn't\", \"did\", \"didn't\", \"do\", \"does\", \"doesn't\", \"doing\", \"don't\", \"down\", \"during\", \"each\", \"few\", \"for\", \"from\", \"further\", \"had\", \"hadn't\", \"has\", \"hasn't\", \"have\", \"haven't\", \"having\", \"he\", \"he'd\", \"he'll\", \"he's\", \"her\", \"here\", \"here's\", \"hers\", \"herself\", \"him\", \"himself\", \"his\", \"how\", \"how's\", \"i\", \"i'd\", \"i'll\", \"i'm\", \"i've\", \"if\", \"in\", \"into\", \"is\", \"isn't\", \"it\", \"it's\", \"its\", \"itself\", \"let's\", \"me\", \"more\", \"most\", \"mustn't\", \"my\", \"myself\", \"no\", \"nor\", \"not\", \"of\", \"off\", \"on\", \"once\", \"only\", \"or\", \"other\", \"ought\", \"our\", \"ours\", \"ourselves\", \"out\", \"over\", \"own\", \"same\", \"shan't\", \"she\", \"she'd\", \"she'll\", \"she's\", \"should\", \"shouldn't\", \"so\", \"some\", \"such\", \"than\", \"that\", \"that's\", \"the\", \"their\", \"theirs\", \"them\", \"themselves\", \"then\", \"there\", \"there's\", \"these\", \"they\", \"they'd\", \"they'll\", \"they're\", \"they've\", \"this\", \"those\", \"through\", \"to\", \"too\", \"under\", \"until\", \"up\", \"very\", \"was\", \"wasn't\", \"we\", \"we'd\", \"we'll\", \"we're\", \"we've\", \"were\", \"weren't\", \"what\", \"what's\", \"when\", \"when's\", \"where\", \"where's\", \"which\", \"while\", \"who\", \"who's\", \"whom\", \"why\", \"why's\", \"with\", \"won't\", \"would\", \"wouldn't\", \"you\", \"you'd\", \"you'll\", \"you're\", \"you've\", \"your\", \"yours\", \"yourself\", \"yourselves\"];\n\n\n// Word replace\n\nvar tipuesearch_replace = {'words': [\n     {'word': 'tipua', 'replace_with': 'tipue'},\n     {'word': 'javscript', 'replace_with': 'javascript'},\n     {'word': 'jqeury', 'replace_with': 'jquery'}\n]};\n\n\n// Weighting\n\nvar tipuesearch_weight = {'weight': [\n     {'url': 'http://www.tipue.com', 'score': 200},\n     {'url': 'http://www.tipue.com/search', 'score': 100},\n     {'url': 'http://www.tipue.com/about', 'score': 100}\n]};\n\n\n// Stemming\n\nvar tipuesearch_stem = {'words': [\n     {'word': 'e-mail', 'stem': 'email'},\n     {'word': 'javascript', 'stem': 'jquery'},\n     {'word': 'javascript', 'stem': 'js'}\n]};\n\n\n// Internal strings\n\nvar tipuesearch_string_1 = 'No title';\nvar tipuesearch_string_2 = 'Showing results for';\nvar tipuesearch_string_3 = 'Search instead for';\nvar tipuesearch_string_4 = '1 result';\nvar tipuesearch_string_5 = 'results';\nvar tipuesearch_string_6 = 'Prev';\nvar tipuesearch_string_7 = 'Next';\nvar tipuesearch_string_8 = 'Nothing found';\nvar tipuesearch_string_9 = 'Common words are largely ignored';\nvar tipuesearch_string_10 = 'Search too short';\nvar tipuesearch_string_11 = 'Should be one character or more';\nvar tipuesearch_string_12 = 'Should be';\nvar tipuesearch_string_13 = 'characters or more';\n"
  },
  {
    "path": "doc/_layouts/_base.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>{{this.title}}</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    {% set bootstrap = \"3.1.1\" %}\n    {% if site.bootstrap %}\n    {%   set bootstrap = site.bootstrap %}\n    {% endif %}\n    {% if site.bootswatch %}\n    {%   set theme_path = \"bootswatch/\"+ bootstrap + '/' + site.bootswatch %}\n    {% else %}\n    {%   set theme_path = \"bootstrap/\" + bootstrap + \"/css\" %}\n    {% endif %}\n    <link href=\"//netdna.bootstrapcdn.com/{{theme_path}}/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    {% set url_prefix = '' %}\n    {% if site.baseurl %}\n    {%   set url_prefix = '/' + site.baseurl %}\n    {% endif %}\n    <!-- customizations -->\n    <link href=\"{{url_prefix + '/css/site.css'}}\" rel=\"stylesheet\" media=\"screen\">\n    <!-- pygments -->\n    <link href=\"{{url_prefix + '/css/syntax.css'}}\" rel=\"stylesheet\" media=\"screen\">\n    <!-- icons -->\n    <link href=\"//netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.css\" rel=\"stylesheet\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n    {% include 'analytics.html' %}\n    {% block head_addon %}\n    {% endblock %} \n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    {% set navbar_style = \"navbar-default\" %}\n    {% if site.navbar_inverse %}\n    {%   set navbar_style = \"navbar-inverse\" %}\n    {% endif %}\n    {% set navbar_right_items = 1 %}\n    {% if site.navbar_right_items %}\n    {%   set navbar_right_items = site.navbar_right_items %}\n    {% endif %}\n    <div class=\"navbar {{navbar_style}} navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"{{url_prefix + '/'}}\">{{site.brand}}</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            {% block home %}\n            {% endblock %}\n            {% for item in site.reflinks['/'].content[:-navbar_right_items] %}\n            {%   set context = '' %}\n            {%   if item.components|d and this.components[0] == item.components[0] %}\n            {%     set context = ' class=\"active\"' %}\n            {%   endif %}\n            {%   if item.content|d and item.dropdown %}\n            <li{{context}} class=\"dropdown\">\n              <a href=\"{{item.url}}\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">{{item.title}} <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                {% for subitem in item.content %}\n                <li><a href=\"{{subitem.url}}\">{{subitem.title}}</a></li>\n                {% endfor %}\n              </ul>\n            </li>\n            {% else %}\n            <li{{context}}><a href=\"{{item.url}}\">{{item.title}}</a></li>\n            {%   endif %}\n            {% endfor %}\n          </ul>\n          <form class=\"navbar-form navbar-left\" action=\"/search.html\" role=\"search\">\n            <div class=\"form-group\">\n                <input type=\"text\" required name=\"q\" id=\"tipue_search_input\" class=\"form-control\" placeholder=\"Search\"> \n            </div>\n          </form>\n          <ul class=\"nav navbar-nav navbar-right\">\n            {% for item in site.reflinks['/'].content[-navbar_right_items:] %}\n            {%   set context = '' %}\n            {%   if item.components|d and this.components[0] == item.components[0] %}\n            {%     set context = ' class=\"active\"' %}\n            {%   endif %}\n            {%   if item.content|d and item.dropdown %}\n            <li{{context}} class=\"dropdown\">\n              <a href=\"{{item.url}}\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">{{item.title}} <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                {% for subitem in item.content %}\n                <li><a href=\"{{subitem.url}}\">{{subitem.title}}</a></li>\n                {% endfor %}\n              </ul>\n            </li>\n            {% else %}\n            <li{{context}}><a href=\"{{item.url}}\">{{item.title}}</a></li>\n            {%   endif %}\n            {% endfor %}\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n    {% block body %}\n    {% endblock %}\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <!-- <script src=\"https://code.jquery.com/jquery.js\"></script> -->\n    <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/{{bootstrap}}/js/bootstrap.min.js\"></script>\n    {% block body_addon %}\n    {% endblock %} \n\n  </body>\n</html>\n\n"
  },
  {
    "path": "doc/_layouts/analytics.html",
    "content": "<script>\n  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\n  ga('create', 'UA-48968311-3', 'jandecaluwe.com');\n  ga('send', 'pageview');\n\n</script>\n\n"
  },
  {
    "path": "doc/_layouts/footer.html",
    "content": "    <div class=\"footer\">\n        <div style=\"margin: 5px\">\n        {% include 'sharing.html' %}\n        </div>\n        <p> Content licensed under the\n           <a href=\"{{site.reflinks.content_license.url}}\">{{site.reflinks.content_license.title}}</a>.\n        </p> \n        <p>Website powered by <a href=\"http://urubu.jandecaluwe.com\">Urubu</a>.</p>\n    </div>\n\n\n"
  },
  {
    "path": "doc/_layouts/home.html",
    "content": "{% extends \"_base.html\" %}\n\n{% block home %} \n{% endblock %}\n\n{% block body %}\n\n<div class=\"jumbotron urubu\">\n    <div class=\"container text-center\">\n        <div class=\"row\">\n            <div class=\"col-md-8 col-md-offset-2\">\n                <h1>{{this.title}}</h1>\n                <h2>{{this.tagline}}</h2>\n             </div>\n        </div>\n    </div>\n</div>\n\n<div class=\"container\">\n<main>\n{% set news = site.reflinks['/news'].content[0] %}\n<p class=\"lead text-center\">{{news.date|dateformat}}: <a href=\"news\">{{news.title}}</a></p>\n{{this.body}}\n</main>\n</div>\n\n{% include 'footer.html' %}\n\n{% endblock %}\n"
  },
  {
    "path": "doc/_layouts/index.html",
    "content": "{% extends \"_base.html\" %}\n\n{% block body %}\n\n{% block jumbotron %}\n<div class=\"jumbotron\">\n  <div class=\"container\">\n    <div class=\"row\">\n       <div class=\"col-md-7\">\n         <h1>{{this.title}}</h1>\n         <p>{{this.abstract}}</p>\n    </div>\n  </div>\n </div>\n</div>\n{% endblock %}\n\n<div class=\"container\">\n  <div class=\"row\">\n\n    <div class=\"col-md-7\" role=\"main\">\n    <main>\n    {% for item in this.content %}\n      <h4><a href=\"{{item.url}}\">{{item.title}}</a></h4>\n        <p>{{item.abstract}}</p>\n    {% endfor %}\n    </main>\n    </div>\n\n </div>\n</div>\n\n{% endblock %}\n"
  },
  {
    "path": "doc/_layouts/newsfeed.html",
    "content": "{% extends \"_base.html\" %}\n\n{% block body %}\n\n<div class=\"container\">\n\n    <div class=\"row\">\n\n        <div class=\"col-md-8 role=\"main\">\n            {% for item in this.content %}\n                <div> \n                  <h3>{{item.date|dateformat}}&nbsp;&nbsp;{{item.title}}</h3>\n                </div>\n                <div>\n                    {{item.body}}\n                    <hr>\n                </div>\n            {% endfor %}\n        </div>\n\n    </div>\n\n    {% include 'footer.html' %}\n\n</div \n\n{% endblock %}\n\n"
  },
  {
    "path": "doc/_layouts/page.html",
    "content": "{% extends \"_base.html\" %}\n\n{% block body %}\n\n<div class=\"container\">\n\n  {% block breadcrumbs %}\n  <ol class=\"breadcrumb\">\n    <li><a href=\"{{url_prefix + '/'}}\">Home</a></li>\n      {% for bc in this.breadcrumbs[:-1] %}\n      <li><a href=\"{{bc.url}}\">{{bc.title}}</a></li>\n      {% endfor %}\n      <li class=\"active\">{{this.breadcrumbs[-1].title}}</li>\n  </ol>\n  {% endblock %}\n\n  <div class=\"page-header\">\n    {% block title %}\n    <h1>{{this.title}}</h1>\n    {% endblock %}\n  </div>\n\n  <div class=\"row\">\n\n    {% block content %}\n    <div class=\"col-md-6 content\" role=\"main\">\n    <main>\n      {{this.body}}\n    </main>\n    {% if this.pager %}\n    <ul class=\"pager\">\n      {% if this.prev %}\n      <li class=\"previous\"><a href=\"{{this.prev.url}}\">&larr; {{this.prev.title}}</a></li>\n      {% endif %}\n      {% if this.next %}\n      <li class=\"next\"><a href=\"{{this.next.url}}\">{{this.next.title}} &rarr;</a></li>\n      {% endif %}\n    </ul>\n    {% endif %}\n    </div>\n    {% endblock %}\n\n    {% block sidebar %}\n    {% if this.toc %}\n    <div class=\"col-md-3\" role=\"complementary\">\n      <nav class=\"hidden-print hidden-xs hidden-sm\">\n        <div class=\"sidebar\" data-spy=\"affix\" data-offset-top=\"80\" data-offset-bottom=\"60\">\n          <div class=\"well\">\n            <a href=\"#\"><strong>{{this.title}}</strong></a>\n            {{this.toc}}\n          </div>\n        </div>\n      </nav>\n    </div>\n    {% endif %}\n    {% endblock %}\n\n  </div>\n\n  {% include 'footer.html' %}\n\n</div>\n\n{% endblock %}\n"
  },
  {
    "path": "doc/_layouts/search.html",
    "content": "{% extends \"page.html\" %}\n\n{% block head_addon %}\n<link href=\"tipuesearch/tipuesearch.css\" rel=\"stylesheet\">\n{% endblock %}\n\n{% block body_addon %}\n<script src=\"tipuesearch/tipuesearch_content.js\"></script>\n<script src=\"tipuesearch/tipuesearch_set.js\"></script>\n<script src=\"tipuesearch/tipuesearch.min.js\"></script>\n<script>\n$(document).ready(function() {\n     $('#tipue_search_input').tipuesearch({\n          'mode': 'json',\n          'contentLocation': 'tipuesearch/tipuesearch_content.json' \n     });\n});\n</script>\n{% endblock %}\n\n"
  },
  {
    "path": "doc/_layouts/sharing.html",
    "content": "<a href=\"https://twitter.com/share\" class=\"twitter-share-button\">Tweet</a>\n<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>\n\n<!-- Place this tag where you want the +1 button to render. -->\n<div class=\"g-plusone\" data-size=\"medium\"></div>\n\n<!-- Place this tag after the last +1 button tag. -->\n<script type=\"text/javascript\">\nwindow.__gcfg = {\n    lang: 'en-US'\n};\n  (function() {\n    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;\n    po.src = 'https://apis.google.com/js/plusone.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);\n  })();\n</script>\n\n<script type=\"text/javascript\" src=\"http://www.reddit.com/static/button/button1.js\"></script>\n"
  },
  {
    "path": "doc/_layouts/simple_page.html",
    "content": "{% extends \"page.html\" %}\n\n    {% block sidebar %}\n    {% endblock %}\n\n\n"
  },
  {
    "path": "doc/_layouts/util.html",
    "content": "{# task list icons #} \n{% set open = '<i class=\"fa fa-square-o\"></i>' %}\n{% set done = '<i class=\"fa fa-check-square-o\"></i>' %}\n\n{# general font awesome icon interface #}\n{% macro fa(name, class='') %}\n<i class=\"fa fa-{{name}} {{class}}\"></i>\n{% endmacro %}\n\n{# figure support #}\n{% macro figure(fn, caption='') %}\n<figure>\n  <img src=\"/img/{{fn}}\" class=\"img-responsive\" alt=\"{{caption}}\">\n  {% if caption %}\n  <figcaption class=\"text-center\">{{caption}}</figcaption>\n  {% endif %}\n</figure>\n{% endmacro %}\n\n"
  },
  {
    "path": "doc/_python/__init__.py",
    "content": "from .filters import filters\nfrom .hooks import process_info\n"
  },
  {
    "path": "doc/_python/filters.py",
    "content": "def dateformat(value, format=\"%d-%b-%Y\"):\n    return value.strftime(format)\n\nfilters = {}\nfilters['dateformat'] = dateformat\n"
  },
  {
    "path": "doc/_python/hooks.py",
    "content": "def process_info(info, site):\n    if 'layout' not in info:\n        if info['components'][-1] == 'index':\n            info['layout'] = 'index'\n        else:\n            info['layout'] = 'page'\n"
  },
  {
    "path": "doc/_site.yml",
    "content": "brand: Urubu \n\nbootswatch: null \nnavbar_inverse: false \nnavbar_right_items: 1\nbootstrap: 3.3.4\n\nkeep_files: [ .nojekyll ]\n\nreflinks:\n    jandecaluwe:\n        url: http://www.jandecaluwe.com\n        title: Jan Decaluwe\n    myhdl_site: \n        url: http://www.myhdl.org \n        title: MyHDL website\n    dev_myhdl_site: \n        url: http://dev.myhdl.org \n        title: MyHDL development website\n    content_license:\n        url: http://creativecommons.org/licenses/by-sa/3.0/\n        title: CC-BY-SA License\n    software_license:\n        url: http://www.gnu.org/licenses/agpl-3.0.txt\n        title: GNU Affero General Public License\n    bitbucket:\n        url: http://www.bitbucket.com\n        title: Bitbucket\n    github:\n        url: http://www.github.com\n        title: GitHub\n    markdown:\n        url: http://daringfireball.net/projects/markdown/  \n        title: Markdown\n    markdown_extra:\n        url: http://python-markdown.github.io/extensions/extra/\n        title: Markdown Extra\n    python_markdown:\n        url: http://python-markdown.github.io/\n        title: Python-Markdown \n    pygments:\n        url: http://pygments.org\n        title: Pygments\n    jinja2:\n        url: http://jinja.pocoo.org\n        title: Jinja2\n    bootstrap:\n        url: http://getbootstrap.com\n        title: Bootstrap\n    bootswatch:\n        url: http://bootswatch.com\n        title: Bootswatch\n    pyyaml:\n        url: http://pyyaml.org\n        title: PyYAML\n    jekyll:\n        url: http://jekyllrb.com\n        title: Jekyll\n    pelican:\n        url: http://getpelican.com\n        title: Pelican\n    virtualenv:\n        url: http://www.virtualenv.org/en/latest/virtualenv.html\n        title: virtualenv\n    urubu-repo:\n        url: https://github.com/jandecaluwe/urubu\n        title: Urubu repo\n    tables: \n        url: http://python-markdown.github.io/extensions/tables/\n        title: Tables\n    abbrev: \n        url: http://python-markdown.github.io/extensions/abbreviations/\n        title: Abbrevations\n    attr_list:\n        url: http://python-markdown.github.io/extensions/attr_list/\n        title: Attribute lists\n    def_list: \n        url: http://python-markdown.github.io/extensions/definition_lists/\n        title: Definition Lists\n    fenced_code: \n        url: http://python-markdown.github.io/extensions/fenced_code_blocks/\n        title: Fenced Code Blocks\n    markdown_checklist: \n        url: https://github.com/FND/markdown-checklist\n        title: GitHub style Task Lists\n    code_hilite: \n        url: http://python-markdown.github.io/extensions/code_hilite/\n        title: CodeHilite\n    urubu-quickstart:\n        url: http://urubu-quickstart.jandecaluwe.com\n        title: Urubu Quickstart\n    urubu:\n        url: http://urubu.jandecaluwe.com\n        title: Urubu Documentation \n    font-awesome:\n        url: http://fortawesome.github.io/Font-Awesome\n        title: Font Awesome\n"
  },
  {
    "path": "doc/css/bootstrap.css",
    "content": "/*!\n * Bootstrap v3.4.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\nhtml {\n  font-family: sans-serif;\n  -ms-text-size-adjust: 100%;\n  -webkit-text-size-adjust: 100%;\n}\nbody {\n  margin: 0;\n}\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n  display: block;\n}\naudio,\ncanvas,\nprogress,\nvideo {\n  display: inline-block;\n  vertical-align: baseline;\n}\naudio:not([controls]) {\n  display: none;\n  height: 0;\n}\n[hidden],\ntemplate {\n  display: none;\n}\na {\n  background-color: transparent;\n}\na:active,\na:hover {\n  outline: 0;\n}\nabbr[title] {\n  border-bottom: none;\n  text-decoration: underline;\n  -webkit-text-decoration: underline dotted;\n  -moz-text-decoration: underline dotted;\n  text-decoration: underline dotted;\n}\nb,\nstrong {\n  font-weight: bold;\n}\ndfn {\n  font-style: italic;\n}\nh1 {\n  font-size: 2em;\n  margin: 0.67em 0;\n}\nmark {\n  background: #ff0;\n  color: #000;\n}\nsmall {\n  font-size: 80%;\n}\nsub,\nsup {\n  font-size: 75%;\n  line-height: 0;\n  position: relative;\n  vertical-align: baseline;\n}\nsup {\n  top: -0.5em;\n}\nsub {\n  bottom: -0.25em;\n}\nimg {\n  border: 0;\n}\nsvg:not(:root) {\n  overflow: hidden;\n}\nfigure {\n  margin: 1em 40px;\n}\nhr {\n  -webkit-box-sizing: content-box;\n  -moz-box-sizing: content-box;\n  box-sizing: content-box;\n  height: 0;\n}\npre {\n  overflow: auto;\n}\ncode,\nkbd,\npre,\nsamp {\n  font-family: monospace, monospace;\n  font-size: 1em;\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n  color: inherit;\n  font: inherit;\n  margin: 0;\n}\nbutton {\n  overflow: visible;\n}\nbutton,\nselect {\n  text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n  -webkit-appearance: button;\n  cursor: pointer;\n}\nbutton[disabled],\nhtml input[disabled] {\n  cursor: default;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n  border: 0;\n  padding: 0;\n}\ninput {\n  line-height: normal;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n  padding: 0;\n}\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n  height: auto;\n}\ninput[type=\"search\"] {\n  -webkit-appearance: textfield;\n  -webkit-box-sizing: content-box;\n  -moz-box-sizing: content-box;\n  box-sizing: content-box;\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\nfieldset {\n  border: 1px solid #c0c0c0;\n  margin: 0 2px;\n  padding: 0.35em 0.625em 0.75em;\n}\nlegend {\n  border: 0;\n  padding: 0;\n}\ntextarea {\n  overflow: auto;\n}\noptgroup {\n  font-weight: bold;\n}\ntable {\n  border-collapse: collapse;\n  border-spacing: 0;\n}\ntd,\nth {\n  padding: 0;\n}\n/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n@media print {\n  *,\n  *:before,\n  *:after {\n    color: #000 !important;\n    text-shadow: none !important;\n    background: transparent !important;\n    -webkit-box-shadow: none !important;\n    box-shadow: none !important;\n  }\n  a,\n  a:visited {\n    text-decoration: underline;\n  }\n  a[href]:after {\n    content: \" (\" attr(href) \")\";\n  }\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\";\n  }\n  a[href^=\"#\"]:after,\n  a[href^=\"javascript:\"]:after {\n    content: \"\";\n  }\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid;\n  }\n  thead {\n    display: table-header-group;\n  }\n  tr,\n  img {\n    page-break-inside: avoid;\n  }\n  img {\n    max-width: 100% !important;\n  }\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3;\n  }\n  h2,\n  h3 {\n    page-break-after: avoid;\n  }\n  .navbar {\n    display: none;\n  }\n  .btn > .caret,\n  .dropup > .btn > .caret {\n    border-top-color: #000 !important;\n  }\n  .label {\n    border: 1px solid #000;\n  }\n  .table {\n    border-collapse: collapse !important;\n  }\n  .table td,\n  .table th {\n    background-color: #fff !important;\n  }\n  .table-bordered th,\n  .table-bordered td {\n    border: 1px solid #ddd !important;\n  }\n}\n@font-face {\n  font-family: \"Glyphicons Halflings\";\n  src: url(\"../fonts/glyphicons-halflings-regular.eot\");\n  src: url(\"../fonts/glyphicons-halflings-regular.eot?#iefix\") format(\"embedded-opentype\"), url(\"../fonts/glyphicons-halflings-regular.woff2\") format(\"woff2\"), url(\"../fonts/glyphicons-halflings-regular.woff\") format(\"woff\"), url(\"../fonts/glyphicons-halflings-regular.ttf\") format(\"truetype\"), url(\"../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular\") format(\"svg\");\n}\n.glyphicon {\n  position: relative;\n  top: 1px;\n  display: inline-block;\n  font-family: \"Glyphicons Halflings\";\n  font-style: normal;\n  font-weight: 400;\n  line-height: 1;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n.glyphicon-asterisk:before {\n  content: \"\\002a\";\n}\n.glyphicon-plus:before {\n  content: \"\\002b\";\n}\n.glyphicon-euro:before,\n.glyphicon-eur:before {\n  content: \"\\20ac\";\n}\n.glyphicon-minus:before {\n  content: \"\\2212\";\n}\n.glyphicon-cloud:before {\n  content: \"\\2601\";\n}\n.glyphicon-envelope:before {\n  content: \"\\2709\";\n}\n.glyphicon-pencil:before {\n  content: \"\\270f\";\n}\n.glyphicon-glass:before {\n  content: \"\\e001\";\n}\n.glyphicon-music:before {\n  content: \"\\e002\";\n}\n.glyphicon-search:before {\n  content: \"\\e003\";\n}\n.glyphicon-heart:before {\n  content: \"\\e005\";\n}\n.glyphicon-star:before {\n  content: \"\\e006\";\n}\n.glyphicon-star-empty:before {\n  content: \"\\e007\";\n}\n.glyphicon-user:before {\n  content: \"\\e008\";\n}\n.glyphicon-film:before {\n  content: \"\\e009\";\n}\n.glyphicon-th-large:before {\n  content: \"\\e010\";\n}\n.glyphicon-th:before {\n  content: \"\\e011\";\n}\n.glyphicon-th-list:before {\n  content: \"\\e012\";\n}\n.glyphicon-ok:before {\n  content: \"\\e013\";\n}\n.glyphicon-remove:before {\n  content: \"\\e014\";\n}\n.glyphicon-zoom-in:before {\n  content: \"\\e015\";\n}\n.glyphicon-zoom-out:before {\n  content: \"\\e016\";\n}\n.glyphicon-off:before {\n  content: \"\\e017\";\n}\n.glyphicon-signal:before {\n  content: \"\\e018\";\n}\n.glyphicon-cog:before {\n  content: \"\\e019\";\n}\n.glyphicon-trash:before {\n  content: \"\\e020\";\n}\n.glyphicon-home:before {\n  content: \"\\e021\";\n}\n.glyphicon-file:before {\n  content: \"\\e022\";\n}\n.glyphicon-time:before {\n  content: \"\\e023\";\n}\n.glyphicon-road:before {\n  content: \"\\e024\";\n}\n.glyphicon-download-alt:before {\n  content: \"\\e025\";\n}\n.glyphicon-download:before {\n  content: \"\\e026\";\n}\n.glyphicon-upload:before {\n  content: \"\\e027\";\n}\n.glyphicon-inbox:before {\n  content: \"\\e028\";\n}\n.glyphicon-play-circle:before {\n  content: \"\\e029\";\n}\n.glyphicon-repeat:before {\n  content: \"\\e030\";\n}\n.glyphicon-refresh:before {\n  content: \"\\e031\";\n}\n.glyphicon-list-alt:before {\n  content: \"\\e032\";\n}\n.glyphicon-lock:before {\n  content: \"\\e033\";\n}\n.glyphicon-flag:before {\n  content: \"\\e034\";\n}\n.glyphicon-headphones:before {\n  content: \"\\e035\";\n}\n.glyphicon-volume-off:before {\n  content: \"\\e036\";\n}\n.glyphicon-volume-down:before {\n  content: \"\\e037\";\n}\n.glyphicon-volume-up:before {\n  content: \"\\e038\";\n}\n.glyphicon-qrcode:before {\n  content: \"\\e039\";\n}\n.glyphicon-barcode:before {\n  content: \"\\e040\";\n}\n.glyphicon-tag:before {\n  content: \"\\e041\";\n}\n.glyphicon-tags:before {\n  content: \"\\e042\";\n}\n.glyphicon-book:before {\n  content: \"\\e043\";\n}\n.glyphicon-bookmark:before {\n  content: \"\\e044\";\n}\n.glyphicon-print:before {\n  content: \"\\e045\";\n}\n.glyphicon-camera:before {\n  content: \"\\e046\";\n}\n.glyphicon-font:before {\n  content: \"\\e047\";\n}\n.glyphicon-bold:before {\n  content: \"\\e048\";\n}\n.glyphicon-italic:before {\n  content: \"\\e049\";\n}\n.glyphicon-text-height:before {\n  content: \"\\e050\";\n}\n.glyphicon-text-width:before {\n  content: \"\\e051\";\n}\n.glyphicon-align-left:before {\n  content: \"\\e052\";\n}\n.glyphicon-align-center:before {\n  content: \"\\e053\";\n}\n.glyphicon-align-right:before {\n  content: \"\\e054\";\n}\n.glyphicon-align-justify:before {\n  content: \"\\e055\";\n}\n.glyphicon-list:before {\n  content: \"\\e056\";\n}\n.glyphicon-indent-left:before {\n  content: \"\\e057\";\n}\n.glyphicon-indent-right:before {\n  content: \"\\e058\";\n}\n.glyphicon-facetime-video:before {\n  content: \"\\e059\";\n}\n.glyphicon-picture:before {\n  content: \"\\e060\";\n}\n.glyphicon-map-marker:before {\n  content: \"\\e062\";\n}\n.glyphicon-adjust:before {\n  content: \"\\e063\";\n}\n.glyphicon-tint:before {\n  content: \"\\e064\";\n}\n.glyphicon-edit:before {\n  content: \"\\e065\";\n}\n.glyphicon-share:before {\n  content: \"\\e066\";\n}\n.glyphicon-check:before {\n  content: \"\\e067\";\n}\n.glyphicon-move:before {\n  content: \"\\e068\";\n}\n.glyphicon-step-backward:before {\n  content: \"\\e069\";\n}\n.glyphicon-fast-backward:before {\n  content: \"\\e070\";\n}\n.glyphicon-backward:before {\n  content: \"\\e071\";\n}\n.glyphicon-play:before {\n  content: \"\\e072\";\n}\n.glyphicon-pause:before {\n  content: \"\\e073\";\n}\n.glyphicon-stop:before {\n  content: \"\\e074\";\n}\n.glyphicon-forward:before {\n  content: \"\\e075\";\n}\n.glyphicon-fast-forward:before {\n  content: \"\\e076\";\n}\n.glyphicon-step-forward:before {\n  content: \"\\e077\";\n}\n.glyphicon-eject:before {\n  content: \"\\e078\";\n}\n.glyphicon-chevron-left:before {\n  content: \"\\e079\";\n}\n.glyphicon-chevron-right:before {\n  content: \"\\e080\";\n}\n.glyphicon-plus-sign:before {\n  content: \"\\e081\";\n}\n.glyphicon-minus-sign:before {\n  content: \"\\e082\";\n}\n.glyphicon-remove-sign:before {\n  content: \"\\e083\";\n}\n.glyphicon-ok-sign:before {\n  content: \"\\e084\";\n}\n.glyphicon-question-sign:before {\n  content: \"\\e085\";\n}\n.glyphicon-info-sign:before {\n  content: \"\\e086\";\n}\n.glyphicon-screenshot:before {\n  content: \"\\e087\";\n}\n.glyphicon-remove-circle:before {\n  content: \"\\e088\";\n}\n.glyphicon-ok-circle:before {\n  content: \"\\e089\";\n}\n.glyphicon-ban-circle:before {\n  content: \"\\e090\";\n}\n.glyphicon-arrow-left:before {\n  content: \"\\e091\";\n}\n.glyphicon-arrow-right:before {\n  content: \"\\e092\";\n}\n.glyphicon-arrow-up:before {\n  content: \"\\e093\";\n}\n.glyphicon-arrow-down:before {\n  content: \"\\e094\";\n}\n.glyphicon-share-alt:before {\n  content: \"\\e095\";\n}\n.glyphicon-resize-full:before {\n  content: \"\\e096\";\n}\n.glyphicon-resize-small:before {\n  content: \"\\e097\";\n}\n.glyphicon-exclamation-sign:before {\n  content: \"\\e101\";\n}\n.glyphicon-gift:before {\n  content: \"\\e102\";\n}\n.glyphicon-leaf:before {\n  content: \"\\e103\";\n}\n.glyphicon-fire:before {\n  content: \"\\e104\";\n}\n.glyphicon-eye-open:before {\n  content: \"\\e105\";\n}\n.glyphicon-eye-close:before {\n  content: \"\\e106\";\n}\n.glyphicon-warning-sign:before {\n  content: \"\\e107\";\n}\n.glyphicon-plane:before {\n  content: \"\\e108\";\n}\n.glyphicon-calendar:before {\n  content: \"\\e109\";\n}\n.glyphicon-random:before {\n  content: \"\\e110\";\n}\n.glyphicon-comment:before {\n  content: \"\\e111\";\n}\n.glyphicon-magnet:before {\n  content: \"\\e112\";\n}\n.glyphicon-chevron-up:before {\n  content: \"\\e113\";\n}\n.glyphicon-chevron-down:before {\n  content: \"\\e114\";\n}\n.glyphicon-retweet:before {\n  content: \"\\e115\";\n}\n.glyphicon-shopping-cart:before {\n  content: \"\\e116\";\n}\n.glyphicon-folder-close:before {\n  content: \"\\e117\";\n}\n.glyphicon-folder-open:before {\n  content: \"\\e118\";\n}\n.glyphicon-resize-vertical:before {\n  content: \"\\e119\";\n}\n.glyphicon-resize-horizontal:before {\n  content: \"\\e120\";\n}\n.glyphicon-hdd:before {\n  content: \"\\e121\";\n}\n.glyphicon-bullhorn:before {\n  content: \"\\e122\";\n}\n.glyphicon-bell:before {\n  content: \"\\e123\";\n}\n.glyphicon-certificate:before {\n  content: \"\\e124\";\n}\n.glyphicon-thumbs-up:before {\n  content: \"\\e125\";\n}\n.glyphicon-thumbs-down:before {\n  content: \"\\e126\";\n}\n.glyphicon-hand-right:before {\n  content: \"\\e127\";\n}\n.glyphicon-hand-left:before {\n  content: \"\\e128\";\n}\n.glyphicon-hand-up:before {\n  content: \"\\e129\";\n}\n.glyphicon-hand-down:before {\n  content: \"\\e130\";\n}\n.glyphicon-circle-arrow-right:before {\n  content: \"\\e131\";\n}\n.glyphicon-circle-arrow-left:before {\n  content: \"\\e132\";\n}\n.glyphicon-circle-arrow-up:before {\n  content: \"\\e133\";\n}\n.glyphicon-circle-arrow-down:before {\n  content: \"\\e134\";\n}\n.glyphicon-globe:before {\n  content: \"\\e135\";\n}\n.glyphicon-wrench:before {\n  content: \"\\e136\";\n}\n.glyphicon-tasks:before {\n  content: \"\\e137\";\n}\n.glyphicon-filter:before {\n  content: \"\\e138\";\n}\n.glyphicon-briefcase:before {\n  content: \"\\e139\";\n}\n.glyphicon-fullscreen:before {\n  content: \"\\e140\";\n}\n.glyphicon-dashboard:before {\n  content: \"\\e141\";\n}\n.glyphicon-paperclip:before {\n  content: \"\\e142\";\n}\n.glyphicon-heart-empty:before {\n  content: \"\\e143\";\n}\n.glyphicon-link:before {\n  content: \"\\e144\";\n}\n.glyphicon-phone:before {\n  content: \"\\e145\";\n}\n.glyphicon-pushpin:before {\n  content: \"\\e146\";\n}\n.glyphicon-usd:before {\n  content: \"\\e148\";\n}\n.glyphicon-gbp:before {\n  content: \"\\e149\";\n}\n.glyphicon-sort:before {\n  content: \"\\e150\";\n}\n.glyphicon-sort-by-alphabet:before {\n  content: \"\\e151\";\n}\n.glyphicon-sort-by-alphabet-alt:before {\n  content: \"\\e152\";\n}\n.glyphicon-sort-by-order:before {\n  content: \"\\e153\";\n}\n.glyphicon-sort-by-order-alt:before {\n  content: \"\\e154\";\n}\n.glyphicon-sort-by-attributes:before {\n  content: \"\\e155\";\n}\n.glyphicon-sort-by-attributes-alt:before {\n  content: \"\\e156\";\n}\n.glyphicon-unchecked:before {\n  content: \"\\e157\";\n}\n.glyphicon-expand:before {\n  content: \"\\e158\";\n}\n.glyphicon-collapse-down:before {\n  content: \"\\e159\";\n}\n.glyphicon-collapse-up:before {\n  content: \"\\e160\";\n}\n.glyphicon-log-in:before {\n  content: \"\\e161\";\n}\n.glyphicon-flash:before {\n  content: \"\\e162\";\n}\n.glyphicon-log-out:before {\n  content: \"\\e163\";\n}\n.glyphicon-new-window:before {\n  content: \"\\e164\";\n}\n.glyphicon-record:before {\n  content: \"\\e165\";\n}\n.glyphicon-save:before {\n  content: \"\\e166\";\n}\n.glyphicon-open:before {\n  content: \"\\e167\";\n}\n.glyphicon-saved:before {\n  content: \"\\e168\";\n}\n.glyphicon-import:before {\n  content: \"\\e169\";\n}\n.glyphicon-export:before {\n  content: \"\\e170\";\n}\n.glyphicon-send:before {\n  content: \"\\e171\";\n}\n.glyphicon-floppy-disk:before {\n  content: \"\\e172\";\n}\n.glyphicon-floppy-saved:before {\n  content: \"\\e173\";\n}\n.glyphicon-floppy-remove:before {\n  content: \"\\e174\";\n}\n.glyphicon-floppy-save:before {\n  content: \"\\e175\";\n}\n.glyphicon-floppy-open:before {\n  content: \"\\e176\";\n}\n.glyphicon-credit-card:before {\n  content: \"\\e177\";\n}\n.glyphicon-transfer:before {\n  content: \"\\e178\";\n}\n.glyphicon-cutlery:before {\n  content: \"\\e179\";\n}\n.glyphicon-header:before {\n  content: \"\\e180\";\n}\n.glyphicon-compressed:before {\n  content: \"\\e181\";\n}\n.glyphicon-earphone:before {\n  content: \"\\e182\";\n}\n.glyphicon-phone-alt:before {\n  content: \"\\e183\";\n}\n.glyphicon-tower:before {\n  content: \"\\e184\";\n}\n.glyphicon-stats:before {\n  content: \"\\e185\";\n}\n.glyphicon-sd-video:before {\n  content: \"\\e186\";\n}\n.glyphicon-hd-video:before {\n  content: \"\\e187\";\n}\n.glyphicon-subtitles:before {\n  content: \"\\e188\";\n}\n.glyphicon-sound-stereo:before {\n  content: \"\\e189\";\n}\n.glyphicon-sound-dolby:before {\n  content: \"\\e190\";\n}\n.glyphicon-sound-5-1:before {\n  content: \"\\e191\";\n}\n.glyphicon-sound-6-1:before {\n  content: \"\\e192\";\n}\n.glyphicon-sound-7-1:before {\n  content: \"\\e193\";\n}\n.glyphicon-copyright-mark:before {\n  content: \"\\e194\";\n}\n.glyphicon-registration-mark:before {\n  content: \"\\e195\";\n}\n.glyphicon-cloud-download:before {\n  content: \"\\e197\";\n}\n.glyphicon-cloud-upload:before {\n  content: \"\\e198\";\n}\n.glyphicon-tree-conifer:before {\n  content: \"\\e199\";\n}\n.glyphicon-tree-deciduous:before {\n  content: \"\\e200\";\n}\n.glyphicon-cd:before {\n  content: \"\\e201\";\n}\n.glyphicon-save-file:before {\n  content: \"\\e202\";\n}\n.glyphicon-open-file:before {\n  content: \"\\e203\";\n}\n.glyphicon-level-up:before {\n  content: \"\\e204\";\n}\n.glyphicon-copy:before {\n  content: \"\\e205\";\n}\n.glyphicon-paste:before {\n  content: \"\\e206\";\n}\n.glyphicon-alert:before {\n  content: \"\\e209\";\n}\n.glyphicon-equalizer:before {\n  content: \"\\e210\";\n}\n.glyphicon-king:before {\n  content: \"\\e211\";\n}\n.glyphicon-queen:before {\n  content: \"\\e212\";\n}\n.glyphicon-pawn:before {\n  content: \"\\e213\";\n}\n.glyphicon-bishop:before {\n  content: \"\\e214\";\n}\n.glyphicon-knight:before {\n  content: \"\\e215\";\n}\n.glyphicon-baby-formula:before {\n  content: \"\\e216\";\n}\n.glyphicon-tent:before {\n  content: \"\\26fa\";\n}\n.glyphicon-blackboard:before {\n  content: \"\\e218\";\n}\n.glyphicon-bed:before {\n  content: \"\\e219\";\n}\n.glyphicon-apple:before {\n  content: \"\\f8ff\";\n}\n.glyphicon-erase:before {\n  content: \"\\e221\";\n}\n.glyphicon-hourglass:before {\n  content: \"\\231b\";\n}\n.glyphicon-lamp:before {\n  content: \"\\e223\";\n}\n.glyphicon-duplicate:before {\n  content: \"\\e224\";\n}\n.glyphicon-piggy-bank:before {\n  content: \"\\e225\";\n}\n.glyphicon-scissors:before {\n  content: \"\\e226\";\n}\n.glyphicon-bitcoin:before {\n  content: \"\\e227\";\n}\n.glyphicon-btc:before {\n  content: \"\\e227\";\n}\n.glyphicon-xbt:before {\n  content: \"\\e227\";\n}\n.glyphicon-yen:before {\n  content: \"\\00a5\";\n}\n.glyphicon-jpy:before {\n  content: \"\\00a5\";\n}\n.glyphicon-ruble:before {\n  content: \"\\20bd\";\n}\n.glyphicon-rub:before {\n  content: \"\\20bd\";\n}\n.glyphicon-scale:before {\n  content: \"\\e230\";\n}\n.glyphicon-ice-lolly:before {\n  content: \"\\e231\";\n}\n.glyphicon-ice-lolly-tasted:before {\n  content: \"\\e232\";\n}\n.glyphicon-education:before {\n  content: \"\\e233\";\n}\n.glyphicon-option-horizontal:before {\n  content: \"\\e234\";\n}\n.glyphicon-option-vertical:before {\n  content: \"\\e235\";\n}\n.glyphicon-menu-hamburger:before {\n  content: \"\\e236\";\n}\n.glyphicon-modal-window:before {\n  content: \"\\e237\";\n}\n.glyphicon-oil:before {\n  content: \"\\e238\";\n}\n.glyphicon-grain:before {\n  content: \"\\e239\";\n}\n.glyphicon-sunglasses:before {\n  content: \"\\e240\";\n}\n.glyphicon-text-size:before {\n  content: \"\\e241\";\n}\n.glyphicon-text-color:before {\n  content: \"\\e242\";\n}\n.glyphicon-text-background:before {\n  content: \"\\e243\";\n}\n.glyphicon-object-align-top:before {\n  content: \"\\e244\";\n}\n.glyphicon-object-align-bottom:before {\n  content: \"\\e245\";\n}\n.glyphicon-object-align-horizontal:before {\n  content: \"\\e246\";\n}\n.glyphicon-object-align-left:before {\n  content: \"\\e247\";\n}\n.glyphicon-object-align-vertical:before {\n  content: \"\\e248\";\n}\n.glyphicon-object-align-right:before {\n  content: \"\\e249\";\n}\n.glyphicon-triangle-right:before {\n  content: \"\\e250\";\n}\n.glyphicon-triangle-left:before {\n  content: \"\\e251\";\n}\n.glyphicon-triangle-bottom:before {\n  content: \"\\e252\";\n}\n.glyphicon-triangle-top:before {\n  content: \"\\e253\";\n}\n.glyphicon-console:before {\n  content: \"\\e254\";\n}\n.glyphicon-superscript:before {\n  content: \"\\e255\";\n}\n.glyphicon-subscript:before {\n  content: \"\\e256\";\n}\n.glyphicon-menu-left:before {\n  content: \"\\e257\";\n}\n.glyphicon-menu-right:before {\n  content: \"\\e258\";\n}\n.glyphicon-menu-down:before {\n  content: \"\\e259\";\n}\n.glyphicon-menu-up:before {\n  content: \"\\e260\";\n}\n* {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\n*:before,\n*:after {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\nhtml {\n  font-size: 10px;\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #333333;\n  background-color: #fff;\n}\ninput,\nbutton,\nselect,\ntextarea {\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\na {\n  color: #337ab7;\n  text-decoration: none;\n}\na:hover,\na:focus {\n  color: #23527c;\n  text-decoration: underline;\n}\na:focus {\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\nfigure {\n  margin: 0;\n}\nimg {\n  vertical-align: middle;\n}\n.img-responsive,\n.thumbnail > img,\n.thumbnail a > img,\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n  display: block;\n  max-width: 100%;\n  height: auto;\n}\n.img-rounded {\n  border-radius: 6px;\n}\n.img-thumbnail {\n  padding: 4px;\n  line-height: 1.42857143;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 4px;\n  -webkit-transition: all 0.2s ease-in-out;\n  -o-transition: all 0.2s ease-in-out;\n  transition: all 0.2s ease-in-out;\n  display: inline-block;\n  max-width: 100%;\n  height: auto;\n}\n.img-circle {\n  border-radius: 50%;\n}\nhr {\n  margin-top: 20px;\n  margin-bottom: 20px;\n  border: 0;\n  border-top: 1px solid #eeeeee;\n}\n.sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  padding: 0;\n  margin: -1px;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n}\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n  position: static;\n  width: auto;\n  height: auto;\n  margin: 0;\n  overflow: visible;\n  clip: auto;\n}\n[role=\"button\"] {\n  cursor: pointer;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n  font-family: inherit;\n  font-weight: 500;\n  line-height: 1.1;\n  color: inherit;\n}\nh1 small,\nh2 small,\nh3 small,\nh4 small,\nh5 small,\nh6 small,\n.h1 small,\n.h2 small,\n.h3 small,\n.h4 small,\n.h5 small,\n.h6 small,\nh1 .small,\nh2 .small,\nh3 .small,\nh4 .small,\nh5 .small,\nh6 .small,\n.h1 .small,\n.h2 .small,\n.h3 .small,\n.h4 .small,\n.h5 .small,\n.h6 .small {\n  font-weight: 400;\n  line-height: 1;\n  color: #777777;\n}\nh1,\n.h1,\nh2,\n.h2,\nh3,\n.h3 {\n  margin-top: 20px;\n  margin-bottom: 10px;\n}\nh1 small,\n.h1 small,\nh2 small,\n.h2 small,\nh3 small,\n.h3 small,\nh1 .small,\n.h1 .small,\nh2 .small,\n.h2 .small,\nh3 .small,\n.h3 .small {\n  font-size: 65%;\n}\nh4,\n.h4,\nh5,\n.h5,\nh6,\n.h6 {\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\nh4 small,\n.h4 small,\nh5 small,\n.h5 small,\nh6 small,\n.h6 small,\nh4 .small,\n.h4 .small,\nh5 .small,\n.h5 .small,\nh6 .small,\n.h6 .small {\n  font-size: 75%;\n}\nh1,\n.h1 {\n  font-size: 36px;\n}\nh2,\n.h2 {\n  font-size: 30px;\n}\nh3,\n.h3 {\n  font-size: 24px;\n}\nh4,\n.h4 {\n  font-size: 18px;\n}\nh5,\n.h5 {\n  font-size: 14px;\n}\nh6,\n.h6 {\n  font-size: 12px;\n}\np {\n  margin: 0 0 10px;\n}\n.lead {\n  margin-bottom: 20px;\n  font-size: 16px;\n  font-weight: 300;\n  line-height: 1.4;\n}\n@media (min-width: 768px) {\n  .lead {\n    font-size: 21px;\n  }\n}\nsmall,\n.small {\n  font-size: 85%;\n}\nmark,\n.mark {\n  padding: 0.2em;\n  background-color: #fcf8e3;\n}\n.text-left {\n  text-align: left;\n}\n.text-right {\n  text-align: right;\n}\n.text-center {\n  text-align: center;\n}\n.text-justify {\n  text-align: justify;\n}\n.text-nowrap {\n  white-space: nowrap;\n}\n.text-lowercase {\n  text-transform: lowercase;\n}\n.text-uppercase {\n  text-transform: uppercase;\n}\n.text-capitalize {\n  text-transform: capitalize;\n}\n.text-muted {\n  color: #777777;\n}\n.text-primary {\n  color: #337ab7;\n}\na.text-primary:hover,\na.text-primary:focus {\n  color: #286090;\n}\n.text-success {\n  color: #3c763d;\n}\na.text-success:hover,\na.text-success:focus {\n  color: #2b542c;\n}\n.text-info {\n  color: #31708f;\n}\na.text-info:hover,\na.text-info:focus {\n  color: #245269;\n}\n.text-warning {\n  color: #8a6d3b;\n}\na.text-warning:hover,\na.text-warning:focus {\n  color: #66512c;\n}\n.text-danger {\n  color: #a94442;\n}\na.text-danger:hover,\na.text-danger:focus {\n  color: #843534;\n}\n.bg-primary {\n  color: #fff;\n  background-color: #337ab7;\n}\na.bg-primary:hover,\na.bg-primary:focus {\n  background-color: #286090;\n}\n.bg-success {\n  background-color: #dff0d8;\n}\na.bg-success:hover,\na.bg-success:focus {\n  background-color: #c1e2b3;\n}\n.bg-info {\n  background-color: #d9edf7;\n}\na.bg-info:hover,\na.bg-info:focus {\n  background-color: #afd9ee;\n}\n.bg-warning {\n  background-color: #fcf8e3;\n}\na.bg-warning:hover,\na.bg-warning:focus {\n  background-color: #f7ecb5;\n}\n.bg-danger {\n  background-color: #f2dede;\n}\na.bg-danger:hover,\na.bg-danger:focus {\n  background-color: #e4b9b9;\n}\n.page-header {\n  padding-bottom: 9px;\n  margin: 40px 0 20px;\n  border-bottom: 1px solid #eeeeee;\n}\nul,\nol {\n  margin-top: 0;\n  margin-bottom: 10px;\n}\nul ul,\nol ul,\nul ol,\nol ol {\n  margin-bottom: 0;\n}\n.list-unstyled {\n  padding-left: 0;\n  list-style: none;\n}\n.list-inline {\n  padding-left: 0;\n  list-style: none;\n  margin-left: -5px;\n}\n.list-inline > li {\n  display: inline-block;\n  padding-right: 5px;\n  padding-left: 5px;\n}\ndl {\n  margin-top: 0;\n  margin-bottom: 20px;\n}\ndt,\ndd {\n  line-height: 1.42857143;\n}\ndt {\n  font-weight: 700;\n}\ndd {\n  margin-left: 0;\n}\n@media (min-width: 768px) {\n  .dl-horizontal dt {\n    float: left;\n    width: 160px;\n    clear: left;\n    text-align: right;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n  .dl-horizontal dd {\n    margin-left: 180px;\n  }\n}\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n}\n.initialism {\n  font-size: 90%;\n  text-transform: uppercase;\n}\nblockquote {\n  padding: 10px 20px;\n  margin: 0 0 20px;\n  font-size: 17.5px;\n  border-left: 5px solid #eeeeee;\n}\nblockquote p:last-child,\nblockquote ul:last-child,\nblockquote ol:last-child {\n  margin-bottom: 0;\n}\nblockquote footer,\nblockquote small,\nblockquote .small {\n  display: block;\n  font-size: 80%;\n  line-height: 1.42857143;\n  color: #777777;\n}\nblockquote footer:before,\nblockquote small:before,\nblockquote .small:before {\n  content: \"\\2014 \\00A0\";\n}\n.blockquote-reverse,\nblockquote.pull-right {\n  padding-right: 15px;\n  padding-left: 0;\n  text-align: right;\n  border-right: 5px solid #eeeeee;\n  border-left: 0;\n}\n.blockquote-reverse footer:before,\nblockquote.pull-right footer:before,\n.blockquote-reverse small:before,\nblockquote.pull-right small:before,\n.blockquote-reverse .small:before,\nblockquote.pull-right .small:before {\n  content: \"\";\n}\n.blockquote-reverse footer:after,\nblockquote.pull-right footer:after,\n.blockquote-reverse small:after,\nblockquote.pull-right small:after,\n.blockquote-reverse .small:after,\nblockquote.pull-right .small:after {\n  content: \"\\00A0 \\2014\";\n}\naddress {\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 1.42857143;\n}\ncode,\nkbd,\npre,\nsamp {\n  font-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n}\ncode {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: #c7254e;\n  background-color: #f9f2f4;\n  border-radius: 4px;\n}\nkbd {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: #fff;\n  background-color: #333;\n  border-radius: 3px;\n  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);\n  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\nkbd kbd {\n  padding: 0;\n  font-size: 100%;\n  font-weight: 700;\n  -webkit-box-shadow: none;\n  box-shadow: none;\n}\npre {\n  display: block;\n  padding: 9.5px;\n  margin: 0 0 10px;\n  font-size: 13px;\n  line-height: 1.42857143;\n  color: #333333;\n  word-break: break-all;\n  word-wrap: break-word;\n  background-color: #f5f5f5;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n}\npre code {\n  padding: 0;\n  font-size: inherit;\n  color: inherit;\n  white-space: pre-wrap;\n  background-color: transparent;\n  border-radius: 0;\n}\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll;\n}\n.container {\n  padding-right: 15px;\n  padding-left: 15px;\n  margin-right: auto;\n  margin-left: auto;\n}\n@media (min-width: 768px) {\n  .container {\n    width: 750px;\n  }\n}\n@media (min-width: 992px) {\n  .container {\n    width: 970px;\n  }\n}\n@media (min-width: 1200px) {\n  .container {\n    width: 1170px;\n  }\n}\n.container-fluid {\n  padding-right: 15px;\n  padding-left: 15px;\n  margin-right: auto;\n  margin-left: auto;\n}\n.row {\n  margin-right: -15px;\n  margin-left: -15px;\n}\n.row-no-gutters {\n  margin-right: 0;\n  margin-left: 0;\n}\n.row-no-gutters [class*=\"col-\"] {\n  padding-right: 0;\n  padding-left: 0;\n}\n.col-xs-1,\n.col-sm-1,\n.col-md-1,\n.col-lg-1,\n.col-xs-2,\n.col-sm-2,\n.col-md-2,\n.col-lg-2,\n.col-xs-3,\n.col-sm-3,\n.col-md-3,\n.col-lg-3,\n.col-xs-4,\n.col-sm-4,\n.col-md-4,\n.col-lg-4,\n.col-xs-5,\n.col-sm-5,\n.col-md-5,\n.col-lg-5,\n.col-xs-6,\n.col-sm-6,\n.col-md-6,\n.col-lg-6,\n.col-xs-7,\n.col-sm-7,\n.col-md-7,\n.col-lg-7,\n.col-xs-8,\n.col-sm-8,\n.col-md-8,\n.col-lg-8,\n.col-xs-9,\n.col-sm-9,\n.col-md-9,\n.col-lg-9,\n.col-xs-10,\n.col-sm-10,\n.col-md-10,\n.col-lg-10,\n.col-xs-11,\n.col-sm-11,\n.col-md-11,\n.col-lg-11,\n.col-xs-12,\n.col-sm-12,\n.col-md-12,\n.col-lg-12 {\n  position: relative;\n  min-height: 1px;\n  padding-right: 15px;\n  padding-left: 15px;\n}\n.col-xs-1,\n.col-xs-2,\n.col-xs-3,\n.col-xs-4,\n.col-xs-5,\n.col-xs-6,\n.col-xs-7,\n.col-xs-8,\n.col-xs-9,\n.col-xs-10,\n.col-xs-11,\n.col-xs-12 {\n  float: left;\n}\n.col-xs-12 {\n  width: 100%;\n}\n.col-xs-11 {\n  width: 91.66666667%;\n}\n.col-xs-10 {\n  width: 83.33333333%;\n}\n.col-xs-9 {\n  width: 75%;\n}\n.col-xs-8 {\n  width: 66.66666667%;\n}\n.col-xs-7 {\n  width: 58.33333333%;\n}\n.col-xs-6 {\n  width: 50%;\n}\n.col-xs-5 {\n  width: 41.66666667%;\n}\n.col-xs-4 {\n  width: 33.33333333%;\n}\n.col-xs-3 {\n  width: 25%;\n}\n.col-xs-2 {\n  width: 16.66666667%;\n}\n.col-xs-1 {\n  width: 8.33333333%;\n}\n.col-xs-pull-12 {\n  right: 100%;\n}\n.col-xs-pull-11 {\n  right: 91.66666667%;\n}\n.col-xs-pull-10 {\n  right: 83.33333333%;\n}\n.col-xs-pull-9 {\n  right: 75%;\n}\n.col-xs-pull-8 {\n  right: 66.66666667%;\n}\n.col-xs-pull-7 {\n  right: 58.33333333%;\n}\n.col-xs-pull-6 {\n  right: 50%;\n}\n.col-xs-pull-5 {\n  right: 41.66666667%;\n}\n.col-xs-pull-4 {\n  right: 33.33333333%;\n}\n.col-xs-pull-3 {\n  right: 25%;\n}\n.col-xs-pull-2 {\n  right: 16.66666667%;\n}\n.col-xs-pull-1 {\n  right: 8.33333333%;\n}\n.col-xs-pull-0 {\n  right: auto;\n}\n.col-xs-push-12 {\n  left: 100%;\n}\n.col-xs-push-11 {\n  left: 91.66666667%;\n}\n.col-xs-push-10 {\n  left: 83.33333333%;\n}\n.col-xs-push-9 {\n  left: 75%;\n}\n.col-xs-push-8 {\n  left: 66.66666667%;\n}\n.col-xs-push-7 {\n  left: 58.33333333%;\n}\n.col-xs-push-6 {\n  left: 50%;\n}\n.col-xs-push-5 {\n  left: 41.66666667%;\n}\n.col-xs-push-4 {\n  left: 33.33333333%;\n}\n.col-xs-push-3 {\n  left: 25%;\n}\n.col-xs-push-2 {\n  left: 16.66666667%;\n}\n.col-xs-push-1 {\n  left: 8.33333333%;\n}\n.col-xs-push-0 {\n  left: auto;\n}\n.col-xs-offset-12 {\n  margin-left: 100%;\n}\n.col-xs-offset-11 {\n  margin-left: 91.66666667%;\n}\n.col-xs-offset-10 {\n  margin-left: 83.33333333%;\n}\n.col-xs-offset-9 {\n  margin-left: 75%;\n}\n.col-xs-offset-8 {\n  margin-left: 66.66666667%;\n}\n.col-xs-offset-7 {\n  margin-left: 58.33333333%;\n}\n.col-xs-offset-6 {\n  margin-left: 50%;\n}\n.col-xs-offset-5 {\n  margin-left: 41.66666667%;\n}\n.col-xs-offset-4 {\n  margin-left: 33.33333333%;\n}\n.col-xs-offset-3 {\n  margin-left: 25%;\n}\n.col-xs-offset-2 {\n  margin-left: 16.66666667%;\n}\n.col-xs-offset-1 {\n  margin-left: 8.33333333%;\n}\n.col-xs-offset-0 {\n  margin-left: 0%;\n}\n@media (min-width: 768px) {\n  .col-sm-1,\n  .col-sm-2,\n  .col-sm-3,\n  .col-sm-4,\n  .col-sm-5,\n  .col-sm-6,\n  .col-sm-7,\n  .col-sm-8,\n  .col-sm-9,\n  .col-sm-10,\n  .col-sm-11,\n  .col-sm-12 {\n    float: left;\n  }\n  .col-sm-12 {\n    width: 100%;\n  }\n  .col-sm-11 {\n    width: 91.66666667%;\n  }\n  .col-sm-10 {\n    width: 83.33333333%;\n  }\n  .col-sm-9 {\n    width: 75%;\n  }\n  .col-sm-8 {\n    width: 66.66666667%;\n  }\n  .col-sm-7 {\n    width: 58.33333333%;\n  }\n  .col-sm-6 {\n    width: 50%;\n  }\n  .col-sm-5 {\n    width: 41.66666667%;\n  }\n  .col-sm-4 {\n    width: 33.33333333%;\n  }\n  .col-sm-3 {\n    width: 25%;\n  }\n  .col-sm-2 {\n    width: 16.66666667%;\n  }\n  .col-sm-1 {\n    width: 8.33333333%;\n  }\n  .col-sm-pull-12 {\n    right: 100%;\n  }\n  .col-sm-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-sm-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-sm-pull-9 {\n    right: 75%;\n  }\n  .col-sm-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-sm-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-sm-pull-6 {\n    right: 50%;\n  }\n  .col-sm-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-sm-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-sm-pull-3 {\n    right: 25%;\n  }\n  .col-sm-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-sm-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-sm-pull-0 {\n    right: auto;\n  }\n  .col-sm-push-12 {\n    left: 100%;\n  }\n  .col-sm-push-11 {\n    left: 91.66666667%;\n  }\n  .col-sm-push-10 {\n    left: 83.33333333%;\n  }\n  .col-sm-push-9 {\n    left: 75%;\n  }\n  .col-sm-push-8 {\n    left: 66.66666667%;\n  }\n  .col-sm-push-7 {\n    left: 58.33333333%;\n  }\n  .col-sm-push-6 {\n    left: 50%;\n  }\n  .col-sm-push-5 {\n    left: 41.66666667%;\n  }\n  .col-sm-push-4 {\n    left: 33.33333333%;\n  }\n  .col-sm-push-3 {\n    left: 25%;\n  }\n  .col-sm-push-2 {\n    left: 16.66666667%;\n  }\n  .col-sm-push-1 {\n    left: 8.33333333%;\n  }\n  .col-sm-push-0 {\n    left: auto;\n  }\n  .col-sm-offset-12 {\n    margin-left: 100%;\n  }\n  .col-sm-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-sm-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-sm-offset-9 {\n    margin-left: 75%;\n  }\n  .col-sm-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-sm-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-sm-offset-6 {\n    margin-left: 50%;\n  }\n  .col-sm-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-sm-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-sm-offset-3 {\n    margin-left: 25%;\n  }\n  .col-sm-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-sm-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-sm-offset-0 {\n    margin-left: 0%;\n  }\n}\n@media (min-width: 992px) {\n  .col-md-1,\n  .col-md-2,\n  .col-md-3,\n  .col-md-4,\n  .col-md-5,\n  .col-md-6,\n  .col-md-7,\n  .col-md-8,\n  .col-md-9,\n  .col-md-10,\n  .col-md-11,\n  .col-md-12 {\n    float: left;\n  }\n  .col-md-12 {\n    width: 100%;\n  }\n  .col-md-11 {\n    width: 91.66666667%;\n  }\n  .col-md-10 {\n    width: 83.33333333%;\n  }\n  .col-md-9 {\n    width: 75%;\n  }\n  .col-md-8 {\n    width: 66.66666667%;\n  }\n  .col-md-7 {\n    width: 58.33333333%;\n  }\n  .col-md-6 {\n    width: 50%;\n  }\n  .col-md-5 {\n    width: 41.66666667%;\n  }\n  .col-md-4 {\n    width: 33.33333333%;\n  }\n  .col-md-3 {\n    width: 25%;\n  }\n  .col-md-2 {\n    width: 16.66666667%;\n  }\n  .col-md-1 {\n    width: 8.33333333%;\n  }\n  .col-md-pull-12 {\n    right: 100%;\n  }\n  .col-md-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-md-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-md-pull-9 {\n    right: 75%;\n  }\n  .col-md-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-md-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-md-pull-6 {\n    right: 50%;\n  }\n  .col-md-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-md-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-md-pull-3 {\n    right: 25%;\n  }\n  .col-md-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-md-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-md-pull-0 {\n    right: auto;\n  }\n  .col-md-push-12 {\n    left: 100%;\n  }\n  .col-md-push-11 {\n    left: 91.66666667%;\n  }\n  .col-md-push-10 {\n    left: 83.33333333%;\n  }\n  .col-md-push-9 {\n    left: 75%;\n  }\n  .col-md-push-8 {\n    left: 66.66666667%;\n  }\n  .col-md-push-7 {\n    left: 58.33333333%;\n  }\n  .col-md-push-6 {\n    left: 50%;\n  }\n  .col-md-push-5 {\n    left: 41.66666667%;\n  }\n  .col-md-push-4 {\n    left: 33.33333333%;\n  }\n  .col-md-push-3 {\n    left: 25%;\n  }\n  .col-md-push-2 {\n    left: 16.66666667%;\n  }\n  .col-md-push-1 {\n    left: 8.33333333%;\n  }\n  .col-md-push-0 {\n    left: auto;\n  }\n  .col-md-offset-12 {\n    margin-left: 100%;\n  }\n  .col-md-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-md-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-md-offset-9 {\n    margin-left: 75%;\n  }\n  .col-md-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-md-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-md-offset-6 {\n    margin-left: 50%;\n  }\n  .col-md-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-md-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-md-offset-3 {\n    margin-left: 25%;\n  }\n  .col-md-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-md-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-md-offset-0 {\n    margin-left: 0%;\n  }\n}\n@media (min-width: 1200px) {\n  .col-lg-1,\n  .col-lg-2,\n  .col-lg-3,\n  .col-lg-4,\n  .col-lg-5,\n  .col-lg-6,\n  .col-lg-7,\n  .col-lg-8,\n  .col-lg-9,\n  .col-lg-10,\n  .col-lg-11,\n  .col-lg-12 {\n    float: left;\n  }\n  .col-lg-12 {\n    width: 100%;\n  }\n  .col-lg-11 {\n    width: 91.66666667%;\n  }\n  .col-lg-10 {\n    width: 83.33333333%;\n  }\n  .col-lg-9 {\n    width: 75%;\n  }\n  .col-lg-8 {\n    width: 66.66666667%;\n  }\n  .col-lg-7 {\n    width: 58.33333333%;\n  }\n  .col-lg-6 {\n    width: 50%;\n  }\n  .col-lg-5 {\n    width: 41.66666667%;\n  }\n  .col-lg-4 {\n    width: 33.33333333%;\n  }\n  .col-lg-3 {\n    width: 25%;\n  }\n  .col-lg-2 {\n    width: 16.66666667%;\n  }\n  .col-lg-1 {\n    width: 8.33333333%;\n  }\n  .col-lg-pull-12 {\n    right: 100%;\n  }\n  .col-lg-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-lg-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-lg-pull-9 {\n    right: 75%;\n  }\n  .col-lg-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-lg-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-lg-pull-6 {\n    right: 50%;\n  }\n  .col-lg-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-lg-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-lg-pull-3 {\n    right: 25%;\n  }\n  .col-lg-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-lg-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-lg-pull-0 {\n    right: auto;\n  }\n  .col-lg-push-12 {\n    left: 100%;\n  }\n  .col-lg-push-11 {\n    left: 91.66666667%;\n  }\n  .col-lg-push-10 {\n    left: 83.33333333%;\n  }\n  .col-lg-push-9 {\n    left: 75%;\n  }\n  .col-lg-push-8 {\n    left: 66.66666667%;\n  }\n  .col-lg-push-7 {\n    left: 58.33333333%;\n  }\n  .col-lg-push-6 {\n    left: 50%;\n  }\n  .col-lg-push-5 {\n    left: 41.66666667%;\n  }\n  .col-lg-push-4 {\n    left: 33.33333333%;\n  }\n  .col-lg-push-3 {\n    left: 25%;\n  }\n  .col-lg-push-2 {\n    left: 16.66666667%;\n  }\n  .col-lg-push-1 {\n    left: 8.33333333%;\n  }\n  .col-lg-push-0 {\n    left: auto;\n  }\n  .col-lg-offset-12 {\n    margin-left: 100%;\n  }\n  .col-lg-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-lg-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-lg-offset-9 {\n    margin-left: 75%;\n  }\n  .col-lg-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-lg-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-lg-offset-6 {\n    margin-left: 50%;\n  }\n  .col-lg-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-lg-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-lg-offset-3 {\n    margin-left: 25%;\n  }\n  .col-lg-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-lg-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-lg-offset-0 {\n    margin-left: 0%;\n  }\n}\ntable {\n  background-color: transparent;\n}\ntable col[class*=\"col-\"] {\n  position: static;\n  display: table-column;\n  float: none;\n}\ntable td[class*=\"col-\"],\ntable th[class*=\"col-\"] {\n  position: static;\n  display: table-cell;\n  float: none;\n}\ncaption {\n  padding-top: 8px;\n  padding-bottom: 8px;\n  color: #777777;\n  text-align: left;\n}\nth {\n  text-align: left;\n}\n.table {\n  width: 100%;\n  max-width: 100%;\n  margin-bottom: 20px;\n}\n.table > thead > tr > th,\n.table > tbody > tr > th,\n.table > tfoot > tr > th,\n.table > thead > tr > td,\n.table > tbody > tr > td,\n.table > tfoot > tr > td {\n  padding: 8px;\n  line-height: 1.42857143;\n  vertical-align: top;\n  border-top: 1px solid #ddd;\n}\n.table > thead > tr > th {\n  vertical-align: bottom;\n  border-bottom: 2px solid #ddd;\n}\n.table > caption + thead > tr:first-child > th,\n.table > colgroup + thead > tr:first-child > th,\n.table > thead:first-child > tr:first-child > th,\n.table > caption + thead > tr:first-child > td,\n.table > colgroup + thead > tr:first-child > td,\n.table > thead:first-child > tr:first-child > td {\n  border-top: 0;\n}\n.table > tbody + tbody {\n  border-top: 2px solid #ddd;\n}\n.table .table {\n  background-color: #fff;\n}\n.table-condensed > thead > tr > th,\n.table-condensed > tbody > tr > th,\n.table-condensed > tfoot > tr > th,\n.table-condensed > thead > tr > td,\n.table-condensed > tbody > tr > td,\n.table-condensed > tfoot > tr > td {\n  padding: 5px;\n}\n.table-bordered {\n  border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > tbody > tr > th,\n.table-bordered > tfoot > tr > th,\n.table-bordered > thead > tr > td,\n.table-bordered > tbody > tr > td,\n.table-bordered > tfoot > tr > td {\n  border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > thead > tr > td {\n  border-bottom-width: 2px;\n}\n.table-striped > tbody > tr:nth-of-type(odd) {\n  background-color: #f9f9f9;\n}\n.table-hover > tbody > tr:hover {\n  background-color: #f5f5f5;\n}\n.table > thead > tr > td.active,\n.table > tbody > tr > td.active,\n.table > tfoot > tr > td.active,\n.table > thead > tr > th.active,\n.table > tbody > tr > th.active,\n.table > tfoot > tr > th.active,\n.table > thead > tr.active > td,\n.table > tbody > tr.active > td,\n.table > tfoot > tr.active > td,\n.table > thead > tr.active > th,\n.table > tbody > tr.active > th,\n.table > tfoot > tr.active > th {\n  background-color: #f5f5f5;\n}\n.table-hover > tbody > tr > td.active:hover,\n.table-hover > tbody > tr > th.active:hover,\n.table-hover > tbody > tr.active:hover > td,\n.table-hover > tbody > tr:hover > .active,\n.table-hover > tbody > tr.active:hover > th {\n  background-color: #e8e8e8;\n}\n.table > thead > tr > td.success,\n.table > tbody > tr > td.success,\n.table > tfoot > tr > td.success,\n.table > thead > tr > th.success,\n.table > tbody > tr > th.success,\n.table > tfoot > tr > th.success,\n.table > thead > tr.success > td,\n.table > tbody > tr.success > td,\n.table > tfoot > tr.success > td,\n.table > thead > tr.success > th,\n.table > tbody > tr.success > th,\n.table > tfoot > tr.success > th {\n  background-color: #dff0d8;\n}\n.table-hover > tbody > tr > td.success:hover,\n.table-hover > tbody > tr > th.success:hover,\n.table-hover > tbody > tr.success:hover > td,\n.table-hover > tbody > tr:hover > .success,\n.table-hover > tbody > tr.success:hover > th {\n  background-color: #d0e9c6;\n}\n.table > thead > tr > td.info,\n.table > tbody > tr > td.info,\n.table > tfoot > tr > td.info,\n.table > thead > tr > th.info,\n.table > tbody > tr > th.info,\n.table > tfoot > tr > th.info,\n.table > thead > tr.info > td,\n.table > tbody > tr.info > td,\n.table > tfoot > tr.info > td,\n.table > thead > tr.info > th,\n.table > tbody > tr.info > th,\n.table > tfoot > tr.info > th {\n  background-color: #d9edf7;\n}\n.table-hover > tbody > tr > td.info:hover,\n.table-hover > tbody > tr > th.info:hover,\n.table-hover > tbody > tr.info:hover > td,\n.table-hover > tbody > tr:hover > .info,\n.table-hover > tbody > tr.info:hover > th {\n  background-color: #c4e3f3;\n}\n.table > thead > tr > td.warning,\n.table > tbody > tr > td.warning,\n.table > tfoot > tr > td.warning,\n.table > thead > tr > th.warning,\n.table > tbody > tr > th.warning,\n.table > tfoot > tr > th.warning,\n.table > thead > tr.warning > td,\n.table > tbody > tr.warning > td,\n.table > tfoot > tr.warning > td,\n.table > thead > tr.warning > th,\n.table > tbody > tr.warning > th,\n.table > tfoot > tr.warning > th {\n  background-color: #fcf8e3;\n}\n.table-hover > tbody > tr > td.warning:hover,\n.table-hover > tbody > tr > th.warning:hover,\n.table-hover > tbody > tr.warning:hover > td,\n.table-hover > tbody > tr:hover > .warning,\n.table-hover > tbody > tr.warning:hover > th {\n  background-color: #faf2cc;\n}\n.table > thead > tr > td.danger,\n.table > tbody > tr > td.danger,\n.table > tfoot > tr > td.danger,\n.table > thead > tr > th.danger,\n.table > tbody > tr > th.danger,\n.table > tfoot > tr > th.danger,\n.table > thead > tr.danger > td,\n.table > tbody > tr.danger > td,\n.table > tfoot > tr.danger > td,\n.table > thead > tr.danger > th,\n.table > tbody > tr.danger > th,\n.table > tfoot > tr.danger > th {\n  background-color: #f2dede;\n}\n.table-hover > tbody > tr > td.danger:hover,\n.table-hover > tbody > tr > th.danger:hover,\n.table-hover > tbody > tr.danger:hover > td,\n.table-hover > tbody > tr:hover > .danger,\n.table-hover > tbody > tr.danger:hover > th {\n  background-color: #ebcccc;\n}\n.table-responsive {\n  min-height: 0.01%;\n  overflow-x: auto;\n}\n@media screen and (max-width: 767px) {\n  .table-responsive {\n    width: 100%;\n    margin-bottom: 15px;\n    overflow-y: hidden;\n    -ms-overflow-style: -ms-autohiding-scrollbar;\n    border: 1px solid #ddd;\n  }\n  .table-responsive > .table {\n    margin-bottom: 0;\n  }\n  .table-responsive > .table > thead > tr > th,\n  .table-responsive > .table > tbody > tr > th,\n  .table-responsive > .table > tfoot > tr > th,\n  .table-responsive > .table > thead > tr > td,\n  .table-responsive > .table > tbody > tr > td,\n  .table-responsive > .table > tfoot > tr > td {\n    white-space: nowrap;\n  }\n  .table-responsive > .table-bordered {\n    border: 0;\n  }\n  .table-responsive > .table-bordered > thead > tr > th:first-child,\n  .table-responsive > .table-bordered > tbody > tr > th:first-child,\n  .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n  .table-responsive > .table-bordered > thead > tr > td:first-child,\n  .table-responsive > .table-bordered > tbody > tr > td:first-child,\n  .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n    border-left: 0;\n  }\n  .table-responsive > .table-bordered > thead > tr > th:last-child,\n  .table-responsive > .table-bordered > tbody > tr > th:last-child,\n  .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n  .table-responsive > .table-bordered > thead > tr > td:last-child,\n  .table-responsive > .table-bordered > tbody > tr > td:last-child,\n  .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n    border-right: 0;\n  }\n  .table-responsive > .table-bordered > tbody > tr:last-child > th,\n  .table-responsive > .table-bordered > tfoot > tr:last-child > th,\n  .table-responsive > .table-bordered > tbody > tr:last-child > td,\n  .table-responsive > .table-bordered > tfoot > tr:last-child > td {\n    border-bottom: 0;\n  }\n}\nfieldset {\n  min-width: 0;\n  padding: 0;\n  margin: 0;\n  border: 0;\n}\nlegend {\n  display: block;\n  width: 100%;\n  padding: 0;\n  margin-bottom: 20px;\n  font-size: 21px;\n  line-height: inherit;\n  color: #333333;\n  border: 0;\n  border-bottom: 1px solid #e5e5e5;\n}\nlabel {\n  display: inline-block;\n  max-width: 100%;\n  margin-bottom: 5px;\n  font-weight: 700;\n}\ninput[type=\"search\"] {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n  -webkit-appearance: none;\n  -moz-appearance: none;\n  appearance: none;\n}\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n  margin: 4px 0 0;\n  margin-top: 1px \\9;\n  line-height: normal;\n}\ninput[type=\"radio\"][disabled],\ninput[type=\"checkbox\"][disabled],\ninput[type=\"radio\"].disabled,\ninput[type=\"checkbox\"].disabled,\nfieldset[disabled] input[type=\"radio\"],\nfieldset[disabled] input[type=\"checkbox\"] {\n  cursor: not-allowed;\n}\ninput[type=\"file\"] {\n  display: block;\n}\ninput[type=\"range\"] {\n  display: block;\n  width: 100%;\n}\nselect[multiple],\nselect[size] {\n  height: auto;\n}\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\noutput {\n  display: block;\n  padding-top: 7px;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #555555;\n}\n.form-control {\n  display: block;\n  width: 100%;\n  height: 34px;\n  padding: 6px 12px;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #555555;\n  background-color: #fff;\n  background-image: none;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n  -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n  -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;\n  transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;\n  transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n  transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;\n}\n.form-control:focus {\n  border-color: #66afe9;\n  outline: 0;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, 0.6);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, 0.6);\n}\n.form-control::-moz-placeholder {\n  color: #999;\n  opacity: 1;\n}\n.form-control:-ms-input-placeholder {\n  color: #999;\n}\n.form-control::-webkit-input-placeholder {\n  color: #999;\n}\n.form-control::-ms-expand {\n  background-color: transparent;\n  border: 0;\n}\n.form-control[disabled],\n.form-control[readonly],\nfieldset[disabled] .form-control {\n  background-color: #eeeeee;\n  opacity: 1;\n}\n.form-control[disabled],\nfieldset[disabled] .form-control {\n  cursor: not-allowed;\n}\ntextarea.form-control {\n  height: auto;\n}\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n  input[type=\"date\"].form-control,\n  input[type=\"time\"].form-control,\n  input[type=\"datetime-local\"].form-control,\n  input[type=\"month\"].form-control {\n    line-height: 34px;\n  }\n  input[type=\"date\"].input-sm,\n  input[type=\"time\"].input-sm,\n  input[type=\"datetime-local\"].input-sm,\n  input[type=\"month\"].input-sm,\n  .input-group-sm input[type=\"date\"],\n  .input-group-sm input[type=\"time\"],\n  .input-group-sm input[type=\"datetime-local\"],\n  .input-group-sm input[type=\"month\"] {\n    line-height: 30px;\n  }\n  input[type=\"date\"].input-lg,\n  input[type=\"time\"].input-lg,\n  input[type=\"datetime-local\"].input-lg,\n  input[type=\"month\"].input-lg,\n  .input-group-lg input[type=\"date\"],\n  .input-group-lg input[type=\"time\"],\n  .input-group-lg input[type=\"datetime-local\"],\n  .input-group-lg input[type=\"month\"] {\n    line-height: 46px;\n  }\n}\n.form-group {\n  margin-bottom: 15px;\n}\n.radio,\n.checkbox {\n  position: relative;\n  display: block;\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\n.radio.disabled label,\n.checkbox.disabled label,\nfieldset[disabled] .radio label,\nfieldset[disabled] .checkbox label {\n  cursor: not-allowed;\n}\n.radio label,\n.checkbox label {\n  min-height: 20px;\n  padding-left: 20px;\n  margin-bottom: 0;\n  font-weight: 400;\n  cursor: pointer;\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n  position: absolute;\n  margin-top: 4px \\9;\n  margin-left: -20px;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n  margin-top: -5px;\n}\n.radio-inline,\n.checkbox-inline {\n  position: relative;\n  display: inline-block;\n  padding-left: 20px;\n  margin-bottom: 0;\n  font-weight: 400;\n  vertical-align: middle;\n  cursor: pointer;\n}\n.radio-inline.disabled,\n.checkbox-inline.disabled,\nfieldset[disabled] .radio-inline,\nfieldset[disabled] .checkbox-inline {\n  cursor: not-allowed;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n  margin-top: 0;\n  margin-left: 10px;\n}\n.form-control-static {\n  min-height: 34px;\n  padding-top: 7px;\n  padding-bottom: 7px;\n  margin-bottom: 0;\n}\n.form-control-static.input-lg,\n.form-control-static.input-sm {\n  padding-right: 0;\n  padding-left: 0;\n}\n.input-sm {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\nselect.input-sm {\n  height: 30px;\n  line-height: 30px;\n}\ntextarea.input-sm,\nselect[multiple].input-sm {\n  height: auto;\n}\n.form-group-sm .form-control {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.form-group-sm select.form-control {\n  height: 30px;\n  line-height: 30px;\n}\n.form-group-sm textarea.form-control,\n.form-group-sm select[multiple].form-control {\n  height: auto;\n}\n.form-group-sm .form-control-static {\n  height: 30px;\n  min-height: 32px;\n  padding: 6px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n}\n.input-lg {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\nselect.input-lg {\n  height: 46px;\n  line-height: 46px;\n}\ntextarea.input-lg,\nselect[multiple].input-lg {\n  height: auto;\n}\n.form-group-lg .form-control {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\n.form-group-lg select.form-control {\n  height: 46px;\n  line-height: 46px;\n}\n.form-group-lg textarea.form-control,\n.form-group-lg select[multiple].form-control {\n  height: auto;\n}\n.form-group-lg .form-control-static {\n  height: 46px;\n  min-height: 38px;\n  padding: 11px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n}\n.has-feedback {\n  position: relative;\n}\n.has-feedback .form-control {\n  padding-right: 42.5px;\n}\n.form-control-feedback {\n  position: absolute;\n  top: 0;\n  right: 0;\n  z-index: 2;\n  display: block;\n  width: 34px;\n  height: 34px;\n  line-height: 34px;\n  text-align: center;\n  pointer-events: none;\n}\n.input-lg + .form-control-feedback,\n.input-group-lg + .form-control-feedback,\n.form-group-lg .form-control + .form-control-feedback {\n  width: 46px;\n  height: 46px;\n  line-height: 46px;\n}\n.input-sm + .form-control-feedback,\n.input-group-sm + .form-control-feedback,\n.form-group-sm .form-control + .form-control-feedback {\n  width: 30px;\n  height: 30px;\n  line-height: 30px;\n}\n.has-success .help-block,\n.has-success .control-label,\n.has-success .radio,\n.has-success .checkbox,\n.has-success .radio-inline,\n.has-success .checkbox-inline,\n.has-success.radio label,\n.has-success.checkbox label,\n.has-success.radio-inline label,\n.has-success.checkbox-inline label {\n  color: #3c763d;\n}\n.has-success .form-control {\n  border-color: #3c763d;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-success .form-control:focus {\n  border-color: #2b542c;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n}\n.has-success .input-group-addon {\n  color: #3c763d;\n  background-color: #dff0d8;\n  border-color: #3c763d;\n}\n.has-success .form-control-feedback {\n  color: #3c763d;\n}\n.has-warning .help-block,\n.has-warning .control-label,\n.has-warning .radio,\n.has-warning .checkbox,\n.has-warning .radio-inline,\n.has-warning .checkbox-inline,\n.has-warning.radio label,\n.has-warning.checkbox label,\n.has-warning.radio-inline label,\n.has-warning.checkbox-inline label {\n  color: #8a6d3b;\n}\n.has-warning .form-control {\n  border-color: #8a6d3b;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-warning .form-control:focus {\n  border-color: #66512c;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n}\n.has-warning .input-group-addon {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n  border-color: #8a6d3b;\n}\n.has-warning .form-control-feedback {\n  color: #8a6d3b;\n}\n.has-error .help-block,\n.has-error .control-label,\n.has-error .radio,\n.has-error .checkbox,\n.has-error .radio-inline,\n.has-error .checkbox-inline,\n.has-error.radio label,\n.has-error.checkbox label,\n.has-error.radio-inline label,\n.has-error.checkbox-inline label {\n  color: #a94442;\n}\n.has-error .form-control {\n  border-color: #a94442;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-error .form-control:focus {\n  border-color: #843534;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n}\n.has-error .input-group-addon {\n  color: #a94442;\n  background-color: #f2dede;\n  border-color: #a94442;\n}\n.has-error .form-control-feedback {\n  color: #a94442;\n}\n.has-feedback label ~ .form-control-feedback {\n  top: 25px;\n}\n.has-feedback label.sr-only ~ .form-control-feedback {\n  top: 0;\n}\n.help-block {\n  display: block;\n  margin-top: 5px;\n  margin-bottom: 10px;\n  color: #737373;\n}\n@media (min-width: 768px) {\n  .form-inline .form-group {\n    display: inline-block;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .form-control {\n    display: inline-block;\n    width: auto;\n    vertical-align: middle;\n  }\n  .form-inline .form-control-static {\n    display: inline-block;\n  }\n  .form-inline .input-group {\n    display: inline-table;\n    vertical-align: middle;\n  }\n  .form-inline .input-group .input-group-addon,\n  .form-inline .input-group .input-group-btn,\n  .form-inline .input-group .form-control {\n    width: auto;\n  }\n  .form-inline .input-group > .form-control {\n    width: 100%;\n  }\n  .form-inline .control-label {\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .radio,\n  .form-inline .checkbox {\n    display: inline-block;\n    margin-top: 0;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .radio label,\n  .form-inline .checkbox label {\n    padding-left: 0;\n  }\n  .form-inline .radio input[type=\"radio\"],\n  .form-inline .checkbox input[type=\"checkbox\"] {\n    position: relative;\n    margin-left: 0;\n  }\n  .form-inline .has-feedback .form-control-feedback {\n    top: 0;\n  }\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox,\n.form-horizontal .radio-inline,\n.form-horizontal .checkbox-inline {\n  padding-top: 7px;\n  margin-top: 0;\n  margin-bottom: 0;\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox {\n  min-height: 27px;\n}\n.form-horizontal .form-group {\n  margin-right: -15px;\n  margin-left: -15px;\n}\n@media (min-width: 768px) {\n  .form-horizontal .control-label {\n    padding-top: 7px;\n    margin-bottom: 0;\n    text-align: right;\n  }\n}\n.form-horizontal .has-feedback .form-control-feedback {\n  right: 15px;\n}\n@media (min-width: 768px) {\n  .form-horizontal .form-group-lg .control-label {\n    padding-top: 11px;\n    font-size: 18px;\n  }\n}\n@media (min-width: 768px) {\n  .form-horizontal .form-group-sm .control-label {\n    padding-top: 6px;\n    font-size: 12px;\n  }\n}\n.btn {\n  display: inline-block;\n  margin-bottom: 0;\n  font-weight: normal;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: middle;\n  -ms-touch-action: manipulation;\n  touch-action: manipulation;\n  cursor: pointer;\n  background-image: none;\n  border: 1px solid transparent;\n  padding: 6px 12px;\n  font-size: 14px;\n  line-height: 1.42857143;\n  border-radius: 4px;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  user-select: none;\n}\n.btn:focus,\n.btn:active:focus,\n.btn.active:focus,\n.btn.focus,\n.btn:active.focus,\n.btn.active.focus {\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\n.btn:hover,\n.btn:focus,\n.btn.focus {\n  color: #333;\n  text-decoration: none;\n}\n.btn:active,\n.btn.active {\n  background-image: none;\n  outline: 0;\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn.disabled,\n.btn[disabled],\nfieldset[disabled] .btn {\n  cursor: not-allowed;\n  filter: alpha(opacity=65);\n  opacity: 0.65;\n  -webkit-box-shadow: none;\n  box-shadow: none;\n}\na.btn.disabled,\nfieldset[disabled] a.btn {\n  pointer-events: none;\n}\n.btn-default {\n  color: #333;\n  background-color: #fff;\n  border-color: #ccc;\n}\n.btn-default:focus,\n.btn-default.focus {\n  color: #333;\n  background-color: #e6e6e6;\n  border-color: #8c8c8c;\n}\n.btn-default:hover {\n  color: #333;\n  background-color: #e6e6e6;\n  border-color: #adadad;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n  color: #333;\n  background-color: #e6e6e6;\n  background-image: none;\n  border-color: #adadad;\n}\n.btn-default:active:hover,\n.btn-default.active:hover,\n.open > .dropdown-toggle.btn-default:hover,\n.btn-default:active:focus,\n.btn-default.active:focus,\n.open > .dropdown-toggle.btn-default:focus,\n.btn-default:active.focus,\n.btn-default.active.focus,\n.open > .dropdown-toggle.btn-default.focus {\n  color: #333;\n  background-color: #d4d4d4;\n  border-color: #8c8c8c;\n}\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus {\n  background-color: #fff;\n  border-color: #ccc;\n}\n.btn-default .badge {\n  color: #fff;\n  background-color: #333;\n}\n.btn-primary {\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #2e6da4;\n}\n.btn-primary:focus,\n.btn-primary.focus {\n  color: #fff;\n  background-color: #286090;\n  border-color: #122b40;\n}\n.btn-primary:hover {\n  color: #fff;\n  background-color: #286090;\n  border-color: #204d74;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n  color: #fff;\n  background-color: #286090;\n  background-image: none;\n  border-color: #204d74;\n}\n.btn-primary:active:hover,\n.btn-primary.active:hover,\n.open > .dropdown-toggle.btn-primary:hover,\n.btn-primary:active:focus,\n.btn-primary.active:focus,\n.open > .dropdown-toggle.btn-primary:focus,\n.btn-primary:active.focus,\n.btn-primary.active.focus,\n.open > .dropdown-toggle.btn-primary.focus {\n  color: #fff;\n  background-color: #204d74;\n  border-color: #122b40;\n}\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus {\n  background-color: #337ab7;\n  border-color: #2e6da4;\n}\n.btn-primary .badge {\n  color: #337ab7;\n  background-color: #fff;\n}\n.btn-success {\n  color: #fff;\n  background-color: #5cb85c;\n  border-color: #4cae4c;\n}\n.btn-success:focus,\n.btn-success.focus {\n  color: #fff;\n  background-color: #449d44;\n  border-color: #255625;\n}\n.btn-success:hover {\n  color: #fff;\n  background-color: #449d44;\n  border-color: #398439;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n  color: #fff;\n  background-color: #449d44;\n  background-image: none;\n  border-color: #398439;\n}\n.btn-success:active:hover,\n.btn-success.active:hover,\n.open > .dropdown-toggle.btn-success:hover,\n.btn-success:active:focus,\n.btn-success.active:focus,\n.open > .dropdown-toggle.btn-success:focus,\n.btn-success:active.focus,\n.btn-success.active.focus,\n.open > .dropdown-toggle.btn-success.focus {\n  color: #fff;\n  background-color: #398439;\n  border-color: #255625;\n}\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus {\n  background-color: #5cb85c;\n  border-color: #4cae4c;\n}\n.btn-success .badge {\n  color: #5cb85c;\n  background-color: #fff;\n}\n.btn-info {\n  color: #fff;\n  background-color: #5bc0de;\n  border-color: #46b8da;\n}\n.btn-info:focus,\n.btn-info.focus {\n  color: #fff;\n  background-color: #31b0d5;\n  border-color: #1b6d85;\n}\n.btn-info:hover {\n  color: #fff;\n  background-color: #31b0d5;\n  border-color: #269abc;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n  color: #fff;\n  background-color: #31b0d5;\n  background-image: none;\n  border-color: #269abc;\n}\n.btn-info:active:hover,\n.btn-info.active:hover,\n.open > .dropdown-toggle.btn-info:hover,\n.btn-info:active:focus,\n.btn-info.active:focus,\n.open > .dropdown-toggle.btn-info:focus,\n.btn-info:active.focus,\n.btn-info.active.focus,\n.open > .dropdown-toggle.btn-info.focus {\n  color: #fff;\n  background-color: #269abc;\n  border-color: #1b6d85;\n}\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus {\n  background-color: #5bc0de;\n  border-color: #46b8da;\n}\n.btn-info .badge {\n  color: #5bc0de;\n  background-color: #fff;\n}\n.btn-warning {\n  color: #fff;\n  background-color: #f0ad4e;\n  border-color: #eea236;\n}\n.btn-warning:focus,\n.btn-warning.focus {\n  color: #fff;\n  background-color: #ec971f;\n  border-color: #985f0d;\n}\n.btn-warning:hover {\n  color: #fff;\n  background-color: #ec971f;\n  border-color: #d58512;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n  color: #fff;\n  background-color: #ec971f;\n  background-image: none;\n  border-color: #d58512;\n}\n.btn-warning:active:hover,\n.btn-warning.active:hover,\n.open > .dropdown-toggle.btn-warning:hover,\n.btn-warning:active:focus,\n.btn-warning.active:focus,\n.open > .dropdown-toggle.btn-warning:focus,\n.btn-warning:active.focus,\n.btn-warning.active.focus,\n.open > .dropdown-toggle.btn-warning.focus {\n  color: #fff;\n  background-color: #d58512;\n  border-color: #985f0d;\n}\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus {\n  background-color: #f0ad4e;\n  border-color: #eea236;\n}\n.btn-warning .badge {\n  color: #f0ad4e;\n  background-color: #fff;\n}\n.btn-danger {\n  color: #fff;\n  background-color: #d9534f;\n  border-color: #d43f3a;\n}\n.btn-danger:focus,\n.btn-danger.focus {\n  color: #fff;\n  background-color: #c9302c;\n  border-color: #761c19;\n}\n.btn-danger:hover {\n  color: #fff;\n  background-color: #c9302c;\n  border-color: #ac2925;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n  color: #fff;\n  background-color: #c9302c;\n  background-image: none;\n  border-color: #ac2925;\n}\n.btn-danger:active:hover,\n.btn-danger.active:hover,\n.open > .dropdown-toggle.btn-danger:hover,\n.btn-danger:active:focus,\n.btn-danger.active:focus,\n.open > .dropdown-toggle.btn-danger:focus,\n.btn-danger:active.focus,\n.btn-danger.active.focus,\n.open > .dropdown-toggle.btn-danger.focus {\n  color: #fff;\n  background-color: #ac2925;\n  border-color: #761c19;\n}\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus {\n  background-color: #d9534f;\n  border-color: #d43f3a;\n}\n.btn-danger .badge {\n  color: #d9534f;\n  background-color: #fff;\n}\n.btn-link {\n  font-weight: 400;\n  color: #337ab7;\n  border-radius: 0;\n}\n.btn-link,\n.btn-link:active,\n.btn-link.active,\n.btn-link[disabled],\nfieldset[disabled] .btn-link {\n  background-color: transparent;\n  -webkit-box-shadow: none;\n  box-shadow: none;\n}\n.btn-link,\n.btn-link:hover,\n.btn-link:focus,\n.btn-link:active {\n  border-color: transparent;\n}\n.btn-link:hover,\n.btn-link:focus {\n  color: #23527c;\n  text-decoration: underline;\n  background-color: transparent;\n}\n.btn-link[disabled]:hover,\nfieldset[disabled] .btn-link:hover,\n.btn-link[disabled]:focus,\nfieldset[disabled] .btn-link:focus {\n  color: #777777;\n  text-decoration: none;\n}\n.btn-lg,\n.btn-group-lg > .btn {\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\n.btn-sm,\n.btn-group-sm > .btn {\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.btn-xs,\n.btn-group-xs > .btn {\n  padding: 1px 5px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.btn-block {\n  display: block;\n  width: 100%;\n}\n.btn-block + .btn-block {\n  margin-top: 5px;\n}\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n  width: 100%;\n}\n.fade {\n  opacity: 0;\n  -webkit-transition: opacity 0.15s linear;\n  -o-transition: opacity 0.15s linear;\n  transition: opacity 0.15s linear;\n}\n.fade.in {\n  opacity: 1;\n}\n.collapse {\n  display: none;\n}\n.collapse.in {\n  display: block;\n}\ntr.collapse.in {\n  display: table-row;\n}\ntbody.collapse.in {\n  display: table-row-group;\n}\n.collapsing {\n  position: relative;\n  height: 0;\n  overflow: hidden;\n  -webkit-transition-property: height, visibility;\n  -o-transition-property: height, visibility;\n  transition-property: height, visibility;\n  -webkit-transition-duration: 0.35s;\n  -o-transition-duration: 0.35s;\n  transition-duration: 0.35s;\n  -webkit-transition-timing-function: ease;\n  -o-transition-timing-function: ease;\n  transition-timing-function: ease;\n}\n.caret {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 2px;\n  vertical-align: middle;\n  border-top: 4px dashed;\n  border-top: 4px solid \\9;\n  border-right: 4px solid transparent;\n  border-left: 4px solid transparent;\n}\n.dropup,\n.dropdown {\n  position: relative;\n}\n.dropdown-toggle:focus {\n  outline: 0;\n}\n.dropdown-menu {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  z-index: 1000;\n  display: none;\n  float: left;\n  min-width: 160px;\n  padding: 5px 0;\n  margin: 2px 0 0;\n  font-size: 14px;\n  text-align: left;\n  list-style: none;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.15);\n  border-radius: 4px;\n  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n}\n.dropdown-menu.pull-right {\n  right: 0;\n  left: auto;\n}\n.dropdown-menu .divider {\n  height: 1px;\n  margin: 9px 0;\n  overflow: hidden;\n  background-color: #e5e5e5;\n}\n.dropdown-menu > li > a {\n  display: block;\n  padding: 3px 20px;\n  clear: both;\n  font-weight: 400;\n  line-height: 1.42857143;\n  color: #333333;\n  white-space: nowrap;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n  color: #262626;\n  text-decoration: none;\n  background-color: #f5f5f5;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n  color: #fff;\n  text-decoration: none;\n  background-color: #337ab7;\n  outline: 0;\n}\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n  color: #777777;\n}\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n  text-decoration: none;\n  cursor: not-allowed;\n  background-color: transparent;\n  background-image: none;\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n}\n.open > .dropdown-menu {\n  display: block;\n}\n.open > a {\n  outline: 0;\n}\n.dropdown-menu-right {\n  right: 0;\n  left: auto;\n}\n.dropdown-menu-left {\n  right: auto;\n  left: 0;\n}\n.dropdown-header {\n  display: block;\n  padding: 3px 20px;\n  font-size: 12px;\n  line-height: 1.42857143;\n  color: #777777;\n  white-space: nowrap;\n}\n.dropdown-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 990;\n}\n.pull-right > .dropdown-menu {\n  right: 0;\n  left: auto;\n}\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n  content: \"\";\n  border-top: 0;\n  border-bottom: 4px dashed;\n  border-bottom: 4px solid \\9;\n}\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n  top: auto;\n  bottom: 100%;\n  margin-bottom: 2px;\n}\n@media (min-width: 768px) {\n  .navbar-right .dropdown-menu {\n    right: 0;\n    left: auto;\n  }\n  .navbar-right .dropdown-menu-left {\n    right: auto;\n    left: 0;\n  }\n}\n.btn-group,\n.btn-group-vertical {\n  position: relative;\n  display: inline-block;\n  vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n  position: relative;\n  float: left;\n}\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus,\n.btn-group > .btn:active,\n.btn-group-vertical > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn.active {\n  z-index: 2;\n}\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group {\n  margin-left: -1px;\n}\n.btn-toolbar {\n  margin-left: -5px;\n}\n.btn-toolbar .btn,\n.btn-toolbar .btn-group,\n.btn-toolbar .input-group {\n  float: left;\n}\n.btn-toolbar > .btn,\n.btn-toolbar > .btn-group,\n.btn-toolbar > .input-group {\n  margin-left: 5px;\n}\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n  border-radius: 0;\n}\n.btn-group > .btn:first-child {\n  margin-left: 0;\n}\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group > .btn-group {\n  float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n  outline: 0;\n}\n.btn-group > .btn + .dropdown-toggle {\n  padding-right: 8px;\n  padding-left: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n  padding-right: 12px;\n  padding-left: 12px;\n}\n.btn-group.open .dropdown-toggle {\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-group.open .dropdown-toggle.btn-link {\n  -webkit-box-shadow: none;\n  box-shadow: none;\n}\n.btn .caret {\n  margin-left: 0;\n}\n.btn-lg .caret {\n  border-width: 5px 5px 0;\n  border-bottom-width: 0;\n}\n.dropup .btn-lg .caret {\n  border-width: 0 5px 5px;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group,\n.btn-group-vertical > .btn-group > .btn {\n  display: block;\n  float: none;\n  width: 100%;\n  max-width: 100%;\n}\n.btn-group-vertical > .btn-group > .btn {\n  float: none;\n}\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n  margin-top: -1px;\n  margin-left: 0;\n}\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n  border-radius: 0;\n}\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n  border-top-left-radius: 4px;\n  border-top-right-radius: 4px;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 4px;\n  border-bottom-left-radius: 4px;\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.btn-group-justified {\n  display: table;\n  width: 100%;\n  table-layout: fixed;\n  border-collapse: separate;\n}\n.btn-group-justified > .btn,\n.btn-group-justified > .btn-group {\n  display: table-cell;\n  float: none;\n  width: 1%;\n}\n.btn-group-justified > .btn-group .btn {\n  width: 100%;\n}\n.btn-group-justified > .btn-group .dropdown-menu {\n  left: auto;\n}\n[data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n  position: absolute;\n  clip: rect(0, 0, 0, 0);\n  pointer-events: none;\n}\n.input-group {\n  position: relative;\n  display: table;\n  border-collapse: separate;\n}\n.input-group[class*=\"col-\"] {\n  float: none;\n  padding-right: 0;\n  padding-left: 0;\n}\n.input-group .form-control {\n  position: relative;\n  z-index: 2;\n  float: left;\n  width: 100%;\n  margin-bottom: 0;\n}\n.input-group .form-control:focus {\n  z-index: 3;\n}\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\nselect.input-group-lg > .form-control,\nselect.input-group-lg > .input-group-addon,\nselect.input-group-lg > .input-group-btn > .btn {\n  height: 46px;\n  line-height: 46px;\n}\ntextarea.input-group-lg > .form-control,\ntextarea.input-group-lg > .input-group-addon,\ntextarea.input-group-lg > .input-group-btn > .btn,\nselect[multiple].input-group-lg > .form-control,\nselect[multiple].input-group-lg > .input-group-addon,\nselect[multiple].input-group-lg > .input-group-btn > .btn {\n  height: auto;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\nselect.input-group-sm > .form-control,\nselect.input-group-sm > .input-group-addon,\nselect.input-group-sm > .input-group-btn > .btn {\n  height: 30px;\n  line-height: 30px;\n}\ntextarea.input-group-sm > .form-control,\ntextarea.input-group-sm > .input-group-addon,\ntextarea.input-group-sm > .input-group-btn > .btn,\nselect[multiple].input-group-sm > .form-control,\nselect[multiple].input-group-sm > .input-group-addon,\nselect[multiple].input-group-sm > .input-group-btn > .btn {\n  height: auto;\n}\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n  display: table-cell;\n}\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n  border-radius: 0;\n}\n.input-group-addon,\n.input-group-btn {\n  width: 1%;\n  white-space: nowrap;\n  vertical-align: middle;\n}\n.input-group-addon {\n  padding: 6px 12px;\n  font-size: 14px;\n  font-weight: 400;\n  line-height: 1;\n  color: #555555;\n  text-align: center;\n  background-color: #eeeeee;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n}\n.input-group-addon.input-sm {\n  padding: 5px 10px;\n  font-size: 12px;\n  border-radius: 3px;\n}\n.input-group-addon.input-lg {\n  padding: 10px 16px;\n  font-size: 18px;\n  border-radius: 6px;\n}\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n  margin-top: 0;\n}\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.input-group-addon:first-child {\n  border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.input-group-addon:last-child {\n  border-left: 0;\n}\n.input-group-btn {\n  position: relative;\n  font-size: 0;\n  white-space: nowrap;\n}\n.input-group-btn > .btn {\n  position: relative;\n}\n.input-group-btn > .btn + .btn {\n  margin-left: -1px;\n}\n.input-group-btn > .btn:hover,\n.input-group-btn > .btn:focus,\n.input-group-btn > .btn:active {\n  z-index: 2;\n}\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group {\n  margin-right: -1px;\n}\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group {\n  z-index: 2;\n  margin-left: -1px;\n}\n.nav {\n  padding-left: 0;\n  margin-bottom: 0;\n  list-style: none;\n}\n.nav > li {\n  position: relative;\n  display: block;\n}\n.nav > li > a {\n  position: relative;\n  display: block;\n  padding: 10px 15px;\n}\n.nav > li > a:hover,\n.nav > li > a:focus {\n  text-decoration: none;\n  background-color: #eeeeee;\n}\n.nav > li.disabled > a {\n  color: #777777;\n}\n.nav > li.disabled > a:hover,\n.nav > li.disabled > a:focus {\n  color: #777777;\n  text-decoration: none;\n  cursor: not-allowed;\n  background-color: transparent;\n}\n.nav .open > a,\n.nav .open > a:hover,\n.nav .open > a:focus {\n  background-color: #eeeeee;\n  border-color: #337ab7;\n}\n.nav .nav-divider {\n  height: 1px;\n  margin: 9px 0;\n  overflow: hidden;\n  background-color: #e5e5e5;\n}\n.nav > li > a > img {\n  max-width: none;\n}\n.nav-tabs {\n  border-bottom: 1px solid #ddd;\n}\n.nav-tabs > li {\n  float: left;\n  margin-bottom: -1px;\n}\n.nav-tabs > li > a {\n  margin-right: 2px;\n  line-height: 1.42857143;\n  border: 1px solid transparent;\n  border-radius: 4px 4px 0 0;\n}\n.nav-tabs > li > a:hover {\n  border-color: #eeeeee #eeeeee #ddd;\n}\n.nav-tabs > li.active > a,\n.nav-tabs > li.active > a:hover,\n.nav-tabs > li.active > a:focus {\n  color: #555555;\n  cursor: default;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-bottom-color: transparent;\n}\n.nav-tabs.nav-justified {\n  width: 100%;\n  border-bottom: 0;\n}\n.nav-tabs.nav-justified > li {\n  float: none;\n}\n.nav-tabs.nav-justified > li > a {\n  margin-bottom: 5px;\n  text-align: center;\n}\n.nav-tabs.nav-justified > .dropdown .dropdown-menu {\n  top: auto;\n  left: auto;\n}\n@media (min-width: 768px) {\n  .nav-tabs.nav-justified > li {\n    display: table-cell;\n    width: 1%;\n  }\n  .nav-tabs.nav-justified > li > a {\n    margin-bottom: 0;\n  }\n}\n.nav-tabs.nav-justified > li > a {\n  margin-right: 0;\n  border-radius: 4px;\n}\n.nav-tabs.nav-justified > .active > a,\n.nav-tabs.nav-justified > .active > a:hover,\n.nav-tabs.nav-justified > .active > a:focus {\n  border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n  .nav-tabs.nav-justified > li > a {\n    border-bottom: 1px solid #ddd;\n    border-radius: 4px 4px 0 0;\n  }\n  .nav-tabs.nav-justified > .active > a,\n  .nav-tabs.nav-justified > .active > a:hover,\n  .nav-tabs.nav-justified > .active > a:focus {\n    border-bottom-color: #fff;\n  }\n}\n.nav-pills > li {\n  float: left;\n}\n.nav-pills > li > a {\n  border-radius: 4px;\n}\n.nav-pills > li + li {\n  margin-left: 2px;\n}\n.nav-pills > li.active > a,\n.nav-pills > li.active > a:hover,\n.nav-pills > li.active > a:focus {\n  color: #fff;\n  background-color: #337ab7;\n}\n.nav-stacked > li {\n  float: none;\n}\n.nav-stacked > li + li {\n  margin-top: 2px;\n  margin-left: 0;\n}\n.nav-justified {\n  width: 100%;\n}\n.nav-justified > li {\n  float: none;\n}\n.nav-justified > li > a {\n  margin-bottom: 5px;\n  text-align: center;\n}\n.nav-justified > .dropdown .dropdown-menu {\n  top: auto;\n  left: auto;\n}\n@media (min-width: 768px) {\n  .nav-justified > li {\n    display: table-cell;\n    width: 1%;\n  }\n  .nav-justified > li > a {\n    margin-bottom: 0;\n  }\n}\n.nav-tabs-justified {\n  border-bottom: 0;\n}\n.nav-tabs-justified > li > a {\n  margin-right: 0;\n  border-radius: 4px;\n}\n.nav-tabs-justified > .active > a,\n.nav-tabs-justified > .active > a:hover,\n.nav-tabs-justified > .active > a:focus {\n  border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n  .nav-tabs-justified > li > a {\n    border-bottom: 1px solid #ddd;\n    border-radius: 4px 4px 0 0;\n  }\n  .nav-tabs-justified > .active > a,\n  .nav-tabs-justified > .active > a:hover,\n  .nav-tabs-justified > .active > a:focus {\n    border-bottom-color: #fff;\n  }\n}\n.tab-content > .tab-pane {\n  display: none;\n}\n.tab-content > .active {\n  display: block;\n}\n.nav-tabs .dropdown-menu {\n  margin-top: -1px;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.navbar {\n  position: relative;\n  min-height: 50px;\n  margin-bottom: 20px;\n  border: 1px solid transparent;\n}\n@media (min-width: 768px) {\n  .navbar {\n    border-radius: 4px;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-header {\n    float: left;\n  }\n}\n.navbar-collapse {\n  padding-right: 15px;\n  padding-left: 15px;\n  overflow-x: visible;\n  border-top: 1px solid transparent;\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\n  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\n  -webkit-overflow-scrolling: touch;\n}\n.navbar-collapse.in {\n  overflow-y: auto;\n}\n@media (min-width: 768px) {\n  .navbar-collapse {\n    width: auto;\n    border-top: 0;\n    -webkit-box-shadow: none;\n    box-shadow: none;\n  }\n  .navbar-collapse.collapse {\n    display: block !important;\n    height: auto !important;\n    padding-bottom: 0;\n    overflow: visible !important;\n  }\n  .navbar-collapse.in {\n    overflow-y: visible;\n  }\n  .navbar-fixed-top .navbar-collapse,\n  .navbar-static-top .navbar-collapse,\n  .navbar-fixed-bottom .navbar-collapse {\n    padding-right: 0;\n    padding-left: 0;\n  }\n}\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  position: fixed;\n  right: 0;\n  left: 0;\n  z-index: 1030;\n}\n.navbar-fixed-top .navbar-collapse,\n.navbar-fixed-bottom .navbar-collapse {\n  max-height: 340px;\n}\n@media (max-device-width: 480px) and (orientation: landscape) {\n  .navbar-fixed-top .navbar-collapse,\n  .navbar-fixed-bottom .navbar-collapse {\n    max-height: 200px;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-fixed-top,\n  .navbar-fixed-bottom {\n    border-radius: 0;\n  }\n}\n.navbar-fixed-top {\n  top: 0;\n  border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n  bottom: 0;\n  margin-bottom: 0;\n  border-width: 1px 0 0;\n}\n.container > .navbar-header,\n.container-fluid > .navbar-header,\n.container > .navbar-collapse,\n.container-fluid > .navbar-collapse {\n  margin-right: -15px;\n  margin-left: -15px;\n}\n@media (min-width: 768px) {\n  .container > .navbar-header,\n  .container-fluid > .navbar-header,\n  .container > .navbar-collapse,\n  .container-fluid > .navbar-collapse {\n    margin-right: 0;\n    margin-left: 0;\n  }\n}\n.navbar-static-top {\n  z-index: 1000;\n  border-width: 0 0 1px;\n}\n@media (min-width: 768px) {\n  .navbar-static-top {\n    border-radius: 0;\n  }\n}\n.navbar-brand {\n  float: left;\n  height: 50px;\n  padding: 15px 15px;\n  font-size: 18px;\n  line-height: 20px;\n}\n.navbar-brand:hover,\n.navbar-brand:focus {\n  text-decoration: none;\n}\n.navbar-brand > img {\n  display: block;\n}\n@media (min-width: 768px) {\n  .navbar > .container .navbar-brand,\n  .navbar > .container-fluid .navbar-brand {\n    margin-left: -15px;\n  }\n}\n.navbar-toggle {\n  position: relative;\n  float: right;\n  padding: 9px 10px;\n  margin-right: 15px;\n  margin-top: 8px;\n  margin-bottom: 8px;\n  background-color: transparent;\n  background-image: none;\n  border: 1px solid transparent;\n  border-radius: 4px;\n}\n.navbar-toggle:focus {\n  outline: 0;\n}\n.navbar-toggle .icon-bar {\n  display: block;\n  width: 22px;\n  height: 2px;\n  border-radius: 1px;\n}\n.navbar-toggle .icon-bar + .icon-bar {\n  margin-top: 4px;\n}\n@media (min-width: 768px) {\n  .navbar-toggle {\n    display: none;\n  }\n}\n.navbar-nav {\n  margin: 7.5px -15px;\n}\n.navbar-nav > li > a {\n  padding-top: 10px;\n  padding-bottom: 10px;\n  line-height: 20px;\n}\n@media (max-width: 767px) {\n  .navbar-nav .open .dropdown-menu {\n    position: static;\n    float: none;\n    width: auto;\n    margin-top: 0;\n    background-color: transparent;\n    border: 0;\n    -webkit-box-shadow: none;\n    box-shadow: none;\n  }\n  .navbar-nav .open .dropdown-menu > li > a,\n  .navbar-nav .open .dropdown-menu .dropdown-header {\n    padding: 5px 15px 5px 25px;\n  }\n  .navbar-nav .open .dropdown-menu > li > a {\n    line-height: 20px;\n  }\n  .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-nav .open .dropdown-menu > li > a:focus {\n    background-image: none;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-nav {\n    float: left;\n    margin: 0;\n  }\n  .navbar-nav > li {\n    float: left;\n  }\n  .navbar-nav > li > a {\n    padding-top: 15px;\n    padding-bottom: 15px;\n  }\n}\n.navbar-form {\n  padding: 10px 15px;\n  margin-right: -15px;\n  margin-left: -15px;\n  border-top: 1px solid transparent;\n  border-bottom: 1px solid transparent;\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n  margin-top: 8px;\n  margin-bottom: 8px;\n}\n@media (min-width: 768px) {\n  .navbar-form .form-group {\n    display: inline-block;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .form-control {\n    display: inline-block;\n    width: auto;\n    vertical-align: middle;\n  }\n  .navbar-form .form-control-static {\n    display: inline-block;\n  }\n  .navbar-form .input-group {\n    display: inline-table;\n    vertical-align: middle;\n  }\n  .navbar-form .input-group .input-group-addon,\n  .navbar-form .input-group .input-group-btn,\n  .navbar-form .input-group .form-control {\n    width: auto;\n  }\n  .navbar-form .input-group > .form-control {\n    width: 100%;\n  }\n  .navbar-form .control-label {\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .radio,\n  .navbar-form .checkbox {\n    display: inline-block;\n    margin-top: 0;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .radio label,\n  .navbar-form .checkbox label {\n    padding-left: 0;\n  }\n  .navbar-form .radio input[type=\"radio\"],\n  .navbar-form .checkbox input[type=\"checkbox\"] {\n    position: relative;\n    margin-left: 0;\n  }\n  .navbar-form .has-feedback .form-control-feedback {\n    top: 0;\n  }\n}\n@media (max-width: 767px) {\n  .navbar-form .form-group {\n    margin-bottom: 5px;\n  }\n  .navbar-form .form-group:last-child {\n    margin-bottom: 0;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-form {\n    width: auto;\n    padding-top: 0;\n    padding-bottom: 0;\n    margin-right: 0;\n    margin-left: 0;\n    border: 0;\n    -webkit-box-shadow: none;\n    box-shadow: none;\n  }\n}\n.navbar-nav > li > .dropdown-menu {\n  margin-top: 0;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n  margin-bottom: 0;\n  border-top-left-radius: 4px;\n  border-top-right-radius: 4px;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.navbar-btn {\n  margin-top: 8px;\n  margin-bottom: 8px;\n}\n.navbar-btn.btn-sm {\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\n.navbar-btn.btn-xs {\n  margin-top: 14px;\n  margin-bottom: 14px;\n}\n.navbar-text {\n  margin-top: 15px;\n  margin-bottom: 15px;\n}\n@media (min-width: 768px) {\n  .navbar-text {\n    float: left;\n    margin-right: 15px;\n    margin-left: 15px;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-left {\n    float: left !important;\n  }\n  .navbar-right {\n    float: right !important;\n    margin-right: -15px;\n  }\n  .navbar-right ~ .navbar-right {\n    margin-right: 0;\n  }\n}\n.navbar-default {\n  background-color: #f8f8f8;\n  border-color: #e7e7e7;\n}\n.navbar-default .navbar-brand {\n  color: #777;\n}\n.navbar-default .navbar-brand:hover,\n.navbar-default .navbar-brand:focus {\n  color: #5e5e5e;\n  background-color: transparent;\n}\n.navbar-default .navbar-text {\n  color: #777;\n}\n.navbar-default .navbar-nav > li > a {\n  color: #777;\n}\n.navbar-default .navbar-nav > li > a:hover,\n.navbar-default .navbar-nav > li > a:focus {\n  color: #333;\n  background-color: transparent;\n}\n.navbar-default .navbar-nav > .active > a,\n.navbar-default .navbar-nav > .active > a:hover,\n.navbar-default .navbar-nav > .active > a:focus {\n  color: #555;\n  background-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .disabled > a,\n.navbar-default .navbar-nav > .disabled > a:hover,\n.navbar-default .navbar-nav > .disabled > a:focus {\n  color: #ccc;\n  background-color: transparent;\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .open > a:hover,\n.navbar-default .navbar-nav > .open > a:focus {\n  color: #555;\n  background-color: #e7e7e7;\n}\n@media (max-width: 767px) {\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n    color: #777;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n    color: #333;\n    background-color: transparent;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n    color: #555;\n    background-color: #e7e7e7;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n    color: #ccc;\n    background-color: transparent;\n  }\n}\n.navbar-default .navbar-toggle {\n  border-color: #ddd;\n}\n.navbar-default .navbar-toggle:hover,\n.navbar-default .navbar-toggle:focus {\n  background-color: #ddd;\n}\n.navbar-default .navbar-toggle .icon-bar {\n  background-color: #888;\n}\n.navbar-default .navbar-collapse,\n.navbar-default .navbar-form {\n  border-color: #e7e7e7;\n}\n.navbar-default .navbar-link {\n  color: #777;\n}\n.navbar-default .navbar-link:hover {\n  color: #333;\n}\n.navbar-default .btn-link {\n  color: #777;\n}\n.navbar-default .btn-link:hover,\n.navbar-default .btn-link:focus {\n  color: #333;\n}\n.navbar-default .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-default .btn-link:hover,\n.navbar-default .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-default .btn-link:focus {\n  color: #ccc;\n}\n.navbar-inverse {\n  background-color: #222;\n  border-color: #080808;\n}\n.navbar-inverse .navbar-brand {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-brand:hover,\n.navbar-inverse .navbar-brand:focus {\n  color: #fff;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-text {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a:hover,\n.navbar-inverse .navbar-nav > li > a:focus {\n  color: #fff;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .active > a,\n.navbar-inverse .navbar-nav > .active > a:hover,\n.navbar-inverse .navbar-nav > .active > a:focus {\n  color: #fff;\n  background-color: #080808;\n}\n.navbar-inverse .navbar-nav > .disabled > a,\n.navbar-inverse .navbar-nav > .disabled > a:hover,\n.navbar-inverse .navbar-nav > .disabled > a:focus {\n  color: #444;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .open > a:hover,\n.navbar-inverse .navbar-nav > .open > a:focus {\n  color: #fff;\n  background-color: #080808;\n}\n@media (max-width: 767px) {\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n    border-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n    background-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n    color: #9d9d9d;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n    color: #fff;\n    background-color: transparent;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n    color: #fff;\n    background-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n    color: #444;\n    background-color: transparent;\n  }\n}\n.navbar-inverse .navbar-toggle {\n  border-color: #333;\n}\n.navbar-inverse .navbar-toggle:hover,\n.navbar-inverse .navbar-toggle:focus {\n  background-color: #333;\n}\n.navbar-inverse .navbar-toggle .icon-bar {\n  background-color: #fff;\n}\n.navbar-inverse .navbar-collapse,\n.navbar-inverse .navbar-form {\n  border-color: #101010;\n}\n.navbar-inverse .navbar-link {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-link:hover {\n  color: #fff;\n}\n.navbar-inverse .btn-link {\n  color: #9d9d9d;\n}\n.navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link:focus {\n  color: #fff;\n}\n.navbar-inverse .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-inverse .btn-link:focus {\n  color: #444;\n}\n.breadcrumb {\n  padding: 8px 15px;\n  margin-bottom: 20px;\n  list-style: none;\n  background-color: #f5f5f5;\n  border-radius: 4px;\n}\n.breadcrumb > li {\n  display: inline-block;\n}\n.breadcrumb > li + li:before {\n  padding: 0 5px;\n  color: #ccc;\n  content: \"/\\00a0\";\n}\n.breadcrumb > .active {\n  color: #777777;\n}\n.pagination {\n  display: inline-block;\n  padding-left: 0;\n  margin: 20px 0;\n  border-radius: 4px;\n}\n.pagination > li {\n  display: inline;\n}\n.pagination > li > a,\n.pagination > li > span {\n  position: relative;\n  float: left;\n  padding: 6px 12px;\n  margin-left: -1px;\n  line-height: 1.42857143;\n  color: #337ab7;\n  text-decoration: none;\n  background-color: #fff;\n  border: 1px solid #ddd;\n}\n.pagination > li > a:hover,\n.pagination > li > span:hover,\n.pagination > li > a:focus,\n.pagination > li > span:focus {\n  z-index: 2;\n  color: #23527c;\n  background-color: #eeeeee;\n  border-color: #ddd;\n}\n.pagination > li:first-child > a,\n.pagination > li:first-child > span {\n  margin-left: 0;\n  border-top-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n}\n.pagination > li:last-child > a,\n.pagination > li:last-child > span {\n  border-top-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n}\n.pagination > .active > a,\n.pagination > .active > span,\n.pagination > .active > a:hover,\n.pagination > .active > span:hover,\n.pagination > .active > a:focus,\n.pagination > .active > span:focus {\n  z-index: 3;\n  color: #fff;\n  cursor: default;\n  background-color: #337ab7;\n  border-color: #337ab7;\n}\n.pagination > .disabled > span,\n.pagination > .disabled > span:hover,\n.pagination > .disabled > span:focus,\n.pagination > .disabled > a,\n.pagination > .disabled > a:hover,\n.pagination > .disabled > a:focus {\n  color: #777777;\n  cursor: not-allowed;\n  background-color: #fff;\n  border-color: #ddd;\n}\n.pagination-lg > li > a,\n.pagination-lg > li > span {\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n}\n.pagination-lg > li:first-child > a,\n.pagination-lg > li:first-child > span {\n  border-top-left-radius: 6px;\n  border-bottom-left-radius: 6px;\n}\n.pagination-lg > li:last-child > a,\n.pagination-lg > li:last-child > span {\n  border-top-right-radius: 6px;\n  border-bottom-right-radius: 6px;\n}\n.pagination-sm > li > a,\n.pagination-sm > li > span {\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n}\n.pagination-sm > li:first-child > a,\n.pagination-sm > li:first-child > span {\n  border-top-left-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.pagination-sm > li:last-child > a,\n.pagination-sm > li:last-child > span {\n  border-top-right-radius: 3px;\n  border-bottom-right-radius: 3px;\n}\n.pager {\n  padding-left: 0;\n  margin: 20px 0;\n  text-align: center;\n  list-style: none;\n}\n.pager li {\n  display: inline;\n}\n.pager li > a,\n.pager li > span {\n  display: inline-block;\n  padding: 5px 14px;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 15px;\n}\n.pager li > a:hover,\n.pager li > a:focus {\n  text-decoration: none;\n  background-color: #eeeeee;\n}\n.pager .next > a,\n.pager .next > span {\n  float: right;\n}\n.pager .previous > a,\n.pager .previous > span {\n  float: left;\n}\n.pager .disabled > a,\n.pager .disabled > a:hover,\n.pager .disabled > a:focus,\n.pager .disabled > span {\n  color: #777777;\n  cursor: not-allowed;\n  background-color: #fff;\n}\n.label {\n  display: inline;\n  padding: 0.2em 0.6em 0.3em;\n  font-size: 75%;\n  font-weight: 700;\n  line-height: 1;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  border-radius: 0.25em;\n}\na.label:hover,\na.label:focus {\n  color: #fff;\n  text-decoration: none;\n  cursor: pointer;\n}\n.label:empty {\n  display: none;\n}\n.btn .label {\n  position: relative;\n  top: -1px;\n}\n.label-default {\n  background-color: #777777;\n}\n.label-default[href]:hover,\n.label-default[href]:focus {\n  background-color: #5e5e5e;\n}\n.label-primary {\n  background-color: #337ab7;\n}\n.label-primary[href]:hover,\n.label-primary[href]:focus {\n  background-color: #286090;\n}\n.label-success {\n  background-color: #5cb85c;\n}\n.label-success[href]:hover,\n.label-success[href]:focus {\n  background-color: #449d44;\n}\n.label-info {\n  background-color: #5bc0de;\n}\n.label-info[href]:hover,\n.label-info[href]:focus {\n  background-color: #31b0d5;\n}\n.label-warning {\n  background-color: #f0ad4e;\n}\n.label-warning[href]:hover,\n.label-warning[href]:focus {\n  background-color: #ec971f;\n}\n.label-danger {\n  background-color: #d9534f;\n}\n.label-danger[href]:hover,\n.label-danger[href]:focus {\n  background-color: #c9302c;\n}\n.badge {\n  display: inline-block;\n  min-width: 10px;\n  padding: 3px 7px;\n  font-size: 12px;\n  font-weight: bold;\n  line-height: 1;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: middle;\n  background-color: #777777;\n  border-radius: 10px;\n}\n.badge:empty {\n  display: none;\n}\n.btn .badge {\n  position: relative;\n  top: -1px;\n}\n.btn-xs .badge,\n.btn-group-xs > .btn .badge {\n  top: 0;\n  padding: 1px 5px;\n}\na.badge:hover,\na.badge:focus {\n  color: #fff;\n  text-decoration: none;\n  cursor: pointer;\n}\n.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n  color: #337ab7;\n  background-color: #fff;\n}\n.list-group-item > .badge {\n  float: right;\n}\n.list-group-item > .badge + .badge {\n  margin-right: 5px;\n}\n.nav-pills > li > a > .badge {\n  margin-left: 3px;\n}\n.jumbotron {\n  padding-top: 30px;\n  padding-bottom: 30px;\n  margin-bottom: 30px;\n  color: inherit;\n  background-color: #eeeeee;\n}\n.jumbotron h1,\n.jumbotron .h1 {\n  color: inherit;\n}\n.jumbotron p {\n  margin-bottom: 15px;\n  font-size: 21px;\n  font-weight: 200;\n}\n.jumbotron > hr {\n  border-top-color: #d5d5d5;\n}\n.container .jumbotron,\n.container-fluid .jumbotron {\n  padding-right: 15px;\n  padding-left: 15px;\n  border-radius: 6px;\n}\n.jumbotron .container {\n  max-width: 100%;\n}\n@media screen and (min-width: 768px) {\n  .jumbotron {\n    padding-top: 48px;\n    padding-bottom: 48px;\n  }\n  .container .jumbotron,\n  .container-fluid .jumbotron {\n    padding-right: 60px;\n    padding-left: 60px;\n  }\n  .jumbotron h1,\n  .jumbotron .h1 {\n    font-size: 63px;\n  }\n}\n.thumbnail {\n  display: block;\n  padding: 4px;\n  margin-bottom: 20px;\n  line-height: 1.42857143;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 4px;\n  -webkit-transition: border 0.2s ease-in-out;\n  -o-transition: border 0.2s ease-in-out;\n  transition: border 0.2s ease-in-out;\n}\n.thumbnail > img,\n.thumbnail a > img {\n  margin-right: auto;\n  margin-left: auto;\n}\na.thumbnail:hover,\na.thumbnail:focus,\na.thumbnail.active {\n  border-color: #337ab7;\n}\n.thumbnail .caption {\n  padding: 9px;\n  color: #333333;\n}\n.alert {\n  padding: 15px;\n  margin-bottom: 20px;\n  border: 1px solid transparent;\n  border-radius: 4px;\n}\n.alert h4 {\n  margin-top: 0;\n  color: inherit;\n}\n.alert .alert-link {\n  font-weight: bold;\n}\n.alert > p,\n.alert > ul {\n  margin-bottom: 0;\n}\n.alert > p + p {\n  margin-top: 5px;\n}\n.alert-dismissable,\n.alert-dismissible {\n  padding-right: 35px;\n}\n.alert-dismissable .close,\n.alert-dismissible .close {\n  position: relative;\n  top: -2px;\n  right: -21px;\n  color: inherit;\n}\n.alert-success {\n  color: #3c763d;\n  background-color: #dff0d8;\n  border-color: #d6e9c6;\n}\n.alert-success hr {\n  border-top-color: #c9e2b3;\n}\n.alert-success .alert-link {\n  color: #2b542c;\n}\n.alert-info {\n  color: #31708f;\n  background-color: #d9edf7;\n  border-color: #bce8f1;\n}\n.alert-info hr {\n  border-top-color: #a6e1ec;\n}\n.alert-info .alert-link {\n  color: #245269;\n}\n.alert-warning {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n  border-color: #faebcc;\n}\n.alert-warning hr {\n  border-top-color: #f7e1b5;\n}\n.alert-warning .alert-link {\n  color: #66512c;\n}\n.alert-danger {\n  color: #a94442;\n  background-color: #f2dede;\n  border-color: #ebccd1;\n}\n.alert-danger hr {\n  border-top-color: #e4b9c0;\n}\n.alert-danger .alert-link {\n  color: #843534;\n}\n@-webkit-keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n@-o-keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n@keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n.progress {\n  height: 20px;\n  margin-bottom: 20px;\n  overflow: hidden;\n  background-color: #f5f5f5;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n.progress-bar {\n  float: left;\n  width: 0%;\n  height: 100%;\n  font-size: 12px;\n  line-height: 20px;\n  color: #fff;\n  text-align: center;\n  background-color: #337ab7;\n  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n  -webkit-transition: width 0.6s ease;\n  -o-transition: width 0.6s ease;\n  transition: width 0.6s ease;\n}\n.progress-striped .progress-bar,\n.progress-bar-striped {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  -webkit-background-size: 40px 40px;\n  background-size: 40px 40px;\n}\n.progress.active .progress-bar,\n.progress-bar.active {\n  -webkit-animation: progress-bar-stripes 2s linear infinite;\n  -o-animation: progress-bar-stripes 2s linear infinite;\n  animation: progress-bar-stripes 2s linear infinite;\n}\n.progress-bar-success {\n  background-color: #5cb85c;\n}\n.progress-striped .progress-bar-success {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-info {\n  background-color: #5bc0de;\n}\n.progress-striped .progress-bar-info {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-warning {\n  background-color: #f0ad4e;\n}\n.progress-striped .progress-bar-warning {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-danger {\n  background-color: #d9534f;\n}\n.progress-striped .progress-bar-danger {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.media {\n  margin-top: 15px;\n}\n.media:first-child {\n  margin-top: 0;\n}\n.media,\n.media-body {\n  overflow: hidden;\n  zoom: 1;\n}\n.media-body {\n  width: 10000px;\n}\n.media-object {\n  display: block;\n}\n.media-object.img-thumbnail {\n  max-width: none;\n}\n.media-right,\n.media > .pull-right {\n  padding-left: 10px;\n}\n.media-left,\n.media > .pull-left {\n  padding-right: 10px;\n}\n.media-left,\n.media-right,\n.media-body {\n  display: table-cell;\n  vertical-align: top;\n}\n.media-middle {\n  vertical-align: middle;\n}\n.media-bottom {\n  vertical-align: bottom;\n}\n.media-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n.media-list {\n  padding-left: 0;\n  list-style: none;\n}\n.list-group {\n  padding-left: 0;\n  margin-bottom: 20px;\n}\n.list-group-item {\n  position: relative;\n  display: block;\n  padding: 10px 15px;\n  margin-bottom: -1px;\n  background-color: #fff;\n  border: 1px solid #ddd;\n}\n.list-group-item:first-child {\n  border-top-left-radius: 4px;\n  border-top-right-radius: 4px;\n}\n.list-group-item:last-child {\n  margin-bottom: 0;\n  border-bottom-right-radius: 4px;\n  border-bottom-left-radius: 4px;\n}\n.list-group-item.disabled,\n.list-group-item.disabled:hover,\n.list-group-item.disabled:focus {\n  color: #777777;\n  cursor: not-allowed;\n  background-color: #eeeeee;\n}\n.list-group-item.disabled .list-group-item-heading,\n.list-group-item.disabled:hover .list-group-item-heading,\n.list-group-item.disabled:focus .list-group-item-heading {\n  color: inherit;\n}\n.list-group-item.disabled .list-group-item-text,\n.list-group-item.disabled:hover .list-group-item-text,\n.list-group-item.disabled:focus .list-group-item-text {\n  color: #777777;\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n  z-index: 2;\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #337ab7;\n}\n.list-group-item.active .list-group-item-heading,\n.list-group-item.active:hover .list-group-item-heading,\n.list-group-item.active:focus .list-group-item-heading,\n.list-group-item.active .list-group-item-heading > small,\n.list-group-item.active:hover .list-group-item-heading > small,\n.list-group-item.active:focus .list-group-item-heading > small,\n.list-group-item.active .list-group-item-heading > .small,\n.list-group-item.active:hover .list-group-item-heading > .small,\n.list-group-item.active:focus .list-group-item-heading > .small {\n  color: inherit;\n}\n.list-group-item.active .list-group-item-text,\n.list-group-item.active:hover .list-group-item-text,\n.list-group-item.active:focus .list-group-item-text {\n  color: #c7ddef;\n}\na.list-group-item,\nbutton.list-group-item {\n  color: #555;\n}\na.list-group-item .list-group-item-heading,\nbutton.list-group-item .list-group-item-heading {\n  color: #333;\n}\na.list-group-item:hover,\nbutton.list-group-item:hover,\na.list-group-item:focus,\nbutton.list-group-item:focus {\n  color: #555;\n  text-decoration: none;\n  background-color: #f5f5f5;\n}\nbutton.list-group-item {\n  width: 100%;\n  text-align: left;\n}\n.list-group-item-success {\n  color: #3c763d;\n  background-color: #dff0d8;\n}\na.list-group-item-success,\nbutton.list-group-item-success {\n  color: #3c763d;\n}\na.list-group-item-success .list-group-item-heading,\nbutton.list-group-item-success .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-success:hover,\nbutton.list-group-item-success:hover,\na.list-group-item-success:focus,\nbutton.list-group-item-success:focus {\n  color: #3c763d;\n  background-color: #d0e9c6;\n}\na.list-group-item-success.active,\nbutton.list-group-item-success.active,\na.list-group-item-success.active:hover,\nbutton.list-group-item-success.active:hover,\na.list-group-item-success.active:focus,\nbutton.list-group-item-success.active:focus {\n  color: #fff;\n  background-color: #3c763d;\n  border-color: #3c763d;\n}\n.list-group-item-info {\n  color: #31708f;\n  background-color: #d9edf7;\n}\na.list-group-item-info,\nbutton.list-group-item-info {\n  color: #31708f;\n}\na.list-group-item-info .list-group-item-heading,\nbutton.list-group-item-info .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-info:hover,\nbutton.list-group-item-info:hover,\na.list-group-item-info:focus,\nbutton.list-group-item-info:focus {\n  color: #31708f;\n  background-color: #c4e3f3;\n}\na.list-group-item-info.active,\nbutton.list-group-item-info.active,\na.list-group-item-info.active:hover,\nbutton.list-group-item-info.active:hover,\na.list-group-item-info.active:focus,\nbutton.list-group-item-info.active:focus {\n  color: #fff;\n  background-color: #31708f;\n  border-color: #31708f;\n}\n.list-group-item-warning {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n}\na.list-group-item-warning,\nbutton.list-group-item-warning {\n  color: #8a6d3b;\n}\na.list-group-item-warning .list-group-item-heading,\nbutton.list-group-item-warning .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-warning:hover,\nbutton.list-group-item-warning:hover,\na.list-group-item-warning:focus,\nbutton.list-group-item-warning:focus {\n  color: #8a6d3b;\n  background-color: #faf2cc;\n}\na.list-group-item-warning.active,\nbutton.list-group-item-warning.active,\na.list-group-item-warning.active:hover,\nbutton.list-group-item-warning.active:hover,\na.list-group-item-warning.active:focus,\nbutton.list-group-item-warning.active:focus {\n  color: #fff;\n  background-color: #8a6d3b;\n  border-color: #8a6d3b;\n}\n.list-group-item-danger {\n  color: #a94442;\n  background-color: #f2dede;\n}\na.list-group-item-danger,\nbutton.list-group-item-danger {\n  color: #a94442;\n}\na.list-group-item-danger .list-group-item-heading,\nbutton.list-group-item-danger .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-danger:hover,\nbutton.list-group-item-danger:hover,\na.list-group-item-danger:focus,\nbutton.list-group-item-danger:focus {\n  color: #a94442;\n  background-color: #ebcccc;\n}\na.list-group-item-danger.active,\nbutton.list-group-item-danger.active,\na.list-group-item-danger.active:hover,\nbutton.list-group-item-danger.active:hover,\na.list-group-item-danger.active:focus,\nbutton.list-group-item-danger.active:focus {\n  color: #fff;\n  background-color: #a94442;\n  border-color: #a94442;\n}\n.list-group-item-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n.list-group-item-text {\n  margin-bottom: 0;\n  line-height: 1.3;\n}\n.panel {\n  margin-bottom: 20px;\n  background-color: #fff;\n  border: 1px solid transparent;\n  border-radius: 4px;\n  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.panel-body {\n  padding: 15px;\n}\n.panel-heading {\n  padding: 10px 15px;\n  border-bottom: 1px solid transparent;\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel-heading > .dropdown .dropdown-toggle {\n  color: inherit;\n}\n.panel-title {\n  margin-top: 0;\n  margin-bottom: 0;\n  font-size: 16px;\n  color: inherit;\n}\n.panel-title > a,\n.panel-title > small,\n.panel-title > .small,\n.panel-title > small > a,\n.panel-title > .small > a {\n  color: inherit;\n}\n.panel-footer {\n  padding: 10px 15px;\n  background-color: #f5f5f5;\n  border-top: 1px solid #ddd;\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .list-group,\n.panel > .panel-collapse > .list-group {\n  margin-bottom: 0;\n}\n.panel > .list-group .list-group-item,\n.panel > .panel-collapse > .list-group .list-group-item {\n  border-width: 1px 0;\n  border-radius: 0;\n}\n.panel > .list-group:first-child .list-group-item:first-child,\n.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {\n  border-top: 0;\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel > .list-group:last-child .list-group-item:last-child,\n.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {\n  border-bottom: 0;\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.panel-heading + .list-group .list-group-item:first-child {\n  border-top-width: 0;\n}\n.list-group + .panel-footer {\n  border-top-width: 0;\n}\n.panel > .table,\n.panel > .table-responsive > .table,\n.panel > .panel-collapse > .table {\n  margin-bottom: 0;\n}\n.panel > .table caption,\n.panel > .table-responsive > .table caption,\n.panel > .panel-collapse > .table caption {\n  padding-right: 15px;\n  padding-left: 15px;\n}\n.panel > .table:first-child,\n.panel > .table-responsive:first-child > .table:first-child {\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n  border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n  border-top-right-radius: 3px;\n}\n.panel > .table:last-child,\n.panel > .table-responsive:last-child > .table:last-child {\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n  border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n  border-bottom-right-radius: 3px;\n}\n.panel > .panel-body + .table,\n.panel > .panel-body + .table-responsive,\n.panel > .table + .panel-body,\n.panel > .table-responsive + .panel-body {\n  border-top: 1px solid #ddd;\n}\n.panel > .table > tbody:first-child > tr:first-child th,\n.panel > .table > tbody:first-child > tr:first-child td {\n  border-top: 0;\n}\n.panel > .table-bordered,\n.panel > .table-responsive > .table-bordered {\n  border: 0;\n}\n.panel > .table-bordered > thead > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n.panel > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-bordered > thead > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n.panel > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-bordered > tfoot > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n  border-left: 0;\n}\n.panel > .table-bordered > thead > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n.panel > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-bordered > thead > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n.panel > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-bordered > tfoot > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n  border-right: 0;\n}\n.panel > .table-bordered > thead > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,\n.panel > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-bordered > thead > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,\n.panel > .table-bordered > tbody > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {\n  border-bottom: 0;\n}\n.panel > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-bordered > tfoot > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {\n  border-bottom: 0;\n}\n.panel > .table-responsive {\n  margin-bottom: 0;\n  border: 0;\n}\n.panel-group {\n  margin-bottom: 20px;\n}\n.panel-group .panel {\n  margin-bottom: 0;\n  border-radius: 4px;\n}\n.panel-group .panel + .panel {\n  margin-top: 5px;\n}\n.panel-group .panel-heading {\n  border-bottom: 0;\n}\n.panel-group .panel-heading + .panel-collapse > .panel-body,\n.panel-group .panel-heading + .panel-collapse > .list-group {\n  border-top: 1px solid #ddd;\n}\n.panel-group .panel-footer {\n  border-top: 0;\n}\n.panel-group .panel-footer + .panel-collapse .panel-body {\n  border-bottom: 1px solid #ddd;\n}\n.panel-default {\n  border-color: #ddd;\n}\n.panel-default > .panel-heading {\n  color: #333333;\n  background-color: #f5f5f5;\n  border-color: #ddd;\n}\n.panel-default > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #ddd;\n}\n.panel-default > .panel-heading .badge {\n  color: #f5f5f5;\n  background-color: #333333;\n}\n.panel-default > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #ddd;\n}\n.panel-primary {\n  border-color: #337ab7;\n}\n.panel-primary > .panel-heading {\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #337ab7;\n}\n.panel-primary > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #337ab7;\n}\n.panel-primary > .panel-heading .badge {\n  color: #337ab7;\n  background-color: #fff;\n}\n.panel-primary > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #337ab7;\n}\n.panel-success {\n  border-color: #d6e9c6;\n}\n.panel-success > .panel-heading {\n  color: #3c763d;\n  background-color: #dff0d8;\n  border-color: #d6e9c6;\n}\n.panel-success > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #d6e9c6;\n}\n.panel-success > .panel-heading .badge {\n  color: #dff0d8;\n  background-color: #3c763d;\n}\n.panel-success > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #d6e9c6;\n}\n.panel-info {\n  border-color: #bce8f1;\n}\n.panel-info > .panel-heading {\n  color: #31708f;\n  background-color: #d9edf7;\n  border-color: #bce8f1;\n}\n.panel-info > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #bce8f1;\n}\n.panel-info > .panel-heading .badge {\n  color: #d9edf7;\n  background-color: #31708f;\n}\n.panel-info > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #bce8f1;\n}\n.panel-warning {\n  border-color: #faebcc;\n}\n.panel-warning > .panel-heading {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n  border-color: #faebcc;\n}\n.panel-warning > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #faebcc;\n}\n.panel-warning > .panel-heading .badge {\n  color: #fcf8e3;\n  background-color: #8a6d3b;\n}\n.panel-warning > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #faebcc;\n}\n.panel-danger {\n  border-color: #ebccd1;\n}\n.panel-danger > .panel-heading {\n  color: #a94442;\n  background-color: #f2dede;\n  border-color: #ebccd1;\n}\n.panel-danger > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #ebccd1;\n}\n.panel-danger > .panel-heading .badge {\n  color: #f2dede;\n  background-color: #a94442;\n}\n.panel-danger > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #ebccd1;\n}\n.embed-responsive {\n  position: relative;\n  display: block;\n  height: 0;\n  padding: 0;\n  overflow: hidden;\n}\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  border: 0;\n}\n.embed-responsive-16by9 {\n  padding-bottom: 56.25%;\n}\n.embed-responsive-4by3 {\n  padding-bottom: 75%;\n}\n.well {\n  min-height: 20px;\n  padding: 19px;\n  margin-bottom: 20px;\n  background-color: #f5f5f5;\n  border: 1px solid #e3e3e3;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.well blockquote {\n  border-color: #ddd;\n  border-color: rgba(0, 0, 0, 0.15);\n}\n.well-lg {\n  padding: 24px;\n  border-radius: 6px;\n}\n.well-sm {\n  padding: 9px;\n  border-radius: 3px;\n}\n.close {\n  float: right;\n  font-size: 21px;\n  font-weight: bold;\n  line-height: 1;\n  color: #000;\n  text-shadow: 0 1px 0 #fff;\n  filter: alpha(opacity=20);\n  opacity: 0.2;\n}\n.close:hover,\n.close:focus {\n  color: #000;\n  text-decoration: none;\n  cursor: pointer;\n  filter: alpha(opacity=50);\n  opacity: 0.5;\n}\nbutton.close {\n  padding: 0;\n  cursor: pointer;\n  background: transparent;\n  border: 0;\n  -webkit-appearance: none;\n  -moz-appearance: none;\n  appearance: none;\n}\n.modal-open {\n  overflow: hidden;\n}\n.modal {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1050;\n  display: none;\n  overflow: hidden;\n  -webkit-overflow-scrolling: touch;\n  outline: 0;\n}\n.modal.fade .modal-dialog {\n  -webkit-transform: translate(0, -25%);\n  -ms-transform: translate(0, -25%);\n  -o-transform: translate(0, -25%);\n  transform: translate(0, -25%);\n  -webkit-transition: -webkit-transform 0.3s ease-out;\n  -o-transition: -o-transform 0.3s ease-out;\n  transition: -webkit-transform 0.3s ease-out;\n  transition: transform 0.3s ease-out;\n  transition: transform 0.3s ease-out, -webkit-transform 0.3s ease-out, -o-transform 0.3s ease-out;\n}\n.modal.in .modal-dialog {\n  -webkit-transform: translate(0, 0);\n  -ms-transform: translate(0, 0);\n  -o-transform: translate(0, 0);\n  transform: translate(0, 0);\n}\n.modal-open .modal {\n  overflow-x: hidden;\n  overflow-y: auto;\n}\n.modal-dialog {\n  position: relative;\n  width: auto;\n  margin: 10px;\n}\n.modal-content {\n  position: relative;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid #999;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 6px;\n  -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n  box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n  outline: 0;\n}\n.modal-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1040;\n  background-color: #000;\n}\n.modal-backdrop.fade {\n  filter: alpha(opacity=0);\n  opacity: 0;\n}\n.modal-backdrop.in {\n  filter: alpha(opacity=50);\n  opacity: 0.5;\n}\n.modal-header {\n  padding: 15px;\n  border-bottom: 1px solid #e5e5e5;\n}\n.modal-header .close {\n  margin-top: -2px;\n}\n.modal-title {\n  margin: 0;\n  line-height: 1.42857143;\n}\n.modal-body {\n  position: relative;\n  padding: 15px;\n}\n.modal-footer {\n  padding: 15px;\n  text-align: right;\n  border-top: 1px solid #e5e5e5;\n}\n.modal-footer .btn + .btn {\n  margin-bottom: 0;\n  margin-left: 5px;\n}\n.modal-footer .btn-group .btn + .btn {\n  margin-left: -1px;\n}\n.modal-footer .btn-block + .btn-block {\n  margin-left: 0;\n}\n.modal-scrollbar-measure {\n  position: absolute;\n  top: -9999px;\n  width: 50px;\n  height: 50px;\n  overflow: scroll;\n}\n@media (min-width: 768px) {\n  .modal-dialog {\n    width: 600px;\n    margin: 30px auto;\n  }\n  .modal-content {\n    -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n    box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n  }\n  .modal-sm {\n    width: 300px;\n  }\n}\n@media (min-width: 992px) {\n  .modal-lg {\n    width: 900px;\n  }\n}\n.tooltip {\n  position: absolute;\n  z-index: 1070;\n  display: block;\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-style: normal;\n  font-weight: 400;\n  line-height: 1.42857143;\n  line-break: auto;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  word-wrap: normal;\n  white-space: normal;\n  font-size: 12px;\n  filter: alpha(opacity=0);\n  opacity: 0;\n}\n.tooltip.in {\n  filter: alpha(opacity=90);\n  opacity: 0.9;\n}\n.tooltip.top {\n  padding: 5px 0;\n  margin-top: -3px;\n}\n.tooltip.right {\n  padding: 0 5px;\n  margin-left: 3px;\n}\n.tooltip.bottom {\n  padding: 5px 0;\n  margin-top: 3px;\n}\n.tooltip.left {\n  padding: 0 5px;\n  margin-left: -3px;\n}\n.tooltip.top .tooltip-arrow {\n  bottom: 0;\n  left: 50%;\n  margin-left: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.top-left .tooltip-arrow {\n  right: 5px;\n  bottom: 0;\n  margin-bottom: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.top-right .tooltip-arrow {\n  bottom: 0;\n  left: 5px;\n  margin-bottom: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.right .tooltip-arrow {\n  top: 50%;\n  left: 0;\n  margin-top: -5px;\n  border-width: 5px 5px 5px 0;\n  border-right-color: #000;\n}\n.tooltip.left .tooltip-arrow {\n  top: 50%;\n  right: 0;\n  margin-top: -5px;\n  border-width: 5px 0 5px 5px;\n  border-left-color: #000;\n}\n.tooltip.bottom .tooltip-arrow {\n  top: 0;\n  left: 50%;\n  margin-left: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.tooltip.bottom-left .tooltip-arrow {\n  top: 0;\n  right: 5px;\n  margin-top: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.tooltip.bottom-right .tooltip-arrow {\n  top: 0;\n  left: 5px;\n  margin-top: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.tooltip-inner {\n  max-width: 200px;\n  padding: 3px 8px;\n  color: #fff;\n  text-align: center;\n  background-color: #000;\n  border-radius: 4px;\n}\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n.popover {\n  position: absolute;\n  top: 0;\n  left: 0;\n  z-index: 1060;\n  display: none;\n  max-width: 276px;\n  padding: 1px;\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-style: normal;\n  font-weight: 400;\n  line-height: 1.42857143;\n  line-break: auto;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  word-wrap: normal;\n  white-space: normal;\n  font-size: 14px;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 6px;\n  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n}\n.popover.top {\n  margin-top: -10px;\n}\n.popover.right {\n  margin-left: 10px;\n}\n.popover.bottom {\n  margin-top: 10px;\n}\n.popover.left {\n  margin-left: -10px;\n}\n.popover > .arrow {\n  border-width: 11px;\n}\n.popover > .arrow,\n.popover > .arrow:after {\n  position: absolute;\n  display: block;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n.popover > .arrow:after {\n  content: \"\";\n  border-width: 10px;\n}\n.popover.top > .arrow {\n  bottom: -11px;\n  left: 50%;\n  margin-left: -11px;\n  border-top-color: #999999;\n  border-top-color: rgba(0, 0, 0, 0.25);\n  border-bottom-width: 0;\n}\n.popover.top > .arrow:after {\n  bottom: 1px;\n  margin-left: -10px;\n  content: \" \";\n  border-top-color: #fff;\n  border-bottom-width: 0;\n}\n.popover.right > .arrow {\n  top: 50%;\n  left: -11px;\n  margin-top: -11px;\n  border-right-color: #999999;\n  border-right-color: rgba(0, 0, 0, 0.25);\n  border-left-width: 0;\n}\n.popover.right > .arrow:after {\n  bottom: -10px;\n  left: 1px;\n  content: \" \";\n  border-right-color: #fff;\n  border-left-width: 0;\n}\n.popover.bottom > .arrow {\n  top: -11px;\n  left: 50%;\n  margin-left: -11px;\n  border-top-width: 0;\n  border-bottom-color: #999999;\n  border-bottom-color: rgba(0, 0, 0, 0.25);\n}\n.popover.bottom > .arrow:after {\n  top: 1px;\n  margin-left: -10px;\n  content: \" \";\n  border-top-width: 0;\n  border-bottom-color: #fff;\n}\n.popover.left > .arrow {\n  top: 50%;\n  right: -11px;\n  margin-top: -11px;\n  border-right-width: 0;\n  border-left-color: #999999;\n  border-left-color: rgba(0, 0, 0, 0.25);\n}\n.popover.left > .arrow:after {\n  right: 1px;\n  bottom: -10px;\n  content: \" \";\n  border-right-width: 0;\n  border-left-color: #fff;\n}\n.popover-title {\n  padding: 8px 14px;\n  margin: 0;\n  font-size: 14px;\n  background-color: #f7f7f7;\n  border-bottom: 1px solid #ebebeb;\n  border-radius: 5px 5px 0 0;\n}\n.popover-content {\n  padding: 9px 14px;\n}\n.carousel {\n  position: relative;\n}\n.carousel-inner {\n  position: relative;\n  width: 100%;\n  overflow: hidden;\n}\n.carousel-inner > .item {\n  position: relative;\n  display: none;\n  -webkit-transition: 0.6s ease-in-out left;\n  -o-transition: 0.6s ease-in-out left;\n  transition: 0.6s ease-in-out left;\n}\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n  line-height: 1;\n}\n@media all and (transform-3d), (-webkit-transform-3d) {\n  .carousel-inner > .item {\n    -webkit-transition: -webkit-transform 0.6s ease-in-out;\n    -o-transition: -o-transform 0.6s ease-in-out;\n    transition: -webkit-transform 0.6s ease-in-out;\n    transition: transform 0.6s ease-in-out;\n    transition: transform 0.6s ease-in-out, -webkit-transform 0.6s ease-in-out, -o-transform 0.6s ease-in-out;\n    -webkit-backface-visibility: hidden;\n    backface-visibility: hidden;\n    -webkit-perspective: 1000px;\n    perspective: 1000px;\n  }\n  .carousel-inner > .item.next,\n  .carousel-inner > .item.active.right {\n    -webkit-transform: translate3d(100%, 0, 0);\n    transform: translate3d(100%, 0, 0);\n    left: 0;\n  }\n  .carousel-inner > .item.prev,\n  .carousel-inner > .item.active.left {\n    -webkit-transform: translate3d(-100%, 0, 0);\n    transform: translate3d(-100%, 0, 0);\n    left: 0;\n  }\n  .carousel-inner > .item.next.left,\n  .carousel-inner > .item.prev.right,\n  .carousel-inner > .item.active {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n    left: 0;\n  }\n}\n.carousel-inner > .active,\n.carousel-inner > .next,\n.carousel-inner > .prev {\n  display: block;\n}\n.carousel-inner > .active {\n  left: 0;\n}\n.carousel-inner > .next,\n.carousel-inner > .prev {\n  position: absolute;\n  top: 0;\n  width: 100%;\n}\n.carousel-inner > .next {\n  left: 100%;\n}\n.carousel-inner > .prev {\n  left: -100%;\n}\n.carousel-inner > .next.left,\n.carousel-inner > .prev.right {\n  left: 0;\n}\n.carousel-inner > .active.left {\n  left: -100%;\n}\n.carousel-inner > .active.right {\n  left: 100%;\n}\n.carousel-control {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  width: 15%;\n  font-size: 20px;\n  color: #fff;\n  text-align: center;\n  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n  background-color: rgba(0, 0, 0, 0);\n  filter: alpha(opacity=50);\n  opacity: 0.5;\n}\n.carousel-control.left {\n  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n  background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n  background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0.0001)));\n  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n  background-repeat: repeat-x;\n}\n.carousel-control.right {\n  right: 0;\n  left: auto;\n  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n  background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n  background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.0001)), to(rgba(0, 0, 0, 0.5)));\n  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n  background-repeat: repeat-x;\n}\n.carousel-control:hover,\n.carousel-control:focus {\n  color: #fff;\n  text-decoration: none;\n  outline: 0;\n  filter: alpha(opacity=90);\n  opacity: 0.9;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-left,\n.carousel-control .glyphicon-chevron-right {\n  position: absolute;\n  top: 50%;\n  z-index: 5;\n  display: inline-block;\n  margin-top: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .glyphicon-chevron-left {\n  left: 50%;\n  margin-left: -10px;\n}\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-right {\n  right: 50%;\n  margin-right: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next {\n  width: 20px;\n  height: 20px;\n  font-family: serif;\n  line-height: 1;\n}\n.carousel-control .icon-prev:before {\n  content: \"\\2039\";\n}\n.carousel-control .icon-next:before {\n  content: \"\\203a\";\n}\n.carousel-indicators {\n  position: absolute;\n  bottom: 10px;\n  left: 50%;\n  z-index: 15;\n  width: 60%;\n  padding-left: 0;\n  margin-left: -30%;\n  text-align: center;\n  list-style: none;\n}\n.carousel-indicators li {\n  display: inline-block;\n  width: 10px;\n  height: 10px;\n  margin: 1px;\n  text-indent: -999px;\n  cursor: pointer;\n  background-color: #000 \\9;\n  background-color: rgba(0, 0, 0, 0);\n  border: 1px solid #fff;\n  border-radius: 10px;\n}\n.carousel-indicators .active {\n  width: 12px;\n  height: 12px;\n  margin: 0;\n  background-color: #fff;\n}\n.carousel-caption {\n  position: absolute;\n  right: 15%;\n  bottom: 20px;\n  left: 15%;\n  z-index: 10;\n  padding-top: 20px;\n  padding-bottom: 20px;\n  color: #fff;\n  text-align: center;\n  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n}\n.carousel-caption .btn {\n  text-shadow: none;\n}\n@media screen and (min-width: 768px) {\n  .carousel-control .glyphicon-chevron-left,\n  .carousel-control .glyphicon-chevron-right,\n  .carousel-control .icon-prev,\n  .carousel-control .icon-next {\n    width: 30px;\n    height: 30px;\n    margin-top: -10px;\n    font-size: 30px;\n  }\n  .carousel-control .glyphicon-chevron-left,\n  .carousel-control .icon-prev {\n    margin-left: -10px;\n  }\n  .carousel-control .glyphicon-chevron-right,\n  .carousel-control .icon-next {\n    margin-right: -10px;\n  }\n  .carousel-caption {\n    right: 20%;\n    left: 20%;\n    padding-bottom: 30px;\n  }\n  .carousel-indicators {\n    bottom: 20px;\n  }\n}\n.clearfix:before,\n.clearfix:after,\n.dl-horizontal dd:before,\n.dl-horizontal dd:after,\n.container:before,\n.container:after,\n.container-fluid:before,\n.container-fluid:after,\n.row:before,\n.row:after,\n.form-horizontal .form-group:before,\n.form-horizontal .form-group:after,\n.btn-toolbar:before,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:before,\n.btn-group-vertical > .btn-group:after,\n.nav:before,\n.nav:after,\n.navbar:before,\n.navbar:after,\n.navbar-header:before,\n.navbar-header:after,\n.navbar-collapse:before,\n.navbar-collapse:after,\n.pager:before,\n.pager:after,\n.panel-body:before,\n.panel-body:after,\n.modal-header:before,\n.modal-header:after,\n.modal-footer:before,\n.modal-footer:after {\n  display: table;\n  content: \" \";\n}\n.clearfix:after,\n.dl-horizontal dd:after,\n.container:after,\n.container-fluid:after,\n.row:after,\n.form-horizontal .form-group:after,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:after,\n.nav:after,\n.navbar:after,\n.navbar-header:after,\n.navbar-collapse:after,\n.pager:after,\n.panel-body:after,\n.modal-header:after,\n.modal-footer:after {\n  clear: both;\n}\n.center-block {\n  display: block;\n  margin-right: auto;\n  margin-left: auto;\n}\n.pull-right {\n  float: right !important;\n}\n.pull-left {\n  float: left !important;\n}\n.hide {\n  display: none !important;\n}\n.show {\n  display: block !important;\n}\n.invisible {\n  visibility: hidden;\n}\n.text-hide {\n  font: 0/0 a;\n  color: transparent;\n  text-shadow: none;\n  background-color: transparent;\n  border: 0;\n}\n.hidden {\n  display: none !important;\n}\n.affix {\n  position: fixed;\n}\n@-ms-viewport {\n  width: device-width;\n}\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n  display: none !important;\n}\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n  display: none !important;\n}\n@media (max-width: 767px) {\n  .visible-xs {\n    display: block !important;\n  }\n  table.visible-xs {\n    display: table !important;\n  }\n  tr.visible-xs {\n    display: table-row !important;\n  }\n  th.visible-xs,\n  td.visible-xs {\n    display: table-cell !important;\n  }\n}\n@media (max-width: 767px) {\n  .visible-xs-block {\n    display: block !important;\n  }\n}\n@media (max-width: 767px) {\n  .visible-xs-inline {\n    display: inline !important;\n  }\n}\n@media (max-width: 767px) {\n  .visible-xs-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm {\n    display: block !important;\n  }\n  table.visible-sm {\n    display: table !important;\n  }\n  tr.visible-sm {\n    display: table-row !important;\n  }\n  th.visible-sm,\n  td.visible-sm {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm-block {\n    display: block !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md {\n    display: block !important;\n  }\n  table.visible-md {\n    display: table !important;\n  }\n  tr.visible-md {\n    display: table-row !important;\n  }\n  th.visible-md,\n  td.visible-md {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md-block {\n    display: block !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg {\n    display: block !important;\n  }\n  table.visible-lg {\n    display: table !important;\n  }\n  tr.visible-lg {\n    display: table-row !important;\n  }\n  th.visible-lg,\n  td.visible-lg {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg-block {\n    display: block !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (max-width: 767px) {\n  .hidden-xs {\n    display: none !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .hidden-sm {\n    display: none !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .hidden-md {\n    display: none !important;\n  }\n}\n@media (min-width: 1200px) {\n  .hidden-lg {\n    display: none !important;\n  }\n}\n.visible-print {\n  display: none !important;\n}\n@media print {\n  .visible-print {\n    display: block !important;\n  }\n  table.visible-print {\n    display: table !important;\n  }\n  tr.visible-print {\n    display: table-row !important;\n  }\n  th.visible-print,\n  td.visible-print {\n    display: table-cell !important;\n  }\n}\n.visible-print-block {\n  display: none !important;\n}\n@media print {\n  .visible-print-block {\n    display: block !important;\n  }\n}\n.visible-print-inline {\n  display: none !important;\n}\n@media print {\n  .visible-print-inline {\n    display: inline !important;\n  }\n}\n.visible-print-inline-block {\n  display: none !important;\n}\n@media print {\n  .visible-print-inline-block {\n    display: inline-block !important;\n  }\n}\n@media print {\n  .hidden-print {\n    display: none !important;\n  }\n}\n/*# sourceMappingURL=bootstrap.css.map */"
  },
  {
    "path": "doc/css/site.css",
    "content": ".urubu {\n  background-image: url(\"../img/urubu_cover.png\");\n  background-size: cover;\n  color: white;\n}\n\nbody {\n  position: relative;\n  padding-top: 50px;\n  padding-bottom: 20px;\n}\n\n.page-header {\n  margin-top: 30px;\n}\n\n.breadcrumb {\n  margin-top: 20px;\n}\n\n.content h2:first-of-type {\n  margin-top: 0px;\n}\n\n.half-rule {\n  width: 100px;\n  margin: 25px auto;\n}\n\n\n.fa {\n  margin-right: 0.5em;\n}\n\n.checklist {\n  padding: 0;\n  list-style: none;\n}\n\n/* footer */\n\n.footer {\n  margin-top: 30px;\n  padding-top: 16px;\n  color: #777;\n  border-top: 1px solid #eee;\n  font-size: 90%;\n  text-align: center;\n}\n\n.footer p {\n  margin: 0px;\n}\n\n/* toc */\n\n.sidebar {\n  font-size: 90%;\n  line-height: normal\n}\n\n.toc ul  {\n  padding-left: 0;\n  list-style: none;\n}\n\n.toc ul li {\n  padding-top: 3px;\n}\n\n.toc ul ul {\n  padding-left: 10px;\n  font-size: 95%;\n}\n\n/* heading scrolling */\n\nh2[id]:before,\nh3[id]:before{\n  content: \"\";\n  display: block;\n  height: 70px;\n  margin-top:-70px;\n}\n\n/* affix hacks from boostrap 3.0 docs */\n.sidebar.affix {\n    position: static;\n}\n\n@media (min-width: 992px) {\n  /* Widen the fixed sidebar */\n  .sidebar.affix,\n  .sidebar.affix-bottom {\n    width: 213px;\n  }\n  .sidebar.affix {\n    position: fixed; /* Undo the static from mobile first approach */\n    top: 80px;\n  }\n  .sidebar.affix-bottom {\n    position: absolute; /* Undo the static from mobile first approach */\n  }\n}\n\n@media (min-width: 1200px) {\n  /* Widen the fixed sidebar again */\n  .sidebar.affix,\n  .sidebar.affix-bottom {\n    width: 263px;\n  }\n}\n"
  },
  {
    "path": "doc/css/syntax.css",
    "content": ".codehilite  { background: #ffffff; }\n.codehilite .c { color: #999988; font-style: italic } /* Comment */\n.codehilite .err { color: #a61717; background-color: #e3d2d2 } /* Error */\n.codehilite .k { font-weight: bold } /* Keyword */\n.codehilite .o { font-weight: bold } /* Operator */\n.codehilite .cm { color: #999988; font-style: italic } /* Comment.Multiline */\n.codehilite .cp { color: #999999; font-weight: bold } /* Comment.Preproc */\n.codehilite .c1 { color: #999988; font-style: italic } /* Comment.Single */\n.codehilite .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */\n.codehilite .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */\n.codehilite .gd .x { color: #000000; background-color: #ffaaaa } /* Generic.Deleted.Specific */\n.codehilite .ge { font-style: italic } /* Generic.Emph */\n.codehilite .gr { color: #aa0000 } /* Generic.Error */\n.codehilite .gh { color: #999999 } /* Generic.Heading */\n.codehilite .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */\n.codehilite .gi .x { color: #000000; background-color: #aaffaa } /* Generic.Inserted.Specific */\n.codehilite .go { color: #888888 } /* Generic.Output */\n.codehilite .gp { color: #555555 } /* Generic.Prompt */\n.codehilite .gs { font-weight: bold } /* Generic.Strong */\n.codehilite .gu { color: #aaaaaa } /* Generic.Subheading */\n.codehilite .gt { color: #aa0000 } /* Generic.Traceback */\n.codehilite .kc { font-weight: bold } /* Keyword.Constant */\n.codehilite .kd { font-weight: bold } /* Keyword.Declaration */\n.codehilite .kp { font-weight: bold } /* Keyword.Pseudo */\n.codehilite .kr { font-weight: bold } /* Keyword.Reserved */\n.codehilite .kt { color: #445588; font-weight: bold } /* Keyword.Type */\n.codehilite .m { color: #009999 } /* Literal.Number */\n.codehilite .s { color: #d14 } /* Literal.String */\n.codehilite .na { color: #008080 } /* Name.Attribute */\n.codehilite .nb { color: #0086B3 } /* Name.Builtin */\n.codehilite .nc { color: #445588; font-weight: bold } /* Name.Class */\n.codehilite .no { color: #008080 } /* Name.Constant */\n.codehilite .ni { color: #800080 } /* Name.Entity */\n.codehilite .ne { color: #990000; font-weight: bold } /* Name.Exception */\n.codehilite .nf { color: #990000; font-weight: bold } /* Name.Function */\n.codehilite .nn { color: #555555 } /* Name.Namespace */\n.codehilite .nt { color: #000080 } /* Name.Tag */\n.codehilite .nv { color: #008080 } /* Name.Variable */\n.codehilite .ow { font-weight: bold } /* Operator.Word */\n.codehilite .w { color: #bbbbbb } /* Text.Whitespace */\n.codehilite .mf { color: #009999 } /* Literal.Number.Float */\n.codehilite .mh { color: #009999 } /* Literal.Number.Hex */\n.codehilite .mi { color: #009999 } /* Literal.Number.Integer */\n.codehilite .mo { color: #009999 } /* Literal.Number.Oct */\n.codehilite .sb { color: #d14 } /* Literal.String.Backtick */\n.codehilite .sc { color: #d14 } /* Literal.String.Char */\n.codehilite .sd { color: #d14 } /* Literal.String.Doc */\n.codehilite .s2 { color: #d14 } /* Literal.String.Double */\n.codehilite .se { color: #d14 } /* Literal.String.Escape */\n.codehilite .sh { color: #d14 } /* Literal.String.Heredoc */\n.codehilite .si { color: #d14 } /* Literal.String.Interpol */\n.codehilite .sx { color: #d14 } /* Literal.String.Other */\n.codehilite .sr { color: #009926 } /* Literal.String.Regex */\n.codehilite .s1 { color: #d14 } /* Literal.String.Single */\n.codehilite .ss { color: #990073 } /* Literal.String.Symbol */\n.codehilite .bp { color: #999999 } /* Name.Builtin.Pseudo */\n.codehilite .vc { color: #008080 } /* Name.Variable.Class */\n.codehilite .vg { color: #008080 } /* Name.Variable.Global */\n.codehilite .vi { color: #008080 } /* Name.Variable.Instance */\n.codehilite .il { color: #009999 } /* Literal.Number.Integer.Long */\n"
  },
  {
    "path": "doc/faq/baseurl-preview.md",
    "content": "---\ntitle: How to preview sites that use the baseurl option?\nlayout: page\ndate: 2015-04-30\n---\n\nUrubu version 0.8 and higher\n----------------------------\n\nThe `urubu serve` command  takes the `baseurl` setting automatically into\naccount. \n\nUrubu version 0.7\n------------------\n\nThe `urubu serve` server does not include the `baseurl` prefix when serving\npages so sites that use `baseurl` can't be previewed locally using `urubu\nserve`.  An alternative option is to use\n[tservice](https://github.com/jiffyclub/tservice), which includes an option to\nserve a local static site with a URL prefix.  To use tservice with an Urubu\nsite instead of using `urubu serve` call `tserve` with the prefix option, e.g.\n\n```\ntserve --prefix <baseurl> _build\n```\n\nWhere `<baseurl>` is your site's particular prefix.\n"
  },
  {
    "path": "doc/faq/formulas.md",
    "content": "---\ntitle: Is there a way to render formulas? \ndate: 2015-08-08\n---\n\nYes: you can easily use MathJax with Urubu. Read more about it\n[here](http://www.jandecaluwe.com/blog/urubu-formulas.html).\n\n"
  },
  {
    "path": "doc/faq/index.md",
    "content": "---\ntitle: FAQ \norder: date\n---\n\n"
  },
  {
    "path": "doc/faq/licensing-requirements.md",
    "content": "---\ntitle: What are the licensing requirements? \nlayout: page \ndate: 2014-01-12\n---\n\nUrubu is licensed under the [software_license].\n\nThe first thing to understand is that this license applies only to the Urubu\nsoftware. It has no implications on website projects managed with Urubu. You\nare free to license your projects in any way you choose.\n\nThe license only becomes relevant when you release a modified version of the\nUrubu software to the public in some way. In that case, you have to release the\nmodified source code also, under the same license. \n\nWith the original GPL, a release meant shipping software to user that would\ninstall and run it locally.  However, these days software is often made\navailable by running it on a server.  Under the original GPL, there would be no\nrequirement to release the modified source code in such as case. This clearly\nviolates the spirit of the GNU Licenses.\n\nThe [software_license] fixes that problem. If you make the modified software\navailable by running it on a server, you have to make the modified source code\navailable to the users under the same license.\n\n"
  },
  {
    "path": "doc/faq/link2section.md",
    "content": "---\ntitle: Can I specify a link to a section in a page? \nlayout: page \ndate: 2015-08-07\n---\n\nYes, Urubu support links to page sections.\nRead [this blog post](http://www.jandecaluwe.com/blog/urubu-0-6.html)\nto learn how.\n"
  },
  {
    "path": "doc/faq/media-files.md",
    "content": "---\ntitle: How to add media files? \nlayout: page \ndate: 2014-09-11\n---\n\nThe source structure of a project is preserved in the built website, and all\nnon-markdown content files are copied verbatim. See [/manual/structure]. \n\nTherefore, you can put media files at any convenient place in the source, and\nrefer to them using Markdown image syntax, with a relative or root-relative\npath to the source file.\n"
  },
  {
    "path": "doc/faq/sitemap.md",
    "content": "---\ntitle: How do I make a sitemap?\nlayout: page\ndate: 2016-07-04\n---\n\nTo generate a sitemap you need to do the following:\n\n* Create a markdown file called `sitemap.md` like this:\n```\n---\ntitle: sitemap\nlayout: sitemap\nchangefreq: monthly\npriority: 1.0\nxmlns: http://www.google.com/schemas/sitemap/0.84\nsaveas: sitemap.xml\n---\n\n```\n\n* Provide a `sitemap.html` in the `_layouts` directory, with looking something like the following:\n```\n{% raw %}\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<urlset xmlns=\"{{ this.xmlns }}\">\n{% for t in site.reflinks %}\n    {% if site.reflinks[t].fn and not site.reflinks[t].hidden %}\n    <url>\n        <loc>{{ site.hostname }}{{ site.reflinks[t].url }}</loc>\n        <changefreq>{{ this.changefreq }}</changefreq>\n        <priority>{{ this.priority }}</priority>\n    </url>\n    {% endif %}\n{% endfor %}\n</urlset>\n{% endraw %}\n```\n\nWhat makes this work is for the main part the `saveas` parameter in the `sitemap.md` file, which overrides the default output filename with `sitemap.xml` instead of `sitemap.html`. If you add other sitemaps don't forget to specify distinct `id` and `saveas` for each one, to prevent `Ambiguous reference id` errors. \n"
  },
  {
    "path": "doc/faq/tags.md",
    "content": "---\ntitle: How to use tags?\nlayout: page\ndate: 2015-12-05\n---\n\nUrubu supports tags. To use them, you need 2 things:\n\n* Assign the desired tags to content pages, by assigning a tag or\na list of tags to the `tags` attribute.  See also: \n[/manual/structure#Content files].\n\n* Provide a `tag.html` layout in the `_layouts` directory. \n\nIt is the existence of the `tag.html` layout that triggers the generation of\ntag-related content. For example, if you have used tags `bar` and `foo` in the\nproject, you will see that the `_build` folder contains `tag/bar/index.html`\nand `tag/foo/index.html`. Those index files use the `tag.html` layout to show \nthe content related to a tag.\n\nPresumably, there is already a general `index.html` layout to show content in a\nfolder. An initial `tag.html` layout can then be a one-liner by using template\ninheritance, like so: \n\n```\n{% raw %}\n{% extends \"index.html\" %}\n{% endraw %}\n```\n\nOf course, you may want to specialize the `tag.html` layout\nfurther to better reflect the purpose.\n\nUrubu also generates the corresponding tag objects so that you can use them in\nyour layouts. This is described in [/manual/templates#Tag objects].\n\nNote that the `_build` will contain a top-level `tag` folder, even when the\nsource directory does not. Optionally, you can define the `tag` folder in the\nsource also.  You can then define an index file and set attributes such as the\n`layout` to display the tags themselves.  However, the content will be\ngenerated by Urubu automatically and needs not be set. See also: \n[/manual/templates#Tag folder object].\n\n"
  },
  {
    "path": "doc/index.md",
    "content": "---\ntitle: Urubu \nlayout: home\ncontent:\n    - start \n    - manual \n    - ref: urubu-quickstart\n      title: Quickstart\n    - faq\n    - more \ntagline:\n    A micro CMS for static websites\n---\n<div class=\"row\">\n\n    <div class=\"col-md-4\">\n<h4>For websites, <mark>not just blogs</mark></h4>\n<p>\nSet up a website as logically related content. <mark>Content\nordering is flexible</mark>, not just by date.\n</p>  \n    </div>\n\n    <div class=\"col-md-4\">\n<h4>Focus on <mark>navigation</mark></h4>\n<p>\nEasily set up a navbar, a table of contents sidebar,\nbreadcrumbs and pagers. \n</p>\n    </div>\n\n    <div class=\"col-md-4\">\n<h4>Ready for Bootstrap</h4>\n<p>\nUrubu plays well with <mark>Bootstrap</mark>, the popular framework\nfor great looking websites.\n</p>\n    </div>\n\n<div class=\"clearfix visible-md visible-lg\"></div>\n\n    <div class=\"col-md-4\">\n<h4>Markdown content</h4>\n<p>\nEnter content in light-weight <mark>Markdown</mark> syntax, with\npopular extensions.\n</p>\n    </div>\n\n    <div class=\"col-md-4\">\n<h4>Wiki links</h4>\n<p>\n<mark>Easily refer to other pages like\nin wikis</mark>, using Markdown syntax. \n</p>\n    </div> \n\n    <div class=\"col-md-4\">\n<h4>Powerful templating</h4>\n<p>\nUse the powerful <mark>Jinja2 templating</mark> library to \ndefine page layouts.\n</p>  \n    </div>\n\n<div class=\"clearfix visible-md visible-lg\"></div>\n\n    <div class=\"col-md-4\">\n<h4>Sophisticated control</h4>\n<p>\n  Per-page control of page layout \n  and other stuff. Plus\n  <mark>user-defined variables</mark>.  \n</p>  \n    </div>\n\n    <div class=\"col-md-4\">\n<h4>Python power</h4>\n<p>\nUrubu is built with Python. It provides <mark>Python hooks</mark>\nto assist in templating.   \n</p>  \n    </div>\n\n    <div class=\"col-md-4\">\n<h4>Ideal with git</h4>\n<p>\nUse a <mark>git workflow</mark> to develop\nyour website. Deploy by pushing.\n</p>\n    </div>\n\n</div>\n\n<hr class=\"half-rule\">\n\n\n<div class=\"row\">\n  <div class=\"col-md-8 col-md-offset-2 text-center\">\n    <p class=\"lead\">And of course, it's open source!</p>  \n  </div>\n</div>\n"
  },
  {
    "path": "doc/js/bootstrap.js",
    "content": "/*!\n * Bootstrap v3.4.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under the MIT license\n */\n\nif (typeof jQuery === 'undefined') {\n  throw new Error('Bootstrap\\'s JavaScript requires jQuery')\n}\n\n+function ($) {\n  'use strict';\n  var version = $.fn.jquery.split(' ')[0].split('.')\n  if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 3)) {\n    throw new Error('Bootstrap\\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4')\n  }\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: transition.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#transitions\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // CSS TRANSITION SUPPORT (Shoutout: https://modernizr.com/)\n  // ============================================================\n\n  function transitionEnd() {\n    var el = document.createElement('bootstrap')\n\n    var transEndEventNames = {\n      WebkitTransition : 'webkitTransitionEnd',\n      MozTransition    : 'transitionend',\n      OTransition      : 'oTransitionEnd otransitionend',\n      transition       : 'transitionend'\n    }\n\n    for (var name in transEndEventNames) {\n      if (el.style[name] !== undefined) {\n        return { end: transEndEventNames[name] }\n      }\n    }\n\n    return false // explicit for ie8 (  ._.)\n  }\n\n  // https://blog.alexmaccaw.com/css-transitions\n  $.fn.emulateTransitionEnd = function (duration) {\n    var called = false\n    var $el = this\n    $(this).one('bsTransitionEnd', function () { called = true })\n    var callback = function () { if (!called) $($el).trigger($.support.transition.end) }\n    setTimeout(callback, duration)\n    return this\n  }\n\n  $(function () {\n    $.support.transition = transitionEnd()\n\n    if (!$.support.transition) return\n\n    $.event.special.bsTransitionEnd = {\n      bindType: $.support.transition.end,\n      delegateType: $.support.transition.end,\n      handle: function (e) {\n        if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)\n      }\n    }\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: alert.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#alerts\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // ALERT CLASS DEFINITION\n  // ======================\n\n  var dismiss = '[data-dismiss=\"alert\"]'\n  var Alert   = function (el) {\n    $(el).on('click', dismiss, this.close)\n  }\n\n  Alert.VERSION = '3.4.1'\n\n  Alert.TRANSITION_DURATION = 150\n\n  Alert.prototype.close = function (e) {\n    var $this    = $(this)\n    var selector = $this.attr('data-target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n    }\n\n    selector    = selector === '#' ? [] : selector\n    var $parent = $(document).find(selector)\n\n    if (e) e.preventDefault()\n\n    if (!$parent.length) {\n      $parent = $this.closest('.alert')\n    }\n\n    $parent.trigger(e = $.Event('close.bs.alert'))\n\n    if (e.isDefaultPrevented()) return\n\n    $parent.removeClass('in')\n\n    function removeElement() {\n      // detach from parent, fire event then clean up data\n      $parent.detach().trigger('closed.bs.alert').remove()\n    }\n\n    $.support.transition && $parent.hasClass('fade') ?\n      $parent\n        .one('bsTransitionEnd', removeElement)\n        .emulateTransitionEnd(Alert.TRANSITION_DURATION) :\n      removeElement()\n  }\n\n\n  // ALERT PLUGIN DEFINITION\n  // =======================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.alert')\n\n      if (!data) $this.data('bs.alert', (data = new Alert(this)))\n      if (typeof option == 'string') data[option].call($this)\n    })\n  }\n\n  var old = $.fn.alert\n\n  $.fn.alert             = Plugin\n  $.fn.alert.Constructor = Alert\n\n\n  // ALERT NO CONFLICT\n  // =================\n\n  $.fn.alert.noConflict = function () {\n    $.fn.alert = old\n    return this\n  }\n\n\n  // ALERT DATA-API\n  // ==============\n\n  $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: button.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#buttons\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // BUTTON PUBLIC CLASS DEFINITION\n  // ==============================\n\n  var Button = function (element, options) {\n    this.$element  = $(element)\n    this.options   = $.extend({}, Button.DEFAULTS, options)\n    this.isLoading = false\n  }\n\n  Button.VERSION  = '3.4.1'\n\n  Button.DEFAULTS = {\n    loadingText: 'loading...'\n  }\n\n  Button.prototype.setState = function (state) {\n    var d    = 'disabled'\n    var $el  = this.$element\n    var val  = $el.is('input') ? 'val' : 'html'\n    var data = $el.data()\n\n    state += 'Text'\n\n    if (data.resetText == null) $el.data('resetText', $el[val]())\n\n    // push to event loop to allow forms to submit\n    setTimeout($.proxy(function () {\n      $el[val](data[state] == null ? this.options[state] : data[state])\n\n      if (state == 'loadingText') {\n        this.isLoading = true\n        $el.addClass(d).attr(d, d).prop(d, true)\n      } else if (this.isLoading) {\n        this.isLoading = false\n        $el.removeClass(d).removeAttr(d).prop(d, false)\n      }\n    }, this), 0)\n  }\n\n  Button.prototype.toggle = function () {\n    var changed = true\n    var $parent = this.$element.closest('[data-toggle=\"buttons\"]')\n\n    if ($parent.length) {\n      var $input = this.$element.find('input')\n      if ($input.prop('type') == 'radio') {\n        if ($input.prop('checked')) changed = false\n        $parent.find('.active').removeClass('active')\n        this.$element.addClass('active')\n      } else if ($input.prop('type') == 'checkbox') {\n        if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false\n        this.$element.toggleClass('active')\n      }\n      $input.prop('checked', this.$element.hasClass('active'))\n      if (changed) $input.trigger('change')\n    } else {\n      this.$element.attr('aria-pressed', !this.$element.hasClass('active'))\n      this.$element.toggleClass('active')\n    }\n  }\n\n\n  // BUTTON PLUGIN DEFINITION\n  // ========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.button')\n      var options = typeof option == 'object' && option\n\n      if (!data) $this.data('bs.button', (data = new Button(this, options)))\n\n      if (option == 'toggle') data.toggle()\n      else if (option) data.setState(option)\n    })\n  }\n\n  var old = $.fn.button\n\n  $.fn.button             = Plugin\n  $.fn.button.Constructor = Button\n\n\n  // BUTTON NO CONFLICT\n  // ==================\n\n  $.fn.button.noConflict = function () {\n    $.fn.button = old\n    return this\n  }\n\n\n  // BUTTON DATA-API\n  // ===============\n\n  $(document)\n    .on('click.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n      var $btn = $(e.target).closest('.btn')\n      Plugin.call($btn, 'toggle')\n      if (!($(e.target).is('input[type=\"radio\"], input[type=\"checkbox\"]'))) {\n        // Prevent double click on radios, and the double selections (so cancellation) on checkboxes\n        e.preventDefault()\n        // The target component still receive the focus\n        if ($btn.is('input,button')) $btn.trigger('focus')\n        else $btn.find('input:visible,button:visible').first().trigger('focus')\n      }\n    })\n    .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n      $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))\n    })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: carousel.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#carousel\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // CAROUSEL CLASS DEFINITION\n  // =========================\n\n  var Carousel = function (element, options) {\n    this.$element    = $(element)\n    this.$indicators = this.$element.find('.carousel-indicators')\n    this.options     = options\n    this.paused      = null\n    this.sliding     = null\n    this.interval    = null\n    this.$active     = null\n    this.$items      = null\n\n    this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))\n\n    this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element\n      .on('mouseenter.bs.carousel', $.proxy(this.pause, this))\n      .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))\n  }\n\n  Carousel.VERSION  = '3.4.1'\n\n  Carousel.TRANSITION_DURATION = 600\n\n  Carousel.DEFAULTS = {\n    interval: 5000,\n    pause: 'hover',\n    wrap: true,\n    keyboard: true\n  }\n\n  Carousel.prototype.keydown = function (e) {\n    if (/input|textarea/i.test(e.target.tagName)) return\n    switch (e.which) {\n      case 37: this.prev(); break\n      case 39: this.next(); break\n      default: return\n    }\n\n    e.preventDefault()\n  }\n\n  Carousel.prototype.cycle = function (e) {\n    e || (this.paused = false)\n\n    this.interval && clearInterval(this.interval)\n\n    this.options.interval\n      && !this.paused\n      && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))\n\n    return this\n  }\n\n  Carousel.prototype.getItemIndex = function (item) {\n    this.$items = item.parent().children('.item')\n    return this.$items.index(item || this.$active)\n  }\n\n  Carousel.prototype.getItemForDirection = function (direction, active) {\n    var activeIndex = this.getItemIndex(active)\n    var willWrap = (direction == 'prev' && activeIndex === 0)\n                || (direction == 'next' && activeIndex == (this.$items.length - 1))\n    if (willWrap && !this.options.wrap) return active\n    var delta = direction == 'prev' ? -1 : 1\n    var itemIndex = (activeIndex + delta) % this.$items.length\n    return this.$items.eq(itemIndex)\n  }\n\n  Carousel.prototype.to = function (pos) {\n    var that        = this\n    var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))\n\n    if (pos > (this.$items.length - 1) || pos < 0) return\n\n    if (this.sliding)       return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, \"slid\"\n    if (activeIndex == pos) return this.pause().cycle()\n\n    return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))\n  }\n\n  Carousel.prototype.pause = function (e) {\n    e || (this.paused = true)\n\n    if (this.$element.find('.next, .prev').length && $.support.transition) {\n      this.$element.trigger($.support.transition.end)\n      this.cycle(true)\n    }\n\n    this.interval = clearInterval(this.interval)\n\n    return this\n  }\n\n  Carousel.prototype.next = function () {\n    if (this.sliding) return\n    return this.slide('next')\n  }\n\n  Carousel.prototype.prev = function () {\n    if (this.sliding) return\n    return this.slide('prev')\n  }\n\n  Carousel.prototype.slide = function (type, next) {\n    var $active   = this.$element.find('.item.active')\n    var $next     = next || this.getItemForDirection(type, $active)\n    var isCycling = this.interval\n    var direction = type == 'next' ? 'left' : 'right'\n    var that      = this\n\n    if ($next.hasClass('active')) return (this.sliding = false)\n\n    var relatedTarget = $next[0]\n    var slideEvent = $.Event('slide.bs.carousel', {\n      relatedTarget: relatedTarget,\n      direction: direction\n    })\n    this.$element.trigger(slideEvent)\n    if (slideEvent.isDefaultPrevented()) return\n\n    this.sliding = true\n\n    isCycling && this.pause()\n\n    if (this.$indicators.length) {\n      this.$indicators.find('.active').removeClass('active')\n      var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])\n      $nextIndicator && $nextIndicator.addClass('active')\n    }\n\n    var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, \"slid\"\n    if ($.support.transition && this.$element.hasClass('slide')) {\n      $next.addClass(type)\n      if (typeof $next === 'object' && $next.length) {\n        $next[0].offsetWidth // force reflow\n      }\n      $active.addClass(direction)\n      $next.addClass(direction)\n      $active\n        .one('bsTransitionEnd', function () {\n          $next.removeClass([type, direction].join(' ')).addClass('active')\n          $active.removeClass(['active', direction].join(' '))\n          that.sliding = false\n          setTimeout(function () {\n            that.$element.trigger(slidEvent)\n          }, 0)\n        })\n        .emulateTransitionEnd(Carousel.TRANSITION_DURATION)\n    } else {\n      $active.removeClass('active')\n      $next.addClass('active')\n      this.sliding = false\n      this.$element.trigger(slidEvent)\n    }\n\n    isCycling && this.cycle()\n\n    return this\n  }\n\n\n  // CAROUSEL PLUGIN DEFINITION\n  // ==========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.carousel')\n      var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)\n      var action  = typeof option == 'string' ? option : options.slide\n\n      if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))\n      if (typeof option == 'number') data.to(option)\n      else if (action) data[action]()\n      else if (options.interval) data.pause().cycle()\n    })\n  }\n\n  var old = $.fn.carousel\n\n  $.fn.carousel             = Plugin\n  $.fn.carousel.Constructor = Carousel\n\n\n  // CAROUSEL NO CONFLICT\n  // ====================\n\n  $.fn.carousel.noConflict = function () {\n    $.fn.carousel = old\n    return this\n  }\n\n\n  // CAROUSEL DATA-API\n  // =================\n\n  var clickHandler = function (e) {\n    var $this   = $(this)\n    var href    = $this.attr('href')\n    if (href) {\n      href = href.replace(/.*(?=#[^\\s]+$)/, '') // strip for ie7\n    }\n\n    var target  = $this.attr('data-target') || href\n    var $target = $(document).find(target)\n\n    if (!$target.hasClass('carousel')) return\n\n    var options = $.extend({}, $target.data(), $this.data())\n    var slideIndex = $this.attr('data-slide-to')\n    if (slideIndex) options.interval = false\n\n    Plugin.call($target, options)\n\n    if (slideIndex) {\n      $target.data('bs.carousel').to(slideIndex)\n    }\n\n    e.preventDefault()\n  }\n\n  $(document)\n    .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)\n    .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)\n\n  $(window).on('load', function () {\n    $('[data-ride=\"carousel\"]').each(function () {\n      var $carousel = $(this)\n      Plugin.call($carousel, $carousel.data())\n    })\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: collapse.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#collapse\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n/* jshint latedef: false */\n\n+function ($) {\n  'use strict';\n\n  // COLLAPSE PUBLIC CLASS DEFINITION\n  // ================================\n\n  var Collapse = function (element, options) {\n    this.$element      = $(element)\n    this.options       = $.extend({}, Collapse.DEFAULTS, options)\n    this.$trigger      = $('[data-toggle=\"collapse\"][href=\"#' + element.id + '\"],' +\n                           '[data-toggle=\"collapse\"][data-target=\"#' + element.id + '\"]')\n    this.transitioning = null\n\n    if (this.options.parent) {\n      this.$parent = this.getParent()\n    } else {\n      this.addAriaAndCollapsedClass(this.$element, this.$trigger)\n    }\n\n    if (this.options.toggle) this.toggle()\n  }\n\n  Collapse.VERSION  = '3.4.1'\n\n  Collapse.TRANSITION_DURATION = 350\n\n  Collapse.DEFAULTS = {\n    toggle: true\n  }\n\n  Collapse.prototype.dimension = function () {\n    var hasWidth = this.$element.hasClass('width')\n    return hasWidth ? 'width' : 'height'\n  }\n\n  Collapse.prototype.show = function () {\n    if (this.transitioning || this.$element.hasClass('in')) return\n\n    var activesData\n    var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')\n\n    if (actives && actives.length) {\n      activesData = actives.data('bs.collapse')\n      if (activesData && activesData.transitioning) return\n    }\n\n    var startEvent = $.Event('show.bs.collapse')\n    this.$element.trigger(startEvent)\n    if (startEvent.isDefaultPrevented()) return\n\n    if (actives && actives.length) {\n      Plugin.call(actives, 'hide')\n      activesData || actives.data('bs.collapse', null)\n    }\n\n    var dimension = this.dimension()\n\n    this.$element\n      .removeClass('collapse')\n      .addClass('collapsing')[dimension](0)\n      .attr('aria-expanded', true)\n\n    this.$trigger\n      .removeClass('collapsed')\n      .attr('aria-expanded', true)\n\n    this.transitioning = 1\n\n    var complete = function () {\n      this.$element\n        .removeClass('collapsing')\n        .addClass('collapse in')[dimension]('')\n      this.transitioning = 0\n      this.$element\n        .trigger('shown.bs.collapse')\n    }\n\n    if (!$.support.transition) return complete.call(this)\n\n    var scrollSize = $.camelCase(['scroll', dimension].join('-'))\n\n    this.$element\n      .one('bsTransitionEnd', $.proxy(complete, this))\n      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])\n  }\n\n  Collapse.prototype.hide = function () {\n    if (this.transitioning || !this.$element.hasClass('in')) return\n\n    var startEvent = $.Event('hide.bs.collapse')\n    this.$element.trigger(startEvent)\n    if (startEvent.isDefaultPrevented()) return\n\n    var dimension = this.dimension()\n\n    this.$element[dimension](this.$element[dimension]())[0].offsetHeight\n\n    this.$element\n      .addClass('collapsing')\n      .removeClass('collapse in')\n      .attr('aria-expanded', false)\n\n    this.$trigger\n      .addClass('collapsed')\n      .attr('aria-expanded', false)\n\n    this.transitioning = 1\n\n    var complete = function () {\n      this.transitioning = 0\n      this.$element\n        .removeClass('collapsing')\n        .addClass('collapse')\n        .trigger('hidden.bs.collapse')\n    }\n\n    if (!$.support.transition) return complete.call(this)\n\n    this.$element\n      [dimension](0)\n      .one('bsTransitionEnd', $.proxy(complete, this))\n      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)\n  }\n\n  Collapse.prototype.toggle = function () {\n    this[this.$element.hasClass('in') ? 'hide' : 'show']()\n  }\n\n  Collapse.prototype.getParent = function () {\n    return $(document).find(this.options.parent)\n      .find('[data-toggle=\"collapse\"][data-parent=\"' + this.options.parent + '\"]')\n      .each($.proxy(function (i, element) {\n        var $element = $(element)\n        this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)\n      }, this))\n      .end()\n  }\n\n  Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {\n    var isOpen = $element.hasClass('in')\n\n    $element.attr('aria-expanded', isOpen)\n    $trigger\n      .toggleClass('collapsed', !isOpen)\n      .attr('aria-expanded', isOpen)\n  }\n\n  function getTargetFromTrigger($trigger) {\n    var href\n    var target = $trigger.attr('data-target')\n      || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '') // strip for ie7\n\n    return $(document).find(target)\n  }\n\n\n  // COLLAPSE PLUGIN DEFINITION\n  // ==========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.collapse')\n      var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n      if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false\n      if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.collapse\n\n  $.fn.collapse             = Plugin\n  $.fn.collapse.Constructor = Collapse\n\n\n  // COLLAPSE NO CONFLICT\n  // ====================\n\n  $.fn.collapse.noConflict = function () {\n    $.fn.collapse = old\n    return this\n  }\n\n\n  // COLLAPSE DATA-API\n  // =================\n\n  $(document).on('click.bs.collapse.data-api', '[data-toggle=\"collapse\"]', function (e) {\n    var $this   = $(this)\n\n    if (!$this.attr('data-target')) e.preventDefault()\n\n    var $target = getTargetFromTrigger($this)\n    var data    = $target.data('bs.collapse')\n    var option  = data ? 'toggle' : $this.data()\n\n    Plugin.call($target, option)\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: dropdown.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#dropdowns\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // DROPDOWN CLASS DEFINITION\n  // =========================\n\n  var backdrop = '.dropdown-backdrop'\n  var toggle   = '[data-toggle=\"dropdown\"]'\n  var Dropdown = function (element) {\n    $(element).on('click.bs.dropdown', this.toggle)\n  }\n\n  Dropdown.VERSION = '3.4.1'\n\n  function getParent($this) {\n    var selector = $this.attr('data-target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n    }\n\n    var $parent = selector !== '#' ? $(document).find(selector) : null\n\n    return $parent && $parent.length ? $parent : $this.parent()\n  }\n\n  function clearMenus(e) {\n    if (e && e.which === 3) return\n    $(backdrop).remove()\n    $(toggle).each(function () {\n      var $this         = $(this)\n      var $parent       = getParent($this)\n      var relatedTarget = { relatedTarget: this }\n\n      if (!$parent.hasClass('open')) return\n\n      if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return\n\n      $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))\n\n      if (e.isDefaultPrevented()) return\n\n      $this.attr('aria-expanded', 'false')\n      $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))\n    })\n  }\n\n  Dropdown.prototype.toggle = function (e) {\n    var $this = $(this)\n\n    if ($this.is('.disabled, :disabled')) return\n\n    var $parent  = getParent($this)\n    var isActive = $parent.hasClass('open')\n\n    clearMenus()\n\n    if (!isActive) {\n      if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {\n        // if mobile we use a backdrop because click events don't delegate\n        $(document.createElement('div'))\n          .addClass('dropdown-backdrop')\n          .insertAfter($(this))\n          .on('click', clearMenus)\n      }\n\n      var relatedTarget = { relatedTarget: this }\n      $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))\n\n      if (e.isDefaultPrevented()) return\n\n      $this\n        .trigger('focus')\n        .attr('aria-expanded', 'true')\n\n      $parent\n        .toggleClass('open')\n        .trigger($.Event('shown.bs.dropdown', relatedTarget))\n    }\n\n    return false\n  }\n\n  Dropdown.prototype.keydown = function (e) {\n    if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return\n\n    var $this = $(this)\n\n    e.preventDefault()\n    e.stopPropagation()\n\n    if ($this.is('.disabled, :disabled')) return\n\n    var $parent  = getParent($this)\n    var isActive = $parent.hasClass('open')\n\n    if (!isActive && e.which != 27 || isActive && e.which == 27) {\n      if (e.which == 27) $parent.find(toggle).trigger('focus')\n      return $this.trigger('click')\n    }\n\n    var desc = ' li:not(.disabled):visible a'\n    var $items = $parent.find('.dropdown-menu' + desc)\n\n    if (!$items.length) return\n\n    var index = $items.index(e.target)\n\n    if (e.which == 38 && index > 0)                 index--         // up\n    if (e.which == 40 && index < $items.length - 1) index++         // down\n    if (!~index)                                    index = 0\n\n    $items.eq(index).trigger('focus')\n  }\n\n\n  // DROPDOWN PLUGIN DEFINITION\n  // ==========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.dropdown')\n\n      if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))\n      if (typeof option == 'string') data[option].call($this)\n    })\n  }\n\n  var old = $.fn.dropdown\n\n  $.fn.dropdown             = Plugin\n  $.fn.dropdown.Constructor = Dropdown\n\n\n  // DROPDOWN NO CONFLICT\n  // ====================\n\n  $.fn.dropdown.noConflict = function () {\n    $.fn.dropdown = old\n    return this\n  }\n\n\n  // APPLY TO STANDARD DROPDOWN ELEMENTS\n  // ===================================\n\n  $(document)\n    .on('click.bs.dropdown.data-api', clearMenus)\n    .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })\n    .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)\n    .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)\n    .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: modal.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#modals\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // MODAL CLASS DEFINITION\n  // ======================\n\n  var Modal = function (element, options) {\n    this.options = options\n    this.$body = $(document.body)\n    this.$element = $(element)\n    this.$dialog = this.$element.find('.modal-dialog')\n    this.$backdrop = null\n    this.isShown = null\n    this.originalBodyPad = null\n    this.scrollbarWidth = 0\n    this.ignoreBackdropClick = false\n    this.fixedContent = '.navbar-fixed-top, .navbar-fixed-bottom'\n\n    if (this.options.remote) {\n      this.$element\n        .find('.modal-content')\n        .load(this.options.remote, $.proxy(function () {\n          this.$element.trigger('loaded.bs.modal')\n        }, this))\n    }\n  }\n\n  Modal.VERSION = '3.4.1'\n\n  Modal.TRANSITION_DURATION = 300\n  Modal.BACKDROP_TRANSITION_DURATION = 150\n\n  Modal.DEFAULTS = {\n    backdrop: true,\n    keyboard: true,\n    show: true\n  }\n\n  Modal.prototype.toggle = function (_relatedTarget) {\n    return this.isShown ? this.hide() : this.show(_relatedTarget)\n  }\n\n  Modal.prototype.show = function (_relatedTarget) {\n    var that = this\n    var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })\n\n    this.$element.trigger(e)\n\n    if (this.isShown || e.isDefaultPrevented()) return\n\n    this.isShown = true\n\n    this.checkScrollbar()\n    this.setScrollbar()\n    this.$body.addClass('modal-open')\n\n    this.escape()\n    this.resize()\n\n    this.$element.on('click.dismiss.bs.modal', '[data-dismiss=\"modal\"]', $.proxy(this.hide, this))\n\n    this.$dialog.on('mousedown.dismiss.bs.modal', function () {\n      that.$element.one('mouseup.dismiss.bs.modal', function (e) {\n        if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true\n      })\n    })\n\n    this.backdrop(function () {\n      var transition = $.support.transition && that.$element.hasClass('fade')\n\n      if (!that.$element.parent().length) {\n        that.$element.appendTo(that.$body) // don't move modals dom position\n      }\n\n      that.$element\n        .show()\n        .scrollTop(0)\n\n      that.adjustDialog()\n\n      if (transition) {\n        that.$element[0].offsetWidth // force reflow\n      }\n\n      that.$element.addClass('in')\n\n      that.enforceFocus()\n\n      var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })\n\n      transition ?\n        that.$dialog // wait for modal to slide in\n          .one('bsTransitionEnd', function () {\n            that.$element.trigger('focus').trigger(e)\n          })\n          .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n        that.$element.trigger('focus').trigger(e)\n    })\n  }\n\n  Modal.prototype.hide = function (e) {\n    if (e) e.preventDefault()\n\n    e = $.Event('hide.bs.modal')\n\n    this.$element.trigger(e)\n\n    if (!this.isShown || e.isDefaultPrevented()) return\n\n    this.isShown = false\n\n    this.escape()\n    this.resize()\n\n    $(document).off('focusin.bs.modal')\n\n    this.$element\n      .removeClass('in')\n      .off('click.dismiss.bs.modal')\n      .off('mouseup.dismiss.bs.modal')\n\n    this.$dialog.off('mousedown.dismiss.bs.modal')\n\n    $.support.transition && this.$element.hasClass('fade') ?\n      this.$element\n        .one('bsTransitionEnd', $.proxy(this.hideModal, this))\n        .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n      this.hideModal()\n  }\n\n  Modal.prototype.enforceFocus = function () {\n    $(document)\n      .off('focusin.bs.modal') // guard against infinite focus loop\n      .on('focusin.bs.modal', $.proxy(function (e) {\n        if (document !== e.target &&\n          this.$element[0] !== e.target &&\n          !this.$element.has(e.target).length) {\n          this.$element.trigger('focus')\n        }\n      }, this))\n  }\n\n  Modal.prototype.escape = function () {\n    if (this.isShown && this.options.keyboard) {\n      this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {\n        e.which == 27 && this.hide()\n      }, this))\n    } else if (!this.isShown) {\n      this.$element.off('keydown.dismiss.bs.modal')\n    }\n  }\n\n  Modal.prototype.resize = function () {\n    if (this.isShown) {\n      $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))\n    } else {\n      $(window).off('resize.bs.modal')\n    }\n  }\n\n  Modal.prototype.hideModal = function () {\n    var that = this\n    this.$element.hide()\n    this.backdrop(function () {\n      that.$body.removeClass('modal-open')\n      that.resetAdjustments()\n      that.resetScrollbar()\n      that.$element.trigger('hidden.bs.modal')\n    })\n  }\n\n  Modal.prototype.removeBackdrop = function () {\n    this.$backdrop && this.$backdrop.remove()\n    this.$backdrop = null\n  }\n\n  Modal.prototype.backdrop = function (callback) {\n    var that = this\n    var animate = this.$element.hasClass('fade') ? 'fade' : ''\n\n    if (this.isShown && this.options.backdrop) {\n      var doAnimate = $.support.transition && animate\n\n      this.$backdrop = $(document.createElement('div'))\n        .addClass('modal-backdrop ' + animate)\n        .appendTo(this.$body)\n\n      this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {\n        if (this.ignoreBackdropClick) {\n          this.ignoreBackdropClick = false\n          return\n        }\n        if (e.target !== e.currentTarget) return\n        this.options.backdrop == 'static'\n          ? this.$element[0].focus()\n          : this.hide()\n      }, this))\n\n      if (doAnimate) this.$backdrop[0].offsetWidth // force reflow\n\n      this.$backdrop.addClass('in')\n\n      if (!callback) return\n\n      doAnimate ?\n        this.$backdrop\n          .one('bsTransitionEnd', callback)\n          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n        callback()\n\n    } else if (!this.isShown && this.$backdrop) {\n      this.$backdrop.removeClass('in')\n\n      var callbackRemove = function () {\n        that.removeBackdrop()\n        callback && callback()\n      }\n      $.support.transition && this.$element.hasClass('fade') ?\n        this.$backdrop\n          .one('bsTransitionEnd', callbackRemove)\n          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n        callbackRemove()\n\n    } else if (callback) {\n      callback()\n    }\n  }\n\n  // these following methods are used to handle overflowing modals\n\n  Modal.prototype.handleUpdate = function () {\n    this.adjustDialog()\n  }\n\n  Modal.prototype.adjustDialog = function () {\n    var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight\n\n    this.$element.css({\n      paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',\n      paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''\n    })\n  }\n\n  Modal.prototype.resetAdjustments = function () {\n    this.$element.css({\n      paddingLeft: '',\n      paddingRight: ''\n    })\n  }\n\n  Modal.prototype.checkScrollbar = function () {\n    var fullWindowWidth = window.innerWidth\n    if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8\n      var documentElementRect = document.documentElement.getBoundingClientRect()\n      fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)\n    }\n    this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth\n    this.scrollbarWidth = this.measureScrollbar()\n  }\n\n  Modal.prototype.setScrollbar = function () {\n    var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)\n    this.originalBodyPad = document.body.style.paddingRight || ''\n    var scrollbarWidth = this.scrollbarWidth\n    if (this.bodyIsOverflowing) {\n      this.$body.css('padding-right', bodyPad + scrollbarWidth)\n      $(this.fixedContent).each(function (index, element) {\n        var actualPadding = element.style.paddingRight\n        var calculatedPadding = $(element).css('padding-right')\n        $(element)\n          .data('padding-right', actualPadding)\n          .css('padding-right', parseFloat(calculatedPadding) + scrollbarWidth + 'px')\n      })\n    }\n  }\n\n  Modal.prototype.resetScrollbar = function () {\n    this.$body.css('padding-right', this.originalBodyPad)\n    $(this.fixedContent).each(function (index, element) {\n      var padding = $(element).data('padding-right')\n      $(element).removeData('padding-right')\n      element.style.paddingRight = padding ? padding : ''\n    })\n  }\n\n  Modal.prototype.measureScrollbar = function () { // thx walsh\n    var scrollDiv = document.createElement('div')\n    scrollDiv.className = 'modal-scrollbar-measure'\n    this.$body.append(scrollDiv)\n    var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth\n    this.$body[0].removeChild(scrollDiv)\n    return scrollbarWidth\n  }\n\n\n  // MODAL PLUGIN DEFINITION\n  // =======================\n\n  function Plugin(option, _relatedTarget) {\n    return this.each(function () {\n      var $this = $(this)\n      var data = $this.data('bs.modal')\n      var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n      if (!data) $this.data('bs.modal', (data = new Modal(this, options)))\n      if (typeof option == 'string') data[option](_relatedTarget)\n      else if (options.show) data.show(_relatedTarget)\n    })\n  }\n\n  var old = $.fn.modal\n\n  $.fn.modal = Plugin\n  $.fn.modal.Constructor = Modal\n\n\n  // MODAL NO CONFLICT\n  // =================\n\n  $.fn.modal.noConflict = function () {\n    $.fn.modal = old\n    return this\n  }\n\n\n  // MODAL DATA-API\n  // ==============\n\n  $(document).on('click.bs.modal.data-api', '[data-toggle=\"modal\"]', function (e) {\n    var $this = $(this)\n    var href = $this.attr('href')\n    var target = $this.attr('data-target') ||\n      (href && href.replace(/.*(?=#[^\\s]+$)/, '')) // strip for ie7\n\n    var $target = $(document).find(target)\n    var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())\n\n    if ($this.is('a')) e.preventDefault()\n\n    $target.one('show.bs.modal', function (showEvent) {\n      if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown\n      $target.one('hidden.bs.modal', function () {\n        $this.is(':visible') && $this.trigger('focus')\n      })\n    })\n    Plugin.call($target, option, this)\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: tooltip.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#tooltip\n * Inspired by the original jQuery.tipsy by Jason Frame\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n+function ($) {\n  'use strict';\n\n  var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']\n\n  var uriAttrs = [\n    'background',\n    'cite',\n    'href',\n    'itemtype',\n    'longdesc',\n    'poster',\n    'src',\n    'xlink:href'\n  ]\n\n  var ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\n  var DefaultWhitelist = {\n    // Global attributes allowed on any supplied element below.\n    '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n    a: ['target', 'href', 'title', 'rel'],\n    area: [],\n    b: [],\n    br: [],\n    col: [],\n    code: [],\n    div: [],\n    em: [],\n    hr: [],\n    h1: [],\n    h2: [],\n    h3: [],\n    h4: [],\n    h5: [],\n    h6: [],\n    i: [],\n    img: ['src', 'alt', 'title', 'width', 'height'],\n    li: [],\n    ol: [],\n    p: [],\n    pre: [],\n    s: [],\n    small: [],\n    span: [],\n    sub: [],\n    sup: [],\n    strong: [],\n    u: [],\n    ul: []\n  }\n\n  /**\n   * A pattern that recognizes a commonly useful subset of URLs that are safe.\n   *\n   * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n   */\n  var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi\n\n  /**\n   * A pattern that matches safe data URLs. Only matches image, video and audio types.\n   *\n   * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n   */\n  var DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i\n\n  function allowedAttribute(attr, allowedAttributeList) {\n    var attrName = attr.nodeName.toLowerCase()\n\n    if ($.inArray(attrName, allowedAttributeList) !== -1) {\n      if ($.inArray(attrName, uriAttrs) !== -1) {\n        return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))\n      }\n\n      return true\n    }\n\n    var regExp = $(allowedAttributeList).filter(function (index, value) {\n      return value instanceof RegExp\n    })\n\n    // Check if a regular expression validates the attribute.\n    for (var i = 0, l = regExp.length; i < l; i++) {\n      if (attrName.match(regExp[i])) {\n        return true\n      }\n    }\n\n    return false\n  }\n\n  function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n    if (unsafeHtml.length === 0) {\n      return unsafeHtml\n    }\n\n    if (sanitizeFn && typeof sanitizeFn === 'function') {\n      return sanitizeFn(unsafeHtml)\n    }\n\n    // IE 8 and below don't support createHTMLDocument\n    if (!document.implementation || !document.implementation.createHTMLDocument) {\n      return unsafeHtml\n    }\n\n    var createdDocument = document.implementation.createHTMLDocument('sanitization')\n    createdDocument.body.innerHTML = unsafeHtml\n\n    var whitelistKeys = $.map(whiteList, function (el, i) { return i })\n    var elements = $(createdDocument.body).find('*')\n\n    for (var i = 0, len = elements.length; i < len; i++) {\n      var el = elements[i]\n      var elName = el.nodeName.toLowerCase()\n\n      if ($.inArray(elName, whitelistKeys) === -1) {\n        el.parentNode.removeChild(el)\n\n        continue\n      }\n\n      var attributeList = $.map(el.attributes, function (el) { return el })\n      var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || [])\n\n      for (var j = 0, len2 = attributeList.length; j < len2; j++) {\n        if (!allowedAttribute(attributeList[j], whitelistedAttributes)) {\n          el.removeAttribute(attributeList[j].nodeName)\n        }\n      }\n    }\n\n    return createdDocument.body.innerHTML\n  }\n\n  // TOOLTIP PUBLIC CLASS DEFINITION\n  // ===============================\n\n  var Tooltip = function (element, options) {\n    this.type       = null\n    this.options    = null\n    this.enabled    = null\n    this.timeout    = null\n    this.hoverState = null\n    this.$element   = null\n    this.inState    = null\n\n    this.init('tooltip', element, options)\n  }\n\n  Tooltip.VERSION  = '3.4.1'\n\n  Tooltip.TRANSITION_DURATION = 150\n\n  Tooltip.DEFAULTS = {\n    animation: true,\n    placement: 'top',\n    selector: false,\n    template: '<div class=\"tooltip\" role=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>',\n    trigger: 'hover focus',\n    title: '',\n    delay: 0,\n    html: false,\n    container: false,\n    viewport: {\n      selector: 'body',\n      padding: 0\n    },\n    sanitize : true,\n    sanitizeFn : null,\n    whiteList : DefaultWhitelist\n  }\n\n  Tooltip.prototype.init = function (type, element, options) {\n    this.enabled   = true\n    this.type      = type\n    this.$element  = $(element)\n    this.options   = this.getOptions(options)\n    this.$viewport = this.options.viewport && $(document).find($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))\n    this.inState   = { click: false, hover: false, focus: false }\n\n    if (this.$element[0] instanceof document.constructor && !this.options.selector) {\n      throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')\n    }\n\n    var triggers = this.options.trigger.split(' ')\n\n    for (var i = triggers.length; i--;) {\n      var trigger = triggers[i]\n\n      if (trigger == 'click') {\n        this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))\n      } else if (trigger != 'manual') {\n        var eventIn  = trigger == 'hover' ? 'mouseenter' : 'focusin'\n        var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'\n\n        this.$element.on(eventIn  + '.' + this.type, this.options.selector, $.proxy(this.enter, this))\n        this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))\n      }\n    }\n\n    this.options.selector ?\n      (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :\n      this.fixTitle()\n  }\n\n  Tooltip.prototype.getDefaults = function () {\n    return Tooltip.DEFAULTS\n  }\n\n  Tooltip.prototype.getOptions = function (options) {\n    var dataAttributes = this.$element.data()\n\n    for (var dataAttr in dataAttributes) {\n      if (dataAttributes.hasOwnProperty(dataAttr) && $.inArray(dataAttr, DISALLOWED_ATTRIBUTES) !== -1) {\n        delete dataAttributes[dataAttr]\n      }\n    }\n\n    options = $.extend({}, this.getDefaults(), dataAttributes, options)\n\n    if (options.delay && typeof options.delay == 'number') {\n      options.delay = {\n        show: options.delay,\n        hide: options.delay\n      }\n    }\n\n    if (options.sanitize) {\n      options.template = sanitizeHtml(options.template, options.whiteList, options.sanitizeFn)\n    }\n\n    return options\n  }\n\n  Tooltip.prototype.getDelegateOptions = function () {\n    var options  = {}\n    var defaults = this.getDefaults()\n\n    this._options && $.each(this._options, function (key, value) {\n      if (defaults[key] != value) options[key] = value\n    })\n\n    return options\n  }\n\n  Tooltip.prototype.enter = function (obj) {\n    var self = obj instanceof this.constructor ?\n      obj : $(obj.currentTarget).data('bs.' + this.type)\n\n    if (!self) {\n      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n      $(obj.currentTarget).data('bs.' + this.type, self)\n    }\n\n    if (obj instanceof $.Event) {\n      self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true\n    }\n\n    if (self.tip().hasClass('in') || self.hoverState == 'in') {\n      self.hoverState = 'in'\n      return\n    }\n\n    clearTimeout(self.timeout)\n\n    self.hoverState = 'in'\n\n    if (!self.options.delay || !self.options.delay.show) return self.show()\n\n    self.timeout = setTimeout(function () {\n      if (self.hoverState == 'in') self.show()\n    }, self.options.delay.show)\n  }\n\n  Tooltip.prototype.isInStateTrue = function () {\n    for (var key in this.inState) {\n      if (this.inState[key]) return true\n    }\n\n    return false\n  }\n\n  Tooltip.prototype.leave = function (obj) {\n    var self = obj instanceof this.constructor ?\n      obj : $(obj.currentTarget).data('bs.' + this.type)\n\n    if (!self) {\n      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n      $(obj.currentTarget).data('bs.' + this.type, self)\n    }\n\n    if (obj instanceof $.Event) {\n      self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false\n    }\n\n    if (self.isInStateTrue()) return\n\n    clearTimeout(self.timeout)\n\n    self.hoverState = 'out'\n\n    if (!self.options.delay || !self.options.delay.hide) return self.hide()\n\n    self.timeout = setTimeout(function () {\n      if (self.hoverState == 'out') self.hide()\n    }, self.options.delay.hide)\n  }\n\n  Tooltip.prototype.show = function () {\n    var e = $.Event('show.bs.' + this.type)\n\n    if (this.hasContent() && this.enabled) {\n      this.$element.trigger(e)\n\n      var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])\n      if (e.isDefaultPrevented() || !inDom) return\n      var that = this\n\n      var $tip = this.tip()\n\n      var tipId = this.getUID(this.type)\n\n      this.setContent()\n      $tip.attr('id', tipId)\n      this.$element.attr('aria-describedby', tipId)\n\n      if (this.options.animation) $tip.addClass('fade')\n\n      var placement = typeof this.options.placement == 'function' ?\n        this.options.placement.call(this, $tip[0], this.$element[0]) :\n        this.options.placement\n\n      var autoToken = /\\s?auto?\\s?/i\n      var autoPlace = autoToken.test(placement)\n      if (autoPlace) placement = placement.replace(autoToken, '') || 'top'\n\n      $tip\n        .detach()\n        .css({ top: 0, left: 0, display: 'block' })\n        .addClass(placement)\n        .data('bs.' + this.type, this)\n\n      this.options.container ? $tip.appendTo($(document).find(this.options.container)) : $tip.insertAfter(this.$element)\n      this.$element.trigger('inserted.bs.' + this.type)\n\n      var pos          = this.getPosition()\n      var actualWidth  = $tip[0].offsetWidth\n      var actualHeight = $tip[0].offsetHeight\n\n      if (autoPlace) {\n        var orgPlacement = placement\n        var viewportDim = this.getPosition(this.$viewport)\n\n        placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top'    :\n                    placement == 'top'    && pos.top    - actualHeight < viewportDim.top    ? 'bottom' :\n                    placement == 'right'  && pos.right  + actualWidth  > viewportDim.width  ? 'left'   :\n                    placement == 'left'   && pos.left   - actualWidth  < viewportDim.left   ? 'right'  :\n                    placement\n\n        $tip\n          .removeClass(orgPlacement)\n          .addClass(placement)\n      }\n\n      var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)\n\n      this.applyPlacement(calculatedOffset, placement)\n\n      var complete = function () {\n        var prevHoverState = that.hoverState\n        that.$element.trigger('shown.bs.' + that.type)\n        that.hoverState = null\n\n        if (prevHoverState == 'out') that.leave(that)\n      }\n\n      $.support.transition && this.$tip.hasClass('fade') ?\n        $tip\n          .one('bsTransitionEnd', complete)\n          .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n        complete()\n    }\n  }\n\n  Tooltip.prototype.applyPlacement = function (offset, placement) {\n    var $tip   = this.tip()\n    var width  = $tip[0].offsetWidth\n    var height = $tip[0].offsetHeight\n\n    // manually read margins because getBoundingClientRect includes difference\n    var marginTop = parseInt($tip.css('margin-top'), 10)\n    var marginLeft = parseInt($tip.css('margin-left'), 10)\n\n    // we must check for NaN for ie 8/9\n    if (isNaN(marginTop))  marginTop  = 0\n    if (isNaN(marginLeft)) marginLeft = 0\n\n    offset.top  += marginTop\n    offset.left += marginLeft\n\n    // $.fn.offset doesn't round pixel values\n    // so we use setOffset directly with our own function B-0\n    $.offset.setOffset($tip[0], $.extend({\n      using: function (props) {\n        $tip.css({\n          top: Math.round(props.top),\n          left: Math.round(props.left)\n        })\n      }\n    }, offset), 0)\n\n    $tip.addClass('in')\n\n    // check to see if placing tip in new offset caused the tip to resize itself\n    var actualWidth  = $tip[0].offsetWidth\n    var actualHeight = $tip[0].offsetHeight\n\n    if (placement == 'top' && actualHeight != height) {\n      offset.top = offset.top + height - actualHeight\n    }\n\n    var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)\n\n    if (delta.left) offset.left += delta.left\n    else offset.top += delta.top\n\n    var isVertical          = /top|bottom/.test(placement)\n    var arrowDelta          = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight\n    var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'\n\n    $tip.offset(offset)\n    this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)\n  }\n\n  Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {\n    this.arrow()\n      .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')\n      .css(isVertical ? 'top' : 'left', '')\n  }\n\n  Tooltip.prototype.setContent = function () {\n    var $tip  = this.tip()\n    var title = this.getTitle()\n\n    if (this.options.html) {\n      if (this.options.sanitize) {\n        title = sanitizeHtml(title, this.options.whiteList, this.options.sanitizeFn)\n      }\n\n      $tip.find('.tooltip-inner').html(title)\n    } else {\n      $tip.find('.tooltip-inner').text(title)\n    }\n\n    $tip.removeClass('fade in top bottom left right')\n  }\n\n  Tooltip.prototype.hide = function (callback) {\n    var that = this\n    var $tip = $(this.$tip)\n    var e    = $.Event('hide.bs.' + this.type)\n\n    function complete() {\n      if (that.hoverState != 'in') $tip.detach()\n      if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary.\n        that.$element\n          .removeAttr('aria-describedby')\n          .trigger('hidden.bs.' + that.type)\n      }\n      callback && callback()\n    }\n\n    this.$element.trigger(e)\n\n    if (e.isDefaultPrevented()) return\n\n    $tip.removeClass('in')\n\n    $.support.transition && $tip.hasClass('fade') ?\n      $tip\n        .one('bsTransitionEnd', complete)\n        .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n      complete()\n\n    this.hoverState = null\n\n    return this\n  }\n\n  Tooltip.prototype.fixTitle = function () {\n    var $e = this.$element\n    if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {\n      $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')\n    }\n  }\n\n  Tooltip.prototype.hasContent = function () {\n    return this.getTitle()\n  }\n\n  Tooltip.prototype.getPosition = function ($element) {\n    $element   = $element || this.$element\n\n    var el     = $element[0]\n    var isBody = el.tagName == 'BODY'\n\n    var elRect    = el.getBoundingClientRect()\n    if (elRect.width == null) {\n      // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093\n      elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })\n    }\n    var isSvg = window.SVGElement && el instanceof window.SVGElement\n    // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.\n    // See https://github.com/twbs/bootstrap/issues/20280\n    var elOffset  = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset())\n    var scroll    = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }\n    var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null\n\n    return $.extend({}, elRect, scroll, outerDims, elOffset)\n  }\n\n  Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {\n    return placement == 'bottom' ? { top: pos.top + pos.height,   left: pos.left + pos.width / 2 - actualWidth / 2 } :\n           placement == 'top'    ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n           placement == 'left'   ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :\n        /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }\n\n  }\n\n  Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {\n    var delta = { top: 0, left: 0 }\n    if (!this.$viewport) return delta\n\n    var viewportPadding = this.options.viewport && this.options.viewport.padding || 0\n    var viewportDimensions = this.getPosition(this.$viewport)\n\n    if (/right|left/.test(placement)) {\n      var topEdgeOffset    = pos.top - viewportPadding - viewportDimensions.scroll\n      var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight\n      if (topEdgeOffset < viewportDimensions.top) { // top overflow\n        delta.top = viewportDimensions.top - topEdgeOffset\n      } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow\n        delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset\n      }\n    } else {\n      var leftEdgeOffset  = pos.left - viewportPadding\n      var rightEdgeOffset = pos.left + viewportPadding + actualWidth\n      if (leftEdgeOffset < viewportDimensions.left) { // left overflow\n        delta.left = viewportDimensions.left - leftEdgeOffset\n      } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow\n        delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset\n      }\n    }\n\n    return delta\n  }\n\n  Tooltip.prototype.getTitle = function () {\n    var title\n    var $e = this.$element\n    var o  = this.options\n\n    title = $e.attr('data-original-title')\n      || (typeof o.title == 'function' ? o.title.call($e[0]) :  o.title)\n\n    return title\n  }\n\n  Tooltip.prototype.getUID = function (prefix) {\n    do prefix += ~~(Math.random() * 1000000)\n    while (document.getElementById(prefix))\n    return prefix\n  }\n\n  Tooltip.prototype.tip = function () {\n    if (!this.$tip) {\n      this.$tip = $(this.options.template)\n      if (this.$tip.length != 1) {\n        throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')\n      }\n    }\n    return this.$tip\n  }\n\n  Tooltip.prototype.arrow = function () {\n    return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))\n  }\n\n  Tooltip.prototype.enable = function () {\n    this.enabled = true\n  }\n\n  Tooltip.prototype.disable = function () {\n    this.enabled = false\n  }\n\n  Tooltip.prototype.toggleEnabled = function () {\n    this.enabled = !this.enabled\n  }\n\n  Tooltip.prototype.toggle = function (e) {\n    var self = this\n    if (e) {\n      self = $(e.currentTarget).data('bs.' + this.type)\n      if (!self) {\n        self = new this.constructor(e.currentTarget, this.getDelegateOptions())\n        $(e.currentTarget).data('bs.' + this.type, self)\n      }\n    }\n\n    if (e) {\n      self.inState.click = !self.inState.click\n      if (self.isInStateTrue()) self.enter(self)\n      else self.leave(self)\n    } else {\n      self.tip().hasClass('in') ? self.leave(self) : self.enter(self)\n    }\n  }\n\n  Tooltip.prototype.destroy = function () {\n    var that = this\n    clearTimeout(this.timeout)\n    this.hide(function () {\n      that.$element.off('.' + that.type).removeData('bs.' + that.type)\n      if (that.$tip) {\n        that.$tip.detach()\n      }\n      that.$tip = null\n      that.$arrow = null\n      that.$viewport = null\n      that.$element = null\n    })\n  }\n\n  Tooltip.prototype.sanitizeHtml = function (unsafeHtml) {\n    return sanitizeHtml(unsafeHtml, this.options.whiteList, this.options.sanitizeFn)\n  }\n\n  // TOOLTIP PLUGIN DEFINITION\n  // =========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.tooltip')\n      var options = typeof option == 'object' && option\n\n      if (!data && /destroy|hide/.test(option)) return\n      if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.tooltip\n\n  $.fn.tooltip             = Plugin\n  $.fn.tooltip.Constructor = Tooltip\n\n\n  // TOOLTIP NO CONFLICT\n  // ===================\n\n  $.fn.tooltip.noConflict = function () {\n    $.fn.tooltip = old\n    return this\n  }\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: popover.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#popovers\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // POPOVER PUBLIC CLASS DEFINITION\n  // ===============================\n\n  var Popover = function (element, options) {\n    this.init('popover', element, options)\n  }\n\n  if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')\n\n  Popover.VERSION  = '3.4.1'\n\n  Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {\n    placement: 'right',\n    trigger: 'click',\n    content: '',\n    template: '<div class=\"popover\" role=\"tooltip\"><div class=\"arrow\"></div><h3 class=\"popover-title\"></h3><div class=\"popover-content\"></div></div>'\n  })\n\n\n  // NOTE: POPOVER EXTENDS tooltip.js\n  // ================================\n\n  Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)\n\n  Popover.prototype.constructor = Popover\n\n  Popover.prototype.getDefaults = function () {\n    return Popover.DEFAULTS\n  }\n\n  Popover.prototype.setContent = function () {\n    var $tip    = this.tip()\n    var title   = this.getTitle()\n    var content = this.getContent()\n\n    if (this.options.html) {\n      var typeContent = typeof content\n\n      if (this.options.sanitize) {\n        title = this.sanitizeHtml(title)\n\n        if (typeContent === 'string') {\n          content = this.sanitizeHtml(content)\n        }\n      }\n\n      $tip.find('.popover-title').html(title)\n      $tip.find('.popover-content').children().detach().end()[\n        typeContent === 'string' ? 'html' : 'append'\n      ](content)\n    } else {\n      $tip.find('.popover-title').text(title)\n      $tip.find('.popover-content').children().detach().end().text(content)\n    }\n\n    $tip.removeClass('fade top bottom left right in')\n\n    // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do\n    // this manually by checking the contents.\n    if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()\n  }\n\n  Popover.prototype.hasContent = function () {\n    return this.getTitle() || this.getContent()\n  }\n\n  Popover.prototype.getContent = function () {\n    var $e = this.$element\n    var o  = this.options\n\n    return $e.attr('data-content')\n      || (typeof o.content == 'function' ?\n        o.content.call($e[0]) :\n        o.content)\n  }\n\n  Popover.prototype.arrow = function () {\n    return (this.$arrow = this.$arrow || this.tip().find('.arrow'))\n  }\n\n\n  // POPOVER PLUGIN DEFINITION\n  // =========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.popover')\n      var options = typeof option == 'object' && option\n\n      if (!data && /destroy|hide/.test(option)) return\n      if (!data) $this.data('bs.popover', (data = new Popover(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.popover\n\n  $.fn.popover             = Plugin\n  $.fn.popover.Constructor = Popover\n\n\n  // POPOVER NO CONFLICT\n  // ===================\n\n  $.fn.popover.noConflict = function () {\n    $.fn.popover = old\n    return this\n  }\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: scrollspy.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#scrollspy\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // SCROLLSPY CLASS DEFINITION\n  // ==========================\n\n  function ScrollSpy(element, options) {\n    this.$body          = $(document.body)\n    this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)\n    this.options        = $.extend({}, ScrollSpy.DEFAULTS, options)\n    this.selector       = (this.options.target || '') + ' .nav li > a'\n    this.offsets        = []\n    this.targets        = []\n    this.activeTarget   = null\n    this.scrollHeight   = 0\n\n    this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))\n    this.refresh()\n    this.process()\n  }\n\n  ScrollSpy.VERSION  = '3.4.1'\n\n  ScrollSpy.DEFAULTS = {\n    offset: 10\n  }\n\n  ScrollSpy.prototype.getScrollHeight = function () {\n    return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)\n  }\n\n  ScrollSpy.prototype.refresh = function () {\n    var that          = this\n    var offsetMethod  = 'offset'\n    var offsetBase    = 0\n\n    this.offsets      = []\n    this.targets      = []\n    this.scrollHeight = this.getScrollHeight()\n\n    if (!$.isWindow(this.$scrollElement[0])) {\n      offsetMethod = 'position'\n      offsetBase   = this.$scrollElement.scrollTop()\n    }\n\n    this.$body\n      .find(this.selector)\n      .map(function () {\n        var $el   = $(this)\n        var href  = $el.data('target') || $el.attr('href')\n        var $href = /^#./.test(href) && $(href)\n\n        return ($href\n          && $href.length\n          && $href.is(':visible')\n          && [[$href[offsetMethod]().top + offsetBase, href]]) || null\n      })\n      .sort(function (a, b) { return a[0] - b[0] })\n      .each(function () {\n        that.offsets.push(this[0])\n        that.targets.push(this[1])\n      })\n  }\n\n  ScrollSpy.prototype.process = function () {\n    var scrollTop    = this.$scrollElement.scrollTop() + this.options.offset\n    var scrollHeight = this.getScrollHeight()\n    var maxScroll    = this.options.offset + scrollHeight - this.$scrollElement.height()\n    var offsets      = this.offsets\n    var targets      = this.targets\n    var activeTarget = this.activeTarget\n    var i\n\n    if (this.scrollHeight != scrollHeight) {\n      this.refresh()\n    }\n\n    if (scrollTop >= maxScroll) {\n      return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)\n    }\n\n    if (activeTarget && scrollTop < offsets[0]) {\n      this.activeTarget = null\n      return this.clear()\n    }\n\n    for (i = offsets.length; i--;) {\n      activeTarget != targets[i]\n        && scrollTop >= offsets[i]\n        && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])\n        && this.activate(targets[i])\n    }\n  }\n\n  ScrollSpy.prototype.activate = function (target) {\n    this.activeTarget = target\n\n    this.clear()\n\n    var selector = this.selector +\n      '[data-target=\"' + target + '\"],' +\n      this.selector + '[href=\"' + target + '\"]'\n\n    var active = $(selector)\n      .parents('li')\n      .addClass('active')\n\n    if (active.parent('.dropdown-menu').length) {\n      active = active\n        .closest('li.dropdown')\n        .addClass('active')\n    }\n\n    active.trigger('activate.bs.scrollspy')\n  }\n\n  ScrollSpy.prototype.clear = function () {\n    $(this.selector)\n      .parentsUntil(this.options.target, '.active')\n      .removeClass('active')\n  }\n\n\n  // SCROLLSPY PLUGIN DEFINITION\n  // ===========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.scrollspy')\n      var options = typeof option == 'object' && option\n\n      if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.scrollspy\n\n  $.fn.scrollspy             = Plugin\n  $.fn.scrollspy.Constructor = ScrollSpy\n\n\n  // SCROLLSPY NO CONFLICT\n  // =====================\n\n  $.fn.scrollspy.noConflict = function () {\n    $.fn.scrollspy = old\n    return this\n  }\n\n\n  // SCROLLSPY DATA-API\n  // ==================\n\n  $(window).on('load.bs.scrollspy.data-api', function () {\n    $('[data-spy=\"scroll\"]').each(function () {\n      var $spy = $(this)\n      Plugin.call($spy, $spy.data())\n    })\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: tab.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#tabs\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // TAB CLASS DEFINITION\n  // ====================\n\n  var Tab = function (element) {\n    // jscs:disable requireDollarBeforejQueryAssignment\n    this.element = $(element)\n    // jscs:enable requireDollarBeforejQueryAssignment\n  }\n\n  Tab.VERSION = '3.4.1'\n\n  Tab.TRANSITION_DURATION = 150\n\n  Tab.prototype.show = function () {\n    var $this    = this.element\n    var $ul      = $this.closest('ul:not(.dropdown-menu)')\n    var selector = $this.data('target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n    }\n\n    if ($this.parent('li').hasClass('active')) return\n\n    var $previous = $ul.find('.active:last a')\n    var hideEvent = $.Event('hide.bs.tab', {\n      relatedTarget: $this[0]\n    })\n    var showEvent = $.Event('show.bs.tab', {\n      relatedTarget: $previous[0]\n    })\n\n    $previous.trigger(hideEvent)\n    $this.trigger(showEvent)\n\n    if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return\n\n    var $target = $(document).find(selector)\n\n    this.activate($this.closest('li'), $ul)\n    this.activate($target, $target.parent(), function () {\n      $previous.trigger({\n        type: 'hidden.bs.tab',\n        relatedTarget: $this[0]\n      })\n      $this.trigger({\n        type: 'shown.bs.tab',\n        relatedTarget: $previous[0]\n      })\n    })\n  }\n\n  Tab.prototype.activate = function (element, container, callback) {\n    var $active    = container.find('> .active')\n    var transition = callback\n      && $.support.transition\n      && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)\n\n    function next() {\n      $active\n        .removeClass('active')\n        .find('> .dropdown-menu > .active')\n        .removeClass('active')\n        .end()\n        .find('[data-toggle=\"tab\"]')\n        .attr('aria-expanded', false)\n\n      element\n        .addClass('active')\n        .find('[data-toggle=\"tab\"]')\n        .attr('aria-expanded', true)\n\n      if (transition) {\n        element[0].offsetWidth // reflow for transition\n        element.addClass('in')\n      } else {\n        element.removeClass('fade')\n      }\n\n      if (element.parent('.dropdown-menu').length) {\n        element\n          .closest('li.dropdown')\n          .addClass('active')\n          .end()\n          .find('[data-toggle=\"tab\"]')\n          .attr('aria-expanded', true)\n      }\n\n      callback && callback()\n    }\n\n    $active.length && transition ?\n      $active\n        .one('bsTransitionEnd', next)\n        .emulateTransitionEnd(Tab.TRANSITION_DURATION) :\n      next()\n\n    $active.removeClass('in')\n  }\n\n\n  // TAB PLUGIN DEFINITION\n  // =====================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.tab')\n\n      if (!data) $this.data('bs.tab', (data = new Tab(this)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.tab\n\n  $.fn.tab             = Plugin\n  $.fn.tab.Constructor = Tab\n\n\n  // TAB NO CONFLICT\n  // ===============\n\n  $.fn.tab.noConflict = function () {\n    $.fn.tab = old\n    return this\n  }\n\n\n  // TAB DATA-API\n  // ============\n\n  var clickHandler = function (e) {\n    e.preventDefault()\n    Plugin.call($(this), 'show')\n  }\n\n  $(document)\n    .on('click.bs.tab.data-api', '[data-toggle=\"tab\"]', clickHandler)\n    .on('click.bs.tab.data-api', '[data-toggle=\"pill\"]', clickHandler)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: affix.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#affix\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // AFFIX CLASS DEFINITION\n  // ======================\n\n  var Affix = function (element, options) {\n    this.options = $.extend({}, Affix.DEFAULTS, options)\n\n    var target = this.options.target === Affix.DEFAULTS.target ? $(this.options.target) : $(document).find(this.options.target)\n\n    this.$target = target\n      .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))\n      .on('click.bs.affix.data-api',  $.proxy(this.checkPositionWithEventLoop, this))\n\n    this.$element     = $(element)\n    this.affixed      = null\n    this.unpin        = null\n    this.pinnedOffset = null\n\n    this.checkPosition()\n  }\n\n  Affix.VERSION  = '3.4.1'\n\n  Affix.RESET    = 'affix affix-top affix-bottom'\n\n  Affix.DEFAULTS = {\n    offset: 0,\n    target: window\n  }\n\n  Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {\n    var scrollTop    = this.$target.scrollTop()\n    var position     = this.$element.offset()\n    var targetHeight = this.$target.height()\n\n    if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false\n\n    if (this.affixed == 'bottom') {\n      if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'\n      return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'\n    }\n\n    var initializing   = this.affixed == null\n    var colliderTop    = initializing ? scrollTop : position.top\n    var colliderHeight = initializing ? targetHeight : height\n\n    if (offsetTop != null && scrollTop <= offsetTop) return 'top'\n    if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'\n\n    return false\n  }\n\n  Affix.prototype.getPinnedOffset = function () {\n    if (this.pinnedOffset) return this.pinnedOffset\n    this.$element.removeClass(Affix.RESET).addClass('affix')\n    var scrollTop = this.$target.scrollTop()\n    var position  = this.$element.offset()\n    return (this.pinnedOffset = position.top - scrollTop)\n  }\n\n  Affix.prototype.checkPositionWithEventLoop = function () {\n    setTimeout($.proxy(this.checkPosition, this), 1)\n  }\n\n  Affix.prototype.checkPosition = function () {\n    if (!this.$element.is(':visible')) return\n\n    var height       = this.$element.height()\n    var offset       = this.options.offset\n    var offsetTop    = offset.top\n    var offsetBottom = offset.bottom\n    var scrollHeight = Math.max($(document).height(), $(document.body).height())\n\n    if (typeof offset != 'object')         offsetBottom = offsetTop = offset\n    if (typeof offsetTop == 'function')    offsetTop    = offset.top(this.$element)\n    if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)\n\n    var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)\n\n    if (this.affixed != affix) {\n      if (this.unpin != null) this.$element.css('top', '')\n\n      var affixType = 'affix' + (affix ? '-' + affix : '')\n      var e         = $.Event(affixType + '.bs.affix')\n\n      this.$element.trigger(e)\n\n      if (e.isDefaultPrevented()) return\n\n      this.affixed = affix\n      this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null\n\n      this.$element\n        .removeClass(Affix.RESET)\n        .addClass(affixType)\n        .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')\n    }\n\n    if (affix == 'bottom') {\n      this.$element.offset({\n        top: scrollHeight - height - offsetBottom\n      })\n    }\n  }\n\n\n  // AFFIX PLUGIN DEFINITION\n  // =======================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.affix')\n      var options = typeof option == 'object' && option\n\n      if (!data) $this.data('bs.affix', (data = new Affix(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.affix\n\n  $.fn.affix             = Plugin\n  $.fn.affix.Constructor = Affix\n\n\n  // AFFIX NO CONFLICT\n  // =================\n\n  $.fn.affix.noConflict = function () {\n    $.fn.affix = old\n    return this\n  }\n\n\n  // AFFIX DATA-API\n  // ==============\n\n  $(window).on('load', function () {\n    $('[data-spy=\"affix\"]').each(function () {\n      var $spy = $(this)\n      var data = $spy.data()\n\n      data.offset = data.offset || {}\n\n      if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom\n      if (data.offsetTop    != null) data.offset.top    = data.offsetTop\n\n      Plugin.call($spy, data)\n    })\n  })\n\n}(jQuery);\n"
  },
  {
    "path": "doc/manual/alt_layouts.md",
    "content": "---\ntitle: Alt Layouts \nlayout: page \nauthor: Jay Shafstall\n---\n\nAlt Layouts are for when you want to create more than one physical .html file per .md file.  This is most useful when the additional .html files do not depend on the content of the original page, but on the front matter attributes.\n\n# Usage\n\nTo enable alt layouts for a .md file, add an `alt_layouts` attribute to the front matter of a page.  This is a list of objects containing two attributes, `layout` and `location`.\n\nThe `layout` attribute gives the name of an alternate layout to use.  The `location` attribute gives the directory where the .html file should be put.  That directory must already exist in your directory structure.\n\nAlso add either `items_index` or `items_filter` to say where the list of it\n\n# Example\n\nThe following is a sample of generating two additional .html files for a product page:\n\n```\nlayout: product\n\nalt_layouts:\n    - layout: confirmation\n      location: confirmations\n    - layout: product_details\n      location: details\n```\n\nIf the original foo.md file was in the products directory, three .html files would be generated:\n\n```\nproducts/foo.html\nconfirmations/foo.html\ndetails/foo.html\n```\n"
  },
  {
    "path": "doc/manual/authoring.md",
    "content": "---\ntitle: Authoring\nlayout: page \npager: true\nauthor: Jan Decaluwe\n---\n\nContent \n=======\n\nIn Urubu, content is entered in [markdown] format. This is a lightweight format\nthat feels like a natural way to write content in plain text.\n\nStock markdown has a small feature set. For example, it does not even\nsupport tables. For this reason, Urubu supports some extensions. In particular,\nit supports the [markdown_extra] extensions that have become an industry\nstandard, as well as a few others.\n\nThe most notable supported extensions are:\n\n* [tables]\n* [attr_list]\n* [abbrev]\n* [def_list]\n* [fenced_code] \n* [code_hilite]\n\nCode\n====\n\nUrubu intents to offer good support for software projects. Therefore, it\nsupports nicely rendered code blocks. \n\nOne part of the solution is [fenced_code], provided by the Markdown Extra\nextensions.  This lets you enter language-specific code blocks without the need\nfor indentation.\n\nThe second part is the [code_hilite] extension of Python-Markdown.  This\nextension enables language-specific syntax highlighting through the [pygments]\nlibrary.\n\nTo properly render the highlighted code, you will need to add a `syntax.css`\nstylesheet. A good solution is to use the [syntax stylesheet from\nGitHub][syntax_github].\n\n[syntax_github]: https://github.com/mojombo/tpw/blob/master/css/syntax.css\n\nReference links\n===============\n\nStock Markdown supports \"reference links\" that are resolved by defining them\nlater in the file. For example, you can use `[urubu]` in your content and\nfurther on define it as follows:\n\n```\n[urubu]: http://urubu.jandecaluwe.com\n```\n\nThis is nice for readability, but it all remains file based.\n\nUrubu extends this behavior by automatically resolving [structure#Project-wide\nreference ids].  This feature is implemented as a Markdown extension. Note that\nit doesn't require a syntax change. It enables page linking like in wikis.\n\nIn addition, you can add a fragment, like `#some-anchor`, to the reference id.\nThis represents a link to an anchor within a page.  Since Urubu automatically\nadds slugified anchors to markdown headers, you can use those as targets.  For\ninstance, `[authoring#reference-links]` is a link to the current\n[authoring#Reference links] section.  You can also define your own anchors\nusing [attr_list]. \n\nMarkdown supports reference links without a text.  In that case, Urubu inserts\nan appropriate text in the html.  For a reference link with no fragment, the\ntitle of the page is inserted.  For a reference link with a fragment, the\nfragment text is inserted. To make the result more readable, you can use\nnon-slugified fragment text.  For example, `[authoring#Reference links]` also\nlinks to the present section, and is rendered as [authoring#Reference links]. \n"
  },
  {
    "path": "doc/manual/building.md",
    "content": "---\ntitle: Project building \nlayout: page \npager: true\nauthor: Jan Decaluwe\n---\n\nThe `urubu` command\n===================\n\nAfter installation, an `urubu` command will be available.\n\nIf you prefer, you can call the installed package as a script using `python -m\nurubu`, with the same effect.\n\nSubcommands\n===========\n\nThe `urubu` command supports two subcommands. Run these commands from the top\nlevel project directory.\n\n`urubu build`\n: Build the website.  The website will be in the `_build` subdirectory.\n\n`urubu serve` \n: Start a local webserver to serve the website as you develop it.  The website\nwill be available at `localhost:8000`. Run this command in a separate terminal\nwindow, and kill the server when you are done.\n\nDevelopment flow\n================\n\nI prefer to put the  commands in a Makefile, so that I can\nrun `make` to build and `make serve` to start a server.\n\nCurrently, you have to build the site explicitly to see\nthe development changes in the browser.\n\n"
  },
  {
    "path": "doc/manual/extensions.md",
    "content": "---\ntitle: Markdown extensions\nlayout: page \npager: true\nauthor: Jan Decaluwe\n---\n\nIntroduction\n============\n\nUrubu implements a number of Markdown extensions. These extensions do not\nchange or extend the Markdown syntax. Rather, they add interesting features by\nprocessing and rendering the Markdown source in more sophisticated ways. \n\nThe extensions are described in more detail below.\n\nProject-wide reference ids\n==========================\n\nUrubu implements a Markdown extension to resolve project-wide reference ids.\nThis means that all pages in the project are automatically available as\nreference ids, and can be referred to using Markdown's syntax for reference\nlinks.\n\nThis feature is described in more detail in the sections\n[/manual/structure#Project-wide reference ids] and [/manual/authoring#Reference\nlinks]. It is Urubu's most important extension and a fundamental feature of the\ntool.\n\nBootstrap-specific extensions\n=============================\n\nUrubu is designed to play well with [bootstrap].  To use certain Bootstrap\nfeatures, it has extensions that add Bootstrap classes to certain tags.\nMore specifically, the following classes are added:\n\ntable\n:   Added to the `<table>` tag. This defines basic styling for tables.\n\ndl-horizontal\n:   Added to the `<dl>` tag that defines definition lists. This creates \na horizontal layout for definition lists in wide viewports.\n\nSupport for the `mark` tag\n==========================\n\nThe html5 specification added _a new tag to highlight text_: the `<mark>`\ntag. For a good explanation of its purpose and the differences with the\n`<strong>` and `<em>` tags, see [this answer on Stack Overflow][mark]. \n\n[mark]: http://stackoverflow.com/a/14741437\n\nUrubu supports lightweight markup for this tag by taking advantage of a\nredundancy in Markdown. In standard Markdown, you can either use asterisks\n(`*`) or underscores (`_`) to indicate emphasis. With the Urubu extension, the\nunderscore (`_`) version is rendered using `<mark>` instead.\n\nThis is an experimental feature that may be taken out if there are\nserious objections, although at this point there do not seem to be\ndisadvantages. To disable the feature, the `mark_tag_support` variable\ncan be set to `false` in the `_site.yml` file. \n\n"
  },
  {
    "path": "doc/manual/hooks.md",
    "content": "---\ntitle: Python hooks\nlayout: page\npager: true\nauthor: Jan Decaluwe\n---\n\nIntroduction\n=============\n\nUrubu supports Python hooks to make templating easier. Upon a build, it tries\nto import a `_python` module or package, and looks for hook variables with\npredefined names.  The following hooks are defined:\n\nVariable              | Description\n----------------------|-------------\n`filters`             | A mapping from filter names to filter functions.\n`process_info`        | A function to inspect and process content file info.\n\nYou have to make sure that these names are exported correctly.  For example, if\nyou organize `_python` as a package, it could look as follows:\n\n```\n_python/\n    __init__.py\n    filters.py\n    hooks.py\n```\n\nIf `filters` is defined in `filters.py`, and `process_info` in `hooks.py`, the\n`__init__.py` file would contain:\n\n```\nfrom .filters import filters\nfrom .hooks import process_info\n```\n\nThe `filters` hook\n==================\n\nFilters functions should be defined as [custom filters in\nJinja2][jinja2_filters].\n\n[jinja2_filters]: http://jinja.pocoo.org/docs/api/#custom-filters\n\nAs a typical example, consider a filter that converts a date value into a\ndesired format. The `filters.py` module would contain the following:\n\n```\ndef dateformat(value, format=\"%d-%b-%Y\"):\n    return value.strftime(format)\n\nfilters = {}\nfilters['dateformat'] = dateformat\n```\n\nYou can then use the `dateformat` filter in templates.\n\nThe `process_info` hook\n=======================\n\nThe interface of the `process_info` function is as follows:\n\n```\ndef process(info, site):\n    ...\n```\n\nThis function is called for every content file in the project.\n\nThe `site` variable provides access to the site variables defined in\n`_site.yml`.\n\nThe `info` variable contains the file content info as it is being\nconstructed by Urubu. At the moment of the call, the following\ninferred attributes are available:\n\nAttribute      | Description\n---------------|---------------------------\n`id`           | The unique id by which the object is known in the project.\n`url`          | The url of the object.\n`components`   | The components of the object's pathname, without file extension, as a list.\n`fn`           | The pathname of the file or directory corresponding the object.\n`mdate`        | Modification date\n\nIn addition, all attributes specified in the YAML front matter of the\ncorresponding content file are available as attributes of the `info` object.\n\nThe `site` and `info` variables are Python dictionaries. This means that the\nattributes are available via key access, not via Python attribute access.  This\nis because the YAML reader constructs Python dictionaries from the front\nmatter.\n\nThe `process_info` function can can inspect the attributes, verify and modify\nthem, and add additional ones.\n\n`process_info` examples\n=======================\n\nDefining a default `layout`\n---------------------------\n\nIt can be handy to define a default `layout` for the case this mandatory\nattribute is not specified in the content file.  Suppose we want a default\n`index` layout for index files, and a `page` layout for other files:\n\n```\ndef process_info(info, site):\n    if 'layout' not in info:\n        if info['components'][-1] == 'index':\n            info['layout'] = 'index'\n        else:\n            info['layout'] = 'page'\n```\n\nDefining a specific layout\n--------------------------\n\nSuppose we have a `blog` directory and we want to automatically define a\nspecific `post` layout for blog posts:\n\n```\ndef process_info(info, site):\n    components = info['components']\n    if len(components) == 2:\n        if components[0] == 'blog' and components[1] != 'index':\n            process_post(info)\n\ndef process_post(info):\n    if not 'layout' in info:\n        info['layout'] = 'post'\n```\n\n\n\n\n\n"
  },
  {
    "path": "doc/manual/index.md",
    "content": "---\ntitle: Manual \nlayout: index\ncontent:\n    - intro \n    - install\n    - structure\n    - authoring\n    - building\n    - templates\n    - templating-in-pages\n    - hooks\n    - extensions\n    - search\n    - pagination\n    - alt_layouts\n---\n\n"
  },
  {
    "path": "doc/manual/install.md",
    "content": "---\ntitle: Installation\nlayout: page \npager: true\ndate: 2014-01-10\n---\n\nUrubu works with modern versions of Python 2 and Python 3 using the same\ncodebase. More specifically, it requires Python 2.7 or Python 3.4.\n\nYou can install Urubu using pip: \n\n```\npip install urubu\n```\n\nTo upgrade an existing installation to the\nlatest version, use:\n\n```\npip install --upgrade urubu\n```\n\nIf pip is not yet available on your system, follow the [pip installation\ninstructions][pip_install].\n\n[pip_install]: http://www.pip-installer.org/en/latest/installing.html\n\nYou may want to install Urubu in an isolated environment using [virtualenv].\n\nUrubu depends on a number of libraries that will automatically be installed if\nnot yet available: [python_markdown], [pyyaml], [pygments] and [jinja2].\n\nFor a quick way to set up a new Urubu project, visit [urubu-quickstart].\n"
  },
  {
    "path": "doc/manual/intro.md",
    "content": "---\ntitle: Concepts \nlayout: page \npager: true\nauthor: Jan Decaluwe\n---\n\nIntroduction\n============\n\nWelcome to Urubu! My name is Jan Decaluwe and I am Urubu's author.\n\nUrubu is a micro CMS for static websites.  The qualification \"micro* means that\nit has a small feature set, defined by what I need for my purposes.  To know\nwhether it is the right tool for you, check out [/start]. \n\n*[CMS]: Content Management System\n\nUrubu's design philosophy is radical reuse of great software and ideas from\nothers. In the following sections, I will describe its concepts and how\nthey are implemented.\n\nAuthoring\n=========\n\nIn Urubu, content is entered in [markdown] format. This is a lightweight format\nthat feels like a natural way to write content in plain text.\n\nMarkdown support in Urubu is implemented by the [python_markdown] package, that\nconverts the format to html. Urubu also supports the industry standard\n[markdown_extra] extensions, with useful features such as tables and definition\nlists.\n\nUrubu supports nicely rendered code blocks, an essential feature for software\nprojects documentation. [fenced_code] are provided by the Markdown Extra\nextensions.  This lets you enter language-specific code blocks without the need\nfor indentation. The [code_hilite] extension of Python-Markdown enables\nlanguage-specific syntax highlighting via the [pygments] library.\n\nConfiguration\n=============\n\nThe configuration options in Urubu are kept minimal, in the spirit of \"There\nshould be one obvious way to do it\".  Where used, the configuration format is\nYAML, implemented by the [pyyaml] library.\n\nConfiguration is mostly distributed, in the sense that every content file\nshould have a *front matter*, that specifies the title, layout, date and so on.\nThis idea is found in many tools, but Urubu reuses the technique from [jekyll].\nYAML front matter is specified between two sets of triple dashes.\n\nUrubu extends this configuration technique by treating index files specially.\nEach folder in the site should have an index file (called `index.md`) that\nspecifies the ordered folder content. This can be done explicitly by listing\nthe files, or implicitly by specifying how the files should be ordered. \n\nTemplating\n==========\n\nWith templates you specify the html layout for a particular type of a page.\nIn a template you can mix plain html with control structures and variable\ninterpolation. The actual html page is generated by evaluating the template\nwith the appropriate evaluation context provided by Urubu.\n\nUrubu uses the [jinja2] templating language library.\n\n\nTheming\n=======\n\nA theme refers to the general look and feel of a web site. Partially this is\ndefined by the templates as discussed above. The other part is defined in style\nsheets, with a technique known as Cascading Style Sheets (CSS). Basically\nthis is a sophisticated technique to define how the various html elements\nshould be rendered by the web browser.\n\nWith Urubu, you are free to design and use your own style sheets. However, it\nhas been developed with [bootstrap] in mind.  Bootstrap is a\nprofessionally-designed framework with lots of useful predefined styles\ncomponents. Urubu generates html that is Bootstrap-friendly, and infers the\nappropriate template variables for certain Bootstrap components. \n\nA great feature of Bootstrap is that it is \"mobile first\". This means that your\nwebsite will automatically adapt to any platform - smartphone, tablet or\nwidescreen.\n\nA notable project is [bootswatch]. This is a set of themes designed as drop-in\nreplacement for the stock bootstrap styles. This gives you an effortless\noption to change the look and feel of your website.\n\nNavigation\n==========\n\nI am a big fan of Steve Krug's book [Don't make me think][dmmt],\nand I feel that the lessons from this book are still often ignored.\nActually, the lack of focus of other tools on these ideas are the\nmain reason why I wrote Urubu.\n\n[dmmt]: http://www.amazon.com/Dont-Make-Me-Think-Usability/dp/0321344758\n\nA main concept is good navigation. Urubu supports various techniques\nby inferring navigation-oriented variables and making them available to\nthe template engine. Moreover, they work well with some well-defined\nand nicely style [bootstrap] navigation components. In this way,\nyou can easily implement the following:\n\n* a navbar for navigation between major sections\n* table of contents of a page in a sidebar\n* breadcrumbs\n* previous and next pager buttons\n* active page or section highlighting \n\nOther techniques, independent from Urubu, can also help. Note for example that\nthe sidebar on this page is \"affixed\": it moves as you scroll through the page,\nbut never leaves the viewport. (Note: this description assumes that the\nviewport is wide enough to accomodate the sidebar.) At any time, the full\nstructure of the page remains visible and available for navigation. This was\nimplemented by borrowing code from the [bootstrap] theme.\n\nProject-wide reference ids \n==========================\n\nMarkdown defines the concept of a reference link. This is a way to refer to a\npage or an url using a reference id.  The syntax of a reference link is a\nreference id between square brackets, for example `[intro]`. \n\nUrubu supports the concept of project-wide reference ids.  First, global\nreference ids can be defined in the site configuration file.  Moreover, all\ncontent pages and folders have a corresponding reference id: their pathname\nwithout extension. In this case, reference links are similar to wiki links, the\ntypical way to link between pages in wiki's.\n\nStandard Markdown only resolves reference ids that are defined within the file.\nUrubu extends this behavior by resolving them over the project.  This feature\nis implemented as a Markdown extension. Note that it doesn't require new syntax.\n\nProject-wide reference ids are a unique Urubu feature.\n\nOne of the messages of Steve Krug's book is that the text that you click should\nbe the title of the page where you land. Therefore, when you use reference\nlinks, Urubu will insert the page title in the generated html (unless you\nspecify an alternative text explicitly).\n\nDevelopment and deployment\n==========================\n\nYou can develop a Urubu project is like a software project, from a git or\nmercurial repository.  This gives you best-in-class revision control.\nMoreover, all the workflows that these systems provide are available. For\nexample, you can develop your website collaboratively on [github] or\n[bitbucket].  Finally, it is easy to automate deployment, triggered by a push\nof the generated site to an upstream repository. \n"
  },
  {
    "path": "doc/manual/pagination.md",
    "content": "---\ntitle: Pagination \nlayout: page \nauthor: Jay Shafstall\n---\n\nThere are times when an index file will contain more entries than you want to include in a single page.  Pagination allows Urubu to automatically split that page into separate pages in your site.\n\n# Usage\n\nTo enable pagination, add an `items_per_page` attribute to the front matter of an index page.  Also add either `items_index` or `items_filter` to say where the list of items should pull from.  \n\nTo pull from files in the current directory, with 5 items per page:\n\n```\nitems_per_page: 5\nitems_index: this\n```\n\nTo pull from a different index contents:\n\n```\nitems_per_page: 5\nitems_index: news\\index.md\n```\n\nTo filter the contents:\n\n```\nitems_per_page: 5\nitems_filter: mysteries time-loop\n```\n\n# New Page Variables\n\nEach of the pages generated by pagination will have three new variables available to layouts.\n\n`numpages` - the number of total pages generated  \n`prevpage` - the previous page in the chain  \n`nextpage` - the next page in the chain  \n\n## Example pagination controls\n\nThe following is a sample of generating pagination controls in a layout:\n\n```\n      {% if this.numpages %}\n\t\t\t            <div class=\"block-27\">\n\t\t\t              <ul>\n      {% if this.prevpage %}\n\t\t\t                <li><a href=\"{{this.prevpage.url}}\">&lt;</a></li>\n      {% endif %}\n      {% for page in this.pages %}\n      {% if page.pagenum == this.thispage %}\n\t\t\t                <li class=\"active\"><span>{{page.pagenum}}</span></li>\n      {% else %}\n\t\t\t                <li><a href=\"{{page.page.url}}\">{{page.pagenum}}</a></li>\n      {% endif %}\n      {% endfor %}\n      {% if this.nextpage %}\n\t\t\t                <li><a href=\"{{this.nextpage.url}}\">&gt;</a></li>\n      {% endif %}\n\t\t\t              </ul>\n\t\t\t            </div>\n      {% endif %}\n```\n"
  },
  {
    "path": "doc/manual/search.md",
    "content": "---\ntitle: Adding Search \nlayout: page \npager: true\nauthor: Jan Decaluwe\n---\n\nIntroduction\n============\n\nA static site cannot natively support dynamic services. Fortunately, it is\noften an elegant solution to integrate third party solutions within a\nstatic site.\n\nOne of the most prominent examples is Search. One possibility is integrating an\nexternal service such as Google Custom Search. The disadvantage is that one has\neither to pay for it or accept the branding.  \n\nAs an alternative, Urubu supports Tipue Search, an open source solution based\non javascript executed in the browser. As part of the site building, Urubu\ngenerates a view on the searchable content.  In this chapter, we describe how\nthe integration is accomplished.  \n\nInstalling Tipue Search\n=======================\n\nThe first step is to [download][1] the Tipue Search distribution. It contains a\n`tipuesearch` directory. Copy that directory to the top level of your project.\nAs usual, Urubu copies it to the built website, so that the required\nstylesheets and javascript files are available in the expected location.\n\nDo not rename the `tipuesearch` directory. The existence of that\ndirectory triggers Urubu's support. \n\nThe search box\n==============\n\nThe next step is to create a search box. Suppose you want to make it part of\nthe navbar, as in the present site. This is achieved with the following html\ncode: \n\n```\n<form class=\"navbar-form navbar-left\" action=\"/search.html\" role=\"search\">\n  <div class=\"form-group\">\n    <input type=\"text\" required name=\"q\" id=\"tipue_search_input\" class=\"form-control\" placeholder=\"Search\"> \n   </div>\n</form>\n```\n\nThe `name` and the `id` values in the `<input>` tag of the search box are\nmandatory for Tipue Search. The typical place for this code would be in the\nnavbar code in a basic layout for the site.\n\nThe search results page\n=======================\n\nThe next step is to create a search result page. To integrate it we first\ncreate a dedicated layout using template inheritance.  Let us assume that is\nthere is  a `head_addon` and a `body_addon` block to add links and scripts to\nthe `<head` and the `<body>` section respectively. The `search.html` layout is\nthen as follows:  \n\n```\n{% raw %}\n{% extends \"page.html\" %}\n\n{% block head_addon %}\n<link href=\"tipuesearch/tipuesearch.css\" rel=\"stylesheet\">\n{% endblock %}\n\n{% block body_addon %}\n<script src=\"tipuesearch/tipuesearch_content.js\"></script>\n<script src=\"tipuesearch/tipuesearch_set.js\"></script>\n<script src=\"tipuesearch/tipuesearch.min.js\"></script>\n<script>\n$(document).ready(function() {\n     $('#tipue_search_input').tipuesearch({\n          'mode': 'json',\n          'contentLocation': 'tipuesearch/tipuesearch_content.json' \n     });\n});\n</script>\n{% endblock %}\n{% endraw %}\n```\n\nWe inherit from a `page.html` layout. In the `head_addon` block, we add\nthe Tipue Search style sheet for the result page. In the `body_addon` page we\nadd the Tipue Search java script modules, and the inline script that generates\nthe results. \n\nThis setup assumes that the jQuery javascript library itself is already loaded\nin the body of the parent layout, with a line like the following: \n\n```\n<script src=\"https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js\"></script>\n```\n\nIf you use the Bootstrap javascript modules, that will be the case.\n\nIn the top level project directory, we can then create a `search.md` files that\nuses the `search.html` layout and has the generated search results as its\ncontent:\n\n```\n---\ntitle: Search results\nlayout: search\n---\n\n<div id=\"tipue_search_content\"></div>\n\n```\n\nAfter building the site, there will be a functional `search.html` file in the\ntop-level directory.\n\n**Note** The `tipuesearch.css` stylesheet also contains styling for the search\nbox. The result may be undesirable if you use your own styling, like in the\npresent website. The workaround is to comment the search box styling out. \n{.text-info}\n\nThe search content\n==================\n\nThe searchable content itself is a JSON object defined in the file\n`tipuesearch/tipuesearch_content.json`.  This is where Urubu kicks in: this\nfile is generated automatically. \n\nExtracting meaningful searchable content from a web site is not trivial. A\ndesign decision for Urubu was to use modern techniques to help with this. In\nparticular, Urubu will only consider content that is wrapped with the `<main>`\ntag. This is a relatively new html5 tag with exactly the purpose to indicate\nthe page content explicitly.\n\nThe site designer should therefore review the site layouts and wrap all\nsearchable content with the `<main>` tag. Typically, this is the region were\nthe `this.body` variable is called in a template.\n\n**Note** The `<main>` tag is not supported in IE11. A popular workaround is to\nuse the `html5shiv.js` Javascript module. Layouts based on Bootstrap do\nthis already.\n{.text-info}\n\n[1]: https://github.com/calfzhou/Tipue-Search\n"
  },
  {
    "path": "doc/manual/structure.md",
    "content": "---\ntitle: Project structure\nlayout: page\npager: true\nauthor: Jan Decaluwe\n---\n\nThe project directory\n=====================\n\nA typical Urubu project directory looks as follows:\n\n```\nMakefile\n_site.yml\n_layouts/_base.html\n         page.html\n         ...\n_python/__init__.py\n        validators.py\n        filters.py\ncss/...\njs/...\nindex.md\nfolder1/index.md\n        file1.md\n        pic1.png\n        ...\nfolder2/index.md\n        file2.md\n        file3.md\n        ...\n```\n\nFiles and directories with pathnames starting with an underscore `_` are\nspecial. They are used during processing, but excluded from the built website.\nTheir function will be discussed below.\n\nThe `css` and `js` directories are just an example of how CSS style sheets and\njavascript files could be organized. You can use any organization that you\nprefer.\n\nContent files are in Markdown format and should have the `.md` extension. You\nhave complete freedom in organizing them in directories. However, every\ndirectory should have an `index.md` file, including the top-level directory.\n\nProcessing rules\n================\n\nUrubu generates a website by processing the files and directory in the project\ndirectory, and putting the result in a `_build` subdirectory. The processing\ndepends on the pathname as follows:\n\n* a `Makefile` is ignored and not copied to the build.\n\n* files and directories starting with a dot `.` or\nunderscore `_` are ignored and not copied to the build.\n\n* Markdown files with extension `.md` are converted to a\nhtml file that is put into the build in the same relative location.\n\n* all other files and directories are copied unmodified to the build in the\nsame relative location.\n\nAs a result of the project organization and the build process, the structure of\nthe build matches the structure of the project directory.  The relative\nlocation of all files is thus preserved.\n\nSpecial files and directories\n=============================\n\n`_site.yml`\n-----------\n\nThis file contains site configuration info in YAML format.\nCurrently, these are the predefined attributes:\n\nAttribute           | Description\n--------------------|-------------\n`reflinks`          | Holds a mapping from reference ids to link objects.\n`baseurl`           | Prefix for generated local URLs\n`file_ext`          | Change default file extension (`'.html'`) for processed `.md` files\n`link_ext`          | Change default file extension (`'.html'`) for links to site's pages\n`ignore_patterns`   | List of additional file names or globs to be ignored during processing\n`keep_files`        | List of explicit file names be kept, overriding any ignores\n`strict_undefined`  | Set the default behavior regarding undefined template variables\n\n\nLink objects, for the `reflinks` attribute, are a mapping with an `url` key that maps\nto the link URL and a `title` key that maps to the link title.\n\nThe `baseurl` option mirrors the same feature in [Jekyll][jekyll-options].  It\nallows you to specify a prefix for all local URLs generated within your site.\nThis is necessary when your site will be served from a URL that has more than\njust the hostname. For example, on GitHub Pages sites are served from\nhttp://username.github.io/project_name/, so Urubu needs to include that\n`/project_name/` in generated URLs pointing to local content.\n\n`baseurl` should be specified with no beginning or trailing slashes, e.g.:\n\n```yaml\nbaseurl: prefix\n```\n[jekyll-options]: http://jekyllrb.com/docs/configuration/#serve-command-options\n\nThe file extension attributes, `file_ext` and `link_ext`, are both usually set to the\nsame value (i.e. `'.php'`), unless the target site has .htaccess rewrite rules that\naffect the file extensions.\n\nExamples of this are sites that internally redirect pages like `www.test.com/account`\nto `www.test.com/account.htm`. For this case, one would need to set `file_ext` to\n`'.htm'`, so Urubu generated files have the `.htm` extension, whereas `link_ext` would\nbe set to `''`, so that the `a href` links are directed to the files without extension.\n\nOtherwise, `file_ext` and `link_ext` should be set to the same extension, specially\nduring testing, so that the simple web server invoked by `urubu serve` works fine,\nas well as any web server that does not rewrite the file extensions of the requests.\n\nThe `ignore_patterns` attribute specifies glob-style patterns to be ignored\nduring processing, in addition to the default ones according to the\n[#Processing Rules].\n\nIn some cases you may explicitly want to keep certain files that would normally\nbe ignored. For example, you may have hidden files like `.nojekyll` to prevent\nJekyll processing, or `.htaccess` and `.htpasswd` for access control.  You can\nkeep such files in the build using the `keep_files` attribute.\n\nThe `strict_undefined` attribute controls whether the build should\nsilently ignore undefined template variables or raise an error when they are\nencountered. If `false` or undefined, undefined template variables are treated\nas empty strings (`''`). If `true`, the build will stop and raise an error.\n\nYou can define additional attributes that will be made available as\nsite variables to the template engine. The following is an example of a\n`_site.yml` file:\n\n```\nbrand: Urubu\n\nreflinks:\n    content_license:\n        url: http://creativecommons.org/licenses/by-sa/3.0/\n        title: CC-BY-SA License\n    software_license:\n        url: http://www.gnu.org/licenses/agpl-3.0.txt\n        title: GNU Affero General Public License\n    markdown:\n        url: http://daringfireball.net/projects/markdown/\n        title: Markdown\n\nfile_ext: '.htm'  # Change default file extension ('.html')\nlink_ext: '.htm'  # Change default link extension ('.html')\n```\n\n`_layouts`\n----------\n\nThis directory contains the available layouts.\nThey are used by the Jinja2 template engine to render html pages.\nThe layout files should have the `.html` extension.\n\n`_python`\n---------\nThis directory contains Python hooks for the template engine.\n\nProject-wide reference ids\n==========================\n\nUrubu has the concept of project-wide reference ids.  You can use them to refer\nto link objects in your content and configuration.  Their definition comes\nfrom two sources:\n\n* global reference ids are mapped to link objects in the `_site.yml`\nconfiguration file, as discussed earlier.\n* all content pages and folders objects have reference ids.\n\nProject-wide references ids live in a single namespace. For pages and folders,\nthe id is a root-relative pathname starting with a slash `/` and without file\nextension. By convention, global reference ids should not start with a `/`.\n\nIn your content and configuration info, you can also use relative reference\nids. Urubu will resolve them depending on the file location in the project. In\ncase of a name clash with a global reference id, you will have to disambiguate\nby adding pathname components.\n\nIn accordance with Markdown conventions, reference ids are case-insensitive.\n\nContent files\n=============\n\nContent files are Markdown files with extension `.md`. They should start with\nYAML front matter that defines a number of attributes, as in the following example:\n\n```\n---\ntitle: Read me first\nlayout: page\ndate: 2014-01-15\n---\n<Markdown content>\n```\n\nThe following attributes are predefined:\n\nAttribute | Description\n-----------|------------\n`title`    | Specifies the page title. Mandatory.\n`layout`   | Specifies the layout, without the `.html` extension, or `null`. Mandatory.\n`date`     | Specifies the date in YYYY-MM-DD format. Optional.\n`tags`     | A tag or list of tags for the content.\n`saveas`   | Allows overriding of the output filename.\n\nThe `layout` attribute is mandatory, but can be given a `null` value.\nThis is useful when the page content is used by other pages, but\nno html output is required for the page itself.\n\nIn addition, you can add arbitrary user-defined attributes. All attributes\nare made available as page object attributes to the template engine.\n\nMarkdown in attributes\n======================\n\nOptionally, you can use markdown format in front matter attributes.  Markdown\nprocessing is enabled by adding a `.md` suffix to the attribute. The resulting\nhtml code will be stored in a synthesized attribute without the `.md` suffix.\n\nFor example:\n\n```\n---\ntitle:\nlayout: page\nsummary.md: |\n    A summary of the page items as a list:\n\n    * item 1\n    * item 2\n    * item 3\n---\n```\n\nAfter processing, the page object will have a `summary` attribute with the html\ncode.\n\nIndex files\n===========\n\nIndex files with basename `index.md` are a special kind of content files.  They\nare used to specify the attributes and the content of a directory. There are\ntwo options to specify the content, explicitly with the `content` attribute or\nimplicitly using the `order` attribute.\n\nAttribute | Description\n-----------|------------\n`content`  | Defines the content explicitly as a list of reference ids or local link objects.\n`order`    | Defines the attribute by which the content in the directory should be ordered.\n`reverse`  | Optional boolean attribute defines reverse order or not. Default is `false`.\n\n`content` and `order` are mutually exclusive; you should use one of the two options.\n\nA local link object is a mapping with either a `url` key to an url, or a `ref`\nkey to a reference id as mandatory items. In addtion, you can specify a title\nwith a `title` key.\n\nThe ordering attribute can be predefined or user-defined, but it should be\nspecified in each content file in the directory.  As an example, you can\nspecify that the content of a directory should be ordered as blog by the\nfollowing front matter in the index file:\n\n```\n---\ntitle: Blog\nlayout: blog_index\norder: date\nreverse: true\n---\n```\n\nTag directory\n=============\n\nThe optional top-level directory called `tag` has a predefined meaning.  Urubu\nuses the corresponding folder in the build to hold the tag-related content view\nthat it generates automatically. You can use the index file to set attributes\nsuch as the `layout`. However, the content will be generated by Urubu\nautomatically and needs not be set.\n\n\n"
  },
  {
    "path": "doc/manual/templates.md",
    "content": "---\ntitle: Templates\nlayout: page \npager: true\nauthor: Jan Decaluwe\n---\n\nOverview\n========\n\nTemplates define the html layout for a particular page type.  In a template you\ncan mix plain html with control structures and variable interpolation. The html\npage is generated by evaluating the template with the appropriate evaluation\ncontext, provided by Urubu.\n\nTemplates are part of the website project setup. If you are a content\ncontributor, you may not have to worry about them.  All you have to do is\nspecify the appropriate layout name in the YAML front matter of your content\nfiles.\n\nIn general, it is better to do programming in Python code.  However, for the\npurpose of generation of pages in a format such as html, this is not very\npractical.  Therefore, a template contains both html and programming\nconstructs. Template programming is good for common tasks like the following:\n\n* iteration over a list of items\n* testing whether an item is defined\n* filtering items, possibly with user-defined filters \n* comparing the loop item object with the current object, to check whether it is active\n\nUrubu interacts with templates by providing an evaluation context with the\nappropriate objects.  The goal is to make the job of the templates as easy as\npossible with ready-to-use object attributes. \n\nThe template library\n====================\n\nUrubu uses the [jinja2] templating language library.\n\nJinja2 has great [documentation][jinja2_docs] and you should\ncheck it out when using templates in Urubu.\n\n[jinja2_docs]: http://jinja2.pocoo.org/docs\n\nA great feature of Jinja2 is template inheritance. With this technique,\nyou can easily generate small variations of a parent template.\n\nLink objects\n============\n\nDescription\n-----------\n\nLink objects are the primary objects that you use in templates. \nThey come in a number of flavours: \n\nLink object        | Description\n-------------------|---------------\nglobal link object | Defined in the `_site.yml` file.\nlocal link object  | Defined locally in the `content` attribute of an index file.\nfolder object      | Corresponds to a project subdirectory.\npage object        | Corresponds to a Markdown content file.\ntag folder object  | Dedicated folder for content ordered by tag. \ntag object         | Represents content corresponding to a specific tag. \n\nAttributes\n----------\n\nLink objects have attributes. The defined attributes depend on the type of the\nlink object. \n\nThe following attributes are common to **all link objects**:\n\nAttribute      | Description \n---------------|---------------------------\n`url`          | The url of the object. \n`title`        | The title of the object.\n\n**All link objects except local link objects** also\nhave an `id` attribute:\n\nAttribute      | Description \n---------------|---------------------------\n`id`           | The unique id by which the object is known in the project. \n\n**Folder and page objects** have the following attributes: \n\nAttribute      | Description \n---------------|---------------------------\n`fn`           | The pathname of the file or directory corresponding the object. \n`components`   | The components of the object's pathname, without file extension, as a list.\n`mdate`        | Modification date\n\n**Folder objects** also have a `content` attribute: \n\nAttribute      | Description \n---------------|---------------------------\n`content`      | The content of the folder as a list of page & folder objects.\n\nIn addition, all attributes specified in the YAML front matter\nof the corresponding index file will be available as attributes of\nthe folder object.\n\n**Page objects** have the following additional attributes:\n\nAttribute      | Description \n---------------|---------------------------\n`layout`       | The template to render the object as a html file. \n`body`         | The page content in html.\n`toc`          | The table of contents of the page as an unordered html list.\n`breadcrumbs`  | Breadcrumbs as a list. The current page object is at position 0, the containing folder objects are at the higher positions.\n`prev`         | The previous page object in the content, or `None` if there is none\n`next`         | The next page object in the content, or `None` if there is none\n\nIn addition, all attributes specified in the YAML front matter of the\ncorresponding content file are available as attributes of the page object.\n\nIndex pages\n-----------\n\nIndex pages are associated with `index.md` files. They are special in the sense\nthat they define the attributes and the content of a folder. Therefore, they\nhave the same `content` attribute as the corresponding folder object.\n\nTag objects\n-----------\n\nTag objects are inferred by Urubu automatically. They list the content\ncorresponding to a tag.\n\n{% raw %}\nAttribute      | Description \n---------------|---------------------------\n`id`           | `/tag/{{tag}}`\n`components`   | `[tag, {{tag}}]`\n`title`        | `tag`\n`tag`          | `tag`\n`layout`       | `tag`  \n`content`      | List of page & folder objects corresponding to `tag`. \n{% endraw %}\n\nThe tag content is ordered by date, most recent first. If the date is not\ndefined, the modification date is used as a fallback (`mdate` attribute).\n\nThe layout name is predefined to `tag`. You have to provide the `tag.html`\ntemplate to trigger the rendering of tag objects. In the simplest case, it\nmay be sufficient to inherit from a general index layout.\n\nTag folder object\n-----------------\n\nThe tag folder object is a special top-level folder whose `id` is `/tag`. Urubu\ninfers tag-related content for this folder automatically.\n\nYou can optionally create the corresponding directory in the source code, and\nuse the index file to set attributes such as the `layout`. In any case, Urubu\nwill create the object if tags are used, and infer the `content` attribute. \n\nAttribute      | Description \n---------------|---------------------------\n`id`           | `/tag` \n`components`   | `[tag]`\n`content`      | A list of tag objects, inferred by Urubu. \n\nThe content is ordered according to the content size of tag objects,\nthe largest one first.\n\n\nContext variables\n=================\n\nUrubu makes the context available to templates with\ntwo context variables.\n\n`site` \n------\n\nThis variable holds site-wide information.\n\nIt has one predefined attribute:\n\nAttribute      | Description \n---------------|---------------------------\n`reflinks`     | A mapping from all reference ids to link objects.\n\nNote that the id of the root object is `/`. Starting from there,\nyou can traverse the whole site.\n\nIn addition, all the attributes specified in the `_site.yml` file\nwill be available as attributes of the `site` variable.\n\n`this`\n------\n\nThis variable holds the current page or tag object.\n\n"
  },
  {
    "path": "doc/manual/templating-in-pages.md",
    "content": "---\ntitle: Templating constructs in pages\nlayout: page \npager: true\nauthor: Jan Decaluwe\n---\n\n{% from 'util.html' import open, done, fa, figure %}\n\nOverview\n========\n\nWriting in Markdown is great, but sometimes you run into limitations. For those\ncases, Urubu supports a feature gratefully borrowed from [jekyll]: using\ntemplating constructs in content pages.\n\nBasically, all content pages are processed by the templating engine before\ngoing to the Markdown processor. The full power of [jinja2] is thus available\nin your content pages. \n\nThe usage of templating constructs in content pages is best explained with\nexamples. Therefore, we will start with some examples, and review the concepts\nafterwards.\n\nExample usage\n=============\n\nTask list icons\n---------------\n\nSuppose you want to emulate [github] style task lists, as follows:\n\n* {{ open }} Task 1\n* {{ done }} Task 2\n* {{ open }} Task 1\n\nAn icon is used to show whether a task is still open or not. \n\nWe can support this by defining well-named reusable variables in a dedicated\ntemplate file, as follows:\n\n```\n{% raw %}\n{% set open = '<i class=\"fa fa-square-o\"></i>' %}\n{% set done = '<i class=\"fa fa-check-square-o\"></i>' %}\n{% endraw %}\n```\n\nVariables `open` and `done` now hold HTML code that refers to icons. In these\nexamples, I use the [font-awesome] icon  library. You will need to add the\nappropriate reference to the icon stylesheet in your base template. \n\nSuppose these variables are defined in the file `_layouts/util.html`. We can\nimport them in any content page as follows:\n\n```\n{% raw %}\n{% from 'util.html' import open, done %}\n{% endraw %}\n```\n\nNote that Urubu knows to look up `util.html` in the `_layouts/` directory,\nbecause that is where templates should be located. \n\nWithin the content page, we can use the variables as follows, to get the result\nas above:\n\n```\n{% raw %}\n* {{ open }} Task 1\n* {{ done }} Task 2\n* {{ open }} Task 1\n{% endraw %}\n```\n\nGeneral icon interface\n----------------------\n\nSuppose you want a more general interface to icons, so that you can easily\nrefer to any icon by name. This can be done with a Jinja2 macro. A macro is\nlike a function that can take parameters:\n\n```\n{% raw %}\n{% macro fa(name, class='') %}\n<i class=\"fa fa-{{name}} {{class}}\"></i>\n{% endmacro %}\n{% endraw %}\n```\n\nAgain, we can import the macro `fa` in content pages:\n\n```\n{% raw %}\n{% from 'util.html' import fa %}\n{% endraw %}\n```\n\nThen we can use it as follows, for example to refer to the Github icon:\n\n```\n{% raw %}\n{{ fa('github') }}\n{% endraw %}\n```\n\nThis gives the following result:\n\n{{ fa('github') }}\n\nWe can pass additional CSS classes via the optional `class` parameter. The\nfollowing example gets the alternative Github icon in twice the basic size:\n\n```\n{% raw %}\n{{ fa('github-alt', 'fa-2x') }}\n{% endraw %}\n```\n\nThis gives the following result:\n\n{{ fa('github-alt', 'fa-2x') }}\n\nFigure\n------\n\nStandard Markdown does not support the HTML5 `<figure>` tag, and the related\n`<figcaption>` tag to add captions. We can support this with the following\nmacro:\n\n```\n{% raw %}\n{% macro figure(fn, caption='') %}\n<figure>\n  <img src=\"/img/{{fn}}\" class=\"img-responsive\" alt=\"{{caption}}\">\n  {% if caption %}\n  <figcaption class=\"text-center\">{{caption}}</figcaption>\n  {% endif %}\n</figure>\n{% endmacro %}\n{% endraw %}\n```\n\nThis macro assumes that images will be placed in an `img/` directory. In\naddition, it makes the image responsive using a Bootstrap class, and centers\nthe optional caption.  Again, we can use the macro by importing:\n\n```\n{% raw %}\n{% from 'util.html' import figure %}\n{% endraw %}\n```\n\nThis is an example usage:\n\n```\n{% raw %}\n{{ figure('urubu.jpg', \"An Urubu - a brazilian vulture\") }}\n{% endraw %}\n```\n\nThis gives the following result:\n\n{{ figure('urubu.jpg', \"An Urubu - a brazilian vulture\") }}\n\nTemplating concepts\n===================\n\nTemplate processing is done first\n---------------------------------\n\nThe examples illustrate how you can use template variables and macros to\nconstruct HTML code. However, it is important to understand that template\nprocessing is done first, before Markdown processing (for good reasons).  Thus,\nthe HTML code from variables and macros first becomes part of Markdown source\ncode.  This works well because Markdown is designed to handle HTML\ntransparently.\n\nFull template power available\n-----------------------------\n\nThe examples demonstrate the use of variables, macros, and imports.  This is\nmerely the beginning: in fact, the full power of Jinja2 templates is available.\nThis is a vast subject. To learn what is possible, see the [Jinja2 Template\nDesigner Documentation][jinja2_templates].\n\nContext variables\n-----------------\n\nWhen Urubu invokes template processing on a page, it automatically passes\ncertain context variables.  This works exactly like for regular templates, as\ndescribed in [/manual/templates#Context Variables]. Basically, variable `this`\nprovides access to the page attributes, and variable `site` provides access to\nthe global site attributes. \n\nTemplate delimiters\n-------------------\n\nTemplate support introduces new delimiters as follows:\n\n{% raw -%}\n* `{# ... #}` for comments not included in the output\n* `{{ ... }}` for expressions, to print to the output\n* `{% ... %}` for statements\n{% endraw %}\n\nThese delimiters deserve some attention.\n\n{# Now commenting about comments #} \n\nFirst, the comment delimiters are interesting because they add a functionality\nthat is not available in Markdown: comments that will not show up in the\noutput.\n\nSecondly, as always with delimiters, there is the problem of how to escape them\nif you want to use them literally in source code, without interpretation.\n\nFor an inline literal or snippet you can use literal expressions.  For example,\nto get `{{ '{{' }}` you can write {% raw %} `{{ '{{' }}` {% endraw %}.   \n\nFor a larger section, you can mark a block *raw*. For example, to\nget the list shown earlier in this section, you can write:\n\n```\n{{ '{% raw %}' }}\n{% raw -%}\n* `{# ... #}` for comments not included in the output\n* `{{ ... }}` for expressions, to print to the output\n* `{% ... %}` for statements\n{% endraw %}\n{{ '{% endraw %}' }}\n```\n\n[jinja2_templates]: http://jinja.pocoo.org/docs/dev/templates\n\n\n"
  },
  {
    "path": "doc/more/about.md",
    "content": "---\ntitle: About this site \nlayout: page \ndate: 2014-01-10\n---\n\nAuthor\n======\n\nThe Urubu software is written by [jandecaluwe].\n\nLicense\n=======\n\nThe Urubu software is licensed under the [software_license].\n\nThe content on this documentation website is licensed\nunder the [content_license].\n\nDevelopment\n===========\n\nThe Urubu software is developed on [github] in the [urubu-repo].\n\nThe documentation is developed as a website in a `gh-pages` branch in the same\nrepo. It can be accessed from the custom domain [urubu.jandecaluwe.com] but it\nis hosted on [GitHub Pages].\n\n[urubu.jandecaluwe.com]: http://urubu.jandecaluwe.com\n[Github Pages]: http://pages.github.com\n\nTheme\n=====\n\nThe theme on this website uses the [bootstrap] framework,\nand is based on stock [bootstrap].\n\nTrivia\n======\n\nAn urubu is a brazilian vulture. [Urubu][Urubu_album] is also the 10th album of\nAntonio Carlos Jobim, one of my favorite song composers.\n\n[Urubu_album]: http://en.wikipedia.org/wiki/Urubu_(album)\n"
  },
  {
    "path": "doc/more/index.md",
    "content": "---\ntitle: More \nlayout: index\ndropdown: true\ncontent:\n    - ref: urubu-repo\n      title: GitHub repository \n    - sites\n    - about\n---\n\n"
  },
  {
    "path": "doc/more/sites.md",
    "content": "---\ntitle: Websites powered by Urubu\nlayout: simple_page\n---\n\nI created Urubu to solve a personal problem: how to create and maintain\nwebsites for my projects. I open-sourced it \"in the hope it can be useful\".  On\nthis page I list a number of websites that are powered by Urubu.\n\nBy others\n=========\n\n[Sigasi Insights][sigasi] - Documentation for Sigasi's tools.\n\n[Leonardo Uieda][leouieda] - Website about Leonardo's professional activities.\n\n[PINGA lab][pinga] - Site for the PINGA lab, a research group studying inverse\nproblems in geophysics.\n\nFor others, by me\n=================\n\n[Vlaamse sofrologen][sofro] - Site of the flemish sophrologists (in Dutch)\n\n[Troca Vins Naturels][troca] - Natural wines\n\nMyHDL\n=====\n\n[myhdl_site] - all about MyHDL, for users\n\n[dev_myhdl_site] - info for MyHDL developers\n\nUrubu\n=====\n\n[urubu-quickstart] - the Quickstart companion site for Urubu\n\n[urubu] - this site\n\nPersonal\n========\n\n[Jan Decaluwe][jan] My site about professional activities\n\n[Jan Decaluwe / Music][janmusic] My music projects\n\n[Jan Decaluwe / Opinions][janopinion] My opinions, in Dutch\n\n\n[sigasi]: http://insights.sigasi.com\n[leouieda]: http://www.leouieda.com/\n[pinga]: http://www.pinga-lab.org/\n[sofro]: http://www.vlaamsesofrologen.be\n[jan]: http://www.jandecaluwe.com\n[janmusic]: http://music.jandecaluwe.com\n[janopinion]: http://nl.jandecaluwe.com\n[troca]: http://www.troca-vn.be\n"
  },
  {
    "path": "doc/news/2014-01-12.md",
    "content": "---\ntitle: Urubu 0.1 released\nlayout: page \ndate: 2014-01-12\n---\n\nIntroducing Urubu, a Python-based micro CMS for static websites.\nRead about [the rationale behind it][rationale].\n\n[rationale]: http://www.jandecaluwe.com/blog/i-dont-like-blogs.html\n"
  },
  {
    "path": "doc/news/2014-01-22.md",
    "content": "---\ntitle: Urubu 0.2 released\nlayout: page \ndate: 2014-01-22\n---\nThis release adds support for github-style task lists.\n"
  },
  {
    "path": "doc/news/2014-02-15.md",
    "content": "---\ntitle: Urubu 0.2.1 released\nlayout: page \ndate: 2014-02-15\n---\nThis is a bug fix release.\n"
  },
  {
    "path": "doc/news/2014-02-27.md",
    "content": "---\ntitle: Urubu 0.3 released\nlayout: page \ndate: 2014-02-27\n---\n\nThis release adds markdown support for front-matter attributes.\n[Read more&nbsp;&raquo;](/manual/structure.html#markdown-in-attributes)\n"
  },
  {
    "path": "doc/news/2014-03-18.md",
    "content": "---\ntitle: Urubu 0.3.1 released\nlayout: page \ndate: 2014-03-18\n---\n\nThis is a bug-fix release.\n\n"
  },
  {
    "path": "doc/news/2014-05-25.md",
    "content": "---\ntitle: Urubu 0.4 and Urubu Quickstart released\nlayout: page \ndate: 2014-05-25\n---\n\nRelease features: \n\n- Run `urubu serve` from the top-level project directory. \n- [Programmable file extensions][/manual/structure] for site pages\n- Introducing [urubu-quickstart]: a quick way to set up a new Urubu project.\n\n\n\n"
  },
  {
    "path": "doc/news/2014-09-08.md",
    "content": "---\ntitle: Urubu 0.5 released\nlayout: page \ndate: 2014-09-08\n---\n\nUrubu 0.5 introduces tag support. \n\nRead [my blog post][post] for an introduction.\n\n[post]: http://www.jandecaluwe.com/blog/tag_support_urubu.html\n\n\n\n\n"
  },
  {
    "path": "doc/news/2015-01-28.md",
    "content": "---\ntitle: Urubu 0.6 released\nlayout: page \ndate: 2015-01-28\n---\n\nUrubu 0.6 improves on wiki links: now you can link to a location within a page. \n\nRead [my blog post][post] for more info.\n\n[post]: http://www.jandecaluwe.com/blog/urubu-0-6.html\n\n\n\n\n"
  },
  {
    "path": "doc/news/2015-03-07.md",
    "content": "---\ntitle: \"Urubu 0.7: Python 3 support, baseurl option\"\nlayout: page \ndate: 2015-03-07\n---\n\nUrubu 0.7 adds features that make it more flexible to use. \n\nFirst, the release adds Python 3 support, from a single codebase.\nYou can use Python 2.7 or Python 3.4.\n\nSecond, there is now a `baseurl` option to add a prefix to generated local\nURLs. [More info&nbsp;&raquo;][/manual/structure#_siteyml].\n\nOn the other hand, the checklist extension has been removed as it caused issues\nwith reference id resolution.\n\n\n"
  },
  {
    "path": "doc/news/2015-11-22.md",
    "content": "---\ntitle: \"Urubu 0.8 released\"\nlayout: page \ndate: 2015-11-22\n---\n\nRelease highlights:\n\n* the `urubu` serve command automatically takes\nthe `baseurl` option into account (Pull request #27).\n\n* when an undefined anchor is referred to in a page, a\nwarning is generated, just like for references to undefined pages (Issue #30).\n\n* the `layout` attribute can be assigned `null`. In this\nway the page content can be used by other pages, but no html is generated for\nthe page itself.\n\nIn addition, a significant effort was put into development robustness. In\nparticular, a regression test suite has been added. This is based on `py.test`\nand `tox`, so that both Python 2.7 and 3.4 are verified. \n\n\n"
  },
  {
    "path": "doc/news/2015-12-15.md",
    "content": "---\ntitle: \"Urubu 0.9.0 released\"\nlayout: page \ndate: 2015-12-15\n---\n\nThis release adds support for Tipue Search, an open source search solution\nbased on Javascript in the browser.\n\nRead more in the chapter [/manual/search] in the manual.\n"
  },
  {
    "path": "doc/news/2016-01-01.md",
    "content": "---\ntitle: \"Urubu 1.0.0 released\"\nlayout: page \ndate: 2016-01-01\n---\n\nThis release adds support for the `process_info` Python hook.  This hook\nprovides a powerful way to assist in templating. Basically, it provides full\nPython power to inspect, verify, modify, and add page attributes. For example,\nyou can use it to define a default `layout`, or a specific `layout` \nfor pages in a certain directory.\n\nRead more in the manual: [/manual/hooks#The process_info hook].\n\nThere is also a new `keep_files` configuration attribute, that lets you\npreserve files that would otherwise be ignored.  See the\n[documentation][/manual/structure#_siteyml].\n"
  },
  {
    "path": "doc/news/2016-01-10.md",
    "content": "---\ntitle: \"Urubu 1.1.0 released\"\nlayout: page \ndate: 2016-01-10\n---\n\nThis release adds experimental support for the `<mark`> tag.\n\nRead more in the manual: [/manual/extensions#Support for the mark tag]\nand in [this blog post][post].\n\n[post]: http://www.jandecaluwe.com/blog/mark-tag-support.html\n\n"
  },
  {
    "path": "doc/news/2016-02-12.md",
    "content": "---\ntitle: \"Urubu 1.2.0 released\"\nlayout: page \ndate: 2016-02-12\n---\n\nThe highlight of this release is support for [/manual/templating-in-pages].\n\n\n"
  },
  {
    "path": "doc/news/2016-11-14.md",
    "content": "---\ntitle: \"Urubu 1.3.0 released\"\nlayout: page \ndate: 2016-11-14\n---\n\nHighlights:\n\n* Add posibility to override output filename. (#51). See the `saveas` attribute\nin the [manual][/manual/structure#Content Files].\nAn example usage, see [/faq/sitemap].\n\n* The `urubu serve` command is more secure.  This is transparent to the user\n(#49).\n\n* Added option for jinja2 to fail on undefined vars (#47). \nSee the `strict_undefined` attribute in the [manual][/manual/structure#_siteyml].\n\n"
  },
  {
    "path": "doc/news/2018-08-15.md",
    "content": "---\ntitle: \"Urubu 1.3.1 released\"\nlayout: page \ndate: 2018-08-15\n---\n\nMaintenance release: bug fixes and small enhancements to existing features.\nSee the git log and the manual.\n"
  },
  {
    "path": "doc/news/2024-12-30.md",
    "content": "---\ntitle: \"Urubu 1.4.0 released\"\nlayout: page \ndate: 2024-12-30\n---\n\nPython3 only.\n"
  },
  {
    "path": "doc/news/2026-03-30.md",
    "content": "---\ntitle: \"Urubu 1.4.1 released\"\nlayout: page\ndate: 2026-03-30\n---\n\nMaintenance release: added test dependencies to setup.py, removed Python 2\ncompatibility layer, and relaxed the Markdown version pin to >= 3.0.\n"
  },
  {
    "path": "doc/news/index.md",
    "content": "---\ntitle: Newsfeed\nlayout: newsfeed \norder: date\nreverse: true\n---\n"
  },
  {
    "path": "doc/search.md",
    "content": "---\ntitle: Search results\nlayout: search\n---\n\n<div id=\"tipue_search_content\"></div>\n"
  },
  {
    "path": "doc/start.md",
    "content": "---\ntitle: Overview \nlayout: page \npager: true\ndate: 2014-01-10\n---\n\nWhat is Urubu?\n==============\n\nUrubu is _a tool to build static websites_. The following sections will help\nyou to decide whether it is the right tool for you.\n\nStatic versus dynamic\n=====================\n\nA static website is the simple case. It consists of a set of fixed pages. The\nonly job of the web server is to serve the page that you request.\n\nThe opposite is a dynamic website. In this case, you interact with a program on\nthe web server. Depending on the request, the web server program generates a\nresponse page on the fly.\n\nClearly, a dynamic website supports a much more interactive and sophisticated\nweb experience. If this is what you need, you should consider a full-fledged\nCMS or CMS generator tool. There is a [wide choice][cms_list] of them in the Python\nworld. \n\n[cms_list]: https://wiki.python.org/moin/ContentManagementSystems\n\nOn the other hand, a static website is great for performance, security and\nmaintainability. If you don't need the overhead of a dynamic CMS, it is a\nwise choice.\n\nWhy a tool?\n===========\n\nOne option is to write a static website by hand by editing the html code for\neach page. However, this quickly becomes an unpractical solution for two\nreasons.\n\nFirst, writing html is no fun. The markup overhead is error prone and makes it\ndifficult to read the actual content.  In Urubu, you use [markdown] for\nauthoring instead.  Markdown is an almost zero overhead input format and feels\nlike a natural way to write content in plain text. \n\nSecondly, html pages have a lot of non-content overhead that is equal or\nsimilar across pages, such as navigation info. Duplicating and maintaining this\ninfo manually is error prone and time consuming. In Urubu, you use templates\n(also known as layouts) instead. They make it easy to define the common html\nstructure of a set of similar pages. \n\nWhy Urubu?\n==========\n\nThere is no shortage of static web site generators, including a lot of [Python\nsolutions][tool_list].   However, these tools are typically blog oriented. If\nyour website is primarily a blog, with content in reverse chronological order\nand with good support for tagging and archiving, there are many other solutions\nthan Urubu.\n\n[tool_list]: https://wiki.python.org/moin/PythonBlogSoftware#Static\n\nOn the other hand, _if you view your website as a set of logically connected\ncontent pages, Urubu is an excellent choice_. Urubu makes it it easy to define\na good navigation structure, so that a user is never \"lost\". This is especially\nimportant for technical content.\n\nOf course, you can also include a blog in an Urubu site.  Within a folder, you\ncan specify how the content should be ordered using an arbitrary key. For a\nblog, this would be reverse order by date.\n\nUrubu's ideal use case\n======================\n\nIf you would like to develop a website like a software project, you will feel\nat home with Urubu. For example, you can maintain an Urubu site in a git or\nmercurial repository and use the workflows that these systems enable.  For\nexample, you can collaborate on [github] or [bitbucket] through [pull\nrequests]. Also, deployment can be as straightforward as pushing to an upstream\nrepository. \n\n[pull requests]: https://help.github.com/articles/using-pull-requests\n"
  },
  {
    "path": "doc/tipuesearch/tipuesearch.css",
    "content": "\n/*\nTipue Search 5.0\nCopyright (c) 2015 Tipue\nTipue Search is released under the MIT License\nhttp://www.tipue.com/search\n*/\n\n\n/*\n#tipue_search_input\n{\n     font: 13px/1.6 'open sans', sans-serif;\n\tcolor: #333;\n\tpadding: 12px 12px 12px 40px;\n\twidth: 170px;\n\tborder: 1px solid #e2e2e2;\n\tborder-radius: 0;\n\t-moz-appearance: none;\n\t-webkit-appearance: none;\n     box-shadow: none; \n\toutline: 0;\n\tmargin: 0;\n\tbackground: #fff url('img/search.png') no-repeat 15px 15px;\n}\n*/\n\n#tipue_search_content\n{\n     max-width: 650px;\n\tpadding-top: 15px;\n\tmargin: 0;\n}\n#tipue_search_warning\n{\n     font: 300 15px/1.6 'Open Sans', sans-serif;\n\tcolor: #555;\n\tmargin: 7px 0;\n}\n#tipue_search_warning a\n{\n     color: #396;\n     text-decoration: none;\n}\n#tipue_search_warning a:hover\n{\n     color: #555;  \n}\n#tipue_search_results_count\n{\n     font: 300 15px/1.7 'Open Sans', sans-serif;\n\tcolor: #555;\n}\n.tipue_search_content_title\n{\n     font: 300 21px/1.7 'Open Sans', sans-serif;\n\tmargin-top: 23px;\n}\n.tipue_search_content_title a\n{\n     color: #333;\n     text-decoration: none;\n}\n.tipue_search_content_title a:hover\n{\n     color: #555;\n}\n.tipue_search_content_url\n{\n     font: 300 14px/1.9 'Open Sans', sans-serif;\n     word-wrap: break-word;\n     hyphens: auto;\n}\n.tipue_search_content_url a\n{\n     color: #396;\n     text-decoration: none;\n}\n.tipue_search_content_url a:hover\n{\n     color: #555;   \n}\n.tipue_search_content_text\n{\n     font: 300 15px/1.6 'Open Sans', sans-serif;\n\tcolor: #555;\n     word-wrap: break-word;\n     hyphens: auto;\n     margin-top: 3px;\n}\n.tipue_search_content_debug\n{\n     font: 300 13px/1.6 'Open Sans', sans-serif;\n\tcolor: #555;\n     margin: 5px 0;\n}\n.h01\n{\n     color: #333;\n     font-weight: 400;\n}\n\n#tipue_search_foot\n{\n     margin: 51px 0 21px 0;\n}\n#tipue_search_foot_boxes\n{\n\tpadding: 0;\n\tmargin: 0;\n     font: 12px 'Open Sans', sans-serif;\n}\n#tipue_search_foot_boxes li\n{\n\tlist-style: none;\n\tmargin: 0;\n\tpadding: 0;\n\tdisplay: inline;\n}\n#tipue_search_foot_boxes li a\n{\n\tpadding: 10px 17px 11px 17px;\n     background-color: #fff;\n     border: 1px solid #e2e2e2;\n     border-radius: 1px;\n\tcolor: #333;\n\tmargin-right: 7px;\n\ttext-decoration: none;\n\ttext-align: center;\n}\n#tipue_search_foot_boxes li.current\n{\n\tpadding: 10px 17px 11px 17px;\n     background: #f6f6f6;\n     border: 1px solid #e2e2e2;\n     border-radius: 1px;\n\tcolor: #333;\n\tmargin-right: 7px;\n\ttext-align: center;\n}\n#tipue_search_foot_boxes li a:hover\n{\n     background: #f6f6f6;\n}\n\n\n/* spinner */\n\n\n.tipue_search_spinner\n{\n     padding: 31px 0;\n     width: 50px;\n     height: 28px;\n}\n.tipue_search_spinner > div\n{\n     background-color: #777;\n     height: 100%;\n     width: 3px;\n     display: inline-block;\n     margin-right: 2px;\n     -webkit-animation: stretchdelay 1.2s infinite ease-in-out;\n     animation: stretchdelay 1.2s infinite ease-in-out;\n}\n.tipue_search_spinner .tipue_search_rect2\n{\n     -webkit-animation-delay: -1.1s;\n     animation-delay: -1.1s;\n}\n.tipue_search_spinner .tipue_search_rect3\n{\n     -webkit-animation-delay: -1.0s;\n     animation-delay: -1.0s;\n}\n@-webkit-keyframes stretchdelay\n{\n     0%, 40%, 100%\n     {\n          -webkit-transform: scaleY(0.4)\n     }  \n     20%\n     {\n          -webkit-transform: scaleY(1.0)\n     }\n}\n@keyframes stretchdelay\n{\n     0%, 40%, 100%\n     { \n          transform: scaleY(0.4);\n          -webkit-transform: scaleY(0.4);\n     }\n     20%\n     { \n          transform: scaleY(1.0);\n          -webkit-transform: scaleY(1.0);\n     }\n}\n\n\n\n\n\n\n"
  },
  {
    "path": "doc/tipuesearch/tipuesearch.css.in",
    "content": "\n/*\nTipue Search 5.0\nCopyright (c) 2015 Tipue\nTipue Search is released under the MIT License\nhttp://www.tipue.com/search\n*/\n\n\n#tipue_search_input\n{\n     font: 13px/1.6 'open sans', sans-serif;\n\tcolor: #333;\n\tpadding: 12px 12px 12px 40px;\n\twidth: 170px;\n\tborder: 1px solid #e2e2e2;\n\tborder-radius: 0;\n\t-moz-appearance: none;\n\t-webkit-appearance: none;\n     box-shadow: none; \n\toutline: 0;\n\tmargin: 0;\n\tbackground: #fff url('img/search.png') no-repeat 15px 15px;\n}\n\n#tipue_search_content\n{\n     max-width: 650px;\n\tpadding-top: 15px;\n\tmargin: 0;\n}\n#tipue_search_warning\n{\n     font: 300 15px/1.6 'Open Sans', sans-serif;\n\tcolor: #555;\n\tmargin: 7px 0;\n}\n#tipue_search_warning a\n{\n     color: #396;\n     text-decoration: none;\n}\n#tipue_search_warning a:hover\n{\n     color: #555;  \n}\n#tipue_search_results_count\n{\n     font: 300 15px/1.7 'Open Sans', sans-serif;\n\tcolor: #555;\n}\n.tipue_search_content_title\n{\n     font: 300 21px/1.7 'Open Sans', sans-serif;\n\tmargin-top: 23px;\n}\n.tipue_search_content_title a\n{\n     color: #333;\n     text-decoration: none;\n}\n.tipue_search_content_title a:hover\n{\n     color: #555;\n}\n.tipue_search_content_url\n{\n     font: 300 14px/1.9 'Open Sans', sans-serif;\n     word-wrap: break-word;\n     hyphens: auto;\n}\n.tipue_search_content_url a\n{\n     color: #396;\n     text-decoration: none;\n}\n.tipue_search_content_url a:hover\n{\n     color: #555;   \n}\n.tipue_search_content_text\n{\n     font: 300 15px/1.6 'Open Sans', sans-serif;\n\tcolor: #555;\n     word-wrap: break-word;\n     hyphens: auto;\n     margin-top: 3px;\n}\n.tipue_search_content_debug\n{\n     font: 300 13px/1.6 'Open Sans', sans-serif;\n\tcolor: #555;\n     margin: 5px 0;\n}\n.h01\n{\n     color: #333;\n     font-weight: 400;\n}\n\n#tipue_search_foot\n{\n     margin: 51px 0 21px 0;\n}\n#tipue_search_foot_boxes\n{\n\tpadding: 0;\n\tmargin: 0;\n     font: 12px 'Open Sans', sans-serif;\n}\n#tipue_search_foot_boxes li\n{\n\tlist-style: none;\n\tmargin: 0;\n\tpadding: 0;\n\tdisplay: inline;\n}\n#tipue_search_foot_boxes li a\n{\n\tpadding: 10px 17px 11px 17px;\n     background-color: #fff;\n     border: 1px solid #e2e2e2;\n     border-radius: 1px;\n\tcolor: #333;\n\tmargin-right: 7px;\n\ttext-decoration: none;\n\ttext-align: center;\n}\n#tipue_search_foot_boxes li.current\n{\n\tpadding: 10px 17px 11px 17px;\n     background: #f6f6f6;\n     border: 1px solid #e2e2e2;\n     border-radius: 1px;\n\tcolor: #333;\n\tmargin-right: 7px;\n\ttext-align: center;\n}\n#tipue_search_foot_boxes li a:hover\n{\n     background: #f6f6f6;\n}\n\n\n/* spinner */\n\n\n.tipue_search_spinner\n{\n     padding: 31px 0;\n     width: 50px;\n     height: 28px;\n}\n.tipue_search_spinner > div\n{\n     background-color: #777;\n     height: 100%;\n     width: 3px;\n     display: inline-block;\n     margin-right: 2px;\n     -webkit-animation: stretchdelay 1.2s infinite ease-in-out;\n     animation: stretchdelay 1.2s infinite ease-in-out;\n}\n.tipue_search_spinner .tipue_search_rect2\n{\n     -webkit-animation-delay: -1.1s;\n     animation-delay: -1.1s;\n}\n.tipue_search_spinner .tipue_search_rect3\n{\n     -webkit-animation-delay: -1.0s;\n     animation-delay: -1.0s;\n}\n@-webkit-keyframes stretchdelay\n{\n     0%, 40%, 100%\n     {\n          -webkit-transform: scaleY(0.4)\n     }  \n     20%\n     {\n          -webkit-transform: scaleY(1.0)\n     }\n}\n@keyframes stretchdelay\n{\n     0%, 40%, 100%\n     { \n          transform: scaleY(0.4);\n          -webkit-transform: scaleY(0.4);\n     }\n     20%\n     { \n          transform: scaleY(1.0);\n          -webkit-transform: scaleY(1.0);\n     }\n}\n\n\n\n\n\n\n"
  },
  {
    "path": "doc/tipuesearch/tipuesearch.js",
    "content": "\n/*\nTipue Search 5.0\nCopyright (c) 2015 Tipue\nTipue Search is released under the MIT License\nhttp://www.tipue.com/search\n*/\n\n\n(function($) {\n\n     $.fn.tipuesearch = function(options) {\n\n          var set = $.extend( {\n          \n               'show'                   : 7,\n               'newWindow'              : false,\n               'showURL'                : true,\n               'showTitleCount'         : true,\n               'minimumLength'          : 3,\n               'descriptiveWords'       : 25,\n               'highlightTerms'         : true,\n               'highlightEveryTerm'     : false,\n               'mode'                   : 'static',\n               'liveDescription'        : '*',\n               'liveContent'            : '*',\n               'contentLocation'        : 'tipuesearch/tipuesearch_content.json',\n               'debug'                  : false\n          \n          }, options);\n          \n          return this.each(function() {\n\n               var tipuesearch_in = {\n                    pages: []\n               };\n               $.ajaxSetup({\n                    async: false\n               });\n               var tipuesearch_t_c = 0;\n\n               if (set.mode == 'live')\n               {\n                    for (var i = 0; i < tipuesearch_pages.length; i++)\n                    {\n                         $.get(tipuesearch_pages[i])\n                              .done(function(html)\n                              {\n                                   var cont = $(set.liveContent, html).text();\n                                   cont = cont.replace(/\\s+/g, ' ');\n                                   var desc = $(set.liveDescription, html).text();\n                                   desc = desc.replace(/\\s+/g, ' ');\n                                                                      \n                                   var t_1 = html.toLowerCase().indexOf('<title>');\n                                   var t_2 = html.toLowerCase().indexOf('</title>', t_1 + 7);\n                                   if (t_1 != -1 && t_2 != -1)\n                                   {\n                                        var tit = html.slice(t_1 + 7, t_2);\n                                   }\n                                   else\n                                   {\n                                        var tit = tipuesearch_string_1;\n                                   }\n\n                                   tipuesearch_in.pages.push(\n                                   {\n                                        \"title\": tit,\n                                        \"text\": desc,\n                                        \"tags\": cont,\n                                        \"url\": tipuesearch_pages[i] \n                                   });    \n                              });\n                    }\n               }\n               \n               if (set.mode == 'json')\n               {\n                    $.getJSON(set.contentLocation)\n                         .done(function(json)\n                         {\n                              tipuesearch_in = $.extend({}, json);\n                         });\n               }\n\n               if (set.mode == 'static')\n               {\n                    tipuesearch_in = $.extend({}, tipuesearch);\n               }                              \n               \n               var tipue_search_w = '';\n               if (set.newWindow)\n               {\n                    tipue_search_w = ' target=\"_blank\"';      \n               }\n\n               function getURLP(name)\n               {\n                    return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.search)||[,\"\"])[1].replace(/\\+/g, '%20')) || null;\n               }\n               if (getURLP('q'))\n               {\n                    $('#tipue_search_input').val(getURLP('q'));\n                    getTipueSearch(0, true);\n               }               \n               \n               $(this).keyup(function(event)\n               {\n                    if(event.keyCode == '13')\n                    {\n                         getTipueSearch(0, true);\n                    }\n               });\n               \n\n               function getTipueSearch(start, replace)\n               {\n                    $('#tipue_search_content').hide();\n                    $('#tipue_search_content').html('<div class=\"tipue_search_spinner\"><div class=\"tipue_search_rect1\"></div><div class=\"tipue_search_rect2\"></div><div class=\"rect3\"></div></div>');\n                    $('#tipue_search_content').show();\n                    \n                    var out = '';\n                    var results = '';\n                    var show_replace = false;\n                    var show_stop = false;\n                    var standard = true;\n                    var c = 0;\n                    found = [];\n                    \n                    var d = $('#tipue_search_input').val().toLowerCase();\n                    d = $.trim(d);\n                    \n                    if ((d.match(\"^\\\"\") && d.match(\"\\\"$\")) || (d.match(\"^'\") && d.match(\"'$\")))\n                    {\n                         standard = false;\n                    }\n                    \n                    if (standard)\n                    {\n                         var d_w = d.split(' ');\n                         d = '';\n                         for (var i = 0; i < d_w.length; i++)\n                         {\n                              var a_w = true;\n                              for (var f = 0; f < tipuesearch_stop_words.length; f++)\n                              {\n                                   if (d_w[i] == tipuesearch_stop_words[f])\n                                   {\n                                        a_w = false;\n                                        show_stop = true;          \n                                   }\n                              }\n                              if (a_w)\n                              {\n                                   d = d + ' ' + d_w[i];\n                              }\n                         }\n                         d = $.trim(d);\n                         d_w = d.split(' ');\n                    }\n                    else\n                    {\n                         d = d.substring(1, d.length - 1);\n                    }\n               \n                    if (d.length >= set.minimumLength)\n                    {\n                         if (standard)\n                         {\n                              if (replace)\n                              {\n                                   var d_r = d;\n                                   for (var i = 0; i < d_w.length; i++)\n                                   {\n                                        for (var f = 0; f < tipuesearch_replace.words.length; f++)\n                                        {\n                                             if (d_w[i] == tipuesearch_replace.words[f].word)\n                                             {\n                                                  d = d.replace(d_w[i], tipuesearch_replace.words[f].replace_with);\n                                                  show_replace = true;\n                                             }\n                                        }\n                                   }\n                                   d_w = d.split(' ');\n                              }                   \n                    \n                              var d_t = d;\n                              for (var i = 0; i < d_w.length; i++)\n                              {\n                                   for (var f = 0; f < tipuesearch_stem.words.length; f++)\n                                   {\n                                        if (d_w[i] == tipuesearch_stem.words[f].word)\n                                        {\n                                             d_t = d_t + ' ' + tipuesearch_stem.words[f].stem;\n                                        }\n                                   }\n                              }\n                              d_w = d_t.split(' ');\n\n                              for (var i = 0; i < tipuesearch_in.pages.length; i++)\n                              {\n                                   var score = 0;\n                                   var s_t = tipuesearch_in.pages[i].text;\n                                   for (var f = 0; f < d_w.length; f++)\n                                   {\n                                        var pat = new RegExp(d_w[f], 'gi');\n                                        if (tipuesearch_in.pages[i].title.search(pat) != -1)\n                                        {\n                                             var m_c = tipuesearch_in.pages[i].title.match(pat).length;\n                                             score += (20 * m_c);\n                                        }\n                                        if (tipuesearch_in.pages[i].text.search(pat) != -1)\n                                        {\n                                             var m_c = tipuesearch_in.pages[i].text.match(pat).length;\n                                             score += (20 * m_c);\n                                        }\n                                        \n                                        if (set.highlightTerms)\n                                        {\n                                             if (set.highlightEveryTerm) \n                                             {\n                                                  var patr = new RegExp('(' + d_w[f] + ')', 'gi');\n                                             }\n                                             else\n                                             {\n                                                  var patr = new RegExp('(' + d_w[f] + ')', 'i');\n                                             }\n                                             s_t = s_t.replace(patr, \"<span class=\\\"h01\\\">$1</span>\");\n                                        }\n                                        \n                                        if (tipuesearch_in.pages[i].tags.search(pat) != -1)\n                                        {\n                                             var m_c = tipuesearch_in.pages[i].tags.match(pat).length;\n                                             score += (10 * m_c);\n                                        }\n\n                                        if (tipuesearch_in.pages[i].url.search(pat) != -1)\n                                        {\n                                             score += 20;\n                                        }\n                                        \n                                        if (score != 0)\n                                        {\n                                             for (var e = 0; e < tipuesearch_weight.weight.length; e++)\n                                             {\n                                                  if (tipuesearch_in.pages[i].url == tipuesearch_weight.weight[e].url)\n                                                  {\n                                                       score += tipuesearch_weight.weight[e].score;\n                                                  }\n                                             }\n                                        }\n                                        \n                                        if (d_w[f].match('^-'))\n                                        {\n                                             pat = new RegExp(d_w[f].substring(1), 'i');\n                                             if (tipuesearch_in.pages[i].title.search(pat) != -1 || tipuesearch_in.pages[i].text.search(pat) != -1 || tipuesearch_in.pages[i].tags.search(pat) != -1)\n                                             {\n                                                  score = 0;     \n                                             }    \n                                        }\n                                   }\n                                   \n                                   if (score != 0)\n                                   {\n                                        found.push(\n                                        {\n                                             \"score\": score,\n                                             \"title\": tipuesearch_in.pages[i].title,\n                                             \"desc\": s_t,\n                                             \"url\": tipuesearch_in.pages[i].url \n                                        });\n                                        c++;                                                                   \n                                   }\n                              }\n                         }\n                         else\n                         {\n                              for (var i = 0; i < tipuesearch_in.pages.length; i++)\n                              {\n                                   var score = 0;\n                                   var s_t = tipuesearch_in.pages[i].text;\n                                   var pat = new RegExp(d, 'gi');\n                                   if (tipuesearch_in.pages[i].title.search(pat) != -1)\n                                   {\n                                        var m_c = tipuesearch_in.pages[i].title.match(pat).length;\n                                        score += (20 * m_c);\n                                   }\n                                   if (tipuesearch_in.pages[i].text.search(pat) != -1)\n                                   {\n                                        var m_c = tipuesearch_in.pages[i].text.match(pat).length;\n                                        score += (20 * m_c);\n                                   }\n                                   \n                                   if (set.highlightTerms)\n                                   {\n                                        if (set.highlightEveryTerm) \n                                        {\n                                             var patr = new RegExp('(' + d + ')', 'gi');\n                                        }\n                                        else\n                                        {\n                                             var patr = new RegExp('(' + d + ')', 'i');\n                                        }\n                                        s_t = s_t.replace(patr, \"<span class=\\\"h01\\\">$1</span>\");\n                                   }\n                                   \n                                   if (tipuesearch_in.pages[i].tags.search(pat) != -1)\n                                   {\n                                        var m_c = tipuesearch_in.pages[i].tags.match(pat).length;\n                                        score += (10 * m_c);\n                                   }\n                              \n                                   if (tipuesearch_in.pages[i].url.search(pat) != -1)\n                                   {\n                                        score += 20;\n                                   }\n                                   \n                                   if (score != 0)\n                                   {\n                                        for (var e = 0; e < tipuesearch_weight.weight.length; e++)\n                                        {\n                                             if (tipuesearch_in.pages[i].url == tipuesearch_weight.weight[e].url)\n                                             {\n                                                  score += tipuesearch_weight.weight[e].score;\n                                             }\n                                        }\n                                   }\n                              \n                                   if (score != 0)\n                                   {\n                                        found.push(\n                                        {\n                                             \"score\": score,\n                                             \"title\": tipuesearch_in.pages[i].title,\n                                             \"desc\": s_t,\n                                             \"url\": tipuesearch_in.pages[i].url\n                                        });\n                                        c++;                                                                  \n                                   }                              \n                              }\n                         }                         \n                         \n                         if (c != 0)\n                         {\n                              if (set.showTitleCount && tipuesearch_t_c == 0)\n                              {\n                                   var title = document.title;\n                                   document.title = '(' + c + ') ' + title;\n                                   tipuesearch_t_c++;\n                              }                         \n                         \n                              if (show_replace == 1)\n                              {\n                                   out += '<div id=\"tipue_search_warning\">' + tipuesearch_string_2 + ' ' + d + '. ' + tipuesearch_string_3 + ' <a id=\"tipue_search_replaced\">' + d_r + '</a></div>';\n                              }\n                              if (c == 1)\n                              {\n                                   out += '<div id=\"tipue_search_results_count\">' + tipuesearch_string_4 + '</div>';\n                              }\n                              else\n                              {\n                                   c_c = c.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n                                   out += '<div id=\"tipue_search_results_count\">' + c_c + ' ' + tipuesearch_string_5 + '</div>';\n                              }\n                              \n                              found.sort(function(a, b) { return b.score - a.score } );\n                              \n                              var l_o = 0;\n                              for (var i = 0; i < found.length; i++)\n                              {\n                                   if (l_o >= start && l_o < set.show + start)\n                                   {                                   \n                                        out += '<div class=\"tipue_search_content_title\"><a href=\"' + found[i].url + '\"' + tipue_search_w + '>' +  found[i].title + '</a></div>';\n \n                                        if (set.debug)\n                                        {                                             \n                                             out += '<div class=\"tipue_search_content_debug\">Score: ' + found[i].score + '</div>';\n                                        }\n                                        \n                                        if (set.showURL)\n                                        {\n                                             var s_u = found[i].url.toLowerCase();\n                                             if(s_u.indexOf('http://') == 0)\n                                             {\n                                                  s_u = s_u.slice(7);\n                                             }                                             \n                                             out += '<div class=\"tipue_search_content_url\"><a href=\"' + found[i].url + '\"' + tipue_search_w + '>' + s_u + '</a></div>';\n                                        }\n                                        \n                                        if (found[i].desc)\n                                        {                                        \n                                             var t = found[i].desc;\n                                             var t_d = '';\n                                             var t_w = t.split(' ');\n                                             if (t_w.length < set.descriptiveWords)\n                                             {\n                                                  t_d = t;\n                                             }\n                                             else\n                                             {\n                                                  for (var f = 0; f < set.descriptiveWords; f++)\n                                                  {\n                                                       t_d += t_w[f] + ' '; \t\n                                                  }\n                                             }\n                                             t_d = $.trim(t_d);\n                                             if (t_d.charAt(t_d.length - 1) != '.')\n                                             {\n                                                  t_d += ' ...';\n                                             }\n                                             out += '<div class=\"tipue_search_content_text\">' + t_d + '</div>';\n                                        }\n                                   }\n                                   l_o++;     \n                              }\n                              \n                              if (c > set.show)\n                              {\n                                   var pages = Math.ceil(c / set.show);\n                                   var page = (start / set.show);\n                                   out += '<div id=\"tipue_search_foot\"><ul id=\"tipue_search_foot_boxes\">';\n                                   \n                                   if (start > 0)\n                                   {\n                                       out += '<li><a class=\"tipue_search_foot_box\" id=\"' + (start - set.show) + '_' + replace + '\">' + tipuesearch_string_6 + '</a></li>'; \n                                   }\n                                                       \n                                   if (page <= 2)\n                                   {\n                                        var p_b = pages;\n                                        if (pages > 3)\n                                        {\n                                             p_b = 3;\n                                        }                    \n                                        for (var f = 0; f < p_b; f++)\n                                        {\n                                             if (f == page)\n                                             {\n                                                  out += '<li class=\"current\">' + (f + 1) + '</li>';\n                                             }\n                                             else\n                                             {\n                                                  out += '<li><a class=\"tipue_search_foot_box\" id=\"' + (f * set.show) + '_' + replace + '\">' + (f + 1) + '</a></li>';\n                                             }\n                                        }\n                                   }\n                                   else\n                                   {\n                                        var p_b = page + 2;\n                                        if (p_b > pages)\n                                        {\n                                             p_b = pages; \n                                        }\n                                        for (var f = page - 1; f < p_b; f++)\n                                        {\n                                             if (f == page)\n                                             {\n                                                  out += '<li class=\"current\">' + (f + 1) + '</li>';\n                                             }\n                                             else\n                                             {\n                                                  out += '<li><a class=\"tipue_search_foot_box\" id=\"' + (f * set.show) + '_' + replace + '\">' + (f + 1) + '</a></li>';\n                                             }\n                                        }\n                                   }                         \n                                                      \n                                   if (page + 1 != pages)\n                                   {\n                                       out += '<li><a class=\"tipue_search_foot_box\" id=\"' + (start + set.show) + '_' + replace + '\">' + tipuesearch_string_7 + '</a></li>'; \n                                   }                    \n                                   \n                                   out += '</ul></div>';\n                              }                        \n                         }\n                         else\n                         {\n                              out += '<div id=\"tipue_search_warning\">' + tipuesearch_string_8 + '</div>'; \n                         }\n                    }\n                    else\n                    {\n                         if (show_stop)\n                         {\n                              out += '<div id=\"tipue_search_warning\">' + tipuesearch_string_8 + '. ' + tipuesearch_string_9 + '</div>';     \n                         }\n                         else\n                         {\n                              out += '<div id=\"tipue_search_warning\">' + tipuesearch_string_10 + '</div>';\n                              if (set.minimumLength == 1)\n                              {\n                                   out += '<div id=\"tipue_search_warning\">' + tipuesearch_string_11 + '</div>';\n                              }\n                              else\n                              {\n                                   out += '<div id=\"tipue_search_warning\">' + tipuesearch_string_12 + ' ' + set.minimumLength + ' ' + tipuesearch_string_13 + '</div>';\n                              }\n                         }\n                    }                \n                    \n                    $('#tipue_search_content').hide();\n                    $('#tipue_search_content').html(out);\n                    $('#tipue_search_content').slideDown(200);\n                    \n                    $('#tipue_search_replaced').click(function()\n                    {\n                         getTipueSearch(0, false);\n                    });                \n               \n                    $('.tipue_search_foot_box').click(function()\n                    {\n                         var id_v = $(this).attr('id');\n                         var id_a = id_v.split('_');\n                    \n                         getTipueSearch(parseInt(id_a[0]), id_a[1]);\n                    });                                                       \n               }          \n          \n          });\n     };\n   \n})(jQuery);\n"
  },
  {
    "path": "doc/tipuesearch/tipuesearch_content.js",
    "content": "\nvar tipuesearch = {\"pages\": [\n     {\"title\": \"Tipue\", \"text\": \"\", \"tags\": \"jQuery HTML5 CSS\", \"url\": \"http://www.tipue.com\"},\n     {\"title\": \"Tipue Search, a site search engine jQuery plugin\", \"text\": \"Tipue Search is a site search engine jQuery plugin. It's free, open source, responsive and fast. Tipue Search only needs a browser that supports jQuery. It doesn't need MySQL or similar. In Static mode it doesn't even need a web server.\", \"tags\": \"JavaScript\", \"url\": \"http://www.tipue.com/search\"},\n     {\"title\": \"Tipue Search Documentation\", \"text\": \"Tipue Search is a site search engine jQuery plugin. It's free, open source and responsive. Tipue Search uses various modes for loading content. Static mode uses a JavaScript object, while JSON mode uses JSON. Live mode grabs content from a list of pages dynamically.\", \"tags\": \"docs\", \"url\": \"http://www.tipue.com/search/docs\"},     \n     {\"title\": \"Tipue Search Static mode demo\", \"text\": \"Tipue Search is a site search engine jQuery plugin. This is a demo of Static mode. Enter tipue into the search box above.\", \"tags\": \"\", \"url\": \"http://www.tipue.com/search/demos/static\"},\n     {\"title\": \"Tipue Search Live mode demo\", \"text\": \"Tipue Search is a site search engine jQuery plugin. This is a demo of Live mode. Enter tipue into the search box above.\", \"tags\": \"\", \"url\": \"http://www.tipue.com/search/demos/live\"},\n     {\"title\": \"Tipue jQuery plugins Support\", \"text\": \"If you're stuck we offer a range of flexible support plans for our jQuery plugins.\", \"tags\": \"\", \"url\": \"http://www.tipue.com/support\"},\n     {\"title\": \"Tipr, a small and simple jQuery tooltip plugin\", \"text\": \"Tipr is a small and simple jQuery tooltip plugin. It's free and open source. Tipr displays attractive tooltips, and it's a shade under 4KB, CSS included.\", \"tags\": \"JavaScript\", \"url\": \"http://www.tipue.com/tipr\"},\n     {\"title\": \"The Tipue blog\", \"text\": \"An occasional blog covering CSS, web development, etc.\", \"tags\": \"HTML5\", \"url\": \"http://www.tipue.com/?d=2\"},\n     {\"title\": \"About Tipue\", \"text\": \"Tipue is a small web development studio based in North London. We've been around for well over a decade. We design innovative add-ins, plugins, code and features with heavy-duty Perl, MySQL and jQuery.\", \"tags\": \"\", \"url\": \"http://www.tipue.com/about\"},     \n     {\"title\": \"The Tipue blog - The complete guide to centering a div\", \"text\": \"Every new developer inevitably finds that centering a div isn't as obvious as you'd expect. Centering what's inside a div is easy enough by giving the text-align property a value of center, but then things tend to get a bit sticky. When you get to centering a div vertically, you can end up in a world of CSS hurt.\", \"tags\": \"HTML\", \"url\": \"http://www.tipue.com/blog/center-a-div\"},\n     {\"title\": \"The Tipue blog - Native HTML5 autocomplete with input list\", \"text\": \"This article shows how with the HTML5 input list attribute and datalist element you can easily set up an input box with a custom autocomplete without jQuery, JavaScript or similar.\", \"tags\": \"\", \"url\": \"http://www.tipue.com/blog/input-list\"},\n     {\"title\": \"The Tipue blog - The really simple guide to z-index\", \"text\": \"The CSS z-index property often trips up new and even experienced developers. The aim of this article is to boil down a somewhat-complex specification to 3 major points, which should ease most z-index pain.\", \"tags\": \"\", \"url\": \"http://www.tipue.com/z-index\"}\n]};\n\n\n\n"
  },
  {
    "path": "doc/tipuesearch/tipuesearch_set.js",
    "content": "\n/*\nTipue Search 5.0\nCopyright (c) 2015 Tipue\nTipue Search is released under the MIT License\nhttp://www.tipue.com/search\n*/\n\n\n/*\nStop words\nStop words list from http://www.ranks.nl/stopwords\n*/\n\nvar tipuesearch_stop_words = [\"a\", \"about\", \"above\", \"after\", \"again\", \"against\", \"all\", \"am\", \"an\", \"and\", \"any\", \"are\", \"aren't\", \"as\", \"at\", \"be\", \"because\", \"been\", \"before\", \"being\", \"below\", \"between\", \"both\", \"but\", \"by\", \"can't\", \"cannot\", \"could\", \"couldn't\", \"did\", \"didn't\", \"do\", \"does\", \"doesn't\", \"doing\", \"don't\", \"down\", \"during\", \"each\", \"few\", \"for\", \"from\", \"further\", \"had\", \"hadn't\", \"has\", \"hasn't\", \"have\", \"haven't\", \"having\", \"he\", \"he'd\", \"he'll\", \"he's\", \"her\", \"here\", \"here's\", \"hers\", \"herself\", \"him\", \"himself\", \"his\", \"how\", \"how's\", \"i\", \"i'd\", \"i'll\", \"i'm\", \"i've\", \"if\", \"in\", \"into\", \"is\", \"isn't\", \"it\", \"it's\", \"its\", \"itself\", \"let's\", \"me\", \"more\", \"most\", \"mustn't\", \"my\", \"myself\", \"no\", \"nor\", \"not\", \"of\", \"off\", \"on\", \"once\", \"only\", \"or\", \"other\", \"ought\", \"our\", \"ours\", \"ourselves\", \"out\", \"over\", \"own\", \"same\", \"shan't\", \"she\", \"she'd\", \"she'll\", \"she's\", \"should\", \"shouldn't\", \"so\", \"some\", \"such\", \"than\", \"that\", \"that's\", \"the\", \"their\", \"theirs\", \"them\", \"themselves\", \"then\", \"there\", \"there's\", \"these\", \"they\", \"they'd\", \"they'll\", \"they're\", \"they've\", \"this\", \"those\", \"through\", \"to\", \"too\", \"under\", \"until\", \"up\", \"very\", \"was\", \"wasn't\", \"we\", \"we'd\", \"we'll\", \"we're\", \"we've\", \"were\", \"weren't\", \"what\", \"what's\", \"when\", \"when's\", \"where\", \"where's\", \"which\", \"while\", \"who\", \"who's\", \"whom\", \"why\", \"why's\", \"with\", \"won't\", \"would\", \"wouldn't\", \"you\", \"you'd\", \"you'll\", \"you're\", \"you've\", \"your\", \"yours\", \"yourself\", \"yourselves\"];\n\n\n// Word replace\n\nvar tipuesearch_replace = {'words': [\n     {'word': 'tipua', 'replace_with': 'tipue'},\n     {'word': 'javscript', 'replace_with': 'javascript'},\n     {'word': 'jqeury', 'replace_with': 'jquery'}\n]};\n\n\n// Weighting\n\nvar tipuesearch_weight = {'weight': [\n     {'url': 'http://www.tipue.com', 'score': 200},\n     {'url': 'http://www.tipue.com/search', 'score': 100},\n     {'url': 'http://www.tipue.com/about', 'score': 100}\n]};\n\n\n// Stemming\n\nvar tipuesearch_stem = {'words': [\n     {'word': 'e-mail', 'stem': 'email'},\n     {'word': 'javascript', 'stem': 'jquery'},\n     {'word': 'javascript', 'stem': 'js'}\n]};\n\n\n// Internal strings\n\nvar tipuesearch_string_1 = 'No title';\nvar tipuesearch_string_2 = 'Showing results for';\nvar tipuesearch_string_3 = 'Search instead for';\nvar tipuesearch_string_4 = '1 result';\nvar tipuesearch_string_5 = 'results';\nvar tipuesearch_string_6 = 'Prev';\nvar tipuesearch_string_7 = 'Next';\nvar tipuesearch_string_8 = 'Nothing found';\nvar tipuesearch_string_9 = 'Common words are largely ignored';\nvar tipuesearch_string_10 = 'Search too short';\nvar tipuesearch_string_11 = 'Should be one character or more';\nvar tipuesearch_string_12 = 'Should be';\nvar tipuesearch_string_13 = 'characters or more';\n"
  },
  {
    "path": "setup.py",
    "content": "from setuptools import setup\n\nrequires = ['jinja2 >= 2.10', 'pygments',\n            'markdown >= 3.0','pyyaml', 'beautifulsoup4']\n\nentry_points = {\n    'console_scripts': [\n        'urubu = urubu.main:main',\n    ]\n}\n\nsetup(\n    name=\"urubu\",\n    version=\"1.4.1\",\n    url='http://urubu.jandecaluwe.com',\n    author='Jan Decaluwe',\n    author_email='jan@jandecaluwe.com',\n    description=\"A micro CMS for static websites with a focus \"\n                \"on good navigation practices.\",\n    packages=['urubu'],\n    include_package_data=True,\n    install_requires=requires,\n    entry_points=entry_points,\n    extras_require={\n        'test': ['pytest', 'sh'],\n    },\n    classifiers=[\n        'Development Status :: 3 - Alpha',\n        'License :: OSI Approved :: GNU Affero General Public License v3',\n        'Operating System :: OS Independent',\n        'Programming Language :: Python :: 2.7',\n        'Topic :: Internet :: WWW/HTTP',\n        'Topic :: Software Development :: Libraries :: Python Modules',\n    ],\n)\n"
  },
  {
    "path": "tox.ini",
    "content": "[tox]\nenvlist = py310\n[testenv]\nchangedir=urubu/tests\ndeps=\n    markdown >= 3.0\n    pytest\n    sh\n    beautifulsoup4\n    pygments\ncommands= \n    py.test --basetemp={envtmpdir} {posargs} --ignore=test_doc.py\n    py.test --basetemp={envtmpdir} {posargs} test_doc.py\n"
  },
  {
    "path": "urubu/__init__.py",
    "content": "# Copyright 2014-2024 Jan Decaluwe\n#\n# This file is part of Urubu.\n#\n# Urubu is free software: you can redistribute it and/or modify\n# it under the terms of the GNU Affero General Public License as published by\n# the Free Software Foundation, either version 3 of the License, or\n# (at your option) any later version.\n#\n# Urubu is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n# GNU Affero General Public License for more details.\n#\n# You should have received a copy of the GNU Affero General Public License\n# along with Urubu.  If not, see <http://www.gnu.org/licenses/>.\n\n__version__ = \"1.4.1\"\n\nfrom warnings import warn\n\nclass UrubuWarning(UserWarning):\n    pass\n\ndef urubu_warn(kind, msg='', fn=''):\n    if fn:\n        fn = 'in ' + fn + ': '\n    if msg:\n        msg = ': ' + \"'{}'\".format(msg)\n    warn(fn + kind + msg, UrubuWarning, stacklevel=2)\n\n\nclass UrubuError(Exception):\n    def __init__(self, kind, msg='', fn=''):\n        self.kind = kind\n        self.msg = msg\n        self.fn = fn \n    def __str__(self):\n        fn = self.fn \n        if fn:\n            fn = 'in ' + fn + ': '\n        msg = self.msg\n        if msg:\n            msg = ': ' + \"'{}'\".format(msg)\n        return fn + self.kind + msg\n\nclass _error():\n    pass\n\nclass _warning():\n    pass\n\n_warning.no_yamlfm = \"No yaml front matter - ignored\"\n_warning.undef_tag_layout = \"Tags defined, but no tag layout found\"\n_warning.undef_ref_md = 'Undefined reference'\n_warning.undef_anchor = \"Undefined anchor\"\n\n_error.ambig_refid = \"Ambiguous reference id\"\n_error.undef_ref = \"Undefined reference\"\n_error.ambig_ref = \"Ambiguous reference, cannot resolve\"\n_error.undef_info = \"Missing attribute\"\n_error.date_format = \"Date format error - should be YYYY-MM-DD\"\n_error.undef_key = \"Undefined key\"\n_error.undef_content = \"No 'content' or 'order' specified\"\n_error.undef_reflink_key = \"Undefined key in site reflink\"\n_error.ambig_ref_md = 'Ambiguous reference' \n_error.no_index = 'Missing index file'\n"
  },
  {
    "path": "urubu/__main__.py",
    "content": "# Copyright 2014 Jan Decaluwe\n#\n# This file is part of Urubu.\n#\n# Urubu is free software: you can redistribute it and/or modify\n# it under the terms of the GNU Affero General Public License as published by\n# the Free Software Foundation, either version 3 of the License, or\n# (at your option) any later version.\n#\n# Urubu is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n# GNU Affero General Public License for more details.\n#\n# You should have received a copy of the GNU Affero General Public License\n# along with Urubu.  If not, see <http://www.gnu.org/licenses/>.\n\nfrom urubu import main\n\nmain.main()\n"
  },
  {
    "path": "urubu/config.py",
    "content": "# Copyright 2014 Jan Decaluwe\n#\n# This file is part of Urubu.\n#\n# Urubu is free software: you can redistribute it and/or modify\n# it under the terms of the GNU Affero General Public License as published by\n# the Free Software Foundation, either version 3 of the License, or\n# (at your option) any later version.\n#\n# Urubu is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n# GNU Affero General Public License for more details.\n#\n# You should have received a copy of the GNU Affero General Public License\n# along with Urubu.  If not, see <http://www.gnu.org/licenses/>.\n\nimport os\n\nsiteinfofn = '_site.yml'\nsitedir = '_build'\ntagdir = 'tag'\ntagid = '/' + tagdir\ntagindexid = tagid + '/' + 'index'\ntag_layout = 'tag'\nlayoutdir = '_layouts'\ntipuesearchdir = 'tipuesearch'\ntipuesearch_content = 'tipuesearch_content.json'\n"
  },
  {
    "path": "urubu/httphandler.py",
    "content": "# Copyright 2015 Sreepathi Pai\n#\n# This file is part of Urubu.\n#\n# Urubu is free software: you can redistribute it and/or modify\n# it under the terms of the GNU Affero General Public License as published by\n# the Free Software Foundation, either version 3 of the License, or\n# (at your option) any later version.\n#\n# Urubu is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n# GNU Affero General Public License for more details.\n#\n# You should have received a copy of the GNU Affero General Public License\n# along with Urubu.  If not, see <http://www.gnu.org/licenses/>.\n\nimport http.server as httpserver\n\nclass AliasingHTTPRequestHandler(httpserver.SimpleHTTPRequestHandler):\n    def do_GET(self):\n        baseurl = self.server.baseurl\n\n        if not baseurl:\n            httpserver.SimpleHTTPRequestHandler.do_GET(self)\n            return\n\n        wk_baseurl = \"/%s/\" % (baseurl)\n\n        if self.path == wk_baseurl[:-1]:\n            # handle /$baseurl -> /$baseurl/\n\n            self.send_response(301, 'Moved Permanently')\n            self.send_header('Location', wk_baseurl)\n            self.end_headers()\n            return\n\n        if self.path[:len(wk_baseurl)] == wk_baseurl:\n            # translate /$baseurl/path internally to /path and serve\n\n            self.path = self.path[len(wk_baseurl)-1:]\n            httpserver.SimpleHTTPRequestHandler.do_GET(self)\n            return\n        else:\n            # handle /xyz/path -> /$baseurl/xyz/path\n            #\n            # usually caused by underlying server sending a redirect\n            # to non-baseurl-prefixed path\n\n            self.send_response(302, 'Moved Temporarily')\n            sep = \"/\" if self.path[0] != \"/\" else \"\"\n\n            # note this replicates underlying bugs in that Location is\n            # not absolute as required by the spec and we throw away\n            # '?' and '#'\n\n            self.send_header('Location', \"/%s%s%s\" % (baseurl, sep, self.path))\n            self.end_headers()\n            return\n"
  },
  {
    "path": "urubu/main.py",
    "content": "# Copyright 2014 Jan Decaluwe\n#\n# This file is part of Urubu.\n#\n# Urubu is free software: you can redistribute it and/or modify\n# it under the terms of the GNU Affero General Public License as published by\n# the Free Software Foundation, either version 3 of the License, or\n# (at your option) any later version.\n#\n# Urubu is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n# GNU Affero General Public License for more details.\n#\n# You should have received a copy of the GNU Affero General Public License\n# along with Urubu.  If not, see <http://www.gnu.org/licenses/>.\n\nimport argparse\n\nimport os\nfrom sys import stderr\n\nfrom urubu import __version__\nfrom urubu import project\n\nimport socketserver\nimport http.server as httpserver\nfrom urubu.httphandler import AliasingHTTPRequestHandler\n\n__IDESC__ = \"\"\"\nMicro CMS tool to build and test static websites.\n\"\"\"\n\n__IEPILOG__ = \"\"\"\nDocumentation: <https://urubu.jandecaluwe.com/manual/>\n\"\"\"\n\ndef serve(baseurl, host='localhost', port=8000):\n    \"\"\"HTTP server straight from the docs.\"\"\"\n    # allow running this from the top level\n    if os.path.isdir('_build'):\n        os.chdir('_build')\n    # local use, address reuse should be OK\n    socketserver.TCPServer.allow_reuse_address = True\n    handler = AliasingHTTPRequestHandler\n    httpd = socketserver.TCPServer((host, port), handler)\n    httpd.baseurl = baseurl\n\n    if host == '':\n        print(\"This web server is not safe for public/production use.\", file=stderr)\n        print(\"Serving all peers at port {port}...\\n\\\nBrowse <http://localhost:{port}/> (*:{port})\".format(host=host, port=port))\n    else:\n        print(\"Serving {host} at port {port}...\\n\\\nBrowse <http://{host}:{port}/>.\".format(host=host, port=port))\n    if httpd.baseurl: print(\"Using baseurl {}\".format(httpd.baseurl))\n    httpd.serve_forever()\n\ndef main():\n    parser = argparse.ArgumentParser(prog='python -m urubu', add_help=False,\n                                     epilog=__IEPILOG__, description=__IDESC__)\n    parser.add_argument('-h', '--help', action='help', help=\"show program's help and exit\")\n    parser.add_argument('-v', '--version', action='version', version=__version__)\n    parser.add_argument('command', choices=['build', 'serve', 'serveany'])\n    args = parser.parse_args()\n    if args.command == 'build':\n        project.build()\n    elif args.command == 'serve':\n        proj = project.load()\n        serve(proj.site['baseurl'])\n    elif args.command == 'serveany':\n        proj = project.load()\n        serve(proj.site['baseurl'], host='')\n"
  },
  {
    "path": "urubu/md_extensions.py",
    "content": "# Copyright 2014-2015 Jan Decaluwe\n#\n# This file is part of Urubu.\n#\n# Urubu is free software: you can redistribute it and/or modify\n# it under the terms of the GNU Affero General Public License as published by\n# the Free Software Foundation, either version 3 of the License, or\n# (at your option) any later version.\n#\n# Urubu is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n# GNU Affero General Public License for more details.\n#\n# You should have received a copy of the GNU Affero General Public License\n# along with Urubu.  If not, see <http://www.gnu.org/licenses/>.\n\nimport posixpath\nimport re\n\nimport markdown\nimport logging\nlogging.captureWarnings(False)\n\nfrom markdown import Extension\nfrom markdown.extensions import toc \nfrom markdown.treeprocessors import Treeprocessor\nfrom markdown.inlinepatterns import ReferenceInlineProcessor, REFERENCE_RE\nfrom markdown.inlinepatterns import AsteriskProcessor, EmStrongItem \nfrom markdown.inlinepatterns import EM_STRONG2_RE, STRONG_EM2_RE\nfrom markdown.inlinepatterns import SMART_STRONG_EM_RE, SMART_STRONG_RE, SMART_EMPHASIS_RE\n\nfrom urubu import UrubuWarning, urubu_warn, UrubuError, _warning, _error\n\n\ndef _set_dl_class(tree):\n    for item in tree:\n        if item.tag == 'dl':\n            item.set('class', 'dl-horizontal')\n        _set_dl_class(item)\n\n\nclass DLClass(Treeprocessor):\n\n    def run(self, root):\n        _set_dl_class(root)\n        return None\n\n\nclass DLClassExtension(Extension):\n\n    \"\"\"Add 'dl-horizontal' class to definition list elements (for bootstrap).\"\"\"\n\n    def extendMarkdown(self, md):\n        md.treeprocessors.register(DLClass(md), 'dlclass', 3)\n\n\ndef _set_table_class(tree):\n    for item in tree:\n        if item.tag == 'table':\n            item.set('class', 'table')\n        _set_table_class(item)\n\n\nclass TableClass(Treeprocessor):\n\n    def run(self, root):\n        _set_table_class(root)\n        return None\n\n\nclass TableClassExtension(Extension):\n\n    \"\"\"Add 'table' class to table elements (for bootstrap).\"\"\"\n\n    def extendMarkdown(self, md):\n        md.treeprocessors.register(TableClass(md), 'tableclass', 4)\n\n\nclass ProjectReferenceInlineProcessor(ReferenceInlineProcessor):\n\n    def handleMatch(self, m, data):\n\n        text, index, handled = self.getText(data, m.end(0))\n        if not handled:\n            return None, None, None\n\n        ref, end, shortref, handled = self.evalRef(data, index, text)\n        if not handled:\n            return None, None, None\n\n        # Clean up linebreaks in ref\n        ref = self.NEWLINE_CLEANUP_RE.sub(' ', ref)\n\n        id = ref.lower()\n\n        if id in self.md.references:\n            href, title = self.md.references[id]\n        else:\n            anchor = None\n            if '#' in ref:\n                ref, anchor = ref.split('#', 1)\n            this = self.md.this\n            if not posixpath.isabs(ref):\n                # treat empty ref as reference to current page\n                if not ref: \n                    ref = this['components'][-1]\n                rootrelpath = '/' + '/'.join(this['components'][:-1])\n                id = posixpath.normpath(posixpath.join(rootrelpath, ref))\n                id = id.lower()\n            else:\n                id = ref.lower()\n            ref = ref.lower()\n            if ref in self.md.site['reflinks']:\n                if (ref != id) and (id in self.md.site['reflinks']):\n                    raise UrubuError(_error.ambig_ref_md, msg=ref, fn=this['fn'])\n                id = ref\n            if id in self.md.site['reflinks']:\n                item = self.md.site['reflinks'][id]\n                href, title = item['url'], item['title']\n                if shortref:\n                    text = title\n                    if anchor is not None:\n                        text = anchor\n                if anchor is not None:\n                    anchor = toc.slugify(anchor, '-')\n                    href = '%s#%s' % (href, anchor)\n                    anchorref = '%s#%s' % (id, anchor)\n                    self.md.this['_anchorrefs'].add(anchorref)\n\n            else:  # ignore undefined refs\n                urubu_warn(_warning.undef_ref_md, msg=ref, fn=this['fn'])\n                return None, None, None\n\n        return self.makeTag(href, title, text), m.start(0), end\n\n    def evalRef(self, data, index, text):\n        \"\"\"\n        Evaluate ref from [text][ref] or [ref][] \n\n        \"\"\"\n        shortref = False \n        m = self.RE_LINK.match(data, pos=index)\n        if not m:\n            return None, index, shortref, False \n        else:\n            ref = m.group(1)\n            end = m.end(0)\n            if not ref:\n                ref = text\n        return ref, end, shortref, True \n\nclass ProjectShortReferenceInlineProcessor(ProjectReferenceInlineProcessor):\n\n    def evalRef(self, data, index, text):\n        \"\"\"\n        Evaluate ref from [text]\n\n        \"\"\"\n        shortref = True \n        return text, index, shortref, True \n\n\nclass ProjectReferenceExtension(Extension):\n\n    \"\"\"Overwrite reference patterns with project reference extensions.\"\"\"\n\n    def extendMarkdown(self, md):\n        md.inlinePatterns.deregister('reference')\n        md.inlinePatterns.register(ProjectReferenceInlineProcessor(REFERENCE_RE, md), 'reference', 170)\n        md.inlinePatterns.deregister('short_reference')\n        md.inlinePatterns.register(ProjectShortReferenceInlineProcessor(REFERENCE_RE, md), 'short_reference', 130)\n\n\nclass ExtractAnchorsClass(Treeprocessor):\n\n    def run(self, tree):\n        this = self.md.this\n        thisid = this['id']\n        components = this['components']\n        for item in tree:\n            if 'id' in item.attrib:\n                self.md.anchors.add(\"%s#%s\" % (thisid, item.attrib['id']))\n                # add special version for index files\n                if components[-1] == 'index':\n                    navid = thisid[:-6] # remove trailing backslash also\n                    self.md.anchors.add(\"%s#%s\" % (navid, item.attrib['id']))\n        return None\n\n\nclass ExtractAnchorsExtension(Extension):\n\n    def extendMarkdown(self, md):\n        md.treeprocessors.register(ExtractAnchorsClass(md), 'extractanchors', 5)\n\n\n# extension for the <mark> tag\nclass UnderscoreMarkProcessor(AsteriskProcessor):\n    \"\"\"Emphasis processor for handling strong and mark matches inside underscores.\"\"\"\n\n    PATTERNS = [\n        EmStrongItem(re.compile(EM_STRONG2_RE, re.DOTALL | re.UNICODE), 'double', 'strong,mark'),\n        EmStrongItem(re.compile(STRONG_EM2_RE, re.DOTALL | re.UNICODE), 'double', 'mark,strong'),\n        EmStrongItem(re.compile(SMART_STRONG_EM_RE, re.DOTALL | re.UNICODE), 'double2', 'strong,mark'),\n        EmStrongItem(re.compile(SMART_STRONG_RE, re.DOTALL | re.UNICODE), 'single', 'strong'),\n        EmStrongItem(re.compile(SMART_EMPHASIS_RE, re.DOTALL | re.UNICODE), 'single', 'mark')\n    ]\n\nclass MarkTagExtension(Extension):\n\n    def extendMarkdown(self, md):\n        md.inlinePatterns.deregister('em_strong2')\n        md.inlinePatterns.register(UnderscoreMarkProcessor(r'_'), 'em_strong2', 50)\n\n\n\n"
  },
  {
    "path": "urubu/processors.py",
    "content": "# Copyright 2014 Jan Decaluwe\n#\n# This file is part of Urubu.\n#\n# Urubu is free software: you can redistribute it and/or modify\n# it under the terms of the GNU Affero General Public License as published by\n# the Free Software Foundation, either version 3 of the License, or\n# (at your option) any later version.\n#\n# Urubu is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n# GNU Affero General Public License for more details.\n#\n# You should have received a copy of the GNU Affero General Public License\n# along with Urubu.  If not, see <http://www.gnu.org/licenses/>.\n\nimport os, sys, json, itertools\n\nimport markdown\nimport logging\nlogging.captureWarnings(False)\nfrom bs4 import BeautifulSoup\n\nimport jinja2\n\nfrom urubu import UrubuWarning, UrubuError, urubu_warn, _warning\nfrom urubu import md_extensions\n\nfrom urubu.config import layoutdir, tag_layout, tipuesearchdir, tipuesearch_content\n\ndef skip_yamlfm(f):\n    \"\"\"Return source of a file without yaml frontmatter.\"\"\"\n    f.readline()\n    found = False\n    lines = []\n    for line in f.readlines():\n        if found:\n            lines.append(line)\n        if line.strip() == '---':\n            found = True\n    return ''.join(lines)\n\n\nclass ContentProcessor(object):\n\n    def __init__(self, sitedir, project):\n        self.sitedir = sitedir\n        self.filelist = project.filelist\n        self.navlist = project.navlist\n        self.taglist = project.taglist\n        self.site = project.site\n        dlclass = md_extensions.DLClassExtension()\n        tableclass = md_extensions.TableClassExtension()\n        projectref = md_extensions.ProjectReferenceExtension()\n        extractanchors = md_extensions.ExtractAnchorsExtension()\n        marktag = md_extensions.MarkTagExtension()\n        # there is a strange interaction between smarty and reference links that start on a new line\n        # disabling smarty for now...\n        # extensions = ['extra', 'codehilite', 'headerid', 'toc', 'smarty', tableclass, projectref]\n        extensions = ['markdown.extensions.extra', 'markdown.extensions.codehilite', 'markdown.extensions.toc',\n                      dlclass, tableclass, projectref, extractanchors]\n        if self.site['mark_tag_support']:\n            extensions.append(marktag)\n        extension_configs = {'markdown.extensions.codehilite': [('guess_lang', 'False'),\n                                                                ('linenums', 'False')],\n                             'markdown.extensions.toc': [('baselevel', 2)]\n                             }\n        self.md = markdown.Markdown(extensions=extensions,\n                                    extension_configs=extension_configs)\n        self.md.site = self.site\n        self.md.anchors = project.anchors\n        if 'strict_undefined' in self.site and self.site['strict_undefined']:\n            undefined_class = jinja2.StrictUndefined\n        else:\n            undefined_class = jinja2.Undefined\n        env = self.env = jinja2.Environment(\n            loader=jinja2.FileSystemLoader(layoutdir),\n            lstrip_blocks=True,\n            trim_blocks=True,\n            undefined=undefined_class)\n        env.filters.update(project.filters)\n        self.templates = {}\n        for layout in project.layouts:\n            self.templates[layout] = self.env.get_template(layout + '.html')\n        # layout for tags is optional, triggers index file generation per tag\n        try:\n            self.templates[tag_layout] = self.env.get_template(\n                tag_layout + '.html')\n        except jinja2.exceptions.TemplateNotFound:\n            if self.taglist:\n                urubu_warn(_warning.undef_tag_layout, msg=tag_layout)\n\n    def process(self):\n        \"\"\"Process the content.\n\n        Conversion and rendering are done in separate phases, so\n        that the full content is available to the rendering process.\n        \"\"\"\n        self.convert()\n        self.alt_layouts()\n        self.pagination()\n        self.render()\n        self.make_tipuesearch_content()\n\n    def alt_layouts(self):\n        # If a file contains the alt_layouts attribute, then\n        # we need to generate a copy of the file for each\n        # additional layout, in the location given.  Each \n        # alt layout has two fields, layout and location\n        for info in self.filelist:\n            if 'alt_layouts' in info: \n                for layout in info['alt_layouts']:\n                    new_info = info.copy()\n                    \n                    # Make sure the alt layout is available\n                    if layout['layout'] not in self.templates:\n                        self.templates[layout['layout']] = self.env.get_template(layout['layout'] + '.html')\n                        \n                    # Set the layout of the new file\n                    new_info['layout'] = layout['layout']\n                    \n                    # Set path of the new file\n                    import ntpath\n                    filename = ntpath.basename(new_info['fn'])\n                    new_info['fn'] = layout['location']+\"\\\\\"+filename                   \n                    \n                    # Prevent the new file from generating more new files\n                    del new_info['alt_layouts']\n                    \n                    self.filelist.append(new_info)\n        \n    def pagination(self):\n        # We look at attributes in pages here, e.g.:\n        #\n        #   items_per_page: 5\n        #   items_index: news\\index.md\n        #\n        #   OR\n        #\n        #   items_per_page: 5\n        #   items_filter: mysteries time-loop\n        #\n        # We then find the info item for the items index/filter and\n        # use it to create more entries for the current item in\n        # the file list, splitting it out into items_per_page\n        # chunks for each file.\n        #  \n        # The filters are the same ones defined in _python for Jinja2\n        # to use.  The name of the function is followed by its parameters\n        #\n        # The page and any new pages created from it will get new attributes:\n        #\n        #     numpages - the number of total pages generated\n        #     thispage - the page number of this page in the chain\n        #     prevpage - the previous page in the chain\n        #     nextpage - the next page in the chain\n        #     pages    - a list of page numbers and page objects\n        # \n        # The first page will have no prevpage, and the last page\n        # will have no nextpage.\n\n        import math\n        \n        for info in self.filelist:\n            source = None\n            \n            if 'items_per_page' in info:\n                if 'items_index' in info:\n                    if info['items_index'] == \"this\":\n                        source = info['content']\n                    else:\n                        source = next(x for x in self.filelist if x['fn'] == info['items_index'])['content']\n            \n                if 'items_filter' in info:\n                    filter = info['items_filter'].split()\n                    source = self.env.filters[filter[0]](*filter[1:])\n                \n                if source:\n                    items_per_page = info['items_per_page']\n                    \n                    # This will be a shared list among all the pages\n                    # that lists each page along with its page number,\n                    # e.g. {'pagenum': 1, 'page': info}\n                    pages = []\n                    \n                    # Split source into items_per_page sized chunks,\n                    # starting with info and then creating new\n                    # files with incrementing numbers\n                    \n                    chunks = math.ceil(len(source) / items_per_page)\n\n                    # First chunk is always the current page\n                    info['content'] = source[0:items_per_page]\n                    \n                    # See if we even need to worry about pagination\n                    # Maybe everything fits on the one page already\n                    if len(source) <= items_per_page:\n                        continue\n                    \n                    info['numpages'] = chunks\n                    info['thispage'] = 1\n                    info['pages'] = pages\n                    \n                    pages.append({'pagenum': 1, 'page': info})\n                    \n                    chunk = 1\n                    prev_page = info\n                    \n                    # If we need more chunks, split off new pages for them\n                    while chunk < chunks:\n                        chunk += 1\n                        new_info = info.copy()\n                        # Prevent the new page from spinning off new pages\n                        del new_info['items_per_page']\n                        \n                        new_info['pages'] = pages\n                        pages.append({'pagenum': chunk, 'page': new_info})\n                        \n                        # Set the content to the right slice of the source\n                        new_info['content'] = source[(chunk-1)*items_per_page:(chunk-1)*items_per_page+items_per_page]\n                        \n                        new_info['numpages'] = chunks\n                        new_info['thispage'] = chunk\n\n                        # Name the new page based on its chunk number\n                        fn_parts = os.path.splitext(new_info['fn'])\n                        new_info['fn'] = fn_parts[0]+str(chunk)+fn_parts[1]\n\n                        fn_parts = os.path.splitext(new_info['url'])\n                        new_info['url'] = fn_parts[0]+str(chunk)+fn_parts[1]\n                        \n                        # Setup the prevpage and nextpage attributes\n                        new_info['prevpage'] = prev_page\n                        prev_page['nextpage'] = new_info\n                        # We may have inherited this from the first chunk\n                        if 'nextpage' in new_info:\n                            del new_info['nextpage']\n                        \n                        prev_page = new_info\n                        \n                        self.filelist.append(new_info)\n        \n    def convert(self):\n        for info in self.filelist:\n            fn = info['fn']\n            with open(fn, encoding='utf-8-sig') as inf:\n                src = skip_yamlfm(inf)\n            self.md.this = info\n            # first process as a template\n            try:\n                templ = self.env.from_string(src)\n                src = templ.render(this=info, site=self.site)\n            except:\n                exc, msg, tb = sys.exc_info()\n                raise UrubuError(str(exc), msg=msg, fn=fn)\n            self.md.toc = ''\n            info['body'] = self.md.convert(src)\n            info['toc'] = ''\n            if hasattr(self.md, 'toc'):\n                # filter out empty tocs, 35 is the magic length\n                if len(self.md.toc) > 35:\n                    info['toc'] = self.md.toc\n            # markdown support in keys\n            mdkeys = [key for key in info if key[-3:] == '.md']\n            for mdkey in mdkeys:\n                key = mdkey[:-3]\n                info[key] = self.md.convert(info[mdkey])\n            self.md.reset()\n        for info in self.navlist:\n            # markdown support in keys\n            mdkeys = [key for key in info if key[-3:] == '.md']\n            for mdkey in mdkeys:\n                key = mdkey[:-3]\n                info[key] = self.md.convert(info[mdkey])\n            self.md.reset()\n\n    def render(self):\n        # content files\n        for info in self.filelist:\n            if info['layout'] is None:\n                continue\n            self.render_file(info)\n        # tag index files\n        if tag_layout not in self.templates:\n            return\n        for info in self.taglist:\n            self.render_file(info)\n\n    def render_file(self, info):\n        layout = info['layout']\n        templ = self.templates[layout]\n        html = templ.render(this=info, site=self.site)\n        # extract text from html for search support\n        self.extract_text(html, info)\n        fn = info['fn']\n\n        # check if filename is overriden\n        if info.get('saveas') is not None:\n            outfn = os.path.join(self.sitedir, info.get('saveas'))\n        else:\n            bfn, ext = os.path.splitext(fn)\n            outfn = os.path.join(self.sitedir, bfn) + self.site['file_ext']\n\n        with open(outfn, 'w', encoding='utf-8', errors='strict') as outf:\n            outf.write(html)\n\n    def extract_text(self, html, info):\n        # select main tag for search content\n        m = BeautifulSoup(html, \"html.parser\").select('main')\n        text = \"\"\n        if m:\n            text = m[0].get_text(\" \", strip=True)\n        info['text'] = text\n\n    def make_tipuesearch_content(self):\n        tsd = os.path.join(self.sitedir, tipuesearchdir)\n        if not os.path.isdir(tsd):\n            return\n        tsc = os.path.join(tsd, tipuesearch_content)\n        items = []\n        # use tag index files if they have been rendered\n        taglist = []\n        if tag_layout in self.templates:\n           taglist = self.taglist\n        for info in itertools.chain(self.filelist, taglist):\n            if 'text' not in info:\n                continue\n            tags = \"\"\n            if 'tags' in info:\n               tags = ' '.join(info['tags'])\n            item = {'text' : info['text'],\n                    'title': info['title'],\n                    'url'  : info['url'],\n                    'tags' : tags}\n            items.append(item)\n        if len(items) <= 0:\n            return\n        obj = {'pages': items}\n        with open(tsc, 'w', encoding='utf-8') as fd:\n            # json.dump is buggy in Python2 -- use workaround\n            # print json.dumps(obj, ensure_ascii=False, indent=4)\n            data = json.dumps(obj, ensure_ascii=False, indent=4, sort_keys=True)\n            fd.write(str(data))\n"
  },
  {
    "path": "urubu/project.py",
    "content": "# Copyright 2014, 2015 Jan Decaluwe\n#\n# This file is part of Urubu.\n#\n# Urubu is free software: you can redistribute it and/or modify\n# it under the terms of the GNU Affero General Public License as published by\n# the Free Software Foundation, either version 3 of the License, or\n# (at your option) any later version.\n#\n# Urubu is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n# GNU Affero General Public License for more details.\n#\n# You should have received a copy of the GNU Affero General Public License\n# along with Urubu.  If not, see <http://www.gnu.org/licenses/>.\n\nimport os, sys\nimport yaml\nimport fnmatch\nimport shutil\nimport datetime\nimport itertools\nimport importlib\nfrom operator import itemgetter\n\nfrom urubu import UrubuWarning, UrubuError, urubu_warn, _warning, _error\nfrom urubu import readers, processors\n\nfrom urubu.config import (siteinfofn, sitedir,\n                          tagdir, tagid, tagindexid, tag_layout)\n\ndef require_key(key, mapping, tipe, fn):\n    type_error = \"{}: '{}' value should be of type {}\"\n    if key in mapping:\n        if not (isinstance(mapping[key], tipe)):\n            raise TypeError(type_error.format(fn, key, tipe))\n\n\ndef get_relpath(path, start):\n    return os.path.relpath(path, start)\n\n\ndef get_components(path, hasext=True):\n    p = path\n    if hasext:\n        p, ext = os.path.splitext(path)\n    p = p.lstrip(os.curdir)\n    p = p.strip(os.sep)\n    components = []\n    if p:\n        components = p.split(os.sep)\n    return components\n\ndef make_id(components, lowercased=True):\n    id = ('/' + '/'.join(components))\n    if lowercased:\n        return id.lower()\n    return id\n\n\ndef make_clean(dir):\n    for fn in os.listdir(dir):\n        p = os.path.join(dir, fn)\n        if os.path.isdir(p) and not fn == '.git':\n            shutil.rmtree(p)\n        elif os.path.isfile(p) and not fn == 'CNAME':\n            os.remove(p)\n\n\nclass Project(object):\n\n    def __init__(self):\n        self.cwd = os.getcwd()\n        self.site = {'baseurl': None,\n                     'reflinks': {},\n                     'link_ext': '.html',\n                     'file_ext': '.html',\n                     'mark_tag_support': True\n                     }\n        self.sitedir = sitedir\n        self.get_siteinfo()\n\n        \"\"\"Get user-defined python hooks.\"\"\"\n        # load _python module from cwd \n        try:\n            _python = importlib.import_module('_python')\n        except ModuleNotFoundError:\n            _python = None\n        self.filters = getattr(_python, 'filters', {})\n        self.validators = getattr(_python, 'validators', {})\n        # overwrite placeholder method if function found\n        self.process_info = getattr(_python, 'process_info', self.process_info)\n\n        self.filelist = []\n        self.navlist = []\n        self.taglist = []\n        self.tagmap = {}\n        self.layouts = []\n        # anchors to be filled in by markdown processor\n        self.anchors = set()\n\n    def process_info(self, info, site):\n        \"\"\"Plugin placeholder\"\"\"\n        pass\n\n    def get_siteinfo(self):\n        \"\"\"Get the siteinfo from the yaml data file.\"\"\"\n        if not os.path.isfile(siteinfofn):\n            return\n        with open(siteinfofn, encoding='utf-8-sig') as f:\n            meta = yaml.safe_load(f)\n        # validate the site reflinks and add them\n        if 'reflinks' in meta:\n            for id in meta['reflinks']:\n                info = meta['reflinks'][id]\n                self.validate_sitereflink(id, info)\n                self.add_reflink(id, info)\n            del meta['reflinks']\n        self.site.update(meta)\n        # check for custom build directory \n        if 'build_dir' in meta:\n            builddir = os.path.expanduser(meta['build_dir'])\n            self.sitedir = os.path.abspath(builddir)\n\n    def validate_sitereflink(self, id, info):\n        if 'title' not in info:\n            raise UrubuError(_error.undef_reflink_key, fn=id, msg=id + ': title')\n        if 'url' not in info:\n            raise UrubuError(_error.undef_reflink_key, fn='_site.yml', msg=id + ': url')\n\n    def add_reflink(self, id, info):\n        \"\"\"Add a valid reflink to the site reflinks.\"\"\"\n        id = id.lower()\n        if id in self.site['reflinks']:\n            cFile = self.site['reflinks'][id]\n            errmsg = \"id '{ID}' in {FN} conflicts with {CFN}\".\\\n                format(ID=id, FN=info['fn'], CFN=cFile['fn'])\n            raise UrubuError(_error.ambig_refid, msg=errmsg)\n        self.site['reflinks'][id] = info\n\n    def finalize_local_url(self, url):\n        \"\"\"Add a base to a local URL, if configured.\"\"\"\n        if self.site['baseurl']:\n            url = '/' + self.site['baseurl'] + url\n        return url\n\n    def get_contentinfo(self):\n        \"\"\"Get info from the markdown content files.\"\"\"\n        pattern = '*.md'\n        ignore_patterns = self.get_ignore_patterns()\n        for path, dirnames, filenames in os.walk(self.cwd):\n            relpath = get_relpath(path, self.cwd)\n            if any(fnmatch.fnmatch(relpath, ip) for ip in ignore_patterns):\n                continue\n\n            content_found = index_found = False\n            for fn in filenames:\n                if fnmatch.fnmatch(fn, pattern):\n                    # normalize to convert ./foo into foo\n                    # to avoid problems with ignore_patterns matching\n                    relfn = os.path.normpath(os.path.join(relpath, fn))\n                    if any(fnmatch.fnmatch(relfn, ip) for ip in ignore_patterns):\n                        continue\n                    meta = readers.get_yamlfm(relfn)\n                    if meta is None:\n                        urubu_warn(_warning.no_yamlfm, fn=relfn)\n                        continue\n                    fileinfo = self.make_fileinfo(relfn, meta)\n                    self.filelist.append(fileinfo)\n                    self.process_info(fileinfo, self.site)\n                    # validate after file info has been added so it can be used\n                    self.validate_fileinfo(fileinfo)\n                    self.add_reflink(fileinfo['id'], fileinfo)\n                    if fn == 'index.md':\n                        index_found = True\n                        # start from fileinfo of index file\n                        navinfo = self.make_navinfo(relpath, fileinfo)\n                        self.navlist.append(navinfo)\n                        self.validate_navinfo(navinfo)\n                        self.add_reflink(navinfo['id'], navinfo)\n                        # add nav info to tag map\n                        self.add_info_to_tagmap(navinfo)\n                    else:\n                        content_found = True\n                        # add id for non-index files to tag tags\n                        self.add_info_to_tagmap(fileinfo)\n            # a folder with content but no index is an error\n            if content_found and not index_found:\n                raise UrubuError(_error.no_index, msg='', fn=relpath)\n\n    def validate_fileinfo(self, info):\n        fn = info['fn']\n        # layout is mandatory\n        if 'layout' not in info:\n            raise UrubuError(_error.undef_info, msg='layout', fn=fn)\n        if info['layout'] is None:\n            return\n        layout = info['layout']\n        # modification date, always available\n        t = os.path.getmtime(fn)\n        info['mdate'] = datetime.date.fromtimestamp(t)\n        # first run a validator if it exist\n        if layout in self.validators:\n            self.validators[layout](info)\n        # a validator may add/modify attributes\n        layout = info['layout']\n        if layout is None:\n            return\n        if layout not in self.layouts:\n            self.layouts.append(layout)\n        # title\n        if 'title' not in info:\n            raise UrubuError(_error.undef_info, msg='title', fn=fn)\n        # Support integer titles by converting to string\n        # this matters for the json dump for search\n        # test type explicitly to avoid problems with unicode titles...\n        if isinstance(info['title'], int):\n            info['title'] = str(info['title'])\n        # date\n        if 'date' in info:\n            if not isinstance(info['date'], datetime.date):\n               raise UrubuError(_error.date_format, fn=fn)\n        # tags\n        if 'tags' in info:\n            # TODO: make sure it's a list of strings\n            if isinstance(info['tags'], str):\n                info['tags'] = [info['tags']]\n            # TODO: normalize tags\n\n    def validate_navinfo(self, info):\n        fn = info['indexfn']\n        if ('content' not in info) and ('order' not in info):\n            # exception: tag folder doesn't require content atribute\n            # set it to empty list align with normal folders\n            if info['id'] == tagid:\n                info['content'] = []\n            else:\n                raise UrubuError(_error.undef_content, fn=fn)\n        require_key('content', info, list, fn)\n\n    def make_fileinfo(self, relfn, meta):\n        \"\"\"Make a fileinfo dict.\"\"\"\n        info = {}\n        info['fn'] = relfn\n        info['components'] = components = get_components(\n            relfn if meta.get('saveas') is None else meta.get('saveas'))\n        info['id'] = make_id(components)\n        # make html url from ref\n        info['url'] = self.finalize_local_url(\n            make_id(components, lowercased=False) + self.site['link_ext'])\n        info['_anchorrefs'] = set()\n        info.update(meta)\n        return info\n\n    def make_navinfo(self, relpath, fileinfo):\n        \"\"\"Make a navinfo dict.\"\"\"\n        # start from fileinfo of index file\n        info = fileinfo.copy()\n        # overwrite attributes according to navinfo view\n        info['indexfn'] = info['fn']\n        info['fn'] = relpath\n        info['components'] = components = get_components(relpath)\n        info['id'] = make_id(components)\n        # add trailing slash for navigation url\n        info['url'] = self.finalize_local_url(info['id'])\n        if info['url'] != '/':\n            info['url'] += '/'\n        return info\n\n    def add_info_to_tagmap(self, info):\n        \"\"\"Add id to tagmap.\"\"\"\n        # tags are optional\n        if 'tags' not in info:\n            return\n        for tag in info['tags']:\n            if tag not in self.tagmap:\n                self.tagmap[tag] = []\n            self.tagmap[tag].append(info)\n\n    def resolve_reflinks(self):\n        for info in self.navlist:\n            if 'content' in info:\n                self.resolve_content(info)\n            else:  # order\n                assert 'order' in info\n                self.get_content(info)\n            # make reflinks content available in index file also\n            index_id = make_id(info['components'] + ['index'])\n            self.site['reflinks'][index_id]['content'] = info['content']\n\n    def resolve_content(self, info):\n        \"\"\"Resolve reflinks in a folder.\"\"\"\n        refcontent = []\n        for item in info['content']:\n            if isinstance(item, dict):\n                link = self.resolve_linkspec(item, info)\n            else:\n                link = self.resolve_ref(item, info)\n            refcontent.append(link)\n        # overwrite content ids with resolved refs\n        info['content'] = refcontent\n\n    def resolve_ref(self, ref, info):\n        \"\"\"Resolve a reference.\"\"\"\n        reflinks = self.site['reflinks']\n        ref = ref.lower()\n        path = os.path.normpath(os.path.join(info['fn'], ref))\n        indexfn = info['indexfn']\n        id = make_id(get_components(path, hasext=False))\n        if ref in reflinks:\n            if (ref != id) and (id in reflinks):\n                raise UrubuError(_error.ambig_ref, msg=ref, fn=indexfn)\n            id = ref\n        elif not id in reflinks:\n            raise UrubuError(_error.undef_ref, msg=ref, fn=indexfn)\n        return reflinks[id]\n\n    def resolve_linkspec(self, linkspec, info):\n        link = {}\n        link['url'] = link['title'] = linkspec.get('url', None)\n        if 'ref' in linkspec:\n            reflink = self.resolve_ref(linkspec['ref'], info)\n            link.update(reflink)\n        if 'title' in linkspec:\n            link['title'] = linkspec['title']\n        return link\n\n    def get_content(self, info):\n        \"\"\"Infer sorted content of a folder.\"\"\"\n        reflinks = self.site['reflinks']\n        refcontent = []\n        key = info['order']\n        reverse = info.get('reverse', False)\n        navcomps = info['components']\n\n        def pred(item):\n            itemcomps = item['components']\n            if len(itemcomps) == len(navcomps) + 1 and \\\n               itemcomps[:-1] == navcomps and \\\n               itemcomps[-1] != 'index' and \\\n               item['layout'] is not None:\n                if key not in item:\n                    raise UrubuError(_error.undef_key, msg=key, fn=item['fn'])\n                return True\n            return False\n        allinfo = itertools.chain(self.filelist, self.navlist)\n        refcontent = filter(pred, allinfo)\n\n        def get_keyval(item):\n            return item[key]\n        refcontent = sorted(refcontent, key=get_keyval, reverse=reverse)\n        info['content'] = refcontent\n\n    def make_breadcrumbs(self):\n        for info in self.filelist:\n            breadcrumbs = []\n            id = ''\n            comps = info['components']\n            # discard index\n            if comps[-1] == 'index':\n                comps = comps[:-1]\n            for comp in comps:\n                id = id + '/' + comp\n                id = id.lower()\n                breadcrumbs.append(self.site['reflinks'][id])\n            info['breadcrumbs'] = breadcrumbs\n\n    def make_pager(self):\n        for info in self.navlist:\n            content = info['content']\n            if not content:\n                continue\n            content[0]['prev'] = None\n            for i in range(1, len(content)):\n                content[i - 1]['next'] = content[i]\n                content[i]['prev'] = content[i - 1]\n            content[-1]['next'] = None\n\n    def make_taginfo(self, tag, content):\n        \"\"\"Make a taginfo dict.\"\"\"\n        info = {}\n        info['title'] = info['tag'] = tag\n        info['layout'] = tag_layout\n        info['fn'] = os.path.join(tagdir, tag, 'index')\n        info['components'] = components = (tagdir, tag)\n        info['id'] = make_id(components, lowercased=False)\n        # add trailing slash for tag index url\n        info['url'] = self.finalize_local_url(info['id']) + '/'\n        info['content'] = content\n        return info\n\n    def process_tags(self):\n        \"\"\" Process tag map and tag content.\"\"\"\n        def get_date(item):\n            \"\"\" Return item's date, or mdate as fallback.\"\"\"\n            if 'date' in item:\n                return item['date']\n            else:\n                return item['mdate']\n        for tag in self.tagmap.keys():\n            # sort tag content by date\n            content = sorted(self.tagmap[tag], key=get_date, reverse=True)\n            taginfo = self.make_taginfo(tag, content)\n            self.taglist.append(taginfo)\n            self.add_reflink(taginfo['id'], taginfo)\n\n        # sort tags according to content length, then alphabetically\n        # to get sort order right, invert content length\n        def get_tagkey(taginfo):\n            return (-len(taginfo['content']), taginfo['tag'])\n        self.taglist = sorted(self.taglist, key=get_tagkey)\n\n        # set up tagid info dict if it doesn't exist already\n        if tagid not in self.site['reflinks']:\n            self.site['reflinks'][tagid] = {}\n        self.site['reflinks'][tagid]['content'] = self.taglist\n        # propagate content to index file if it exists\n        if tagindexid in self.site['reflinks']:\n            self.site['reflinks'][tagindexid]['content'] = self.taglist\n\n    def get_ignore_patterns(self):\n        ignore_patterns = ('.?*', '_*', 'Makefile')\n        if 'ignore_patterns' in self.site:\n            ignore_patterns += tuple(self.site['ignore_patterns'])\n        return ignore_patterns\n\n    def get_keep_files(self):\n        if 'keep_files' in self.site:\n            return self.site['keep_files']\n        return []\n\n    def check_anchor_links(self):\n        for info in self.filelist:\n            for ar in info['_anchorrefs']:\n                if not ar in self.anchors:\n                    urubu_warn(_warning.undef_anchor, msg=ar, fn=info['id'] )\n\n    def make_site(self):\n        \"\"\"Make the site.\"\"\"\n        # Keep sitedir alive if it exists, for the server\n        if not os.path.exists(self.sitedir):\n            os.mkdir(self.sitedir)\n        make_clean(self.sitedir)\n        ignore_patterns = self.get_ignore_patterns() + ('*.md',)\n        ignore = shutil.ignore_patterns(*ignore_patterns)\n        for fn in os.listdir(self.cwd):\n            if any(fnmatch.fnmatch(fn, ip) for ip in ignore_patterns):\n                continue\n            wp = os.path.join(self.cwd, fn)\n            sp = os.path.join(self.sitedir, fn)\n            if os.path.isdir(wp):\n                shutil.copytree(wp, sp, ignore=ignore)\n            elif os.path.isfile(wp):\n                shutil.copyfile(wp, sp)\n\n        # explicit files to keep\n        for fn in self.get_keep_files():\n            wp = os.path.join(self.cwd, fn)\n            sp = os.path.join(self.sitedir, fn)\n            if os.path.isfile(wp):\n                shutil.copyfile(wp, sp)\n\n        # make tag index dirs\n        if self.taglist:\n            tagpath = os.path.join(self.sitedir, tagdir)\n            if not os.path.isdir(tagpath):\n                os.mkdir(tagpath)\n            for taginfo in self.taglist:\n                os.mkdir(os.path.join(tagpath, taginfo['tag']))\n        self.process_content()\n        self.check_anchor_links()\n\n    def process_content(self):\n        \"\"\"Process the content files.\"\"\"\n        p = processors.ContentProcessor(self.sitedir, project=self)\n        p.process()\n\ndef load():\n    proj = Project()\n    return proj\n\ndef build():\n    proj = load()\n    proj.get_contentinfo()\n    proj.resolve_reflinks()\n    proj.make_breadcrumbs()\n    proj.make_pager()\n    proj.process_tags()\n    proj.make_site()\n"
  },
  {
    "path": "urubu/readers.py",
    "content": "# Copyright 2014 Jan Decaluwe\n#\n# This file is part of Urubu.\n#\n# Urubu is free software: you can redistribute it and/or modify\n# it under the terms of the GNU Affero General Public License as published by\n# the Free Software Foundation, either version 3 of the License, or\n# (at your option) any later version.\n#\n# Urubu is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n# GNU Affero General Public License for more details.\n#\n# You should have received a copy of the GNU Affero General Public License\n# along with Urubu.  If not, see <http://www.gnu.org/licenses/>.\n\nimport yaml\nimport re\n\ndef get_yamlfm(fn):\n    \"\"\"Return the yaml frontmatter.\"\"\"\n    info = _get_yamlfm_helper(fn)\n    return info\n\n\ndef _get_yamlfm_helper(fn):\n    with open(fn, 'r', encoding='utf-8-sig') as f:\n        line = f.readline()\n        if line.strip() != '---':\n            return None\n        lines = []\n        while True:\n            line = f.readline()\n            if not line:\n                return None\n            elif line.strip() == '---':\n                s = ''.join(lines)\n                meta = yaml.safe_load(s)\n                if isinstance(meta, dict):\n                    return meta\n                else:\n                    return None\n            else:\n                lines.append(line)\n\n\n"
  },
  {
    "path": "urubu/tests/__init__.py",
    "content": "import contextlib, os\n\n@contextlib.contextmanager\ndef cd(path):\n    \"\"\"context manager to change directory temporarily.\n       From activestate recipes.\n\n    \"\"\"\n\n    prev_cwd = os.getcwd()\n    os.chdir(path)\n    try:\n        yield\n    finally:\n        os.chdir(prev_cwd)\n\n\n\n# reused from MyHDL\nimport pytest\n\nclass raises_kind(object):\n    def __init__(self, exc, kind):\n        self.exc = exc\n        self.kind = kind\n\n    def __enter__(self):\n        return None\n\n    def __exit__(self, *tp):\n        __tracebackhide__ = True\n        if tp[0] is None:\n            pytest.fail(\"DID NOT RAISE\")\n        assert tp[1].kind == self.kind\n        return issubclass(tp[0], self.exc)\n"
  },
  {
    "path": "urubu/tests/ambig_ref/_build/github.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>github</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n          </ul>\n\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li><a href=\"http://www.github.com\">GitHub</a></li>\n            <li><a href=\"/page.html\">page</a></li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <div class=\"page-header\">\n    <h1>github</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"content\">\n      <div class=\"col-md-7\" role=\"main\">\n        \n      </div>\n    </div>\n\n\n  </div>\n\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <script src=\"https://code.jquery.com/jquery.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n\n  </body>\n</html>\n"
  },
  {
    "path": "urubu/tests/ambig_ref/_build/index.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>test</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n          </ul>\n\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li><a href=\"http://www.github.com\">GitHub</a></li>\n            <li><a href=\"/page.html\">page</a></li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <div class=\"page-header\">\n    <h1>test</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"content\">\n      <div class=\"col-md-7\" role=\"main\">\n        \n      </div>\n    </div>\n\n\n  </div>\n\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <script src=\"https://code.jquery.com/jquery.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n\n  </body>\n</html>\n"
  },
  {
    "path": "urubu/tests/ambig_ref/_build/page.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>page</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n          </ul>\n\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li><a href=\"http://www.github.com\">GitHub</a></li>\n            <li class=\"active\"><a href=\"/page.html\">page</a></li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <div class=\"page-header\">\n    <h1>page</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"content\">\n      <div class=\"col-md-7\" role=\"main\">\n        \n      </div>\n    </div>\n\n\n  </div>\n\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <script src=\"https://code.jquery.com/jquery.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n\n  </body>\n</html>\n"
  },
  {
    "path": "urubu/tests/ambig_ref/_layouts/_base.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>{{this.title}}</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    {% set bootstrap = \"3.1.1\" %}\n    {% if site.bootstrap %}\n    {%   set bootstrap = site.bootstrap %}\n    {% endif %}\n    {% if site.bootswatch %}\n    {%   set theme_path = \"bootswatch/\"+ bootstrap + '/' + site.bootswatch %}\n    {% else %}\n    {%   set theme_path = \"bootstrap/\" + bootstrap + \"/css\" %}\n    {% endif %}\n    <link href=\"//netdna.bootstrapcdn.com/{{theme_path}}/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    {% set url_prefix = '' %}\n    {% if site.baseurl %}\n    {%   set url_prefix = '/' + site.baseurl %}\n    {% endif %}\n    <link href=\"{{url_prefix + '/css/site.css'}}\" rel=\"stylesheet\" media=\"screen\">\n    <link href=\"{{url_prefix + '/css/syntax.css'}}\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    {% set navbar_style = \"navbar-default\" %}\n    {% if site.navbar_inverse %}\n    {%   set navbar_style = \"navbar-inverse\" %}\n    {% endif %}\n    {% set navbar_right_items = 2 %}\n    {% if site.navbar_right_items %}\n    {%   set navbar_right_items = site.navbar_right_items %}\n    {% endif %}\n    <div class=\"navbar {{navbar_style}} navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"{{url_prefix + '/'}}\">{{site.brand}}</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            {% block home %}\n            {% endblock %}\n            {% for item in site.reflinks['/'].content[:-navbar_right_items] %}\n            {%   set context = '' %}\n            {%   if item.components|d and this.components[0] == item.components[0] %}\n            {%     set context = ' class=\"active\"' %}\n            {%   endif %}\n            {%   if item.content|d and item.dropdown %}\n            <li{{context}} class=\"dropdown\">\n              <a href=\"{{item.url}}\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">{{item.title}} <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                {% for subitem in item.content %}\n                <li><a href=\"{{subitem.url}}\">{{subitem.title}}</a></li>\n                {% endfor %}\n              </ul>\n            </li>\n            {% else %}\n            <li{{context}}><a href=\"{{item.url}}\">{{item.title}}</a></li>\n            {%   endif %}\n            {% endfor %}\n          </ul>\n\n          <ul class=\"nav navbar-nav navbar-right\">\n            {% for item in site.reflinks['/'].content[-navbar_right_items:] %}\n            {%   set context = '' %}\n            {%   if item.components|d and this.components[0] == item.components[0] %}\n            {%     set context = ' class=\"active\"' %}\n            {%   endif %}\n            {%   if item.content|d and item.dropdown %}\n            <li{{context}} class=\"dropdown\">\n              <a href=\"{{item.url}}\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">{{item.title}} <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                {% for subitem in item.content %}\n                <li><a href=\"{{subitem.url}}\">{{subitem.title}}</a></li>\n                {% endfor %}\n              </ul>\n            </li>\n            {% else %}\n            <li{{context}}><a href=\"{{item.url}}\">{{item.title}}</a></li>\n            {%   endif %}\n            {% endfor %}\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n    {% block body %}\n    {% endblock %}\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <script src=\"https://code.jquery.com/jquery.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/{{bootstrap}}/js/bootstrap.min.js\"></script>\n\n  </body>\n</html>\n\n"
  },
  {
    "path": "urubu/tests/ambig_ref/_layouts/page.html",
    "content": "{% extends \"_base.html\" %}\n\n{% block body %}\n\n<div class=\"container\">\n\n  <div class=\"page-header\">\n    {% block title %}\n    <h1>{{this.title}}</h1>\n    {% endblock %}\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"content\">\n      {% block content %}\n      <div class=\"col-md-7\" role=\"main\">\n        {{this.body}}\n      </div>\n      {% endblock %}\n    </div>\n\n    {% block sidebar %}\n    {% if this.toc %}\n    <div class=\"col-md-3\" role=\"complementary\">\n      <nav class=\"hidden-print hidden-xs hidden-sm\">\n        <div class=\"sidebar\" data-spy=\"affix\" data-offset-top=\"80\" data-offset-bottom=\"60\">\n          <div class=\"well\">\n            <a href=\"#\"><strong>{{this.title}}</strong></a>\n            {{this.toc}}\n          </div>\n        </div>\n      </nav>\n    </div>\n    {% endif %}\n    {% endblock %}\n\n  </div>\n\n  {% if this.pager %}\n  <ul class=\"pager\">\n    {% if this.prev %}\n    <li class=\"previous\"><a href=\"{{this.prev.url}}\">&larr; {{this.prev.title}}</a></li>\n    {% endif %}\n    {% if this.next %}\n    <li class=\"next\"><a href=\"{{this.next.url}}\">{{this.next.title}} &rarr;</a></li>\n    {% endif %}\n  </ul>\n  {% endif %}\n\n\n</div>\n\n{% endblock %}\n\n"
  },
  {
    "path": "urubu/tests/ambig_ref/_site.yml",
    "content": "brand: Urubu \n\nbootswatch: null \nnavbar_inverse: false \nbootstrap: 3.3.4\n\nignore_patterns: ['*.py', 'README.md']\n\nreflinks:\n    jandecaluwe:\n        url: ttp://www.jandecaluwe.com\n        title: Jan Decaluwe\n    myhdl_site: \n        url: http://www.myhdl.org \n        title: MyHDL website\n    dev_myhdl_site: \n        url: http://dev.myhdl.org \n        title: MyHDL development website\n    content_license:\n        url: http://creativecommons.org/licenses/by-sa/3.0/\n        title: CC-BY-SA License\n    software_license:\n        url: http://www.gnu.org/licenses/agpl-3.0.txt\n        title: GNU Affero General Public License\n    bitbucket:\n        url: http://www.bitbucket.com\n        title: Bitbucket\n    github:\n        url: http://www.github.com\n        title: GitHub\n    markdown:\n        url: http://daringfireball.net/projects/markdown/  \n        title: Markdown\n    markdown_extra:\n        url: http://pythonhosted.org/Markdown/extensions/extra.html\n        title: Markdown Extra\n    python_markdown:\n        url: http://pythonhosted.org/Markdown/\n        title: Python-Markdown \n    pygments:\n        url: http://pygments.org\n        title: Pygments\n    jinja2:\n        url: http://jinja.pocoo.org\n        title: Jinja2\n    bootstrap:\n        url: http://getbootstrap.com\n        title: Bootstrap\n    bootswatch:\n        url: http://bootswatch.com\n        title: Bootswatch\n    pyyaml:\n        url: http://pyyaml.org\n        title: PyYAML\n    jekyll:\n        url: http://jekyllrb.com\n        title: Jekyll\n    pelican:\n        url: http://getpelican.com\n        title: Pelican\n    virtualenv:\n        url: http://www.virtualenv.org/en/latest/virtualenv.html\n        title: virtualenv\n    urubu_repo:\n        url: https://github.com/jandecaluwe/urubu\n        title: Urubu repo\n    tables: \n        url: http://pythonhosted.org/Markdown/extensions/tables.html\n        title: Tables\n    abbrev: \n        url: http://pythonhosted.org/Markdown/extensions/abbreviations.html\n        title: Abbrevations\n    attr_list:\n        url: http://pythonhosted.org/Markdown/extensions/attr_list.html\n        title: Attribute lists\n    def_list: \n        url: http://pythonhosted.org/Markdown/extensions/definition_lists.html\n        title: Definition Lists\n    fenced_code: \n        url: http://pythonhosted.org/Markdown/extensions/fenced_code_blocks.html\n        title: Fenced Code Blocks\n    markdown_checklist: \n        url: https://github.com/FND/markdown-checklist\n        title: GitHub style Task Lists\n    code_hilite: \n        url: http://pythonhosted.org/Markdown/extensions/code_hilite.html\n        title: CodeHilite\n    urubu-quickstart:\n        url: http://urubu-quickstart.jandecaluwe.com\n        title: Urubu Quickstart\n"
  },
  {
    "path": "urubu/tests/ambig_ref/github.md",
    "content": "---\ntitle: github \nlayout: page \n---\n\n"
  },
  {
    "path": "urubu/tests/ambig_ref/index.md",
    "content": "---\ntitle: test \nlayout: page \ncontent:\n    - github \n    - page\n---\n"
  },
  {
    "path": "urubu/tests/ambig_ref/page.md",
    "content": "---\ntitle: page \nlayout: page \n---\n\n"
  },
  {
    "path": "urubu/tests/ambig_ref_md/_layouts/_base.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>{{this.title}}</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    {% set bootstrap = \"3.1.1\" %}\n    {% if site.bootstrap %}\n    {%   set bootstrap = site.bootstrap %}\n    {% endif %}\n    {% if site.bootswatch %}\n    {%   set theme_path = \"bootswatch/\"+ bootstrap + '/' + site.bootswatch %}\n    {% else %}\n    {%   set theme_path = \"bootstrap/\" + bootstrap + \"/css\" %}\n    {% endif %}\n    <link href=\"//netdna.bootstrapcdn.com/{{theme_path}}/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    {% set url_prefix = '' %}\n    {% if site.baseurl %}\n    {%   set url_prefix = '/' + site.baseurl %}\n    {% endif %}\n    <link href=\"{{url_prefix + '/css/site.css'}}\" rel=\"stylesheet\" media=\"screen\">\n    <link href=\"{{url_prefix + '/css/syntax.css'}}\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    {% set navbar_style = \"navbar-default\" %}\n    {% if site.navbar_inverse %}\n    {%   set navbar_style = \"navbar-inverse\" %}\n    {% endif %}\n    {% set navbar_right_items = 2 %}\n    {% if site.navbar_right_items %}\n    {%   set navbar_right_items = site.navbar_right_items %}\n    {% endif %}\n    <div class=\"navbar {{navbar_style}} navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"{{url_prefix + '/'}}\">{{site.brand}}</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            {% block home %}\n            {% endblock %}\n            {% for item in site.reflinks['/'].content[:-navbar_right_items] %}\n            {%   set context = '' %}\n            {%   if item.components|d and this.components[0] == item.components[0] %}\n            {%     set context = ' class=\"active\"' %}\n            {%   endif %}\n            {%   if item.content|d and item.dropdown %}\n            <li{{context}} class=\"dropdown\">\n              <a href=\"{{item.url}}\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">{{item.title}} <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                {% for subitem in item.content %}\n                <li><a href=\"{{subitem.url}}\">{{subitem.title}}</a></li>\n                {% endfor %}\n              </ul>\n            </li>\n            {% else %}\n            <li{{context}}><a href=\"{{item.url}}\">{{item.title}}</a></li>\n            {%   endif %}\n            {% endfor %}\n          </ul>\n\n          <ul class=\"nav navbar-nav navbar-right\">\n            {% for item in site.reflinks['/'].content[-navbar_right_items:] %}\n            {%   set context = '' %}\n            {%   if item.components|d and this.components[0] == item.components[0] %}\n            {%     set context = ' class=\"active\"' %}\n            {%   endif %}\n            {%   if item.content|d and item.dropdown %}\n            <li{{context}} class=\"dropdown\">\n              <a href=\"{{item.url}}\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">{{item.title}} <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                {% for subitem in item.content %}\n                <li><a href=\"{{subitem.url}}\">{{subitem.title}}</a></li>\n                {% endfor %}\n              </ul>\n            </li>\n            {% else %}\n            <li{{context}}><a href=\"{{item.url}}\">{{item.title}}</a></li>\n            {%   endif %}\n            {% endfor %}\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n    {% block body %}\n    {% endblock %}\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <script src=\"https://code.jquery.com/jquery.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/{{bootstrap}}/js/bootstrap.min.js\"></script>\n\n  </body>\n</html>\n\n"
  },
  {
    "path": "urubu/tests/ambig_ref_md/_layouts/page.html",
    "content": "{% extends \"_base.html\" %}\n\n{% block body %}\n\n<div class=\"container\">\n\n  <div class=\"page-header\">\n    {% block title %}\n    <h1>{{this.title}}</h1>\n    {% endblock %}\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"content\">\n      {% block content %}\n      <div class=\"col-md-7\" role=\"main\">\n        {{this.body}}\n      </div>\n      {% endblock %}\n    </div>\n\n    {% block sidebar %}\n    {% if this.toc %}\n    <div class=\"col-md-3\" role=\"complementary\">\n      <nav class=\"hidden-print hidden-xs hidden-sm\">\n        <div class=\"sidebar\" data-spy=\"affix\" data-offset-top=\"80\" data-offset-bottom=\"60\">\n          <div class=\"well\">\n            <a href=\"#\"><strong>{{this.title}}</strong></a>\n            {{this.toc}}\n          </div>\n        </div>\n      </nav>\n    </div>\n    {% endif %}\n    {% endblock %}\n\n  </div>\n\n  {% if this.pager %}\n  <ul class=\"pager\">\n    {% if this.prev %}\n    <li class=\"previous\"><a href=\"{{this.prev.url}}\">&larr; {{this.prev.title}}</a></li>\n    {% endif %}\n    {% if this.next %}\n    <li class=\"next\"><a href=\"{{this.next.url}}\">{{this.next.title}} &rarr;</a></li>\n    {% endif %}\n  </ul>\n  {% endif %}\n\n\n</div>\n\n{% endblock %}\n\n"
  },
  {
    "path": "urubu/tests/ambig_ref_md/_site.yml",
    "content": "brand: Urubu \n\nbootswatch: null \nnavbar_inverse: false \nbootstrap: 3.3.4\n\nignore_patterns: ['*.py', 'README.md']\n\nreflinks:\n    jandecaluwe:\n        url: ttp://www.jandecaluwe.com\n        title: Jan Decaluwe\n    myhdl_site: \n        url: http://www.myhdl.org \n        title: MyHDL website\n    dev_myhdl_site: \n        url: http://dev.myhdl.org \n        title: MyHDL development website\n    content_license:\n        url: http://creativecommons.org/licenses/by-sa/3.0/\n        title: CC-BY-SA License\n    software_license:\n        url: http://www.gnu.org/licenses/agpl-3.0.txt\n        title: GNU Affero General Public License\n    bitbucket:\n        url: http://www.bitbucket.com\n        title: Bitbucket\n    github:\n        url: http://www.github.com\n        title: GitHub\n    markdown:\n        url: http://daringfireball.net/projects/markdown/  \n        title: Markdown\n    markdown_extra:\n        url: http://pythonhosted.org/Markdown/extensions/extra.html\n        title: Markdown Extra\n    python_markdown:\n        url: http://pythonhosted.org/Markdown/\n        title: Python-Markdown \n    pygments:\n        url: http://pygments.org\n        title: Pygments\n    jinja2:\n        url: http://jinja.pocoo.org\n        title: Jinja2\n    bootstrap:\n        url: http://getbootstrap.com\n        title: Bootstrap\n    bootswatch:\n        url: http://bootswatch.com\n        title: Bootswatch\n    pyyaml:\n        url: http://pyyaml.org\n        title: PyYAML\n    jekyll:\n        url: http://jekyllrb.com\n        title: Jekyll\n    pelican:\n        url: http://getpelican.com\n        title: Pelican\n    virtualenv:\n        url: http://www.virtualenv.org/en/latest/virtualenv.html\n        title: virtualenv\n    urubu_repo:\n        url: https://github.com/jandecaluwe/urubu\n        title: Urubu repo\n    tables: \n        url: http://pythonhosted.org/Markdown/extensions/tables.html\n        title: Tables\n    abbrev: \n        url: http://pythonhosted.org/Markdown/extensions/abbreviations.html\n        title: Abbrevations\n    attr_list:\n        url: http://pythonhosted.org/Markdown/extensions/attr_list.html\n        title: Attribute lists\n    def_list: \n        url: http://pythonhosted.org/Markdown/extensions/definition_lists.html\n        title: Definition Lists\n    fenced_code: \n        url: http://pythonhosted.org/Markdown/extensions/fenced_code_blocks.html\n        title: Fenced Code Blocks\n    markdown_checklist: \n        url: https://github.com/FND/markdown-checklist\n        title: GitHub style Task Lists\n    code_hilite: \n        url: http://pythonhosted.org/Markdown/extensions/code_hilite.html\n        title: CodeHilite\n    urubu-quickstart:\n        url: http://urubu-quickstart.jandecaluwe.com\n        title: Urubu Quickstart\n"
  },
  {
    "path": "urubu/tests/ambig_ref_md/github.md",
    "content": "---\ntitle: github \nlayout: page \n---\n\n"
  },
  {
    "path": "urubu/tests/ambig_ref_md/index.md",
    "content": "---\ntitle: test \nlayout: page \ncontent:\n    - page\n---\n"
  },
  {
    "path": "urubu/tests/ambig_ref_md/page.md",
    "content": "---\ntitle: page \nlayout: page \n---\n\nAmbiguous reference: [github].\n\n"
  },
  {
    "path": "urubu/tests/ambig_refid/_build/index.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>test</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n          </ul>\n\n          <ul class=\"nav navbar-nav navbar-right\">\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <div class=\"page-header\">\n    <h1>test</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"content\">\n      <div class=\"col-md-7\" role=\"main\">\n        \n      </div>\n    </div>\n\n\n  </div>\n\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <script src=\"https://code.jquery.com/jquery.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n\n  </body>\n</html>\n"
  },
  {
    "path": "urubu/tests/ambig_refid/_build/page.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>page</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n          </ul>\n\n          <ul class=\"nav navbar-nav navbar-right\">\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <div class=\"page-header\">\n    <h1>page</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"content\">\n      <div class=\"col-md-7\" role=\"main\">\n        \n      </div>\n    </div>\n\n\n  </div>\n\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <script src=\"https://code.jquery.com/jquery.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n\n  </body>\n</html>\n"
  },
  {
    "path": "urubu/tests/ambig_refid/_layouts/_base.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>{{this.title}}</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    {% set bootstrap = \"3.1.1\" %}\n    {% if site.bootstrap %}\n    {%   set bootstrap = site.bootstrap %}\n    {% endif %}\n    {% if site.bootswatch %}\n    {%   set theme_path = \"bootswatch/\"+ bootstrap + '/' + site.bootswatch %}\n    {% else %}\n    {%   set theme_path = \"bootstrap/\" + bootstrap + \"/css\" %}\n    {% endif %}\n    <link href=\"//netdna.bootstrapcdn.com/{{theme_path}}/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    {% set url_prefix = '' %}\n    {% if site.baseurl %}\n    {%   set url_prefix = '/' + site.baseurl %}\n    {% endif %}\n    <link href=\"{{url_prefix + '/css/site.css'}}\" rel=\"stylesheet\" media=\"screen\">\n    <link href=\"{{url_prefix + '/css/syntax.css'}}\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    {% set navbar_style = \"navbar-default\" %}\n    {% if site.navbar_inverse %}\n    {%   set navbar_style = \"navbar-inverse\" %}\n    {% endif %}\n    {% set navbar_right_items = 2 %}\n    {% if site.navbar_right_items %}\n    {%   set navbar_right_items = site.navbar_right_items %}\n    {% endif %}\n    <div class=\"navbar {{navbar_style}} navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"{{url_prefix + '/'}}\">{{site.brand}}</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            {% block home %}\n            {% endblock %}\n            {% for item in site.reflinks['/'].content[:-navbar_right_items] %}\n            {%   set context = '' %}\n            {%   if item.components|d and this.components[0] == item.components[0] %}\n            {%     set context = ' class=\"active\"' %}\n            {%   endif %}\n            {%   if item.content|d and item.dropdown %}\n            <li{{context}} class=\"dropdown\">\n              <a href=\"{{item.url}}\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">{{item.title}} <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                {% for subitem in item.content %}\n                <li><a href=\"{{subitem.url}}\">{{subitem.title}}</a></li>\n                {% endfor %}\n              </ul>\n            </li>\n            {% else %}\n            <li{{context}}><a href=\"{{item.url}}\">{{item.title}}</a></li>\n            {%   endif %}\n            {% endfor %}\n          </ul>\n\n          <ul class=\"nav navbar-nav navbar-right\">\n            {% for item in site.reflinks['/'].content[-navbar_right_items:] %}\n            {%   set context = '' %}\n            {%   if item.components|d and this.components[0] == item.components[0] %}\n            {%     set context = ' class=\"active\"' %}\n            {%   endif %}\n            {%   if item.content|d and item.dropdown %}\n            <li{{context}} class=\"dropdown\">\n              <a href=\"{{item.url}}\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">{{item.title}} <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                {% for subitem in item.content %}\n                <li><a href=\"{{subitem.url}}\">{{subitem.title}}</a></li>\n                {% endfor %}\n              </ul>\n            </li>\n            {% else %}\n            <li{{context}}><a href=\"{{item.url}}\">{{item.title}}</a></li>\n            {%   endif %}\n            {% endfor %}\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n    {% block body %}\n    {% endblock %}\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <script src=\"https://code.jquery.com/jquery.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/{{bootstrap}}/js/bootstrap.min.js\"></script>\n\n  </body>\n</html>\n\n"
  },
  {
    "path": "urubu/tests/ambig_refid/_layouts/page.html",
    "content": "{% extends \"_base.html\" %}\n\n{% block body %}\n\n<div class=\"container\">\n\n  <div class=\"page-header\">\n    {% block title %}\n    <h1>{{this.title}}</h1>\n    {% endblock %}\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"content\">\n      {% block content %}\n      <div class=\"col-md-7\" role=\"main\">\n        {{this.body}}\n      </div>\n      {% endblock %}\n    </div>\n\n    {% block sidebar %}\n    {% if this.toc %}\n    <div class=\"col-md-3\" role=\"complementary\">\n      <nav class=\"hidden-print hidden-xs hidden-sm\">\n        <div class=\"sidebar\" data-spy=\"affix\" data-offset-top=\"80\" data-offset-bottom=\"60\">\n          <div class=\"well\">\n            <a href=\"#\"><strong>{{this.title}}</strong></a>\n            {{this.toc}}\n          </div>\n        </div>\n      </nav>\n    </div>\n    {% endif %}\n    {% endblock %}\n\n  </div>\n\n  {% if this.pager %}\n  <ul class=\"pager\">\n    {% if this.prev %}\n    <li class=\"previous\"><a href=\"{{this.prev.url}}\">&larr; {{this.prev.title}}</a></li>\n    {% endif %}\n    {% if this.next %}\n    <li class=\"next\"><a href=\"{{this.next.url}}\">{{this.next.title}} &rarr;</a></li>\n    {% endif %}\n  </ul>\n  {% endif %}\n\n\n</div>\n\n{% endblock %}\n\n"
  },
  {
    "path": "urubu/tests/ambig_refid/_site.yml",
    "content": "brand: Urubu \n\nbootswatch: null \nnavbar_inverse: false \nbootstrap: 3.3.4\n\nignore_patterns: ['*.py', 'README.md']\n\nreflinks:\n    jandecaluwe:\n        url: ttp://www.jandecaluwe.com\n        title: Jan Decaluwe\n    myhdl_site: \n        url: http://www.myhdl.org \n        title: MyHDL website\n    dev_myhdl_site: \n        url: http://dev.myhdl.org \n        title: MyHDL development website\n    content_license:\n        url: http://creativecommons.org/licenses/by-sa/3.0/\n        title: CC-BY-SA License\n    software_license:\n        url: http://www.gnu.org/licenses/agpl-3.0.txt\n        title: GNU Affero General Public License\n    bitbucket:\n        url: http://www.bitbucket.com\n        title: Bitbucket\n    github:\n        url: http://www.github.com\n        title: GitHub\n    markdown:\n        url: http://daringfireball.net/projects/markdown/  \n        title: Markdown\n    markdown_extra:\n        url: http://pythonhosted.org/Markdown/extensions/extra.html\n        title: Markdown Extra\n    python_markdown:\n        url: http://pythonhosted.org/Markdown/\n        title: Python-Markdown \n    pygments:\n        url: http://pygments.org\n        title: Pygments\n    jinja2:\n        url: http://jinja.pocoo.org\n        title: Jinja2\n    bootstrap:\n        url: http://getbootstrap.com\n        title: Bootstrap\n    bootswatch:\n        url: http://bootswatch.com\n        title: Bootswatch\n    pyyaml:\n        url: http://pyyaml.org\n        title: PyYAML\n    jekyll:\n        url: http://jekyllrb.com\n        title: Jekyll\n    pelican:\n        url: http://getpelican.com\n        title: Pelican\n    virtualenv:\n        url: http://www.virtualenv.org/en/latest/virtualenv.html\n        title: virtualenv\n    urubu_repo:\n        url: https://github.com/jandecaluwe/urubu\n        title: Urubu repo\n    tables: \n        url: http://pythonhosted.org/Markdown/extensions/tables.html\n        title: Tables\n    abbrev: \n        url: http://pythonhosted.org/Markdown/extensions/abbreviations.html\n        title: Abbrevations\n    attr_list:\n        url: http://pythonhosted.org/Markdown/extensions/attr_list.html\n        title: Attribute lists\n    def_list: \n        url: http://pythonhosted.org/Markdown/extensions/definition_lists.html\n        title: Definition Lists\n    fenced_code: \n        url: http://pythonhosted.org/Markdown/extensions/fenced_code_blocks.html\n        title: Fenced Code Blocks\n    markdown_checklist: \n        url: https://github.com/FND/markdown-checklist\n        title: GitHub style Task Lists\n    code_hilite: \n        url: http://pythonhosted.org/Markdown/extensions/code_hilite.html\n        title: CodeHilite\n    urubu-quickstart:\n        url: http://urubu-quickstart.jandecaluwe.com\n        title: Urubu Quickstart\n"
  },
  {
    "path": "urubu/tests/ambig_refid/index.md",
    "content": "---\ntitle: test \nlayout: page \ncontent: []\n---\n"
  },
  {
    "path": "urubu/tests/ambig_refid/page/index.md",
    "content": "---\ntitle: pagedir \nlayout: page \ncontent: []\n---\n"
  },
  {
    "path": "urubu/tests/ambig_refid/page.md",
    "content": "---\ntitle: page \nlayout: page \n---\n\n"
  },
  {
    "path": "urubu/tests/date_format/_build/index.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>test</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n          </ul>\n\n          <ul class=\"nav navbar-nav navbar-right\">\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <div class=\"page-header\">\n    <h1>test</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"content\">\n      <div class=\"col-md-7\" role=\"main\">\n        \n      </div>\n    </div>\n\n\n  </div>\n\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <script src=\"https://code.jquery.com/jquery.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n\n  </body>\n</html>\n"
  },
  {
    "path": "urubu/tests/date_format/_build/page.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>page</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n          </ul>\n\n          <ul class=\"nav navbar-nav navbar-right\">\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <div class=\"page-header\">\n    <h1>page</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"content\">\n      <div class=\"col-md-7\" role=\"main\">\n        \n      </div>\n    </div>\n\n\n  </div>\n\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <script src=\"https://code.jquery.com/jquery.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n\n  </body>\n</html>\n"
  },
  {
    "path": "urubu/tests/date_format/_layouts/_base.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>{{this.title}}</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    {% set bootstrap = \"3.1.1\" %}\n    {% if site.bootstrap %}\n    {%   set bootstrap = site.bootstrap %}\n    {% endif %}\n    {% if site.bootswatch %}\n    {%   set theme_path = \"bootswatch/\"+ bootstrap + '/' + site.bootswatch %}\n    {% else %}\n    {%   set theme_path = \"bootstrap/\" + bootstrap + \"/css\" %}\n    {% endif %}\n    <link href=\"//netdna.bootstrapcdn.com/{{theme_path}}/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    {% set url_prefix = '' %}\n    {% if site.baseurl %}\n    {%   set url_prefix = '/' + site.baseurl %}\n    {% endif %}\n    <link href=\"{{url_prefix + '/css/site.css'}}\" rel=\"stylesheet\" media=\"screen\">\n    <link href=\"{{url_prefix + '/css/syntax.css'}}\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    {% set navbar_style = \"navbar-default\" %}\n    {% if site.navbar_inverse %}\n    {%   set navbar_style = \"navbar-inverse\" %}\n    {% endif %}\n    {% set navbar_right_items = 2 %}\n    {% if site.navbar_right_items %}\n    {%   set navbar_right_items = site.navbar_right_items %}\n    {% endif %}\n    <div class=\"navbar {{navbar_style}} navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"{{url_prefix + '/'}}\">{{site.brand}}</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            {% block home %}\n            {% endblock %}\n            {% for item in site.reflinks['/'].content[:-navbar_right_items] %}\n            {%   set context = '' %}\n            {%   if item.components|d and this.components[0] == item.components[0] %}\n            {%     set context = ' class=\"active\"' %}\n            {%   endif %}\n            {%   if item.content|d and item.dropdown %}\n            <li{{context}} class=\"dropdown\">\n              <a href=\"{{item.url}}\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">{{item.title}} <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                {% for subitem in item.content %}\n                <li><a href=\"{{subitem.url}}\">{{subitem.title}}</a></li>\n                {% endfor %}\n              </ul>\n            </li>\n            {% else %}\n            <li{{context}}><a href=\"{{item.url}}\">{{item.title}}</a></li>\n            {%   endif %}\n            {% endfor %}\n          </ul>\n\n          <ul class=\"nav navbar-nav navbar-right\">\n            {% for item in site.reflinks['/'].content[-navbar_right_items:] %}\n            {%   set context = '' %}\n            {%   if item.components|d and this.components[0] == item.components[0] %}\n            {%     set context = ' class=\"active\"' %}\n            {%   endif %}\n            {%   if item.content|d and item.dropdown %}\n            <li{{context}} class=\"dropdown\">\n              <a href=\"{{item.url}}\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">{{item.title}} <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                {% for subitem in item.content %}\n                <li><a href=\"{{subitem.url}}\">{{subitem.title}}</a></li>\n                {% endfor %}\n              </ul>\n            </li>\n            {% else %}\n            <li{{context}}><a href=\"{{item.url}}\">{{item.title}}</a></li>\n            {%   endif %}\n            {% endfor %}\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n    {% block body %}\n    {% endblock %}\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <script src=\"https://code.jquery.com/jquery.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/{{bootstrap}}/js/bootstrap.min.js\"></script>\n\n  </body>\n</html>\n\n"
  },
  {
    "path": "urubu/tests/date_format/_layouts/page.html",
    "content": "{% extends \"_base.html\" %}\n\n{% block body %}\n\n<div class=\"container\">\n\n  <div class=\"page-header\">\n    {% block title %}\n    <h1>{{this.title}}</h1>\n    {% endblock %}\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"content\">\n      {% block content %}\n      <div class=\"col-md-7\" role=\"main\">\n        {{this.body}}\n      </div>\n      {% endblock %}\n    </div>\n\n    {% block sidebar %}\n    {% if this.toc %}\n    <div class=\"col-md-3\" role=\"complementary\">\n      <nav class=\"hidden-print hidden-xs hidden-sm\">\n        <div class=\"sidebar\" data-spy=\"affix\" data-offset-top=\"80\" data-offset-bottom=\"60\">\n          <div class=\"well\">\n            <a href=\"#\"><strong>{{this.title}}</strong></a>\n            {{this.toc}}\n          </div>\n        </div>\n      </nav>\n    </div>\n    {% endif %}\n    {% endblock %}\n\n  </div>\n\n  {% if this.pager %}\n  <ul class=\"pager\">\n    {% if this.prev %}\n    <li class=\"previous\"><a href=\"{{this.prev.url}}\">&larr; {{this.prev.title}}</a></li>\n    {% endif %}\n    {% if this.next %}\n    <li class=\"next\"><a href=\"{{this.next.url}}\">{{this.next.title}} &rarr;</a></li>\n    {% endif %}\n  </ul>\n  {% endif %}\n\n\n</div>\n\n{% endblock %}\n\n"
  },
  {
    "path": "urubu/tests/date_format/_site.yml",
    "content": "brand: Urubu \n\nbootswatch: null \nnavbar_inverse: false \nbootstrap: 3.3.4\n\nignore_patterns: ['*.py', 'README.md']\n\nreflinks:\n    jandecaluwe:\n        url: ttp://www.jandecaluwe.com\n        title: Jan Decaluwe\n    myhdl_site: \n        url: http://www.myhdl.org \n        title: MyHDL website\n    dev_myhdl_site: \n        url: http://dev.myhdl.org \n        title: MyHDL development website\n    content_license:\n        url: http://creativecommons.org/licenses/by-sa/3.0/\n        title: CC-BY-SA License\n    software_license:\n        url: http://www.gnu.org/licenses/agpl-3.0.txt\n        title: GNU Affero General Public License\n    bitbucket:\n        url: http://www.bitbucket.com\n        title: Bitbucket\n    github:\n        url: http://www.github.com\n        title: GitHub\n    markdown:\n        url: http://daringfireball.net/projects/markdown/  \n        title: Markdown\n    markdown_extra:\n        url: http://pythonhosted.org/Markdown/extensions/extra.html\n        title: Markdown Extra\n    python_markdown:\n        url: http://pythonhosted.org/Markdown/\n        title: Python-Markdown \n    pygments:\n        url: http://pygments.org\n        title: Pygments\n    jinja2:\n        url: http://jinja.pocoo.org\n        title: Jinja2\n    bootstrap:\n        url: http://getbootstrap.com\n        title: Bootstrap\n    bootswatch:\n        url: http://bootswatch.com\n        title: Bootswatch\n    pyyaml:\n        url: http://pyyaml.org\n        title: PyYAML\n    jekyll:\n        url: http://jekyllrb.com\n        title: Jekyll\n    pelican:\n        url: http://getpelican.com\n        title: Pelican\n    virtualenv:\n        url: http://www.virtualenv.org/en/latest/virtualenv.html\n        title: virtualenv\n    urubu_repo:\n        url: https://github.com/jandecaluwe/urubu\n        title: Urubu repo\n    tables: \n        url: http://pythonhosted.org/Markdown/extensions/tables.html\n        title: Tables\n    abbrev: \n        url: http://pythonhosted.org/Markdown/extensions/abbreviations.html\n        title: Abbrevations\n    attr_list:\n        url: http://pythonhosted.org/Markdown/extensions/attr_list.html\n        title: Attribute lists\n    def_list: \n        url: http://pythonhosted.org/Markdown/extensions/definition_lists.html\n        title: Definition Lists\n    fenced_code: \n        url: http://pythonhosted.org/Markdown/extensions/fenced_code_blocks.html\n        title: Fenced Code Blocks\n    markdown_checklist: \n        url: https://github.com/FND/markdown-checklist\n        title: GitHub style Task Lists\n    code_hilite: \n        url: http://pythonhosted.org/Markdown/extensions/code_hilite.html\n        title: CodeHilite\n    urubu-quickstart:\n        url: http://urubu-quickstart.jandecaluwe.com\n        title: Urubu Quickstart\n"
  },
  {
    "path": "urubu/tests/date_format/index.md",
    "content": "---\ntitle: test \nlayout: page \ncontent:\n    - page\n---\n"
  },
  {
    "path": "urubu/tests/date_format/page.md",
    "content": "---\ntitle: page \nlayout: page \ndate: Sept 12, 1999\n---\n\n"
  },
  {
    "path": "urubu/tests/ignore_patterns/README.md",
    "content": "---\ntitle: README \nlayout: page \n---\n"
  },
  {
    "path": "urubu/tests/ignore_patterns/_build/index.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>test</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n          </ul>\n\n          <ul class=\"nav navbar-nav navbar-right\">\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <div class=\"page-header\">\n    <h1>test</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"content\">\n      <div class=\"col-md-7\" role=\"main\">\n        \n      </div>\n    </div>\n\n\n  </div>\n\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <script src=\"https://code.jquery.com/jquery.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n\n  </body>\n</html>\n"
  },
  {
    "path": "urubu/tests/ignore_patterns/_build/page.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>page</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n          </ul>\n\n          <ul class=\"nav navbar-nav navbar-right\">\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <div class=\"page-header\">\n    <h1>page</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"content\">\n      <div class=\"col-md-7\" role=\"main\">\n        \n      </div>\n    </div>\n\n\n  </div>\n\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <script src=\"https://code.jquery.com/jquery.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n\n  </body>\n</html>\n"
  },
  {
    "path": "urubu/tests/ignore_patterns/_layouts/_base.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>{{this.title}}</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    {% set bootstrap = \"3.1.1\" %}\n    {% if site.bootstrap %}\n    {%   set bootstrap = site.bootstrap %}\n    {% endif %}\n    {% if site.bootswatch %}\n    {%   set theme_path = \"bootswatch/\"+ bootstrap + '/' + site.bootswatch %}\n    {% else %}\n    {%   set theme_path = \"bootstrap/\" + bootstrap + \"/css\" %}\n    {% endif %}\n    <link href=\"//netdna.bootstrapcdn.com/{{theme_path}}/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    {% set url_prefix = '' %}\n    {% if site.baseurl %}\n    {%   set url_prefix = '/' + site.baseurl %}\n    {% endif %}\n    <link href=\"{{url_prefix + '/css/site.css'}}\" rel=\"stylesheet\" media=\"screen\">\n    <link href=\"{{url_prefix + '/css/syntax.css'}}\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    {% set navbar_style = \"navbar-default\" %}\n    {% if site.navbar_inverse %}\n    {%   set navbar_style = \"navbar-inverse\" %}\n    {% endif %}\n    {% set navbar_right_items = 2 %}\n    {% if site.navbar_right_items %}\n    {%   set navbar_right_items = site.navbar_right_items %}\n    {% endif %}\n    <div class=\"navbar {{navbar_style}} navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"{{url_prefix + '/'}}\">{{site.brand}}</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            {% block home %}\n            {% endblock %}\n            {% for item in site.reflinks['/'].content[:-navbar_right_items] %}\n            {%   set context = '' %}\n            {%   if item.components|d and this.components[0] == item.components[0] %}\n            {%     set context = ' class=\"active\"' %}\n            {%   endif %}\n            {%   if item.content|d and item.dropdown %}\n            <li{{context}} class=\"dropdown\">\n              <a href=\"{{item.url}}\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">{{item.title}} <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                {% for subitem in item.content %}\n                <li><a href=\"{{subitem.url}}\">{{subitem.title}}</a></li>\n                {% endfor %}\n              </ul>\n            </li>\n            {% else %}\n            <li{{context}}><a href=\"{{item.url}}\">{{item.title}}</a></li>\n            {%   endif %}\n            {% endfor %}\n          </ul>\n\n          <ul class=\"nav navbar-nav navbar-right\">\n            {% for item in site.reflinks['/'].content[-navbar_right_items:] %}\n            {%   set context = '' %}\n            {%   if item.components|d and this.components[0] == item.components[0] %}\n            {%     set context = ' class=\"active\"' %}\n            {%   endif %}\n            {%   if item.content|d and item.dropdown %}\n            <li{{context}} class=\"dropdown\">\n              <a href=\"{{item.url}}\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">{{item.title}} <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                {% for subitem in item.content %}\n                <li><a href=\"{{subitem.url}}\">{{subitem.title}}</a></li>\n                {% endfor %}\n              </ul>\n            </li>\n            {% else %}\n            <li{{context}}><a href=\"{{item.url}}\">{{item.title}}</a></li>\n            {%   endif %}\n            {% endfor %}\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n    {% block body %}\n    {% endblock %}\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <script src=\"https://code.jquery.com/jquery.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/{{bootstrap}}/js/bootstrap.min.js\"></script>\n\n  </body>\n</html>\n\n"
  },
  {
    "path": "urubu/tests/ignore_patterns/_layouts/page.html",
    "content": "{% extends \"_base.html\" %}\n\n{% block body %}\n\n<div class=\"container\">\n\n  <div class=\"page-header\">\n    {% block title %}\n    <h1>{{this.title}}</h1>\n    {% endblock %}\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"content\">\n      {% block content %}\n      <div class=\"col-md-7\" role=\"main\">\n        {{this.body}}\n      </div>\n      {% endblock %}\n    </div>\n\n    {% block sidebar %}\n    {% if this.toc %}\n    <div class=\"col-md-3\" role=\"complementary\">\n      <nav class=\"hidden-print hidden-xs hidden-sm\">\n        <div class=\"sidebar\" data-spy=\"affix\" data-offset-top=\"80\" data-offset-bottom=\"60\">\n          <div class=\"well\">\n            <a href=\"#\"><strong>{{this.title}}</strong></a>\n            {{this.toc}}\n          </div>\n        </div>\n      </nav>\n    </div>\n    {% endif %}\n    {% endblock %}\n\n  </div>\n\n  {% if this.pager %}\n  <ul class=\"pager\">\n    {% if this.prev %}\n    <li class=\"previous\"><a href=\"{{this.prev.url}}\">&larr; {{this.prev.title}}</a></li>\n    {% endif %}\n    {% if this.next %}\n    <li class=\"next\"><a href=\"{{this.next.url}}\">{{this.next.title}} &rarr;</a></li>\n    {% endif %}\n  </ul>\n  {% endif %}\n\n\n</div>\n\n{% endblock %}\n\n"
  },
  {
    "path": "urubu/tests/ignore_patterns/_site.yml",
    "content": "brand: Urubu \n\nbootswatch: null \nnavbar_inverse: false \nbootstrap: 3.3.4\n\nignore_patterns: ['*.py', 'README.md']\n\nreflinks:\n    jandecaluwe:\n        url: ttp://www.jandecaluwe.com\n        title: Jan Decaluwe\n    myhdl_site: \n        url: http://www.myhdl.org \n        title: MyHDL website\n    dev_myhdl_site: \n        url: http://dev.myhdl.org \n        title: MyHDL development website\n    content_license:\n        url: http://creativecommons.org/licenses/by-sa/3.0/\n        title: CC-BY-SA License\n    software_license:\n        url: http://www.gnu.org/licenses/agpl-3.0.txt\n        title: GNU Affero General Public License\n    bitbucket:\n        url: http://www.bitbucket.com\n        title: Bitbucket\n    github:\n        url: http://www.github.com\n        title: GitHub\n    markdown:\n        url: http://daringfireball.net/projects/markdown/  \n        title: Markdown\n    markdown_extra:\n        url: http://pythonhosted.org/Markdown/extensions/extra.html\n        title: Markdown Extra\n    python_markdown:\n        url: http://pythonhosted.org/Markdown/\n        title: Python-Markdown \n    pygments:\n        url: http://pygments.org\n        title: Pygments\n    jinja2:\n        url: http://jinja.pocoo.org\n        title: Jinja2\n    bootstrap:\n        url: http://getbootstrap.com\n        title: Bootstrap\n    bootswatch:\n        url: http://bootswatch.com\n        title: Bootswatch\n    pyyaml:\n        url: http://pyyaml.org\n        title: PyYAML\n    jekyll:\n        url: http://jekyllrb.com\n        title: Jekyll\n    pelican:\n        url: http://getpelican.com\n        title: Pelican\n    virtualenv:\n        url: http://www.virtualenv.org/en/latest/virtualenv.html\n        title: virtualenv\n    urubu_repo:\n        url: https://github.com/jandecaluwe/urubu\n        title: Urubu repo\n    tables: \n        url: http://pythonhosted.org/Markdown/extensions/tables.html\n        title: Tables\n    abbrev: \n        url: http://pythonhosted.org/Markdown/extensions/abbreviations.html\n        title: Abbrevations\n    attr_list:\n        url: http://pythonhosted.org/Markdown/extensions/attr_list.html\n        title: Attribute lists\n    def_list: \n        url: http://pythonhosted.org/Markdown/extensions/definition_lists.html\n        title: Definition Lists\n    fenced_code: \n        url: http://pythonhosted.org/Markdown/extensions/fenced_code_blocks.html\n        title: Fenced Code Blocks\n    markdown_checklist: \n        url: https://github.com/FND/markdown-checklist\n        title: GitHub style Task Lists\n    code_hilite: \n        url: http://pythonhosted.org/Markdown/extensions/code_hilite.html\n        title: CodeHilite\n    urubu-quickstart:\n        url: http://urubu-quickstart.jandecaluwe.com\n        title: Urubu Quickstart\n"
  },
  {
    "path": "urubu/tests/ignore_patterns/index.md",
    "content": "---\ntitle: test \nlayout: page \ncontent: []\n---\n"
  },
  {
    "path": "urubu/tests/ignore_patterns/page.md",
    "content": "---\ntitle: page \nlayout: page \n---\n"
  },
  {
    "path": "urubu/tests/no_index/_build/index.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>test</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n          </ul>\n\n          <ul class=\"nav navbar-nav navbar-right\">\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <div class=\"page-header\">\n    <h1>test</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"content\">\n      <div class=\"col-md-7\" role=\"main\">\n        \n      </div>\n    </div>\n\n\n  </div>\n\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <script src=\"https://code.jquery.com/jquery.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n\n  </body>\n</html>\n"
  },
  {
    "path": "urubu/tests/no_index/_build/page.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>page</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n          </ul>\n\n          <ul class=\"nav navbar-nav navbar-right\">\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <div class=\"page-header\">\n    <h1>page</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"content\">\n      <div class=\"col-md-7\" role=\"main\">\n        \n      </div>\n    </div>\n\n\n  </div>\n\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <script src=\"https://code.jquery.com/jquery.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n\n  </body>\n</html>\n"
  },
  {
    "path": "urubu/tests/no_index/_layouts/_base.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>{{this.title}}</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    {% set bootstrap = \"3.1.1\" %}\n    {% if site.bootstrap %}\n    {%   set bootstrap = site.bootstrap %}\n    {% endif %}\n    {% if site.bootswatch %}\n    {%   set theme_path = \"bootswatch/\"+ bootstrap + '/' + site.bootswatch %}\n    {% else %}\n    {%   set theme_path = \"bootstrap/\" + bootstrap + \"/css\" %}\n    {% endif %}\n    <link href=\"//netdna.bootstrapcdn.com/{{theme_path}}/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    {% set url_prefix = '' %}\n    {% if site.baseurl %}\n    {%   set url_prefix = '/' + site.baseurl %}\n    {% endif %}\n    <link href=\"{{url_prefix + '/css/site.css'}}\" rel=\"stylesheet\" media=\"screen\">\n    <link href=\"{{url_prefix + '/css/syntax.css'}}\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    {% set navbar_style = \"navbar-default\" %}\n    {% if site.navbar_inverse %}\n    {%   set navbar_style = \"navbar-inverse\" %}\n    {% endif %}\n    {% set navbar_right_items = 2 %}\n    {% if site.navbar_right_items %}\n    {%   set navbar_right_items = site.navbar_right_items %}\n    {% endif %}\n    <div class=\"navbar {{navbar_style}} navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"{{url_prefix + '/'}}\">{{site.brand}}</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            {% block home %}\n            {% endblock %}\n            {% for item in site.reflinks['/'].content[:-navbar_right_items] %}\n            {%   set context = '' %}\n            {%   if item.components|d and this.components[0] == item.components[0] %}\n            {%     set context = ' class=\"active\"' %}\n            {%   endif %}\n            {%   if item.content|d and item.dropdown %}\n            <li{{context}} class=\"dropdown\">\n              <a href=\"{{item.url}}\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">{{item.title}} <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                {% for subitem in item.content %}\n                <li><a href=\"{{subitem.url}}\">{{subitem.title}}</a></li>\n                {% endfor %}\n              </ul>\n            </li>\n            {% else %}\n            <li{{context}}><a href=\"{{item.url}}\">{{item.title}}</a></li>\n            {%   endif %}\n            {% endfor %}\n          </ul>\n\n          <ul class=\"nav navbar-nav navbar-right\">\n            {% for item in site.reflinks['/'].content[-navbar_right_items:] %}\n            {%   set context = '' %}\n            {%   if item.components|d and this.components[0] == item.components[0] %}\n            {%     set context = ' class=\"active\"' %}\n            {%   endif %}\n            {%   if item.content|d and item.dropdown %}\n            <li{{context}} class=\"dropdown\">\n              <a href=\"{{item.url}}\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">{{item.title}} <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                {% for subitem in item.content %}\n                <li><a href=\"{{subitem.url}}\">{{subitem.title}}</a></li>\n                {% endfor %}\n              </ul>\n            </li>\n            {% else %}\n            <li{{context}}><a href=\"{{item.url}}\">{{item.title}}</a></li>\n            {%   endif %}\n            {% endfor %}\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n    {% block body %}\n    {% endblock %}\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <script src=\"https://code.jquery.com/jquery.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/{{bootstrap}}/js/bootstrap.min.js\"></script>\n\n  </body>\n</html>\n\n"
  },
  {
    "path": "urubu/tests/no_index/_layouts/page.html",
    "content": "{% extends \"_base.html\" %}\n\n{% block body %}\n\n<div class=\"container\">\n\n  <div class=\"page-header\">\n    {% block title %}\n    <h1>{{this.title}}</h1>\n    {% endblock %}\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"content\">\n      {% block content %}\n      <div class=\"col-md-7\" role=\"main\">\n        {{this.body}}\n      </div>\n      {% endblock %}\n    </div>\n\n    {% block sidebar %}\n    {% if this.toc %}\n    <div class=\"col-md-3\" role=\"complementary\">\n      <nav class=\"hidden-print hidden-xs hidden-sm\">\n        <div class=\"sidebar\" data-spy=\"affix\" data-offset-top=\"80\" data-offset-bottom=\"60\">\n          <div class=\"well\">\n            <a href=\"#\"><strong>{{this.title}}</strong></a>\n            {{this.toc}}\n          </div>\n        </div>\n      </nav>\n    </div>\n    {% endif %}\n    {% endblock %}\n\n  </div>\n\n  {% if this.pager %}\n  <ul class=\"pager\">\n    {% if this.prev %}\n    <li class=\"previous\"><a href=\"{{this.prev.url}}\">&larr; {{this.prev.title}}</a></li>\n    {% endif %}\n    {% if this.next %}\n    <li class=\"next\"><a href=\"{{this.next.url}}\">{{this.next.title}} &rarr;</a></li>\n    {% endif %}\n  </ul>\n  {% endif %}\n\n\n</div>\n\n{% endblock %}\n\n"
  },
  {
    "path": "urubu/tests/no_index/_site.yml",
    "content": "brand: Urubu \n\nbootswatch: null \nnavbar_inverse: false \nbootstrap: 3.3.4\n\nignore_patterns: ['*.py', 'README.md']\n\nreflinks:\n    jandecaluwe:\n        url: ttp://www.jandecaluwe.com\n        title: Jan Decaluwe\n    myhdl_site: \n        url: http://www.myhdl.org \n        title: MyHDL website\n    dev_myhdl_site: \n        url: http://dev.myhdl.org \n        title: MyHDL development website\n    content_license:\n        url: http://creativecommons.org/licenses/by-sa/3.0/\n        title: CC-BY-SA License\n    software_license:\n        url: http://www.gnu.org/licenses/agpl-3.0.txt\n        title: GNU Affero General Public License\n    bitbucket:\n        url: http://www.bitbucket.com\n        title: Bitbucket\n    github:\n        url: http://www.github.com\n        title: GitHub\n    markdown:\n        url: http://daringfireball.net/projects/markdown/  \n        title: Markdown\n    markdown_extra:\n        url: http://pythonhosted.org/Markdown/extensions/extra.html\n        title: Markdown Extra\n    python_markdown:\n        url: http://pythonhosted.org/Markdown/\n        title: Python-Markdown \n    pygments:\n        url: http://pygments.org\n        title: Pygments\n    jinja2:\n        url: http://jinja.pocoo.org\n        title: Jinja2\n    bootstrap:\n        url: http://getbootstrap.com\n        title: Bootstrap\n    bootswatch:\n        url: http://bootswatch.com\n        title: Bootswatch\n    pyyaml:\n        url: http://pyyaml.org\n        title: PyYAML\n    jekyll:\n        url: http://jekyllrb.com\n        title: Jekyll\n    pelican:\n        url: http://getpelican.com\n        title: Pelican\n    virtualenv:\n        url: http://www.virtualenv.org/en/latest/virtualenv.html\n        title: virtualenv\n    urubu_repo:\n        url: https://github.com/jandecaluwe/urubu\n        title: Urubu repo\n    tables: \n        url: http://pythonhosted.org/Markdown/extensions/tables.html\n        title: Tables\n    abbrev: \n        url: http://pythonhosted.org/Markdown/extensions/abbreviations.html\n        title: Abbrevations\n    attr_list:\n        url: http://pythonhosted.org/Markdown/extensions/attr_list.html\n        title: Attribute lists\n    def_list: \n        url: http://pythonhosted.org/Markdown/extensions/definition_lists.html\n        title: Definition Lists\n    fenced_code: \n        url: http://pythonhosted.org/Markdown/extensions/fenced_code_blocks.html\n        title: Fenced Code Blocks\n    markdown_checklist: \n        url: https://github.com/FND/markdown-checklist\n        title: GitHub style Task Lists\n    code_hilite: \n        url: http://pythonhosted.org/Markdown/extensions/code_hilite.html\n        title: CodeHilite\n    urubu-quickstart:\n        url: http://urubu-quickstart.jandecaluwe.com\n        title: Urubu Quickstart\n"
  },
  {
    "path": "urubu/tests/no_index/folder/page.md",
    "content": "---\ntitle: page \nlayout: page \n---\n\n"
  },
  {
    "path": "urubu/tests/no_index/index.md",
    "content": "---\ntitle: test \nlayout: page \ncontent:\n    - page\n---\n"
  },
  {
    "path": "urubu/tests/no_index/page.md",
    "content": "---\ntitle: page \nlayout: page \n---\n\n"
  },
  {
    "path": "urubu/tests/no_yamlfm/_build/index.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>test</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n          </ul>\n\n          <ul class=\"nav navbar-nav navbar-right\">\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <div class=\"page-header\">\n    <h1>test</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"content\">\n      <div class=\"col-md-7\" role=\"main\">\n        \n      </div>\n    </div>\n\n\n  </div>\n\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <script src=\"https://code.jquery.com/jquery.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n\n  </body>\n</html>\n"
  },
  {
    "path": "urubu/tests/no_yamlfm/_layouts/_base.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>{{this.title}}</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    {% set bootstrap = \"3.1.1\" %}\n    {% if site.bootstrap %}\n    {%   set bootstrap = site.bootstrap %}\n    {% endif %}\n    {% if site.bootswatch %}\n    {%   set theme_path = \"bootswatch/\"+ bootstrap + '/' + site.bootswatch %}\n    {% else %}\n    {%   set theme_path = \"bootstrap/\" + bootstrap + \"/css\" %}\n    {% endif %}\n    <link href=\"//netdna.bootstrapcdn.com/{{theme_path}}/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    {% set url_prefix = '' %}\n    {% if site.baseurl %}\n    {%   set url_prefix = '/' + site.baseurl %}\n    {% endif %}\n    <link href=\"{{url_prefix + '/css/site.css'}}\" rel=\"stylesheet\" media=\"screen\">\n    <link href=\"{{url_prefix + '/css/syntax.css'}}\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    {% set navbar_style = \"navbar-default\" %}\n    {% if site.navbar_inverse %}\n    {%   set navbar_style = \"navbar-inverse\" %}\n    {% endif %}\n    {% set navbar_right_items = 2 %}\n    {% if site.navbar_right_items %}\n    {%   set navbar_right_items = site.navbar_right_items %}\n    {% endif %}\n    <div class=\"navbar {{navbar_style}} navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"{{url_prefix + '/'}}\">{{site.brand}}</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            {% block home %}\n            {% endblock %}\n            {% for item in site.reflinks['/'].content[:-navbar_right_items] %}\n            {%   set context = '' %}\n            {%   if item.components|d and this.components[0] == item.components[0] %}\n            {%     set context = ' class=\"active\"' %}\n            {%   endif %}\n            {%   if item.content|d and item.dropdown %}\n            <li{{context}} class=\"dropdown\">\n              <a href=\"{{item.url}}\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">{{item.title}} <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                {% for subitem in item.content %}\n                <li><a href=\"{{subitem.url}}\">{{subitem.title}}</a></li>\n                {% endfor %}\n              </ul>\n            </li>\n            {% else %}\n            <li{{context}}><a href=\"{{item.url}}\">{{item.title}}</a></li>\n            {%   endif %}\n            {% endfor %}\n          </ul>\n\n          <ul class=\"nav navbar-nav navbar-right\">\n            {% for item in site.reflinks['/'].content[-navbar_right_items:] %}\n            {%   set context = '' %}\n            {%   if item.components|d and this.components[0] == item.components[0] %}\n            {%     set context = ' class=\"active\"' %}\n            {%   endif %}\n            {%   if item.content|d and item.dropdown %}\n            <li{{context}} class=\"dropdown\">\n              <a href=\"{{item.url}}\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">{{item.title}} <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                {% for subitem in item.content %}\n                <li><a href=\"{{subitem.url}}\">{{subitem.title}}</a></li>\n                {% endfor %}\n              </ul>\n            </li>\n            {% else %}\n            <li{{context}}><a href=\"{{item.url}}\">{{item.title}}</a></li>\n            {%   endif %}\n            {% endfor %}\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n    {% block body %}\n    {% endblock %}\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <script src=\"https://code.jquery.com/jquery.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/{{bootstrap}}/js/bootstrap.min.js\"></script>\n\n  </body>\n</html>\n\n"
  },
  {
    "path": "urubu/tests/no_yamlfm/_layouts/page.html",
    "content": "{% extends \"_base.html\" %}\n\n{% block body %}\n\n<div class=\"container\">\n\n  <div class=\"page-header\">\n    {% block title %}\n    <h1>{{this.title}}</h1>\n    {% endblock %}\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"content\">\n      {% block content %}\n      <div class=\"col-md-7\" role=\"main\">\n        {{this.body}}\n      </div>\n      {% endblock %}\n    </div>\n\n    {% block sidebar %}\n    {% if this.toc %}\n    <div class=\"col-md-3\" role=\"complementary\">\n      <nav class=\"hidden-print hidden-xs hidden-sm\">\n        <div class=\"sidebar\" data-spy=\"affix\" data-offset-top=\"80\" data-offset-bottom=\"60\">\n          <div class=\"well\">\n            <a href=\"#\"><strong>{{this.title}}</strong></a>\n            {{this.toc}}\n          </div>\n        </div>\n      </nav>\n    </div>\n    {% endif %}\n    {% endblock %}\n\n  </div>\n\n  {% if this.pager %}\n  <ul class=\"pager\">\n    {% if this.prev %}\n    <li class=\"previous\"><a href=\"{{this.prev.url}}\">&larr; {{this.prev.title}}</a></li>\n    {% endif %}\n    {% if this.next %}\n    <li class=\"next\"><a href=\"{{this.next.url}}\">{{this.next.title}} &rarr;</a></li>\n    {% endif %}\n  </ul>\n  {% endif %}\n\n\n</div>\n\n{% endblock %}\n\n"
  },
  {
    "path": "urubu/tests/no_yamlfm/_site.yml",
    "content": "brand: Urubu \n\nbootswatch: null \nnavbar_inverse: false \nbootstrap: 3.3.4\n\nignore_patterns: ['*.py', 'README.md']\n\nreflinks:\n    jandecaluwe:\n        url: ttp://www.jandecaluwe.com\n        title: Jan Decaluwe\n    myhdl_site: \n        url: http://www.myhdl.org \n        title: MyHDL website\n    dev_myhdl_site: \n        url: http://dev.myhdl.org \n        title: MyHDL development website\n    content_license:\n        url: http://creativecommons.org/licenses/by-sa/3.0/\n        title: CC-BY-SA License\n    software_license:\n        url: http://www.gnu.org/licenses/agpl-3.0.txt\n        title: GNU Affero General Public License\n    bitbucket:\n        url: http://www.bitbucket.com\n        title: Bitbucket\n    github:\n        url: http://www.github.com\n        title: GitHub\n    markdown:\n        url: http://daringfireball.net/projects/markdown/  \n        title: Markdown\n    markdown_extra:\n        url: http://pythonhosted.org/Markdown/extensions/extra.html\n        title: Markdown Extra\n    python_markdown:\n        url: http://pythonhosted.org/Markdown/\n        title: Python-Markdown \n    pygments:\n        url: http://pygments.org\n        title: Pygments\n    jinja2:\n        url: http://jinja.pocoo.org\n        title: Jinja2\n    bootstrap:\n        url: http://getbootstrap.com\n        title: Bootstrap\n    bootswatch:\n        url: http://bootswatch.com\n        title: Bootswatch\n    pyyaml:\n        url: http://pyyaml.org\n        title: PyYAML\n    jekyll:\n        url: http://jekyllrb.com\n        title: Jekyll\n    pelican:\n        url: http://getpelican.com\n        title: Pelican\n    virtualenv:\n        url: http://www.virtualenv.org/en/latest/virtualenv.html\n        title: virtualenv\n    urubu_repo:\n        url: https://github.com/jandecaluwe/urubu\n        title: Urubu repo\n    tables: \n        url: http://pythonhosted.org/Markdown/extensions/tables.html\n        title: Tables\n    abbrev: \n        url: http://pythonhosted.org/Markdown/extensions/abbreviations.html\n        title: Abbrevations\n    attr_list:\n        url: http://pythonhosted.org/Markdown/extensions/attr_list.html\n        title: Attribute lists\n    def_list: \n        url: http://pythonhosted.org/Markdown/extensions/definition_lists.html\n        title: Definition Lists\n    fenced_code: \n        url: http://pythonhosted.org/Markdown/extensions/fenced_code_blocks.html\n        title: Fenced Code Blocks\n    markdown_checklist: \n        url: https://github.com/FND/markdown-checklist\n        title: GitHub style Task Lists\n    code_hilite: \n        url: http://pythonhosted.org/Markdown/extensions/code_hilite.html\n        title: CodeHilite\n    urubu-quickstart:\n        url: http://urubu-quickstart.jandecaluwe.com\n        title: Urubu Quickstart\n"
  },
  {
    "path": "urubu/tests/no_yamlfm/index.md",
    "content": "---\ntitle: test \nlayout: page \ncontent: []\n---\n"
  },
  {
    "path": "urubu/tests/no_yamlfm/page.md",
    "content": "\n"
  },
  {
    "path": "urubu/tests/test_doc.py",
    "content": "import os, sys\n\nfrom sh import git, touch\nfrom urubu import project, UrubuError\n\nfrom urubu.tests import cd\n\ndef test_doc():\n    with cd('../../doc'):\n        sys.path.insert(0, os.getcwd())\n        project.build()\n        touch('_build/.nojekyll')\n        d = git('--no-pager', 'diff', '-w', '--', '_build')\n        if d:\n            print(d)\n            raise ValueError('Diffs in website')\n    _python = None\n\ntest_doc()\n\n\n\n"
  },
  {
    "path": "urubu/tests/test_errors.py",
    "content": "import os \nfrom urubu import UrubuError, project\nfrom urubu.project import _error\n\nfrom urubu.tests import cd, raises_kind\n\ndef test_undef_reflink_title():\n    with cd('undef_reflink_title'):\n        with raises_kind(UrubuError, _error.undef_reflink_key):\n            project.build()\n\ndef test_undef_reflink_url():\n    with cd('undef_reflink_url'):\n        with raises_kind(UrubuError, _error.undef_reflink_key):\n            project.build()\n\ndef test_ambig_ref_md():\n    with cd('ambig_ref_md'):\n        with raises_kind(UrubuError, _error.ambig_ref_md):\n            project.build()\n\ndef test_ambig_refid():\n    with cd('ambig_refid'):\n        with raises_kind(UrubuError, _error.ambig_refid):\n            project.build()\n\ndef test_ambig_ref():\n    with cd('ambig_ref'):\n        with raises_kind(UrubuError, _error.ambig_ref):\n            project.build()\n\ndef test_date_format():\n    with cd('date_format'):\n        with raises_kind(UrubuError, _error.date_format):\n            project.build()\n\ndef test_undef_reflink_title():\n    with cd('undef_reflink_title'):\n        with raises_kind(UrubuError, _error.undef_reflink_key):\n            project.build()\n\ndef test_undef_reflink_url():\n    with cd('undef_reflink_url'):\n        with raises_kind(UrubuError, _error.undef_reflink_key):\n            project.build()\n\ndef test_ignore_patterns():\n    with cd('ignore_patterns'):\n        project.build()\n        assert not os.path.exists(os.path.join('_build', 'README.html'))\n        assert os.path.exists(os.path.join('_build', 'page.html'))\n\ndef test_undef_content():\n    with cd('undef_content'):\n        with raises_kind(UrubuError, _error.undef_content):\n            project.build()\n\ndef test_undef_key():\n    with cd('undef_key'):\n        with raises_kind(UrubuError, _error.undef_key):\n            project.build()\n\ndef test_undef_layout():\n    with cd('undef_layout'):\n        with raises_kind(UrubuError, _error.undef_info):\n            project.build()\n\ndef test_undef_ref():\n    with cd('undef_ref'):\n        with raises_kind(UrubuError, _error.undef_ref):\n            project.build()\n\ndef test_no_index():\n    with cd('no_index'):\n        with raises_kind(UrubuError, _error.no_index):\n            project.build()\n\n\n"
  },
  {
    "path": "urubu/tests/test_warnings.py",
    "content": "import os\nimport pytest\nfrom urubu import UrubuWarning, _warning, project\n\nfrom urubu.tests import cd\n\ndef test_no_yamlfm():\n    with cd('no_yamlfm'):\n        with pytest.warns(UrubuWarning) as record:\n            project.build()\n        print (record)\n        assert len(record) == 1\n        assert _warning.no_yamlfm in str(record[0].message)\n\ndef test_undef_tag_layout():\n    with cd('undef_tag_layout'):\n        with pytest.warns(UrubuWarning) as record:\n            project.build()\n        print (record)\n        assert len(record) == 1\n        assert _warning.undef_tag_layout in str(record[0].message)\n\ndef test_undef_ref_md():\n    with cd('undef_ref_md'):\n        with pytest.warns(UrubuWarning) as record:\n            project.build()\n        print (record)\n        assert len(record) == 1\n        assert _warning.undef_ref_md in str(record[0].message)\n\ndef test_undef_anchor():\n    with cd('undef_anchor'):\n        with pytest.warns(UrubuWarning) as record:\n            project.build()\n        assert len(record) == 1\n        assert _warning.undef_anchor in str(record[0].message)\n\n"
  },
  {
    "path": "urubu/tests/undef_anchor/_build/index.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>test</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n          </ul>\n\n          <ul class=\"nav navbar-nav navbar-right\">\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <div class=\"page-header\">\n    <h1>test</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"content\">\n      <div class=\"col-md-7\" role=\"main\">\n        \n      </div>\n    </div>\n\n\n  </div>\n\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <script src=\"https://code.jquery.com/jquery.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n\n  </body>\n</html>\n"
  },
  {
    "path": "urubu/tests/undef_anchor/_build/page.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>page</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n          </ul>\n\n          <ul class=\"nav navbar-nav navbar-right\">\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <div class=\"page-header\">\n    <h1>page</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"content\">\n      <div class=\"col-md-7\" role=\"main\">\n        <p id=\"an-anchor\">Define an anchor.</p>\n      </div>\n    </div>\n\n\n  </div>\n\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <script src=\"https://code.jquery.com/jquery.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n\n  </body>\n</html>\n"
  },
  {
    "path": "urubu/tests/undef_anchor/_build/page2.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>page</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n          </ul>\n\n          <ul class=\"nav navbar-nav navbar-right\">\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <div class=\"page-header\">\n    <h1>page</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"content\">\n      <div class=\"col-md-7\" role=\"main\">\n        <p>Reference to an anchor in a <a href=\"/page.html\" title=\"page\">page</a>: <a href=\"/page.html#an-anchor\" title=\"page\">an anchor</a>.</p>\n<p>Reference an undefined anchor: <a href=\"/page.html#an-undefined-anchor\" title=\"page\">an undefined anchor</a>.</p>\n      </div>\n    </div>\n\n\n  </div>\n\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <script src=\"https://code.jquery.com/jquery.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n\n  </body>\n</html>\n"
  },
  {
    "path": "urubu/tests/undef_anchor/_layouts/_base.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>{{this.title}}</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    {% set bootstrap = \"3.1.1\" %}\n    {% if site.bootstrap %}\n    {%   set bootstrap = site.bootstrap %}\n    {% endif %}\n    {% if site.bootswatch %}\n    {%   set theme_path = \"bootswatch/\"+ bootstrap + '/' + site.bootswatch %}\n    {% else %}\n    {%   set theme_path = \"bootstrap/\" + bootstrap + \"/css\" %}\n    {% endif %}\n    <link href=\"//netdna.bootstrapcdn.com/{{theme_path}}/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    {% set url_prefix = '' %}\n    {% if site.baseurl %}\n    {%   set url_prefix = '/' + site.baseurl %}\n    {% endif %}\n    <link href=\"{{url_prefix + '/css/site.css'}}\" rel=\"stylesheet\" media=\"screen\">\n    <link href=\"{{url_prefix + '/css/syntax.css'}}\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    {% set navbar_style = \"navbar-default\" %}\n    {% if site.navbar_inverse %}\n    {%   set navbar_style = \"navbar-inverse\" %}\n    {% endif %}\n    {% set navbar_right_items = 2 %}\n    {% if site.navbar_right_items %}\n    {%   set navbar_right_items = site.navbar_right_items %}\n    {% endif %}\n    <div class=\"navbar {{navbar_style}} navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"{{url_prefix + '/'}}\">{{site.brand}}</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            {% block home %}\n            {% endblock %}\n            {% for item in site.reflinks['/'].content[:-navbar_right_items] %}\n            {%   set context = '' %}\n            {%   if item.components|d and this.components[0] == item.components[0] %}\n            {%     set context = ' class=\"active\"' %}\n            {%   endif %}\n            {%   if item.content|d and item.dropdown %}\n            <li{{context}} class=\"dropdown\">\n              <a href=\"{{item.url}}\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">{{item.title}} <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                {% for subitem in item.content %}\n                <li><a href=\"{{subitem.url}}\">{{subitem.title}}</a></li>\n                {% endfor %}\n              </ul>\n            </li>\n            {% else %}\n            <li{{context}}><a href=\"{{item.url}}\">{{item.title}}</a></li>\n            {%   endif %}\n            {% endfor %}\n          </ul>\n\n          <ul class=\"nav navbar-nav navbar-right\">\n            {% for item in site.reflinks['/'].content[-navbar_right_items:] %}\n            {%   set context = '' %}\n            {%   if item.components|d and this.components[0] == item.components[0] %}\n            {%     set context = ' class=\"active\"' %}\n            {%   endif %}\n            {%   if item.content|d and item.dropdown %}\n            <li{{context}} class=\"dropdown\">\n              <a href=\"{{item.url}}\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">{{item.title}} <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                {% for subitem in item.content %}\n                <li><a href=\"{{subitem.url}}\">{{subitem.title}}</a></li>\n                {% endfor %}\n              </ul>\n            </li>\n            {% else %}\n            <li{{context}}><a href=\"{{item.url}}\">{{item.title}}</a></li>\n            {%   endif %}\n            {% endfor %}\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n    {% block body %}\n    {% endblock %}\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <script src=\"https://code.jquery.com/jquery.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/{{bootstrap}}/js/bootstrap.min.js\"></script>\n\n  </body>\n</html>\n\n"
  },
  {
    "path": "urubu/tests/undef_anchor/_layouts/page.html",
    "content": "{% extends \"_base.html\" %}\n\n{% block body %}\n\n<div class=\"container\">\n\n  <div class=\"page-header\">\n    {% block title %}\n    <h1>{{this.title}}</h1>\n    {% endblock %}\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"content\">\n      {% block content %}\n      <div class=\"col-md-7\" role=\"main\">\n        {{this.body}}\n      </div>\n      {% endblock %}\n    </div>\n\n    {% block sidebar %}\n    {% if this.toc %}\n    <div class=\"col-md-3\" role=\"complementary\">\n      <nav class=\"hidden-print hidden-xs hidden-sm\">\n        <div class=\"sidebar\" data-spy=\"affix\" data-offset-top=\"80\" data-offset-bottom=\"60\">\n          <div class=\"well\">\n            <a href=\"#\"><strong>{{this.title}}</strong></a>\n            {{this.toc}}\n          </div>\n        </div>\n      </nav>\n    </div>\n    {% endif %}\n    {% endblock %}\n\n  </div>\n\n  {% if this.pager %}\n  <ul class=\"pager\">\n    {% if this.prev %}\n    <li class=\"previous\"><a href=\"{{this.prev.url}}\">&larr; {{this.prev.title}}</a></li>\n    {% endif %}\n    {% if this.next %}\n    <li class=\"next\"><a href=\"{{this.next.url}}\">{{this.next.title}} &rarr;</a></li>\n    {% endif %}\n  </ul>\n  {% endif %}\n\n\n</div>\n\n{% endblock %}\n\n"
  },
  {
    "path": "urubu/tests/undef_anchor/_site.yml",
    "content": "brand: Urubu \n\nbootswatch: null \nnavbar_inverse: false \nbootstrap: 3.3.4\n\nignore_patterns: ['*.py', 'README.md']\n\nreflinks:\n    jandecaluwe:\n        url: ttp://www.jandecaluwe.com\n        title: Jan Decaluwe\n    myhdl_site: \n        url: http://www.myhdl.org \n        title: MyHDL website\n    dev_myhdl_site: \n        url: http://dev.myhdl.org \n        title: MyHDL development website\n    content_license:\n        url: http://creativecommons.org/licenses/by-sa/3.0/\n        title: CC-BY-SA License\n    software_license:\n        url: http://www.gnu.org/licenses/agpl-3.0.txt\n        title: GNU Affero General Public License\n    bitbucket:\n        url: http://www.bitbucket.com\n        title: Bitbucket\n    github:\n        url: http://www.github.com\n        title: GitHub\n    markdown:\n        url: http://daringfireball.net/projects/markdown/  \n        title: Markdown\n    markdown_extra:\n        url: http://pythonhosted.org/Markdown/extensions/extra.html\n        title: Markdown Extra\n    python_markdown:\n        url: http://pythonhosted.org/Markdown/\n        title: Python-Markdown \n    pygments:\n        url: http://pygments.org\n        title: Pygments\n    jinja2:\n        url: http://jinja.pocoo.org\n        title: Jinja2\n    bootstrap:\n        url: http://getbootstrap.com\n        title: Bootstrap\n    bootswatch:\n        url: http://bootswatch.com\n        title: Bootswatch\n    pyyaml:\n        url: http://pyyaml.org\n        title: PyYAML\n    jekyll:\n        url: http://jekyllrb.com\n        title: Jekyll\n    pelican:\n        url: http://getpelican.com\n        title: Pelican\n    virtualenv:\n        url: http://www.virtualenv.org/en/latest/virtualenv.html\n        title: virtualenv\n    urubu_repo:\n        url: https://github.com/jandecaluwe/urubu\n        title: Urubu repo\n    tables: \n        url: http://pythonhosted.org/Markdown/extensions/tables.html\n        title: Tables\n    abbrev: \n        url: http://pythonhosted.org/Markdown/extensions/abbreviations.html\n        title: Abbrevations\n    attr_list:\n        url: http://pythonhosted.org/Markdown/extensions/attr_list.html\n        title: Attribute lists\n    def_list: \n        url: http://pythonhosted.org/Markdown/extensions/definition_lists.html\n        title: Definition Lists\n    fenced_code: \n        url: http://pythonhosted.org/Markdown/extensions/fenced_code_blocks.html\n        title: Fenced Code Blocks\n    markdown_checklist: \n        url: https://github.com/FND/markdown-checklist\n        title: GitHub style Task Lists\n    code_hilite: \n        url: http://pythonhosted.org/Markdown/extensions/code_hilite.html\n        title: CodeHilite\n    urubu-quickstart:\n        url: http://urubu-quickstart.jandecaluwe.com\n        title: Urubu Quickstart\n"
  },
  {
    "path": "urubu/tests/undef_anchor/index.md",
    "content": "---\ntitle: test \nlayout: page \ncontent: []\n---\n"
  },
  {
    "path": "urubu/tests/undef_anchor/page.md",
    "content": "---\ntitle: page \nlayout: page \n---\n\nDefine an anchor.\n{: #an-anchor}\n\n"
  },
  {
    "path": "urubu/tests/undef_anchor/page2.md",
    "content": "---\ntitle: page \nlayout: page \n---\n\nReference to an anchor in a [page]: [page#an anchor].\n\n\nReference an undefined anchor: [page#an undefined anchor].\n"
  },
  {
    "path": "urubu/tests/undef_content/_build/index.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>test</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n          </ul>\n\n          <ul class=\"nav navbar-nav navbar-right\">\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <div class=\"page-header\">\n    <h1>test</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"content\">\n      <div class=\"col-md-7\" role=\"main\">\n        \n      </div>\n    </div>\n\n\n  </div>\n\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <script src=\"https://code.jquery.com/jquery.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n\n  </body>\n</html>\n"
  },
  {
    "path": "urubu/tests/undef_content/_build/page.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>page</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n          </ul>\n\n          <ul class=\"nav navbar-nav navbar-right\">\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <div class=\"page-header\">\n    <h1>page</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"content\">\n      <div class=\"col-md-7\" role=\"main\">\n        \n      </div>\n    </div>\n\n\n  </div>\n\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <script src=\"https://code.jquery.com/jquery.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n\n  </body>\n</html>\n"
  },
  {
    "path": "urubu/tests/undef_content/_layouts/_base.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>{{this.title}}</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    {% set bootstrap = \"3.1.1\" %}\n    {% if site.bootstrap %}\n    {%   set bootstrap = site.bootstrap %}\n    {% endif %}\n    {% if site.bootswatch %}\n    {%   set theme_path = \"bootswatch/\"+ bootstrap + '/' + site.bootswatch %}\n    {% else %}\n    {%   set theme_path = \"bootstrap/\" + bootstrap + \"/css\" %}\n    {% endif %}\n    <link href=\"//netdna.bootstrapcdn.com/{{theme_path}}/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    {% set url_prefix = '' %}\n    {% if site.baseurl %}\n    {%   set url_prefix = '/' + site.baseurl %}\n    {% endif %}\n    <link href=\"{{url_prefix + '/css/site.css'}}\" rel=\"stylesheet\" media=\"screen\">\n    <link href=\"{{url_prefix + '/css/syntax.css'}}\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    {% set navbar_style = \"navbar-default\" %}\n    {% if site.navbar_inverse %}\n    {%   set navbar_style = \"navbar-inverse\" %}\n    {% endif %}\n    {% set navbar_right_items = 2 %}\n    {% if site.navbar_right_items %}\n    {%   set navbar_right_items = site.navbar_right_items %}\n    {% endif %}\n    <div class=\"navbar {{navbar_style}} navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"{{url_prefix + '/'}}\">{{site.brand}}</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            {% block home %}\n            {% endblock %}\n            {% for item in site.reflinks['/'].content[:-navbar_right_items] %}\n            {%   set context = '' %}\n            {%   if item.components|d and this.components[0] == item.components[0] %}\n            {%     set context = ' class=\"active\"' %}\n            {%   endif %}\n            {%   if item.content|d and item.dropdown %}\n            <li{{context}} class=\"dropdown\">\n              <a href=\"{{item.url}}\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">{{item.title}} <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                {% for subitem in item.content %}\n                <li><a href=\"{{subitem.url}}\">{{subitem.title}}</a></li>\n                {% endfor %}\n              </ul>\n            </li>\n            {% else %}\n            <li{{context}}><a href=\"{{item.url}}\">{{item.title}}</a></li>\n            {%   endif %}\n            {% endfor %}\n          </ul>\n\n          <ul class=\"nav navbar-nav navbar-right\">\n            {% for item in site.reflinks['/'].content[-navbar_right_items:] %}\n            {%   set context = '' %}\n            {%   if item.components|d and this.components[0] == item.components[0] %}\n            {%     set context = ' class=\"active\"' %}\n            {%   endif %}\n            {%   if item.content|d and item.dropdown %}\n            <li{{context}} class=\"dropdown\">\n              <a href=\"{{item.url}}\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">{{item.title}} <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                {% for subitem in item.content %}\n                <li><a href=\"{{subitem.url}}\">{{subitem.title}}</a></li>\n                {% endfor %}\n              </ul>\n            </li>\n            {% else %}\n            <li{{context}}><a href=\"{{item.url}}\">{{item.title}}</a></li>\n            {%   endif %}\n            {% endfor %}\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n    {% block body %}\n    {% endblock %}\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <script src=\"https://code.jquery.com/jquery.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/{{bootstrap}}/js/bootstrap.min.js\"></script>\n\n  </body>\n</html>\n\n"
  },
  {
    "path": "urubu/tests/undef_content/_layouts/page.html",
    "content": "{% extends \"_base.html\" %}\n\n{% block body %}\n\n<div class=\"container\">\n\n  <div class=\"page-header\">\n    {% block title %}\n    <h1>{{this.title}}</h1>\n    {% endblock %}\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"content\">\n      {% block content %}\n      <div class=\"col-md-7\" role=\"main\">\n        {{this.body}}\n      </div>\n      {% endblock %}\n    </div>\n\n    {% block sidebar %}\n    {% if this.toc %}\n    <div class=\"col-md-3\" role=\"complementary\">\n      <nav class=\"hidden-print hidden-xs hidden-sm\">\n        <div class=\"sidebar\" data-spy=\"affix\" data-offset-top=\"80\" data-offset-bottom=\"60\">\n          <div class=\"well\">\n            <a href=\"#\"><strong>{{this.title}}</strong></a>\n            {{this.toc}}\n          </div>\n        </div>\n      </nav>\n    </div>\n    {% endif %}\n    {% endblock %}\n\n  </div>\n\n  {% if this.pager %}\n  <ul class=\"pager\">\n    {% if this.prev %}\n    <li class=\"previous\"><a href=\"{{this.prev.url}}\">&larr; {{this.prev.title}}</a></li>\n    {% endif %}\n    {% if this.next %}\n    <li class=\"next\"><a href=\"{{this.next.url}}\">{{this.next.title}} &rarr;</a></li>\n    {% endif %}\n  </ul>\n  {% endif %}\n\n\n</div>\n\n{% endblock %}\n\n"
  },
  {
    "path": "urubu/tests/undef_content/_site.yml",
    "content": "brand: Urubu \n\nbootswatch: null \nnavbar_inverse: false \nbootstrap: 3.3.4\n\nignore_patterns: ['*.py', 'README.md']\n\nreflinks:\n    jandecaluwe:\n        url: ttp://www.jandecaluwe.com\n        title: Jan Decaluwe\n    myhdl_site: \n        url: http://www.myhdl.org \n        title: MyHDL website\n    dev_myhdl_site: \n        url: http://dev.myhdl.org \n        title: MyHDL development website\n    content_license:\n        url: http://creativecommons.org/licenses/by-sa/3.0/\n        title: CC-BY-SA License\n    software_license:\n        url: http://www.gnu.org/licenses/agpl-3.0.txt\n        title: GNU Affero General Public License\n    bitbucket:\n        url: http://www.bitbucket.com\n        title: Bitbucket\n    github:\n        url: http://www.github.com\n        title: GitHub\n    markdown:\n        url: http://daringfireball.net/projects/markdown/  \n        title: Markdown\n    markdown_extra:\n        url: http://pythonhosted.org/Markdown/extensions/extra.html\n        title: Markdown Extra\n    python_markdown:\n        url: http://pythonhosted.org/Markdown/\n        title: Python-Markdown \n    pygments:\n        url: http://pygments.org\n        title: Pygments\n    jinja2:\n        url: http://jinja.pocoo.org\n        title: Jinja2\n    bootstrap:\n        url: http://getbootstrap.com\n        title: Bootstrap\n    bootswatch:\n        url: http://bootswatch.com\n        title: Bootswatch\n    pyyaml:\n        url: http://pyyaml.org\n        title: PyYAML\n    jekyll:\n        url: http://jekyllrb.com\n        title: Jekyll\n    pelican:\n        url: http://getpelican.com\n        title: Pelican\n    virtualenv:\n        url: http://www.virtualenv.org/en/latest/virtualenv.html\n        title: virtualenv\n    urubu_repo:\n        url: https://github.com/jandecaluwe/urubu\n        title: Urubu repo\n    tables: \n        url: http://pythonhosted.org/Markdown/extensions/tables.html\n        title: Tables\n    abbrev: \n        url: http://pythonhosted.org/Markdown/extensions/abbreviations.html\n        title: Abbrevations\n    attr_list:\n        url: http://pythonhosted.org/Markdown/extensions/attr_list.html\n        title: Attribute lists\n    def_list: \n        url: http://pythonhosted.org/Markdown/extensions/definition_lists.html\n        title: Definition Lists\n    fenced_code: \n        url: http://pythonhosted.org/Markdown/extensions/fenced_code_blocks.html\n        title: Fenced Code Blocks\n    markdown_checklist: \n        url: https://github.com/FND/markdown-checklist\n        title: GitHub style Task Lists\n    code_hilite: \n        url: http://pythonhosted.org/Markdown/extensions/code_hilite.html\n        title: CodeHilite\n    urubu-quickstart:\n        url: http://urubu-quickstart.jandecaluwe.com\n        title: Urubu Quickstart\n"
  },
  {
    "path": "urubu/tests/undef_content/index.md",
    "content": "---\ntitle: test \nlayout: page \n---\n"
  },
  {
    "path": "urubu/tests/undef_content/page.md",
    "content": "---\ntitle: page \nlayout: page \n---\n\n"
  },
  {
    "path": "urubu/tests/undef_key/_build/folder/index.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>test</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n          </ul>\n\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li class=\"active\"><a href=\"/folder/\">test</a></li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <div class=\"page-header\">\n    <h1>test</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"content\">\n      <div class=\"col-md-7\" role=\"main\">\n        \n      </div>\n    </div>\n\n\n  </div>\n\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <script src=\"https://code.jquery.com/jquery.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n\n  </body>\n</html>\n"
  },
  {
    "path": "urubu/tests/undef_key/_build/folder/item.d",
    "content": "---\ntitle: page \nlayout: page \n---\n\n"
  },
  {
    "path": "urubu/tests/undef_key/_build/index.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>test</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n          </ul>\n\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li><a href=\"/folder/\">test</a></li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <div class=\"page-header\">\n    <h1>test</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"content\">\n      <div class=\"col-md-7\" role=\"main\">\n        \n      </div>\n    </div>\n\n\n  </div>\n\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <script src=\"https://code.jquery.com/jquery.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n\n  </body>\n</html>\n"
  },
  {
    "path": "urubu/tests/undef_key/_build/page.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>page</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n          </ul>\n\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li><a href=\"/folder/\">test</a></li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <div class=\"page-header\">\n    <h1>page</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"content\">\n      <div class=\"col-md-7\" role=\"main\">\n        \n      </div>\n    </div>\n\n\n  </div>\n\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <script src=\"https://code.jquery.com/jquery.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n\n  </body>\n</html>\n"
  },
  {
    "path": "urubu/tests/undef_key/_layouts/_base.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>{{this.title}}</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    {% set bootstrap = \"3.1.1\" %}\n    {% if site.bootstrap %}\n    {%   set bootstrap = site.bootstrap %}\n    {% endif %}\n    {% if site.bootswatch %}\n    {%   set theme_path = \"bootswatch/\"+ bootstrap + '/' + site.bootswatch %}\n    {% else %}\n    {%   set theme_path = \"bootstrap/\" + bootstrap + \"/css\" %}\n    {% endif %}\n    <link href=\"//netdna.bootstrapcdn.com/{{theme_path}}/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    {% set url_prefix = '' %}\n    {% if site.baseurl %}\n    {%   set url_prefix = '/' + site.baseurl %}\n    {% endif %}\n    <link href=\"{{url_prefix + '/css/site.css'}}\" rel=\"stylesheet\" media=\"screen\">\n    <link href=\"{{url_prefix + '/css/syntax.css'}}\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    {% set navbar_style = \"navbar-default\" %}\n    {% if site.navbar_inverse %}\n    {%   set navbar_style = \"navbar-inverse\" %}\n    {% endif %}\n    {% set navbar_right_items = 2 %}\n    {% if site.navbar_right_items %}\n    {%   set navbar_right_items = site.navbar_right_items %}\n    {% endif %}\n    <div class=\"navbar {{navbar_style}} navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"{{url_prefix + '/'}}\">{{site.brand}}</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            {% block home %}\n            {% endblock %}\n            {% for item in site.reflinks['/'].content[:-navbar_right_items] %}\n            {%   set context = '' %}\n            {%   if item.components|d and this.components[0] == item.components[0] %}\n            {%     set context = ' class=\"active\"' %}\n            {%   endif %}\n            {%   if item.content|d and item.dropdown %}\n            <li{{context}} class=\"dropdown\">\n              <a href=\"{{item.url}}\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">{{item.title}} <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                {% for subitem in item.content %}\n                <li><a href=\"{{subitem.url}}\">{{subitem.title}}</a></li>\n                {% endfor %}\n              </ul>\n            </li>\n            {% else %}\n            <li{{context}}><a href=\"{{item.url}}\">{{item.title}}</a></li>\n            {%   endif %}\n            {% endfor %}\n          </ul>\n\n          <ul class=\"nav navbar-nav navbar-right\">\n            {% for item in site.reflinks['/'].content[-navbar_right_items:] %}\n            {%   set context = '' %}\n            {%   if item.components|d and this.components[0] == item.components[0] %}\n            {%     set context = ' class=\"active\"' %}\n            {%   endif %}\n            {%   if item.content|d and item.dropdown %}\n            <li{{context}} class=\"dropdown\">\n              <a href=\"{{item.url}}\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">{{item.title}} <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                {% for subitem in item.content %}\n                <li><a href=\"{{subitem.url}}\">{{subitem.title}}</a></li>\n                {% endfor %}\n              </ul>\n            </li>\n            {% else %}\n            <li{{context}}><a href=\"{{item.url}}\">{{item.title}}</a></li>\n            {%   endif %}\n            {% endfor %}\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n    {% block body %}\n    {% endblock %}\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <script src=\"https://code.jquery.com/jquery.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/{{bootstrap}}/js/bootstrap.min.js\"></script>\n\n  </body>\n</html>\n\n"
  },
  {
    "path": "urubu/tests/undef_key/_layouts/page.html",
    "content": "{% extends \"_base.html\" %}\n\n{% block body %}\n\n<div class=\"container\">\n\n  <div class=\"page-header\">\n    {% block title %}\n    <h1>{{this.title}}</h1>\n    {% endblock %}\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"content\">\n      {% block content %}\n      <div class=\"col-md-7\" role=\"main\">\n        {{this.body}}\n      </div>\n      {% endblock %}\n    </div>\n\n    {% block sidebar %}\n    {% if this.toc %}\n    <div class=\"col-md-3\" role=\"complementary\">\n      <nav class=\"hidden-print hidden-xs hidden-sm\">\n        <div class=\"sidebar\" data-spy=\"affix\" data-offset-top=\"80\" data-offset-bottom=\"60\">\n          <div class=\"well\">\n            <a href=\"#\"><strong>{{this.title}}</strong></a>\n            {{this.toc}}\n          </div>\n        </div>\n      </nav>\n    </div>\n    {% endif %}\n    {% endblock %}\n\n  </div>\n\n  {% if this.pager %}\n  <ul class=\"pager\">\n    {% if this.prev %}\n    <li class=\"previous\"><a href=\"{{this.prev.url}}\">&larr; {{this.prev.title}}</a></li>\n    {% endif %}\n    {% if this.next %}\n    <li class=\"next\"><a href=\"{{this.next.url}}\">{{this.next.title}} &rarr;</a></li>\n    {% endif %}\n  </ul>\n  {% endif %}\n\n\n</div>\n\n{% endblock %}\n\n"
  },
  {
    "path": "urubu/tests/undef_key/_site.yml",
    "content": "brand: Urubu \n\nbootswatch: null \nnavbar_inverse: false \nbootstrap: 3.3.4\n\nignore_patterns: ['*.py', 'README.md']\n\nreflinks:\n    jandecaluwe:\n        url: ttp://www.jandecaluwe.com\n        title: Jan Decaluwe\n    myhdl_site: \n        url: http://www.myhdl.org \n        title: MyHDL website\n    dev_myhdl_site: \n        url: http://dev.myhdl.org \n        title: MyHDL development website\n    content_license:\n        url: http://creativecommons.org/licenses/by-sa/3.0/\n        title: CC-BY-SA License\n    software_license:\n        url: http://www.gnu.org/licenses/agpl-3.0.txt\n        title: GNU Affero General Public License\n    bitbucket:\n        url: http://www.bitbucket.com\n        title: Bitbucket\n    github:\n        url: http://www.github.com\n        title: GitHub\n    markdown:\n        url: http://daringfireball.net/projects/markdown/  \n        title: Markdown\n    markdown_extra:\n        url: http://pythonhosted.org/Markdown/extensions/extra.html\n        title: Markdown Extra\n    python_markdown:\n        url: http://pythonhosted.org/Markdown/\n        title: Python-Markdown \n    pygments:\n        url: http://pygments.org\n        title: Pygments\n    jinja2:\n        url: http://jinja.pocoo.org\n        title: Jinja2\n    bootstrap:\n        url: http://getbootstrap.com\n        title: Bootstrap\n    bootswatch:\n        url: http://bootswatch.com\n        title: Bootswatch\n    pyyaml:\n        url: http://pyyaml.org\n        title: PyYAML\n    jekyll:\n        url: http://jekyllrb.com\n        title: Jekyll\n    pelican:\n        url: http://getpelican.com\n        title: Pelican\n    virtualenv:\n        url: http://www.virtualenv.org/en/latest/virtualenv.html\n        title: virtualenv\n    urubu_repo:\n        url: https://github.com/jandecaluwe/urubu\n        title: Urubu repo\n    tables: \n        url: http://pythonhosted.org/Markdown/extensions/tables.html\n        title: Tables\n    abbrev: \n        url: http://pythonhosted.org/Markdown/extensions/abbreviations.html\n        title: Abbrevations\n    attr_list:\n        url: http://pythonhosted.org/Markdown/extensions/attr_list.html\n        title: Attribute lists\n    def_list: \n        url: http://pythonhosted.org/Markdown/extensions/definition_lists.html\n        title: Definition Lists\n    fenced_code: \n        url: http://pythonhosted.org/Markdown/extensions/fenced_code_blocks.html\n        title: Fenced Code Blocks\n    markdown_checklist: \n        url: https://github.com/FND/markdown-checklist\n        title: GitHub style Task Lists\n    code_hilite: \n        url: http://pythonhosted.org/Markdown/extensions/code_hilite.html\n        title: CodeHilite\n    urubu-quickstart:\n        url: http://urubu-quickstart.jandecaluwe.com\n        title: Urubu Quickstart\n"
  },
  {
    "path": "urubu/tests/undef_key/folder/index.md",
    "content": "---\ntitle: test \nlayout: page \norder: nr\n---\n"
  },
  {
    "path": "urubu/tests/undef_key/folder/item.md",
    "content": "---\ntitle: page \nlayout: page \n---\n\n"
  },
  {
    "path": "urubu/tests/undef_key/index.md",
    "content": "---\ntitle: test \nlayout: page \ncontent:\n    - folder\n---\n"
  },
  {
    "path": "urubu/tests/undef_key/page.md",
    "content": "---\ntitle: page \nlayout: page \n---\n\n"
  },
  {
    "path": "urubu/tests/undef_layout/_build/index.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>test</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n          </ul>\n\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li><a href=\"/page.html\">page</a></li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <div class=\"page-header\">\n    <h1>test</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"content\">\n      <div class=\"col-md-7\" role=\"main\">\n        \n      </div>\n    </div>\n\n\n  </div>\n\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <script src=\"https://code.jquery.com/jquery.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n\n  </body>\n</html>\n"
  },
  {
    "path": "urubu/tests/undef_layout/_build/page.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>page</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n          </ul>\n\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li class=\"active\"><a href=\"/page.html\">page</a></li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <div class=\"page-header\">\n    <h1>page</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"content\">\n      <div class=\"col-md-7\" role=\"main\">\n        \n      </div>\n    </div>\n\n\n  </div>\n\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <script src=\"https://code.jquery.com/jquery.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n\n  </body>\n</html>\n"
  },
  {
    "path": "urubu/tests/undef_layout/_layouts/_base.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>{{this.title}}</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    {% set bootstrap = \"3.1.1\" %}\n    {% if site.bootstrap %}\n    {%   set bootstrap = site.bootstrap %}\n    {% endif %}\n    {% if site.bootswatch %}\n    {%   set theme_path = \"bootswatch/\"+ bootstrap + '/' + site.bootswatch %}\n    {% else %}\n    {%   set theme_path = \"bootstrap/\" + bootstrap + \"/css\" %}\n    {% endif %}\n    <link href=\"//netdna.bootstrapcdn.com/{{theme_path}}/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    {% set url_prefix = '' %}\n    {% if site.baseurl %}\n    {%   set url_prefix = '/' + site.baseurl %}\n    {% endif %}\n    <link href=\"{{url_prefix + '/css/site.css'}}\" rel=\"stylesheet\" media=\"screen\">\n    <link href=\"{{url_prefix + '/css/syntax.css'}}\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    {% set navbar_style = \"navbar-default\" %}\n    {% if site.navbar_inverse %}\n    {%   set navbar_style = \"navbar-inverse\" %}\n    {% endif %}\n    {% set navbar_right_items = 2 %}\n    {% if site.navbar_right_items %}\n    {%   set navbar_right_items = site.navbar_right_items %}\n    {% endif %}\n    <div class=\"navbar {{navbar_style}} navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"{{url_prefix + '/'}}\">{{site.brand}}</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            {% block home %}\n            {% endblock %}\n            {% for item in site.reflinks['/'].content[:-navbar_right_items] %}\n            {%   set context = '' %}\n            {%   if item.components|d and this.components[0] == item.components[0] %}\n            {%     set context = ' class=\"active\"' %}\n            {%   endif %}\n            {%   if item.content|d and item.dropdown %}\n            <li{{context}} class=\"dropdown\">\n              <a href=\"{{item.url}}\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">{{item.title}} <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                {% for subitem in item.content %}\n                <li><a href=\"{{subitem.url}}\">{{subitem.title}}</a></li>\n                {% endfor %}\n              </ul>\n            </li>\n            {% else %}\n            <li{{context}}><a href=\"{{item.url}}\">{{item.title}}</a></li>\n            {%   endif %}\n            {% endfor %}\n          </ul>\n\n          <ul class=\"nav navbar-nav navbar-right\">\n            {% for item in site.reflinks['/'].content[-navbar_right_items:] %}\n            {%   set context = '' %}\n            {%   if item.components|d and this.components[0] == item.components[0] %}\n            {%     set context = ' class=\"active\"' %}\n            {%   endif %}\n            {%   if item.content|d and item.dropdown %}\n            <li{{context}} class=\"dropdown\">\n              <a href=\"{{item.url}}\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">{{item.title}} <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                {% for subitem in item.content %}\n                <li><a href=\"{{subitem.url}}\">{{subitem.title}}</a></li>\n                {% endfor %}\n              </ul>\n            </li>\n            {% else %}\n            <li{{context}}><a href=\"{{item.url}}\">{{item.title}}</a></li>\n            {%   endif %}\n            {% endfor %}\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n    {% block body %}\n    {% endblock %}\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <script src=\"https://code.jquery.com/jquery.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/{{bootstrap}}/js/bootstrap.min.js\"></script>\n\n  </body>\n</html>\n\n"
  },
  {
    "path": "urubu/tests/undef_layout/_layouts/page.html",
    "content": "{% extends \"_base.html\" %}\n\n{% block body %}\n\n<div class=\"container\">\n\n  <div class=\"page-header\">\n    {% block title %}\n    <h1>{{this.title}}</h1>\n    {% endblock %}\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"content\">\n      {% block content %}\n      <div class=\"col-md-7\" role=\"main\">\n        {{this.body}}\n      </div>\n      {% endblock %}\n    </div>\n\n    {% block sidebar %}\n    {% if this.toc %}\n    <div class=\"col-md-3\" role=\"complementary\">\n      <nav class=\"hidden-print hidden-xs hidden-sm\">\n        <div class=\"sidebar\" data-spy=\"affix\" data-offset-top=\"80\" data-offset-bottom=\"60\">\n          <div class=\"well\">\n            <a href=\"#\"><strong>{{this.title}}</strong></a>\n            {{this.toc}}\n          </div>\n        </div>\n      </nav>\n    </div>\n    {% endif %}\n    {% endblock %}\n\n  </div>\n\n  {% if this.pager %}\n  <ul class=\"pager\">\n    {% if this.prev %}\n    <li class=\"previous\"><a href=\"{{this.prev.url}}\">&larr; {{this.prev.title}}</a></li>\n    {% endif %}\n    {% if this.next %}\n    <li class=\"next\"><a href=\"{{this.next.url}}\">{{this.next.title}} &rarr;</a></li>\n    {% endif %}\n  </ul>\n  {% endif %}\n\n\n</div>\n\n{% endblock %}\n\n"
  },
  {
    "path": "urubu/tests/undef_layout/_site.yml",
    "content": "brand: Urubu \n\nbootswatch: null \nnavbar_inverse: false \nbootstrap: 3.3.4\n\nignore_patterns: ['*.py', 'README.md']\n\nreflinks:\n    jandecaluwe:\n        url: ttp://www.jandecaluwe.com\n        title: Jan Decaluwe\n    myhdl_site: \n        url: http://www.myhdl.org \n        title: MyHDL website\n    dev_myhdl_site: \n        url: http://dev.myhdl.org \n        title: MyHDL development website\n    content_license:\n        url: http://creativecommons.org/licenses/by-sa/3.0/\n        title: CC-BY-SA License\n    software_license:\n        url: http://www.gnu.org/licenses/agpl-3.0.txt\n        title: GNU Affero General Public License\n    bitbucket:\n        url: http://www.bitbucket.com\n        title: Bitbucket\n    github:\n        url: http://www.github.com\n        title: GitHub\n    markdown:\n        url: http://daringfireball.net/projects/markdown/  \n        title: Markdown\n    markdown_extra:\n        url: http://pythonhosted.org/Markdown/extensions/extra.html\n        title: Markdown Extra\n    python_markdown:\n        url: http://pythonhosted.org/Markdown/\n        title: Python-Markdown \n    pygments:\n        url: http://pygments.org\n        title: Pygments\n    jinja2:\n        url: http://jinja.pocoo.org\n        title: Jinja2\n    bootstrap:\n        url: http://getbootstrap.com\n        title: Bootstrap\n    bootswatch:\n        url: http://bootswatch.com\n        title: Bootswatch\n    pyyaml:\n        url: http://pyyaml.org\n        title: PyYAML\n    jekyll:\n        url: http://jekyllrb.com\n        title: Jekyll\n    pelican:\n        url: http://getpelican.com\n        title: Pelican\n    virtualenv:\n        url: http://www.virtualenv.org/en/latest/virtualenv.html\n        title: virtualenv\n    urubu_repo:\n        url: https://github.com/jandecaluwe/urubu\n        title: Urubu repo\n    tables: \n        url: http://pythonhosted.org/Markdown/extensions/tables.html\n        title: Tables\n    abbrev: \n        url: http://pythonhosted.org/Markdown/extensions/abbreviations.html\n        title: Abbrevations\n    attr_list:\n        url: http://pythonhosted.org/Markdown/extensions/attr_list.html\n        title: Attribute lists\n    def_list: \n        url: http://pythonhosted.org/Markdown/extensions/definition_lists.html\n        title: Definition Lists\n    fenced_code: \n        url: http://pythonhosted.org/Markdown/extensions/fenced_code_blocks.html\n        title: Fenced Code Blocks\n    markdown_checklist: \n        url: https://github.com/FND/markdown-checklist\n        title: GitHub style Task Lists\n    code_hilite: \n        url: http://pythonhosted.org/Markdown/extensions/code_hilite.html\n        title: CodeHilite\n    urubu-quickstart:\n        url: http://urubu-quickstart.jandecaluwe.com\n        title: Urubu Quickstart\n"
  },
  {
    "path": "urubu/tests/undef_layout/index.md",
    "content": "---\ntitle: test \nlayout: page \ncontent:\n    - page\n---\n"
  },
  {
    "path": "urubu/tests/undef_layout/page.md",
    "content": "---\ntitle: page \n---\n\n"
  },
  {
    "path": "urubu/tests/undef_ref/_build/index.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>test</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n          </ul>\n\n          <ul class=\"nav navbar-nav navbar-right\">\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <div class=\"page-header\">\n    <h1>test</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"content\">\n      <div class=\"col-md-7\" role=\"main\">\n        \n      </div>\n    </div>\n\n\n  </div>\n\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <script src=\"https://code.jquery.com/jquery.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n\n  </body>\n</html>\n"
  },
  {
    "path": "urubu/tests/undef_ref/_build/page.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>page</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n          </ul>\n\n          <ul class=\"nav navbar-nav navbar-right\">\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <div class=\"page-header\">\n    <h1>page</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"content\">\n      <div class=\"col-md-7\" role=\"main\">\n        \n      </div>\n    </div>\n\n\n  </div>\n\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <script src=\"https://code.jquery.com/jquery.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n\n  </body>\n</html>\n"
  },
  {
    "path": "urubu/tests/undef_ref/_layouts/_base.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>{{this.title}}</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    {% set bootstrap = \"3.1.1\" %}\n    {% if site.bootstrap %}\n    {%   set bootstrap = site.bootstrap %}\n    {% endif %}\n    {% if site.bootswatch %}\n    {%   set theme_path = \"bootswatch/\"+ bootstrap + '/' + site.bootswatch %}\n    {% else %}\n    {%   set theme_path = \"bootstrap/\" + bootstrap + \"/css\" %}\n    {% endif %}\n    <link href=\"//netdna.bootstrapcdn.com/{{theme_path}}/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    {% set url_prefix = '' %}\n    {% if site.baseurl %}\n    {%   set url_prefix = '/' + site.baseurl %}\n    {% endif %}\n    <link href=\"{{url_prefix + '/css/site.css'}}\" rel=\"stylesheet\" media=\"screen\">\n    <link href=\"{{url_prefix + '/css/syntax.css'}}\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    {% set navbar_style = \"navbar-default\" %}\n    {% if site.navbar_inverse %}\n    {%   set navbar_style = \"navbar-inverse\" %}\n    {% endif %}\n    {% set navbar_right_items = 2 %}\n    {% if site.navbar_right_items %}\n    {%   set navbar_right_items = site.navbar_right_items %}\n    {% endif %}\n    <div class=\"navbar {{navbar_style}} navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"{{url_prefix + '/'}}\">{{site.brand}}</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            {% block home %}\n            {% endblock %}\n            {% for item in site.reflinks['/'].content[:-navbar_right_items] %}\n            {%   set context = '' %}\n            {%   if item.components|d and this.components[0] == item.components[0] %}\n            {%     set context = ' class=\"active\"' %}\n            {%   endif %}\n            {%   if item.content|d and item.dropdown %}\n            <li{{context}} class=\"dropdown\">\n              <a href=\"{{item.url}}\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">{{item.title}} <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                {% for subitem in item.content %}\n                <li><a href=\"{{subitem.url}}\">{{subitem.title}}</a></li>\n                {% endfor %}\n              </ul>\n            </li>\n            {% else %}\n            <li{{context}}><a href=\"{{item.url}}\">{{item.title}}</a></li>\n            {%   endif %}\n            {% endfor %}\n          </ul>\n\n          <ul class=\"nav navbar-nav navbar-right\">\n            {% for item in site.reflinks['/'].content[-navbar_right_items:] %}\n            {%   set context = '' %}\n            {%   if item.components|d and this.components[0] == item.components[0] %}\n            {%     set context = ' class=\"active\"' %}\n            {%   endif %}\n            {%   if item.content|d and item.dropdown %}\n            <li{{context}} class=\"dropdown\">\n              <a href=\"{{item.url}}\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">{{item.title}} <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                {% for subitem in item.content %}\n                <li><a href=\"{{subitem.url}}\">{{subitem.title}}</a></li>\n                {% endfor %}\n              </ul>\n            </li>\n            {% else %}\n            <li{{context}}><a href=\"{{item.url}}\">{{item.title}}</a></li>\n            {%   endif %}\n            {% endfor %}\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n    {% block body %}\n    {% endblock %}\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <script src=\"https://code.jquery.com/jquery.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/{{bootstrap}}/js/bootstrap.min.js\"></script>\n\n  </body>\n</html>\n\n"
  },
  {
    "path": "urubu/tests/undef_ref/_layouts/page.html",
    "content": "{% extends \"_base.html\" %}\n\n{% block body %}\n\n<div class=\"container\">\n\n  <div class=\"page-header\">\n    {% block title %}\n    <h1>{{this.title}}</h1>\n    {% endblock %}\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"content\">\n      {% block content %}\n      <div class=\"col-md-7\" role=\"main\">\n        {{this.body}}\n      </div>\n      {% endblock %}\n    </div>\n\n    {% block sidebar %}\n    {% if this.toc %}\n    <div class=\"col-md-3\" role=\"complementary\">\n      <nav class=\"hidden-print hidden-xs hidden-sm\">\n        <div class=\"sidebar\" data-spy=\"affix\" data-offset-top=\"80\" data-offset-bottom=\"60\">\n          <div class=\"well\">\n            <a href=\"#\"><strong>{{this.title}}</strong></a>\n            {{this.toc}}\n          </div>\n        </div>\n      </nav>\n    </div>\n    {% endif %}\n    {% endblock %}\n\n  </div>\n\n  {% if this.pager %}\n  <ul class=\"pager\">\n    {% if this.prev %}\n    <li class=\"previous\"><a href=\"{{this.prev.url}}\">&larr; {{this.prev.title}}</a></li>\n    {% endif %}\n    {% if this.next %}\n    <li class=\"next\"><a href=\"{{this.next.url}}\">{{this.next.title}} &rarr;</a></li>\n    {% endif %}\n  </ul>\n  {% endif %}\n\n\n</div>\n\n{% endblock %}\n\n"
  },
  {
    "path": "urubu/tests/undef_ref/_site.yml",
    "content": "brand: Urubu \n\nbootswatch: null \nnavbar_inverse: false \nbootstrap: 3.3.4\n\nignore_patterns: ['*.py', 'README.md']\n\nreflinks:\n    jandecaluwe:\n        url: ttp://www.jandecaluwe.com\n        title: Jan Decaluwe\n    myhdl_site: \n        url: http://www.myhdl.org \n        title: MyHDL website\n    dev_myhdl_site: \n        url: http://dev.myhdl.org \n        title: MyHDL development website\n    content_license:\n        url: http://creativecommons.org/licenses/by-sa/3.0/\n        title: CC-BY-SA License\n    software_license:\n        url: http://www.gnu.org/licenses/agpl-3.0.txt\n        title: GNU Affero General Public License\n    bitbucket:\n        url: http://www.bitbucket.com\n        title: Bitbucket\n    github:\n        url: http://www.github.com\n        title: GitHub\n    markdown:\n        url: http://daringfireball.net/projects/markdown/  \n        title: Markdown\n    markdown_extra:\n        url: http://pythonhosted.org/Markdown/extensions/extra.html\n        title: Markdown Extra\n    python_markdown:\n        url: http://pythonhosted.org/Markdown/\n        title: Python-Markdown \n    pygments:\n        url: http://pygments.org\n        title: Pygments\n    jinja2:\n        url: http://jinja.pocoo.org\n        title: Jinja2\n    bootstrap:\n        url: http://getbootstrap.com\n        title: Bootstrap\n    bootswatch:\n        url: http://bootswatch.com\n        title: Bootswatch\n    pyyaml:\n        url: http://pyyaml.org\n        title: PyYAML\n    jekyll:\n        url: http://jekyllrb.com\n        title: Jekyll\n    pelican:\n        url: http://getpelican.com\n        title: Pelican\n    virtualenv:\n        url: http://www.virtualenv.org/en/latest/virtualenv.html\n        title: virtualenv\n    urubu_repo:\n        url: https://github.com/jandecaluwe/urubu\n        title: Urubu repo\n    tables: \n        url: http://pythonhosted.org/Markdown/extensions/tables.html\n        title: Tables\n    abbrev: \n        url: http://pythonhosted.org/Markdown/extensions/abbreviations.html\n        title: Abbrevations\n    attr_list:\n        url: http://pythonhosted.org/Markdown/extensions/attr_list.html\n        title: Attribute lists\n    def_list: \n        url: http://pythonhosted.org/Markdown/extensions/definition_lists.html\n        title: Definition Lists\n    fenced_code: \n        url: http://pythonhosted.org/Markdown/extensions/fenced_code_blocks.html\n        title: Fenced Code Blocks\n    markdown_checklist: \n        url: https://github.com/FND/markdown-checklist\n        title: GitHub style Task Lists\n    code_hilite: \n        url: http://pythonhosted.org/Markdown/extensions/code_hilite.html\n        title: CodeHilite\n    urubu-quickstart:\n        url: http://urubu-quickstart.jandecaluwe.com\n        title: Urubu Quickstart\n"
  },
  {
    "path": "urubu/tests/undef_ref/index.md",
    "content": "---\ntitle: test \nlayout: page \ncontent:\n    - undefined_page\n    - page\n---\n"
  },
  {
    "path": "urubu/tests/undef_ref/page.md",
    "content": "---\ntitle: page \nlayout: page \n---\n\n"
  },
  {
    "path": "urubu/tests/undef_ref_md/_build/index.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>test</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n          </ul>\n\n          <ul class=\"nav navbar-nav navbar-right\">\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <div class=\"page-header\">\n    <h1>test</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"content\">\n      <div class=\"col-md-7\" role=\"main\">\n        \n      </div>\n    </div>\n\n\n  </div>\n\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <script src=\"https://code.jquery.com/jquery.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n\n  </body>\n</html>\n"
  },
  {
    "path": "urubu/tests/undef_ref_md/_build/page.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>page</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n          </ul>\n\n          <ul class=\"nav navbar-nav navbar-right\">\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <div class=\"page-header\">\n    <h1>page</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"content\">\n      <div class=\"col-md-7\" role=\"main\">\n        \n      </div>\n    </div>\n\n\n  </div>\n\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <script src=\"https://code.jquery.com/jquery.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n\n  </body>\n</html>\n"
  },
  {
    "path": "urubu/tests/undef_ref_md/_build/page2.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>page</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n          </ul>\n\n          <ul class=\"nav navbar-nav navbar-right\">\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <div class=\"page-header\">\n    <h1>page</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"content\">\n      <div class=\"col-md-7\" role=\"main\">\n        <p>Reference an undefined page: [undefined_page].</p>\n      </div>\n    </div>\n\n\n  </div>\n\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <script src=\"https://code.jquery.com/jquery.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n\n  </body>\n</html>\n"
  },
  {
    "path": "urubu/tests/undef_ref_md/_layouts/_base.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>{{this.title}}</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    {% set bootstrap = \"3.1.1\" %}\n    {% if site.bootstrap %}\n    {%   set bootstrap = site.bootstrap %}\n    {% endif %}\n    {% if site.bootswatch %}\n    {%   set theme_path = \"bootswatch/\"+ bootstrap + '/' + site.bootswatch %}\n    {% else %}\n    {%   set theme_path = \"bootstrap/\" + bootstrap + \"/css\" %}\n    {% endif %}\n    <link href=\"//netdna.bootstrapcdn.com/{{theme_path}}/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    {% set url_prefix = '' %}\n    {% if site.baseurl %}\n    {%   set url_prefix = '/' + site.baseurl %}\n    {% endif %}\n    <link href=\"{{url_prefix + '/css/site.css'}}\" rel=\"stylesheet\" media=\"screen\">\n    <link href=\"{{url_prefix + '/css/syntax.css'}}\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    {% set navbar_style = \"navbar-default\" %}\n    {% if site.navbar_inverse %}\n    {%   set navbar_style = \"navbar-inverse\" %}\n    {% endif %}\n    {% set navbar_right_items = 2 %}\n    {% if site.navbar_right_items %}\n    {%   set navbar_right_items = site.navbar_right_items %}\n    {% endif %}\n    <div class=\"navbar {{navbar_style}} navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"{{url_prefix + '/'}}\">{{site.brand}}</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            {% block home %}\n            {% endblock %}\n            {% for item in site.reflinks['/'].content[:-navbar_right_items] %}\n            {%   set context = '' %}\n            {%   if item.components|d and this.components[0] == item.components[0] %}\n            {%     set context = ' class=\"active\"' %}\n            {%   endif %}\n            {%   if item.content|d and item.dropdown %}\n            <li{{context}} class=\"dropdown\">\n              <a href=\"{{item.url}}\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">{{item.title}} <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                {% for subitem in item.content %}\n                <li><a href=\"{{subitem.url}}\">{{subitem.title}}</a></li>\n                {% endfor %}\n              </ul>\n            </li>\n            {% else %}\n            <li{{context}}><a href=\"{{item.url}}\">{{item.title}}</a></li>\n            {%   endif %}\n            {% endfor %}\n          </ul>\n\n          <ul class=\"nav navbar-nav navbar-right\">\n            {% for item in site.reflinks['/'].content[-navbar_right_items:] %}\n            {%   set context = '' %}\n            {%   if item.components|d and this.components[0] == item.components[0] %}\n            {%     set context = ' class=\"active\"' %}\n            {%   endif %}\n            {%   if item.content|d and item.dropdown %}\n            <li{{context}} class=\"dropdown\">\n              <a href=\"{{item.url}}\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">{{item.title}} <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                {% for subitem in item.content %}\n                <li><a href=\"{{subitem.url}}\">{{subitem.title}}</a></li>\n                {% endfor %}\n              </ul>\n            </li>\n            {% else %}\n            <li{{context}}><a href=\"{{item.url}}\">{{item.title}}</a></li>\n            {%   endif %}\n            {% endfor %}\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n    {% block body %}\n    {% endblock %}\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <script src=\"https://code.jquery.com/jquery.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/{{bootstrap}}/js/bootstrap.min.js\"></script>\n\n  </body>\n</html>\n\n"
  },
  {
    "path": "urubu/tests/undef_ref_md/_layouts/page.html",
    "content": "{% extends \"_base.html\" %}\n\n{% block body %}\n\n<div class=\"container\">\n\n  <div class=\"page-header\">\n    {% block title %}\n    <h1>{{this.title}}</h1>\n    {% endblock %}\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"content\">\n      {% block content %}\n      <div class=\"col-md-7\" role=\"main\">\n        {{this.body}}\n      </div>\n      {% endblock %}\n    </div>\n\n    {% block sidebar %}\n    {% if this.toc %}\n    <div class=\"col-md-3\" role=\"complementary\">\n      <nav class=\"hidden-print hidden-xs hidden-sm\">\n        <div class=\"sidebar\" data-spy=\"affix\" data-offset-top=\"80\" data-offset-bottom=\"60\">\n          <div class=\"well\">\n            <a href=\"#\"><strong>{{this.title}}</strong></a>\n            {{this.toc}}\n          </div>\n        </div>\n      </nav>\n    </div>\n    {% endif %}\n    {% endblock %}\n\n  </div>\n\n  {% if this.pager %}\n  <ul class=\"pager\">\n    {% if this.prev %}\n    <li class=\"previous\"><a href=\"{{this.prev.url}}\">&larr; {{this.prev.title}}</a></li>\n    {% endif %}\n    {% if this.next %}\n    <li class=\"next\"><a href=\"{{this.next.url}}\">{{this.next.title}} &rarr;</a></li>\n    {% endif %}\n  </ul>\n  {% endif %}\n\n\n</div>\n\n{% endblock %}\n\n"
  },
  {
    "path": "urubu/tests/undef_ref_md/_site.yml",
    "content": "brand: Urubu \n\nbootswatch: null \nnavbar_inverse: false \nbootstrap: 3.3.4\n\nignore_patterns: ['*.py', 'README.md']\n\nreflinks:\n    jandecaluwe:\n        url: ttp://www.jandecaluwe.com\n        title: Jan Decaluwe\n    myhdl_site: \n        url: http://www.myhdl.org \n        title: MyHDL website\n    dev_myhdl_site: \n        url: http://dev.myhdl.org \n        title: MyHDL development website\n    content_license:\n        url: http://creativecommons.org/licenses/by-sa/3.0/\n        title: CC-BY-SA License\n    software_license:\n        url: http://www.gnu.org/licenses/agpl-3.0.txt\n        title: GNU Affero General Public License\n    bitbucket:\n        url: http://www.bitbucket.com\n        title: Bitbucket\n    github:\n        url: http://www.github.com\n        title: GitHub\n    markdown:\n        url: http://daringfireball.net/projects/markdown/  \n        title: Markdown\n    markdown_extra:\n        url: http://pythonhosted.org/Markdown/extensions/extra.html\n        title: Markdown Extra\n    python_markdown:\n        url: http://pythonhosted.org/Markdown/\n        title: Python-Markdown \n    pygments:\n        url: http://pygments.org\n        title: Pygments\n    jinja2:\n        url: http://jinja.pocoo.org\n        title: Jinja2\n    bootstrap:\n        url: http://getbootstrap.com\n        title: Bootstrap\n    bootswatch:\n        url: http://bootswatch.com\n        title: Bootswatch\n    pyyaml:\n        url: http://pyyaml.org\n        title: PyYAML\n    jekyll:\n        url: http://jekyllrb.com\n        title: Jekyll\n    pelican:\n        url: http://getpelican.com\n        title: Pelican\n    virtualenv:\n        url: http://www.virtualenv.org/en/latest/virtualenv.html\n        title: virtualenv\n    urubu_repo:\n        url: https://github.com/jandecaluwe/urubu\n        title: Urubu repo\n    tables: \n        url: http://pythonhosted.org/Markdown/extensions/tables.html\n        title: Tables\n    abbrev: \n        url: http://pythonhosted.org/Markdown/extensions/abbreviations.html\n        title: Abbrevations\n    attr_list:\n        url: http://pythonhosted.org/Markdown/extensions/attr_list.html\n        title: Attribute lists\n    def_list: \n        url: http://pythonhosted.org/Markdown/extensions/definition_lists.html\n        title: Definition Lists\n    fenced_code: \n        url: http://pythonhosted.org/Markdown/extensions/fenced_code_blocks.html\n        title: Fenced Code Blocks\n    markdown_checklist: \n        url: https://github.com/FND/markdown-checklist\n        title: GitHub style Task Lists\n    code_hilite: \n        url: http://pythonhosted.org/Markdown/extensions/code_hilite.html\n        title: CodeHilite\n    urubu-quickstart:\n        url: http://urubu-quickstart.jandecaluwe.com\n        title: Urubu Quickstart\n"
  },
  {
    "path": "urubu/tests/undef_ref_md/index.md",
    "content": "---\ntitle: test \nlayout: page \ncontent: []\n---\n"
  },
  {
    "path": "urubu/tests/undef_ref_md/page.md",
    "content": "---\ntitle: page \nlayout: page \n---\n\n"
  },
  {
    "path": "urubu/tests/undef_ref_md/page2.md",
    "content": "---\ntitle: page \nlayout: page \n---\n\n\nReference an undefined page: [undefined_page].\n"
  },
  {
    "path": "urubu/tests/undef_reflink_title/_build/index.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>test</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n          </ul>\n\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li><a href=\"/page.html\">page</a></li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <div class=\"page-header\">\n    <h1>test</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"content\">\n      <div class=\"col-md-7\" role=\"main\">\n        \n      </div>\n    </div>\n\n\n  </div>\n\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <script src=\"https://code.jquery.com/jquery.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n\n  </body>\n</html>\n"
  },
  {
    "path": "urubu/tests/undef_reflink_title/_build/page.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>page</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n          </ul>\n\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li class=\"active\"><a href=\"/page.html\">page</a></li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <div class=\"page-header\">\n    <h1>page</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"content\">\n      <div class=\"col-md-7\" role=\"main\">\n        \n      </div>\n    </div>\n\n\n  </div>\n\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <script src=\"https://code.jquery.com/jquery.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n\n  </body>\n</html>\n"
  },
  {
    "path": "urubu/tests/undef_reflink_title/_layouts/_base.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>{{this.title}}</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    {% set bootstrap = \"3.1.1\" %}\n    {% if site.bootstrap %}\n    {%   set bootstrap = site.bootstrap %}\n    {% endif %}\n    {% if site.bootswatch %}\n    {%   set theme_path = \"bootswatch/\"+ bootstrap + '/' + site.bootswatch %}\n    {% else %}\n    {%   set theme_path = \"bootstrap/\" + bootstrap + \"/css\" %}\n    {% endif %}\n    <link href=\"//netdna.bootstrapcdn.com/{{theme_path}}/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    {% set url_prefix = '' %}\n    {% if site.baseurl %}\n    {%   set url_prefix = '/' + site.baseurl %}\n    {% endif %}\n    <link href=\"{{url_prefix + '/css/site.css'}}\" rel=\"stylesheet\" media=\"screen\">\n    <link href=\"{{url_prefix + '/css/syntax.css'}}\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    {% set navbar_style = \"navbar-default\" %}\n    {% if site.navbar_inverse %}\n    {%   set navbar_style = \"navbar-inverse\" %}\n    {% endif %}\n    {% set navbar_right_items = 2 %}\n    {% if site.navbar_right_items %}\n    {%   set navbar_right_items = site.navbar_right_items %}\n    {% endif %}\n    <div class=\"navbar {{navbar_style}} navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"{{url_prefix + '/'}}\">{{site.brand}}</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            {% block home %}\n            {% endblock %}\n            {% for item in site.reflinks['/'].content[:-navbar_right_items] %}\n            {%   set context = '' %}\n            {%   if item.components|d and this.components[0] == item.components[0] %}\n            {%     set context = ' class=\"active\"' %}\n            {%   endif %}\n            {%   if item.content|d and item.dropdown %}\n            <li{{context}} class=\"dropdown\">\n              <a href=\"{{item.url}}\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">{{item.title}} <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                {% for subitem in item.content %}\n                <li><a href=\"{{subitem.url}}\">{{subitem.title}}</a></li>\n                {% endfor %}\n              </ul>\n            </li>\n            {% else %}\n            <li{{context}}><a href=\"{{item.url}}\">{{item.title}}</a></li>\n            {%   endif %}\n            {% endfor %}\n          </ul>\n\n          <ul class=\"nav navbar-nav navbar-right\">\n            {% for item in site.reflinks['/'].content[-navbar_right_items:] %}\n            {%   set context = '' %}\n            {%   if item.components|d and this.components[0] == item.components[0] %}\n            {%     set context = ' class=\"active\"' %}\n            {%   endif %}\n            {%   if item.content|d and item.dropdown %}\n            <li{{context}} class=\"dropdown\">\n              <a href=\"{{item.url}}\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">{{item.title}} <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                {% for subitem in item.content %}\n                <li><a href=\"{{subitem.url}}\">{{subitem.title}}</a></li>\n                {% endfor %}\n              </ul>\n            </li>\n            {% else %}\n            <li{{context}}><a href=\"{{item.url}}\">{{item.title}}</a></li>\n            {%   endif %}\n            {% endfor %}\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n    {% block body %}\n    {% endblock %}\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <script src=\"https://code.jquery.com/jquery.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/{{bootstrap}}/js/bootstrap.min.js\"></script>\n\n  </body>\n</html>\n\n"
  },
  {
    "path": "urubu/tests/undef_reflink_title/_layouts/page.html",
    "content": "{% extends \"_base.html\" %}\n\n{% block body %}\n\n<div class=\"container\">\n\n  <div class=\"page-header\">\n    {% block title %}\n    <h1>{{this.title}}</h1>\n    {% endblock %}\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"content\">\n      {% block content %}\n      <div class=\"col-md-7\" role=\"main\">\n        {{this.body}}\n      </div>\n      {% endblock %}\n    </div>\n\n    {% block sidebar %}\n    {% if this.toc %}\n    <div class=\"col-md-3\" role=\"complementary\">\n      <nav class=\"hidden-print hidden-xs hidden-sm\">\n        <div class=\"sidebar\" data-spy=\"affix\" data-offset-top=\"80\" data-offset-bottom=\"60\">\n          <div class=\"well\">\n            <a href=\"#\"><strong>{{this.title}}</strong></a>\n            {{this.toc}}\n          </div>\n        </div>\n      </nav>\n    </div>\n    {% endif %}\n    {% endblock %}\n\n  </div>\n\n  {% if this.pager %}\n  <ul class=\"pager\">\n    {% if this.prev %}\n    <li class=\"previous\"><a href=\"{{this.prev.url}}\">&larr; {{this.prev.title}}</a></li>\n    {% endif %}\n    {% if this.next %}\n    <li class=\"next\"><a href=\"{{this.next.url}}\">{{this.next.title}} &rarr;</a></li>\n    {% endif %}\n  </ul>\n  {% endif %}\n\n\n</div>\n\n{% endblock %}\n\n"
  },
  {
    "path": "urubu/tests/undef_reflink_title/_site.yml",
    "content": "brand: Urubu \n\nbootswatch: null \nnavbar_inverse: false \nbootstrap: 3.3.4\n\nignore_patterns: ['*.py', 'README.md']\n\nreflinks:\n    jandecaluwe:\n        url: ttp://www.jandecaluwe.com\n        title: Jan Decaluwe\n    myhdl_site: \n        url: http://www.myhdl.org \n    dev_myhdl_site: \n        url: http://dev.myhdl.org \n        title: MyHDL development website\n    content_license:\n        url: http://creativecommons.org/licenses/by-sa/3.0/\n        title: CC-BY-SA License\n    software_license:\n        url: http://www.gnu.org/licenses/agpl-3.0.txt\n        title: GNU Affero General Public License\n    bitbucket:\n        url: http://www.bitbucket.com\n        title: Bitbucket\n    github:\n        url: http://www.github.com\n        title: GitHub\n    markdown:\n        url: http://daringfireball.net/projects/markdown/  \n        title: Markdown\n    markdown_extra:\n        url: http://pythonhosted.org/Markdown/extensions/extra.html\n        title: Markdown Extra\n    python_markdown:\n        url: http://pythonhosted.org/Markdown/\n        title: Python-Markdown \n    pygments:\n        url: http://pygments.org\n        title: Pygments\n    jinja2:\n        url: http://jinja.pocoo.org\n        title: Jinja2\n    bootstrap:\n        url: http://getbootstrap.com\n        title: Bootstrap\n    bootswatch:\n        url: http://bootswatch.com\n        title: Bootswatch\n    pyyaml:\n        url: http://pyyaml.org\n        title: PyYAML\n    jekyll:\n        url: http://jekyllrb.com\n        title: Jekyll\n    pelican:\n        url: http://getpelican.com\n        title: Pelican\n    virtualenv:\n        url: http://www.virtualenv.org/en/latest/virtualenv.html\n        title: virtualenv\n    urubu_repo:\n        url: https://github.com/jandecaluwe/urubu\n        title: Urubu repo\n    tables: \n        url: http://pythonhosted.org/Markdown/extensions/tables.html\n        title: Tables\n    abbrev: \n        url: http://pythonhosted.org/Markdown/extensions/abbreviations.html\n        title: Abbrevations\n    attr_list:\n        url: http://pythonhosted.org/Markdown/extensions/attr_list.html\n        title: Attribute lists\n    def_list: \n        url: http://pythonhosted.org/Markdown/extensions/definition_lists.html\n        title: Definition Lists\n    fenced_code: \n        url: http://pythonhosted.org/Markdown/extensions/fenced_code_blocks.html\n        title: Fenced Code Blocks\n    markdown_checklist: \n        url: https://github.com/FND/markdown-checklist\n        title: GitHub style Task Lists\n    code_hilite: \n        url: http://pythonhosted.org/Markdown/extensions/code_hilite.html\n        title: CodeHilite\n    urubu-quickstart:\n        url: http://urubu-quickstart.jandecaluwe.com\n        title: Urubu Quickstart\n"
  },
  {
    "path": "urubu/tests/undef_reflink_title/index.md",
    "content": "---\ntitle: test \nlayout: page \ncontent:\n    - page\n---\n"
  },
  {
    "path": "urubu/tests/undef_reflink_title/page.md",
    "content": "---\ntitle: page \nlayout: page \n---\n\n"
  },
  {
    "path": "urubu/tests/undef_reflink_url/_build/index.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>test</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n          </ul>\n\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li><a href=\"/page.html\">page</a></li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <div class=\"page-header\">\n    <h1>test</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"content\">\n      <div class=\"col-md-7\" role=\"main\">\n        \n      </div>\n    </div>\n\n\n  </div>\n\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <script src=\"https://code.jquery.com/jquery.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n\n  </body>\n</html>\n"
  },
  {
    "path": "urubu/tests/undef_reflink_url/_build/page.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>page</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n          </ul>\n\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li class=\"active\"><a href=\"/page.html\">page</a></li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <div class=\"page-header\">\n    <h1>page</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"content\">\n      <div class=\"col-md-7\" role=\"main\">\n        \n      </div>\n    </div>\n\n\n  </div>\n\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <script src=\"https://code.jquery.com/jquery.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n\n  </body>\n</html>\n"
  },
  {
    "path": "urubu/tests/undef_reflink_url/_layouts/_base.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>{{this.title}}</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    {% set bootstrap = \"3.1.1\" %}\n    {% if site.bootstrap %}\n    {%   set bootstrap = site.bootstrap %}\n    {% endif %}\n    {% if site.bootswatch %}\n    {%   set theme_path = \"bootswatch/\"+ bootstrap + '/' + site.bootswatch %}\n    {% else %}\n    {%   set theme_path = \"bootstrap/\" + bootstrap + \"/css\" %}\n    {% endif %}\n    <link href=\"//netdna.bootstrapcdn.com/{{theme_path}}/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    {% set url_prefix = '' %}\n    {% if site.baseurl %}\n    {%   set url_prefix = '/' + site.baseurl %}\n    {% endif %}\n    <link href=\"{{url_prefix + '/css/site.css'}}\" rel=\"stylesheet\" media=\"screen\">\n    <link href=\"{{url_prefix + '/css/syntax.css'}}\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    {% set navbar_style = \"navbar-default\" %}\n    {% if site.navbar_inverse %}\n    {%   set navbar_style = \"navbar-inverse\" %}\n    {% endif %}\n    {% set navbar_right_items = 2 %}\n    {% if site.navbar_right_items %}\n    {%   set navbar_right_items = site.navbar_right_items %}\n    {% endif %}\n    <div class=\"navbar {{navbar_style}} navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"{{url_prefix + '/'}}\">{{site.brand}}</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            {% block home %}\n            {% endblock %}\n            {% for item in site.reflinks['/'].content[:-navbar_right_items] %}\n            {%   set context = '' %}\n            {%   if item.components|d and this.components[0] == item.components[0] %}\n            {%     set context = ' class=\"active\"' %}\n            {%   endif %}\n            {%   if item.content|d and item.dropdown %}\n            <li{{context}} class=\"dropdown\">\n              <a href=\"{{item.url}}\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">{{item.title}} <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                {% for subitem in item.content %}\n                <li><a href=\"{{subitem.url}}\">{{subitem.title}}</a></li>\n                {% endfor %}\n              </ul>\n            </li>\n            {% else %}\n            <li{{context}}><a href=\"{{item.url}}\">{{item.title}}</a></li>\n            {%   endif %}\n            {% endfor %}\n          </ul>\n\n          <ul class=\"nav navbar-nav navbar-right\">\n            {% for item in site.reflinks['/'].content[-navbar_right_items:] %}\n            {%   set context = '' %}\n            {%   if item.components|d and this.components[0] == item.components[0] %}\n            {%     set context = ' class=\"active\"' %}\n            {%   endif %}\n            {%   if item.content|d and item.dropdown %}\n            <li{{context}} class=\"dropdown\">\n              <a href=\"{{item.url}}\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">{{item.title}} <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                {% for subitem in item.content %}\n                <li><a href=\"{{subitem.url}}\">{{subitem.title}}</a></li>\n                {% endfor %}\n              </ul>\n            </li>\n            {% else %}\n            <li{{context}}><a href=\"{{item.url}}\">{{item.title}}</a></li>\n            {%   endif %}\n            {% endfor %}\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n    {% block body %}\n    {% endblock %}\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <script src=\"https://code.jquery.com/jquery.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/{{bootstrap}}/js/bootstrap.min.js\"></script>\n\n  </body>\n</html>\n\n"
  },
  {
    "path": "urubu/tests/undef_reflink_url/_layouts/page.html",
    "content": "{% extends \"_base.html\" %}\n\n{% block body %}\n\n<div class=\"container\">\n\n  <div class=\"page-header\">\n    {% block title %}\n    <h1>{{this.title}}</h1>\n    {% endblock %}\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"content\">\n      {% block content %}\n      <div class=\"col-md-7\" role=\"main\">\n        {{this.body}}\n      </div>\n      {% endblock %}\n    </div>\n\n    {% block sidebar %}\n    {% if this.toc %}\n    <div class=\"col-md-3\" role=\"complementary\">\n      <nav class=\"hidden-print hidden-xs hidden-sm\">\n        <div class=\"sidebar\" data-spy=\"affix\" data-offset-top=\"80\" data-offset-bottom=\"60\">\n          <div class=\"well\">\n            <a href=\"#\"><strong>{{this.title}}</strong></a>\n            {{this.toc}}\n          </div>\n        </div>\n      </nav>\n    </div>\n    {% endif %}\n    {% endblock %}\n\n  </div>\n\n  {% if this.pager %}\n  <ul class=\"pager\">\n    {% if this.prev %}\n    <li class=\"previous\"><a href=\"{{this.prev.url}}\">&larr; {{this.prev.title}}</a></li>\n    {% endif %}\n    {% if this.next %}\n    <li class=\"next\"><a href=\"{{this.next.url}}\">{{this.next.title}} &rarr;</a></li>\n    {% endif %}\n  </ul>\n  {% endif %}\n\n\n</div>\n\n{% endblock %}\n\n"
  },
  {
    "path": "urubu/tests/undef_reflink_url/_site.yml",
    "content": "brand: Urubu \n\nbootswatch: null \nnavbar_inverse: false \nbootstrap: 3.3.4\n\nignore_patterns: ['*.py', 'README.md']\n\nreflinks:\n    jandecaluwe:\n        url: ttp://www.jandecaluwe.com\n        title: Jan Decaluwe\n    myhdl_site: \n        title: MyHDL website\n    dev_myhdl_site: \n        url: http://dev.myhdl.org \n        title: MyHDL development website\n    content_license:\n        url: http://creativecommons.org/licenses/by-sa/3.0/\n        title: CC-BY-SA License\n    software_license:\n        url: http://www.gnu.org/licenses/agpl-3.0.txt\n        title: GNU Affero General Public License\n    bitbucket:\n        url: http://www.bitbucket.com\n        title: Bitbucket\n    github:\n        url: http://www.github.com\n        title: GitHub\n    markdown:\n        url: http://daringfireball.net/projects/markdown/  \n        title: Markdown\n    markdown_extra:\n        url: http://pythonhosted.org/Markdown/extensions/extra.html\n        title: Markdown Extra\n    python_markdown:\n        url: http://pythonhosted.org/Markdown/\n        title: Python-Markdown \n    pygments:\n        url: http://pygments.org\n        title: Pygments\n    jinja2:\n        url: http://jinja.pocoo.org\n        title: Jinja2\n    bootstrap:\n        url: http://getbootstrap.com\n        title: Bootstrap\n    bootswatch:\n        url: http://bootswatch.com\n        title: Bootswatch\n    pyyaml:\n        url: http://pyyaml.org\n        title: PyYAML\n    jekyll:\n        url: http://jekyllrb.com\n        title: Jekyll\n    pelican:\n        url: http://getpelican.com\n        title: Pelican\n    virtualenv:\n        url: http://www.virtualenv.org/en/latest/virtualenv.html\n        title: virtualenv\n    urubu_repo:\n        url: https://github.com/jandecaluwe/urubu\n        title: Urubu repo\n    tables: \n        url: http://pythonhosted.org/Markdown/extensions/tables.html\n        title: Tables\n    abbrev: \n        url: http://pythonhosted.org/Markdown/extensions/abbreviations.html\n        title: Abbrevations\n    attr_list:\n        url: http://pythonhosted.org/Markdown/extensions/attr_list.html\n        title: Attribute lists\n    def_list: \n        url: http://pythonhosted.org/Markdown/extensions/definition_lists.html\n        title: Definition Lists\n    fenced_code: \n        url: http://pythonhosted.org/Markdown/extensions/fenced_code_blocks.html\n        title: Fenced Code Blocks\n    markdown_checklist: \n        url: https://github.com/FND/markdown-checklist\n        title: GitHub style Task Lists\n    code_hilite: \n        url: http://pythonhosted.org/Markdown/extensions/code_hilite.html\n        title: CodeHilite\n    urubu-quickstart:\n        url: http://urubu-quickstart.jandecaluwe.com\n        title: Urubu Quickstart\n"
  },
  {
    "path": "urubu/tests/undef_reflink_url/index.md",
    "content": "---\ntitle: test \nlayout: page \ncontent:\n    - page\n---\n"
  },
  {
    "path": "urubu/tests/undef_reflink_url/page.md",
    "content": "---\ntitle: page \nlayout: page \n---\n\n"
  },
  {
    "path": "urubu/tests/undef_tag_layout/_build/index.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>test</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n          </ul>\n\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li><a href=\"/page.html\">page</a></li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <div class=\"page-header\">\n    <h1>test</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"content\">\n      <div class=\"col-md-7\" role=\"main\">\n        \n      </div>\n    </div>\n\n\n  </div>\n\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <script src=\"https://code.jquery.com/jquery.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n\n  </body>\n</html>\n"
  },
  {
    "path": "urubu/tests/undef_tag_layout/_build/page.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>page</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    <link href=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <link href=\"/css/site.css\" rel=\"stylesheet\" media=\"screen\">\n    <link href=\"/css/syntax.css\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    <div class=\"navbar navbar-default navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"/\">Urubu</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n          </ul>\n\n          <ul class=\"nav navbar-nav navbar-right\">\n            <li class=\"active\"><a href=\"/page.html\">page</a></li>\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n\n<div class=\"container\">\n\n  <div class=\"page-header\">\n    <h1>page</h1>\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"content\">\n      <div class=\"col-md-7\" role=\"main\">\n        \n      </div>\n    </div>\n\n\n  </div>\n\n\n\n</div>\n\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <script src=\"https://code.jquery.com/jquery.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\"></script>\n\n  </body>\n</html>\n"
  },
  {
    "path": "urubu/tests/undef_tag_layout/_layouts/_base.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>{{this.title}}</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta charset=\"utf-8\">\n    <!-- Bootstrap -->\n    {% set bootstrap = \"3.1.1\" %}\n    {% if site.bootstrap %}\n    {%   set bootstrap = site.bootstrap %}\n    {% endif %}\n    {% if site.bootswatch %}\n    {%   set theme_path = \"bootswatch/\"+ bootstrap + '/' + site.bootswatch %}\n    {% else %}\n    {%   set theme_path = \"bootstrap/\" + bootstrap + \"/css\" %}\n    {% endif %}\n    <link href=\"//netdna.bootstrapcdn.com/{{theme_path}}/bootstrap.min.css\" rel=\"stylesheet\" media=\"screen\">\n\n    {% set url_prefix = '' %}\n    {% if site.baseurl %}\n    {%   set url_prefix = '/' + site.baseurl %}\n    {% endif %}\n    <link href=\"{{url_prefix + '/css/site.css'}}\" rel=\"stylesheet\" media=\"screen\">\n    <link href=\"{{url_prefix + '/css/syntax.css'}}\" rel=\"stylesheet\" media=\"screen\">\n\n    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n    <!--[if lt IE 9]>\n      <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n      <script src=\"https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js\"></script>\n    <![endif]-->\n  </head>\n\n  <body>\n\n    <!-- Fixed navbar -->\n    {% set navbar_style = \"navbar-default\" %}\n    {% if site.navbar_inverse %}\n    {%   set navbar_style = \"navbar-inverse\" %}\n    {% endif %}\n    {% set navbar_right_items = 2 %}\n    {% if site.navbar_right_items %}\n    {%   set navbar_right_items = site.navbar_right_items %}\n    {% endif %}\n    <div class=\"navbar {{navbar_style}} navbar-fixed-top\">\n      <div class=\"container\">\n        <div class=\"navbar-header\">\n          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n          <a class=\"navbar-brand\" href=\"{{url_prefix + '/'}}\">{{site.brand}}</a>\n        </div>\n        <div class=\"navbar-collapse collapse\">\n\n          <ul class=\"nav navbar-nav navbar-left\">\n            {% block home %}\n            {% endblock %}\n            {% for item in site.reflinks['/'].content[:-navbar_right_items] %}\n            {%   set context = '' %}\n            {%   if item.components|d and this.components[0] == item.components[0] %}\n            {%     set context = ' class=\"active\"' %}\n            {%   endif %}\n            {%   if item.content|d and item.dropdown %}\n            <li{{context}} class=\"dropdown\">\n              <a href=\"{{item.url}}\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">{{item.title}} <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                {% for subitem in item.content %}\n                <li><a href=\"{{subitem.url}}\">{{subitem.title}}</a></li>\n                {% endfor %}\n              </ul>\n            </li>\n            {% else %}\n            <li{{context}}><a href=\"{{item.url}}\">{{item.title}}</a></li>\n            {%   endif %}\n            {% endfor %}\n          </ul>\n\n          <ul class=\"nav navbar-nav navbar-right\">\n            {% for item in site.reflinks['/'].content[-navbar_right_items:] %}\n            {%   set context = '' %}\n            {%   if item.components|d and this.components[0] == item.components[0] %}\n            {%     set context = ' class=\"active\"' %}\n            {%   endif %}\n            {%   if item.content|d and item.dropdown %}\n            <li{{context}} class=\"dropdown\">\n              <a href=\"{{item.url}}\" class=\"dropdown-toggle\" data-toggle=\"dropdown\">{{item.title}} <b class=\"caret\"></b></a>\n              <ul class=\"dropdown-menu\">\n                {% for subitem in item.content %}\n                <li><a href=\"{{subitem.url}}\">{{subitem.title}}</a></li>\n                {% endfor %}\n              </ul>\n            </li>\n            {% else %}\n            <li{{context}}><a href=\"{{item.url}}\">{{item.title}}</a></li>\n            {%   endif %}\n            {% endfor %}\n          </ul>\n\n        </div><!--/.nav-collapse -->\n      </div>\n    </div>\n\n    {% block body %}\n    {% endblock %}\n\n    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n    <script src=\"https://code.jquery.com/jquery.js\"></script>\n    <!-- Include all compiled plugins (below), or include individual files as needed -->\n    <script src=\"//netdna.bootstrapcdn.com/bootstrap/{{bootstrap}}/js/bootstrap.min.js\"></script>\n\n  </body>\n</html>\n\n"
  },
  {
    "path": "urubu/tests/undef_tag_layout/_layouts/page.html",
    "content": "{% extends \"_base.html\" %}\n\n{% block body %}\n\n<div class=\"container\">\n\n  <div class=\"page-header\">\n    {% block title %}\n    <h1>{{this.title}}</h1>\n    {% endblock %}\n  </div>\n\n  <div class=\"row\">\n\n    <div class=\"content\">\n      {% block content %}\n      <div class=\"col-md-7\" role=\"main\">\n        {{this.body}}\n      </div>\n      {% endblock %}\n    </div>\n\n    {% block sidebar %}\n    {% if this.toc %}\n    <div class=\"col-md-3\" role=\"complementary\">\n      <nav class=\"hidden-print hidden-xs hidden-sm\">\n        <div class=\"sidebar\" data-spy=\"affix\" data-offset-top=\"80\" data-offset-bottom=\"60\">\n          <div class=\"well\">\n            <a href=\"#\"><strong>{{this.title}}</strong></a>\n            {{this.toc}}\n          </div>\n        </div>\n      </nav>\n    </div>\n    {% endif %}\n    {% endblock %}\n\n  </div>\n\n  {% if this.pager %}\n  <ul class=\"pager\">\n    {% if this.prev %}\n    <li class=\"previous\"><a href=\"{{this.prev.url}}\">&larr; {{this.prev.title}}</a></li>\n    {% endif %}\n    {% if this.next %}\n    <li class=\"next\"><a href=\"{{this.next.url}}\">{{this.next.title}} &rarr;</a></li>\n    {% endif %}\n  </ul>\n  {% endif %}\n\n\n</div>\n\n{% endblock %}\n\n"
  },
  {
    "path": "urubu/tests/undef_tag_layout/_site.yml",
    "content": "brand: Urubu \n\nbootswatch: null \nnavbar_inverse: false \nbootstrap: 3.3.4\n\nignore_patterns: ['*.py', 'README.md']\n\nreflinks:\n    jandecaluwe:\n        url: ttp://www.jandecaluwe.com\n        title: Jan Decaluwe\n    myhdl_site: \n        url: http://www.myhdl.org \n        title: MyHDL website\n    dev_myhdl_site: \n        url: http://dev.myhdl.org \n        title: MyHDL development website\n    content_license:\n        url: http://creativecommons.org/licenses/by-sa/3.0/\n        title: CC-BY-SA License\n    software_license:\n        url: http://www.gnu.org/licenses/agpl-3.0.txt\n        title: GNU Affero General Public License\n    bitbucket:\n        url: http://www.bitbucket.com\n        title: Bitbucket\n    github:\n        url: http://www.github.com\n        title: GitHub\n    markdown:\n        url: http://daringfireball.net/projects/markdown/  \n        title: Markdown\n    markdown_extra:\n        url: http://pythonhosted.org/Markdown/extensions/extra.html\n        title: Markdown Extra\n    python_markdown:\n        url: http://pythonhosted.org/Markdown/\n        title: Python-Markdown \n    pygments:\n        url: http://pygments.org\n        title: Pygments\n    jinja2:\n        url: http://jinja.pocoo.org\n        title: Jinja2\n    bootstrap:\n        url: http://getbootstrap.com\n        title: Bootstrap\n    bootswatch:\n        url: http://bootswatch.com\n        title: Bootswatch\n    pyyaml:\n        url: http://pyyaml.org\n        title: PyYAML\n    jekyll:\n        url: http://jekyllrb.com\n        title: Jekyll\n    pelican:\n        url: http://getpelican.com\n        title: Pelican\n    virtualenv:\n        url: http://www.virtualenv.org/en/latest/virtualenv.html\n        title: virtualenv\n    urubu_repo:\n        url: https://github.com/jandecaluwe/urubu\n        title: Urubu repo\n    tables: \n        url: http://pythonhosted.org/Markdown/extensions/tables.html\n        title: Tables\n    abbrev: \n        url: http://pythonhosted.org/Markdown/extensions/abbreviations.html\n        title: Abbrevations\n    attr_list:\n        url: http://pythonhosted.org/Markdown/extensions/attr_list.html\n        title: Attribute lists\n    def_list: \n        url: http://pythonhosted.org/Markdown/extensions/definition_lists.html\n        title: Definition Lists\n    fenced_code: \n        url: http://pythonhosted.org/Markdown/extensions/fenced_code_blocks.html\n        title: Fenced Code Blocks\n    markdown_checklist: \n        url: https://github.com/FND/markdown-checklist\n        title: GitHub style Task Lists\n    code_hilite: \n        url: http://pythonhosted.org/Markdown/extensions/code_hilite.html\n        title: CodeHilite\n    urubu-quickstart:\n        url: http://urubu-quickstart.jandecaluwe.com\n        title: Urubu Quickstart\n"
  },
  {
    "path": "urubu/tests/undef_tag_layout/index.md",
    "content": "---\ntitle: test \nlayout: page \ncontent:\n    - page\n---\n"
  },
  {
    "path": "urubu/tests/undef_tag_layout/page.md",
    "content": "---\ntitle: page \nlayout: page \ntags: tag\n---\n\n"
  }
]