From 60da3c3010f843b96d02a7a04ece54d2c86adc1c Mon Sep 17 00:00:00 2001 From: Michael Rampl Date: Tue, 7 Apr 2020 10:21:17 +0200 Subject: [PATCH] restored stable version --- 404.html | 42 - 404.html.gz | Bin 873 -> 0 bytes ...al.be5838763530a3aede5cd6c4b067dc4d.otf.gz | Bin 13904 -> 0 bytes assets/icon/icon.svg | 73 - assets/icon/icon_192x192.png | Bin 753 -> 0 bytes assets/icon/icon_48x48.png | Bin 478 -> 0 bytes assets/icon/icon_96x96.png | Bin 753 -> 0 bytes calc.63bcec32e84a8d02d71c.css | 81 - calc.63bcec32e84a8d02d71c.css.gz | Bin 39015 -> 0 bytes calc.htm | 416 + css/family_tree.css | 153 + css/index.css | 345 + db/tests/index.htm | 18 + help.htm | 2859 ++ index.htm | 788 + index.html | 121 - index.html.gz | Bin 1642 -> 0 bytes js/Calculator.js | 1059 + js/CalculatorHelpers.js | 326 + js/Editor.js | 1210 + js/calc.63bcec32e84a8d02d71c.bundle.js | 1 - js/calc.63bcec32e84a8d02d71c.bundle.js.gz | Bin 4513506 -> 0 bytes js/calc_start.js | 100 + js/calculator.bundle.js | 11 + js/tests.63bcec32e84a8d02d71c.bundle.js | 1 - js/tests.63bcec32e84a8d02d71c.bundle.js.gz | Bin 797377 -> 0 bytes js/tests.bundle.js | 10 + .../css/bootstrap-datepicker.css | 472 + .../css/bootstrap-datepicker.min.css | 8 + .../css/bootstrap-datepicker.standalone.css | 505 + .../bootstrap-datepicker.standalone.min.css | 8 + .../css/bootstrap-datepicker3.css | 791 + .../css/bootstrap-datepicker3.min.css | 8 + .../css/bootstrap-datepicker3.standalone.css | 822 + .../bootstrap-datepicker3.standalone.min.css | 8 + .../js/bootstrap-datepicker.js | 1920 ++ .../js/bootstrap-datepicker.min.js | 8 + .../locales/bootstrap-datepicker.ar.min.js | 1 + .../locales/bootstrap-datepicker.az.min.js | 1 + .../locales/bootstrap-datepicker.bg.min.js | 1 + .../locales/bootstrap-datepicker.bs.min.js | 1 + .../locales/bootstrap-datepicker.ca.min.js | 1 + .../locales/bootstrap-datepicker.cs.min.js | 1 + .../locales/bootstrap-datepicker.cy.min.js | 1 + .../locales/bootstrap-datepicker.da.min.js | 1 + .../locales/bootstrap-datepicker.de.min.js | 1 + .../locales/bootstrap-datepicker.el.min.js | 1 + .../locales/bootstrap-datepicker.en-GB.min.js | 1 + .../locales/bootstrap-datepicker.eo.min.js | 1 + .../locales/bootstrap-datepicker.es.min.js | 1 + .../locales/bootstrap-datepicker.et.min.js | 1 + .../locales/bootstrap-datepicker.eu.min.js | 1 + .../locales/bootstrap-datepicker.fa.min.js | 1 + .../locales/bootstrap-datepicker.fi.min.js | 1 + .../locales/bootstrap-datepicker.fo.min.js | 1 + .../locales/bootstrap-datepicker.fr-CH.min.js | 1 + .../locales/bootstrap-datepicker.fr.min.js | 1 + .../locales/bootstrap-datepicker.gl.min.js | 1 + .../locales/bootstrap-datepicker.he.min.js | 1 + .../locales/bootstrap-datepicker.hr.min.js | 1 + .../locales/bootstrap-datepicker.hu.min.js | 1 + .../locales/bootstrap-datepicker.hy.min.js | 1 + .../locales/bootstrap-datepicker.id.min.js | 1 + .../locales/bootstrap-datepicker.is.min.js | 1 + .../locales/bootstrap-datepicker.it-CH.min.js | 1 + .../locales/bootstrap-datepicker.it.min.js | 1 + .../locales/bootstrap-datepicker.ja.min.js | 1 + .../locales/bootstrap-datepicker.ka.min.js | 1 + .../locales/bootstrap-datepicker.kh.min.js | 1 + .../locales/bootstrap-datepicker.kk.min.js | 1 + .../locales/bootstrap-datepicker.ko.min.js | 1 + .../locales/bootstrap-datepicker.kr.min.js | 1 + .../locales/bootstrap-datepicker.lt.min.js | 1 + .../locales/bootstrap-datepicker.lv.min.js | 1 + .../locales/bootstrap-datepicker.me.min.js | 1 + .../locales/bootstrap-datepicker.mk.min.js | 1 + .../locales/bootstrap-datepicker.mn.min.js | 1 + .../locales/bootstrap-datepicker.ms.min.js | 1 + .../locales/bootstrap-datepicker.nb.min.js | 1 + .../locales/bootstrap-datepicker.nl-BE.min.js | 1 + .../locales/bootstrap-datepicker.nl.min.js | 1 + .../locales/bootstrap-datepicker.no.min.js | 1 + .../locales/bootstrap-datepicker.pl.min.js | 1 + .../locales/bootstrap-datepicker.pt-BR.min.js | 1 + .../locales/bootstrap-datepicker.pt.min.js | 1 + .../locales/bootstrap-datepicker.ro.min.js | 1 + .../bootstrap-datepicker.rs-latin.min.js | 1 + .../locales/bootstrap-datepicker.rs.min.js | 1 + .../locales/bootstrap-datepicker.ru.min.js | 1 + .../locales/bootstrap-datepicker.sk.min.js | 1 + .../locales/bootstrap-datepicker.sl.min.js | 1 + .../locales/bootstrap-datepicker.sq.min.js | 1 + .../bootstrap-datepicker.sr-latin.min.js | 1 + .../locales/bootstrap-datepicker.sr.min.js | 1 + .../locales/bootstrap-datepicker.sv.min.js | 1 + .../locales/bootstrap-datepicker.sw.min.js | 1 + .../locales/bootstrap-datepicker.th.min.js | 1 + .../locales/bootstrap-datepicker.tr.min.js | 1 + .../locales/bootstrap-datepicker.uk.min.js | 1 + .../locales/bootstrap-datepicker.vi.min.js | 1 + .../locales/bootstrap-datepicker.zh-CN.min.js | 1 + .../locales/bootstrap-datepicker.zh-TW.min.js | 1 + .../css/bootstrap-tour-standalone.css | 728 + .../css/bootstrap-tour-standalone.min.css | 26 + libs/bootstrap-tour/css/bootstrap-tour.css | 73 + .../bootstrap-tour/css/bootstrap-tour.min.css | 22 + .../js/bootstrap-tour-standalone.js | 1374 + .../js/bootstrap-tour-standalone.min.js | 22 + libs/bootstrap-tour/js/bootstrap-tour.js | 802 + libs/bootstrap-tour/js/bootstrap-tour.min.js | 22 + libs/bootstrap/css/bootstrap-theme.css | 587 + libs/bootstrap/css/bootstrap-theme.css.map | 1 + libs/bootstrap/css/bootstrap-theme.min.css | 5 + libs/bootstrap/css/bootstrap.css | 6800 ++++ libs/bootstrap/css/bootstrap.css.map | 1 + libs/bootstrap/css/bootstrap.min.css | 5 + .../fonts/glyphicons-halflings-regular.eot | Bin 0 -> 20127 bytes .../fonts/glyphicons-halflings-regular.svg | 288 + .../fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 45404 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23424 bytes .../fonts/glyphicons-halflings-regular.woff2 | Bin 0 -> 18028 bytes libs/bootstrap/js/bootstrap.js | 2363 ++ libs/bootstrap/js/bootstrap.min.js | 7 + libs/bootstrap/js/npm.js | 13 + libs/codemirror/AUTHORS | 496 + libs/codemirror/CONTRIBUTING.md | 88 + libs/codemirror/LICENSE | 19 + libs/codemirror/README.md | 28 + libs/codemirror/addon/comment/comment.js | 183 + .../addon/comment/continuecomment.js | 85 + libs/codemirror/addon/dialog/dialog.css | 32 + libs/codemirror/addon/dialog/dialog.js | 157 + libs/codemirror/addon/display/autorefresh.js | 47 + libs/codemirror/addon/display/fullscreen.css | 6 + libs/codemirror/addon/display/fullscreen.js | 41 + libs/codemirror/addon/display/panel.js | 112 + libs/codemirror/addon/display/placeholder.js | 60 + libs/codemirror/addon/display/rulers.js | 63 + libs/codemirror/addon/edit/closebrackets.js | 195 + libs/codemirror/addon/edit/closetag.js | 169 + libs/codemirror/addon/edit/continuelist.js | 51 + libs/codemirror/addon/edit/matchbrackets.js | 120 + libs/codemirror/addon/edit/matchtags.js | 66 + libs/codemirror/addon/edit/trailingspace.js | 27 + libs/codemirror/addon/fold/brace-fold.js | 105 + libs/codemirror/addon/fold/comment-fold.js | 57 + libs/codemirror/addon/fold/foldcode.js | 149 + libs/codemirror/addon/fold/foldgutter.css | 20 + libs/codemirror/addon/fold/foldgutter.js | 146 + libs/codemirror/addon/fold/indent-fold.js | 44 + libs/codemirror/addon/fold/markdown-fold.js | 49 + libs/codemirror/addon/fold/xml-fold.js | 182 + libs/codemirror/addon/hint/anyword-hint.js | 41 + libs/codemirror/addon/hint/css-hint.js | 60 + libs/codemirror/addon/hint/html-hint.js | 348 + libs/codemirror/addon/hint/javascript-hint.js | 146 + libs/codemirror/addon/hint/show-hint.css | 38 + libs/codemirror/addon/hint/show-hint.js | 386 + libs/codemirror/addon/hint/sql-hint.js | 254 + libs/codemirror/addon/hint/xml-hint.js | 110 + .../addon/lint/coffeescript-lint.js | 41 + libs/codemirror/addon/lint/css-lint.js | 35 + libs/codemirror/addon/lint/html-lint.js | 46 + libs/codemirror/addon/lint/javascript-lint.js | 136 + libs/codemirror/addon/lint/json-lint.js | 31 + libs/codemirror/addon/lint/lint.css | 73 + libs/codemirror/addon/lint/lint.js | 231 + libs/codemirror/addon/lint/yaml-lint.js | 28 + libs/codemirror/addon/merge/merge.css | 112 + libs/codemirror/addon/merge/merge.js | 775 + libs/codemirror/addon/mode/loadmode.js | 64 + libs/codemirror/addon/mode/multiplex.js | 123 + libs/codemirror/addon/mode/multiplex_test.js | 33 + libs/codemirror/addon/mode/overlay.js | 85 + libs/codemirror/addon/mode/simple.js | 213 + libs/codemirror/addon/runmode/colorize.js | 40 + .../addon/runmode/runmode-standalone.js | 157 + libs/codemirror/addon/runmode/runmode.js | 72 + libs/codemirror/addon/runmode/runmode.node.js | 178 + .../addon/scroll/annotatescrollbar.js | 115 + libs/codemirror/addon/scroll/scrollpastend.js | 46 + .../addon/scroll/simplescrollbars.css | 66 + .../addon/scroll/simplescrollbars.js | 147 + .../addon/search/match-highlighter.js | 128 + .../addon/search/matchesonscrollbar.css | 8 + .../addon/search/matchesonscrollbar.js | 97 + libs/codemirror/addon/search/search.js | 228 + libs/codemirror/addon/search/searchcursor.js | 189 + .../codemirror/addon/selection/active-line.js | 71 + .../addon/selection/mark-selection.js | 118 + .../addon/selection/selection-pointer.js | 98 + libs/codemirror/addon/tern/tern.css | 87 + libs/codemirror/addon/tern/tern.js | 700 + libs/codemirror/addon/tern/worker.js | 44 + libs/codemirror/addon/wrap/hardwrap.js | 139 + libs/codemirror/bower.json | 17 + libs/codemirror/keymap/emacs.js | 412 + libs/codemirror/keymap/sublime.js | 563 + libs/codemirror/keymap/vim.js | 5060 +++ libs/codemirror/lib/codemirror.css | 334 + libs/codemirror/lib/codemirror.js | 8835 +++++ libs/codemirror/mode/apl/apl.js | 174 + libs/codemirror/mode/asciiarmor/asciiarmor.js | 73 + libs/codemirror/mode/asn.1/asn.1.js | 204 + libs/codemirror/mode/asterisk/asterisk.js | 196 + libs/codemirror/mode/brainfuck/brainfuck.js | 85 + libs/codemirror/mode/clike/clike.js | 619 + libs/codemirror/mode/clojure/clojure.js | 244 + libs/codemirror/mode/cmake/cmake.js | 97 + libs/codemirror/mode/cobol/cobol.js | 255 + .../mode/coffeescript/coffeescript.js | 366 + libs/codemirror/mode/commonlisp/commonlisp.js | 123 + libs/codemirror/mode/css/css.js | 823 + libs/codemirror/mode/cypher/cypher.js | 146 + libs/codemirror/mode/d/d.js | 218 + libs/codemirror/mode/dart/dart.js | 50 + libs/codemirror/mode/diff/diff.js | 47 + libs/codemirror/mode/django/django.js | 350 + libs/codemirror/mode/dockerfile/dockerfile.js | 79 + libs/codemirror/mode/dtd/dtd.js | 142 + libs/codemirror/mode/dylan/dylan.js | 291 + libs/codemirror/mode/ebnf/ebnf.js | 195 + libs/codemirror/mode/ecl/ecl.js | 206 + libs/codemirror/mode/eiffel/eiffel.js | 160 + libs/codemirror/mode/elm/elm.js | 205 + libs/codemirror/mode/erlang/erlang.js | 618 + libs/codemirror/mode/factor/factor.js | 83 + libs/codemirror/mode/forth/forth.js | 180 + libs/codemirror/mode/fortran/fortran.js | 188 + libs/codemirror/mode/gas/gas.js | 345 + libs/codemirror/mode/gfm/gfm.js | 130 + libs/codemirror/mode/gherkin/gherkin.js | 178 + libs/codemirror/mode/go/go.js | 185 + libs/codemirror/mode/groovy/groovy.js | 230 + libs/codemirror/mode/haml/haml.js | 159 + libs/codemirror/mode/handlebars/handlebars.js | 53 + libs/codemirror/mode/haskell/haskell.js | 267 + libs/codemirror/mode/haxe/haxe.js | 506 + .../mode/htmlembedded/htmlembedded.js | 28 + libs/codemirror/mode/htmlmixed/htmlmixed.js | 150 + libs/codemirror/mode/http/http.js | 113 + libs/codemirror/mode/idl/idl.js | 290 + libs/codemirror/mode/jade/jade.js | 590 + libs/codemirror/mode/javascript/javascript.js | 708 + libs/codemirror/mode/jinja2/jinja2.js | 142 + libs/codemirror/mode/julia/julia.js | 299 + libs/codemirror/mode/kotlin/kotlin.js | 284 + libs/codemirror/mode/livescript/livescript.js | 280 + libs/codemirror/mode/lua/lua.js | 159 + libs/codemirror/mode/markdown/markdown.js | 792 + .../mode/mathematica/mathematica.js | 175 + libs/codemirror/mode/meta.js | 196 + libs/codemirror/mode/mirc/mirc.js | 193 + libs/codemirror/mode/mllike/mllike.js | 205 + libs/codemirror/mode/modelica/modelica.js | 245 + libs/codemirror/mode/mscgen/mscgen.js | 169 + libs/codemirror/mode/mumps/mumps.js | 148 + libs/codemirror/mode/nginx/nginx.js | 178 + libs/codemirror/mode/ntriples/ntriples.js | 186 + libs/codemirror/mode/octave/octave.js | 135 + libs/codemirror/mode/oz/oz.js | 252 + libs/codemirror/mode/pascal/pascal.js | 109 + libs/codemirror/mode/pegjs/pegjs.js | 114 + libs/codemirror/mode/perl/perl.js | 837 + libs/codemirror/mode/php/php.js | 234 + libs/codemirror/mode/pig/pig.js | 178 + libs/codemirror/mode/properties/properties.js | 78 + libs/codemirror/mode/puppet/puppet.js | 220 + libs/codemirror/mode/python/python.js | 358 + libs/codemirror/mode/q/q.js | 139 + libs/codemirror/mode/r/r.js | 162 + libs/codemirror/mode/rpm/rpm.js | 101 + libs/codemirror/mode/rst/rst.js | 557 + libs/codemirror/mode/ruby/ruby.js | 285 + libs/codemirror/mode/rust/rust.js | 58 + libs/codemirror/mode/sass/sass.js | 414 + libs/codemirror/mode/scheme/scheme.js | 249 + libs/codemirror/mode/shell/shell.js | 139 + libs/codemirror/mode/sieve/sieve.js | 193 + libs/codemirror/mode/slim/slim.js | 575 + libs/codemirror/mode/smalltalk/smalltalk.js | 168 + libs/codemirror/mode/smarty/smarty.js | 225 + libs/codemirror/mode/solr/solr.js | 104 + libs/codemirror/mode/soy/soy.js | 198 + libs/codemirror/mode/sparql/sparql.js | 174 + .../mode/spreadsheet/spreadsheet.js | 109 + libs/codemirror/mode/sql/sql.js | 391 + libs/codemirror/mode/stex/stex.js | 251 + libs/codemirror/mode/stylus/stylus.js | 769 + libs/codemirror/mode/swift/swift.js | 203 + libs/codemirror/mode/tcl/tcl.js | 147 + libs/codemirror/mode/textile/textile.js | 469 + .../codemirror/mode/tiddlywiki/tiddlywiki.css | 14 + libs/codemirror/mode/tiddlywiki/tiddlywiki.js | 358 + libs/codemirror/mode/tiki/tiki.css | 26 + libs/codemirror/mode/tiki/tiki.js | 312 + libs/codemirror/mode/toml/toml.js | 88 + libs/codemirror/mode/tornado/tornado.js | 68 + libs/codemirror/mode/troff/troff.js | 82 + libs/codemirror/mode/ttcn-cfg/ttcn-cfg.js | 214 + libs/codemirror/mode/ttcn/ttcn.js | 283 + libs/codemirror/mode/turtle/turtle.js | 162 + libs/codemirror/mode/twig/twig.js | 132 + libs/codemirror/mode/vb/vb.js | 276 + libs/codemirror/mode/vbscript/vbscript.js | 350 + libs/codemirror/mode/velocity/velocity.js | 201 + libs/codemirror/mode/verilog/verilog.js | 537 + libs/codemirror/mode/vhdl/vhdl.js | 189 + libs/codemirror/mode/vue/vue.js | 69 + libs/codemirror/mode/xml/xml.js | 385 + libs/codemirror/mode/xquery/xquery.js | 437 + libs/codemirror/mode/yaml/yaml.js | 117 + libs/codemirror/mode/z80/z80.js | 116 + libs/codemirror/theme/3024-day.css | 41 + libs/codemirror/theme/3024-night.css | 39 + libs/codemirror/theme/abcdef.css | 32 + libs/codemirror/theme/ambiance-mobile.css | 5 + libs/codemirror/theme/ambiance.css | 74 + libs/codemirror/theme/base16-dark.css | 38 + libs/codemirror/theme/base16-light.css | 38 + libs/codemirror/theme/blackboard.css | 32 + libs/codemirror/theme/cobalt.css | 25 + libs/codemirror/theme/colorforth.css | 33 + libs/codemirror/theme/dracula.css | 41 + libs/codemirror/theme/eclipse.css | 23 + libs/codemirror/theme/elegant.css | 13 + libs/codemirror/theme/erlang-dark.css | 34 + libs/codemirror/theme/icecoder.css | 43 + libs/codemirror/theme/lesser-dark.css | 47 + libs/codemirror/theme/liquibyte.css | 95 + libs/codemirror/theme/material.css | 53 + libs/codemirror/theme/mbo.css | 37 + libs/codemirror/theme/mdn-like.css | 46 + libs/codemirror/theme/midnight.css | 45 + libs/codemirror/theme/monokai.css | 35 + libs/codemirror/theme/neat.css | 12 + libs/codemirror/theme/neo.css | 43 + libs/codemirror/theme/night.css | 28 + libs/codemirror/theme/paraiso-dark.css | 38 + libs/codemirror/theme/paraiso-light.css | 38 + libs/codemirror/theme/pastel-on-dark.css | 53 + libs/codemirror/theme/rubyblue.css | 25 + libs/codemirror/theme/seti.css | 44 + libs/codemirror/theme/solarized.css | 163 + libs/codemirror/theme/the-matrix.css | 30 + .../theme/tomorrow-night-bright.css | 35 + .../theme/tomorrow-night-eighties.css | 38 + libs/codemirror/theme/ttcn.css | 64 + libs/codemirror/theme/twilight.css | 32 + libs/codemirror/theme/vibrant-ink.css | 34 + libs/codemirror/theme/xq-dark.css | 53 + libs/codemirror/theme/xq-light.css | 43 + libs/codemirror/theme/yeti.css | 44 + libs/codemirror/theme/zenburn.css | 37 + libs/font-awesome/HELP-US-OUT.txt | 7 + libs/font-awesome/bower.json | 22 + libs/font-awesome/css/font-awesome.css | 2026 ++ libs/font-awesome/css/font-awesome.css.map | 7 + libs/font-awesome/css/font-awesome.min.css | 4 + libs/font-awesome/fonts/FontAwesome.otf | Bin 0 -> 106260 bytes .../fonts/fontawesome-webfont.eot | Bin 0 -> 68875 bytes .../fonts/fontawesome-webfont.svg | 640 + .../fonts/fontawesome-webfont.ttf | Bin 0 -> 138204 bytes .../fonts/fontawesome-webfont.woff | Bin 0 -> 81284 bytes .../fonts/fontawesome-webfont.woff2 | Bin 0 -> 64464 bytes libs/font-awesome/less/animated.less | 34 + libs/font-awesome/less/bordered-pulled.less | 25 + libs/font-awesome/less/core.less | 12 + libs/font-awesome/less/fixed-width.less | 6 + libs/font-awesome/less/font-awesome.less | 17 + libs/font-awesome/less/icons.less | 677 + libs/font-awesome/less/larger.less | 13 + libs/font-awesome/less/list.less | 19 + libs/font-awesome/less/mixins.less | 26 + libs/font-awesome/less/path.less | 15 + libs/font-awesome/less/rotated-flipped.less | 20 + libs/font-awesome/less/stacked.less | 20 + libs/font-awesome/less/variables.less | 688 + libs/font-awesome/scss/_animated.scss | 34 + libs/font-awesome/scss/_bordered-pulled.scss | 25 + libs/font-awesome/scss/_core.scss | 12 + libs/font-awesome/scss/_fixed-width.scss | 6 + libs/font-awesome/scss/_icons.scss | 677 + libs/font-awesome/scss/_larger.scss | 13 + libs/font-awesome/scss/_list.scss | 19 + libs/font-awesome/scss/_mixins.scss | 26 + libs/font-awesome/scss/_path.scss | 15 + libs/font-awesome/scss/_rotated-flipped.scss | 20 + libs/font-awesome/scss/_stacked.scss | 20 + libs/font-awesome/scss/_variables.scss | 688 + libs/font-awesome/scss/font-awesome.scss | 17 + libs/handsontable/README.md | 33 + libs/handsontable/handsontable.bootstrap.css | 58 + libs/handsontable/handsontable.css | 1156 + libs/handsontable/handsontable.full.css | 1377 + libs/handsontable/handsontable.full.js | 27520 ++++++++++++++++ libs/handsontable/handsontable.full.min.css | 15 + libs/handsontable/handsontable.full.min.js | 44 + libs/handsontable/handsontable.js | 20660 ++++++++++++ libs/handsontable/handsontable.min.css | 12 + libs/handsontable/handsontable.min.js | 24 + libs/handsontable/moment/LICENSE | 22 + libs/handsontable/moment/locale/af.js | 72 + libs/handsontable/moment/locale/ar-ma.js | 58 + libs/handsontable/moment/locale/ar-sa.js | 102 + libs/handsontable/moment/locale/ar-tn.js | 56 + libs/handsontable/moment/locale/ar.js | 135 + libs/handsontable/moment/locale/az.js | 103 + libs/handsontable/moment/locale/be.js | 146 + libs/handsontable/moment/locale/bg.js | 89 + libs/handsontable/moment/locale/bn.js | 112 + libs/handsontable/moment/locale/bo.js | 109 + libs/handsontable/moment/locale/br.js | 106 + libs/handsontable/moment/locale/bs.js | 140 + libs/handsontable/moment/locale/ca.js | 78 + libs/handsontable/moment/locale/cs.js | 156 + libs/handsontable/moment/locale/cv.js | 62 + libs/handsontable/moment/locale/cy.js | 78 + libs/handsontable/moment/locale/da.js | 59 + libs/handsontable/moment/locale/de-at.js | 75 + libs/handsontable/moment/locale/de.js | 74 + libs/handsontable/moment/locale/el.js | 93 + libs/handsontable/moment/locale/en-au.js | 65 + libs/handsontable/moment/locale/en-ca.js | 62 + libs/handsontable/moment/locale/en-gb.js | 66 + libs/handsontable/moment/locale/eo.js | 72 + libs/handsontable/moment/locale/es.js | 78 + libs/handsontable/moment/locale/et.js | 79 + libs/handsontable/moment/locale/eu.js | 63 + libs/handsontable/moment/locale/fa.js | 104 + libs/handsontable/moment/locale/fi.js | 106 + libs/handsontable/moment/locale/fo.js | 59 + libs/handsontable/moment/locale/fr-ca.js | 57 + libs/handsontable/moment/locale/fr.js | 61 + libs/handsontable/moment/locale/fy.js | 70 + libs/handsontable/moment/locale/gl.js | 74 + libs/handsontable/moment/locale/he.js | 81 + libs/handsontable/moment/locale/hi.js | 122 + libs/handsontable/moment/locale/hr.js | 139 + libs/handsontable/moment/locale/hu.js | 108 + libs/handsontable/moment/locale/hy-am.js | 110 + libs/handsontable/moment/locale/id.js | 82 + libs/handsontable/moment/locale/is.js | 126 + libs/handsontable/moment/locale/it.js | 69 + libs/handsontable/moment/locale/ja.js | 64 + libs/handsontable/moment/locale/jv.js | 82 + libs/handsontable/moment/locale/ka.js | 102 + libs/handsontable/moment/locale/km.js | 57 + libs/handsontable/moment/locale/ko.js | 67 + libs/handsontable/moment/locale/lb.js | 133 + libs/handsontable/moment/locale/lt.js | 124 + libs/handsontable/moment/locale/lv.js | 95 + libs/handsontable/moment/locale/me.js | 108 + libs/handsontable/moment/locale/mk.js | 89 + libs/handsontable/moment/locale/ml.js | 70 + libs/handsontable/moment/locale/mr.js | 120 + libs/handsontable/moment/locale/ms-my.js | 81 + libs/handsontable/moment/locale/ms.js | 81 + libs/handsontable/moment/locale/my.js | 92 + libs/handsontable/moment/locale/nb.js | 60 + libs/handsontable/moment/locale/ne.js | 122 + libs/handsontable/moment/locale/nl.js | 70 + libs/handsontable/moment/locale/nn.js | 59 + libs/handsontable/moment/locale/pl.js | 104 + libs/handsontable/moment/locale/pt-br.js | 59 + libs/handsontable/moment/locale/pt.js | 63 + libs/handsontable/moment/locale/ro.js | 73 + libs/handsontable/moment/locale/ru.js | 163 + libs/handsontable/moment/locale/si.js | 64 + libs/handsontable/moment/locale/sk.js | 157 + libs/handsontable/moment/locale/sl.js | 159 + libs/handsontable/moment/locale/sq.js | 68 + libs/handsontable/moment/locale/sr-cyrl.js | 107 + libs/handsontable/moment/locale/sr.js | 107 + libs/handsontable/moment/locale/sv.js | 66 + libs/handsontable/moment/locale/ta.js | 94 + libs/handsontable/moment/locale/th.js | 64 + libs/handsontable/moment/locale/tl-ph.js | 61 + libs/handsontable/moment/locale/tr.js | 89 + libs/handsontable/moment/locale/tzl.js | 84 + libs/handsontable/moment/locale/tzm-latn.js | 57 + libs/handsontable/moment/locale/tzm.js | 57 + libs/handsontable/moment/locale/uk.js | 152 + libs/handsontable/moment/locale/uz.js | 57 + libs/handsontable/moment/locale/vi.js | 65 + libs/handsontable/moment/locale/zh-cn.js | 126 + libs/handsontable/moment/locale/zh-tw.js | 100 + libs/handsontable/moment/moment.js | 3195 ++ libs/handsontable/pikaday/LICENSE | 36 + libs/handsontable/pikaday/pikaday.css | 221 + libs/handsontable/pikaday/pikaday.js | 1080 + libs/handsontable/zeroclipboard/LICENSE | 8 + .../zeroclipboard/ZeroClipboard.js | 2581 ++ .../zeroclipboard/ZeroClipboard.swf | Bin 0 -> 6580 bytes libs/i18next/i18next.js | 2294 ++ libs/i18next/i18next.min.js | 6 + libs/jquery-bootpag/jquery.bootpag.js | 179 + libs/jquery-bootpag/jquery.bootpag.min.js | 21 + libs/jquery/jquery.js | 9210 ++++++ libs/jquery/jquery.min.js | 5 + libs/jquery/jquery.min.map | 1 + libs/marked/marked.js | 1285 + libs/qunit/qunit.css | 295 + libs/qunit/qunit.js | 3963 +++ libs/railroad-diagrams/README.md | 89 + libs/railroad-diagrams/css-example.py-js | 183 + libs/railroad-diagrams/example.html | 182 + libs/railroad-diagrams/generator.html | 59 + libs/railroad-diagrams/package.json | 23 + libs/railroad-diagrams/railroad-diagrams.css | 26 + libs/railroad-diagrams/railroad-diagrams.js | 644 + libs/railroad-diagrams/railroad_diagrams.py | 427 + locales/de/translation.json | 233 + locales/en/translation.json | 305 + locales/es/translation.json | 298 + manifest.json | 3 - resources/data/Northwind.txt | 3367 ++ resources/data/lectureRST.sql | 97 + resources/data/local_groups.txt | 706 + resources/data/snoopydb.sql | 136 + .../font/FreeSansMinimal.otf | Bin {assets => resources}/logos/dbis_x120.png | Bin {assets => resources}/logos/ifi_x120.png | Bin {assets => resources}/logos/uibk_x120.png | Bin test.html | 19 - test.html.gz | Bin 416 -> 0 bytes tests.63bcec32e84a8d02d71c.css | 11 - tests.63bcec32e84a8d02d71c.css.gz | Bin 1858 -> 0 bytes 528 files changed, 173492 insertions(+), 352 deletions(-) delete mode 100644 404.html delete mode 100644 404.html.gz delete mode 100644 assets/FreeSansMinimal.be5838763530a3aede5cd6c4b067dc4d.otf.gz delete mode 100644 assets/icon/icon.svg delete mode 100644 assets/icon/icon_192x192.png delete mode 100644 assets/icon/icon_48x48.png delete mode 100644 assets/icon/icon_96x96.png delete mode 100644 calc.63bcec32e84a8d02d71c.css delete mode 100644 calc.63bcec32e84a8d02d71c.css.gz create mode 100644 calc.htm create mode 100644 css/family_tree.css create mode 100644 css/index.css create mode 100644 db/tests/index.htm create mode 100644 help.htm create mode 100644 index.htm delete mode 100644 index.html delete mode 100644 index.html.gz create mode 100644 js/Calculator.js create mode 100644 js/CalculatorHelpers.js create mode 100644 js/Editor.js delete mode 100644 js/calc.63bcec32e84a8d02d71c.bundle.js delete mode 100644 js/calc.63bcec32e84a8d02d71c.bundle.js.gz create mode 100644 js/calc_start.js create mode 100644 js/calculator.bundle.js delete mode 100644 js/tests.63bcec32e84a8d02d71c.bundle.js delete mode 100644 js/tests.63bcec32e84a8d02d71c.bundle.js.gz create mode 100644 js/tests.bundle.js create mode 100644 libs/bootstrap-datepicker/css/bootstrap-datepicker.css create mode 100644 libs/bootstrap-datepicker/css/bootstrap-datepicker.min.css create mode 100644 libs/bootstrap-datepicker/css/bootstrap-datepicker.standalone.css create mode 100644 libs/bootstrap-datepicker/css/bootstrap-datepicker.standalone.min.css create mode 100644 libs/bootstrap-datepicker/css/bootstrap-datepicker3.css create mode 100644 libs/bootstrap-datepicker/css/bootstrap-datepicker3.min.css create mode 100644 libs/bootstrap-datepicker/css/bootstrap-datepicker3.standalone.css create mode 100644 libs/bootstrap-datepicker/css/bootstrap-datepicker3.standalone.min.css create mode 100644 libs/bootstrap-datepicker/js/bootstrap-datepicker.js create mode 100644 libs/bootstrap-datepicker/js/bootstrap-datepicker.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.ar.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.az.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.bg.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.bs.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.ca.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.cs.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.cy.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.da.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.de.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.el.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.en-GB.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.eo.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.es.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.et.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.eu.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.fa.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.fi.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.fo.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.fr-CH.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.fr.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.gl.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.he.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.hr.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.hu.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.hy.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.id.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.is.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.it-CH.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.it.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.ja.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.ka.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.kh.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.kk.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.ko.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.kr.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.lt.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.lv.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.me.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.mk.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.mn.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.ms.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.nb.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.nl-BE.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.nl.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.no.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.pl.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.pt-BR.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.pt.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.ro.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.rs-latin.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.rs.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.ru.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.sk.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.sl.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.sq.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.sr-latin.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.sr.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.sv.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.sw.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.th.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.tr.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.uk.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.vi.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.zh-CN.min.js create mode 100644 libs/bootstrap-datepicker/locales/bootstrap-datepicker.zh-TW.min.js create mode 100644 libs/bootstrap-tour/css/bootstrap-tour-standalone.css create mode 100644 libs/bootstrap-tour/css/bootstrap-tour-standalone.min.css create mode 100644 libs/bootstrap-tour/css/bootstrap-tour.css create mode 100644 libs/bootstrap-tour/css/bootstrap-tour.min.css create mode 100644 libs/bootstrap-tour/js/bootstrap-tour-standalone.js create mode 100644 libs/bootstrap-tour/js/bootstrap-tour-standalone.min.js create mode 100644 libs/bootstrap-tour/js/bootstrap-tour.js create mode 100644 libs/bootstrap-tour/js/bootstrap-tour.min.js create mode 100644 libs/bootstrap/css/bootstrap-theme.css create mode 100644 libs/bootstrap/css/bootstrap-theme.css.map create mode 100644 libs/bootstrap/css/bootstrap-theme.min.css create mode 100644 libs/bootstrap/css/bootstrap.css create mode 100644 libs/bootstrap/css/bootstrap.css.map create mode 100644 libs/bootstrap/css/bootstrap.min.css create mode 100644 libs/bootstrap/fonts/glyphicons-halflings-regular.eot create mode 100644 libs/bootstrap/fonts/glyphicons-halflings-regular.svg create mode 100644 libs/bootstrap/fonts/glyphicons-halflings-regular.ttf create mode 100644 libs/bootstrap/fonts/glyphicons-halflings-regular.woff create mode 100644 libs/bootstrap/fonts/glyphicons-halflings-regular.woff2 create mode 100644 libs/bootstrap/js/bootstrap.js create mode 100644 libs/bootstrap/js/bootstrap.min.js create mode 100644 libs/bootstrap/js/npm.js create mode 100644 libs/codemirror/AUTHORS create mode 100644 libs/codemirror/CONTRIBUTING.md create mode 100644 libs/codemirror/LICENSE create mode 100644 libs/codemirror/README.md create mode 100644 libs/codemirror/addon/comment/comment.js create mode 100644 libs/codemirror/addon/comment/continuecomment.js create mode 100644 libs/codemirror/addon/dialog/dialog.css create mode 100644 libs/codemirror/addon/dialog/dialog.js create mode 100644 libs/codemirror/addon/display/autorefresh.js create mode 100644 libs/codemirror/addon/display/fullscreen.css create mode 100644 libs/codemirror/addon/display/fullscreen.js create mode 100644 libs/codemirror/addon/display/panel.js create mode 100644 libs/codemirror/addon/display/placeholder.js create mode 100644 libs/codemirror/addon/display/rulers.js create mode 100644 libs/codemirror/addon/edit/closebrackets.js create mode 100644 libs/codemirror/addon/edit/closetag.js create mode 100644 libs/codemirror/addon/edit/continuelist.js create mode 100644 libs/codemirror/addon/edit/matchbrackets.js create mode 100644 libs/codemirror/addon/edit/matchtags.js create mode 100644 libs/codemirror/addon/edit/trailingspace.js create mode 100644 libs/codemirror/addon/fold/brace-fold.js create mode 100644 libs/codemirror/addon/fold/comment-fold.js create mode 100644 libs/codemirror/addon/fold/foldcode.js create mode 100644 libs/codemirror/addon/fold/foldgutter.css create mode 100644 libs/codemirror/addon/fold/foldgutter.js create mode 100644 libs/codemirror/addon/fold/indent-fold.js create mode 100644 libs/codemirror/addon/fold/markdown-fold.js create mode 100644 libs/codemirror/addon/fold/xml-fold.js create mode 100644 libs/codemirror/addon/hint/anyword-hint.js create mode 100644 libs/codemirror/addon/hint/css-hint.js create mode 100644 libs/codemirror/addon/hint/html-hint.js create mode 100644 libs/codemirror/addon/hint/javascript-hint.js create mode 100644 libs/codemirror/addon/hint/show-hint.css create mode 100644 libs/codemirror/addon/hint/show-hint.js create mode 100644 libs/codemirror/addon/hint/sql-hint.js create mode 100644 libs/codemirror/addon/hint/xml-hint.js create mode 100644 libs/codemirror/addon/lint/coffeescript-lint.js create mode 100644 libs/codemirror/addon/lint/css-lint.js create mode 100644 libs/codemirror/addon/lint/html-lint.js create mode 100644 libs/codemirror/addon/lint/javascript-lint.js create mode 100644 libs/codemirror/addon/lint/json-lint.js create mode 100644 libs/codemirror/addon/lint/lint.css create mode 100644 libs/codemirror/addon/lint/lint.js create mode 100644 libs/codemirror/addon/lint/yaml-lint.js create mode 100644 libs/codemirror/addon/merge/merge.css create mode 100644 libs/codemirror/addon/merge/merge.js create mode 100644 libs/codemirror/addon/mode/loadmode.js create mode 100644 libs/codemirror/addon/mode/multiplex.js create mode 100644 libs/codemirror/addon/mode/multiplex_test.js create mode 100644 libs/codemirror/addon/mode/overlay.js create mode 100644 libs/codemirror/addon/mode/simple.js create mode 100644 libs/codemirror/addon/runmode/colorize.js create mode 100644 libs/codemirror/addon/runmode/runmode-standalone.js create mode 100644 libs/codemirror/addon/runmode/runmode.js create mode 100644 libs/codemirror/addon/runmode/runmode.node.js create mode 100644 libs/codemirror/addon/scroll/annotatescrollbar.js create mode 100644 libs/codemirror/addon/scroll/scrollpastend.js create mode 100644 libs/codemirror/addon/scroll/simplescrollbars.css create mode 100644 libs/codemirror/addon/scroll/simplescrollbars.js create mode 100644 libs/codemirror/addon/search/match-highlighter.js create mode 100644 libs/codemirror/addon/search/matchesonscrollbar.css create mode 100644 libs/codemirror/addon/search/matchesonscrollbar.js create mode 100644 libs/codemirror/addon/search/search.js create mode 100644 libs/codemirror/addon/search/searchcursor.js create mode 100644 libs/codemirror/addon/selection/active-line.js create mode 100644 libs/codemirror/addon/selection/mark-selection.js create mode 100644 libs/codemirror/addon/selection/selection-pointer.js create mode 100644 libs/codemirror/addon/tern/tern.css create mode 100644 libs/codemirror/addon/tern/tern.js create mode 100644 libs/codemirror/addon/tern/worker.js create mode 100644 libs/codemirror/addon/wrap/hardwrap.js create mode 100644 libs/codemirror/bower.json create mode 100644 libs/codemirror/keymap/emacs.js create mode 100644 libs/codemirror/keymap/sublime.js create mode 100644 libs/codemirror/keymap/vim.js create mode 100644 libs/codemirror/lib/codemirror.css create mode 100644 libs/codemirror/lib/codemirror.js create mode 100644 libs/codemirror/mode/apl/apl.js create mode 100644 libs/codemirror/mode/asciiarmor/asciiarmor.js create mode 100644 libs/codemirror/mode/asn.1/asn.1.js create mode 100644 libs/codemirror/mode/asterisk/asterisk.js create mode 100644 libs/codemirror/mode/brainfuck/brainfuck.js create mode 100644 libs/codemirror/mode/clike/clike.js create mode 100644 libs/codemirror/mode/clojure/clojure.js create mode 100644 libs/codemirror/mode/cmake/cmake.js create mode 100644 libs/codemirror/mode/cobol/cobol.js create mode 100644 libs/codemirror/mode/coffeescript/coffeescript.js create mode 100644 libs/codemirror/mode/commonlisp/commonlisp.js create mode 100644 libs/codemirror/mode/css/css.js create mode 100644 libs/codemirror/mode/cypher/cypher.js create mode 100644 libs/codemirror/mode/d/d.js create mode 100644 libs/codemirror/mode/dart/dart.js create mode 100644 libs/codemirror/mode/diff/diff.js create mode 100644 libs/codemirror/mode/django/django.js create mode 100644 libs/codemirror/mode/dockerfile/dockerfile.js create mode 100644 libs/codemirror/mode/dtd/dtd.js create mode 100644 libs/codemirror/mode/dylan/dylan.js create mode 100644 libs/codemirror/mode/ebnf/ebnf.js create mode 100644 libs/codemirror/mode/ecl/ecl.js create mode 100644 libs/codemirror/mode/eiffel/eiffel.js create mode 100644 libs/codemirror/mode/elm/elm.js create mode 100644 libs/codemirror/mode/erlang/erlang.js create mode 100644 libs/codemirror/mode/factor/factor.js create mode 100644 libs/codemirror/mode/forth/forth.js create mode 100644 libs/codemirror/mode/fortran/fortran.js create mode 100644 libs/codemirror/mode/gas/gas.js create mode 100644 libs/codemirror/mode/gfm/gfm.js create mode 100644 libs/codemirror/mode/gherkin/gherkin.js create mode 100644 libs/codemirror/mode/go/go.js create mode 100644 libs/codemirror/mode/groovy/groovy.js create mode 100644 libs/codemirror/mode/haml/haml.js create mode 100644 libs/codemirror/mode/handlebars/handlebars.js create mode 100644 libs/codemirror/mode/haskell/haskell.js create mode 100644 libs/codemirror/mode/haxe/haxe.js create mode 100644 libs/codemirror/mode/htmlembedded/htmlembedded.js create mode 100644 libs/codemirror/mode/htmlmixed/htmlmixed.js create mode 100644 libs/codemirror/mode/http/http.js create mode 100644 libs/codemirror/mode/idl/idl.js create mode 100644 libs/codemirror/mode/jade/jade.js create mode 100644 libs/codemirror/mode/javascript/javascript.js create mode 100644 libs/codemirror/mode/jinja2/jinja2.js create mode 100644 libs/codemirror/mode/julia/julia.js create mode 100644 libs/codemirror/mode/kotlin/kotlin.js create mode 100644 libs/codemirror/mode/livescript/livescript.js create mode 100644 libs/codemirror/mode/lua/lua.js create mode 100644 libs/codemirror/mode/markdown/markdown.js create mode 100644 libs/codemirror/mode/mathematica/mathematica.js create mode 100644 libs/codemirror/mode/meta.js create mode 100644 libs/codemirror/mode/mirc/mirc.js create mode 100644 libs/codemirror/mode/mllike/mllike.js create mode 100644 libs/codemirror/mode/modelica/modelica.js create mode 100644 libs/codemirror/mode/mscgen/mscgen.js create mode 100644 libs/codemirror/mode/mumps/mumps.js create mode 100644 libs/codemirror/mode/nginx/nginx.js create mode 100644 libs/codemirror/mode/ntriples/ntriples.js create mode 100644 libs/codemirror/mode/octave/octave.js create mode 100644 libs/codemirror/mode/oz/oz.js create mode 100644 libs/codemirror/mode/pascal/pascal.js create mode 100644 libs/codemirror/mode/pegjs/pegjs.js create mode 100644 libs/codemirror/mode/perl/perl.js create mode 100644 libs/codemirror/mode/php/php.js create mode 100644 libs/codemirror/mode/pig/pig.js create mode 100644 libs/codemirror/mode/properties/properties.js create mode 100644 libs/codemirror/mode/puppet/puppet.js create mode 100644 libs/codemirror/mode/python/python.js create mode 100644 libs/codemirror/mode/q/q.js create mode 100644 libs/codemirror/mode/r/r.js create mode 100644 libs/codemirror/mode/rpm/rpm.js create mode 100644 libs/codemirror/mode/rst/rst.js create mode 100644 libs/codemirror/mode/ruby/ruby.js create mode 100644 libs/codemirror/mode/rust/rust.js create mode 100644 libs/codemirror/mode/sass/sass.js create mode 100644 libs/codemirror/mode/scheme/scheme.js create mode 100644 libs/codemirror/mode/shell/shell.js create mode 100644 libs/codemirror/mode/sieve/sieve.js create mode 100644 libs/codemirror/mode/slim/slim.js create mode 100644 libs/codemirror/mode/smalltalk/smalltalk.js create mode 100644 libs/codemirror/mode/smarty/smarty.js create mode 100644 libs/codemirror/mode/solr/solr.js create mode 100644 libs/codemirror/mode/soy/soy.js create mode 100644 libs/codemirror/mode/sparql/sparql.js create mode 100644 libs/codemirror/mode/spreadsheet/spreadsheet.js create mode 100644 libs/codemirror/mode/sql/sql.js create mode 100644 libs/codemirror/mode/stex/stex.js create mode 100644 libs/codemirror/mode/stylus/stylus.js create mode 100644 libs/codemirror/mode/swift/swift.js create mode 100644 libs/codemirror/mode/tcl/tcl.js create mode 100644 libs/codemirror/mode/textile/textile.js create mode 100644 libs/codemirror/mode/tiddlywiki/tiddlywiki.css create mode 100644 libs/codemirror/mode/tiddlywiki/tiddlywiki.js create mode 100644 libs/codemirror/mode/tiki/tiki.css create mode 100644 libs/codemirror/mode/tiki/tiki.js create mode 100644 libs/codemirror/mode/toml/toml.js create mode 100644 libs/codemirror/mode/tornado/tornado.js create mode 100644 libs/codemirror/mode/troff/troff.js create mode 100644 libs/codemirror/mode/ttcn-cfg/ttcn-cfg.js create mode 100644 libs/codemirror/mode/ttcn/ttcn.js create mode 100644 libs/codemirror/mode/turtle/turtle.js create mode 100644 libs/codemirror/mode/twig/twig.js create mode 100644 libs/codemirror/mode/vb/vb.js create mode 100644 libs/codemirror/mode/vbscript/vbscript.js create mode 100644 libs/codemirror/mode/velocity/velocity.js create mode 100644 libs/codemirror/mode/verilog/verilog.js create mode 100644 libs/codemirror/mode/vhdl/vhdl.js create mode 100644 libs/codemirror/mode/vue/vue.js create mode 100644 libs/codemirror/mode/xml/xml.js create mode 100644 libs/codemirror/mode/xquery/xquery.js create mode 100644 libs/codemirror/mode/yaml/yaml.js create mode 100644 libs/codemirror/mode/z80/z80.js create mode 100644 libs/codemirror/theme/3024-day.css create mode 100644 libs/codemirror/theme/3024-night.css create mode 100644 libs/codemirror/theme/abcdef.css create mode 100644 libs/codemirror/theme/ambiance-mobile.css create mode 100644 libs/codemirror/theme/ambiance.css create mode 100644 libs/codemirror/theme/base16-dark.css create mode 100644 libs/codemirror/theme/base16-light.css create mode 100644 libs/codemirror/theme/blackboard.css create mode 100644 libs/codemirror/theme/cobalt.css create mode 100644 libs/codemirror/theme/colorforth.css create mode 100644 libs/codemirror/theme/dracula.css create mode 100644 libs/codemirror/theme/eclipse.css create mode 100644 libs/codemirror/theme/elegant.css create mode 100644 libs/codemirror/theme/erlang-dark.css create mode 100644 libs/codemirror/theme/icecoder.css create mode 100644 libs/codemirror/theme/lesser-dark.css create mode 100644 libs/codemirror/theme/liquibyte.css create mode 100644 libs/codemirror/theme/material.css create mode 100644 libs/codemirror/theme/mbo.css create mode 100644 libs/codemirror/theme/mdn-like.css create mode 100644 libs/codemirror/theme/midnight.css create mode 100644 libs/codemirror/theme/monokai.css create mode 100644 libs/codemirror/theme/neat.css create mode 100644 libs/codemirror/theme/neo.css create mode 100644 libs/codemirror/theme/night.css create mode 100644 libs/codemirror/theme/paraiso-dark.css create mode 100644 libs/codemirror/theme/paraiso-light.css create mode 100644 libs/codemirror/theme/pastel-on-dark.css create mode 100644 libs/codemirror/theme/rubyblue.css create mode 100644 libs/codemirror/theme/seti.css create mode 100644 libs/codemirror/theme/solarized.css create mode 100644 libs/codemirror/theme/the-matrix.css create mode 100644 libs/codemirror/theme/tomorrow-night-bright.css create mode 100644 libs/codemirror/theme/tomorrow-night-eighties.css create mode 100644 libs/codemirror/theme/ttcn.css create mode 100644 libs/codemirror/theme/twilight.css create mode 100644 libs/codemirror/theme/vibrant-ink.css create mode 100644 libs/codemirror/theme/xq-dark.css create mode 100644 libs/codemirror/theme/xq-light.css create mode 100644 libs/codemirror/theme/yeti.css create mode 100644 libs/codemirror/theme/zenburn.css create mode 100644 libs/font-awesome/HELP-US-OUT.txt create mode 100644 libs/font-awesome/bower.json create mode 100644 libs/font-awesome/css/font-awesome.css create mode 100644 libs/font-awesome/css/font-awesome.css.map create mode 100644 libs/font-awesome/css/font-awesome.min.css create mode 100644 libs/font-awesome/fonts/FontAwesome.otf create mode 100644 libs/font-awesome/fonts/fontawesome-webfont.eot create mode 100644 libs/font-awesome/fonts/fontawesome-webfont.svg create mode 100644 libs/font-awesome/fonts/fontawesome-webfont.ttf create mode 100644 libs/font-awesome/fonts/fontawesome-webfont.woff create mode 100644 libs/font-awesome/fonts/fontawesome-webfont.woff2 create mode 100644 libs/font-awesome/less/animated.less create mode 100644 libs/font-awesome/less/bordered-pulled.less create mode 100644 libs/font-awesome/less/core.less create mode 100644 libs/font-awesome/less/fixed-width.less create mode 100644 libs/font-awesome/less/font-awesome.less create mode 100644 libs/font-awesome/less/icons.less create mode 100644 libs/font-awesome/less/larger.less create mode 100644 libs/font-awesome/less/list.less create mode 100644 libs/font-awesome/less/mixins.less create mode 100644 libs/font-awesome/less/path.less create mode 100644 libs/font-awesome/less/rotated-flipped.less create mode 100644 libs/font-awesome/less/stacked.less create mode 100644 libs/font-awesome/less/variables.less create mode 100644 libs/font-awesome/scss/_animated.scss create mode 100644 libs/font-awesome/scss/_bordered-pulled.scss create mode 100644 libs/font-awesome/scss/_core.scss create mode 100644 libs/font-awesome/scss/_fixed-width.scss create mode 100644 libs/font-awesome/scss/_icons.scss create mode 100644 libs/font-awesome/scss/_larger.scss create mode 100644 libs/font-awesome/scss/_list.scss create mode 100644 libs/font-awesome/scss/_mixins.scss create mode 100644 libs/font-awesome/scss/_path.scss create mode 100644 libs/font-awesome/scss/_rotated-flipped.scss create mode 100644 libs/font-awesome/scss/_stacked.scss create mode 100644 libs/font-awesome/scss/_variables.scss create mode 100644 libs/font-awesome/scss/font-awesome.scss create mode 100644 libs/handsontable/README.md create mode 100644 libs/handsontable/handsontable.bootstrap.css create mode 100644 libs/handsontable/handsontable.css create mode 100644 libs/handsontable/handsontable.full.css create mode 100644 libs/handsontable/handsontable.full.js create mode 100644 libs/handsontable/handsontable.full.min.css create mode 100644 libs/handsontable/handsontable.full.min.js create mode 100644 libs/handsontable/handsontable.js create mode 100644 libs/handsontable/handsontable.min.css create mode 100644 libs/handsontable/handsontable.min.js create mode 100644 libs/handsontable/moment/LICENSE create mode 100644 libs/handsontable/moment/locale/af.js create mode 100644 libs/handsontable/moment/locale/ar-ma.js create mode 100644 libs/handsontable/moment/locale/ar-sa.js create mode 100644 libs/handsontable/moment/locale/ar-tn.js create mode 100644 libs/handsontable/moment/locale/ar.js create mode 100644 libs/handsontable/moment/locale/az.js create mode 100644 libs/handsontable/moment/locale/be.js create mode 100644 libs/handsontable/moment/locale/bg.js create mode 100644 libs/handsontable/moment/locale/bn.js create mode 100644 libs/handsontable/moment/locale/bo.js create mode 100644 libs/handsontable/moment/locale/br.js create mode 100644 libs/handsontable/moment/locale/bs.js create mode 100644 libs/handsontable/moment/locale/ca.js create mode 100644 libs/handsontable/moment/locale/cs.js create mode 100644 libs/handsontable/moment/locale/cv.js create mode 100644 libs/handsontable/moment/locale/cy.js create mode 100644 libs/handsontable/moment/locale/da.js create mode 100644 libs/handsontable/moment/locale/de-at.js create mode 100644 libs/handsontable/moment/locale/de.js create mode 100644 libs/handsontable/moment/locale/el.js create mode 100644 libs/handsontable/moment/locale/en-au.js create mode 100644 libs/handsontable/moment/locale/en-ca.js create mode 100644 libs/handsontable/moment/locale/en-gb.js create mode 100644 libs/handsontable/moment/locale/eo.js create mode 100644 libs/handsontable/moment/locale/es.js create mode 100644 libs/handsontable/moment/locale/et.js create mode 100644 libs/handsontable/moment/locale/eu.js create mode 100644 libs/handsontable/moment/locale/fa.js create mode 100644 libs/handsontable/moment/locale/fi.js create mode 100644 libs/handsontable/moment/locale/fo.js create mode 100644 libs/handsontable/moment/locale/fr-ca.js create mode 100644 libs/handsontable/moment/locale/fr.js create mode 100644 libs/handsontable/moment/locale/fy.js create mode 100644 libs/handsontable/moment/locale/gl.js create mode 100644 libs/handsontable/moment/locale/he.js create mode 100644 libs/handsontable/moment/locale/hi.js create mode 100644 libs/handsontable/moment/locale/hr.js create mode 100644 libs/handsontable/moment/locale/hu.js create mode 100644 libs/handsontable/moment/locale/hy-am.js create mode 100644 libs/handsontable/moment/locale/id.js create mode 100644 libs/handsontable/moment/locale/is.js create mode 100644 libs/handsontable/moment/locale/it.js create mode 100644 libs/handsontable/moment/locale/ja.js create mode 100644 libs/handsontable/moment/locale/jv.js create mode 100644 libs/handsontable/moment/locale/ka.js create mode 100644 libs/handsontable/moment/locale/km.js create mode 100644 libs/handsontable/moment/locale/ko.js create mode 100644 libs/handsontable/moment/locale/lb.js create mode 100644 libs/handsontable/moment/locale/lt.js create mode 100644 libs/handsontable/moment/locale/lv.js create mode 100644 libs/handsontable/moment/locale/me.js create mode 100644 libs/handsontable/moment/locale/mk.js create mode 100644 libs/handsontable/moment/locale/ml.js create mode 100644 libs/handsontable/moment/locale/mr.js create mode 100644 libs/handsontable/moment/locale/ms-my.js create mode 100644 libs/handsontable/moment/locale/ms.js create mode 100644 libs/handsontable/moment/locale/my.js create mode 100644 libs/handsontable/moment/locale/nb.js create mode 100644 libs/handsontable/moment/locale/ne.js create mode 100644 libs/handsontable/moment/locale/nl.js create mode 100644 libs/handsontable/moment/locale/nn.js create mode 100644 libs/handsontable/moment/locale/pl.js create mode 100644 libs/handsontable/moment/locale/pt-br.js create mode 100644 libs/handsontable/moment/locale/pt.js create mode 100644 libs/handsontable/moment/locale/ro.js create mode 100644 libs/handsontable/moment/locale/ru.js create mode 100644 libs/handsontable/moment/locale/si.js create mode 100644 libs/handsontable/moment/locale/sk.js create mode 100644 libs/handsontable/moment/locale/sl.js create mode 100644 libs/handsontable/moment/locale/sq.js create mode 100644 libs/handsontable/moment/locale/sr-cyrl.js create mode 100644 libs/handsontable/moment/locale/sr.js create mode 100644 libs/handsontable/moment/locale/sv.js create mode 100644 libs/handsontable/moment/locale/ta.js create mode 100644 libs/handsontable/moment/locale/th.js create mode 100644 libs/handsontable/moment/locale/tl-ph.js create mode 100644 libs/handsontable/moment/locale/tr.js create mode 100644 libs/handsontable/moment/locale/tzl.js create mode 100644 libs/handsontable/moment/locale/tzm-latn.js create mode 100644 libs/handsontable/moment/locale/tzm.js create mode 100644 libs/handsontable/moment/locale/uk.js create mode 100644 libs/handsontable/moment/locale/uz.js create mode 100644 libs/handsontable/moment/locale/vi.js create mode 100644 libs/handsontable/moment/locale/zh-cn.js create mode 100644 libs/handsontable/moment/locale/zh-tw.js create mode 100644 libs/handsontable/moment/moment.js create mode 100644 libs/handsontable/pikaday/LICENSE create mode 100644 libs/handsontable/pikaday/pikaday.css create mode 100644 libs/handsontable/pikaday/pikaday.js create mode 100644 libs/handsontable/zeroclipboard/LICENSE create mode 100644 libs/handsontable/zeroclipboard/ZeroClipboard.js create mode 100644 libs/handsontable/zeroclipboard/ZeroClipboard.swf create mode 100644 libs/i18next/i18next.js create mode 100644 libs/i18next/i18next.min.js create mode 100644 libs/jquery-bootpag/jquery.bootpag.js create mode 100644 libs/jquery-bootpag/jquery.bootpag.min.js create mode 100644 libs/jquery/jquery.js create mode 100644 libs/jquery/jquery.min.js create mode 100644 libs/jquery/jquery.min.map create mode 100644 libs/marked/marked.js create mode 100644 libs/qunit/qunit.css create mode 100644 libs/qunit/qunit.js create mode 100644 libs/railroad-diagrams/README.md create mode 100644 libs/railroad-diagrams/css-example.py-js create mode 100644 libs/railroad-diagrams/example.html create mode 100644 libs/railroad-diagrams/generator.html create mode 100644 libs/railroad-diagrams/package.json create mode 100644 libs/railroad-diagrams/railroad-diagrams.css create mode 100644 libs/railroad-diagrams/railroad-diagrams.js create mode 100644 libs/railroad-diagrams/railroad_diagrams.py create mode 100644 locales/de/translation.json create mode 100644 locales/en/translation.json create mode 100644 locales/es/translation.json delete mode 100644 manifest.json create mode 100644 resources/data/Northwind.txt create mode 100644 resources/data/lectureRST.sql create mode 100644 resources/data/local_groups.txt create mode 100644 resources/data/snoopydb.sql rename assets/FreeSansMinimal.be5838763530a3aede5cd6c4b067dc4d.otf => resources/font/FreeSansMinimal.otf (100%) rename {assets => resources}/logos/dbis_x120.png (100%) rename {assets => resources}/logos/ifi_x120.png (100%) rename {assets => resources}/logos/uibk_x120.png (100%) delete mode 100644 test.html delete mode 100644 test.html.gz delete mode 100644 tests.63bcec32e84a8d02d71c.css delete mode 100644 tests.63bcec32e84a8d02d71c.css.gz diff --git a/404.html b/404.html deleted file mode 100644 index 706934c63..000000000 --- a/404.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - Single Page Apps for GitHub Pages - - - - - diff --git a/404.html.gz b/404.html.gz deleted file mode 100644 index 8396a978f92b28129340dd253906bf73a51c969f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 873 zcmV-v1D5u3y1kpfdvD7 zzhH=47mfF52pX?Jni2|Y9?(;AI!RTu-Z$uX15_Z-Jc2T0;jRe;GDY-`Y0O~&1D@OV zSoC;nZ`*)=0OI`4Zm^97v`i{kqj%2$BVHv#1sgB7HP<^GFfiZdaacU7wr%r`wK?fh zSc8IEdm&fr<6>3*eBa^}*2r^wKILbL7jCsrKE7XZ`d8lmYY#DGezJrME}vO_cls{x zR1O=(;;K7F)(Db7qvZAb`CC};2$R|rb#1rSe;Kf1<5z~z8zlJf=(P2$jWNeEd_N7YbTlp2!0ENev>Xe(7z(I=f_e^4ccX`~$=W$iRBULNqS z4I^vTQ99|$3NFdcI@|YD^nDTi5a~b4>YA(fEz>*g)boIcGmrsJ_q0Apf9PDn{Ost7 zQ?sR2rnGIYZNa**=B#(~F%MQ_j^0~89$iYq?6Q2B=I%;cz=*e>?4!jSo%d53_a*?H zJ8#JrR>KKoLS+2Vd1V82?efc*BPjc&m!Zlc#Ns9 zWE%E+1?FYv-JRCIPR`zlG`yuqw{-kwiv34(xwhplnbL|~@x%Hrv+&P5a0dVYwyUi& diff --git a/assets/FreeSansMinimal.be5838763530a3aede5cd6c4b067dc4d.otf.gz b/assets/FreeSansMinimal.be5838763530a3aede5cd6c4b067dc4d.otf.gz deleted file mode 100644 index c87823162725f9e32b00766f5c07185b060ef919..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13904 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 diff --git a/assets/icon/icon.svg b/assets/icon/icon.svg deleted file mode 100644 index c9dcd40da..000000000 --- a/assets/icon/icon.svg +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - π - - diff --git a/assets/icon/icon_192x192.png b/assets/icon/icon_192x192.png deleted file mode 100644 index 947be94c54e248d11083b6da03707f6f1f28cd6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 753 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGoEX7WqAsj$Z!;#Vf4nJ zFuem|#z|+(fgA?O64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq=2gPJY5_^ zD(1Ys>)-8LD0BSdcb=b<4OOM5@JjPHq$K7{(Rn7hVPlw1>Ql>vR`-PE5gJO~VnIUE zWg?zlkI(an?bn=Loz{2Xve@oe<^ESW=jPtGz5lNI*}UraS8NqL4TE`qmotBM=KCbS zo9|D~u8o=pWIh!59+RB!d!T=r^m29?7hws7GYpAr9L5ea7!UCXq%{~Yw@5;SZr|AO z-?m`$)7m#oePMF{`93Ty$_=+}csw=xJ)?Z|znsVF3u`SI|E#+6ZSB_rZHpa;Vpiw2 z|B^bid;!7?EXLAGsMpfrv8!mC$ukCS*=ygv?T}n>?%KXK1Bbb}wY-T9R@J|xlFl&h zD~qUJuwL<)OakYRke%NO;+=ae84k=oRqC!GzWa5~8^*Zsb+g&deK%}id^LCRAJvki zhN{_(yAMbvIKQ21Qd|2sV$Yi$b!#41|>yMhYSAXT7cbNac`8pV_}*^?}TU=UME5)|;o?f3$bXX@$JVd;2%+*}M2p j{X<>VX)1qT*D=4gn%!DD(YpwkJQ+M){an^LB{Ts5L!dM$ diff --git a/assets/icon/icon_48x48.png b/assets/icon/icon_48x48.png deleted file mode 100644 index 4d381bcb5b0c9d1876b813e2733e2063aee972bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 478 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTCmSQK*5Dp-y;YjHK@;M7UB8wRq z7|TJJ(YkYKK2T7y#5JNMI6tkVJh3R1p}f3YFEcN@I61K(RWH9NefB#WDWK|TPZ!6K zjK;S!_v^7Z${e>pE%@X@hkdI?rU_U60qY93_YWl330noeuxSj^4!q!TLeS zj^;N%wR1fimA~Jed|&-$N?N`3{h8;}%%XX|SkAmG$2KjL`zNb<-f__ghF7++UWROq zY0HfjVouCYV9N4w@I9KjpE>-#jWKVC?c@0kZioH^A81+rjpvSfO8qAOEjHo0hSlm5 z_DTz1_#SmEYs?^0=Ta*Z{@kc{LG1QYQRSJITPnw{EB;`Rlq63y#0WL0dvll-$jjV z1zc-b=1H<%+jmF$mC2Q8jt2^<1(Gb=8fPzRPTqFGvf#zopr0B~iq8vp4nJ zFuem|#z|+(fgA?O64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq=2gPJY5_^ zD(1Ys>)-8LD0BSdcb=b<4OOM5@JjPHq$K7{(Rn7hVPlw1>Ql>vR`-PE5gJO~VnIUE zWg?zlkI(an?bn=Loz{2Xve@oe<^ESW=jPtGz5lNI*}UraS8NqL4TE`qmotBM=KCbS zo9|D~u8o=pWIh!59+RB!d!T=r^m29?7hws7GYpAr9L5ea7!UCXq%{~Yw@5;SZr|AO z-?m`$)7m#oePMF{`93Ty$_=+}csw=xJ)?Z|znsVF3u`SI|E#+6ZSB_rZHpa;Vpiw2 z|B^bid;!7?EXLAGsMpfrv8!mC$ukCS*=ygv?T}n>?%KXK1Bbb}wY-T9R@J|xlFl&h zD~qUJuwL<)OakYRke%NO;+=ae84k=oRqC!GzWa5~8^*Zsb+g&deK%}id^LCRAJvki zhN{_(yAMbvIKQ21Qd|2sV$Yi$b!#41|>yMhYSAXT7cbNac`8pV_}*^?}TU=UME5)|;o?f3$bXX@$JVd;2%+*}M2p j{X<>VX)1qT*D=4gn%!DD(YpwkJQ+M){an^LB{Ts5L!dM$ diff --git a/calc.63bcec32e84a8d02d71c.css b/calc.63bcec32e84a8d02d71c.css deleted file mode 100644 index 3f5524c60..000000000 --- a/calc.63bcec32e84a8d02d71c.css +++ /dev/null @@ -1,81 +0,0 @@ -/*! - * Bootstrap v4.4.1 (https://getbootstrap.com/) - * Copyright 2011-2019 The Bootstrap Authors - * Copyright 2011-2019 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */:root{--blue: #007bff;--indigo: #6610f2;--purple: #6f42c1;--pink: #e83e8c;--red: #dc3545;--orange: #fd7e14;--yellow: #ffc107;--green: #28a745;--teal: #20c997;--cyan: #17a2b8;--white: #fff;--gray: #6c757d;--gray-dark: #343a40;--primary: #007bff;--secondary: #6c757d;--success: #28a745;--info: #17a2b8;--warning: #ffc107;--danger: #dc3545;--light: #f8f9fa;--dark: #343a40;--breakpoint-xs: 0;--breakpoint-sm: 576px;--breakpoint-md: 768px;--breakpoint-lg: 992px;--breakpoint-xl: 1200px;--font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}*,*::before,*::after{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0 !important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:0.5rem}p{margin-top:0;margin-bottom:1rem}abbr[title],abbr[data-original-title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]){color:inherit;text-decoration:none}a:not([href]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:0.75rem;padding-bottom:0.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:0.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}select{word-wrap:normal}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button:not(:disabled),[type="button"]:not(:disabled),[type="reset"]:not(:disabled),[type="submit"]:not(:disabled){cursor:pointer}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{padding:0;border-style:none}input[type="radio"],input[type="checkbox"]{box-sizing:border-box;padding:0}input[type="date"],input[type="time"],input[type="datetime-local"],input[type="month"]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{outline-offset:-2px;-webkit-appearance:none}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none !important}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{margin-bottom:0.5rem;font-weight:500;line-height:1.2}h1,.h1{font-size:2.5rem}h2,.h2{font-size:2rem}h3,.h3{font-size:1.75rem}h4,.h4{font-size:1.5rem}h5,.h5{font-size:1.25rem}h6,.h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,0.1)}small,.small{font-size:80%;font-weight:400}mark,.mark{padding:0.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:0.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:"\2014\00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:0.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:0.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:0.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code{font-size:87.5%;color:#e83e8c;word-wrap:break-word}a>code{color:inherit}kbd{padding:0.2rem 0.4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:0.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width: 576px){.container{max-width:540px}}@media (min-width: 768px){.container{max-width:720px}}@media (min-width: 992px){.container{max-width:960px}}@media (min-width: 1200px){.container{max-width:1140px}}.container-fluid,.container-sm,.container-md,.container-lg,.container-xl{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width: 576px){.container,.container-sm{max-width:540px}}@media (min-width: 768px){.container,.container-sm,.container-md{max-width:720px}}@media (min-width: 992px){.container,.container-sm,.container-md,.container-lg{max-width:960px}}@media (min-width: 1200px){.container,.container-sm,.container-md,.container-lg,.container-xl{max-width:1140px}}.row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*="col-"]{padding-right:0;padding-left:0}.col-1,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-10,.col-11,.col-12,.col,.col-auto,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm,.col-sm-auto,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-md,.col-md-auto,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg,.col-lg-auto,.col-xl-1,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl,.col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-ms-flex-order:-1;order:-1}.order-last{-ms-flex-order:13;order:13}.order-0{-ms-flex-order:0;order:0}.order-1{-ms-flex-order:1;order:1}.order-2{-ms-flex-order:2;order:2}.order-3{-ms-flex-order:3;order:3}.order-4{-ms-flex-order:4;order:4}.order-5{-ms-flex-order:5;order:5}.order-6{-ms-flex-order:6;order:6}.order-7{-ms-flex-order:7;order:7}.order-8{-ms-flex-order:8;order:8}.order-9{-ms-flex-order:9;order:9}.order-10{-ms-flex-order:10;order:10}.order-11{-ms-flex-order:11;order:11}.order-12{-ms-flex-order:12;order:12}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width: 576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-sm-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-sm-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-sm-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-sm-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-sm-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-sm-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-ms-flex-order:-1;order:-1}.order-sm-last{-ms-flex-order:13;order:13}.order-sm-0{-ms-flex-order:0;order:0}.order-sm-1{-ms-flex-order:1;order:1}.order-sm-2{-ms-flex-order:2;order:2}.order-sm-3{-ms-flex-order:3;order:3}.order-sm-4{-ms-flex-order:4;order:4}.order-sm-5{-ms-flex-order:5;order:5}.order-sm-6{-ms-flex-order:6;order:6}.order-sm-7{-ms-flex-order:7;order:7}.order-sm-8{-ms-flex-order:8;order:8}.order-sm-9{-ms-flex-order:9;order:9}.order-sm-10{-ms-flex-order:10;order:10}.order-sm-11{-ms-flex-order:11;order:11}.order-sm-12{-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width: 768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-md-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-md-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-md-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-md-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-md-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-md-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-md-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-ms-flex-order:-1;order:-1}.order-md-last{-ms-flex-order:13;order:13}.order-md-0{-ms-flex-order:0;order:0}.order-md-1{-ms-flex-order:1;order:1}.order-md-2{-ms-flex-order:2;order:2}.order-md-3{-ms-flex-order:3;order:3}.order-md-4{-ms-flex-order:4;order:4}.order-md-5{-ms-flex-order:5;order:5}.order-md-6{-ms-flex-order:6;order:6}.order-md-7{-ms-flex-order:7;order:7}.order-md-8{-ms-flex-order:8;order:8}.order-md-9{-ms-flex-order:9;order:9}.order-md-10{-ms-flex-order:10;order:10}.order-md-11{-ms-flex-order:11;order:11}.order-md-12{-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width: 992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-lg-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-lg-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-lg-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-lg-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-lg-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-lg-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-ms-flex-order:-1;order:-1}.order-lg-last{-ms-flex-order:13;order:13}.order-lg-0{-ms-flex-order:0;order:0}.order-lg-1{-ms-flex-order:1;order:1}.order-lg-2{-ms-flex-order:2;order:2}.order-lg-3{-ms-flex-order:3;order:3}.order-lg-4{-ms-flex-order:4;order:4}.order-lg-5{-ms-flex-order:5;order:5}.order-lg-6{-ms-flex-order:6;order:6}.order-lg-7{-ms-flex-order:7;order:7}.order-lg-8{-ms-flex-order:8;order:8}.order-lg-9{-ms-flex-order:9;order:9}.order-lg-10{-ms-flex-order:10;order:10}.order-lg-11{-ms-flex-order:11;order:11}.order-lg-12{-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width: 1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-xl-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-xl-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-xl-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-xl-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-xl-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-xl-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-ms-flex-order:-1;order:-1}.order-xl-last{-ms-flex-order:13;order:13}.order-xl-0{-ms-flex-order:0;order:0}.order-xl-1{-ms-flex-order:1;order:1}.order-xl-2{-ms-flex-order:2;order:2}.order-xl-3{-ms-flex-order:3;order:3}.order-xl-4{-ms-flex-order:4;order:4}.order-xl-5{-ms-flex-order:5;order:5}.order-xl-6{-ms-flex-order:6;order:6}.order-xl-7{-ms-flex-order:7;order:7}.order-xl-8{-ms-flex-order:8;order:8}.order-xl-9{-ms-flex-order:9;order:9}.order-xl-10{-ms-flex-order:10;order:10}.order-xl-11{-ms-flex-order:11;order:11}.order-xl-12{-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.table{width:100%;margin-bottom:1rem;color:#212529}.table th,.table td{padding:0.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table-sm th,.table-sm td{padding:0.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered th,.table-bordered td{border:1px solid #dee2e6}.table-bordered thead th,.table-bordered thead td{border-bottom-width:2px}.table-borderless th,.table-borderless td,.table-borderless thead th,.table-borderless tbody+tbody{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,0.05)}.table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,0.075)}.table-primary,.table-primary>th,.table-primary>td{background-color:#b8daff}.table-primary th,.table-primary td,.table-primary thead th,.table-primary tbody+tbody{border-color:#7abaff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>th,.table-secondary>td{background-color:#d6d8db}.table-secondary th,.table-secondary td,.table-secondary thead th,.table-secondary tbody+tbody{border-color:#b3b7bb}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>th,.table-success>td{background-color:#c3e6cb}.table-success th,.table-success td,.table-success thead th,.table-success tbody+tbody{border-color:#8fd19e}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>th,.table-info>td{background-color:#bee5eb}.table-info th,.table-info td,.table-info thead th,.table-info tbody+tbody{border-color:#86cfda}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>th,.table-warning>td{background-color:#ffeeba}.table-warning th,.table-warning td,.table-warning thead th,.table-warning tbody+tbody{border-color:#ffdf7e}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>th,.table-danger>td{background-color:#f5c6cb}.table-danger th,.table-danger td,.table-danger thead th,.table-danger tbody+tbody{border-color:#ed969e}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>th,.table-light>td{background-color:#fdfdfe}.table-light th,.table-light td,.table-light thead th,.table-light tbody+tbody{border-color:#fbfcfc}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>th,.table-dark>td{background-color:#c6c8ca}.table-dark th,.table-dark td,.table-dark thead th,.table-dark tbody+tbody{border-color:#95999c}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>th,.table-active>td{background-color:rgba(0,0,0,0.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,0.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,0.075)}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#343a40}.table-dark th,.table-dark td,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,0.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:rgba(255,255,255,0.075)}@media (max-width: 575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width: 767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width: 991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width: 1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.5em + 0.75rem + 2px);padding:0.375rem 0.75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:0.25rem;transition:border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 0.2rem rgba(0,123,255,0.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control:-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(0.375rem + 1px);padding-bottom:calc(0.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(0.5rem + 1px);padding-bottom:calc(0.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(0.25rem + 1px);padding-bottom:calc(0.25rem + 1px);font-size:0.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding:0.375rem 0;margin-bottom:0;font-size:1rem;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + 0.5rem + 2px);padding:0.25rem 0.5rem;font-size:0.875rem;line-height:1.5;border-radius:0.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:0.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:0.3rem}select.form-control[size],select.form-control[multiple]{height:auto}textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:0.25rem}.form-row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*="col-"]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:0.3rem;margin-left:-1.25rem}.form-check-input[disabled] ~ .form-check-label,.form-check-input:disabled ~ .form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:0.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:0.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:0.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:0.25rem 0.5rem;margin-top:.1rem;font-size:0.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,0.9);border-radius:0.25rem}.was-validated :valid ~ .valid-feedback,.was-validated :valid ~ .valid-tooltip,.is-valid ~ .valid-feedback,.is-valid ~ .valid-tooltip{display:block}.was-validated .form-control:valid,.form-control.is-valid{border-color:#28a745;padding-right:calc(1.5em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.375em + 0.1875rem) center;background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-control:valid:focus,.form-control.is-valid:focus{border-color:#28a745;box-shadow:0 0 0 0.2rem rgba(40,167,69,0.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + 0.75rem);background-position:top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem)}.was-validated .custom-select:valid,.custom-select.is-valid{border-color:#28a745;padding-right:calc(0.75em + 2.3125rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .custom-select:valid:focus,.custom-select.is-valid:focus{border-color:#28a745;box-shadow:0 0 0 0.2rem rgba(40,167,69,0.25)}.was-validated .form-check-input:valid ~ .form-check-label,.form-check-input.is-valid ~ .form-check-label{color:#28a745}.was-validated .form-check-input:valid ~ .valid-feedback,.was-validated .form-check-input:valid ~ .valid-tooltip,.form-check-input.is-valid ~ .valid-feedback,.form-check-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-control-input:valid ~ .custom-control-label,.custom-control-input.is-valid ~ .custom-control-label{color:#28a745}.was-validated .custom-control-input:valid ~ .custom-control-label::before,.custom-control-input.is-valid ~ .custom-control-label::before{border-color:#28a745}.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before,.custom-control-input.is-valid:checked ~ .custom-control-label::before{border-color:#34ce57;background-color:#34ce57}.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before,.custom-control-input.is-valid:focus ~ .custom-control-label::before{box-shadow:0 0 0 0.2rem rgba(40,167,69,0.25)}.was-validated .custom-control-input:valid:focus:not(:checked) ~ .custom-control-label::before,.custom-control-input.is-valid:focus:not(:checked) ~ .custom-control-label::before{border-color:#28a745}.was-validated .custom-file-input:valid ~ .custom-file-label,.custom-file-input.is-valid ~ .custom-file-label{border-color:#28a745}.was-validated .custom-file-input:valid:focus ~ .custom-file-label,.custom-file-input.is-valid:focus ~ .custom-file-label{border-color:#28a745;box-shadow:0 0 0 0.2rem rgba(40,167,69,0.25)}.invalid-feedback{display:none;width:100%;margin-top:0.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:0.25rem 0.5rem;margin-top:.1rem;font-size:0.875rem;line-height:1.5;color:#fff;background-color:rgba(220,53,69,0.9);border-radius:0.25rem}.was-validated :invalid ~ .invalid-feedback,.was-validated :invalid ~ .invalid-tooltip,.is-invalid ~ .invalid-feedback,.is-invalid ~ .invalid-tooltip{display:block}.was-validated .form-control:invalid,.form-control.is-invalid{border-color:#dc3545;padding-right:calc(1.5em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.375em + 0.1875rem) center;background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 0.2rem rgba(220,53,69,0.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + 0.75rem);background-position:top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem)}.was-validated .custom-select:invalid,.custom-select.is-invalid{border-color:#dc3545;padding-right:calc(0.75em + 2.3125rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .custom-select:invalid:focus,.custom-select.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 0.2rem rgba(220,53,69,0.25)}.was-validated .form-check-input:invalid ~ .form-check-label,.form-check-input.is-invalid ~ .form-check-label{color:#dc3545}.was-validated .form-check-input:invalid ~ .invalid-feedback,.was-validated .form-check-input:invalid ~ .invalid-tooltip,.form-check-input.is-invalid ~ .invalid-feedback,.form-check-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-control-input:invalid ~ .custom-control-label,.custom-control-input.is-invalid ~ .custom-control-label{color:#dc3545}.was-validated .custom-control-input:invalid ~ .custom-control-label::before,.custom-control-input.is-invalid ~ .custom-control-label::before{border-color:#dc3545}.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before,.custom-control-input.is-invalid:checked ~ .custom-control-label::before{border-color:#e4606d;background-color:#e4606d}.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before,.custom-control-input.is-invalid:focus ~ .custom-control-label::before{box-shadow:0 0 0 0.2rem rgba(220,53,69,0.25)}.was-validated .custom-control-input:invalid:focus:not(:checked) ~ .custom-control-label::before,.custom-control-input.is-invalid:focus:not(:checked) ~ .custom-control-label::before{border-color:#dc3545}.was-validated .custom-file-input:invalid ~ .custom-file-label,.custom-file-input.is-invalid ~ .custom-file-label{border-color:#dc3545}.was-validated .custom-file-input:invalid:focus ~ .custom-file-label,.custom-file-input.is-invalid:focus ~ .custom-file-label{border-color:#dc3545;box-shadow:0 0 0 0.2rem rgba(220,53,69,0.25)}.form-inline{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width: 576px){.form-inline label{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-ms-flexbox;display:flex;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .input-group,.form-inline .custom-select{width:auto}.form-inline .form-check{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;-ms-flex-negative:0;flex-shrink:0;margin-top:0;margin-right:0.25rem;margin-left:0}.form-inline .custom-control{-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:0.375rem 0.75rem;font-size:1rem;line-height:1.5;border-radius:0.25rem;transition:color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.btn{transition:none}}.btn:hover{color:#212529;text-decoration:none}.btn:focus,.btn.focus{outline:0;box-shadow:0 0 0 0.2rem rgba(0,123,255,0.25)}.btn.disabled,.btn:disabled{opacity:0.65}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary:focus,.btn-primary.focus{color:#fff;background-color:#0069d9;border-color:#0062cc;box-shadow:0 0 0 0.2rem rgba(38,143,255,0.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled):active,.btn-primary:not(:disabled):not(.disabled).active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled):active:focus,.btn-primary:not(:disabled):not(.disabled).active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 0.2rem rgba(38,143,255,0.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary:focus,.btn-secondary.focus{color:#fff;background-color:#5a6268;border-color:#545b62;box-shadow:0 0 0 0.2rem rgba(130,138,145,0.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled):active,.btn-secondary:not(:disabled):not(.disabled).active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled):active:focus,.btn-secondary:not(:disabled):not(.disabled).active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 0.2rem rgba(130,138,145,0.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success:focus,.btn-success.focus{color:#fff;background-color:#218838;border-color:#1e7e34;box-shadow:0 0 0 0.2rem rgba(72,180,97,0.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled):active,.btn-success:not(:disabled):not(.disabled).active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled):active:focus,.btn-success:not(:disabled):not(.disabled).active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 0.2rem rgba(72,180,97,0.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info:focus,.btn-info.focus{color:#fff;background-color:#138496;border-color:#117a8b;box-shadow:0 0 0 0.2rem rgba(58,176,195,0.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled):active,.btn-info:not(:disabled):not(.disabled).active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled):active:focus,.btn-info:not(:disabled):not(.disabled).active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 0.2rem rgba(58,176,195,0.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning:focus,.btn-warning.focus{color:#212529;background-color:#e0a800;border-color:#d39e00;box-shadow:0 0 0 0.2rem rgba(222,170,12,0.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled):active,.btn-warning:not(:disabled):not(.disabled).active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled):active:focus,.btn-warning:not(:disabled):not(.disabled).active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 0.2rem rgba(222,170,12,0.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger:focus,.btn-danger.focus{color:#fff;background-color:#c82333;border-color:#bd2130;box-shadow:0 0 0 0.2rem rgba(225,83,97,0.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled):active,.btn-danger:not(:disabled):not(.disabled).active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled):active:focus,.btn-danger:not(:disabled):not(.disabled).active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 0.2rem rgba(225,83,97,0.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light:focus,.btn-light.focus{color:#212529;background-color:#e2e6ea;border-color:#dae0e5;box-shadow:0 0 0 0.2rem rgba(216,217,219,0.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled):active,.btn-light:not(:disabled):not(.disabled).active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled):active:focus,.btn-light:not(:disabled):not(.disabled).active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 0.2rem rgba(216,217,219,0.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark:focus,.btn-dark.focus{color:#fff;background-color:#23272b;border-color:#1d2124;box-shadow:0 0 0 0.2rem rgba(82,88,93,0.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled):active,.btn-dark:not(:disabled):not(.disabled).active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled):active:focus,.btn-dark:not(:disabled):not(.disabled).active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 0.2rem rgba(82,88,93,0.5)}.btn-outline-primary{color:#007bff;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:focus,.btn-outline-primary.focus{box-shadow:0 0 0 0.2rem rgba(0,123,255,0.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled):active,.btn-outline-primary:not(:disabled):not(.disabled).active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 0.2rem rgba(0,123,255,0.5)}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:focus,.btn-outline-secondary.focus{box-shadow:0 0 0 0.2rem rgba(108,117,125,0.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled):active,.btn-outline-secondary:not(:disabled):not(.disabled).active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 0.2rem rgba(108,117,125,0.5)}.btn-outline-success{color:#28a745;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:focus,.btn-outline-success.focus{box-shadow:0 0 0 0.2rem rgba(40,167,69,0.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled):active,.btn-outline-success:not(:disabled):not(.disabled).active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled):active:focus,.btn-outline-success:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 0.2rem rgba(40,167,69,0.5)}.btn-outline-info{color:#17a2b8;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:focus,.btn-outline-info.focus{box-shadow:0 0 0 0.2rem rgba(23,162,184,0.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled):active,.btn-outline-info:not(:disabled):not(.disabled).active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled):active:focus,.btn-outline-info:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 0.2rem rgba(23,162,184,0.5)}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:focus,.btn-outline-warning.focus{box-shadow:0 0 0 0.2rem rgba(255,193,7,0.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled):active,.btn-outline-warning:not(:disabled):not(.disabled).active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 0.2rem rgba(255,193,7,0.5)}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:focus,.btn-outline-danger.focus{box-shadow:0 0 0 0.2rem rgba(220,53,69,0.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled):active,.btn-outline-danger:not(:disabled):not(.disabled).active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 0.2rem rgba(220,53,69,0.5)}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:focus,.btn-outline-light.focus{box-shadow:0 0 0 0.2rem rgba(248,249,250,0.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled):active,.btn-outline-light:not(:disabled):not(.disabled).active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled):active:focus,.btn-outline-light:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 0.2rem rgba(248,249,250,0.5)}.btn-outline-dark{color:#343a40;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:focus,.btn-outline-dark.focus{box-shadow:0 0 0 0.2rem rgba(52,58,64,0.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled):active,.btn-outline-dark:not(:disabled):not(.disabled).active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 0.2rem rgba(52,58,64,0.5)}.btn-link{font-weight:400;color:#007bff;text-decoration:none}.btn-link:hover{color:#0056b3;text-decoration:underline}.btn-link:focus,.btn-link.focus{text-decoration:underline;box-shadow:none}.btn-link:disabled,.btn-link.disabled{color:#6c757d;pointer-events:none}.btn-lg,.btn-group-lg>.btn{padding:0.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:0.3rem}.btn-sm,.btn-group-sm>.btn{padding:0.25rem 0.5rem;font-size:0.875rem;line-height:1.5;border-radius:0.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:0.5rem}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{transition:opacity 0.15s linear}@media (prefers-reduced-motion: reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height 0.35s ease}@media (prefers-reduced-motion: reduce){.collapsing{transition:none}}.dropup,.dropright,.dropdown,.dropleft{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:0.255em;vertical-align:0.255em;content:"";border-top:0.3em solid;border-right:0.3em solid transparent;border-bottom:0;border-left:0.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:0.5rem 0;margin:0.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.15);border-radius:0.25rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width: 576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width: 768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width: 992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width: 1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:0.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:0.255em;vertical-align:0.255em;content:"";border-top:0;border-right:0.3em solid transparent;border-bottom:0.3em solid;border-left:0.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:0.125rem}.dropright .dropdown-toggle::after{display:inline-block;margin-left:0.255em;vertical-align:0.255em;content:"";border-top:0.3em solid transparent;border-right:0;border-bottom:0.3em solid transparent;border-left:0.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:0.125rem}.dropleft .dropdown-toggle::after{display:inline-block;margin-left:0.255em;vertical-align:0.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;margin-right:0.255em;vertical-align:0.255em;content:"";border-top:0.3em solid transparent;border-right:0.3em solid;border-bottom:0.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-menu[x-placement^="top"],.dropdown-menu[x-placement^="right"],.dropdown-menu[x-placement^="bottom"],.dropdown-menu[x-placement^="left"]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:0.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:0.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:hover,.dropdown-item:focus{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:0.5rem 1.5rem;margin-bottom:0;font-size:0.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:0.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;-ms-flex:1 1 auto;flex:1 1 auto}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover{z-index:1}.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-toolbar{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:not(:first-child),.btn-group>.btn-group:not(:first-child){margin-left:-1px}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:not(:first-child),.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:0.5625rem;padding-left:0.5625rem}.dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after,.dropright .dropdown-toggle-split::after{margin-left:0}.dropleft .dropdown-toggle-split::before{margin-right:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:0.375rem;padding-left:0.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:0.75rem;padding-left:0.75rem}.btn-group-vertical{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:center;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type="radio"],.btn-group-toggle>.btn input[type="checkbox"],.btn-group-toggle>.btn-group>.btn input[type="radio"],.btn-group-toggle>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-control-plaintext,.input-group>.custom-select,.input-group>.custom-file{position:relative;-ms-flex:1 1 0%;flex:1 1 0%;min-width:0;margin-bottom:0}.input-group>.form-control+.form-control,.input-group>.form-control+.custom-select,.input-group>.form-control+.custom-file,.input-group>.form-control-plaintext+.form-control,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.custom-file,.input-group>.custom-select+.form-control,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.custom-file,.input-group>.custom-file+.form-control,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.custom-file{margin-left:-1px}.input-group>.form-control:focus,.input-group>.custom-select:focus,.input-group>.custom-file .custom-file-input:focus ~ .custom-file-label{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.form-control:not(:last-child),.input-group>.custom-select:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.form-control:not(:first-child),.input-group>.custom-select:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-prepend,.input-group-append{display:-ms-flexbox;display:flex}.input-group-prepend .btn,.input-group-append .btn{position:relative;z-index:2}.input-group-prepend .btn:focus,.input-group-append .btn:focus{z-index:3}.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.input-group-text,.input-group-append .input-group-text+.btn{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:0.375rem 0.75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:0.25rem}.input-group-text input[type="radio"],.input-group-text input[type="checkbox"]{margin-top:0}.input-group-lg>.form-control:not(textarea),.input-group-lg>.custom-select{height:calc(1.5em + 1rem + 2px)}.input-group-lg>.form-control,.input-group-lg>.custom-select,.input-group-lg>.input-group-prepend>.input-group-text,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-append>.btn{padding:0.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:0.3rem}.input-group-sm>.form-control:not(textarea),.input-group-sm>.custom-select{height:calc(1.5em + 0.5rem + 2px)}.input-group-sm>.form-control,.input-group-sm>.custom-select,.input-group-sm>.input-group-prepend>.input-group-text,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-append>.btn{padding:0.25rem 0.5rem;font-size:0.875rem;line-height:1.5;border-radius:0.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text,.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;left:0;z-index:-1;width:1rem;height:1.25rem;opacity:0}.custom-control-input:checked ~ .custom-control-label::before{color:#fff;border-color:#007bff;background-color:#007bff}.custom-control-input:focus ~ .custom-control-label::before{box-shadow:0 0 0 0.2rem rgba(0,123,255,0.25)}.custom-control-input:focus:not(:checked) ~ .custom-control-label::before{border-color:#80bdff}.custom-control-input:not(:disabled):active ~ .custom-control-label::before{color:#fff;background-color:#b3d7ff;border-color:#b3d7ff}.custom-control-input[disabled] ~ .custom-control-label,.custom-control-input:disabled ~ .custom-control-label{color:#6c757d}.custom-control-input[disabled] ~ .custom-control-label::before,.custom-control-input:disabled ~ .custom-control-label::before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label::before{position:absolute;top:0.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:"";background-color:#fff;border:#adb5bd solid 1px}.custom-control-label::after{position:absolute;top:0.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:"";background:no-repeat 50% / 50% 50%}.custom-checkbox .custom-control-label::before{border-radius:0.25rem}.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before{border-color:#007bff;background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before{background-color:rgba(0,123,255,0.5)}.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before{background-color:rgba(0,123,255,0.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked ~ .custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before{background-color:rgba(0,123,255,0.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label::before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:0.5rem}.custom-switch .custom-control-label::after{top:calc(0.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:0.5rem;transition:background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-transform 0.15s ease-in-out;transition:transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;transition:transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-transform 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.custom-switch .custom-control-label::after{transition:none}}.custom-switch .custom-control-input:checked ~ .custom-control-label::after{background-color:#fff;-webkit-transform:translateX(0.75rem);transform:translateX(0.75rem)}.custom-switch .custom-control-input:disabled:checked ~ .custom-control-label::before{background-color:rgba(0,123,255,0.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + 0.75rem + 2px);padding:0.375rem 1.75rem 0.375rem 0.75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px;border:1px solid #ced4da;border-radius:0.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 0.2rem rgba(0,123,255,0.25)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:0.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{display:none}.custom-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.custom-select-sm{height:calc(1.5em + 0.5rem + 2px);padding-top:0.25rem;padding-bottom:0.25rem;padding-left:0.5rem;font-size:0.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:0.5rem;padding-bottom:0.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{position:relative;display:inline-block;width:100%;height:calc(1.5em + 0.75rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(1.5em + 0.75rem + 2px);margin:0;opacity:0}.custom-file-input:focus ~ .custom-file-label{border-color:#80bdff;box-shadow:0 0 0 0.2rem rgba(0,123,255,0.25)}.custom-file-input[disabled] ~ .custom-file-label,.custom-file-input:disabled ~ .custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en) ~ .custom-file-label::after{content:"Browse"}.custom-file-input ~ .custom-file-label[data-browse]::after{content:attr(data-browse)}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(1.5em + 0.75rem + 2px);padding:0.375rem 0.75rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:0.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(1.5em + 0.75rem);padding:0.375rem 0.75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 0.25rem 0.25rem 0}.custom-range{width:100%;height:1.4rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-range:focus{outline:none}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 0.2rem rgba(0,123,255,0.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 0.2rem rgba(0,123,255,0.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 0.2rem rgba(0,123,255,0.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-0.25rem;background-color:#007bff;border:0;border-radius:1rem;-webkit-transition:background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;transition:background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion: reduce){.custom-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#b3d7ff}.custom-range::-webkit-slider-runnable-track{width:100%;height:0.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#007bff;border:0;border-radius:1rem;-moz-transition:background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;transition:background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion: reduce){.custom-range::-moz-range-thumb{-moz-transition:none;transition:none}}.custom-range::-moz-range-thumb:active{background-color:#b3d7ff}.custom-range::-moz-range-track{width:100%;height:0.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:0.2rem;margin-left:0.2rem;background-color:#007bff;border:0;border-radius:1rem;-ms-transition:background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;transition:background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;appearance:none}@media (prefers-reduced-motion: reduce){.custom-range::-ms-thumb{-ms-transition:none;transition:none}}.custom-range::-ms-thumb:active{background-color:#b3d7ff}.custom-range::-ms-track{width:100%;height:0.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:0.5rem}.custom-range::-ms-fill-lower{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px;background-color:#dee2e6;border-radius:1rem}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label::before,.custom-file-label,.custom-select{transition:background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.custom-control-label::before,.custom-file-label,.custom-select{transition:none}}.nav{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:0.5rem 1rem}.nav-link:hover,.nav-link:focus{text-decoration:none}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:0.25rem;border-top-right-radius:0.25rem}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:0.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item{-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;padding:0.5rem 1rem}.navbar .container,.navbar .container-fluid,.navbar .container-sm,.navbar .container-md,.navbar .container-lg,.navbar .container-xl{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:0.3125rem;padding-bottom:0.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-nav{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:0.5rem;padding-bottom:0.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:0.25rem 0.75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:0.25rem}.navbar-toggler:hover,.navbar-toggler:focus{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;background-size:100% 100%}@media (max-width: 575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-xl{padding-right:0;padding-left:0}}@media (min-width: 576px){.navbar-expand-sm{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:0.5rem;padding-left:0.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:-ms-flexbox !important;display:flex !important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width: 767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-md,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-xl{padding-right:0;padding-left:0}}@media (min-width: 768px){.navbar-expand-md{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:0.5rem;padding-left:0.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-md,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:-ms-flexbox !important;display:flex !important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width: 991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-xl{padding-right:0;padding-left:0}}@media (min-width: 992px){.navbar-expand-lg{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:0.5rem;padding-left:0.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:-ms-flexbox !important;display:flex !important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width: 1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-xl{padding-right:0;padding-left:0}}@media (min-width: 1200px){.navbar-expand-xl{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:0.5rem;padding-left:0.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:-ms-flexbox !important;display:flex !important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-sm,.navbar-expand>.container-md,.navbar-expand>.container-lg,.navbar-expand>.container-xl{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:0.5rem;padding-left:0.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-sm,.navbar-expand>.container-md,.navbar-expand>.container-lg,.navbar-expand>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:-ms-flexbox !important;display:flex !important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:rgba(0,0,0,0.9)}.navbar-light .navbar-brand:hover,.navbar-light .navbar-brand:focus{color:rgba(0,0,0,0.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,0.5)}.navbar-light .navbar-nav .nav-link:hover,.navbar-light .navbar-nav .nav-link:focus{color:rgba(0,0,0,0.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,0.3)}.navbar-light .navbar-nav .show>.nav-link,.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .nav-link.active{color:rgba(0,0,0,0.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,0.5);border-color:rgba(0,0,0,0.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,0.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,0.9)}.navbar-light .navbar-text a:hover,.navbar-light .navbar-text a:focus{color:rgba(0,0,0,0.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:hover,.navbar-dark .navbar-brand:focus{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,0.5)}.navbar-dark .navbar-nav .nav-link:hover,.navbar-dark .navbar-nav .nav-link:focus{color:rgba(255,255,255,0.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,0.25)}.navbar-dark .navbar-nav .show>.nav-link,.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .nav-link.active{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,0.5);border-color:rgba(255,255,255,0.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,0.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:hover,.navbar-dark .navbar-text a:focus{color:#fff}.card{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,0.125);border-radius:0.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:0.25rem;border-top-right-radius:0.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:0.25rem;border-bottom-left-radius:0.25rem}.card-body{-ms-flex:1 1 auto;flex:1 1 auto;min-height:1px;padding:1.25rem}.card-title{margin-bottom:0.75rem}.card-subtitle{margin-top:-0.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:0.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,0.03);border-bottom:1px solid rgba(0,0,0,0.125)}.card-header:first-child{border-radius:calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:0.75rem 1.25rem;background-color:rgba(0,0,0,0.03);border-top:1px solid rgba(0,0,0,0.125)}.card-footer:last-child{border-radius:0 0 calc(0.25rem - 1px) calc(0.25rem - 1px)}.card-header-tabs{margin-right:-0.625rem;margin-bottom:-0.75rem;margin-left:-0.625rem;border-bottom:0}.card-header-pills{margin-right:-0.625rem;margin-left:-0.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img,.card-img-top,.card-img-bottom{-ms-flex-negative:0;flex-shrink:0;width:100%}.card-img,.card-img-top{border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(0.25rem - 1px);border-bottom-left-radius:calc(0.25rem - 1px)}.card-deck .card{margin-bottom:15px}@media (min-width: 576px){.card-deck{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{-ms-flex:1 0 0%;flex:1 0 0%;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group>.card{margin-bottom:15px}@media (min-width: 576px){.card-group{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-img-top,.card-group>.card:not(:last-child) .card-header{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-img-bottom,.card-group>.card:not(:last-child) .card-footer{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-img-top,.card-group>.card:not(:first-child) .card-header{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-img-bottom,.card-group>.card:not(:first-child) .card-footer{border-bottom-left-radius:0}}.card-columns .card{margin-bottom:0.75rem}@media (min-width: 576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion>.card{overflow:hidden}.accordion>.card:not(:last-of-type){border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:not(:first-of-type){border-top-left-radius:0;border-top-right-radius:0}.accordion>.card>.card-header{border-radius:0;margin-bottom:-1px}.breadcrumb{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:0.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:0.25rem}.breadcrumb-item+.breadcrumb-item{padding-left:0.5rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:0.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:0.25rem}.page-link{position:relative;display:block;padding:0.5rem 0.75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;outline:0;box-shadow:0 0 0 0.2rem rgba(0,123,255,0.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:0.25rem;border-bottom-left-radius:0.25rem}.page-item:last-child .page-link{border-top-right-radius:0.25rem;border-bottom-right-radius:0.25rem}.page-item.active .page-link{z-index:3;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:0.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:0.3rem;border-bottom-left-radius:0.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:0.3rem;border-bottom-right-radius:0.3rem}.pagination-sm .page-link{padding:0.25rem 0.5rem;font-size:0.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:0.2rem;border-bottom-left-radius:0.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:0.2rem;border-bottom-right-radius:0.2rem}.badge{display:inline-block;padding:0.25em 0.4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:0.25rem;transition:color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.badge{transition:none}}a.badge:hover,a.badge:focus{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:0.6em;padding-left:0.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}a.badge-primary:hover,a.badge-primary:focus{color:#fff;background-color:#0062cc}a.badge-primary:focus,a.badge-primary.focus{outline:0;box-shadow:0 0 0 0.2rem rgba(0,123,255,0.5)}.badge-secondary{color:#fff;background-color:#6c757d}a.badge-secondary:hover,a.badge-secondary:focus{color:#fff;background-color:#545b62}a.badge-secondary:focus,a.badge-secondary.focus{outline:0;box-shadow:0 0 0 0.2rem rgba(108,117,125,0.5)}.badge-success{color:#fff;background-color:#28a745}a.badge-success:hover,a.badge-success:focus{color:#fff;background-color:#1e7e34}a.badge-success:focus,a.badge-success.focus{outline:0;box-shadow:0 0 0 0.2rem rgba(40,167,69,0.5)}.badge-info{color:#fff;background-color:#17a2b8}a.badge-info:hover,a.badge-info:focus{color:#fff;background-color:#117a8b}a.badge-info:focus,a.badge-info.focus{outline:0;box-shadow:0 0 0 0.2rem rgba(23,162,184,0.5)}.badge-warning{color:#212529;background-color:#ffc107}a.badge-warning:hover,a.badge-warning:focus{color:#212529;background-color:#d39e00}a.badge-warning:focus,a.badge-warning.focus{outline:0;box-shadow:0 0 0 0.2rem rgba(255,193,7,0.5)}.badge-danger{color:#fff;background-color:#dc3545}a.badge-danger:hover,a.badge-danger:focus{color:#fff;background-color:#bd2130}a.badge-danger:focus,a.badge-danger.focus{outline:0;box-shadow:0 0 0 0.2rem rgba(220,53,69,0.5)}.badge-light{color:#212529;background-color:#f8f9fa}a.badge-light:hover,a.badge-light:focus{color:#212529;background-color:#dae0e5}a.badge-light:focus,a.badge-light.focus{outline:0;box-shadow:0 0 0 0.2rem rgba(248,249,250,0.5)}.badge-dark{color:#fff;background-color:#343a40}a.badge-dark:hover,a.badge-dark:focus{color:#fff;background-color:#1d2124}a.badge-dark:focus,a.badge-dark.focus{outline:0;box-shadow:0 0 0 0.2rem rgba(52,58,64,0.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:0.3rem}@media (min-width: 576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:0.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:0.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:0.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;font-size:0.75rem;background-color:#e9ecef;border-radius:0.25rem}.progress-bar{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#007bff;transition:width 0.6s ease}@media (prefers-reduced-motion: reduce){.progress-bar{transition:none}}.progress-bar-striped{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);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}@media (prefers-reduced-motion: reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.media{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start}.media-body{-ms-flex:1;flex:1}.list-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:0.75rem 1.25rem;background-color:#fff;border:1px solid rgba(0,0,0,0.125)}.list-group-item:first-child{border-top-left-radius:0.25rem;border-top-right-radius:0.25rem}.list-group-item:last-child{border-bottom-right-radius:0.25rem;border-bottom-left-radius:0.25rem}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal .list-group-item:first-child{border-bottom-left-radius:0.25rem;border-top-right-radius:0}.list-group-horizontal .list-group-item:last-child{border-top-right-radius:0.25rem;border-bottom-left-radius:0}.list-group-horizontal .list-group-item.active{margin-top:0}.list-group-horizontal .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width: 576px){.list-group-horizontal-sm{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-sm .list-group-item:first-child{border-bottom-left-radius:0.25rem;border-top-right-radius:0}.list-group-horizontal-sm .list-group-item:last-child{border-top-right-radius:0.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm .list-group-item.active{margin-top:0}.list-group-horizontal-sm .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 768px){.list-group-horizontal-md{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-md .list-group-item:first-child{border-bottom-left-radius:0.25rem;border-top-right-radius:0}.list-group-horizontal-md .list-group-item:last-child{border-top-right-radius:0.25rem;border-bottom-left-radius:0}.list-group-horizontal-md .list-group-item.active{margin-top:0}.list-group-horizontal-md .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 992px){.list-group-horizontal-lg{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-lg .list-group-item:first-child{border-bottom-left-radius:0.25rem;border-top-right-radius:0}.list-group-horizontal-lg .list-group-item:last-child{border-top-right-radius:0.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg .list-group-item.active{margin-top:0}.list-group-horizontal-lg .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 1200px){.list-group-horizontal-xl{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-xl .list-group-item:first-child{border-bottom-left-radius:0.25rem;border-top-right-radius:0}.list-group-horizontal-xl .list-group-item:last-child{border-top-right-radius:0.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl .list-group-item.active{margin-top:0}.list-group-horizontal-xl .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush .list-group-item{border-right-width:0;border-left-width:0;border-radius:0}.list-group-flush .list-group-item:first-child{border-top-width:0}.list-group-flush:last-child .list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:hover,.list-group-item-primary.list-group-item-action:focus{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:hover,.list-group-item-secondary.list-group-item-action:focus{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:hover,.list-group-item-success.list-group-item-action:focus{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:hover,.list-group-item-info.list-group-item-action:focus{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:hover,.list-group-item-warning.list-group-item-action:focus{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:hover,.list-group-item-danger.list-group-item-action:focus{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:hover,.list-group-item-light.list-group-item-action:focus{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:hover,.list-group-item-dark.list-group-item-action:focus{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):hover,.close:not(:disabled):not(.disabled):focus{opacity:.75}button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}a.close.disabled{pointer-events:none}.toast{max-width:350px;overflow:hidden;font-size:0.875rem;background-color:rgba(255,255,255,0.85);background-clip:padding-box;border:1px solid rgba(0,0,0,0.1);box-shadow:0 0.25rem 0.75rem rgba(0,0,0,0.1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);opacity:0;border-radius:0.25rem}.toast:not(:last-child){margin-bottom:0.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:0.25rem 0.75rem;color:#6c757d;background-color:rgba(255,255,255,0.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,0.05)}.toast-body{padding:0.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:0.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:-webkit-transform 0.3s ease-out;transition:transform 0.3s ease-out;transition:transform 0.3s ease-out, -webkit-transform 0.3s ease-out;-webkit-transform:translate(0, -50px);transform:translate(0, -50px)}@media (prefers-reduced-motion: reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{-webkit-transform:none;transform:none}.modal.modal-static .modal-dialog{-webkit-transform:scale(1.02);transform:scale(1.02)}.modal-dialog-scrollable{display:-ms-flexbox;display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-header,.modal-dialog-scrollable .modal-footer{-ms-flex-negative:0;flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered::before{display:block;height:calc(100vh - 1rem);content:""}.modal-dialog-centered.modal-dialog-scrollable{-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable::before{content:none}.modal-content{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.2);border-radius:0.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:0.5}.modal-header{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:justify;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(0.3rem - 1px);border-top-right-radius:calc(0.3rem - 1px)}.modal-header .close{padding:1rem 1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end;padding:0.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(0.3rem - 1px);border-bottom-left-radius:calc(0.3rem - 1px)}.modal-footer>*{margin:0.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width: 576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered::before{height:calc(100vh - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width: 992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width: 1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:0.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:0.9}.tooltip .arrow{position:absolute;display:block;width:0.8rem;height:0.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-top,.bs-tooltip-auto[x-placement^="top"]{padding:0.4rem 0}.bs-tooltip-top .arrow,.bs-tooltip-auto[x-placement^="top"] .arrow{bottom:0}.bs-tooltip-top .arrow::before,.bs-tooltip-auto[x-placement^="top"] .arrow::before{top:0;border-width:0.4rem 0.4rem 0;border-top-color:#000}.bs-tooltip-right,.bs-tooltip-auto[x-placement^="right"]{padding:0 0.4rem}.bs-tooltip-right .arrow,.bs-tooltip-auto[x-placement^="right"] .arrow{left:0;width:0.4rem;height:0.8rem}.bs-tooltip-right .arrow::before,.bs-tooltip-auto[x-placement^="right"] .arrow::before{right:0;border-width:0.4rem 0.4rem 0.4rem 0;border-right-color:#000}.bs-tooltip-bottom,.bs-tooltip-auto[x-placement^="bottom"]{padding:0.4rem 0}.bs-tooltip-bottom .arrow,.bs-tooltip-auto[x-placement^="bottom"] .arrow{top:0}.bs-tooltip-bottom .arrow::before,.bs-tooltip-auto[x-placement^="bottom"] .arrow::before{bottom:0;border-width:0 0.4rem 0.4rem;border-bottom-color:#000}.bs-tooltip-left,.bs-tooltip-auto[x-placement^="left"]{padding:0 0.4rem}.bs-tooltip-left .arrow,.bs-tooltip-auto[x-placement^="left"] .arrow{right:0;width:0.4rem;height:0.8rem}.bs-tooltip-left .arrow::before,.bs-tooltip-auto[x-placement^="left"] .arrow::before{left:0;border-width:0.4rem 0 0.4rem 0.4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:0.25rem 0.5rem;color:#fff;text-align:center;background-color:#000;border-radius:0.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:0.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.2);border-radius:0.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:0.5rem;margin:0 0.3rem}.popover .arrow::before,.popover .arrow::after{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-top,.bs-popover-auto[x-placement^="top"]{margin-bottom:0.5rem}.bs-popover-top>.arrow,.bs-popover-auto[x-placement^="top"]>.arrow{bottom:calc(-0.5rem - 1px)}.bs-popover-top>.arrow::before,.bs-popover-auto[x-placement^="top"]>.arrow::before{bottom:0;border-width:0.5rem 0.5rem 0;border-top-color:rgba(0,0,0,0.25)}.bs-popover-top>.arrow::after,.bs-popover-auto[x-placement^="top"]>.arrow::after{bottom:1px;border-width:0.5rem 0.5rem 0;border-top-color:#fff}.bs-popover-right,.bs-popover-auto[x-placement^="right"]{margin-left:0.5rem}.bs-popover-right>.arrow,.bs-popover-auto[x-placement^="right"]>.arrow{left:calc(-0.5rem - 1px);width:0.5rem;height:1rem;margin:0.3rem 0}.bs-popover-right>.arrow::before,.bs-popover-auto[x-placement^="right"]>.arrow::before{left:0;border-width:0.5rem 0.5rem 0.5rem 0;border-right-color:rgba(0,0,0,0.25)}.bs-popover-right>.arrow::after,.bs-popover-auto[x-placement^="right"]>.arrow::after{left:1px;border-width:0.5rem 0.5rem 0.5rem 0;border-right-color:#fff}.bs-popover-bottom,.bs-popover-auto[x-placement^="bottom"]{margin-top:0.5rem}.bs-popover-bottom>.arrow,.bs-popover-auto[x-placement^="bottom"]>.arrow{top:calc(-0.5rem - 1px)}.bs-popover-bottom>.arrow::before,.bs-popover-auto[x-placement^="bottom"]>.arrow::before{top:0;border-width:0 0.5rem 0.5rem 0.5rem;border-bottom-color:rgba(0,0,0,0.25)}.bs-popover-bottom>.arrow::after,.bs-popover-auto[x-placement^="bottom"]>.arrow::after{top:1px;border-width:0 0.5rem 0.5rem 0.5rem;border-bottom-color:#fff}.bs-popover-bottom .popover-header::before,.bs-popover-auto[x-placement^="bottom"] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-0.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-left,.bs-popover-auto[x-placement^="left"]{margin-right:0.5rem}.bs-popover-left>.arrow,.bs-popover-auto[x-placement^="left"]>.arrow{right:calc(-0.5rem - 1px);width:0.5rem;height:1rem;margin:0.3rem 0}.bs-popover-left>.arrow::before,.bs-popover-auto[x-placement^="left"]>.arrow::before{right:0;border-width:0.5rem 0 0.5rem 0.5rem;border-left-color:rgba(0,0,0,0.25)}.bs-popover-left>.arrow::after,.bs-popover-auto[x-placement^="left"]>.arrow::after{right:1px;border-width:0.5rem 0 0.5rem 0.5rem;border-left-color:#fff}.popover-header{padding:0.5rem 0.75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(0.3rem - 1px);border-top-right-radius:calc(0.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:0.5rem 0.75rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{-ms-touch-action:pan-y;touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:-webkit-transform 0.6s ease-in-out;transition:transform 0.6s ease-in-out;transition:transform 0.6s ease-in-out, -webkit-transform 0.6s ease-in-out}@media (prefers-reduced-motion: reduce){.carousel-item{transition:none}}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next:not(.carousel-item-left),.active.carousel-item-right{-webkit-transform:translateX(100%);transform:translateX(100%)}.carousel-item-prev:not(.carousel-item-right),.active.carousel-item-left{-webkit-transform:translateX(-100%);transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;-webkit-transform:none;transform:none}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:opacity 0s 0.6s}@media (prefers-reduced-motion: reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:0.5;transition:opacity 0.15s ease}@media (prefers-reduced-motion: reduce){.carousel-control-prev,.carousel-control-next{transition:none}}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:0.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:20px;height:20px;background:no-repeat 50% / 100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity 0.6s ease}@media (prefers-reduced-motion: reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@-webkit-keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;border:0.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:spinner-border .75s linear infinite;animation:spinner-border .75s linear infinite}.spinner-border-sm{width:1rem;height:1rem;border-width:0.2em}@-webkit-keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1}}@keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:spinner-grow .75s linear infinite;animation:spinner-grow .75s linear infinite}.spinner-grow-sm{width:1rem;height:1rem}.align-baseline{vertical-align:baseline !important}.align-top{vertical-align:top !important}.align-middle{vertical-align:middle !important}.align-bottom{vertical-align:bottom !important}.align-text-bottom{vertical-align:text-bottom !important}.align-text-top{vertical-align:text-top !important}.bg-primary{background-color:#007bff !important}a.bg-primary:hover,a.bg-primary:focus,button.bg-primary:hover,button.bg-primary:focus{background-color:#0062cc !important}.bg-secondary{background-color:#6c757d !important}a.bg-secondary:hover,a.bg-secondary:focus,button.bg-secondary:hover,button.bg-secondary:focus{background-color:#545b62 !important}.bg-success{background-color:#28a745 !important}a.bg-success:hover,a.bg-success:focus,button.bg-success:hover,button.bg-success:focus{background-color:#1e7e34 !important}.bg-info{background-color:#17a2b8 !important}a.bg-info:hover,a.bg-info:focus,button.bg-info:hover,button.bg-info:focus{background-color:#117a8b !important}.bg-warning{background-color:#ffc107 !important}a.bg-warning:hover,a.bg-warning:focus,button.bg-warning:hover,button.bg-warning:focus{background-color:#d39e00 !important}.bg-danger{background-color:#dc3545 !important}a.bg-danger:hover,a.bg-danger:focus,button.bg-danger:hover,button.bg-danger:focus{background-color:#bd2130 !important}.bg-light{background-color:#f8f9fa !important}a.bg-light:hover,a.bg-light:focus,button.bg-light:hover,button.bg-light:focus{background-color:#dae0e5 !important}.bg-dark{background-color:#343a40 !important}a.bg-dark:hover,a.bg-dark:focus,button.bg-dark:hover,button.bg-dark:focus{background-color:#1d2124 !important}.bg-white{background-color:#fff !important}.bg-transparent{background-color:transparent !important}.border{border:1px solid #dee2e6 !important}.border-top{border-top:1px solid #dee2e6 !important}.border-right{border-right:1px solid #dee2e6 !important}.border-bottom{border-bottom:1px solid #dee2e6 !important}.border-left{border-left:1px solid #dee2e6 !important}.border-0{border:0 !important}.border-top-0{border-top:0 !important}.border-right-0{border-right:0 !important}.border-bottom-0{border-bottom:0 !important}.border-left-0{border-left:0 !important}.border-primary{border-color:#007bff !important}.border-secondary{border-color:#6c757d !important}.border-success{border-color:#28a745 !important}.border-info{border-color:#17a2b8 !important}.border-warning{border-color:#ffc107 !important}.border-danger{border-color:#dc3545 !important}.border-light{border-color:#f8f9fa !important}.border-dark{border-color:#343a40 !important}.border-white{border-color:#fff !important}.rounded-sm{border-radius:0.2rem !important}.rounded{border-radius:0.25rem !important}.rounded-top{border-top-left-radius:0.25rem !important;border-top-right-radius:0.25rem !important}.rounded-right{border-top-right-radius:0.25rem !important;border-bottom-right-radius:0.25rem !important}.rounded-bottom{border-bottom-right-radius:0.25rem !important;border-bottom-left-radius:0.25rem !important}.rounded-left{border-top-left-radius:0.25rem !important;border-bottom-left-radius:0.25rem !important}.rounded-lg{border-radius:0.3rem !important}.rounded-circle{border-radius:50% !important}.rounded-pill{border-radius:50rem !important}.rounded-0{border-radius:0 !important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-block{display:block !important}.d-table{display:table !important}.d-table-row{display:table-row !important}.d-table-cell{display:table-cell !important}.d-flex{display:-ms-flexbox !important;display:flex !important}.d-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}@media (min-width: 576px){.d-sm-none{display:none !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}.d-sm-flex{display:-ms-flexbox !important;display:flex !important}.d-sm-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media (min-width: 768px){.d-md-none{display:none !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}.d-md-flex{display:-ms-flexbox !important;display:flex !important}.d-md-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media (min-width: 992px){.d-lg-none{display:none !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}.d-lg-flex{display:-ms-flexbox !important;display:flex !important}.d-lg-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media (min-width: 1200px){.d-xl-none{display:none !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}.d-xl-flex{display:-ms-flexbox !important;display:flex !important}.d-xl-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media print{.d-print-none{display:none !important}.d-print-inline{display:inline !important}.d-print-inline-block{display:inline-block !important}.d-print-block{display:block !important}.d-print-table{display:table !important}.d-print-table-row{display:table-row !important}.d-print-table-cell{display:table-cell !important}.d-print-flex{display:-ms-flexbox !important;display:flex !important}.d-print-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.857143%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-ms-flex-direction:row !important;flex-direction:row !important}.flex-column{-ms-flex-direction:column !important;flex-direction:column !important}.flex-row-reverse{-ms-flex-direction:row-reverse !important;flex-direction:row-reverse !important}.flex-column-reverse{-ms-flex-direction:column-reverse !important;flex-direction:column-reverse !important}.flex-wrap{-ms-flex-wrap:wrap !important;flex-wrap:wrap !important}.flex-nowrap{-ms-flex-wrap:nowrap !important;flex-wrap:nowrap !important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse !important;flex-wrap:wrap-reverse !important}.flex-fill{-ms-flex:1 1 auto !important;flex:1 1 auto !important}.flex-grow-0{-ms-flex-positive:0 !important;flex-grow:0 !important}.flex-grow-1{-ms-flex-positive:1 !important;flex-grow:1 !important}.flex-shrink-0{-ms-flex-negative:0 !important;flex-shrink:0 !important}.flex-shrink-1{-ms-flex-negative:1 !important;flex-shrink:1 !important}.justify-content-start{-ms-flex-pack:start !important;justify-content:flex-start !important}.justify-content-end{-ms-flex-pack:end !important;justify-content:flex-end !important}.justify-content-center{-ms-flex-pack:center !important;justify-content:center !important}.justify-content-between{-ms-flex-pack:justify !important;justify-content:space-between !important}.justify-content-around{-ms-flex-pack:distribute !important;justify-content:space-around !important}.align-items-start{-ms-flex-align:start !important;align-items:flex-start !important}.align-items-end{-ms-flex-align:end !important;align-items:flex-end !important}.align-items-center{-ms-flex-align:center !important;align-items:center !important}.align-items-baseline{-ms-flex-align:baseline !important;align-items:baseline !important}.align-items-stretch{-ms-flex-align:stretch !important;align-items:stretch !important}.align-content-start{-ms-flex-line-pack:start !important;align-content:flex-start !important}.align-content-end{-ms-flex-line-pack:end !important;align-content:flex-end !important}.align-content-center{-ms-flex-line-pack:center !important;align-content:center !important}.align-content-between{-ms-flex-line-pack:justify !important;align-content:space-between !important}.align-content-around{-ms-flex-line-pack:distribute !important;align-content:space-around !important}.align-content-stretch{-ms-flex-line-pack:stretch !important;align-content:stretch !important}.align-self-auto{-ms-flex-item-align:auto !important;align-self:auto !important}.align-self-start{-ms-flex-item-align:start !important;align-self:flex-start !important}.align-self-end{-ms-flex-item-align:end !important;align-self:flex-end !important}.align-self-center{-ms-flex-item-align:center !important;align-self:center !important}.align-self-baseline{-ms-flex-item-align:baseline !important;align-self:baseline !important}.align-self-stretch{-ms-flex-item-align:stretch !important;align-self:stretch !important}@media (min-width: 576px){.flex-sm-row{-ms-flex-direction:row !important;flex-direction:row !important}.flex-sm-column{-ms-flex-direction:column !important;flex-direction:column !important}.flex-sm-row-reverse{-ms-flex-direction:row-reverse !important;flex-direction:row-reverse !important}.flex-sm-column-reverse{-ms-flex-direction:column-reverse !important;flex-direction:column-reverse !important}.flex-sm-wrap{-ms-flex-wrap:wrap !important;flex-wrap:wrap !important}.flex-sm-nowrap{-ms-flex-wrap:nowrap !important;flex-wrap:nowrap !important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse !important;flex-wrap:wrap-reverse !important}.flex-sm-fill{-ms-flex:1 1 auto !important;flex:1 1 auto !important}.flex-sm-grow-0{-ms-flex-positive:0 !important;flex-grow:0 !important}.flex-sm-grow-1{-ms-flex-positive:1 !important;flex-grow:1 !important}.flex-sm-shrink-0{-ms-flex-negative:0 !important;flex-shrink:0 !important}.flex-sm-shrink-1{-ms-flex-negative:1 !important;flex-shrink:1 !important}.justify-content-sm-start{-ms-flex-pack:start !important;justify-content:flex-start !important}.justify-content-sm-end{-ms-flex-pack:end !important;justify-content:flex-end !important}.justify-content-sm-center{-ms-flex-pack:center !important;justify-content:center !important}.justify-content-sm-between{-ms-flex-pack:justify !important;justify-content:space-between !important}.justify-content-sm-around{-ms-flex-pack:distribute !important;justify-content:space-around !important}.align-items-sm-start{-ms-flex-align:start !important;align-items:flex-start !important}.align-items-sm-end{-ms-flex-align:end !important;align-items:flex-end !important}.align-items-sm-center{-ms-flex-align:center !important;align-items:center !important}.align-items-sm-baseline{-ms-flex-align:baseline !important;align-items:baseline !important}.align-items-sm-stretch{-ms-flex-align:stretch !important;align-items:stretch !important}.align-content-sm-start{-ms-flex-line-pack:start !important;align-content:flex-start !important}.align-content-sm-end{-ms-flex-line-pack:end !important;align-content:flex-end !important}.align-content-sm-center{-ms-flex-line-pack:center !important;align-content:center !important}.align-content-sm-between{-ms-flex-line-pack:justify !important;align-content:space-between !important}.align-content-sm-around{-ms-flex-line-pack:distribute !important;align-content:space-around !important}.align-content-sm-stretch{-ms-flex-line-pack:stretch !important;align-content:stretch !important}.align-self-sm-auto{-ms-flex-item-align:auto !important;align-self:auto !important}.align-self-sm-start{-ms-flex-item-align:start !important;align-self:flex-start !important}.align-self-sm-end{-ms-flex-item-align:end !important;align-self:flex-end !important}.align-self-sm-center{-ms-flex-item-align:center !important;align-self:center !important}.align-self-sm-baseline{-ms-flex-item-align:baseline !important;align-self:baseline !important}.align-self-sm-stretch{-ms-flex-item-align:stretch !important;align-self:stretch !important}}@media (min-width: 768px){.flex-md-row{-ms-flex-direction:row !important;flex-direction:row !important}.flex-md-column{-ms-flex-direction:column !important;flex-direction:column !important}.flex-md-row-reverse{-ms-flex-direction:row-reverse !important;flex-direction:row-reverse !important}.flex-md-column-reverse{-ms-flex-direction:column-reverse !important;flex-direction:column-reverse !important}.flex-md-wrap{-ms-flex-wrap:wrap !important;flex-wrap:wrap !important}.flex-md-nowrap{-ms-flex-wrap:nowrap !important;flex-wrap:nowrap !important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse !important;flex-wrap:wrap-reverse !important}.flex-md-fill{-ms-flex:1 1 auto !important;flex:1 1 auto !important}.flex-md-grow-0{-ms-flex-positive:0 !important;flex-grow:0 !important}.flex-md-grow-1{-ms-flex-positive:1 !important;flex-grow:1 !important}.flex-md-shrink-0{-ms-flex-negative:0 !important;flex-shrink:0 !important}.flex-md-shrink-1{-ms-flex-negative:1 !important;flex-shrink:1 !important}.justify-content-md-start{-ms-flex-pack:start !important;justify-content:flex-start !important}.justify-content-md-end{-ms-flex-pack:end !important;justify-content:flex-end !important}.justify-content-md-center{-ms-flex-pack:center !important;justify-content:center !important}.justify-content-md-between{-ms-flex-pack:justify !important;justify-content:space-between !important}.justify-content-md-around{-ms-flex-pack:distribute !important;justify-content:space-around !important}.align-items-md-start{-ms-flex-align:start !important;align-items:flex-start !important}.align-items-md-end{-ms-flex-align:end !important;align-items:flex-end !important}.align-items-md-center{-ms-flex-align:center !important;align-items:center !important}.align-items-md-baseline{-ms-flex-align:baseline !important;align-items:baseline !important}.align-items-md-stretch{-ms-flex-align:stretch !important;align-items:stretch !important}.align-content-md-start{-ms-flex-line-pack:start !important;align-content:flex-start !important}.align-content-md-end{-ms-flex-line-pack:end !important;align-content:flex-end !important}.align-content-md-center{-ms-flex-line-pack:center !important;align-content:center !important}.align-content-md-between{-ms-flex-line-pack:justify !important;align-content:space-between !important}.align-content-md-around{-ms-flex-line-pack:distribute !important;align-content:space-around !important}.align-content-md-stretch{-ms-flex-line-pack:stretch !important;align-content:stretch !important}.align-self-md-auto{-ms-flex-item-align:auto !important;align-self:auto !important}.align-self-md-start{-ms-flex-item-align:start !important;align-self:flex-start !important}.align-self-md-end{-ms-flex-item-align:end !important;align-self:flex-end !important}.align-self-md-center{-ms-flex-item-align:center !important;align-self:center !important}.align-self-md-baseline{-ms-flex-item-align:baseline !important;align-self:baseline !important}.align-self-md-stretch{-ms-flex-item-align:stretch !important;align-self:stretch !important}}@media (min-width: 992px){.flex-lg-row{-ms-flex-direction:row !important;flex-direction:row !important}.flex-lg-column{-ms-flex-direction:column !important;flex-direction:column !important}.flex-lg-row-reverse{-ms-flex-direction:row-reverse !important;flex-direction:row-reverse !important}.flex-lg-column-reverse{-ms-flex-direction:column-reverse !important;flex-direction:column-reverse !important}.flex-lg-wrap{-ms-flex-wrap:wrap !important;flex-wrap:wrap !important}.flex-lg-nowrap{-ms-flex-wrap:nowrap !important;flex-wrap:nowrap !important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse !important;flex-wrap:wrap-reverse !important}.flex-lg-fill{-ms-flex:1 1 auto !important;flex:1 1 auto !important}.flex-lg-grow-0{-ms-flex-positive:0 !important;flex-grow:0 !important}.flex-lg-grow-1{-ms-flex-positive:1 !important;flex-grow:1 !important}.flex-lg-shrink-0{-ms-flex-negative:0 !important;flex-shrink:0 !important}.flex-lg-shrink-1{-ms-flex-negative:1 !important;flex-shrink:1 !important}.justify-content-lg-start{-ms-flex-pack:start !important;justify-content:flex-start !important}.justify-content-lg-end{-ms-flex-pack:end !important;justify-content:flex-end !important}.justify-content-lg-center{-ms-flex-pack:center !important;justify-content:center !important}.justify-content-lg-between{-ms-flex-pack:justify !important;justify-content:space-between !important}.justify-content-lg-around{-ms-flex-pack:distribute !important;justify-content:space-around !important}.align-items-lg-start{-ms-flex-align:start !important;align-items:flex-start !important}.align-items-lg-end{-ms-flex-align:end !important;align-items:flex-end !important}.align-items-lg-center{-ms-flex-align:center !important;align-items:center !important}.align-items-lg-baseline{-ms-flex-align:baseline !important;align-items:baseline !important}.align-items-lg-stretch{-ms-flex-align:stretch !important;align-items:stretch !important}.align-content-lg-start{-ms-flex-line-pack:start !important;align-content:flex-start !important}.align-content-lg-end{-ms-flex-line-pack:end !important;align-content:flex-end !important}.align-content-lg-center{-ms-flex-line-pack:center !important;align-content:center !important}.align-content-lg-between{-ms-flex-line-pack:justify !important;align-content:space-between !important}.align-content-lg-around{-ms-flex-line-pack:distribute !important;align-content:space-around !important}.align-content-lg-stretch{-ms-flex-line-pack:stretch !important;align-content:stretch !important}.align-self-lg-auto{-ms-flex-item-align:auto !important;align-self:auto !important}.align-self-lg-start{-ms-flex-item-align:start !important;align-self:flex-start !important}.align-self-lg-end{-ms-flex-item-align:end !important;align-self:flex-end !important}.align-self-lg-center{-ms-flex-item-align:center !important;align-self:center !important}.align-self-lg-baseline{-ms-flex-item-align:baseline !important;align-self:baseline !important}.align-self-lg-stretch{-ms-flex-item-align:stretch !important;align-self:stretch !important}}@media (min-width: 1200px){.flex-xl-row{-ms-flex-direction:row !important;flex-direction:row !important}.flex-xl-column{-ms-flex-direction:column !important;flex-direction:column !important}.flex-xl-row-reverse{-ms-flex-direction:row-reverse !important;flex-direction:row-reverse !important}.flex-xl-column-reverse{-ms-flex-direction:column-reverse !important;flex-direction:column-reverse !important}.flex-xl-wrap{-ms-flex-wrap:wrap !important;flex-wrap:wrap !important}.flex-xl-nowrap{-ms-flex-wrap:nowrap !important;flex-wrap:nowrap !important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse !important;flex-wrap:wrap-reverse !important}.flex-xl-fill{-ms-flex:1 1 auto !important;flex:1 1 auto !important}.flex-xl-grow-0{-ms-flex-positive:0 !important;flex-grow:0 !important}.flex-xl-grow-1{-ms-flex-positive:1 !important;flex-grow:1 !important}.flex-xl-shrink-0{-ms-flex-negative:0 !important;flex-shrink:0 !important}.flex-xl-shrink-1{-ms-flex-negative:1 !important;flex-shrink:1 !important}.justify-content-xl-start{-ms-flex-pack:start !important;justify-content:flex-start !important}.justify-content-xl-end{-ms-flex-pack:end !important;justify-content:flex-end !important}.justify-content-xl-center{-ms-flex-pack:center !important;justify-content:center !important}.justify-content-xl-between{-ms-flex-pack:justify !important;justify-content:space-between !important}.justify-content-xl-around{-ms-flex-pack:distribute !important;justify-content:space-around !important}.align-items-xl-start{-ms-flex-align:start !important;align-items:flex-start !important}.align-items-xl-end{-ms-flex-align:end !important;align-items:flex-end !important}.align-items-xl-center{-ms-flex-align:center !important;align-items:center !important}.align-items-xl-baseline{-ms-flex-align:baseline !important;align-items:baseline !important}.align-items-xl-stretch{-ms-flex-align:stretch !important;align-items:stretch !important}.align-content-xl-start{-ms-flex-line-pack:start !important;align-content:flex-start !important}.align-content-xl-end{-ms-flex-line-pack:end !important;align-content:flex-end !important}.align-content-xl-center{-ms-flex-line-pack:center !important;align-content:center !important}.align-content-xl-between{-ms-flex-line-pack:justify !important;align-content:space-between !important}.align-content-xl-around{-ms-flex-line-pack:distribute !important;align-content:space-around !important}.align-content-xl-stretch{-ms-flex-line-pack:stretch !important;align-content:stretch !important}.align-self-xl-auto{-ms-flex-item-align:auto !important;align-self:auto !important}.align-self-xl-start{-ms-flex-item-align:start !important;align-self:flex-start !important}.align-self-xl-end{-ms-flex-item-align:end !important;align-self:flex-end !important}.align-self-xl-center{-ms-flex-item-align:center !important;align-self:center !important}.align-self-xl-baseline{-ms-flex-item-align:baseline !important;align-self:baseline !important}.align-self-xl-stretch{-ms-flex-item-align:stretch !important;align-self:stretch !important}}.float-left{float:left !important}.float-right{float:right !important}.float-none{float:none !important}@media (min-width: 576px){.float-sm-left{float:left !important}.float-sm-right{float:right !important}.float-sm-none{float:none !important}}@media (min-width: 768px){.float-md-left{float:left !important}.float-md-right{float:right !important}.float-md-none{float:none !important}}@media (min-width: 992px){.float-lg-left{float:left !important}.float-lg-right{float:right !important}.float-lg-none{float:none !important}}@media (min-width: 1200px){.float-xl-left{float:left !important}.float-xl-right{float:right !important}.float-xl-none{float:none !important}}.overflow-auto{overflow:auto !important}.overflow-hidden{overflow:hidden !important}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:-webkit-sticky !important;position:sticky !important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports (position: -webkit-sticky) or (position: sticky){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 0.125rem 0.25rem rgba(0,0,0,0.075) !important}.shadow{box-shadow:0 0.5rem 1rem rgba(0,0,0,0.15) !important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,0.175) !important}.shadow-none{box-shadow:none !important}.w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.w-auto{width:auto !important}.h-25{height:25% !important}.h-50{height:50% !important}.h-75{height:75% !important}.h-100{height:100% !important}.h-auto{height:auto !important}.mw-100{max-width:100% !important}.mh-100{max-height:100% !important}.min-vw-100{min-width:100vw !important}.min-vh-100{min-height:100vh !important}.vw-100{width:100vw !important}.vh-100{height:100vh !important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:rgba(0,0,0,0)}.m-0{margin:0 !important}.mt-0,.my-0{margin-top:0 !important}.mr-0,.mx-0{margin-right:0 !important}.mb-0,.my-0{margin-bottom:0 !important}.ml-0,.mx-0{margin-left:0 !important}.m-1{margin:0.25rem !important}.mt-1,.my-1{margin-top:0.25rem !important}.mr-1,.mx-1{margin-right:0.25rem !important}.mb-1,.my-1{margin-bottom:0.25rem !important}.ml-1,.mx-1{margin-left:0.25rem !important}.m-2{margin:0.5rem !important}.mt-2,.my-2{margin-top:0.5rem !important}.mr-2,.mx-2{margin-right:0.5rem !important}.mb-2,.my-2{margin-bottom:0.5rem !important}.ml-2,.mx-2{margin-left:0.5rem !important}.m-3{margin:1rem !important}.mt-3,.my-3{margin-top:1rem !important}.mr-3,.mx-3{margin-right:1rem !important}.mb-3,.my-3{margin-bottom:1rem !important}.ml-3,.mx-3{margin-left:1rem !important}.m-4{margin:1.5rem !important}.mt-4,.my-4{margin-top:1.5rem !important}.mr-4,.mx-4{margin-right:1.5rem !important}.mb-4,.my-4{margin-bottom:1.5rem !important}.ml-4,.mx-4{margin-left:1.5rem !important}.m-5{margin:3rem !important}.mt-5,.my-5{margin-top:3rem !important}.mr-5,.mx-5{margin-right:3rem !important}.mb-5,.my-5{margin-bottom:3rem !important}.ml-5,.mx-5{margin-left:3rem !important}.p-0{padding:0 !important}.pt-0,.py-0{padding-top:0 !important}.pr-0,.px-0{padding-right:0 !important}.pb-0,.py-0{padding-bottom:0 !important}.pl-0,.px-0{padding-left:0 !important}.p-1{padding:0.25rem !important}.pt-1,.py-1{padding-top:0.25rem !important}.pr-1,.px-1{padding-right:0.25rem !important}.pb-1,.py-1{padding-bottom:0.25rem !important}.pl-1,.px-1{padding-left:0.25rem !important}.p-2{padding:0.5rem !important}.pt-2,.py-2{padding-top:0.5rem !important}.pr-2,.px-2{padding-right:0.5rem !important}.pb-2,.py-2{padding-bottom:0.5rem !important}.pl-2,.px-2{padding-left:0.5rem !important}.p-3{padding:1rem !important}.pt-3,.py-3{padding-top:1rem !important}.pr-3,.px-3{padding-right:1rem !important}.pb-3,.py-3{padding-bottom:1rem !important}.pl-3,.px-3{padding-left:1rem !important}.p-4{padding:1.5rem !important}.pt-4,.py-4{padding-top:1.5rem !important}.pr-4,.px-4{padding-right:1.5rem !important}.pb-4,.py-4{padding-bottom:1.5rem !important}.pl-4,.px-4{padding-left:1.5rem !important}.p-5{padding:3rem !important}.pt-5,.py-5{padding-top:3rem !important}.pr-5,.px-5{padding-right:3rem !important}.pb-5,.py-5{padding-bottom:3rem !important}.pl-5,.px-5{padding-left:3rem !important}.m-n1{margin:-0.25rem !important}.mt-n1,.my-n1{margin-top:-0.25rem !important}.mr-n1,.mx-n1{margin-right:-0.25rem !important}.mb-n1,.my-n1{margin-bottom:-0.25rem !important}.ml-n1,.mx-n1{margin-left:-0.25rem !important}.m-n2{margin:-0.5rem !important}.mt-n2,.my-n2{margin-top:-0.5rem !important}.mr-n2,.mx-n2{margin-right:-0.5rem !important}.mb-n2,.my-n2{margin-bottom:-0.5rem !important}.ml-n2,.mx-n2{margin-left:-0.5rem !important}.m-n3{margin:-1rem !important}.mt-n3,.my-n3{margin-top:-1rem !important}.mr-n3,.mx-n3{margin-right:-1rem !important}.mb-n3,.my-n3{margin-bottom:-1rem !important}.ml-n3,.mx-n3{margin-left:-1rem !important}.m-n4{margin:-1.5rem !important}.mt-n4,.my-n4{margin-top:-1.5rem !important}.mr-n4,.mx-n4{margin-right:-1.5rem !important}.mb-n4,.my-n4{margin-bottom:-1.5rem !important}.ml-n4,.mx-n4{margin-left:-1.5rem !important}.m-n5{margin:-3rem !important}.mt-n5,.my-n5{margin-top:-3rem !important}.mr-n5,.mx-n5{margin-right:-3rem !important}.mb-n5,.my-n5{margin-bottom:-3rem !important}.ml-n5,.mx-n5{margin-left:-3rem !important}.m-auto{margin:auto !important}.mt-auto,.my-auto{margin-top:auto !important}.mr-auto,.mx-auto{margin-right:auto !important}.mb-auto,.my-auto{margin-bottom:auto !important}.ml-auto,.mx-auto{margin-left:auto !important}@media (min-width: 576px){.m-sm-0{margin:0 !important}.mt-sm-0,.my-sm-0{margin-top:0 !important}.mr-sm-0,.mx-sm-0{margin-right:0 !important}.mb-sm-0,.my-sm-0{margin-bottom:0 !important}.ml-sm-0,.mx-sm-0{margin-left:0 !important}.m-sm-1{margin:0.25rem !important}.mt-sm-1,.my-sm-1{margin-top:0.25rem !important}.mr-sm-1,.mx-sm-1{margin-right:0.25rem !important}.mb-sm-1,.my-sm-1{margin-bottom:0.25rem !important}.ml-sm-1,.mx-sm-1{margin-left:0.25rem !important}.m-sm-2{margin:0.5rem !important}.mt-sm-2,.my-sm-2{margin-top:0.5rem !important}.mr-sm-2,.mx-sm-2{margin-right:0.5rem !important}.mb-sm-2,.my-sm-2{margin-bottom:0.5rem !important}.ml-sm-2,.mx-sm-2{margin-left:0.5rem !important}.m-sm-3{margin:1rem !important}.mt-sm-3,.my-sm-3{margin-top:1rem !important}.mr-sm-3,.mx-sm-3{margin-right:1rem !important}.mb-sm-3,.my-sm-3{margin-bottom:1rem !important}.ml-sm-3,.mx-sm-3{margin-left:1rem !important}.m-sm-4{margin:1.5rem !important}.mt-sm-4,.my-sm-4{margin-top:1.5rem !important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem !important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem !important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem !important}.m-sm-5{margin:3rem !important}.mt-sm-5,.my-sm-5{margin-top:3rem !important}.mr-sm-5,.mx-sm-5{margin-right:3rem !important}.mb-sm-5,.my-sm-5{margin-bottom:3rem !important}.ml-sm-5,.mx-sm-5{margin-left:3rem !important}.p-sm-0{padding:0 !important}.pt-sm-0,.py-sm-0{padding-top:0 !important}.pr-sm-0,.px-sm-0{padding-right:0 !important}.pb-sm-0,.py-sm-0{padding-bottom:0 !important}.pl-sm-0,.px-sm-0{padding-left:0 !important}.p-sm-1{padding:0.25rem !important}.pt-sm-1,.py-sm-1{padding-top:0.25rem !important}.pr-sm-1,.px-sm-1{padding-right:0.25rem !important}.pb-sm-1,.py-sm-1{padding-bottom:0.25rem !important}.pl-sm-1,.px-sm-1{padding-left:0.25rem !important}.p-sm-2{padding:0.5rem !important}.pt-sm-2,.py-sm-2{padding-top:0.5rem !important}.pr-sm-2,.px-sm-2{padding-right:0.5rem !important}.pb-sm-2,.py-sm-2{padding-bottom:0.5rem !important}.pl-sm-2,.px-sm-2{padding-left:0.5rem !important}.p-sm-3{padding:1rem !important}.pt-sm-3,.py-sm-3{padding-top:1rem !important}.pr-sm-3,.px-sm-3{padding-right:1rem !important}.pb-sm-3,.py-sm-3{padding-bottom:1rem !important}.pl-sm-3,.px-sm-3{padding-left:1rem !important}.p-sm-4{padding:1.5rem !important}.pt-sm-4,.py-sm-4{padding-top:1.5rem !important}.pr-sm-4,.px-sm-4{padding-right:1.5rem !important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem !important}.pl-sm-4,.px-sm-4{padding-left:1.5rem !important}.p-sm-5{padding:3rem !important}.pt-sm-5,.py-sm-5{padding-top:3rem !important}.pr-sm-5,.px-sm-5{padding-right:3rem !important}.pb-sm-5,.py-sm-5{padding-bottom:3rem !important}.pl-sm-5,.px-sm-5{padding-left:3rem !important}.m-sm-n1{margin:-0.25rem !important}.mt-sm-n1,.my-sm-n1{margin-top:-0.25rem !important}.mr-sm-n1,.mx-sm-n1{margin-right:-0.25rem !important}.mb-sm-n1,.my-sm-n1{margin-bottom:-0.25rem !important}.ml-sm-n1,.mx-sm-n1{margin-left:-0.25rem !important}.m-sm-n2{margin:-0.5rem !important}.mt-sm-n2,.my-sm-n2{margin-top:-0.5rem !important}.mr-sm-n2,.mx-sm-n2{margin-right:-0.5rem !important}.mb-sm-n2,.my-sm-n2{margin-bottom:-0.5rem !important}.ml-sm-n2,.mx-sm-n2{margin-left:-0.5rem !important}.m-sm-n3{margin:-1rem !important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem !important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem !important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem !important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem !important}.m-sm-n4{margin:-1.5rem !important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem !important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem !important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem !important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem !important}.m-sm-n5{margin:-3rem !important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem !important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem !important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem !important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem !important}.m-sm-auto{margin:auto !important}.mt-sm-auto,.my-sm-auto{margin-top:auto !important}.mr-sm-auto,.mx-sm-auto{margin-right:auto !important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto !important}.ml-sm-auto,.mx-sm-auto{margin-left:auto !important}}@media (min-width: 768px){.m-md-0{margin:0 !important}.mt-md-0,.my-md-0{margin-top:0 !important}.mr-md-0,.mx-md-0{margin-right:0 !important}.mb-md-0,.my-md-0{margin-bottom:0 !important}.ml-md-0,.mx-md-0{margin-left:0 !important}.m-md-1{margin:0.25rem !important}.mt-md-1,.my-md-1{margin-top:0.25rem !important}.mr-md-1,.mx-md-1{margin-right:0.25rem !important}.mb-md-1,.my-md-1{margin-bottom:0.25rem !important}.ml-md-1,.mx-md-1{margin-left:0.25rem !important}.m-md-2{margin:0.5rem !important}.mt-md-2,.my-md-2{margin-top:0.5rem !important}.mr-md-2,.mx-md-2{margin-right:0.5rem !important}.mb-md-2,.my-md-2{margin-bottom:0.5rem !important}.ml-md-2,.mx-md-2{margin-left:0.5rem !important}.m-md-3{margin:1rem !important}.mt-md-3,.my-md-3{margin-top:1rem !important}.mr-md-3,.mx-md-3{margin-right:1rem !important}.mb-md-3,.my-md-3{margin-bottom:1rem !important}.ml-md-3,.mx-md-3{margin-left:1rem !important}.m-md-4{margin:1.5rem !important}.mt-md-4,.my-md-4{margin-top:1.5rem !important}.mr-md-4,.mx-md-4{margin-right:1.5rem !important}.mb-md-4,.my-md-4{margin-bottom:1.5rem !important}.ml-md-4,.mx-md-4{margin-left:1.5rem !important}.m-md-5{margin:3rem !important}.mt-md-5,.my-md-5{margin-top:3rem !important}.mr-md-5,.mx-md-5{margin-right:3rem !important}.mb-md-5,.my-md-5{margin-bottom:3rem !important}.ml-md-5,.mx-md-5{margin-left:3rem !important}.p-md-0{padding:0 !important}.pt-md-0,.py-md-0{padding-top:0 !important}.pr-md-0,.px-md-0{padding-right:0 !important}.pb-md-0,.py-md-0{padding-bottom:0 !important}.pl-md-0,.px-md-0{padding-left:0 !important}.p-md-1{padding:0.25rem !important}.pt-md-1,.py-md-1{padding-top:0.25rem !important}.pr-md-1,.px-md-1{padding-right:0.25rem !important}.pb-md-1,.py-md-1{padding-bottom:0.25rem !important}.pl-md-1,.px-md-1{padding-left:0.25rem !important}.p-md-2{padding:0.5rem !important}.pt-md-2,.py-md-2{padding-top:0.5rem !important}.pr-md-2,.px-md-2{padding-right:0.5rem !important}.pb-md-2,.py-md-2{padding-bottom:0.5rem !important}.pl-md-2,.px-md-2{padding-left:0.5rem !important}.p-md-3{padding:1rem !important}.pt-md-3,.py-md-3{padding-top:1rem !important}.pr-md-3,.px-md-3{padding-right:1rem !important}.pb-md-3,.py-md-3{padding-bottom:1rem !important}.pl-md-3,.px-md-3{padding-left:1rem !important}.p-md-4{padding:1.5rem !important}.pt-md-4,.py-md-4{padding-top:1.5rem !important}.pr-md-4,.px-md-4{padding-right:1.5rem !important}.pb-md-4,.py-md-4{padding-bottom:1.5rem !important}.pl-md-4,.px-md-4{padding-left:1.5rem !important}.p-md-5{padding:3rem !important}.pt-md-5,.py-md-5{padding-top:3rem !important}.pr-md-5,.px-md-5{padding-right:3rem !important}.pb-md-5,.py-md-5{padding-bottom:3rem !important}.pl-md-5,.px-md-5{padding-left:3rem !important}.m-md-n1{margin:-0.25rem !important}.mt-md-n1,.my-md-n1{margin-top:-0.25rem !important}.mr-md-n1,.mx-md-n1{margin-right:-0.25rem !important}.mb-md-n1,.my-md-n1{margin-bottom:-0.25rem !important}.ml-md-n1,.mx-md-n1{margin-left:-0.25rem !important}.m-md-n2{margin:-0.5rem !important}.mt-md-n2,.my-md-n2{margin-top:-0.5rem !important}.mr-md-n2,.mx-md-n2{margin-right:-0.5rem !important}.mb-md-n2,.my-md-n2{margin-bottom:-0.5rem !important}.ml-md-n2,.mx-md-n2{margin-left:-0.5rem !important}.m-md-n3{margin:-1rem !important}.mt-md-n3,.my-md-n3{margin-top:-1rem !important}.mr-md-n3,.mx-md-n3{margin-right:-1rem !important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem !important}.ml-md-n3,.mx-md-n3{margin-left:-1rem !important}.m-md-n4{margin:-1.5rem !important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem !important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem !important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem !important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem !important}.m-md-n5{margin:-3rem !important}.mt-md-n5,.my-md-n5{margin-top:-3rem !important}.mr-md-n5,.mx-md-n5{margin-right:-3rem !important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem !important}.ml-md-n5,.mx-md-n5{margin-left:-3rem !important}.m-md-auto{margin:auto !important}.mt-md-auto,.my-md-auto{margin-top:auto !important}.mr-md-auto,.mx-md-auto{margin-right:auto !important}.mb-md-auto,.my-md-auto{margin-bottom:auto !important}.ml-md-auto,.mx-md-auto{margin-left:auto !important}}@media (min-width: 992px){.m-lg-0{margin:0 !important}.mt-lg-0,.my-lg-0{margin-top:0 !important}.mr-lg-0,.mx-lg-0{margin-right:0 !important}.mb-lg-0,.my-lg-0{margin-bottom:0 !important}.ml-lg-0,.mx-lg-0{margin-left:0 !important}.m-lg-1{margin:0.25rem !important}.mt-lg-1,.my-lg-1{margin-top:0.25rem !important}.mr-lg-1,.mx-lg-1{margin-right:0.25rem !important}.mb-lg-1,.my-lg-1{margin-bottom:0.25rem !important}.ml-lg-1,.mx-lg-1{margin-left:0.25rem !important}.m-lg-2{margin:0.5rem !important}.mt-lg-2,.my-lg-2{margin-top:0.5rem !important}.mr-lg-2,.mx-lg-2{margin-right:0.5rem !important}.mb-lg-2,.my-lg-2{margin-bottom:0.5rem !important}.ml-lg-2,.mx-lg-2{margin-left:0.5rem !important}.m-lg-3{margin:1rem !important}.mt-lg-3,.my-lg-3{margin-top:1rem !important}.mr-lg-3,.mx-lg-3{margin-right:1rem !important}.mb-lg-3,.my-lg-3{margin-bottom:1rem !important}.ml-lg-3,.mx-lg-3{margin-left:1rem !important}.m-lg-4{margin:1.5rem !important}.mt-lg-4,.my-lg-4{margin-top:1.5rem !important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem !important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem !important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem !important}.m-lg-5{margin:3rem !important}.mt-lg-5,.my-lg-5{margin-top:3rem !important}.mr-lg-5,.mx-lg-5{margin-right:3rem !important}.mb-lg-5,.my-lg-5{margin-bottom:3rem !important}.ml-lg-5,.mx-lg-5{margin-left:3rem !important}.p-lg-0{padding:0 !important}.pt-lg-0,.py-lg-0{padding-top:0 !important}.pr-lg-0,.px-lg-0{padding-right:0 !important}.pb-lg-0,.py-lg-0{padding-bottom:0 !important}.pl-lg-0,.px-lg-0{padding-left:0 !important}.p-lg-1{padding:0.25rem !important}.pt-lg-1,.py-lg-1{padding-top:0.25rem !important}.pr-lg-1,.px-lg-1{padding-right:0.25rem !important}.pb-lg-1,.py-lg-1{padding-bottom:0.25rem !important}.pl-lg-1,.px-lg-1{padding-left:0.25rem !important}.p-lg-2{padding:0.5rem !important}.pt-lg-2,.py-lg-2{padding-top:0.5rem !important}.pr-lg-2,.px-lg-2{padding-right:0.5rem !important}.pb-lg-2,.py-lg-2{padding-bottom:0.5rem !important}.pl-lg-2,.px-lg-2{padding-left:0.5rem !important}.p-lg-3{padding:1rem !important}.pt-lg-3,.py-lg-3{padding-top:1rem !important}.pr-lg-3,.px-lg-3{padding-right:1rem !important}.pb-lg-3,.py-lg-3{padding-bottom:1rem !important}.pl-lg-3,.px-lg-3{padding-left:1rem !important}.p-lg-4{padding:1.5rem !important}.pt-lg-4,.py-lg-4{padding-top:1.5rem !important}.pr-lg-4,.px-lg-4{padding-right:1.5rem !important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem !important}.pl-lg-4,.px-lg-4{padding-left:1.5rem !important}.p-lg-5{padding:3rem !important}.pt-lg-5,.py-lg-5{padding-top:3rem !important}.pr-lg-5,.px-lg-5{padding-right:3rem !important}.pb-lg-5,.py-lg-5{padding-bottom:3rem !important}.pl-lg-5,.px-lg-5{padding-left:3rem !important}.m-lg-n1{margin:-0.25rem !important}.mt-lg-n1,.my-lg-n1{margin-top:-0.25rem !important}.mr-lg-n1,.mx-lg-n1{margin-right:-0.25rem !important}.mb-lg-n1,.my-lg-n1{margin-bottom:-0.25rem !important}.ml-lg-n1,.mx-lg-n1{margin-left:-0.25rem !important}.m-lg-n2{margin:-0.5rem !important}.mt-lg-n2,.my-lg-n2{margin-top:-0.5rem !important}.mr-lg-n2,.mx-lg-n2{margin-right:-0.5rem !important}.mb-lg-n2,.my-lg-n2{margin-bottom:-0.5rem !important}.ml-lg-n2,.mx-lg-n2{margin-left:-0.5rem !important}.m-lg-n3{margin:-1rem !important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem !important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem !important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem !important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem !important}.m-lg-n4{margin:-1.5rem !important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem !important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem !important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem !important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem !important}.m-lg-n5{margin:-3rem !important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem !important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem !important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem !important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem !important}.m-lg-auto{margin:auto !important}.mt-lg-auto,.my-lg-auto{margin-top:auto !important}.mr-lg-auto,.mx-lg-auto{margin-right:auto !important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto !important}.ml-lg-auto,.mx-lg-auto{margin-left:auto !important}}@media (min-width: 1200px){.m-xl-0{margin:0 !important}.mt-xl-0,.my-xl-0{margin-top:0 !important}.mr-xl-0,.mx-xl-0{margin-right:0 !important}.mb-xl-0,.my-xl-0{margin-bottom:0 !important}.ml-xl-0,.mx-xl-0{margin-left:0 !important}.m-xl-1{margin:0.25rem !important}.mt-xl-1,.my-xl-1{margin-top:0.25rem !important}.mr-xl-1,.mx-xl-1{margin-right:0.25rem !important}.mb-xl-1,.my-xl-1{margin-bottom:0.25rem !important}.ml-xl-1,.mx-xl-1{margin-left:0.25rem !important}.m-xl-2{margin:0.5rem !important}.mt-xl-2,.my-xl-2{margin-top:0.5rem !important}.mr-xl-2,.mx-xl-2{margin-right:0.5rem !important}.mb-xl-2,.my-xl-2{margin-bottom:0.5rem !important}.ml-xl-2,.mx-xl-2{margin-left:0.5rem !important}.m-xl-3{margin:1rem !important}.mt-xl-3,.my-xl-3{margin-top:1rem !important}.mr-xl-3,.mx-xl-3{margin-right:1rem !important}.mb-xl-3,.my-xl-3{margin-bottom:1rem !important}.ml-xl-3,.mx-xl-3{margin-left:1rem !important}.m-xl-4{margin:1.5rem !important}.mt-xl-4,.my-xl-4{margin-top:1.5rem !important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem !important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem !important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem !important}.m-xl-5{margin:3rem !important}.mt-xl-5,.my-xl-5{margin-top:3rem !important}.mr-xl-5,.mx-xl-5{margin-right:3rem !important}.mb-xl-5,.my-xl-5{margin-bottom:3rem !important}.ml-xl-5,.mx-xl-5{margin-left:3rem !important}.p-xl-0{padding:0 !important}.pt-xl-0,.py-xl-0{padding-top:0 !important}.pr-xl-0,.px-xl-0{padding-right:0 !important}.pb-xl-0,.py-xl-0{padding-bottom:0 !important}.pl-xl-0,.px-xl-0{padding-left:0 !important}.p-xl-1{padding:0.25rem !important}.pt-xl-1,.py-xl-1{padding-top:0.25rem !important}.pr-xl-1,.px-xl-1{padding-right:0.25rem !important}.pb-xl-1,.py-xl-1{padding-bottom:0.25rem !important}.pl-xl-1,.px-xl-1{padding-left:0.25rem !important}.p-xl-2{padding:0.5rem !important}.pt-xl-2,.py-xl-2{padding-top:0.5rem !important}.pr-xl-2,.px-xl-2{padding-right:0.5rem !important}.pb-xl-2,.py-xl-2{padding-bottom:0.5rem !important}.pl-xl-2,.px-xl-2{padding-left:0.5rem !important}.p-xl-3{padding:1rem !important}.pt-xl-3,.py-xl-3{padding-top:1rem !important}.pr-xl-3,.px-xl-3{padding-right:1rem !important}.pb-xl-3,.py-xl-3{padding-bottom:1rem !important}.pl-xl-3,.px-xl-3{padding-left:1rem !important}.p-xl-4{padding:1.5rem !important}.pt-xl-4,.py-xl-4{padding-top:1.5rem !important}.pr-xl-4,.px-xl-4{padding-right:1.5rem !important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem !important}.pl-xl-4,.px-xl-4{padding-left:1.5rem !important}.p-xl-5{padding:3rem !important}.pt-xl-5,.py-xl-5{padding-top:3rem !important}.pr-xl-5,.px-xl-5{padding-right:3rem !important}.pb-xl-5,.py-xl-5{padding-bottom:3rem !important}.pl-xl-5,.px-xl-5{padding-left:3rem !important}.m-xl-n1{margin:-0.25rem !important}.mt-xl-n1,.my-xl-n1{margin-top:-0.25rem !important}.mr-xl-n1,.mx-xl-n1{margin-right:-0.25rem !important}.mb-xl-n1,.my-xl-n1{margin-bottom:-0.25rem !important}.ml-xl-n1,.mx-xl-n1{margin-left:-0.25rem !important}.m-xl-n2{margin:-0.5rem !important}.mt-xl-n2,.my-xl-n2{margin-top:-0.5rem !important}.mr-xl-n2,.mx-xl-n2{margin-right:-0.5rem !important}.mb-xl-n2,.my-xl-n2{margin-bottom:-0.5rem !important}.ml-xl-n2,.mx-xl-n2{margin-left:-0.5rem !important}.m-xl-n3{margin:-1rem !important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem !important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem !important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem !important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem !important}.m-xl-n4{margin:-1.5rem !important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem !important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem !important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem !important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem !important}.m-xl-n5{margin:-3rem !important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem !important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem !important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem !important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem !important}.m-xl-auto{margin:auto !important}.mt-xl-auto,.my-xl-auto{margin-top:auto !important}.mr-xl-auto,.mx-xl-auto{margin-right:auto !important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto !important}.ml-xl-auto,.mx-xl-auto{margin-left:auto !important}}.text-monospace{font-family:SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !important}.text-justify{text-align:justify !important}.text-wrap{white-space:normal !important}.text-nowrap{white-space:nowrap !important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left !important}.text-right{text-align:right !important}.text-center{text-align:center !important}@media (min-width: 576px){.text-sm-left{text-align:left !important}.text-sm-right{text-align:right !important}.text-sm-center{text-align:center !important}}@media (min-width: 768px){.text-md-left{text-align:left !important}.text-md-right{text-align:right !important}.text-md-center{text-align:center !important}}@media (min-width: 992px){.text-lg-left{text-align:left !important}.text-lg-right{text-align:right !important}.text-lg-center{text-align:center !important}}@media (min-width: 1200px){.text-xl-left{text-align:left !important}.text-xl-right{text-align:right !important}.text-xl-center{text-align:center !important}}.text-lowercase{text-transform:lowercase !important}.text-uppercase{text-transform:uppercase !important}.text-capitalize{text-transform:capitalize !important}.font-weight-light{font-weight:300 !important}.font-weight-lighter{font-weight:lighter !important}.font-weight-normal{font-weight:400 !important}.font-weight-bold{font-weight:700 !important}.font-weight-bolder{font-weight:bolder !important}.font-italic{font-style:italic !important}.text-white{color:#fff !important}.text-primary{color:#007bff !important}a.text-primary:hover,a.text-primary:focus{color:#0056b3 !important}.text-secondary{color:#6c757d !important}a.text-secondary:hover,a.text-secondary:focus{color:#494f54 !important}.text-success{color:#28a745 !important}a.text-success:hover,a.text-success:focus{color:#19692c !important}.text-info{color:#17a2b8 !important}a.text-info:hover,a.text-info:focus{color:#0f6674 !important}.text-warning{color:#ffc107 !important}a.text-warning:hover,a.text-warning:focus{color:#ba8b00 !important}.text-danger{color:#dc3545 !important}a.text-danger:hover,a.text-danger:focus{color:#a71d2a !important}.text-light{color:#f8f9fa !important}a.text-light:hover,a.text-light:focus{color:#cbd3da !important}.text-dark{color:#343a40 !important}a.text-dark:hover,a.text-dark:focus{color:#121416 !important}.text-body{color:#212529 !important}.text-muted{color:#6c757d !important}.text-black-50{color:rgba(0,0,0,0.5) !important}.text-white-50{color:rgba(255,255,255,0.5) !important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none !important}.text-break{word-break:break-word !important;overflow-wrap:break-word !important}.text-reset{color:inherit !important}.visible{visibility:visible !important}.invisible{visibility:hidden !important}@media print{*,*::before,*::after{text-shadow:none !important;box-shadow:none !important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap !important}pre,blockquote{border:1px solid #adb5bd;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px !important}.container{min-width:992px !important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #dee2e6 !important}.table-dark{color:inherit}.table-dark th,.table-dark td,.table-dark thead th,.table-dark tbody+tbody{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}} - -.toolbar{background:none;border-color:#d9d9d9;background-color:#f5f5f5;border-bottom:1px solid #ddd;font-size:16px;line-height:31px;vertical-align:middle}.toolbar .math{font-size:17px}.toolbar>div{display:inline-block;margin-right:6px}.toolbar>div>*{padding:3px 3px 3px 3px;display:inline-block;min-width:1.2em;text-align:center;height:100%;cursor:pointer}.toolbar>div>*>.dropdown-toggle{display:inline-block;height:100%}.toolbar>div>*:hover{background-color:#d9d9d9;border-style:none !important} - -.CodeMirror{font-family:monospace;height:300px;color:black;direction:ltr}.CodeMirror-lines{padding:4px 0}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{padding:0 4px}.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{background-color:white}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:black}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid black;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{width:auto;border:0 !important;background:#7e7}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor-mark{background-color:rgba(20,255,20,0.5);-webkit-animation:blink 1.06s steps(1) infinite;-moz-animation:blink 1.06s steps(1) infinite;animation:blink 1.06s steps(1) infinite}.cm-animate-fat-cursor{width:auto;border:0;-webkit-animation:blink 1.06s steps(1) infinite;-moz-animation:blink 1.06s steps(1) infinite;animation:blink 1.06s steps(1) infinite;background-color:#7e7}@-moz-keyframes blink{0%{}50%{background-color:transparent}100%{}}@-webkit-keyframes blink{0%{}50%{background-color:transparent}100%{}}@keyframes blink{0%{}50%{background-color:transparent}100%{}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{position:absolute;left:0;right:0;top:-50px;bottom:0;overflow:hidden}.CodeMirror-ruler{border-left:1px solid #ccc;top:0;bottom:0;position:absolute}.cm-s-default .cm-header{color:blue}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:bold}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-variable-3,.cm-s-default .cm-type{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta{color:#555}.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-s-default .cm-error{color:#f00}.cm-invalidchar{color:#f00}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:rgba(255,150,0,0.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:white}.CodeMirror-scroll{overflow:scroll !important;margin-bottom:-30px;margin-right:-30px;padding-bottom:30px;height:100%;outline:none;position:relative}.CodeMirror-sizer{position:relative;border-right:30px solid transparent}.CodeMirror-vscrollbar,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{position:absolute;z-index:6;display:none}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;min-height:100%;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;vertical-align:top;margin-bottom:-30px}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:none !important;border:none !important}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;border-width:0;background:transparent;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:transparent;-webkit-font-variant-ligatures:contextual;font-variant-ligatures:contextual}.CodeMirror-wrap pre.CodeMirror-line,.CodeMirror-wrap pre.CodeMirror-line-like{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;left:0;right:0;top:0;bottom:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;padding:0.1px}.CodeMirror-rtl pre{direction:rtl}.CodeMirror-code{outline:none}.CodeMirror-scroll,.CodeMirror-sizer,.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber{-moz-box-sizing:content-box;box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-cursor{position:absolute;pointer-events:none}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-focused div.CodeMirror-cursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:rgba(255,255,0,0.4)}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:''}span.CodeMirror-selectedtext{background:none} - -.cm-s-eclipse span.cm-meta{color:#FF1717}.cm-s-eclipse span.cm-keyword{line-height:1em;font-weight:bold;color:#7F0055}.cm-s-eclipse span.cm-atom{color:#219}.cm-s-eclipse span.cm-number{color:#164}.cm-s-eclipse span.cm-def{color:#00f}.cm-s-eclipse span.cm-variable{color:black}.cm-s-eclipse span.cm-variable-2{color:#0000C0}.cm-s-eclipse span.cm-variable-3,.cm-s-eclipse span.cm-type{color:#0000C0}.cm-s-eclipse span.cm-property{color:black}.cm-s-eclipse span.cm-operator{color:black}.cm-s-eclipse span.cm-comment{color:#3F7F5F}.cm-s-eclipse span.cm-string{color:#2A00FF}.cm-s-eclipse span.cm-string-2{color:#f50}.cm-s-eclipse span.cm-qualifier{color:#555}.cm-s-eclipse span.cm-builtin{color:#30a}.cm-s-eclipse span.cm-bracket{color:#cc7}.cm-s-eclipse span.cm-tag{color:#170}.cm-s-eclipse span.cm-attribute{color:#00c}.cm-s-eclipse span.cm-link{color:#219}.cm-s-eclipse span.cm-error{color:#f00}.cm-s-eclipse .CodeMirror-activeline-background{background:#e8f2ff}.cm-s-eclipse .CodeMirror-matchingbracket{outline:1px solid grey;color:black !important} - -.CodeMirror-hints{position:absolute;z-index:10;overflow:hidden;list-style:none;margin:0;padding:2px;-webkit-box-shadow:2px 3px 5px rgba(0,0,0,0.2);-moz-box-shadow:2px 3px 5px rgba(0,0,0,0.2);box-shadow:2px 3px 5px rgba(0,0,0,0.2);border-radius:3px;border:1px solid silver;background:white;font-size:90%;font-family:monospace;max-height:20em;overflow-y:auto}.CodeMirror-hint{margin:0;padding:0 4px;border-radius:2px;white-space:pre;color:black;cursor:pointer}li.CodeMirror-hint-active{background:#08f;color:white} - -.CodeMirror-lint-markers{width:16px}.CodeMirror-lint-tooltip{background-color:#ffd;border:1px solid black;border-radius:4px 4px 4px 4px;color:black;font-family:monospace;font-size:10pt;overflow:hidden;padding:2px 5px;position:fixed;white-space:pre;white-space:pre-wrap;z-index:100;max-width:600px;opacity:0;transition:opacity .4s;-moz-transition:opacity .4s;-webkit-transition:opacity .4s;-o-transition:opacity .4s;-ms-transition:opacity .4s}.CodeMirror-lint-mark-error,.CodeMirror-lint-mark-warning{background-position:left bottom;background-repeat:repeat-x}.CodeMirror-lint-mark-error{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJDw4cOCW1/KIAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAHElEQVQI12NggIL/DAz/GdA5/xkY/qPKMDAwAADLZwf5rvm+LQAAAABJRU5ErkJggg==")}.CodeMirror-lint-mark-warning{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJFhQXEbhTg7YAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAMklEQVQI12NkgIIvJ3QXMjAwdDN+OaEbysDA4MPAwNDNwMCwiOHLCd1zX07o6kBVGQEAKBANtobskNMAAAAASUVORK5CYII=")}.CodeMirror-lint-marker-error,.CodeMirror-lint-marker-warning{background-position:center center;background-repeat:no-repeat;cursor:pointer;display:inline-block;height:16px;width:16px;vertical-align:middle;position:relative}.CodeMirror-lint-message-error,.CodeMirror-lint-message-warning{padding-left:18px;background-position:top left;background-repeat:no-repeat}.CodeMirror-lint-marker-error,.CodeMirror-lint-message-error{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAHlBMVEW7AAC7AACxAAC7AAC7AAAAAAC4AAC5AAD///+7AAAUdclpAAAABnRSTlMXnORSiwCK0ZKSAAAATUlEQVR42mWPOQ7AQAgDuQLx/z8csYRmPRIFIwRGnosRrpamvkKi0FTIiMASR3hhKW+hAN6/tIWhu9PDWiTGNEkTtIOucA5Oyr9ckPgAWm0GPBog6v4AAAAASUVORK5CYII=")}.CodeMirror-lint-marker-warning,.CodeMirror-lint-message-warning{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAANlBMVEX/uwDvrwD/uwD/uwD/uwD/uwD/uwD/uwD/uwD6twD/uwAAAADurwD2tQD7uAD+ugAAAAD/uwDhmeTRAAAADHRSTlMJ8mN1EYcbmiixgACm7WbuAAAAVklEQVR42n3PUQqAIBBFUU1LLc3u/jdbOJoW1P08DA9Gba8+YWJ6gNJoNYIBzAA2chBth5kLmG9YUoG0NHAUwFXwO9LuBQL1giCQb8gC9Oro2vp5rncCIY8L8uEx5ZkAAAAASUVORK5CYII=")}.CodeMirror-lint-marker-multiple{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAMAAADzjKfhAAAACVBMVEUAAAAAAAC/v7914kyHAAAAAXRSTlMAQObYZgAAACNJREFUeNo1ioEJAAAIwmz/H90iFFSGJgFMe3gaLZ0od+9/AQZ0ADosbYraAAAAAElFTkSuQmCC");background-repeat:no-repeat;background-position:right bottom;width:100%;height:100%} - -/*! - * Copyright (c) HANDSONCODE sp. z o. o. - * - * HANDSONTABLE is a software distributed by HANDSONCODE sp. z o. o., - * a Polish corporation, based in Gdynia, Poland, at 96/98 Aleja Zwycięstwa, - * registered with the National Court Register under number 538651, - * EU tax ID number: PL5862294002, share capital: PLN 62,800.00. - * - * This software is protected by applicable copyright laws, including - * international treaties, and dual-licensed – depending on whether - * your use is intended for or may result in commercial advantage - * or monetary compensation (commercial purposes), or not. - * - * If your use involves only such purposes as research, private study, - * evaluation and the like, you agree to be bound by the terms included - * in the "handsontable-non-commercial-license.pdf" file, available - * in the main directory of this software repository. - * - * By installing, copying, or otherwise using this software for - * commercial purposes, you agree to be bound by the terms included - * in the "handsontable-general-terms.pdf" file, available in the main - * directory of this software repository. - * - * HANDSONCODE PROVIDES THIS SOFTWARE ON AN "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND. IN NO EVENT - * AND UNDER NO LEGAL THEORY, SHALL HANDSONCODE BE LIABLE - * TO YOU FOR DAMAGES, INCLUDING ANY DIRECT, INDIRECT, SPECIAL, - * INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING - * FROM USE OR INABILITY TO USE THIS SOFTWARE. - * - * Version: 7.4.2 - * Release date: 19/02/2020 (built at 19/02/2020 13:44:06) - */.handsontable .table th,.handsontable .table td{border-top:none}.handsontable tr{background:#fff}.handsontable td{background-color:inherit}.handsontable .table caption+thead tr:first-child th,.handsontable .table caption+thead tr:first-child td,.handsontable .table colgroup+thead tr:first-child th,.handsontable .table colgroup+thead tr:first-child td,.handsontable .table thead:first-child tr:first-child th,.handsontable .table thead:first-child tr:first-child td{border-top:1px solid #CCCCCC}.handsontable .table-bordered{border:0;border-collapse:separate}.handsontable .table-bordered th,.handsontable .table-bordered td{border-left:none}.handsontable .table-bordered th:first-child,.handsontable .table-bordered td:first-child{border-left:1px solid #CCCCCC}.handsontable .table>tbody>tr>td,.handsontable .table>tbody>tr>th,.handsontable .table>tfoot>tr>td,.handsontable .table>tfoot>tr>th,.handsontable .table>thead>tr>td,.handsontable .table>thead>tr>th{line-height:21px;padding:0 4px}.col-lg-1.handsontable,.col-lg-10.handsontable,.col-lg-11.handsontable,.col-lg-12.handsontable,.col-lg-2.handsontable,.col-lg-3.handsontable,.col-lg-4.handsontable,.col-lg-5.handsontable,.col-lg-6.handsontable,.col-lg-7.handsontable,.col-lg-8.handsontable,.col-lg-9.handsontable,.col-md-1.handsontable,.col-md-10.handsontable,.col-md-11.handsontable,.col-md-12.handsontable,.col-md-2.handsontable,.col-md-3.handsontable,.col-md-4.handsontable,.col-md-5.handsontable,.col-md-6.handsontable,.col-md-7.handsontable,.col-md-8.handsontable,.col-md-9.handsontable .col-sm-1.handsontable,.col-sm-10.handsontable,.col-sm-11.handsontable,.col-sm-12.handsontable,.col-sm-2.handsontable,.col-sm-3.handsontable,.col-sm-4.handsontable,.col-sm-5.handsontable,.col-sm-6.handsontable,.col-sm-7.handsontable,.col-sm-8.handsontable,.col-sm-9.handsontable .col-xs-1.handsontable,.col-xs-10.handsontable,.col-xs-11.handsontable,.col-xs-12.handsontable,.col-xs-2.handsontable,.col-xs-3.handsontable,.col-xs-4.handsontable,.col-xs-5.handsontable,.col-xs-6.handsontable,.col-xs-7.handsontable,.col-xs-8.handsontable,.col-xs-9.handsontable{padding-left:0;padding-right:0}.handsontable .table-striped>tbody>tr:nth-of-type(even){background-color:#FFF}.handsontable{position:relative}.handsontable .hide{display:none}.handsontable .relative{position:relative}.handsontable.htAutoSize{visibility:hidden;left:-99000px;position:absolute;top:-99000px}.handsontable .wtHider{width:0}.handsontable .wtSpreader{position:relative;width:0;height:auto}.handsontable table,.handsontable tbody,.handsontable thead,.handsontable td,.handsontable th,.handsontable input,.handsontable textarea,.handsontable div{box-sizing:content-box;-webkit-box-sizing:content-box;-moz-box-sizing:content-box}.handsontable input,.handsontable textarea{min-height:initial}.handsontable table.htCore{border-collapse:separate;border-spacing:0;margin:0;border-width:0;table-layout:fixed;width:0;outline-width:0;cursor:default;max-width:none;max-height:none}.handsontable col{width:50px}.handsontable col.rowHeader{width:50px}.handsontable th,.handsontable td{border-top-width:0;border-left-width:0;border-right:1px solid #CCC;border-bottom:1px solid #CCC;height:22px;empty-cells:show;line-height:21px;padding:0 4px 0 4px;background-color:#FFF;vertical-align:top;overflow:hidden;outline-width:0;white-space:pre-line}.handsontable td.htInvalid{background-color:#ff4c42 !important}.handsontable td.htNoWrap{white-space:nowrap}.handsontable th:last-child{border-right:1px solid #CCC;border-bottom:1px solid #CCC}.handsontable tr:first-child th.htNoFrame,.handsontable th:first-child.htNoFrame,.handsontable th.htNoFrame{border-left-width:0;background-color:white;border-color:#FFF}.handsontable th:first-child,.handsontable th:nth-child(2),.handsontable td:first-of-type,.handsontable .htNoFrame+th,.handsontable .htNoFrame+td{border-left:1px solid #CCC}.handsontable.htRowHeaders thead tr th:nth-child(2){border-left:1px solid #CCC}.handsontable tr:first-child th,.handsontable tr:first-child td{border-top:1px solid #CCC}.ht_master:not(.innerBorderLeft):not(.emptyColumns) ~ .handsontable tbody tr th,.ht_master:not(.innerBorderLeft):not(.emptyColumns) ~ .handsontable:not(.ht_clone_top) thead tr th:first-child{border-right-width:0}.ht_master:not(.innerBorderTop) thead tr:last-child th,.ht_master:not(.innerBorderTop) ~ .handsontable thead tr:last-child th,.ht_master:not(.innerBorderTop) thead tr.lastChild th,.ht_master:not(.innerBorderTop) ~ .handsontable thead tr.lastChild th{border-bottom-width:0}.handsontable th{background-color:#f0f0f0;color:#222;text-align:center;font-weight:normal;white-space:nowrap}.handsontable thead th{padding:0}.handsontable th.active{background-color:#CCC}.handsontable thead th .relative{padding:2px 4px}#hot-display-license-info{font-size:10px;color:#323232;padding:5px 0 3px 0;font-family:Helvetica, Arial, sans-serif;text-align:left}#hot-display-license-info a{font-size:10px}.handsontable .manualColumnResizer{position:absolute;top:0;cursor:col-resize;z-index:210;width:5px;height:25px}.handsontable .manualRowResizer{position:absolute;left:0;cursor:row-resize;z-index:210;height:5px;width:50px}.handsontable .manualColumnResizer:hover,.handsontable .manualColumnResizer.active,.handsontable .manualRowResizer:hover,.handsontable .manualRowResizer.active{background-color:#34a9db}.handsontable .manualColumnResizerGuide{position:absolute;right:0;top:0;background-color:#34a9db;display:none;width:0;border-right:1px dashed #777;margin-left:5px}.handsontable .manualRowResizerGuide{position:absolute;left:0;bottom:0;background-color:#34a9db;display:none;height:0;border-bottom:1px dashed #777;margin-top:5px}.handsontable .manualColumnResizerGuide.active,.handsontable .manualRowResizerGuide.active{display:block;z-index:209}.handsontable .columnSorting{position:relative}.handsontable .columnSorting.sortAction:hover{text-decoration:underline;cursor:pointer}.handsontable span.colHeader{display:inline-block;line-height:1.1}.handsontable span.colHeader.columnSorting::before{top:50%;margin-top:-6px;padding-left:8px;position:absolute;right:-9px;content:'';height:10px;width:5px;background-size:contain;background-repeat:no-repeat;background-position-x:right}.handsontable span.colHeader.columnSorting.ascending::before{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAoCAMAAADJ7yrpAAAAKlBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKE86IAAAADXRSTlMABBEmRGprlJW72e77tTkTKwAAAFNJREFUeAHtzjkSgCAUBNHPgsoy97+ulGXRqJE5L+xkxoYt2UdsLb5bqFINz+aLuuLn5rIu2RkO3fZpWENimNgiw6iBYRTPMLJjGFxQZ1hxxb/xBI1qC8k39CdKAAAAAElFTkSuQmCC")}.handsontable span.colHeader.columnSorting.descending::before{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAoCAMAAADJ7yrpAAAAKlBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKE86IAAAADXRSTlMABBEmRGprlJW72e77tTkTKwAAAFJJREFUeAHtzjkSgCAQRNFmQYUZ7n9dKUvru0TmvPAn3br0QfgdZ5xx6x+rQn23GqTYnq1FDcnuzZIO2WmedVqIRVxgGKEyjNgYRjKGkZ1hFIZ3I70LyM0VtU8AAAAASUVORK5CYII=")}.htGhostTable .htCore span.colHeader.columnSorting:not(.indicatorDisabled)::after{content:'*';display:inline-block;position:relative;padding-right:20px}.handsontable .wtBorder{position:absolute;font-size:0}.handsontable .wtBorder.hidden{display:none !important}.handsontable .wtBorder.current{z-index:10}.handsontable .wtBorder.area{z-index:8}.handsontable .wtBorder.fill{z-index:6}.handsontable td.area,.handsontable td.area-1,.handsontable td.area-2,.handsontable td.area-3,.handsontable td.area-4,.handsontable td.area-5,.handsontable td.area-6,.handsontable td.area-7{position:relative}.handsontable td.area:before,.handsontable td.area-1:before,.handsontable td.area-2:before,.handsontable td.area-3:before,.handsontable td.area-4:before,.handsontable td.area-5:before,.handsontable td.area-6:before,.handsontable td.area-7:before{content:'';position:absolute;top:0;left:0;right:0;bottom:0;bottom:-100%\9;background:#005eff}@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none){.handsontable td.area:before,.handsontable td.area-1:before,.handsontable td.area-2:before,.handsontable td.area-3:before,.handsontable td.area-4:before,.handsontable td.area-5:before,.handsontable td.area-6:before,.handsontable td.area-7:before{bottom:-100%}}.handsontable td.area:before{opacity:0.1}.handsontable td.area-1:before{opacity:0.2}.handsontable td.area-2:before{opacity:0.27}.handsontable td.area-3:before{opacity:0.35}.handsontable td.area-4:before{opacity:0.41}.handsontable td.area-5:before{opacity:0.47}.handsontable td.area-6:before{opacity:0.54}.handsontable td.area-7:before{opacity:0.58}.handsontable tbody th.ht__highlight,.handsontable thead th.ht__highlight{background-color:#dcdcdc}.handsontable tbody th.ht__active_highlight,.handsontable thead th.ht__active_highlight{background-color:#8eb0e7;color:#000}.handsontable .wtBorder.corner{font-size:0;cursor:crosshair}.handsontable .htBorder.htFillBorder{background:red;width:1px;height:1px}.handsontableInput{border:none;outline-width:0;margin:0;padding:1px 5px 0 5px;font-family:inherit;line-height:21px;font-size:inherit;box-shadow:0 0 0 2px #5292F7 inset;resize:none;display:block;color:#000;border-radius:0;background-color:#FFF}.handsontableInputHolder{position:absolute;top:0;left:0;z-index:104}.htSelectEditor{-webkit-appearance:menulist-button !important;position:absolute;width:auto}.handsontable .htDimmed{color:#777}.handsontable .htSubmenu{position:relative}.handsontable .htSubmenu :after{content:'\25B6';color:#777;position:absolute;right:5px;font-size:9px}.handsontable .htLeft{text-align:left}.handsontable .htCenter{text-align:center}.handsontable .htRight{text-align:right}.handsontable .htJustify{text-align:justify}.handsontable .htTop{vertical-align:top}.handsontable .htMiddle{vertical-align:middle}.handsontable .htBottom{vertical-align:bottom}.handsontable .htPlaceholder{color:#999}.handsontable .htAutocompleteArrow{float:right;font-size:10px;color:#EEE;cursor:default;width:16px;text-align:center}.handsontable td .htAutocompleteArrow:hover{color:#777}.handsontable td.area .htAutocompleteArrow{color:#d3d3d3}.handsontable .htCheckboxRendererInput{display:inline-block}.handsontable .htCheckboxRendererInput.noValue{opacity:0.5}.handsontable .htCheckboxRendererLabel{font-size:inherit;vertical-align:middle;cursor:pointer;display:inline-block;width:100%}.handsontable .handsontable.ht_clone_top .wtHider{padding:0 0 5px 0}.handsontable .autocompleteEditor.handsontable{padding-right:17px}.handsontable .autocompleteEditor.handsontable.htMacScroll{padding-right:15px}.handsontable.listbox{margin:0}.handsontable.listbox .ht_master table{border:1px solid #ccc;border-collapse:separate;background:white}.handsontable.listbox th,.handsontable.listbox tr:first-child th,.handsontable.listbox tr:last-child th,.handsontable.listbox tr:first-child td,.handsontable.listbox td{border-color:transparent}.handsontable.listbox th,.handsontable.listbox td{white-space:nowrap;text-overflow:ellipsis}.handsontable.listbox td.htDimmed{cursor:default;color:inherit;font-style:inherit}.handsontable.listbox .wtBorder{visibility:hidden}.handsontable.listbox tr td.current,.handsontable.listbox tr:hover td{background:#eee}.ht_editor_hidden{z-index:-1}.ht_editor_visible{z-index:200}.ht_clone_master{z-index:100}.ht_clone_right{z-index:110}.ht_clone_left{z-index:120}.ht_clone_bottom{z-index:130}.ht_clone_bottom_right_corner{z-index:140}.ht_clone_bottom_left_corner{z-index:150}.ht_clone_top{z-index:160}.ht_clone_top_right_corner{z-index:170}.ht_clone_top_left_corner{z-index:180}.handsontable td.htSearchResult{background:#fcedd9;color:#583707}.htBordered{border-width:1px}.htBordered.htTopBorderSolid{border-top-style:solid;border-top-color:#000}.htBordered.htRightBorderSolid{border-right-style:solid;border-right-color:#000}.htBordered.htBottomBorderSolid{border-bottom-style:solid;border-bottom-color:#000}.htBordered.htLeftBorderSolid{border-left-style:solid;border-left-color:#000}.handsontable tbody tr th:nth-last-child(2){border-right:1px solid #CCC}.handsontable thead tr:nth-last-child(2) th.htGroupIndicatorContainer{border-bottom:1px solid #CCC;padding-bottom:5px}.ht_clone_top_left_corner thead tr th:nth-last-child(2){border-right:1px solid #CCC}.htCollapseButton{width:10px;height:10px;line-height:10px;text-align:center;border-radius:5px;border:1px solid #f3f3f3;-webkit-box-shadow:1px 1px 3px rgba(0,0,0,0.4);box-shadow:1px 1px 3px rgba(0,0,0,0.4);cursor:pointer;margin-bottom:3px;position:relative}.htCollapseButton:after{content:"";height:300%;width:1px;display:block;background:#ccc;margin-left:4px;position:absolute;bottom:10px}thead .htCollapseButton{right:5px;position:absolute;top:5px;background:#fff}thead .htCollapseButton:after{height:1px;width:700%;right:10px;top:4px}.handsontable tr th .htExpandButton{position:absolute;width:10px;height:10px;line-height:10px;text-align:center;border-radius:5px;border:1px solid #f3f3f3;-webkit-box-shadow:1px 1px 3px rgba(0,0,0,0.4);box-shadow:1px 1px 3px rgba(0,0,0,0.4);cursor:pointer;top:0;display:none}.handsontable thead tr th .htExpandButton{top:5px}.handsontable tr th .htExpandButton.clickable{display:block}.collapsibleIndicator{position:absolute;top:50%;transform:translate(0%, -50%);right:5px;border:1px solid #A6A6A6;line-height:10px;color:#222;border-radius:10px;font-size:10px;width:10px;height:10px;cursor:pointer;-webkit-box-shadow:0 0 0 6px #eee;-moz-box-shadow:0 0 0 6px #eee;box-shadow:0 0 0 6px #eee;background:#eee}.handsontable col.hidden{width:0 !important}.handsontable table tr th.lightRightBorder{border-right:1px solid #E6E6E6}.handsontable tr.hidden,.handsontable tr.hidden td,.handsontable tr.hidden th{display:none}.ht_master,.ht_clone_left,.ht_clone_top,.ht_clone_bottom{overflow:hidden}.ht_master .wtHolder{overflow:auto}.handsontable .ht_master thead,.handsontable .ht_master tr th,.handsontable .ht_clone_left thead{visibility:hidden}.ht_clone_top .wtHolder,.ht_clone_left .wtHolder,.ht_clone_bottom .wtHolder{overflow:hidden}.handsontable.mobile,.handsontable.mobile .wtHolder{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-overflow-scrolling:touch}.htMobileEditorContainer{display:none;position:absolute;top:0;width:70%;height:54pt;background:#f8f8f8;border-radius:20px;border:1px solid #ebebeb;z-index:999;box-sizing:border-box;-webkit-box-sizing:border-box;-webkit-text-size-adjust:none}.topLeftSelectionHandle:not(.ht_master .topLeftSelectionHandle),.topLeftSelectionHandle-HitArea:not(.ht_master .topLeftSelectionHandle-HitArea){z-index:9999}.topLeftSelectionHandle,.topLeftSelectionHandle-HitArea,.bottomRightSelectionHandle,.bottomRightSelectionHandle-HitArea{left:-10000px;top:-10000px}.htMobileEditorContainer.active{display:block}.htMobileEditorContainer .inputs{position:absolute;right:210pt;bottom:10pt;top:10pt;left:14px;height:34pt}.htMobileEditorContainer .inputs textarea{font-size:13pt;border:1px solid #a1a1a1;-webkit-appearance:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;position:absolute;left:14px;right:14px;top:0;bottom:0;padding:7pt}.htMobileEditorContainer .cellPointer{position:absolute;top:-13pt;height:0;width:0;left:30px;border-left:13pt solid transparent;border-right:13pt solid transparent;border-bottom:13pt solid #ebebeb}.htMobileEditorContainer .cellPointer.hidden{display:none}.htMobileEditorContainer .cellPointer:before{content:'';display:block;position:absolute;top:2px;height:0;width:0;left:-13pt;border-left:13pt solid transparent;border-right:13pt solid transparent;border-bottom:13pt solid #f8f8f8}.htMobileEditorContainer .moveHandle{position:absolute;top:10pt;left:5px;width:30px;bottom:0px;cursor:move;z-index:9999}.htMobileEditorContainer .moveHandle:after{content:"..\a..\a..\a..";white-space:pre;line-height:10px;font-size:20pt;display:inline-block;margin-top:-8px;color:#ebebeb}.htMobileEditorContainer .positionControls{width:205pt;position:absolute;right:5pt;top:0;bottom:0}.htMobileEditorContainer .positionControls>div{width:50pt;height:100%;float:left}.htMobileEditorContainer .positionControls>div:after{content:" ";display:block;width:15pt;height:15pt;text-align:center;line-height:50pt}.htMobileEditorContainer .leftButton:after,.htMobileEditorContainer .rightButton:after,.htMobileEditorContainer .upButton:after,.htMobileEditorContainer .downButton:after{transform-origin:5pt 5pt;-webkit-transform-origin:5pt 5pt;margin:21pt 0 0 21pt}.htMobileEditorContainer .leftButton:after{border-top:2px solid #288ffe;border-left:2px solid #288ffe;-webkit-transform:rotate(-45deg)}.htMobileEditorContainer .leftButton:active:after{border-color:#cfcfcf}.htMobileEditorContainer .rightButton:after{border-top:2px solid #288ffe;border-left:2px solid #288ffe;-webkit-transform:rotate(135deg)}.htMobileEditorContainer .rightButton:active:after{border-color:#cfcfcf}.htMobileEditorContainer .upButton:after{border-top:2px solid #288ffe;border-left:2px solid #288ffe;-webkit-transform:rotate(45deg)}.htMobileEditorContainer .upButton:active:after{border-color:#cfcfcf}.htMobileEditorContainer .downButton:after{border-top:2px solid #288ffe;border-left:2px solid #288ffe;-webkit-transform:rotate(225deg)}.htMobileEditorContainer .downButton:active:after{border-color:#cfcfcf}.handsontable.hide-tween{-webkit-animation:opacity-hide 0.3s;animation:opacity-hide 0.3s;animation-fill-mode:forwards;-webkit-animation-fill-mode:forwards}.handsontable.show-tween{-webkit-animation:opacity-show 0.3s;animation:opacity-show 0.3s;animation-fill-mode:forwards;-webkit-animation-fill-mode:forwards}/*! - * Pikaday - * Copyright © 2014 David Bushell | BSD & MIT license | https://dbushell.com/ - */.pika-single{z-index:9999;display:block;position:relative;color:#333;background:#fff;border:1px solid #ccc;border-bottom-color:#bbb;font-family:"Helvetica Neue", Helvetica, Arial, sans-serif}.pika-single:before,.pika-single:after{content:" ";display:table}.pika-single:after{clear:both}.pika-single{*zoom:1}.pika-single.is-hidden{display:none}.pika-single.is-bound{position:absolute;box-shadow:0 5px 15px -5px rgba(0,0,0,0.5)}.pika-lendar{float:left;width:240px;margin:8px}.pika-title{position:relative;text-align:center}.pika-label{display:inline-block;*display:inline;position:relative;z-index:9999;overflow:hidden;margin:0;padding:5px 3px;font-size:14px;line-height:20px;font-weight:bold;background-color:#fff}.pika-title select{cursor:pointer;position:absolute;z-index:9998;margin:0;left:0;top:5px;filter:alpha(opacity=0);opacity:0}.pika-prev,.pika-next{display:block;cursor:pointer;position:relative;outline:none;border:0;padding:0;width:20px;height:30px;text-indent:20px;white-space:nowrap;overflow:hidden;background-color:transparent;background-position:center center;background-repeat:no-repeat;background-size:75% 75%;opacity:.5;*position:absolute;*top:0}.pika-prev:hover,.pika-next:hover{opacity:1}.pika-prev,.is-rtl .pika-next{float:left;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAUklEQVR42u3VMQoAIBADQf8Pgj+OD9hG2CtONJB2ymQkKe0HbwAP0xucDiQWARITIDEBEnMgMQ8S8+AqBIl6kKgHiXqQqAeJepBo/z38J/U0uAHlaBkBl9I4GwAAAABJRU5ErkJggg==");*left:0}.pika-next,.is-rtl .pika-prev{float:right;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAU0lEQVR42u3VOwoAMAgE0dwfAnNjU26bYkBCFGwfiL9VVWoO+BJ4Gf3gtsEKKoFBNTCoCAYVwaAiGNQGMUHMkjGbgjk2mIONuXo0nC8XnCf1JXgArVIZAQh5TKYAAAAASUVORK5CYII=");*right:0}.pika-prev.is-disabled,.pika-next.is-disabled{cursor:default;opacity:.2}.pika-select{display:inline-block;*display:inline}.pika-table{width:100%;border-collapse:collapse;border-spacing:0;border:0}.pika-table th,.pika-table td{width:14.285714285714286%;padding:0}.pika-table th{color:#999;font-size:12px;line-height:25px;font-weight:bold;text-align:center}.pika-button{cursor:pointer;display:block;box-sizing:border-box;-moz-box-sizing:border-box;outline:none;border:0;margin:0;width:100%;padding:5px;color:#666;font-size:12px;line-height:15px;text-align:right;background:#f5f5f5}.pika-week{font-size:11px;color:#999}.is-today .pika-button{color:#33aaff;font-weight:bold}.is-selected .pika-button,.has-event .pika-button{color:#fff;font-weight:bold;background:#33aaff;box-shadow:inset 0 1px 3px #178fe5;border-radius:3px}.has-event .pika-button{background:#005da9;box-shadow:inset 0 1px 3px #0076c9}.is-disabled .pika-button,.is-inrange .pika-button{background:#D5E9F7}.is-startrange .pika-button{color:#fff;background:#6CB31D;box-shadow:none;border-radius:3px}.is-endrange .pika-button{color:#fff;background:#33aaff;box-shadow:none;border-radius:3px}.is-disabled .pika-button{pointer-events:none;cursor:default;color:#999;opacity:.3}.is-outside-current-month .pika-button{color:#999;opacity:.3}.is-selection-disabled{pointer-events:none;cursor:default}.pika-button:hover,.pika-row.pick-whole-week:hover .pika-button{color:#fff;background:#ff8000;box-shadow:none;border-radius:3px}.pika-table abbr{border-bottom:none;cursor:help}.htCommentCell{position:relative}.htCommentCell:after{content:'';position:absolute;top:0;right:0;border-left:6px solid transparent;border-top:6px solid black}.htComments{display:none;z-index:1059;position:absolute}.htCommentTextArea{box-shadow:rgba(0,0,0,0.117647) 0 1px 3px,rgba(0,0,0,0.239216) 0 1px 2px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border:none;border-left:3px solid #ccc;background-color:#fff;width:215px;height:90px;font-size:12px;padding:5px;outline:0px !important;-webkit-appearance:none}.htCommentTextArea:focus{box-shadow:rgba(0,0,0,0.117647) 0 1px 3px,rgba(0,0,0,0.239216) 0 1px 2px,inset 0 0 0 1px #5292f7;border-left:3px solid #5292f7}/*! - * Handsontable ContextMenu - */.htContextMenu:not(.htGhostTable){display:none;position:absolute;z-index:1060}.htContextMenu .ht_clone_top,.htContextMenu .ht_clone_left,.htContextMenu .ht_clone_corner{display:none}.htContextMenu table.htCore{border:1px solid #ccc;border-bottom-width:2px;border-right-width:2px}.htContextMenu .wtBorder{visibility:hidden}.htContextMenu table tbody tr td{background:white;border-width:0;padding:4px 6px 0 6px;cursor:pointer;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.htContextMenu table tbody tr td:first-child{border:0}.htContextMenu table tbody tr td.htDimmed{font-style:normal;color:#323232}.htContextMenu table tbody tr td.current,.htContextMenu table tbody tr td.zeroclipboard-is-hover{background:#f3f3f3}.htContextMenu table tbody tr td.htSeparator{border-top:1px solid #e6e6e6;height:0;padding:0;cursor:default}.htContextMenu table tbody tr td.htDisabled{color:#999;cursor:default}.htContextMenu table tbody tr td.htDisabled:hover{background:#fff;color:#999;cursor:default}.htContextMenu table tbody tr.htHidden{display:none}.htContextMenu table tbody tr td .htItemWrapper{margin-left:10px;margin-right:6px}.htContextMenu table tbody tr td div span.selected{margin-top:-2px;position:absolute;left:4px}.htContextMenu .ht_master .wtHolder{overflow:hidden}textarea.HandsontableCopyPaste{position:fixed !important;top:0 !important;right:100% !important;overflow:hidden;opacity:0;outline:0 none !important}.htRowHeaders .ht_master.innerBorderLeft ~ .ht_clone_top_left_corner th:nth-child(2),.htRowHeaders .ht_master.innerBorderLeft ~ .ht_clone_left td:first-of-type{border-left:0 none}.handsontable .wtHider{position:relative}.handsontable.ht__manualColumnMove.after-selection--columns thead th.ht__highlight{cursor:move;cursor:-moz-grab;cursor:-webkit-grab;cursor:grab}.handsontable.ht__manualColumnMove.on-moving--columns,.handsontable.ht__manualColumnMove.on-moving--columns thead th.ht__highlight{cursor:move;cursor:-moz-grabbing;cursor:-webkit-grabbing;cursor:grabbing}.handsontable.ht__manualColumnMove.on-moving--columns .manualColumnResizer{display:none}.handsontable .ht__manualColumnMove--guideline,.handsontable .ht__manualColumnMove--backlight{position:absolute;height:100%;display:none}.handsontable .ht__manualColumnMove--guideline{background:#757575;width:2px;top:0;margin-left:-1px;z-index:205}.handsontable .ht__manualColumnMove--backlight{background:#343434;background:rgba(52,52,52,0.25);display:none;z-index:205;pointer-events:none}.handsontable.on-moving--columns.show-ui .ht__manualColumnMove--guideline,.handsontable.on-moving--columns .ht__manualColumnMove--backlight{display:block}.handsontable .wtHider{position:relative}.handsontable.ht__manualRowMove.after-selection--rows tbody th.ht__highlight{cursor:move;cursor:-moz-grab;cursor:-webkit-grab;cursor:grab}.handsontable.ht__manualRowMove.on-moving--rows,.handsontable.ht__manualRowMove.on-moving--rows tbody th.ht__highlight{cursor:move;cursor:-moz-grabbing;cursor:-webkit-grabbing;cursor:grabbing}.handsontable.ht__manualRowMove.on-moving--rows .manualRowResizer{display:none}.handsontable .ht__manualRowMove--guideline,.handsontable .ht__manualRowMove--backlight{position:absolute;width:100%;display:none}.handsontable .ht__manualRowMove--guideline{background:#757575;height:2px;left:0;margin-top:-1px;z-index:205}.handsontable .ht__manualRowMove--backlight{background:#343434;background:rgba(52,52,52,0.25);display:none;z-index:205;pointer-events:none}.handsontable.on-moving--rows.show-ui .ht__manualRowMove--guideline,.handsontable.on-moving--rows .ht__manualRowMove--backlight{display:block}.handsontable tbody td[rowspan][class*="area"][class*="highlight"]:not([class*="fullySelectedMergedCell"]):before{opacity:0}.handsontable tbody td[rowspan][class*="area"][class*="highlight"][class*="fullySelectedMergedCell-multiple"]:before{opacity:0.1}.handsontable tbody td[rowspan][class*="area"][class*="highlight"][class*="fullySelectedMergedCell-0"]:before{opacity:0.1}.handsontable tbody td[rowspan][class*="area"][class*="highlight"][class*="fullySelectedMergedCell-1"]:before{opacity:0.2}.handsontable tbody td[rowspan][class*="area"][class*="highlight"][class*="fullySelectedMergedCell-2"]:before{opacity:0.27}.handsontable tbody td[rowspan][class*="area"][class*="highlight"][class*="fullySelectedMergedCell-3"]:before{opacity:0.35}.handsontable tbody td[rowspan][class*="area"][class*="highlight"][class*="fullySelectedMergedCell-4"]:before{opacity:0.41}.handsontable tbody td[rowspan][class*="area"][class*="highlight"][class*="fullySelectedMergedCell-5"]:before{opacity:0.47}.handsontable tbody td[rowspan][class*="area"][class*="highlight"][class*="fullySelectedMergedCell-6"]:before{opacity:0.54}.handsontable tbody td[rowspan][class*="area"][class*="highlight"][class*="fullySelectedMergedCell-7"]:before{opacity:0.58}/*! - * Handsontable DropdownMenu - */.handsontable .changeType{background:#eee;border-radius:2px;border:1px solid #bbb;color:#bbb;font-size:9px;line-height:9px;padding:2px;margin:3px 1px 0 5px;float:right}.handsontable .changeType:before{content:'\25BC\ '}.handsontable .changeType:hover{border:1px solid #777;color:#777;cursor:pointer}.htDropdownMenu:not(.htGhostTable){display:none;position:absolute;z-index:1060}.htDropdownMenu .ht_clone_top,.htDropdownMenu .ht_clone_left,.htDropdownMenu .ht_clone_corner{display:none}.htDropdownMenu table.htCore{border:1px solid #bbb;border-bottom-width:2px;border-right-width:2px}.htDropdownMenu .wtBorder{visibility:hidden}.htDropdownMenu table tbody tr td{background:white;border-width:0;padding:4px 6px 0 6px;cursor:pointer;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.htDropdownMenu table tbody tr td:first-child{border:0}.htDropdownMenu table tbody tr td.htDimmed{font-style:normal;color:#323232}.htDropdownMenu table tbody tr td.current,.htDropdownMenu table tbody tr td.zeroclipboard-is-hover{background:#e9e9e9}.htDropdownMenu table tbody tr td.htSeparator{border-top:1px solid #e6e6e6;height:0;padding:0;cursor:default}.htDropdownMenu table tbody tr td.htDisabled{color:#999}.htDropdownMenu table tbody tr td.htDisabled:hover{background:#fff;color:#999;cursor:default}.htDropdownMenu:not(.htGhostTable) table tbody tr.htHidden{display:none}.htDropdownMenu table tbody tr td .htItemWrapper{margin-left:10px;margin-right:10px}.htDropdownMenu table tbody tr td div span.selected{margin-top:-2px;position:absolute;left:4px}.htDropdownMenu .ht_master .wtHolder{overflow:hidden}.handsontable span.colHeader.columnSorting::after{top:50%;margin-top:-2px;position:absolute;right:-15px;padding-left:5px;font-size:8px;height:8px;line-height:1.1;text-decoration:underline}.handsontable span.colHeader.columnSorting::after{text-decoration:none}.handsontable span.colHeader.columnSorting[class^="sort-"]::after,.handsontable span.colHeader.columnSorting[class*=" sort-"]::after{content:"+"}.handsontable span.colHeader.columnSorting.sort-1::after{content:'1'}.handsontable span.colHeader.columnSorting.sort-2::after{content:'2'}.handsontable span.colHeader.columnSorting.sort-3::after{content:'3'}.handsontable span.colHeader.columnSorting.sort-4::after{content:'4'}.handsontable span.colHeader.columnSorting.sort-5::after{content:'5'}.handsontable span.colHeader.columnSorting.sort-6::after{content:'6'}.handsontable span.colHeader.columnSorting.sort-7::after{content:'7'}.htGhostTable th div button.changeType+span.colHeader.columnSorting:not(.indicatorDisabled){padding-right:5px}/*! - * Handsontable Filters - */.htFiltersConditionsMenu:not(.htGhostTable){display:none;position:absolute;z-index:1070}.htFiltersConditionsMenu .ht_clone_top,.htFiltersConditionsMenu .ht_clone_left,.htFiltersConditionsMenu .ht_clone_corner{display:none}.htFiltersConditionsMenu table.htCore{border:1px solid #bbb;border-bottom-width:2px;border-right-width:2px}.htFiltersConditionsMenu .wtBorder{visibility:hidden}.htFiltersConditionsMenu table tbody tr td{background:white;border-width:0;padding:4px 6px 0 6px;cursor:pointer;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.htFiltersConditionsMenu table tbody tr td:first-child{border:0}.htFiltersConditionsMenu table tbody tr td.htDimmed{font-style:normal;color:#323232}.htFiltersConditionsMenu table tbody tr td.current,.htFiltersConditionsMenu table tbody tr td.zeroclipboard-is-hover{background:#e9e9e9}.htFiltersConditionsMenu table tbody tr td.htSeparator{border-top:1px solid #e6e6e6;height:0;padding:0}.htFiltersConditionsMenu table tbody tr td.htDisabled{color:#999}.htFiltersConditionsMenu table tbody tr td.htDisabled:hover{background:#fff;color:#999;cursor:default}.htFiltersConditionsMenu table tbody tr td .htItemWrapper{margin-left:10px;margin-right:10px}.htFiltersConditionsMenu table tbody tr td div span.selected{margin-top:-2px;position:absolute;left:4px}.htFiltersConditionsMenu .ht_master .wtHolder{overflow:hidden}.handsontable .htMenuFiltering{border-bottom:1px dotted #ccc;height:135px;overflow:hidden}.handsontable .ht_master table td.htCustomMenuRenderer{background-color:#fff;cursor:auto}.handsontable .htFiltersMenuLabel{font-size:0.75em}.handsontable .htFiltersMenuActionBar{text-align:center;padding-top:10px;padding-bottom:3px}.handsontable .htFiltersMenuCondition.border{border-bottom:1px dotted #ccc !important}.handsontable .htFiltersMenuCondition .htUIInput{padding:0 0 5px 0}.handsontable .htFiltersMenuValue{border-bottom:1px dotted #ccc !important}.handsontable .htFiltersMenuValue .htUIMultipleSelectSearch{padding:0}.handsontable .htFiltersMenuCondition .htUIInput input,.handsontable .htFiltersMenuValue .htUIMultipleSelectSearch input{font-family:inherit;font-size:0.75em;padding:4px;box-sizing:border-box;width:100%}.htUIMultipleSelect .ht_master .wtHolder{overflow-y:scroll}.handsontable .htFiltersActive .changeType{border:1px solid #509272;color:#18804e;background-color:#d2e0d9}.handsontable .htUISelectAll{margin-right:10px}.handsontable .htUIClearAll,.handsontable .htUISelectAll{display:inline-block}.handsontable .htUIClearAll a,.handsontable .htUISelectAll a{color:#3283D8;font-size:0.75em}.handsontable .htUISelectionControls{text-align:right}.handsontable .htCheckboxRendererInput{margin:0 5px 0 0;vertical-align:middle;height:1em}.handsontable .htUIInput{padding:3px 0 7px 0;position:relative;text-align:center}.handsontable .htUIInput input{border-radius:2px;border:1px solid #d2d1d1}.handsontable .htUIInput input:focus{outline:0}.handsontable .htUIInputIcon{position:absolute}.handsontable .htUIInput.htUIButton{cursor:pointer;display:inline-block}.handsontable .htUIInput.htUIButton input{background-color:#eee;color:#000;cursor:pointer;font-family:inherit;font-size:0.7em;font-weight:bold;height:19px;min-width:64px}.handsontable .htUIInput.htUIButton input:hover{border-color:#b9b9b9}.handsontable .htUIInput.htUIButtonOK{margin-right:10px}.handsontable .htUIInput.htUIButtonOK input{background-color:#0f9d58;border-color:#18804e;color:#fff}.handsontable .htUIInput.htUIButtonOK input:hover{border-color:#1a6f46}.handsontable .htUISelect{cursor:pointer;margin-bottom:7px;position:relative}.handsontable .htUISelectCaption{background-color:#e8e8e8;border-radius:2px;border:1px solid #d2d1d1;font-family:inherit;font-size:0.7em;font-weight:bold;padding:3px 20px 3px 10px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.handsontable .htUISelectCaption:hover{background-color:#e8e8e8;border:1px solid #b9b9b9}.handsontable .htUISelectDropdown:after{content:'\25B2';font-size:7px;position:absolute;right:10px;top:0}.handsontable .htUISelectDropdown:before{content:'\25BC';font-size:7px;position:absolute;right:10px;top:8px}.handsontable .htUIMultipleSelect .handsontable .htCore{border:none}.handsontable .htUIMultipleSelect .handsontable .htCore td:hover{background-color:#F5F5F5}.handsontable .htUIMultipleSelectSearch input{border-radius:2px;border:1px solid #d2d1d1;padding:3px}.handsontable .htUIRadio{display:inline-block;margin-right:5px;height:100%}.handsontable .htUIRadio:last-child{margin-right:0}.handsontable .htUIRadio>input[type=radio]{margin-right:0.5ex}.handsontable .htUIRadio label{vertical-align:middle}.handsontable .htFiltersMenuOperators{padding-bottom:5px}.handsontable.ganttChart tr:first-child th div.relative{padding-right:21px}.handsontable.ganttChart .colHeader{display:block}.handsontable.ganttChart td.rangeBar{background:#48b703;border-right-width:0;position:relative;-webkit-box-shadow:inset 0 3px 0 #ffffff;-moz-box-shadow:inset 0 3px 0 #ffffff;box-shadow:inset 0 3px 0 #ffffff}.handsontable.ganttChart td.rangeBar.last{border-right-width:1px}.handsontable.ganttChart td.rangeBar.area{background:#7EC481}.handsontable.ganttChart td.rangeBar.partial{background:#8edf5a}.handsontable.ganttChart td.rangeBar.area.partial{background:#A1D8AD}.handsontable thead th.hiddenHeader:not(:first-of-type){display:none}.handsontable th.ht_nestingLevels{text-align:left;padding-left:7px}.handsontable th div.ht_nestingLevels{display:inline-block;position:absolute;left:11px}.handsontable.innerBorderLeft th div.ht_nestingLevels,.handsontable.innerBorderLeft ~ .handsontable th div.ht_nestingLevels{right:10px}.handsontable th span.ht_nestingLevel{display:inline-block}.handsontable th span.ht_nestingLevel_empty{display:inline-block;width:10px;height:1px;float:left}.handsontable th span.ht_nestingLevel::after{content:"\2510";font-size:9px;display:inline-block;position:relative;bottom:3px}.handsontable th div.ht_nestingButton{display:inline-block;position:absolute;right:-2px;cursor:pointer}.handsontable th div.ht_nestingButton.ht_nestingExpand::after{content:"\002B"}.handsontable th div.ht_nestingButton.ht_nestingCollapse::after{content:"\002D"}.handsontable.innerBorderLeft th div.ht_nestingButton,.handsontable.innerBorderLeft ~ .handsontable th div.ht_nestingButton{right:0}.handsontable th.beforeHiddenColumn{position:relative}.handsontable th.beforeHiddenColumn::after,.handsontable th.afterHiddenColumn::before{color:#bbb;position:absolute;top:50%;font-size:5pt;transform:translateY(-50%)}.handsontable th.afterHiddenColumn{position:relative}.handsontable th.beforeHiddenColumn::after{right:1px;content:'\25C0'}.handsontable th.afterHiddenColumn::before{left:1px;content:'\25B6'}.handsontable td.firstVisibleColumn,.handsontable th.firstVisibleColumn{border-left:1px solid #CCC}/*! - * Handsontable HiddenRows - */.handsontable th.beforeHiddenRow::before,.handsontable th.afterHiddenRow::after{color:#bbb;font-size:6pt;line-height:6pt;position:absolute;left:2px}.handsontable th.beforeHiddenRow,.handsontable th.afterHiddenRow{position:relative}.handsontable th.beforeHiddenRow::before{content:'\25B2';bottom:2px}.handsontable th.afterHiddenRow::after{content:'\25BC';top:2px}.handsontable.ht__selection--rows tbody th.beforeHiddenRow.ht__highlight:before,.handsontable.ht__selection--rows tbody th.afterHiddenRow.ht__highlight:after{color:#eee}.handsontable td.afterHiddenRow.firstVisibleRow,.handsontable th.afterHiddenRow.firstVisibleRow{border-top:1px solid #CCC} - - -.ra-tree{font-size:18px}.ra-tree .tree{margin:16px}.ra-tree .tree ul,.ra-tree .tree li{margin:0;padding:0}.ra-tree .tree ul{padding-top:20px;position:relative;padding-left:0px;transition:all 0.5s;-webkit-transition:all 0.5s;-moz-transition:all 0.5s}.ra-tree .tree li{text-align:center;list-style-type:none;position:relative;padding:20px 5px 0 5px;transition:all 0.5s;-webkit-transition:all 0.5s;-moz-transition:all 0.5s;vertical-align:top;display:inline-block}.ra-tree .tree li::before,.ra-tree .tree li::after{content:'';position:absolute;top:0;right:50%;border-top:2px solid #ccc;width:50%;height:20px}.ra-tree .tree li::after{right:auto;left:50%;border-left:2px solid #ccc}.ra-tree .tree li:only-child::after,.ra-tree .tree li:only-child::before{display:none}.ra-tree .tree li:only-child{padding-top:0}.ra-tree .tree li:first-child::before,.ra-tree .tree li:last-child::after{border:0 none}.ra-tree .tree li:last-child::before{border-right:2px solid #ccc;border-radius:0 4px 0 0;-webkit-border-radius:0 4px 0 0;-moz-border-radius:0 4px 0 0}.ra-tree .tree li:first-child::after{border-radius:4px 0 0 0;-webkit-border-radius:4px 0 0 0;-moz-border-radius:4px 0 0 0}.ra-tree .tree ul ul::before{content:'';position:absolute;top:0;left:50%;border-left:2px solid #ccc;width:0;height:20px}.ra-tree .tree li div.node{background-color:#D6D6D6;border:none;color:black;padding:5px 10px;text-decoration:none;display:inline-block;max-width:600px;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px;transition:all 0.5s;-webkit-transition:all 0.5s;-moz-transition:all 0.5s}.ra-tree .tree li>div.node.active,.ra-tree .tree li>div.node.active+ul li div.node:not(:hover){background-color:#5C5C5C;color:white;border:none}.ra-tree .tree li div.node.active+ul li::after,.ra-tree .tree li div.node.active+ul li::before,.ra-tree .tree li div.node.active+ul::before,.ra-tree .tree li div.node.active+ul ul::before{border-color:#5C5C5C}.ra-tree .tree li div.node:hover,.ra-tree .tree li div.node:hover+ul li div.node{background:#51a351 !important;color:#fff !important}.ra-tree .tree li div.node:hover+ul li::after,.ra-tree .tree li div.node:hover+ul li::before,.ra-tree .tree li div.node:hover+ul::before,.ra-tree .tree li div.node:hover+ul ul::before{border-color:#51a351 !important}.ra-tree li .node{cursor:pointer}.ra-tree .label-info-0{background-color:#5bc0de}.ra-tree .label-info-1{background-color:#DE865A}.ra-tree .label-info-2{background-color:#AA5ADE}.ra-tree .label-info-3{background-color:#5A68DE}.ra-tree .label-info-4{background-color:#DED15A}.ra-tree .label-info-5{background-color:#5A80DE} - -.ra-result .result-table{overflow-x:auto}.ra-result .result-table table{width:auto}.ra-result .result-table table .null{font-style:italic}.ra-result .result-table>.pagination{text-align:center;margin:0px} - -.Toastify__toast-container{z-index:9999;-webkit-transform:translate3d(0, 0, 9999px);position:fixed;padding:4px;width:320px;box-sizing:border-box;color:#fff}.Toastify__toast-container--top-left{top:1em;left:1em}.Toastify__toast-container--top-center{top:1em;left:50%;margin-left:-160px}.Toastify__toast-container--top-right{top:1em;right:1em}.Toastify__toast-container--bottom-left{bottom:1em;left:1em}.Toastify__toast-container--bottom-center{bottom:1em;left:50%;margin-left:-160px}.Toastify__toast-container--bottom-right{bottom:1em;right:1em}@media only screen and (max-width: 480px){.Toastify__toast-container{width:100vw;padding:0;left:0;margin:0}.Toastify__toast-container--top-left,.Toastify__toast-container--top-center,.Toastify__toast-container--top-right{top:0}.Toastify__toast-container--bottom-left,.Toastify__toast-container--bottom-center,.Toastify__toast-container--bottom-right{bottom:0}.Toastify__toast-container--rtl{right:0;left:initial}}.Toastify__toast{position:relative;min-height:64px;box-sizing:border-box;margin-bottom:1rem;padding:8px;border-radius:1px;box-shadow:0 1px 10px 0 rgba(0,0,0,0.1),0 2px 15px 0 rgba(0,0,0,0.05);display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;max-height:800px;overflow:hidden;font-family:sans-serif;cursor:pointer;direction:ltr}.Toastify__toast--rtl{direction:rtl}.Toastify__toast--default{background:#fff;color:#aaa}.Toastify__toast--info{background:#3498db}.Toastify__toast--success{background:#07bc0c}.Toastify__toast--warning{background:#f1c40f}.Toastify__toast--error{background:#e74c3c}.Toastify__toast-body{margin:auto 0;-ms-flex:1;flex:1}@media only screen and (max-width: 480px){.Toastify__toast{margin-bottom:0}}.Toastify__close-button{color:#fff;font-weight:bold;font-size:14px;background:transparent;outline:none;border:none;padding:0;cursor:pointer;opacity:0.7;transition:0.3s ease;-ms-flex-item-align:start;align-self:flex-start}.Toastify__close-button--default{color:#000;opacity:0.3}.Toastify__close-button:hover,.Toastify__close-button:focus{opacity:1}@keyframes Toastify__trackProgress{0%{transform:scaleX(1)}100%{transform:scaleX(0)}}.Toastify__progress-bar{position:absolute;bottom:0;left:0;width:100%;height:5px;z-index:9999;opacity:0.7;background-color:rgba(255,255,255,0.7);transform-origin:left}.Toastify__progress-bar--animated{animation:Toastify__trackProgress linear 1 forwards}.Toastify__progress-bar--controlled{transition:transform .2s}.Toastify__progress-bar--rtl{right:0;left:initial;transform-origin:right}.Toastify__progress-bar--default{background:linear-gradient(to right, #4cd964, #5ac8fa, #007aff, #34aadc, #5856d6, #ff2d55)}@keyframes Toastify__bounceInRight{from,60%,75%,90%,to{animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1)}from{opacity:0;transform:translate3d(3000px, 0, 0)}60%{opacity:1;transform:translate3d(-25px, 0, 0)}75%{transform:translate3d(10px, 0, 0)}90%{transform:translate3d(-5px, 0, 0)}to{transform:none}}@keyframes Toastify__bounceOutRight{20%{opacity:1;transform:translate3d(-20px, 0, 0)}to{opacity:0;transform:translate3d(2000px, 0, 0)}}@keyframes Toastify__bounceInLeft{from,60%,75%,90%,to{animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1)}0%{opacity:0;transform:translate3d(-3000px, 0, 0)}60%{opacity:1;transform:translate3d(25px, 0, 0)}75%{transform:translate3d(-10px, 0, 0)}90%{transform:translate3d(5px, 0, 0)}to{transform:none}}@keyframes Toastify__bounceOutLeft{20%{opacity:1;transform:translate3d(20px, 0, 0)}to{opacity:0;transform:translate3d(-2000px, 0, 0)}}@keyframes Toastify__bounceInUp{from,60%,75%,90%,to{animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1)}from{opacity:0;transform:translate3d(0, 3000px, 0)}60%{opacity:1;transform:translate3d(0, -20px, 0)}75%{transform:translate3d(0, 10px, 0)}90%{transform:translate3d(0, -5px, 0)}to{transform:translate3d(0, 0, 0)}}@keyframes Toastify__bounceOutUp{20%{transform:translate3d(0, -10px, 0)}40%,45%{opacity:1;transform:translate3d(0, 20px, 0)}to{opacity:0;transform:translate3d(0, -2000px, 0)}}@keyframes Toastify__bounceInDown{from,60%,75%,90%,to{animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1)}0%{opacity:0;transform:translate3d(0, -3000px, 0)}60%{opacity:1;transform:translate3d(0, 25px, 0)}75%{transform:translate3d(0, -10px, 0)}90%{transform:translate3d(0, 5px, 0)}to{transform:none}}@keyframes Toastify__bounceOutDown{20%{transform:translate3d(0, 10px, 0)}40%,45%{opacity:1;transform:translate3d(0, -20px, 0)}to{opacity:0;transform:translate3d(0, 2000px, 0)}}.Toastify__bounce-enter--top-left,.Toastify__bounce-enter--bottom-left{animation-name:Toastify__bounceInLeft}.Toastify__bounce-enter--top-right,.Toastify__bounce-enter--bottom-right{animation-name:Toastify__bounceInRight}.Toastify__bounce-enter--top-center{animation-name:Toastify__bounceInDown}.Toastify__bounce-enter--bottom-center{animation-name:Toastify__bounceInUp}.Toastify__bounce-exit--top-left,.Toastify__bounce-exit--bottom-left{animation-name:Toastify__bounceOutLeft}.Toastify__bounce-exit--top-right,.Toastify__bounce-exit--bottom-right{animation-name:Toastify__bounceOutRight}.Toastify__bounce-exit--top-center{animation-name:Toastify__bounceOutUp}.Toastify__bounce-exit--bottom-center{animation-name:Toastify__bounceOutDown}@keyframes Toastify__zoomIn{from{opacity:0;transform:scale3d(0.3, 0.3, 0.3)}50%{opacity:1}}@keyframes Toastify__zoomOut{from{opacity:1}50%{opacity:0;transform:scale3d(0.3, 0.3, 0.3)}to{opacity:0}}.Toastify__zoom-enter{animation-name:Toastify__zoomIn}.Toastify__zoom-exit{animation-name:Toastify__zoomOut}@keyframes Toastify__flipIn{from{transform:perspective(400px) rotate3d(1, 0, 0, 90deg);animation-timing-function:ease-in;opacity:0}40%{transform:perspective(400px) rotate3d(1, 0, 0, -20deg);animation-timing-function:ease-in}60%{transform:perspective(400px) rotate3d(1, 0, 0, 10deg);opacity:1}80%{transform:perspective(400px) rotate3d(1, 0, 0, -5deg)}to{transform:perspective(400px)}}@keyframes Toastify__flipOut{from{transform:perspective(400px)}30%{transform:perspective(400px) rotate3d(1, 0, 0, -20deg);opacity:1}to{transform:perspective(400px) rotate3d(1, 0, 0, 90deg);opacity:0}}.Toastify__flip-enter{animation-name:Toastify__flipIn}.Toastify__flip-exit{animation-name:Toastify__flipOut}@keyframes Toastify__slideInRight{from{transform:translate3d(110%, 0, 0);visibility:visible}to{transform:translate3d(0, 0, 0)}}@keyframes Toastify__slideInLeft{from{transform:translate3d(-110%, 0, 0);visibility:visible}to{transform:translate3d(0, 0, 0)}}@keyframes Toastify__slideInUp{from{transform:translate3d(0, 110%, 0);visibility:visible}to{transform:translate3d(0, 0, 0)}}@keyframes Toastify__slideInDown{from{transform:translate3d(0, -110%, 0);visibility:visible}to{transform:translate3d(0, 0, 0)}}@keyframes Toastify__slideOutRight{from{transform:translate3d(0, 0, 0)}to{visibility:hidden;transform:translate3d(110%, 0, 0)}}@keyframes Toastify__slideOutLeft{from{transform:translate3d(0, 0, 0)}to{visibility:hidden;transform:translate3d(-110%, 0, 0)}}@keyframes Toastify__slideOutDown{from{transform:translate3d(0, 0, 0)}to{visibility:hidden;transform:translate3d(0, 500px, 0)}}@keyframes Toastify__slideOutUp{from{transform:translate3d(0, 0, 0)}to{visibility:hidden;transform:translate3d(0, -500px, 0)}}.Toastify__slide-enter--top-left,.Toastify__slide-enter--bottom-left{animation-name:Toastify__slideInLeft}.Toastify__slide-enter--top-right,.Toastify__slide-enter--bottom-right{animation-name:Toastify__slideInRight}.Toastify__slide-enter--top-center{animation-name:Toastify__slideInDown}.Toastify__slide-enter--bottom-center{animation-name:Toastify__slideInUp}.Toastify__slide-exit--top-left,.Toastify__slide-exit--bottom-left{animation-name:Toastify__slideOutLeft}.Toastify__slide-exit--top-right,.Toastify__slide-exit--bottom-right{animation-name:Toastify__slideOutRight}.Toastify__slide-exit--top-center{animation-name:Toastify__slideOutUp}.Toastify__slide-exit--bottom-center{animation-name:Toastify__slideOutDown} - -.groupRelationList ul{list-style:none;padding-left:30px}.groupRelationList ul li{font-weight:normal;list-style-type:none}.groupRelationList ul li:last-child{margin-bottom:16px}.groupRelationList>ul{padding-left:0;font-weight:bold}.groupRelationList .clickable{cursor:pointer;padding:2px 15px 2px 15px}.groupRelationList .clickable:hover{background-color:rgba(208,228,255,0.25);transition:background-color 0.3s linear} - -.calculator{margin-top:8px}.calculator .toolbar__popover b{color:#708}.calculator .groupRelationList{margin-top:1em}.calculator .nav-item{cursor:pointer}.calculator .exec-button.selection>.selection,.calculator .exec-button.selection>.query{display:none}.calculator .exec-button.selection:not(.selection-selected)>.query{display:inline}.calculator .exec-button.selection.selection-selected>.selection{display:inline}.calculator .tab-content-border{border:1px solid #d9d9d9;border-top-style:none;margin-bottom:16px;border-radius:2px}.calculator .tab-pane .editor-base>*:not(.toolbar):not(.CodeMirror):not(textarea){padding:0px 5px 5px 5px}.calculator .CodeMirror{border:1px solid #eee;height:auto}.calculator .CodeMirror-scroll{overflow-y:hidden;overflow-x:auto;min-height:250px}.calculator .CodeMirror-hints{z-index:2000}.calculator .CodeMirror-gutters{background-color:#fff;border-right-style:dashed}.calculator .CodeMirror .error{background-color:#f2dede;padding:2px;display:inline-block}.calculator .CodeMirror .CodeMirror-placeholder{color:#999}.calculator .CodeMirror-lint-tooltip{background:#eee;color:black}.calculator .CodeMirror-lint-tooltip{font-family:FreeSansMinimal}.calculator .history .dropdown-menu{left:auto;right:0px}.calculator .history .dropdown-menu li .replace-all{white-space:pre;padding:0 8px 0 8px} - -svg.railroad-diagram{background-color:#f5f2f0}svg.railroad-diagram path{stroke-width:3;stroke:black;fill:rgba(0,0,0,0)}svg.railroad-diagram text{font:bold 14px monospace;text-anchor:middle;white-space:pre}svg.railroad-diagram text.diagram-text{font-size:12px}svg.railroad-diagram text.diagram-arrow{font-size:16px}svg.railroad-diagram text.label{text-anchor:start}svg.railroad-diagram text.comment{font:italic 12px monospace}svg.railroad-diagram rect{stroke-width:3;stroke:black;fill:#cfc}svg.railroad-diagram path.diagram-text{stroke-width:3;stroke:black;fill:white;cursor:help}svg.railroad-diagram g.diagram-text:hover path.diagram-text{fill:#eee} - -@font-face{font-family:'FreeSansMinimal';src:local("FreeSansMinimal"),url(assets/FreeSansMinimal.be5838763530a3aede5cd6c4b067dc4d.otf) format("opentype")}body{font-family:DejaVu Sans, sans-serif}.cm-math,.math,.formula,.codemirror-toolbar{font-family:FreeSansMinimal}.highlight{padding:9px 14px;margin-bottom:14px;background-color:#f7f7f9;border:1px solid #e1e1e8;border-radius:4px}.table-nonfluid{width:auto !important}.example{margin-top:10px;margin-bottom:20px;margin-left:0;margin-right:0;background-color:#fff;border:1px solid #e1e1e8;border-radius:4px;box-shadow:none;position:relative;padding:18px 3px 3px 3px}.example:after{content:"Example:";position:absolute;top:2px;left:4px;font-size:12px;font-weight:bold;color:#bbb;text-transform:uppercase;letter-spacing:1px}.example.block{display:block}code{white-space:pre-wrap;display:inline-block}code.block{display:block}svg.railroad-diagram{display:block}#toc>h6{font-size:1.2em}.too-wide{overflow-x:auto}.scroll-top{position:fixed;bottom:0;right:6%;z-index:100;background:#d4d4d4;font-size:18px;border-top-left-radius:4px;border-top-right-radius:4px}.scroll-top a:link,.scroll-top a:visited{color:#222}*>a.anchor{display:none;color:#818181;font-size:0.64em}*:hover>a.anchor{display:inline}h4:not(:only-child){margin-top:5em}@media print{body{font-family:Latin Modern Roman, 'Junge', serif}code,svg.railroad-diagram text{font-family:Latin Modern Mono Light, 'Droid Sans Mono', monospace}svg.railroad-diagram text.comment,svg.railroad-diagram g.non-terminal text{font-style:italic}nav.navbar,.scroll-top{display:none}.too-wide{overflow-x:inherit}.too-wide>svg{width:auto !important;max-width:100% !important;height:auto !important}.table{border-collapse:collapse !important}.table th,.table td{border:1px solid #ddd !important;padding:0.3em}} - -@font-face{font-family:'FreeSansMinimal';src:local("FreeSansMinimal"),url(assets/FreeSansMinimal.be5838763530a3aede5cd6c4b067dc4d.otf) format("opentype")}body{font-family:DejaVu Sans, sans-serif}.cm-math,.math,.formula,.codemirror-toolbar{font-family:FreeSansMinimal}.highlight{padding:9px 14px;margin-bottom:14px;background-color:#f7f7f9;border:1px solid #e1e1e8;border-radius:4px}.example{margin-top:10px;margin-bottom:20px;margin-left:0;margin-right:0;background-color:#fff;border:1px solid #e1e1e8;border-radius:4px;box-shadow:none;position:relative;padding:18px 3px 3px 3px}.example:after{content:"Example:";position:absolute;top:2px;left:4px;font-size:12px;font-weight:bold;color:#bbb;text-transform:uppercase;letter-spacing:1px}code{white-space:pre}.group-container{border-left:5px solid #428bca;padding-left:4px;margin-bottom:1.2em;margin-left:8px}.teaser-more{cursor:pointer}.group-container ul.table-list li{float:left;list-style-type:none}table.table-inline{width:auto !important;display:inline-block;vertical-align:middle;margin-right:42px}.hidden{display:none}code{white-space:pre-wrap} - -@font-face{font-family:'FreeSansMinimal';src:url(assets/FreeSansMinimal.be5838763530a3aede5cd6c4b067dc4d.otf) format("opentype")}body{font-family:Open Sans Light, DejaVu Sans, sans-serif}.row{margin:0px;padding:0px;margin-bottom:50px;width:100% !important}.CodeMirror.readonly .CodeMirror-scroll{background-color:#DFDFDF}.history-code{white-space:pre}#logos{float:right}#logos img{margin-left:8px}@-webkit-keyframes wiggle{from{-webkit-transform:rotateZ(0deg);-webkit-transform-origin:0% 0%}50%{-webkit-transform:rotateZ(-1deg);-webkit-transform-origin:0% 0%}to{-webkit-transform:rotateZ(1deg);-webkit-transform-origin:0% 0%}}#execution-error div{-webkit-animation-name:wiggle;-webkit-animation-duration:.2s;-webkit-animation-iteration-count:1;-webkit-animation-timing-function:ease}#groups-tmp:empty{display:none;transition:display 0.5s;-webkit-transition:display 0.5s;-moz-transition:display 0.5s}#execution-error{padding-bottom:1em}.hint-keyword{color:#708}.hint-table,.hint-column{color:#000}.cm-math,.math,.formula{font-family:FreeSansMinimal}.highlight{padding:9px 14px;margin-bottom:14px;background-color:#f7f7f9;border:1px solid #e1e1e8;border-radius:4px}#lang-tabs{border-bottom-style:none}body.lang-ra *.lang-sql:not(.lang-ra),body.lang-ra *.lang-trc:not(.lang-ra),body.lang-sql *.lang-ra:not(.lang-sql),body.lang-sql *.lang-trc:not(.lang-sql){display:none}.replace:not(.btn),.replace-all:not(.btn){cursor:pointer}.replace:not(.btn):hover,.replace-all:not(.btn):hover{border-bottom:silver dashed 1px}.popover{max-width:450px}#groups-selector2{background-color:none}@media print{.navbar button,.navbar .navbar-collapse,.nav,#result-pag,#input-buttons,.toolbar,#groups-container{display:none !important}#workspace{border-style:none}.navbar-brand{margin-bottom:32px;font-size:1.2em}.tree-container{float:none}.result-pag{display:none}}html,body,#root{width:100%;height:100%;margin:0px !important;padding:0px !important}.navbar{height:64px;margin:0px;padding:0px;padding-left:64px;padding-right:64px;-webkit-box-shadow:0px 2px 10px 0px rgba(0,0,0,0.25);-moz-box-shadow:0px 2px 10px 0px rgba(0,0,0,0.25);box-shadow:0px 2px 10px 0px rgba(0,0,0,0.25)}.navItemSpace{padding-right:16px;padding-left:16px}.view-max{width:100%;height:calc(100% - 64px);margin:0px;padding:0px;padding-top:32px;overflow-y:auto}.download-button{margin-right:16px}@media only screen and (max-width: 991px){.navbar{display:none}.view-max{height:100% !important}.groups-container{display:none !important}.calculator-container{height:calc(100% - 42px);margin:0px !important;padding:0px !important;width:100%;position:absolute;top:0px;left:0px}.tab-content,.tab-pane,.editor-base{height:100% !important;margin:0px !important;padding:0px !important}.tab-pane>div{height:100%}.input-buttons{height:INPUT_BUTTONS_ROW;margin:5px}.editor-base{height:100%;display:flex;flex-direction:column}.CodeMirror{flex-grow:1;margin:0px !important;padding:0px !important}.exec-errors{display:none}.exec-result{display:none}.hideOnSM{display:none !important}.modal{padding:0 !important}.modal .modal-dialog{width:calc(100% - 32px);height:calc(100% - 32px);max-width:none;margin:16px 16px 16px 16px}.modal .modal-content{height:100%;border:0;border-radius:0}.modal .modal-body{overflow-y:auto}}@media only screen and (min-width: 992px){.showOnSM{display:none !important}.modal-dialog{min-width:800px}}.toolbar__popover{min-width:24px}.toolbar__popover__dropdown{width:64px}.fancyToastWarning{background-color:#ff9d01;backdrop-filter:blur(5px)}.fancyToastError{background-color:rgba(255,0,0,0.5);backdrop-filter:blur(5px)}h4{margin-top:0px !important}.fullWidthBtn{width:100%;margin-top:8px}.maxSize{width:100%;height:100%}.sk-fading-circle{margin:100px auto;width:40px;height:40px;position:relative}.sk-fading-circle .sk-circle{width:100%;height:100%;position:absolute;left:0;top:0}.sk-fading-circle .sk-circle:before{content:'';display:block;margin:0 auto;width:15%;height:15%;background-color:#333;border-radius:100%;-webkit-animation:sk-circleFadeDelay 1.2s infinite ease-in-out both;animation:sk-circleFadeDelay 1.2s infinite ease-in-out both}.sk-fading-circle .sk-circle2{-webkit-transform:rotate(30deg);-ms-transform:rotate(30deg);transform:rotate(30deg)}.sk-fading-circle .sk-circle3{-webkit-transform:rotate(60deg);-ms-transform:rotate(60deg);transform:rotate(60deg)}.sk-fading-circle .sk-circle4{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.sk-fading-circle .sk-circle5{-webkit-transform:rotate(120deg);-ms-transform:rotate(120deg);transform:rotate(120deg)}.sk-fading-circle .sk-circle6{-webkit-transform:rotate(150deg);-ms-transform:rotate(150deg);transform:rotate(150deg)}.sk-fading-circle .sk-circle7{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.sk-fading-circle .sk-circle8{-webkit-transform:rotate(210deg);-ms-transform:rotate(210deg);transform:rotate(210deg)}.sk-fading-circle .sk-circle9{-webkit-transform:rotate(240deg);-ms-transform:rotate(240deg);transform:rotate(240deg)}.sk-fading-circle .sk-circle10{-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.sk-fading-circle .sk-circle11{-webkit-transform:rotate(300deg);-ms-transform:rotate(300deg);transform:rotate(300deg)}.sk-fading-circle .sk-circle12{-webkit-transform:rotate(330deg);-ms-transform:rotate(330deg);transform:rotate(330deg)}.sk-fading-circle .sk-circle2:before{-webkit-animation-delay:-1.1s;animation-delay:-1.1s}.sk-fading-circle .sk-circle3:before{-webkit-animation-delay:-1s;animation-delay:-1s}.sk-fading-circle .sk-circle4:before{-webkit-animation-delay:-0.9s;animation-delay:-0.9s}.sk-fading-circle .sk-circle5:before{-webkit-animation-delay:-0.8s;animation-delay:-0.8s}.sk-fading-circle .sk-circle6:before{-webkit-animation-delay:-0.7s;animation-delay:-0.7s}.sk-fading-circle .sk-circle7:before{-webkit-animation-delay:-0.6s;animation-delay:-0.6s}.sk-fading-circle .sk-circle8:before{-webkit-animation-delay:-0.5s;animation-delay:-0.5s}.sk-fading-circle .sk-circle9:before{-webkit-animation-delay:-0.4s;animation-delay:-0.4s}.sk-fading-circle .sk-circle10:before{-webkit-animation-delay:-0.3s;animation-delay:-0.3s}.sk-fading-circle .sk-circle11:before{-webkit-animation-delay:-0.2s;animation-delay:-0.2s}.sk-fading-circle .sk-circle12:before{-webkit-animation-delay:-0.1s;animation-delay:-0.1s}@-webkit-keyframes sk-circleFadeDelay{0%,39%,100%{opacity:0}40%{opacity:1}}@keyframes sk-circleFadeDelay{0%,39%,100%{opacity:0}40%{opacity:1}}.flexSpan{flex-grow:1} - diff --git a/calc.63bcec32e84a8d02d71c.css.gz b/calc.63bcec32e84a8d02d71c.css.gz deleted file mode 100644 index 0a7402c23adf9a83cc9ddebe8e59de44047d21e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39015 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

7!~+uin2{?Df9uzO81n7A5B3M{tC6A{v$H3=8e) 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≈o^*!yPG3l-qFB*`4`gk~WDo5oSmoL<@@ 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 diff --git a/calc.htm b/calc.htm new file mode 100644 index 000000000..502195a39 --- /dev/null +++ b/calc.htm @@ -0,0 +1,416 @@ + + + + + + relational algebra calculator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+ +
+ + + + + + +
+
+ +
    + +
+ +
+
+ +
+ + +
+
+ +
+
+ π + σ + ρ + + τ + γ +
+ +
+ + + ¬ + + = + + + +
+
+ + + ÷ + - +
+
+ + + + + + + + +
+ +
+ = + -- + /* + {} + +
+ +
+ + + +
+
+ + +
+ + +
+ + +
+ + +
+   + +
+
+
+ +
+
+ + + +
+
+
+ select + from + where + group + having + order + limit +
+ +
+ + + +
+
+ + +
+ + +
+ + +
+ + +
+   + +
+
+
+ +
+
+ + + +
+
+
+ calc.editors.group.toolbar.import-sql + calc.editors.group.toolbar.add-new-relation +
+
+ + +
+ + +
+ + +
+ + +
+ + +
+
+
+ +
+
+ + +
+
+ + +
+ +

+ +
+
+
+ +
+
+ + diff --git a/css/family_tree.css b/css/family_tree.css new file mode 100644 index 000000000..5996cb97c --- /dev/null +++ b/css/family_tree.css @@ -0,0 +1,153 @@ +/* +Copyright (c) 2014 by Ilya Pestov (http://codepen.io/Pestov/pen/BLpgm) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +.tree { + margin: 16px; +} + +.tree ul, .tree li { + margin: 0; + padding: 0; +} + +.tree ul { + padding-top: 20px; + position: relative; + padding-left: 0px; + + transition: all 0.5s; + -webkit-transition: all 0.5s; + -moz-transition: all 0.5s; +} + +.tree li { + /* float: left; */ + text-align: center; + list-style-type: none; + position: relative; + padding: 20px 5px 0 5px; + + transition: all 0.5s; + -webkit-transition: all 0.5s; + -moz-transition: all 0.5s; + + vertical-align: top; + display: inline-block; +} + +.tree li::before, .tree li::after { + content: ''; + position: absolute; + top: 0; + right: 50%; + border-top: 2px solid #ccc; + width: 50%; + height: 20px; +} + +.tree li::after { + right: auto; + left: 50%; + border-left: 2px solid #ccc; +} + +/*We need to remove left-right connectors from elements without +any siblings*/ +.tree li:only-child::after, .tree li:only-child::before { + display: none; +} + +/*Remove space from the top of single children*/ +.tree li:only-child { + padding-top: 0; +} + +/*Remove left connector from first child and +right connector from last child*/ +.tree li:first-child::before, .tree li:last-child::after { + border: 0 none; +} + +/*Adding back the vertical connector to the last nodes*/ +.tree li:last-child::before { + border-right: 2px solid #ccc; + border-radius: 0 4px 0 0; + -webkit-border-radius: 0 4px 0 0; + -moz-border-radius: 0 4px 0 0; +} + +.tree li:first-child::after { + border-radius: 4px 0 0 0; + -webkit-border-radius: 4px 0 0 0; + -moz-border-radius: 4px 0 0 0; +} + +/*Time to add downward connectors from parents*/ +.tree ul ul::before { + content: ''; + position: absolute; + top: 0; + left: 50%; + border-left: 2px solid #ccc; + width: 0; + height: 20px; +} + +.tree li a { + background-color: #D6D6D6; + border: none; + color: black; + + padding: 5px 10px; + text-decoration: none; + display: inline-block; + max-width: 600px; + + border-radius: 4px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + + transition: all 0.5s; + -webkit-transition: all 0.5s; + -moz-transition: all 0.5s; +} + +/* active part */ +.tree li a.active, +.tree li a.active + ul li a:not(:hover) { + background-color: #5C5C5C; + color: white; + border: none; +} + +/*Connector styles on hover*/ +.tree li a.active + ul li::after, +.tree li a.active + ul li::before, +.tree li a.active + ul::before, +.tree li a.active + ul ul::before { + border-color: #5C5C5C; +} + +/*Time for some hover effects*/ +/*We will apply the hover effect the the lineage of the element also*/ +.tree li a:hover, +.tree li a:hover + ul li a { + background: #51a351 !important; + color: #fff !important; + +} + +/*Connector styles on hover*/ +.tree li a:hover + ul li::after, +.tree li a:hover + ul li::before, +.tree li a:hover + ul::before, +.tree li a:hover + ul ul::before { + border-color: #51a351 !important; +} diff --git a/css/index.css b/css/index.css new file mode 100644 index 000000000..f078b284f --- /dev/null +++ b/css/index.css @@ -0,0 +1,345 @@ +@font-face { + font-family: 'FreeSansMinimal'; + src: url('../resources/font/FreeSansMinimal.otf') format('opentype'); +} + +body { + font-family: Open Sans Light, DejaVu Sans, sans-serif; +} + +.row { + margin-bottom: 50px; +} + +.tree { + font-size: 18px; +} + +.result-pag { + text-align: center; +} + +.result-pag .pagination { + margin: 0px; +} + +.tree { + /* float: left; */ +} + +.tree a { + cursor: pointer; +} + +.tree .label-info-0 { + background-color: #5bc0de; +} + +.tree .label-info-1 { + background-color: #DE865A; +} + +.tree .label-info-2 { + background-color: #AA5ADE; +} + +.tree .label-info-3 { + background-color: #5A68DE; +} + +.tree .label-info-4 { + background-color: #DED15A; +} + +.tree .label-info-5 { + background-color: #5A80DE; +} + +.toolbar { + background: none; + border-color: #d9d9d9; + background-color: #f5f5f5; + border-bottom: 1px solid #ddd; + font-size: 16px; + line-height: 31px; + vertical-align: middle; +} + +.toolbar .math { + font-size: 17px +} + +.toolbar > div { + display: inline-block; + margin-right: 6px; +} + +.toolbar > div > span { + padding: 3px 3px 3px 3px; + display: inline-block; + min-width: 1.02em; + text-align: center; + height: 100%; + cursor: pointer; +} + +.toolbar > div > span:hover { + background-color: #d9d9d9; + border-style: none !important; +} + +.tab-content-border { + border: 1px solid #d9d9d9; + border-top-style: none; + margin-bottom: 16px; + border-radius: 2px; +} + +#input { + /*padding-top: 10px;*/ +} + +.history-code { + white-space: pre; +} + +#logos { + float: right; +} + +#logos img { + margin-left: 8px; +} + +#main-editors .tab-pane > *:not(.toolbar):not(.CodeMirror):not(textarea) { + padding: 0px 5px 5px 5px; +} + +@-webkit-keyframes wiggle { + from { + -webkit-transform: rotateZ(0deg); + -webkit-transform-origin: 0% 0%; + } + 50% { + -webkit-transform: rotateZ(-1deg); + -webkit-transform-origin: 0% 0%; + } + to { + -webkit-transform: rotateZ(1deg); + -webkit-transform-origin: 0% 0%; + } +} + +.exec-button.selection > .selection, .exec-button.selection > .query { + display: none; +} + +.exec-button.selection:not(.selection-selected) > .query { + display: inline; +} + +.exec-button.selection.selection-selected > .selection { + display: inline; +} + +#execution-error div { + -webkit-animation-name: wiggle; + -webkit-animation-duration: .2s; + -webkit-animation-iteration-count: 1; + -webkit-animation-timing-function: ease; +} + +#toolbar-popovers b { + color: #708; +} + +ul#groups-selector-list { + list-style: none; + padding-left: 0; + font-weight: bold; +} + +ul#groups-selector-list > li { + padding-bottom: 12px; + font-weight: normal; +} + +#groups-tmp:empty { + display: none; + + transition: display 0.5s; + -webkit-transition: display 0.5s; + -moz-transition: display 0.5s; +} + +ul#groups { + padding-left: 0em; +} + +ul#groups li { + list-style-type: none; +} + +ul#groups > li { + padding-bottom: 4px; +} + +#groups ul { + padding-left: 30px; +} + +#execution-error { + padding-bottom: 1em; +} + +.hint-keyword { + color: #708; +} + +.hint-table, .hint-column { + color: #000; +} + +.cm-math, .math, .formula { + font-family: FreeSansMinimal; +} + +.CodeMirror { + border: 1px solid #eee; + height: auto; +} + +.CodeMirror-scroll { + overflow-y: hidden; + overflow-x: auto; + min-height: 250px; +} + +.CodeMirror.readonly .CodeMirror-scroll { + background-color: #DFDFDF; +} + +.CodeMirror-hints { + z-index: 2000; /* for use in bs modal */ +} + +.CodeMirror-gutters { + background-color: #fff; + border-right-style: dashed; +} + +.CodeMirror .error { + background-color: #f2dede; + padding: 2px; + display: inline-block; +} + +.CodeMirror .CodeMirror-placeholder { + color: #999; +} + +.CodeMirror-lint-tooltip { + background: #eee; + color: black; +} + +.highlight { + padding: 9px 14px; + margin-bottom: 14px; + background-color: #f7f7f9; + border: 1px solid #e1e1e8; + border-radius: 4px; +} + +.result-table { + overflow-x: auto; +} + +.result .result-table table { + width: auto; +} + +.result .result-table table .null { + font-style: italic; +} + +#lang-tabs { + border-bottom-style: none; +} + +body.lang-ra *.lang-sql:not(.lang-ra), body.lang-ra *.lang-trc:not(.lang-ra), +body.lang-sql *.lang-ra:not(.lang-sql), body.lang-sql *.lang-trc:not(.lang-sql), +body.lang-trc *.lang-ra:not(.lang-trc), body.lang-trc *.lang-sql:not(.lang-trc) { + display: none; +} + +.replace:not(.btn), .replace-all:not(.btn) { + cursor: pointer; +} + +.replace:not(.btn):hover, .replace-all:not(.btn):hover { + border-bottom: silver dashed 1px; +} + +#history .dropdown-menu { + left: auto; + right: 0px; +} + +#history .dropdown-menu li .replace-all { + white-space: pre; + padding: 0 8px 0 8px; +} + +.CodeMirror-lint-tooltip { + font-family: FreeSansMinimal; +} + +.popover { + max-width: 450px; +} + +#groups-selector2 { + background-color: none; +} + +ul.table-list li { + list-style-type: none; + display: inline-block; + margin-right: 16px; + margin-bottom: 16px; +} + +.grid-editor-container { + padding: 10px; + background-color: #FFFFFF; + /* border-top: 2px inset; */ + /* outline: groove; */ + margin-top: 5px; + margin-bottom: 5px; +} + +@media print { + .navbar button, .navbar .navbar-collapse, .nav, #result-pag, #input-buttons, .toolbar, #groups-container { + display: none !important; + } + + #workspace { + border-style: none; + } + + .navbar-brand { + margin-bottom: 32px; + font-size: 1.2em + } + + .tree-container { + float: none; + } + + .result-pag { + display: none; + } +} + + diff --git a/db/tests/index.htm b/db/tests/index.htm new file mode 100644 index 000000000..ae6f2b0e7 --- /dev/null +++ b/db/tests/index.htm @@ -0,0 +1,18 @@ + + + + + tests + + + + + + + +
+
+ + + + diff --git a/help.htm b/help.htm new file mode 100644 index 000000000..10b0eb3c4 --- /dev/null +++ b/help.htm @@ -0,0 +1,2859 @@ + + + + + + RelaX - relational algebra calculator + + + + + + + + + + + + + + + + + + + + +
+
+
+

RelaX - Help

+ +
+ +

Tutorial - user

+ +

The core concepts

+ +

The goal of this tutorial is to give a quick introduction how to use the relational algebra calculator + and its concepts. It assumes that you already know the relational algebra or are learning it from other + sources.

+ +

There is no real standard for the relational algebra like there is for SQL. So every book or teacher + might have its slightly different interpretation and notation.
+ The goal of this progam was to support the most commonly used "mathematical" notation used by Database Systems The Complete Book 2nd + Edition by Hector Garcia-Molina, Jeff Ullman, and Jennifer Widom, Datenbanksysteme: Eine Einführung + by Alfons Kemper and André Eickler and Wikipedia - Relational Algebra and + others. +

+ +

relations

+ +

The core element of the calculator is the relation (or table) which consists of a fixed number of + attributes (or columns) in a fixed order (this is called the schema of the relation) and a set of tuples + or rows containing the specific values.

+ +

Each attribute has three distinct properties: its type, its position and its name.

+ +

The type or domain of an attribute is either string, number, date or boolean.
+ The type is used for example to determine if two values can be compared in a boolean expression or if + two schemas are union compatible. In most cases the type of the attributes are obvious if you look at + the values.

+ +

The position of each attribute in a schema is fixed and can be used to adress the attributes.
+ An example would be the projection of the first and third attribute or column of an arbitrary relation + R: π [1], [3] ( R ) +

+ +

The full qualified name of the attribute is a unique identifier of the attribute within the schema of its + relation. + It consists of the name itself and a relation qualifier and are written like in SQL as R.a + where a is the name and R is the relation qualifier.
+ An example would be the projectoin of the attributes a, b from a relation R: π R.a, R.b ( R )
+ The default relation qualifier of each attribute is the name of its relation.
+ + If the attributes name without the qualifier is unique within the relation's schema, it also can be used + to address a specific attribute.
+ The previous example could also be written as π a, b ( R ). +

+ +

Each relation has a set of tuples (or rows). This means that there are no duplicate tuples within one + relation and the duplicate-elimination is implicitly executed after every single step of the + calculation.
+ The tuples in the calculator have a defined order and unlike a normal database system all operations are + implemented to preserve that order. This should help the users to see what has changed from one step to + the next. +

+ +

so far we covered that

+
    +
  • relations are the core elements,
  • +
  • relations have a schema and a set of tuples,
  • +
  • each attribute in the schema has +
      +
    • data-type
    • +
    • a position
    • +
    • a fully qualified name (RELATION.attributename)
    • +
    +
  • +
  • and that each attribute can be addressed within an operation using +
      +
    • its position e.g. π [1], [2] ( R ),
    • +
    • the attribute name e.g. π a, b ( R )
    • +
    • or its full quallified name if the unqualified is not unique e.g. π R.a, + S.a ( R x S )
    • +
    +
  • +
+ +

Alternative plain text notation

+ +

Before we introduce how to use the operators this should be a quick introduction of a very handy feature + of the relational algebra calculator: the alternative plain text notation

+ +

The "classic" mathematical notation uses greek letters like π, σ for the unary operations and + special symbols like the join symbol or the union symbol + for some binary operations.
+ This symbols can be entered using the toolbar at the top of the editor. +

+ +

This calculator also supports a alternative syntax for all this symbols that follows two very simple + rules: Every greek letter can be substituted with its name spelled out ("pi" for π, "gamma" + for γ) and every other symbol has an equivalent name that is borrowed from SQL, programming + languages like C and Set theory.

+ +

This substitutions should be easy to read and much more important very easy to write because you don't + need any toolbar or mouse. The calculator also supports autocomplete: just press [CTRL]+[SPACE] to + complete the current keyword.
+ This feature should help you to write your statements more quickly and fluently. +

+ + π R.a, S.a, S.b +σ R.a = S.a ∧ ( R.a > 5 ∨ R.a < 0 ) ( + R ⨯ S +) + + is equivalent to: + + pi R.a, S.a, S.b +sigma R.a = S.a and ( R.a > 5 or R.a < 0 ) ( + R cross join S +) + + In the following table you can see a list of all supported substitutions: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
classical notationalternative notation
πpi
σsigma
ρrho
τtau
γgamma
intersect
union
-\
÷/
+
    +
  • x
  • +
  • cross join
  • +
+
+
    +
  • join
  • +
  • inner join
  • +
  • natural join
  • +
+
+
    +
  • left join
  • +
  • left outer join
  • +
+
+
    +
  • right join
  • +
  • right outer join
  • +
+
full outer join
left semi join
right semi join
+
    +
  • anti semi join
  • +
  • anti join
  • +
+
<- + pi new_name <- a ( R ) +
-> + pi a -> new_name ( R ) +
+ + +
    +
  • schema preserving operations - operations where the resulting relation has the same schema as its + first argument-relation: +
      +
    • selection
    • +
    • union
    • +
    • intersection
    • +
    • subtraction
    • +
    • orderby
    • +
    • left outer join
    • +
    • left semi join
    • +
    • anti join
    • +
    +
  • +
+ +

Relational algebra

+ +

For this Part we use the "bank example" + Dataset with 3 relations: Customers, Accounts and PremiumCustomers. By + convention relations start with a uppercase letter and attributes with a lower case letter.

+ +

Open and inspect dataset

+ +

Open the dataset used in this tutorial using the following link to the "bank example" Dataset.

+ +

You find the relations and their attributes listed on the side and if you hover a relations name a + preview of the first view tuples is displayed.

+ + +

The most basic query

+ +

After you have found the Dataset you can formulate the very first and most basic query in relational + algebra: a relation without any further manipulation.

+ + +

Just enter the name of a relation into the code editor or click on the relation/attribute names to insert + them into the code editor.
Note that the editor supports auto completing the relation/attribute names + of the current dataset and the operators with [CTRL]+[SPACE]

+ +

So if you want all tuples of the relation Customer you should have the following statement: Customer. + And get all the tuples if you press the execute button or press [CTRL]+[RETURN].

+ + +

Unary operations

+ +

All unary operations have the same basic syntax FUNCTION ARGUMENT ( + CHILD_EXPRESSION ).

+ +

The braces around the CHILD_EXPRESSION can be omitted. In this case the + predefined operator precedence for relational algebra applies. +

+ +

A complete list of the supported relalg operations can be found here: general + syntax, unary operations and binary operations.

+ +

The projection is one of the basic operations that allow to choose which of the attributes of the parent + relations should be included in the new one and in which order they should be.

+ +

Renaming a relation (ρ) changes the qualifiers of all the relations attributes but does not touch the + tuples.

+ +

Renaming an attribute (ρ) only changes the name of a specific attribute (and leaves his + relation-qualifier unchanged).

+ +

The statement pi balance ( Accounts ) returns a new relation with only the balance + attribute.

+ +

The next statement gets the balance with the account-id after renaming the relation to A and + renames one of the attributes.

+ rho account_number <- aid ( + pi aid, A.balance ( + rho A ( + Accounts + ) + ) +) + +

Like in SQL or most programming languages you can format your statement and use SQL like + comments (with -- ... or /* ... */) to increase the readability.

+ +

The next statement uses a selection to filter the tuples of a relation based on a boolean expression. The + calculator supports complex boolean expression with functions and built in operator precedence. +
The attributes in the boolean expression can be given as name or numeric position like with the + projection. +

+ +

The next statement selects all customers-ids of customers who have the same value for their firstname and + lastname.

+ -- this should return an relation with no tuples: +pi cid ( + sigma firstname=lastname ( Customers ) +) + + +

The next example uses a more complex expression to get all accounts with a balance over 100 or under + -100.

+ sigma balance > 100 or (balance*-1 > 100) ( Accounts ) +-- (balance < -100) would also be correct + +

As a shorter alternative you can use a function in your expression to get + the same result:

+ sigma abs(balance) > 100 ( Accounts ) + + + + + +

Tutorial - maintainer

+ +

+ Everybody can provide datasets that can be used in the relational algebra calculator and share them with + others.
+ We assume the scenario of a teacher wanting to provide a dataset for his/her students for this short + tutorial. +

+ +

+ The datasets are specified in a simple text format and can be shared with others via GitHub Gists (a simple and free platform to share snippets).
+ The shared gist gets an unique ID and the relational algebra calculator can load the dataset directly + using this ID. +

+ +

Creating a dataset

+ +

+ The fist step is the creation of the dataset which is actually only a group of relation definitions with + some additional information and is therefore refered as group in the specified format.
+ The relations can then be used by the students to formulate the there statements.
+ Lets assume we want to create a dataset of employees of a company. +

+ + + + Every group definition starts with a simple header which (at least) contains the name of the group: + + group: bank example + + every header field starts with the name of the field and is followed by a colon for single line values. + + The next (optional) header field we should specify is the description. It should contain information like + who is maintaining this dataset or where to find additional information.
+ In the description Markdown can be used to format the + text or set links to external resources. + +

In our example we add a description that takes more than a single line and therefore we enclose the value + in double brackets instead of using the colon.

+ + group: bank example +description[[ the data for this dataset was generated using <http://www.generatedata.com/> + +* the relation _Customers_ contains basic information about the customers of the bank. +The relation _Accounts_ contains the basic information of a single account. +Note that a customer can have any number of accounts. +* the relation _PremiumCustomers_ contains +the customer-ids of all customers with a total balance over 1000 +]] + + +

The next step is to actually add the relations the students can use for their queries.
+ + The relation definitions are use the relational algebra syntax that can be used in this tool.
+ + Every relation is defined by a single variable assignment where the name of the variable is used as the + relations name and the result of the expression defines the relation.
+ The relalg expression can use all features that can be used in the tool and can also use other relations + defined within the same dataset.
+ Note that the name of the relation is used as the qualifier of each attribute/column.

+ +

For the relation Customers relation we use the inline + relation syntax as the most basic method to define the relation and can also be edited using the + relation editor which is a simple spread-sheet like + editor.
+ The inline relations in combination with the editor should be very easy to use if you enter the data + directly or if you have them as a csv/spread-sheet file. +

+ + group: bank example +description[[ the data for this dataset was generated using <http://www.generatedata.com/> + +* the relation _Customers_ contains basic information about the customers of the bank. +* the relation _Accounts_ contains the basic information of a single account. Note that a customer can +have any number of accounts. +* the relation _PremiumCustomers_ contains the customer-ids of all customers with a total balance over +1000 +]] + +Customers = { cid firstname lastname +1 Dexter Simpson +2 Kaseem Gallagher +3 Kuame Hamilton +4 Robert Thompson +5 Rhiannon Valentine +6 Calvin Mays +} + +Accounts = { +aid, cid, balance:number +1, 1, 66 +2, 1, -304 +3, 2, 272 +4, 3, 3472 +5, 4, 975.7 +6, 4, 93 +7, 5, 534 +8, 5, -75.5 +} + + +

+ As we can see the name of the relations are defined by the assignments.
+ The inline-relations are enclosed by curly brackets and contain the names of the attributes/columns in + the first line and then a tuple/row per line where the values are simply separated by whitespace. You + can also other seperators and can define the types explicitly as we can see at the Accounts relation. + For further information can be found at inline relation + description. +

+ +

+ Note that, unlike the variables used in a query, the definition of a new relation implicitly sets the + attribute qualifier to the name of the relation. + So the schema of the account relation is (Accounts.aid, Accounts.cid, Accounts.balance). + This allows each attribute to be accessible with this name. +

+ +

The last relation we need to add in this example is the relation containing the banks premium Customers. +
+ They are specified by using the other two relations in a simple relational algebra statement that + selects all customers with a total balance over 1000. +

+ + + group: bank example +description[[ the data for this dataset was generated using <http://www.generatedata.com/> + +* the relation _Customers_ contains basic information about the customers of the bank. +* the relation _Accounts_ contains the basic information of a single account. Note that a customer can +have any number of accounts. +* the relation _PremiumCustomers_ contains the customer-ids of all customers with a total balance over +1000 +]] + +Customers = { cid firstname lastname +1 Dexter Simpson +2 Kaseem Gallagher +3 Kuame Hamilton +4 Robert Thompson +5 Rhiannon Valentine +6 Calvin Mays +} + +Accounts = { +aid, cid, balance:number +1, 1, 66 +2, 1, -304 +3, 2, 272 +4, 3, 3472 +5, 4, 975.7 +6, 4, 93 +7, 5, 534 +8, 5, -75.5 +} + +PremiumCustomers = + pi cid ( + sigma sum > 1000 ( + gamma cid; sum(balance)->sum ( + Accounts + join Customers + ) + ) + ) + + +

We have now seen how to define a dataset with its header containing the name and the description followed + by relational algebra assignments defining the relations of the dataset.

+ +

We can paste this definition directly in the Group Editor to load and use it.
+ In the next section we want to look at how we can publish this definition so that we give our students a + single url or id to directly load the dataset. +

+ +

Share a dataset

+ +

If we want to share the definition of a dataset with other people we could simply give them the + definition and they load it using the group editor, but that would not be that practical for most + cases.

+ +

The simpler solution (for the users) is to publish the definition as a GitHub Gist and share the ID of the gist with others.

+ +

Just create a gist with the definition as its content (the filename does not matter) and publish it. The + ID of the Gist can now be found at the top of the page as gist:xxxxxxxxxxxx or in the url after + the last slash.

+ +

This ID can then be shared and loaded in the interface or the calculator can be called directly with a + specific ID by using using the parameter ?data=gist:xxxxxxxxxxxxxx.

+ +

For example the simple bank definition of this tutorial has been published as a Gist with the ID + 2cfb981fbc5676182d64 and can therefore be loaded directly by appending ?data=gist:2cfb981fbc5676182d64 + to the url of the calculator.

+ + +

Reference - relational algebra

+ +

General syntax

+ +
+

assignment

+ + + + + +
syntaxNAME = EXPRESSION
+ +
+

Defines a new local variable with the name NAME; its content is defined by + EXPRESSION

+ +

The name of the new relation must be unique.

+ +

The definition has to be executed with the statement.

+ +
+ TestA = π a,b R +TestB = σ d > 0 S + +-- statement using the variable +TestA join TestB +
+ +

An assignment (= definition of a variable) is no valid relational algebra expression on its own. + If you miss the acutal query a error is thrown (Error: only assignments found; query is + missing). +

+ +
+ -- this is the definition of the variable +Test = π Customer.firstname, surname ( Customer ) + +-- this is the actual query/statement using the variable +Test +
+ +

+ The defined variable can be used like the assigned expression could be used because + every usage of the variable gets replaced with its definition before the query gets executed. +
This also means that the variable-name has no influence on the schema of the expression + and the names of the attributes/columns are not affected by assignment: + X = R +X join S + The attributes of the relation R are only accessible with its original names (R.a, R.b, ..), + and are not affected by the assignment. +

+ +

There is a known problem when the last assignment ends with a natural join and the query consists + of a single relation:

+ A = S join R +A -- this is the query + +

+ The statement is ambiguous and the parser interprets it as A = (S join R A) + where R is interpreted as a column argument for the theta-join and therefore detects a + cyclic usage of the variable A. +

+ +

+ Solution: To get the expected behaviour you have to set braces around the assigned expression + like A = (S join R) + A +

+
+
+ +
+

single-line comment

+ + + + + +
syntax-- COMMENT_TEXTEXPRESSION
+
+

the '--' must be followed by at least one whitespace charater! inserts a comment; its text goes + until the end of the line

+ +

comments are recognized as whitespace

+ +
Test = +-- This is the expression that is assigned to Test: +π Customer.firstname, surname ( Customer ) +
+
+
+ +
+

pre defined relation

+ + + + + +
syntaxRELATION_NAME
+
+

Uses a pre defined relation with the name RELATION_NAME

+ +

The code completion only works for this relations.

+ +
( Customers ) cross join ( Accounts ) +
+
+
+ +
+

multi-line comment

+ + + + + + +
syntax/* COMMENT_TEXT */ + EXPRESSION
+
+

inserts a comment that can span multiple lines

+ +

comments are recognized as whitespace

+ +
+ /* This is +a very +very +long comment */ +Test = π Customer.firstname, surname ( Customer ) +
+
+
+ +
+

inline-relation

+ + + + + +
syntax{COLUMN_NAME_1:COLUMN_TYPE_1 ... +ROW_1 +ROW_2 +... +} +
+
+

The inline-relation is a temporary relation that can be defined directly in the statement. It is + only valid in the defining statement

+ +

Every inline-relation is a valid expression and thus can be used at any position a + EXPRESSION is expected.

+ +

The inline-relation is defined by a header, that specifies the schema of the relation + and the rows containing the values and is surrounded by curly brackets.

+ +
+ The header is defined by a sequence of + QUALIFIER.COLUMN_NAME:COLUMN_TYPE separated by any whitespace, + comma or semicolon. + The QUALIFIER is optional. Also the COLUMN_TYPE can be omitted if the type is well + defined by the values of that column. The first non null value of a column defines its type. +
True and false (case insensitive without quotes) are reserved for a boolean type. They can + be used as a simple string but they do not define the type of the column as string. +
The COLUMN_TYPE can be one of the following +
    +
  • string
  • +
  • number
  • +
  • date
  • +
  • boolean
  • +
+
+ +
+
+ +

+ The rows of the relation are defined by a list of values per row with the type of the + corresponding column. The values are separated by whitespace comma or semicolon. +
Simple strings only containing letters, numbers, hyphens, underlines, dots or periods + ([0-9a-zA-Z\-_\.]+) can be written without single quotes. NULL and null are + constant values. If null, true or false should be used as string they have te be quoted. +
More complex strings must be surrounded by single quotes: 'content' or content + but '' or 'long content containing spaces and special characters like !' or 'null'. +
Dates are written in ISO-format: YYYY-MM-DD without single quotes +
A null-value can be written as null or NULL (without single quotes). +
Numbers could be integers in the form (-?[0-9]+) or floats in the form (-?[0-9]+\.[0-9]+). +
Numbers in single quotes are recognized as numbers if the column type is defined as number + or has been detected to be number from a previous value; otherwise it will be a string value.. +
A boolean value is denoted as either true or false (case insensitive). +

+ +

The header and rows can be indented if needed.

+ +
+ -- type for column b is defined by the first value +rho A { + a:number, b + 1, 2 + 3, 4 +} +cross join +{ + a:string X.b:date c:number + Alpha 1970-01-01 1 + 'Beta 2' 1970-01-02 3 + '' 1970-01-03 4 +} +
+
+
+
+

relational algebra expression

+ +
+

A valid relational algebra expression is built by connecting relation-name or inline-relation + as atoms with the defined unary and binary operators.

+ + So a relational algebra expression is recursively defined as follows: + +
+ +
+
+
+ + +

Unary operations

+ Each unary operation follows the following syntax: +
+ FUNCTION ARGUMENT ( CHILD_EXPRESSION ) +
+ The parentheses are Optional. + + +
+

projection

+ + + + + + + + + + + + + +
symbolπ
alternative syntaxpi
example + pi a, b ( R ) +
+

The argument is a subset of columns of the schema of the CHILD_EXPRESSION or a value expression

+ +
+ π Customer.firstname, surname ( Customer ) +
+ +
+ pi c.id, [1] ( ρ c ( Customer ) ) +
+ + Expressions can be used to create more complex statements using one or more columns of a single row. + +
+ pi c.id, lower(username)->user, concat(firstname, concat(' ', lastname))->fullname ( + ρ c ( Customer ) +) +
+ + The virtual column ROWNUM used in previous versions is not supported any more but + the rownum() expression can be used to get the same information. And it can also be used + directly in the boolean condition of a selection or join. + +
+ In this example the top 5 customers with the most orders are selected, + where countOrders could be the result of a previous aggregation. + pi firstname, lastname +sigma rownum() <= 5 +tau countOrders desc +Customer + +
+ +
+ +
+
+ +
+

selection

+ + + + + + + + + + + + + +
symbolσ
alternative syntaxpi
example + sigma a > 2 ( R ) +
+ +

The argument is a boolean expression that each row of CHILD_EXPRESSION + is checked on

+ +
+ σ firstname = 'Bob' or firstname = 'Alice' ( Customer ) +
+
+ σ (id > 10 and id < 100) or id = 42 ( Customer ) +
+
+ Selecting all customers with a firstname that has an even length. + σ mod(length(firstname),2) = 0 ( Customer ) +
+ +
+ +
+
+ +
+

rename relation

+ + + + + + + + + + + + + +
symbolρ
alternative syntaxrho
example + ( R ) join R.a = X.b (rho X ( R )) +
+ +
+ The argument is the new name for the Relation returned by CHILD_EXPRESSION + +
+ rename the Relation from "Customer" to "a": + π a.id, a.firstname ( ρ a ( Customer ) ) +
+ +
+ +
+
+
+
+

rename column

+ + + + + + + + + + + + + +
symbolρ
alternative syntaxrho
example + the old and the new column names in a list (see example)
+ "←" can be substituted with "<-" + pi x, b rho a->x {a, b + 1, 2 + 3, 4 +} +
+
+ The argument is the old and the new column names in a list (see example)
+ "←" can be substituted with "<-" + +
+ rename the columns id and firstname to myId and foobar: + ρ myId←id, foobar←firstname (π id, firstname ( Customer ) ) +
+ +
+ +
+
+
+ +
+

order by

+ + + + + + + + + + + + + +
symbolτ
alternative syntaxtau
example + tau a asc, b desc ( R ) +
+ +
+ The argument is a list of columns by which the relation should be ordered (see examples) + +
+ order the result by the first column (default is ascending) and the second column descending: + τ [1], firstname desc (π id, firstname ( Customer ) ) +
+ +
+ +
+
+
+ +
+

group by

+ + + + + + + + + + + + + +
symbolγ
alternative syntaxgamma
example + gamma a, count(*)->x ( R ) +
+
+ The argument is a list of columns to group by, separated by commas followed by a semicolon +
and a list of aggregate functions to apply with their new name in form AGG( COLUMN ) -> NEW_NAME + +
+ order the result by the first column (default is ascending) and the second column descending: + γ a, b ; sum(c)->x ( Customer ) +
+ +

If no grouping columns are provided the entire relation is the group.

+ +
supported aggregate functions by type: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 numberstringdate
COUNT( * )yesyesyes
COUNT( column )yesyesyes
MIN( column )yesyesyes
MAX( column )yesyesyes
SUM( column )yesnono
AVG( column )yesnono
+
+ +
+ +
+
+
+ + +

Binary operations

+ Each binary operation follows the following syntax: +
+ ( CHILD_EXPRESSION ) FUNCTION ARGUMENT ( + CHILD_EXPRESSION ) +
+ The parentheses are Optional. + +
+

intersection - ∩

+ + + + + + + + + +
symbol
alternative syntaxintersect
+
no argument + +
+ ( Customer ) ∩ ( Customer ) +
+ the schemas must be unifiable + +
+ +
+
+
+
+

union - ∪

+ + + + + + + + + +
symbol
alternative syntaxunion
+
no argument + +
+ ( Customer ) ∪ ( Customer ) +
+ the schemas must be unifiable + +
+ +
+
+
+
+

division

+ + + + + + + + + +
symbol÷
alternative syntax/
+
no argument + +
+ ( Customer ) ÷ ( Customer ) +
+ the schemas must be unifiable + +
+ +
+
+
+
+

subtraction / set-difference

+ + + + + + + + + +
-
alternative syntax\
+ except +
+
no argument + +
+ ( pi firstname ( Customer ) ) - ( rho test<-lastname ( + pi lastname ( Customer ) +) ) +
+ the schemas must be unifiable + +
+ +
+
+
+
+

cross product

+ + + + + + + + + +
symbol
alternative syntaxcross join
+
no argument +
+ +
+
+
+
+

Theta-join / θ-join

+ + + + + + + + + +
symbol
alternative syntaxjoin
inner join
+
join condition +
+ +
+
+ +

+ Special case:
+ The name of a single boolean column (like R join a S) can not be used directly + as a join condition due to ambiguities in the relational algebra syntax.
+ + The column must either be specified with its qualifier (R join R.a S) or wrapped in + parentheses (R join (a) S).
+ + This is not necessary for more complex boolean expressions. The problem is only that the single + column name + can not be distinguished from a relation name: the expression X=R join S X could be + interpreted as A=(R join S A) instead of A=(R join S) A. +

+
+
+

natural join

+ + + + + + + + + +
symbol
alternative syntaxjoin
natural join
+
no argument + +
+ ρ a ( Customer ) + a.name < b.name ( ρ b ( Customer ) ) +
+ +
+ +
+
+
+
+

left outer join

+ + + + + + + + + +
symbol
alternative syntaxleft outer join
left join
+
optional join condition; if no join condition is given it acts as a natural left outer join +
+ +
+
+
+
+

right outer join

+ + + + + + + + + +
symbol
alternative syntaxright outer join
right join
+
optional join condition; if no join condition is given it acts as a natural right outer join +
+ +
+
+
+
+

full outer join

+ + + + + + + + + +
symbol
alternative syntaxfull outer join
+
optional join condition; if no join condition is given it acts as a natural full outer join +
+ +
+
+
+
+

left semi join

+ + + + + + + + + +
symbol
alternative syntaxleft semi join
+
no argument +
+ +
+
+
+
+

right semi join

+ + + + + + + + + +
symbol
alternative syntaxright semi join
+
no argument +
+ +
+
+
+
+

anti semi join

+ + + + + + + + + +
symbol
alternative syntaxanti semi join
anti join
+
no argument +
+ +
+ +
+
+
+ +

Operator precedence

+ +

The operator precedence allows to obmit most of braces. +
The used precedence is shown in the table below. +
All operators are left associative. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
order of precedenceOperator
0 + relation-name, + inline-relation +
1 + projection, + selection, + rename (columns), + rename (relations), + group, + order by +
2 + cross product, + theta join, + natural join, + left outer join, + right outer join, + full outer join, + left semi-join, + right semi-join, + anti semi-join, + division +
3 + intersection +
4 + union, + subtraction +
+ +
+ A join B x C +
is equal to +
((A join B) x C) +
because the cross product and the natural join are in the same precedence class. +
+ +
+ sigma true A join sigma true B +
is equal to +
(sigma true (A)) join (sigma true (B)) +
because the unary operators have a higher precedence than the binary operators. +
+ + +

Misc

+ +

Column

+ column is either +
    +
  • the name of a column: "columnName"
  • +
  • the number of the column (starting with 1): "[column-number]"
  • +
  • a full qualified column: "qualifier.columnName"
  • +
  • a value expression (if allowed for the specific operation)
  • +
+ the qualifier is optional if the column is unique in its schema. + + +

Value expressions

+ + With most operators you can use a value-expression which connects one or more columns of a single row to + calculate a new value. + This is possible for: +
    +
  • the projection creating a new column (make sure to give the column a name)
  • +
  • the selection any expression evaluating to boolean can be used
  • +
  • + for the joins any expression evaluating to boolean can be used; + note that the rownum() expression always represents the index of the lefthand relation +
  • +
+ + The expressions always operate on a single row/tuple of a table/relation. + +
If you want to calculate values vertically over all values of a specific column/attribute you need to + use group by with an aggregate function. + + + The following table lists all functions and operators that can be used in an expression. + They can be combined and nested in any arbitrary order but note that they do evaluate to a single type + defined by the outer most expression. + + The following operators can be used: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
syntaxreturns typedescription
a AND bbooleanlogical and
a OR bbooleanlogical or
a XOR bbooleanlogical exclusive or
NOT bbooleanlogical not
+ a = b +a != b +a < b +a > b +a <= b +a >= b +a != b + booleancompares two values of the same type
a:string LIKE 'PATTERN'booleanreturns true if expression evaluating to a string a matches the pattern + given as the second operand. +
The pattern has to be given as a string literal; + +

+ An underscore (_) in the pattern stands for any single character + and any percent sign (%) stands for any sequence of zero or + more characters. +

+
a:string ILIKE 'PATTERN'boolean + same as LIKE but matches case-insensitive. +
This is not in the SQL standard but is a PostgreSQL extension. +
+a + b +a - b +a * b +a / b +a % b + numberarithmetic addition, subtraction, multiplication, division, modulo
rand()numberreturns a random number in the interval [0, 1]
rownum()number + returns the index of the current row (starting with 0). +
If the function is used in a binary relational algebra expression (e.g. a join) + it always represents the index of the left operand. +
length(a:string)numberreturns the length of the string
date(a:string)dateparses the given string to a date object. The string must be in the form YYYY-MM-DD
adddate(a:date, b:number)dateadds the given number of days to date a
subdate(a:date, b:number)datesubtracts the given number of days from date a
now() + transaction_timestamp() + statement_timestamp()datereturns a timestamp representing the start of the query execution +
transaction- and statement start are the very same value due to the lack of a transaction + concept +
clock_timestamp()datereturns the current timestamp while executing the query
year(a:date)numberreturns the year component of a given date
month(a:date)numberreturns the month component of a given date as a number. (1 = Sunday, 2 = Monday, ..., 7 = + Saturday) +
day(a:date) + dayofmonth(a:date)numberreturns the day component of a given date as a number in the range 1 to 31
hour(a:date)numberreturns the hour component of a given date as a number in the range 0 to 23
minute(a:date)numberreturns the minute component of a given date as a number in the range 0 to 59
second(a:date)numberreturns the second component of a given date as a number in the range 0 to 59
concat(a:string [, ...])stringconcatenates the given strings
upper(a:string) + ucase(a:string)stringconverts the given string to upper-case
lower(a:string) + lcase(a:string)stringconverts the given string to lower-case
strlen(a:string)numbernumber of characters of the string
abs(a:number)numberthe absolute value of the given number
+ add(a, b) +sub(a, b) +mul(a, b) +div(a, b) +mod(a, b) + numberarithmetic addition,
+ subtraction,
+ multiplication,
+ division or
+ modulo of the given numbers +
+ round(a) +floor(a) +ceil(a) + numberround to nearest integer,
+ largest integer not greater than the argument or
+ smallest integer not less than the argument +
coalesce(value [, ...])type of valuereturns the first of its arguments that is not null or null if all arguments are null. Note that + all arguments must have the same datatype. +
CASE WHEN condition THEN result +[WHEN ...] +[ELSE result] +END + type of resultreturns the first result where the condition evaluates to true. If all conditions are false the + else part is executed or null is returnt if the else part is missing. Note that all results must + have the same datatype. +
+ + The operator precedence is the same as used in MySQL (from strong to weak): + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
order of precedenceOperators
0functions, constants, columns
1! (boolean not)
2- (unary minus)
3*, /, %
4-, +
5= (comparison), >=, >, <=, <, <>, !=, LIKE, ILIKE
6CASE, WHEN, THEN, ELSE
7AND
8XOR
9OR, ||
+ + +

Reference - SQL

+ +

The goal of the SQL mode of the relational algebra calculator is to provide a translation from SQL to + relational algebra to show how they are related. + It does not support all features a real database system like PostgreSQL or MySQL does because the goal is to provide a + translation into relational algebra. + This means that many features like correlated-substatements are not supported because the translation + into relational algebra is not trivial and modern database systems use an extended set of operators + internally that do not require a one-to-one translation into "classical" relational algebra. + Therefore the learning effect for users of this tool would not be that big. +

+ + +

General syntax

+ +

All keywords are case insensitv.

+ +

The following Synopsis is a adapted version of PostgreSQL and + shows the general syntax of the supported SQL. Brackets indicate optional parts. Braces and vertical + lines indicate that one of the alternatives has to be chosen. Dots mean that the preceding element can + be repeated.

+ [ WITH with_query [, ...] ] +SELECT [ DISTINCT ] +* | expression [ [ AS ] output_name ] [, ...] +FROM from_item [, ...] +[ WHERE condition ] +[ GROUP BY column [, ...] ] +[ HAVING condition ] +[ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] select ] +[ ORDER BY column [ ASC | DESC ] [, ...] ] +[ LIMIT { count | ALL } ] +[ OFFSET start [ ROW | ROWS ] ] +[ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ] + +where from_item can be one of: + +table_name [ AS alias ] +with_query_name [ AS alias ] +( select ) AS alias +from_item CROSS JOIN from_item +from_item NATURAL JOIN from_item +from_item [ INNER ] JOIN from_item ON join_condition +from_item [ INNER ] JOIN from_item NATURAL +from_item [ INNER ] JOIN from_item USING ( join_column [, ...] ) +from_item +from_item { LEFT | RIGHT | FULL } [ OUTER ] JOIN ON join_condition +from_item +from_item { LEFT | RIGHT | FULL } [ OUTER ] JOIN NATURAL from_item +from_item { LEFT | RIGHT | FULL } [ OUTER ] JOIN USING ( join_column [, ...] ) from_item + +and with_query is: + +with_query_name AS ( select ) + +
+ +
+ +

Semantic and Translation to relational algebra

+ + +

Sequence of execution

+ +

The SQL statement is translated directly into relational algebra. To understand some of the effects of + the tool it might be helpful to understand the steps of the translation process. + As mentioned before, real database systems might take a different (more complex) aproach but this should + help to get an idea of how SQL could be translated into "classical" relational algebra.

+ +

The following list shows the translation from SQL into relational algebra starting with the inner most + relational algebra expression at the top.

+
    +
  1. replace all usages of the temporary-tables defined in the WITH-clause with their definitions
  2. +
  3. FROM-clause is translated left associative with all joins having the same precedence (, + is a cross join) +
  4. +
  5. selection with condition from where-clause is added
  6. +
  7. group by
  8. +
  9. selection with condition from having-clause
  10. +
  11. union/intersect/except
  12. +
  13. projection is added to choose the requested columns of the SELECT-clause
  14. +
  15. the columns are renamed to get the requested output-name specified in the SELECT-clause
  16. +
  17. order by
  18. +
  19. limit/offset is mapped to a selection
  20. +
+ +

SELECT

+ +

The direct translation into relational algebra with implicit duplication elimination requires the distinct + keyword to be equivalent. A warning is shown if you omit it.

+ +

The select-clause is translated into up to two relalg operators.

+
    +
  • The most basic case is select * ... where no changes are made to the + schema of the result. Therefore no projection is needed. You can use the optional table-alias-prefix + if the columns of a single table/relation should be returned only: select distinct + R.* from R inner join S
  • +
  • When a subset of the columns are selected and/or reordered ( select a, b from ...) then + a single projection is used. +
  • +
  • Additionally to the previous case a rename-column + operator is added after the projection if new output-names are given with as foo. + e.g. select a as foo from ...
  • +
+ +

The allowed expressions are the same as for the projection. + So it can be either the name of the column (with optional renaming using as) or a complex + value expression. In the latter case a output-name must be given using + as because the tool requires every column to have a name. +

+ +

FROM

+ +

In its simplest form the from-clause holds a single table/relation name that is used directly in the + relalg statement. If the optional table-alias is specified with table as foo this is + reflected by wrapping the relation in a rename-relation + operator with the given output-name.

+ select distinct x.a, x.b + from R as x + +

Joins can be expressed using the ANSI join syntax

+ + select distinct * +from A, B + inner join C on ... + inner join D natural + natural join E + left outer join F on ... + left outer join G natural + right outer join H on ... + right outer join I natural + full outer join J on ... + full outer join K natural +where ... + + +

The comma is part of the old join syntax and is translated into a cross + join.

+ select distinct * +from R, S as s, T +where s.a = R.a + +

Instead of the name of relation a non-correlated substatement can be used. A table alias must be provided + with (...) as foo. +
A non-correlated substatement can be directly translated into relational algebra by just translate + the sub-statement into relational algebra and use the resulting operator tree instead of the relation. +

+ +

Non-correlated means that it must not reference/use any columns of tables defined in the outer scope. +
This limitation is intentionally because the translation into relational algebra is not trivial and + modern database systems use an extended set of operators internally that do not require a one-to-one + translation into "classical" relational algebra. Therefore the learning effect for users of this tool + would not be that big.

+ select distinct * +from R, (select * from S where a > 0) as x +where x.a = R.a + +

WHERE

+ +

The boolean condition in the where-clause can be any expression evaluating + to boolean.

+ +

The where clause is directly translated to an relational algebra + selection with the very same condition. This selection is applied after joining relations of the + from-clause therefore has to use the original column names.

+ +

Subquery Expressions like EXISTS, IN, ANY/SOME or ALL + are not supported because their translation into relational algebra is not trivial and + modern database systems use an extended set of operators internally that do not require a one-to-one + translation into "classical" relational algebra. Therefore the learning effect for users of this tool + would not be that big.

+ +

GROUP BY

+ +

The GROUP-BY-clause takes a list of column names only argument.

+ +

The GROUP-BY-clause is directly translated to the relational algebra + group-by operation and is executed directly after the selection built from the WHERE-clause and + before the projection/renaming build from the SELECT-clause. Therefore the column names that can be used + are the ones available after all joining all tables.

+ +

The aggregations used in the relational algebra group-by + operation are taken from the SELECT-clause and an output-name must be given using as + because the tool requires every column to have a name.

+ +

If no aggregations are present in the SELECT-clause a projection is used instead of the group-by + operation because sigma without aggregation has the very same + effect.

+ +

Every non-aggregation-column in the SELECT-clause must be present in the group by clause because the + would not be available after the grouping.

+ + +

HAVING

+ +

The HAVING-Clause represents an optional relational algebra + selection. The boolean condition can be any expression evaluating to + boolean.

+ +

The resulting selection is executed directly after the relational + algebra group-by operation.

+ +

Unlike PostgreSQL + the HAVING-clause is only allowed when either a aggregation or grouping is present.

+ + +

ORDER BY

+ +

Order by takes a list of column names or indices of columns (starting with 1) as its argument.

+ +

It is directly translated to the extended relational algebra + operation order by (tau).

+ + +

LIMIT

+ +

The LIMIT-clause can be either specified with the LIMIT-OFFSET syntax used by PostgreSQL and MySQL or the + FETCH-FIRST syntax introduced in SQL:2008.

+ +

It is translated into a relational algebra selection using the + rownum()-function to limit the number of rows returned.

+ +

UNION / INTERSECT / EXCEPT

+ +

The Set-Operators UNION, INTERSECT and EXCEPT directly map to the relational algebra operators union, intersection and subtraction.

+ +

The keyword DISTINCT is optional because it represents the default behavior. The keyword + ALL is ignored and a warning is shown because the targeted relational algebra has a + implicit elimination duplicate rows.

+ +

+ Parentheses can be used to create more complex statements:
+ ( + select distinct * from S + union + select distinct * from T +) +except select distinct * from T +order by 1 +limit 1 +

+ +

WITH

+ +

The WITH-clause (also known as common table expressions) provides a way to define subqueries for + single or multiple use in a statement. This can be thought as defining a temporary table for that query + in SQL terminology or creating variables in relational algebra. + Recursive evaluation is not supported.

+ +

Each subquery can be referenced by the name from the WITH-clause. The subquery is automatically renamed + to the name used in the WITH-clause.

+ + +

Value expressions

+ +

Value expressions are used for boolean expressions for WHERE- and HAVING-clause, the boolean conditions + of joins and calculated values in the SELECT-clause. + The type of a expression is either string, number, date or boolean and is + determined by the used operations and columns.

+ +

The supported functions and operations are the same for SQL and relational algebra: value expression

+ + + + +

Licence

+

+ + Creative Commons License +
+ This work by + Johannes Kessler + is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. +

+
+
+
+ +
+ +
+ + + + + + + + + + + + + diff --git a/index.htm b/index.htm new file mode 100644 index 000000000..295e414b3 --- /dev/null +++ b/index.htm @@ -0,0 +1,788 @@ + + + + + + RelaX - relational algebra calculator + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+

RelaX - relational algebra calculator

+ +

calculates any relational algebra statement like + ( σ a > 42 ( A ) ) ( π a, b ( B ) ) + on a set of relations. +

+ +
+ Databases and Information Systems (DBIS) + Institute of Computer Science - University of Innsbruck + University of Innsbruck +
+

get started

+ +
+ +

What is the relational algebra calculator?

+ +

If you want to learn SQL you take a database system and try some queries. +
But if you want to learn relational algebra what do you use? Pen and paper?

+ +

The relational algebra calculator helps you learn relational algebra (RelAlg) by executing it.

+ +
+ + + Subjects = + + + + + + + + + + + + + + + + + + + + + + + + + +
suIdname
0Computing
1Maths
2English
3History
+ + Students = + + + + + + + + + + + + + + + + + + + + + + + + + +
stIdname
1John
2Mike
3Lisa
4Julia
+ + Marks = + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
suIdstIdmark
01A
02B
03C
04A
22A
32F
41C
+ +
+ +
+ π studentName, subjectName, mark ( ρ studentName←st.name, subjectName←su.name ( ( ( ρ su ( Subjects ) ) ( σ + mark≥'C' ( ρ m ( Marks ) ) ) ) m.stId=st.stId ( ρ + st ( Students ) ) ) ) +
+ = + + + + + + + + + + + + + + + + + + + + + + + +
+ +

Calculator features:

+
    +
  • supports most common operators +
      +
    • projection
    • +
    • selection
    • +
    • rename relations
    • +
    • rename columns
    • +
    • group by
    • +
    • intersect
    • +
    • union
    • +
    • set difference
    • +
    • cross join
    • +
    • theta join
    • +
    • natural join
    • +
    • natural left outer join
    • +
    • natural right outer join
    • +
    • natural full outer join
    • +
    • theta left outer join
    • +
    • theta right outer join
    • +
    • theta full outer join
    • +
    • left semi join
    • +
    • right semi join
    • +
    • anti join join
    • + +
    • order by
    • +
    +
  • +
  • runs in any modern browser. no plugins needed
  • +
  • text based approach. lets you write RelAlg as easy as SQL
  • +
  • code editor with syntax highlighting and code completion
  • +
  • pre defined sets of relations
  • +
  • visualize statement in a operator tree
  • +
  • plain text alternatives for special symbols like σ or
  • +
  • variables can be used to simplify expressions
  • +
  • new temporal relations can be declared in the statement
  • +
  • sql like comments
  • +
  • arbitrary boolean expressions in conditions
  • +
  • operations keep original order for better traceability
  • +
  • translates simple SQL-statements to RelAlg +
      +
    • no support for correlated sub-statements
    • +
    +
  • +
+ +

Available data

+ You can either use one of the following datasets or create a new one. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameSourceLanguage
Kemper DatenbanksystemeAlfons Kemper, André Eickler: + Datenbanksysteme: Eine Einführung 8. Auflage, Seite 84, Abbildung 3.8 + de
UIBK - KursDBTables from and for the lecture Databases: + Foundations, Data Models and System Concepts - University of Innsbruck chapter 3 + de
UIBK - R, S, TTables from and for the lecture Databases: + Foundations, Data Models and System Concepts - University of Innsbruck chapter 3 + de
The Complete Book - Exercise 2.4.1Sample Data from + Database Systems The Complete Book 2nd + Edition by Hector Garcia-Molina, Jeff Ullman, and Jennifer Widom: + Exercise 2.4.1 Page 52-55 + en
The Complete Book - Exercise 2.4.3Sample Data from + Database Systems The Complete Book 2nd + Edition by Hector Garcia-Molina, Jeff Ullman, and Jennifer Widom: + Exercise 2.4.1 Page 55-57 + en
+ +

What it is not:

+ +

The tool is not meant to be a full database system. + The goal of the implementation was to create a tool to support people to learn RelAlg. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 Pen and Paperrelational algebra calculatorMySQL
SQL support yes :-) basic SQL yes
relational algebra yes yes no
use variables for RelAlg yes yes no
large datasets no no yes
query plan no yes no
intermediate results no yes no
iterative working no yes yes
+ +

Changelog

+
    +
  • 0.19 +
      +
    • added datepicker to quickly insert a date literal
    • +
    • added spanish translation provided by Erick Delfin
    • +
    +
  • +
  • 0.18 +
      +
    • + added support for the LIKE-operator for SQL and + relational algebra +
      e.g. pi 'abc' like 'a%'->x R +
    • +
    • added translation support for the calculator using i18next. This + allows easy translation of the main calculator into other languages. +
    • +
    • calculator is now available in german
    • +
    • ported project to ES2015 (it now gets transpiled to ES5 and packed using Babel.js + and Browserify) +
    • +
    +
  • +
  • 0.17 +
      +
    • fixed bug: inline-table-editor not working
    • +
    • fixed bug: formula for !a was not working
    • +
    +
  • +
  • 0.16 + +
  • +
  • 0.15 +
      +
    • + added support for hour(), minute() and second() +
    • +
    • + added support for now() +
      e.g. pi hour(now())->x, minute(now())->y, second(now())->z ( R ) +
    • +
    • + added support for n-ary concat +
      e.g. pi concat(b, '_', c)->x R +
    • +
    • added support for WITH-clauses for SQL
    • +
    +
  • +
  • 0.14 +
      +
    • improve error message for theta-joins with conflicting columns
    • +
    • improve error message and added example for assignments without query error
    • +
    • bugfix: calclulator-tour did not work correctly for Edge on Windows 10
    • +
    +
  • +
  • 0.13 +
      +
    • updated to CodeMirror version 5.1 with "experimental mobile support"
    • +
    • + added support for COALESCE() +
      e.g. pi coalesce(a, b, 1)->x R, select coalesce(a, b, 1) as x from R +
    • +
    • + added support for CASE WHEN +
      e.g. select case when a > 3 then a+1 else a end as x from R +
    • +
    • added support for complex union/intersect/except statements for SQL +
      e.g. (select * from S union ( select * from T except select * from T )) order by 1 +
    • +
    +
  • +
  • 0.12 +
      +
    • added support for more complex FROM-clauses for SQL +
      e.g. select distinct * from R, (S natural join T) +
    • +
    • simplify and link the syntax diagrams at the help page
    • +
    +
  • +
  • 0.11 +
      +
    • added a tour to explain the main features of the tool to new users (using Bootstrap Tour) +
    • +
    • added reference for SQL in the help section
    • +
    • added support for USING clause for joins for SQL
    • +
    • added support FETCH FIRST syntax (SQL:2008) for SQL +
      e.g. select * from R offset 2 rows fetch first 10 rows only +
    • +
    • allow DISTINCT on set operators for SQL
    • +
    • bugfix: having should be allowed without group by if aggregation is used
    • +
    +
  • +
  • 0.10 +
      +
    • added support for arithmetic expressions and + functions for SQL +
      e.g. select distinct a+2 as x from R where length(b) > 2 +
    • +
    • show warnings instead of errors when not using distinct or using all on set operators in + SQL +
    • +
    +
  • +
  • 0.9 +
      +
    • added support for arithmetic operators and functions in (e.g + boolean) expressions for relational algebra +
    • +
    • projection supports expressions
    • +
    • removed magic ROWNUM column; ROWNUM() is now a function +
    • +
    • tutorials for users and maintainers
    • +
    • new braces handling in formula generation (braces are only placed if necessary)
    • +
    • bugfix: rename not existent column was silently ignored
    • +
    • syntax of dates has changed 1970-01-01 could not be used any more because it is + ambiguous (arithmetic operaton or date). + The SQL notation (date('1970-01-01')) is now used for the relational algebra + mode. +
    • +
    +
  • +
  • 0.8 +
      +
    • grid editor for inline relations
    • +
    • sql-dump import (beta)
    • +
    • group editor
    • +
    • changed the basic structure of the editors (internally)
    • +
    • duplicate rows are removed in every step
    • +
    +
  • +
+ +

Who?

+ +

The relational algebra calculator was created by Johannes Kessler BSc at Databases and Information Systems Group + at the Institute of Computer Science at the University of Innsbruck under supervision of + Michael Tschuggnall PhD and Prof. Dr. Günther Specht

+ + +

External resources

+ +

This tool was not written from scratch but many different external resources/frameworks/projects/libs are + used.

+ +

This is a list of resources/frameworks/projects/libs used for this tool (in alphabetical order) to give + credit where credit is due and guide anyone interested to them without having to look through the + code.

+ + + + + +
+
+
+ + + + + + + + + + + + diff --git a/index.html b/index.html deleted file mode 100644 index 70e1692c8..000000000 --- a/index.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - RelaX - relational algebra calculator - - - - - - - - - - - - - - -
-
-
-
-
-
- - - \ No newline at end of file diff --git a/index.html.gz b/index.html.gz deleted file mode 100644 index 8f12045fc165d74b3b90acf649ee4968f4e8a19e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1642 zcmV-w29^0AiwFP!000021FctWbK5o&{w)8Bjc$69?nF|KlUz=<(x$1eO|O@FYTsNt znS21r6$u+6XaJO~w(f7g2LNR$Nt@nvs?mtVV&Ad*V0HT7^KV{Uet&*OwOgrYN2l?D zCyVmg(cpB&PEb(`W7#c+om(bPhxhc_xi;aOPOcZj?~;E%PhRL%E1b*~52?_N;|4-6 z&lX%(pk!XqNvHVPx2(i>l#s#GN!(&E5*;@$=1ojeiJHi^oAB>K8`HLFT&%epJ=bOS1}m-t@Nhn!3(%vznP?MXX~*r zRkwn}cH(*OrjbX1`I!Df4R7dk;dnd=rUb|~EewNnrr67k^<)~XtioQ!uHUeqZ7)Uj z3dsS>>)D&AAQg7o6kdD3w#Kijuv(?9Fc5u(mP;jC$GFdUsSS@qM!<468E<4$>dll& zT?EIcG>SPL;VsKHn@w7Uj3r{1vb4~vY`?m)p0yGq1O=Uy7>{B|o(u?jeDe6w`JUfr25VqWZ7@)ifkSbED)grfOL6?+lZy%+sw8iiPWUs^Y77c zTudS&ek+!O6`gY_3jo2CRD`jTx~4=u2i$sjNja543ScYj&Obxe66pVvMv!rPnngZgRS{5~JbTdLQqO%+f z_e#AX;T*5pU{h&PhHc+<@F|Td{!?=d&&C??$48=VeFD4)PG;E|Fc|d2risbGUbr}- zig$zE;JTokarejwuFaua2eG2c_8Q)`50{O`eMO>x^3v~a)3xc+Bo|e$NzH%^!3J~>|Ou#uHU3BJyc{IYR=LYSDKB4jGlMy(un9%$!29?&r)^V}(`l$c8 z>wz*=x(FB9WO4{p5vR^j^#3zTxosGv1}XX;gHOyrtF83f=Ol8g6{;cl;dDEv$Fq;Z zLh;h=SI&sW!p3S&;Z^xmCD=tO@EhW|^SF%Dl(;y}OH3otnD5>SCD)Wmp_Mjs`qRnD zNzfW5mpMIo)ZT`5%^uYb2stX0O=3hTJ3FW2S?^A=;rv=UTo!UAVkGuDPClsZ#E(LR z2?)5*Ed7Fsg=NqaY{xt7_ezE+KixTiS!QWa8TNfGA^6!xea-Cz4iXvI$Fq2ad#wW> z-*555xxQ+2D+=khbDDj8Uq8XQKfOB>R{9r .alertContainer'), + groupsSelector: $('#groups-selector'), + groupsSelectorList: $('#groups-selector').find('#groups-selector-list'), + groupRelationList: $('#groups'), + groupDesc: $('#groups-desc'), + groupInfo: $('#groups-info'), + resultContainers: { + 'ra': $('#tab-editor-ra').find('> .exec-result'), + 'sql': $('#tab-editor-sql').find('> .exec-result') + }, + editorContainers: { + ra: $('#tab-editor-ra'), + sql: $('#tab-editor-sql'), + group: $('#tab-editor-group'), + sqldump: $('#modal-sqldump') + }, + modalSqlDump: $('#modal-sqldump'), + + staticGroups: [], + numTreeLabelColors: 6, + + keywords: { + 'ra': [ + 'pi', 'sigma', 'rho', 'tau', '<-', 'intersect', 'union', '/', '-', '\\', 'x', 'cross join', 'join', + 'inner join', 'natural join', 'left join', 'right join', 'left outer join', + 'right outer join', 'full outer join', 'left semi join', 'right semi join', 'anti join', + 'and', 'or', 'xor', '||' + ], + 'sql': [ + 'distinct', 'select distinct', 'from', 'where', 'order by', 'asc', 'desc', + 'inner join', 'inner', 'join', 'natural', 'union', 'intersect', 'outer join', 'natural join', 'left join', 'right join', 'left outer join', + 'right outer join', 'full outer join', 'group by', 'having', 'limit', 'offset', + 'and', 'or', 'xor', '||' + ] + } + }; + + this.options = $.extend({}, defaults, options); + + this.state = { + currentGroup: null, + groups: { + 'static': {}, + gist: {}, + own: {} + }, + relations: {}, + + editors: { + ra: null, + sql: null, + + // group editor + sqldump: null, + group: null + }, + currentEditorName: null + }; + + marked.setOptions({ + renderer: new marked.Renderer(), + gfm: true, + tables: true, + breaks: false, + pedantic: false, + sanitize: true, + smartLists: true, + smartypants: false + }); + + + function getColumnNamesFromRaRoot(root) { + // use columns from all calculated schemas for hints + var columns = []; + var i; + var rec = function (n) { + var schema = n.getSchema(); + for (i = 0; i < schema.getSize(); i++) { + if (!schema.needsFullName(i)) + columns.push(schema.getName(i)); + + columns.push(schema.getFullName(i)); + } + + if (n.hasChild()) + rec(n.getChild()); + if (n.hasChild2()) + rec(n.getChild2()); + }; + rec(root, columns); + + // use column names as hints + return columns; + } + + function getHintsFromGroup(group) { + if (!group) + return []; + + var i, j, tables, schema, columnName, tableName; + var hints = []; + + // add table and column names + tables = calc.state.currentGroup.tables; + for (i in tables) { + schema = tables[i].relation.getSchema(); + tableName = tables[i].tableName; + + hints.push(tableName); + + for (j = 0; j < schema.getSize(); j++) { + columnName = schema.getColumn(j).getName(); + + hints.push(columnName); + hints.push(tableName + '.' + columnName); + } + } + + return hints; + } + + + this.state.editors.ra = new Editor({ + textarea: this.options.editorContainers.ra.find('> textarea'), + historyContainer: this.options.editorContainers.ra.find('.history-container'), + downloadButton: this.options.editorContainers.ra.find('.download-button'), + execErrors: this.options.editorContainers.ra.find('> .exec-errors'), + execButton: this.options.editorContainers.ra.find('.exec-button'), + execFunction: function (text) { + var relations = calc.state.relations; + + var ast = relalgjs.parseRelalg(text, Object.keys(relations)); + relalgjs.replaceVariables(ast, relations); + + if (ast.child === null) { + if (ast.assignments.length > 0) + throw new Error(i18n.t('calc.messages.error-query-missing-assignments-found')); + else + throw new Error(i18n.t('calc.messages.error-query-missing')); + } + + + var root = relalgjs.relalgFromRelalgAstRoot(ast, relations); + root.check(); + + calc.displayRaResult(root); + + this.historyAddEntry(text); + this.updateHistoryList(); + + if (this.options.enableInlineRelationEditor) + this.addInlineRelationMarkers(ast); + }, + linterFunction: function (text) { + var relations = calc.state.relations; + var hints = []; + + var ast = relalgjs.parseRelalg(text, Object.keys(relations)); + relalgjs.replaceVariables(ast, relations); + + for (var i = 0; i < ast.assignments.length; i++) { + hints.push(ast.assignments[i].name); + } + + if (ast.child === null) { + if (ast.assignments.length > 0) + throw new Error(i18n.t('calc.messages.error-query-missing-assignments-found')); + else + throw new Error(i18n.t('calc.messages.error-query-missing')); + } + + + var root = relalgjs.relalgFromRelalgAstRoot(ast, relations); + root.check(); + + + if (this.options.enableInlineRelationEditor) + this.addInlineRelationMarkers(ast); + + // use columns from all calculated schemas for hints + return hints.concat(getColumnNamesFromRaRoot(root)); + }, + getHintsFunction: function () { + var arr = calc.options.keywords.ra; + + // add table and column names + arr = arr.concat(getHintsFromGroup(calc.state.currentGroup)); + + return arr; + }, + codeMirrorOptions: { + mode: 'ra' + }, + enableInlineRelationEditor: true + }); + + var modalInlineEditorIsOpen = false; + $('#tab-editor-ra .editor-ra-new-relation').click(function () { + if(modalInlineEditorIsOpen === true){ + return; + } + + modalInlineEditorIsOpen = true; + calc.state.editors.ra.openModalInlineEditor_inlineRelationNew(function(){ + modalInlineEditorIsOpen = false; + }); + }); + + + this.state.editors.sql = new Editor({ + textarea: this.options.editorContainers.sql.find('> textarea'), + historyContainer: this.options.editorContainers.sql.find('.history-container'), + downloadButton: this.options.editorContainers.sql.find('.download-button'), + execErrors: this.options.editorContainers.sql.find('> .exec-errors'), + execButton: this.options.editorContainers.sql.find('.exec-button'), + execFunction: function (text, addWarning) { + var warnings, i; + + var relations = calc.state.relations; + + var ast = relalgjs.parseSQLSelect(text); + relalgjs.replaceVariables(ast, relations); + var root = relalgjs.relalgFromSQLAstRoot(ast, relations); + root.check(); + + warnings = root.getWarnings(true); + for (i = 0; i < warnings.length; i++) { + addWarning(warnings[i].message); + } + + calc.displayRaResult(root); + + this.historyAddEntry(text); + this.updateHistoryList(); + }, + linterFunction: function (text) { + var relations = calc.state.relations; + var hints = []; + + var ast = relalgjs.parseSQLSelect(text); + relalgjs.replaceVariables(ast, relations); + + for (var i = 0; i < ast.assignments.length; i++) { + hints.push(ast.assignments[i].name); + } + + var root = relalgjs.relalgFromSQLAstRoot(ast, relations); + root.check(); + + // use columns from all calculated schemas for hints + return hints.concat(getColumnNamesFromRaRoot(root)); + }, + getHintsFunction: function () { + var arr = calc.options.keywords.sql; + + // add table and column names + arr = arr.concat(getHintsFromGroup(calc.state.currentGroup)); + + return arr; + }, + codeMirrorOptions: { + mode: 'text/x-mysql' + } + }); + + + this.state.editors.group = new Editor({ + textarea: this.options.editorContainers.group.find('> textarea'), + downloadButton: this.options.editorContainers.group.find('.download-button'), + execErrors: this.options.editorContainers.group.find('> .exec-errors'), + execButton: this.options.editorContainers.group.find('.exec-button'), + execFunction: function (text) { + var result_container = $('#tab-editor-group').find('> .exec-result'); + result_container.empty(); + + var groupAst = relalgjs.parseRelalgGroup(text); + var groups = CalculatorHelpers.getGroupsFromGroupAst(groupAst); + + if (this.options.enableInlineRelationEditor) + this.addInlineRelationMarkers(groupAst); + + // display result + var i, j, list; + for (i = 0; i < groups.length; i++) { + result_container.append($('

').text(groups[i].groupName)); + + list = $('