From 448c54aeb32d4fac952f65c817ee3aeaea3a5ab7 Mon Sep 17 00:00:00 2001 From: PlexSheep Date: Mon, 2 Oct 2023 22:05:30 +0200 Subject: [PATCH 01/17] upload static --- .gitignore | 1 - gawa/static/admin/css/autocomplete.css | 275 + gawa/static/admin/css/base.css | 1138 + gawa/static/admin/css/changelists.css | 328 + gawa/static/admin/css/dark_mode.css | 137 + gawa/static/admin/css/dashboard.css | 29 + gawa/static/admin/css/fonts.css | 20 + gawa/static/admin/css/forms.css | 530 + gawa/static/admin/css/login.css | 61 + gawa/static/admin/css/nav_sidebar.css | 144 + gawa/static/admin/css/responsive.css | 998 + gawa/static/admin/css/responsive_rtl.css | 81 + gawa/static/admin/css/rtl.css | 288 + .../css/vendor/select2/LICENSE-SELECT2.md | 21 + .../admin/css/vendor/select2/select2.css | 481 + .../admin/css/vendor/select2/select2.min.css | 1 + gawa/static/admin/css/widgets.css | 603 + gawa/static/admin/fonts/LICENSE.txt | 202 + gawa/static/admin/fonts/README.txt | 3 + .../admin/fonts/Roboto-Bold-webfont.woff | Bin 0 -> 86184 bytes .../admin/fonts/Roboto-Light-webfont.woff | Bin 0 -> 85692 bytes .../admin/fonts/Roboto-Regular-webfont.woff | Bin 0 -> 85876 bytes gawa/static/admin/img/LICENSE | 20 + gawa/static/admin/img/README.txt | 7 + gawa/static/admin/img/calendar-icons.svg | 14 + gawa/static/admin/img/gis/move_vertex_off.svg | 1 + gawa/static/admin/img/gis/move_vertex_on.svg | 1 + gawa/static/admin/img/icon-addlink.svg | 3 + gawa/static/admin/img/icon-alert.svg | 3 + gawa/static/admin/img/icon-calendar.svg | 9 + gawa/static/admin/img/icon-changelink.svg | 3 + gawa/static/admin/img/icon-clock.svg | 9 + gawa/static/admin/img/icon-deletelink.svg | 3 + gawa/static/admin/img/icon-no.svg | 3 + gawa/static/admin/img/icon-unknown-alt.svg | 3 + gawa/static/admin/img/icon-unknown.svg | 3 + gawa/static/admin/img/icon-viewlink.svg | 3 + gawa/static/admin/img/icon-yes.svg | 3 + gawa/static/admin/img/inline-delete.svg | 3 + gawa/static/admin/img/search.svg | 3 + gawa/static/admin/img/selector-icons.svg | 34 + gawa/static/admin/img/sorting-icons.svg | 19 + gawa/static/admin/img/tooltag-add.svg | 3 + gawa/static/admin/img/tooltag-arrowright.svg | 3 + gawa/static/admin/js/SelectBox.js | 116 + gawa/static/admin/js/SelectFilter2.js | 283 + gawa/static/admin/js/actions.js | 201 + .../admin/js/admin/DateTimeShortcuts.js | 408 + .../admin/js/admin/RelatedObjectLookups.js | 238 + gawa/static/admin/js/autocomplete.js | 33 + gawa/static/admin/js/calendar.js | 221 + gawa/static/admin/js/cancel.js | 29 + gawa/static/admin/js/change_form.js | 16 + gawa/static/admin/js/collapse.js | 43 + gawa/static/admin/js/core.js | 170 + gawa/static/admin/js/filters.js | 30 + gawa/static/admin/js/inlines.js | 359 + gawa/static/admin/js/jquery.init.js | 8 + gawa/static/admin/js/nav_sidebar.js | 79 + gawa/static/admin/js/popup_response.js | 16 + gawa/static/admin/js/prepopulate.js | 43 + gawa/static/admin/js/prepopulate_init.js | 15 + gawa/static/admin/js/theme.js | 56 + gawa/static/admin/js/urlify.js | 169 + .../static/admin/js/vendor/jquery/LICENSE.txt | 20 + gawa/static/admin/js/vendor/jquery/jquery.js | 10965 +++++++++ .../admin/js/vendor/jquery/jquery.min.js | 2 + .../static/admin/js/vendor/select2/LICENSE.md | 21 + .../static/admin/js/vendor/select2/i18n/af.js | 3 + .../static/admin/js/vendor/select2/i18n/ar.js | 3 + .../static/admin/js/vendor/select2/i18n/az.js | 3 + .../static/admin/js/vendor/select2/i18n/bg.js | 3 + .../static/admin/js/vendor/select2/i18n/bn.js | 3 + .../static/admin/js/vendor/select2/i18n/bs.js | 3 + .../static/admin/js/vendor/select2/i18n/ca.js | 3 + .../static/admin/js/vendor/select2/i18n/cs.js | 3 + .../static/admin/js/vendor/select2/i18n/da.js | 3 + .../static/admin/js/vendor/select2/i18n/de.js | 3 + .../admin/js/vendor/select2/i18n/dsb.js | 3 + .../static/admin/js/vendor/select2/i18n/el.js | 3 + .../static/admin/js/vendor/select2/i18n/en.js | 3 + .../static/admin/js/vendor/select2/i18n/es.js | 3 + .../static/admin/js/vendor/select2/i18n/et.js | 3 + .../static/admin/js/vendor/select2/i18n/eu.js | 3 + .../static/admin/js/vendor/select2/i18n/fa.js | 3 + .../static/admin/js/vendor/select2/i18n/fi.js | 3 + .../static/admin/js/vendor/select2/i18n/fr.js | 3 + .../static/admin/js/vendor/select2/i18n/gl.js | 3 + .../static/admin/js/vendor/select2/i18n/he.js | 3 + .../static/admin/js/vendor/select2/i18n/hi.js | 3 + .../static/admin/js/vendor/select2/i18n/hr.js | 3 + .../admin/js/vendor/select2/i18n/hsb.js | 3 + .../static/admin/js/vendor/select2/i18n/hu.js | 3 + .../static/admin/js/vendor/select2/i18n/hy.js | 3 + .../static/admin/js/vendor/select2/i18n/id.js | 3 + .../static/admin/js/vendor/select2/i18n/is.js | 3 + .../static/admin/js/vendor/select2/i18n/it.js | 3 + .../static/admin/js/vendor/select2/i18n/ja.js | 3 + .../static/admin/js/vendor/select2/i18n/ka.js | 3 + .../static/admin/js/vendor/select2/i18n/km.js | 3 + .../static/admin/js/vendor/select2/i18n/ko.js | 3 + .../static/admin/js/vendor/select2/i18n/lt.js | 3 + .../static/admin/js/vendor/select2/i18n/lv.js | 3 + .../static/admin/js/vendor/select2/i18n/mk.js | 3 + .../static/admin/js/vendor/select2/i18n/ms.js | 3 + .../static/admin/js/vendor/select2/i18n/nb.js | 3 + .../static/admin/js/vendor/select2/i18n/ne.js | 3 + .../static/admin/js/vendor/select2/i18n/nl.js | 3 + .../static/admin/js/vendor/select2/i18n/pl.js | 3 + .../static/admin/js/vendor/select2/i18n/ps.js | 3 + .../admin/js/vendor/select2/i18n/pt-BR.js | 3 + .../static/admin/js/vendor/select2/i18n/pt.js | 3 + .../static/admin/js/vendor/select2/i18n/ro.js | 3 + .../static/admin/js/vendor/select2/i18n/ru.js | 3 + .../static/admin/js/vendor/select2/i18n/sk.js | 3 + .../static/admin/js/vendor/select2/i18n/sl.js | 3 + .../static/admin/js/vendor/select2/i18n/sq.js | 3 + .../admin/js/vendor/select2/i18n/sr-Cyrl.js | 3 + .../static/admin/js/vendor/select2/i18n/sr.js | 3 + .../static/admin/js/vendor/select2/i18n/sv.js | 3 + .../static/admin/js/vendor/select2/i18n/th.js | 3 + .../static/admin/js/vendor/select2/i18n/tk.js | 3 + .../static/admin/js/vendor/select2/i18n/tr.js | 3 + .../static/admin/js/vendor/select2/i18n/uk.js | 3 + .../static/admin/js/vendor/select2/i18n/vi.js | 3 + .../admin/js/vendor/select2/i18n/zh-CN.js | 3 + .../admin/js/vendor/select2/i18n/zh-TW.js | 3 + .../admin/js/vendor/select2/select2.full.js | 6820 ++++++ .../js/vendor/select2/select2.full.min.js | 2 + .../admin/js/vendor/xregexp/LICENSE.txt | 21 + .../static/admin/js/vendor/xregexp/xregexp.js | 4652 ++++ .../admin/js/vendor/xregexp/xregexp.min.js | 160 + gawa/static/bs5/CODE_OF_CONDUCT.md | 132 + gawa/static/bs5/LICENSE | 21 + gawa/static/bs5/README.md | 246 + gawa/static/bs5/SECURITY.md | 7 + gawa/static/bs5/build/banner.js | 15 + gawa/static/bs5/build/build-plugins.js | 103 + gawa/static/bs5/build/change-version.js | 101 + gawa/static/bs5/build/generate-sri.js | 63 + gawa/static/bs5/build/postcss.config.js | 19 + gawa/static/bs5/build/rollup.config.js | 57 + gawa/static/bs5/build/vnu-jar.js | 61 + gawa/static/bs5/build/zip-examples.js | 90 + gawa/static/bs5/composer.json | 32 + gawa/static/bs5/dist/css/bootstrap-grid.css | 4085 ++++ .../bs5/dist/css/bootstrap-grid.css.map | 1 + .../bs5/dist/css/bootstrap-grid.min.css | 6 + .../bs5/dist/css/bootstrap-grid.min.css.map | 1 + .../bs5/dist/css/bootstrap-grid.rtl.css | 4084 ++++ .../bs5/dist/css/bootstrap-grid.rtl.css.map | 1 + .../bs5/dist/css/bootstrap-grid.rtl.min.css | 6 + .../dist/css/bootstrap-grid.rtl.min.css.map | 1 + gawa/static/bs5/dist/css/bootstrap-reboot.css | 593 + .../bs5/dist/css/bootstrap-reboot.css.map | 1 + .../bs5/dist/css/bootstrap-reboot.min.css | 6 + .../bs5/dist/css/bootstrap-reboot.min.css.map | 1 + .../bs5/dist/css/bootstrap-reboot.rtl.css | 590 + .../bs5/dist/css/bootstrap-reboot.rtl.css.map | 1 + .../bs5/dist/css/bootstrap-reboot.rtl.min.css | 6 + .../dist/css/bootstrap-reboot.rtl.min.css.map | 1 + .../bs5/dist/css/bootstrap-utilities.css | 5399 +++++ .../bs5/dist/css/bootstrap-utilities.css.map | 1 + .../bs5/dist/css/bootstrap-utilities.min.css | 6 + .../dist/css/bootstrap-utilities.min.css.map | 1 + .../bs5/dist/css/bootstrap-utilities.rtl.css | 5390 +++++ .../dist/css/bootstrap-utilities.rtl.css.map | 1 + .../dist/css/bootstrap-utilities.rtl.min.css | 6 + .../css/bootstrap-utilities.rtl.min.css.map | 1 + gawa/static/bs5/dist/css/bootstrap.css | 12071 ++++++++++ gawa/static/bs5/dist/css/bootstrap.css.map | 1 + gawa/static/bs5/dist/css/bootstrap.min.css | 6 + .../static/bs5/dist/css/bootstrap.min.css.map | 1 + gawa/static/bs5/dist/css/bootstrap.rtl.css | 12035 ++++++++++ .../static/bs5/dist/css/bootstrap.rtl.css.map | 1 + .../static/bs5/dist/css/bootstrap.rtl.min.css | 6 + .../bs5/dist/css/bootstrap.rtl.min.css.map | 1 + gawa/static/bs5/dist/js/bootstrap.bundle.js | 6306 +++++ .../bs5/dist/js/bootstrap.bundle.js.map | 1 + .../bs5/dist/js/bootstrap.bundle.min.js | 7 + .../bs5/dist/js/bootstrap.bundle.min.js.map | 1 + gawa/static/bs5/dist/js/bootstrap.esm.js | 4439 ++++ gawa/static/bs5/dist/js/bootstrap.esm.js.map | 1 + gawa/static/bs5/dist/js/bootstrap.esm.min.js | 7 + .../bs5/dist/js/bootstrap.esm.min.js.map | 1 + gawa/static/bs5/dist/js/bootstrap.js | 4486 ++++ gawa/static/bs5/dist/js/bootstrap.js.map | 1 + gawa/static/bs5/dist/js/bootstrap.min.js | 7 + gawa/static/bs5/dist/js/bootstrap.min.js.map | 1 + gawa/static/bs5/hugo.yml | 89 + gawa/static/bs5/js/dist/alert.js | 90 + gawa/static/bs5/js/dist/alert.js.map | 1 + gawa/static/bs5/js/dist/base-component.js | 84 + gawa/static/bs5/js/dist/base-component.js.map | 1 + gawa/static/bs5/js/dist/button.js | 79 + gawa/static/bs5/js/dist/button.js.map | 1 + gawa/static/bs5/js/dist/carousel.js | 388 + gawa/static/bs5/js/dist/carousel.js.map | 1 + gawa/static/bs5/js/dist/collapse.js | 249 + gawa/static/bs5/js/dist/collapse.js.map | 1 + gawa/static/bs5/js/dist/dom/data.js | 63 + gawa/static/bs5/js/dist/dom/data.js.map | 1 + gawa/static/bs5/js/dist/dom/event-handler.js | 237 + .../bs5/js/dist/dom/event-handler.js.map | 1 + gawa/static/bs5/js/dist/dom/manipulator.js | 72 + .../static/bs5/js/dist/dom/manipulator.js.map | 1 + .../static/bs5/js/dist/dom/selector-engine.js | 104 + .../bs5/js/dist/dom/selector-engine.js.map | 1 + gawa/static/bs5/js/dist/dropdown.js | 402 + gawa/static/bs5/js/dist/dropdown.js.map | 1 + gawa/static/bs5/js/dist/modal.js | 320 + gawa/static/bs5/js/dist/modal.js.map | 1 + gawa/static/bs5/js/dist/offcanvas.js | 246 + gawa/static/bs5/js/dist/offcanvas.js.map | 1 + gawa/static/bs5/js/dist/popover.js | 96 + gawa/static/bs5/js/dist/popover.js.map | 1 + gawa/static/bs5/js/dist/scrollspy.js | 275 + gawa/static/bs5/js/dist/scrollspy.js.map | 1 + gawa/static/bs5/js/dist/tab.js | 277 + gawa/static/bs5/js/dist/tab.js.map | 1 + gawa/static/bs5/js/dist/toast.js | 199 + gawa/static/bs5/js/dist/toast.js.map | 1 + gawa/static/bs5/js/dist/tooltip.js | 546 + gawa/static/bs5/js/dist/tooltip.js.map | 1 + gawa/static/bs5/js/dist/util/backdrop.js | 140 + gawa/static/bs5/js/dist/util/backdrop.js.map | 1 + .../bs5/js/dist/util/component-functions.js | 42 + .../js/dist/util/component-functions.js.map | 1 + gawa/static/bs5/js/dist/util/config.js | 68 + gawa/static/bs5/js/dist/util/config.js.map | 1 + gawa/static/bs5/js/dist/util/focustrap.js | 114 + gawa/static/bs5/js/dist/util/focustrap.js.map | 1 + gawa/static/bs5/js/dist/util/index.js | 282 + gawa/static/bs5/js/dist/util/index.js.map | 1 + gawa/static/bs5/js/dist/util/sanitizer.js | 111 + gawa/static/bs5/js/dist/util/sanitizer.js.map | 1 + gawa/static/bs5/js/dist/util/scrollbar.js | 113 + gawa/static/bs5/js/dist/util/scrollbar.js.map | 1 + gawa/static/bs5/js/dist/util/swipe.js | 135 + gawa/static/bs5/js/dist/util/swipe.js.map | 1 + .../bs5/js/dist/util/template-factory.js | 151 + .../bs5/js/dist/util/template-factory.js.map | 1 + gawa/static/bs5/js/index.esm.js | 19 + gawa/static/bs5/js/index.umd.js | 34 + gawa/static/bs5/js/src/alert.js | 87 + gawa/static/bs5/js/src/base-component.js | 85 + gawa/static/bs5/js/src/button.js | 72 + gawa/static/bs5/js/src/carousel.js | 474 + gawa/static/bs5/js/src/collapse.js | 297 + gawa/static/bs5/js/src/dom/data.js | 55 + gawa/static/bs5/js/src/dom/event-handler.js | 317 + gawa/static/bs5/js/src/dom/manipulator.js | 71 + gawa/static/bs5/js/src/dom/selector-engine.js | 126 + gawa/static/bs5/js/src/dropdown.js | 455 + gawa/static/bs5/js/src/modal.js | 376 + gawa/static/bs5/js/src/offcanvas.js | 282 + gawa/static/bs5/js/src/popover.js | 97 + gawa/static/bs5/js/src/scrollspy.js | 294 + gawa/static/bs5/js/src/tab.js | 305 + gawa/static/bs5/js/src/toast.js | 225 + gawa/static/bs5/js/src/tooltip.js | 631 + gawa/static/bs5/js/src/util/backdrop.js | 149 + .../bs5/js/src/util/component-functions.js | 35 + gawa/static/bs5/js/src/util/config.js | 65 + gawa/static/bs5/js/src/util/focustrap.js | 115 + gawa/static/bs5/js/src/util/index.js | 306 + gawa/static/bs5/js/src/util/sanitizer.js | 114 + gawa/static/bs5/js/src/util/scrollbar.js | 114 + gawa/static/bs5/js/src/util/swipe.js | 146 + .../bs5/js/src/util/template-factory.js | 160 + gawa/static/bs5/js/tests/README.md | 73 + gawa/static/bs5/js/tests/browsers.js | 80 + gawa/static/bs5/js/tests/helpers/fixture.js | 47 + .../js/tests/integration/bundle-modularity.js | 9 + .../static/bs5/js/tests/integration/bundle.js | 6 + .../bs5/js/tests/integration/index.html | 67 + .../integration/rollup.bundle-modularity.js | 17 + .../bs5/js/tests/integration/rollup.bundle.js | 24 + gawa/static/bs5/js/tests/karma.conf.js | 169 + gawa/static/bs5/js/tests/unit/alert.spec.js | 259 + .../bs5/js/tests/unit/base-component.spec.js | 168 + gawa/static/bs5/js/tests/unit/button.spec.js | 183 + .../static/bs5/js/tests/unit/carousel.spec.js | 1570 ++ .../static/bs5/js/tests/unit/collapse.spec.js | 1062 + .../static/bs5/js/tests/unit/dom/data.spec.js | 104 + .../js/tests/unit/dom/event-handler.spec.js | 480 + .../bs5/js/tests/unit/dom/manipulator.spec.js | 135 + .../js/tests/unit/dom/selector-engine.spec.js | 390 + .../static/bs5/js/tests/unit/dropdown.spec.js | 2431 ++ gawa/static/bs5/js/tests/unit/jquery.spec.js | 60 + gawa/static/bs5/js/tests/unit/modal.spec.js | 1298 ++ .../bs5/js/tests/unit/offcanvas.spec.js | 912 + gawa/static/bs5/js/tests/unit/popover.spec.js | 413 + .../bs5/js/tests/unit/scrollspy.spec.js | 978 + gawa/static/bs5/js/tests/unit/tab.spec.js | 1138 + gawa/static/bs5/js/tests/unit/toast.spec.js | 670 + gawa/static/bs5/js/tests/unit/tooltip.spec.js | 1551 ++ .../bs5/js/tests/unit/util/backdrop.spec.js | 321 + .../unit/util/component-functions.spec.js | 106 + .../bs5/js/tests/unit/util/config.spec.js | 166 + .../bs5/js/tests/unit/util/focustrap.spec.js | 218 + .../bs5/js/tests/unit/util/index.spec.js | 720 + .../bs5/js/tests/unit/util/sanitizer.spec.js | 163 + .../bs5/js/tests/unit/util/scrollbar.spec.js | 363 + .../bs5/js/tests/unit/util/swipe.spec.js | 291 + .../tests/unit/util/template-factory.spec.js | 306 + gawa/static/bs5/js/tests/visual/alert.html | 48 + gawa/static/bs5/js/tests/visual/button.html | 49 + gawa/static/bs5/js/tests/visual/carousel.html | 65 + gawa/static/bs5/js/tests/visual/collapse.html | 76 + gawa/static/bs5/js/tests/visual/dropdown.html | 205 + gawa/static/bs5/js/tests/visual/input.html | 78 + gawa/static/bs5/js/tests/visual/modal.html | 275 + gawa/static/bs5/js/tests/visual/popover.html | 41 + .../static/bs5/js/tests/visual/scrollspy.html | 100 + gawa/static/bs5/js/tests/visual/tab.html | 223 + gawa/static/bs5/js/tests/visual/toast.html | 70 + gawa/static/bs5/js/tests/visual/tooltip.html | 138 + gawa/static/bs5/nuget/MyGet.ps1 | 17 + gawa/static/bs5/nuget/bootstrap.nuspec | 36 + gawa/static/bs5/nuget/bootstrap.png | Bin 0 -> 6421 bytes gawa/static/bs5/nuget/bootstrap.sass.nuspec | 36 + gawa/static/bs5/package-lock.json | 19101 ++++++++++++++++ gawa/static/bs5/package.js | 18 + gawa/static/bs5/package.json | 184 + gawa/static/bs5/scss/_accordion.scss | 158 + gawa/static/bs5/scss/_alert.scss | 68 + gawa/static/bs5/scss/_badge.scss | 38 + gawa/static/bs5/scss/_breadcrumb.scss | 40 + gawa/static/bs5/scss/_button-group.scss | 142 + gawa/static/bs5/scss/_buttons.scss | 207 + gawa/static/bs5/scss/_card.scss | 239 + gawa/static/bs5/scss/_carousel.scss | 244 + gawa/static/bs5/scss/_close.scss | 63 + gawa/static/bs5/scss/_containers.scss | 41 + gawa/static/bs5/scss/_dropdown.scss | 250 + gawa/static/bs5/scss/_forms.scss | 9 + gawa/static/bs5/scss/_functions.scss | 302 + gawa/static/bs5/scss/_grid.scss | 39 + gawa/static/bs5/scss/_helpers.scss | 12 + gawa/static/bs5/scss/_images.scss | 42 + gawa/static/bs5/scss/_list-group.scss | 197 + gawa/static/bs5/scss/_maps.scss | 174 + gawa/static/bs5/scss/_mixins.scss | 42 + gawa/static/bs5/scss/_modal.scss | 237 + gawa/static/bs5/scss/_nav.scss | 209 + gawa/static/bs5/scss/_navbar.scss | 289 + gawa/static/bs5/scss/_offcanvas.scss | 146 + gawa/static/bs5/scss/_pagination.scss | 109 + gawa/static/bs5/scss/_placeholders.scss | 51 + gawa/static/bs5/scss/_popover.scss | 196 + gawa/static/bs5/scss/_progress.scss | 68 + gawa/static/bs5/scss/_reboot.scss | 610 + gawa/static/bs5/scss/_root.scss | 184 + gawa/static/bs5/scss/_spinners.scss | 85 + gawa/static/bs5/scss/_tables.scss | 171 + gawa/static/bs5/scss/_toasts.scss | 73 + gawa/static/bs5/scss/_tooltip.scss | 119 + gawa/static/bs5/scss/_transitions.scss | 27 + gawa/static/bs5/scss/_type.scss | 106 + gawa/static/bs5/scss/_utilities.scss | 806 + gawa/static/bs5/scss/_variables-dark.scss | 85 + gawa/static/bs5/scss/_variables.scss | 1743 ++ gawa/static/bs5/scss/bootstrap-grid.scss | 62 + gawa/static/bs5/scss/bootstrap-reboot.scss | 10 + gawa/static/bs5/scss/bootstrap-utilities.scss | 19 + gawa/static/bs5/scss/bootstrap.scss | 52 + .../bs5/scss/forms/_floating-labels.scss | 94 + gawa/static/bs5/scss/forms/_form-check.scss | 188 + gawa/static/bs5/scss/forms/_form-control.scss | 214 + gawa/static/bs5/scss/forms/_form-range.scss | 91 + gawa/static/bs5/scss/forms/_form-select.scss | 80 + gawa/static/bs5/scss/forms/_form-text.scss | 11 + gawa/static/bs5/scss/forms/_input-group.scss | 132 + gawa/static/bs5/scss/forms/_labels.scss | 36 + gawa/static/bs5/scss/forms/_validation.scss | 12 + gawa/static/bs5/scss/helpers/_clearfix.scss | 3 + gawa/static/bs5/scss/helpers/_color-bg.scss | 8 + .../bs5/scss/helpers/_colored-links.scss | 30 + gawa/static/bs5/scss/helpers/_focus-ring.scss | 5 + gawa/static/bs5/scss/helpers/_icon-link.scss | 25 + gawa/static/bs5/scss/helpers/_position.scss | 36 + gawa/static/bs5/scss/helpers/_ratio.scss | 26 + gawa/static/bs5/scss/helpers/_stacks.scss | 15 + .../bs5/scss/helpers/_stretched-link.scss | 15 + .../bs5/scss/helpers/_text-truncation.scss | 7 + .../bs5/scss/helpers/_visually-hidden.scss | 8 + gawa/static/bs5/scss/helpers/_vr.scss | 8 + gawa/static/bs5/scss/mixins/_alert.scss | 18 + gawa/static/bs5/scss/mixins/_backdrop.scss | 14 + gawa/static/bs5/scss/mixins/_banner.scss | 7 + .../bs5/scss/mixins/_border-radius.scss | 78 + gawa/static/bs5/scss/mixins/_box-shadow.scss | 18 + gawa/static/bs5/scss/mixins/_breakpoints.scss | 127 + gawa/static/bs5/scss/mixins/_buttons.scss | 70 + gawa/static/bs5/scss/mixins/_caret.scss | 69 + gawa/static/bs5/scss/mixins/_clearfix.scss | 9 + gawa/static/bs5/scss/mixins/_color-mode.scss | 21 + .../static/bs5/scss/mixins/_color-scheme.scss | 7 + gawa/static/bs5/scss/mixins/_container.scss | 11 + gawa/static/bs5/scss/mixins/_deprecate.scss | 10 + gawa/static/bs5/scss/mixins/_forms.scss | 153 + gawa/static/bs5/scss/mixins/_gradients.scss | 47 + gawa/static/bs5/scss/mixins/_grid.scss | 151 + gawa/static/bs5/scss/mixins/_image.scss | 16 + gawa/static/bs5/scss/mixins/_list-group.scss | 26 + gawa/static/bs5/scss/mixins/_lists.scss | 7 + gawa/static/bs5/scss/mixins/_pagination.scss | 10 + gawa/static/bs5/scss/mixins/_reset-text.scss | 17 + gawa/static/bs5/scss/mixins/_resize.scss | 6 + .../bs5/scss/mixins/_table-variants.scss | 24 + .../bs5/scss/mixins/_text-truncate.scss | 8 + gawa/static/bs5/scss/mixins/_transition.scss | 26 + gawa/static/bs5/scss/mixins/_utilities.scss | 97 + .../bs5/scss/mixins/_visually-hidden.scss | 33 + gawa/static/bs5/scss/tests/jasmine.js | 16 + .../scss/tests/mixins/_color-modes.test.scss | 69 + .../_media-query-color-mode-full.test.scss | 8 + .../scss/tests/mixins/_utilities.test.scss | 393 + .../bs5/scss/tests/sass-true/register.js | 14 + .../static/bs5/scss/tests/sass-true/runner.js | 17 + .../bs5/scss/tests/utilities/_api.test.scss | 75 + gawa/static/bs5/scss/utilities/_api.scss | 47 + gawa/static/bs5/scss/vendor/_rfs.scss | 348 + gawa/static/bs5/site/assets/js/application.js | 30 + .../bs5/site/assets/js/code-examples.js | 89 + gawa/static/bs5/site/assets/js/search.js | 45 + gawa/static/bs5/site/assets/js/snippets.js | 170 + .../site/assets/js/vendor/clipboard.min.js | 7 + gawa/static/bs5/site/assets/scss/_ads.scss | 38 + gawa/static/bs5/site/assets/scss/_anchor.scss | 21 + gawa/static/bs5/site/assets/scss/_brand.scss | 60 + .../static/bs5/site/assets/scss/_buttons.scss | 52 + .../bs5/site/assets/scss/_callouts.scss | 40 + .../bs5/site/assets/scss/_clipboard-js.scss | 44 + gawa/static/bs5/site/assets/scss/_colors.scss | 155 + .../site/assets/scss/_component-examples.scss | 399 + .../static/bs5/site/assets/scss/_content.scss | 163 + gawa/static/bs5/site/assets/scss/_footer.scss | 16 + gawa/static/bs5/site/assets/scss/_layout.scss | 57 + .../bs5/site/assets/scss/_masthead.scss | 119 + gawa/static/bs5/site/assets/scss/_navbar.scss | 129 + .../site/assets/scss/_placeholder-img.scss | 15 + .../bs5/site/assets/scss/_scrolling.scss | 13 + gawa/static/bs5/site/assets/scss/_search.scss | 172 + .../static/bs5/site/assets/scss/_sidebar.scss | 64 + gawa/static/bs5/site/assets/scss/_skippy.scss | 7 + gawa/static/bs5/site/assets/scss/_syntax.scss | 142 + gawa/static/bs5/site/assets/scss/_toc.scss | 93 + .../bs5/site/assets/scss/_variables.scss | 35 + gawa/static/bs5/site/assets/scss/docs.scss | 59 + gawa/static/bs5/site/content/404.md | 13 + .../bs5/site/content/docs/5.3/_index.html | 5 + .../bs5/site/content/docs/5.3/about/brand.md | 43 + .../site/content/docs/5.3/about/license.md | 34 + .../site/content/docs/5.3/about/overview.md | 29 + .../bs5/site/content/docs/5.3/about/team.md | 23 + .../content/docs/5.3/about/translations.md | 20 + .../content/docs/5.3/components/accordion.md | 165 + .../content/docs/5.3/components/alerts.md | 242 + .../site/content/docs/5.3/components/badge.md | 103 + .../content/docs/5.3/components/breadcrumb.md | 108 + .../docs/5.3/components/button-group.md | 252 + .../content/docs/5.3/components/buttons.md | 256 + .../site/content/docs/5.3/components/card.md | 739 + .../content/docs/5.3/components/carousel.md | 448 + .../docs/5.3/components/close-button.md | 54 + .../content/docs/5.3/components/collapse.md | 198 + .../content/docs/5.3/components/dropdowns.md | 1131 + .../content/docs/5.3/components/list-group.md | 502 + .../site/content/docs/5.3/components/modal.md | 871 + .../content/docs/5.3/components/navbar.md | 817 + .../content/docs/5.3/components/navs-tabs.md | 698 + .../content/docs/5.3/components/offcanvas.md | 357 + .../content/docs/5.3/components/pagination.md | 177 + .../docs/5.3/components/placeholders.md | 145 + .../content/docs/5.3/components/popovers.md | 280 + .../content/docs/5.3/components/progress.md | 202 + .../content/docs/5.3/components/scrollspy.md | 427 + .../content/docs/5.3/components/spinners.md | 211 + .../content/docs/5.3/components/toasts.md | 391 + .../content/docs/5.3/components/tooltips.md | 294 + .../site/content/docs/5.3/content/figures.md | 33 + .../site/content/docs/5.3/content/images.md | 63 + .../site/content/docs/5.3/content/reboot.md | 473 + .../site/content/docs/5.3/content/tables.md | 839 + .../content/docs/5.3/content/typography.md | 286 + .../content/docs/5.3/customize/color-modes.md | 258 + .../site/content/docs/5.3/customize/color.md | 510 + .../content/docs/5.3/customize/components.md | 77 + .../docs/5.3/customize/css-variables.md | 93 + .../content/docs/5.3/customize/optimize.md | 92 + .../content/docs/5.3/customize/options.md | 32 + .../content/docs/5.3/customize/overview.md | 53 + .../site/content/docs/5.3/customize/sass.md | 314 + .../bs5/site/content/docs/5.3/docsref.md | 49 + .../site/content/docs/5.3/examples/_index.md | 66 + .../docs/5.3/examples/album-rtl/index.html | 209 + .../docs/5.3/examples/album/index.html | 208 + .../docs/5.3/examples/badges/badges.css | 3 + .../docs/5.3/examples/badges/index.html | 149 + .../docs/5.3/examples/blog-rtl/index.html | 257 + .../content/docs/5.3/examples/blog/blog.css | 39 + .../docs/5.3/examples/blog/blog.rtl.css | 39 + .../content/docs/5.3/examples/blog/index.html | 309 + .../5.3/examples/breadcrumbs/breadcrumbs.css | 50 + .../docs/5.3/examples/breadcrumbs/index.html | 88 + .../docs/5.3/examples/buttons/index.html | 88 + .../docs/5.3/examples/carousel-rtl/index.html | 167 + .../docs/5.3/examples/carousel/carousel.css | 82 + .../5.3/examples/carousel/carousel.rtl.css | 74 + .../docs/5.3/examples/carousel/index.html | 166 + .../5.3/examples/cheatsheet-rtl/index.html | 1622 ++ .../5.3/examples/cheatsheet/cheatsheet.css | 164 + .../5.3/examples/cheatsheet/cheatsheet.js | 73 + .../examples/cheatsheet/cheatsheet.rtl.css | 157 + .../docs/5.3/examples/cheatsheet/index.html | 1606 ++ .../docs/5.3/examples/checkout-rtl/index.html | 232 + .../docs/5.3/examples/checkout/checkout.css | 3 + .../docs/5.3/examples/checkout/checkout.js | 19 + .../docs/5.3/examples/checkout/index.html | 232 + .../content/docs/5.3/examples/cover/cover.css | 50 + .../docs/5.3/examples/cover/index.html | 33 + .../5.3/examples/dashboard-rtl/dashboard.js | 49 + .../5.3/examples/dashboard-rtl/index.html | 333 + .../docs/5.3/examples/dashboard/dashboard.css | 48 + .../docs/5.3/examples/dashboard/dashboard.js | 49 + .../5.3/examples/dashboard/dashboard.rtl.css | 48 + .../docs/5.3/examples/dashboard/index.html | 332 + .../docs/5.3/examples/dropdowns/dropdowns.css | 71 + .../docs/5.3/examples/dropdowns/index.html | 462 + .../docs/5.3/examples/features/features.css | 26 + .../docs/5.3/examples/features/index.html | 340 + .../examples/features/unsplash-photo-1.jpg | Bin 0 -> 10451 bytes .../examples/features/unsplash-photo-2.jpg | Bin 0 -> 113018 bytes .../examples/features/unsplash-photo-3.jpg | Bin 0 -> 40607 bytes .../docs/5.3/examples/footers/index.html | 186 + .../content/docs/5.3/examples/grid/grid.css | 13 + .../content/docs/5.3/examples/grid/index.html | 187 + .../docs/5.3/examples/headers/headers.css | 15 + .../docs/5.3/examples/headers/index.html | 297 + .../5.3/examples/heroes/bootstrap-docs.png | Bin 0 -> 371399 bytes .../5.3/examples/heroes/bootstrap-themes.png | Bin 0 -> 278159 bytes .../docs/5.3/examples/heroes/heroes.css | 3 + .../docs/5.3/examples/heroes/index.html | 125 + .../docs/5.3/examples/jumbotron/index.html | 44 + .../docs/5.3/examples/jumbotrons/index.html | 82 + .../5.3/examples/jumbotrons/jumbotrons.css | 1 + .../docs/5.3/examples/list-groups/index.html | 225 + .../5.3/examples/list-groups/list-groups.css | 63 + .../docs/5.3/examples/masonry/index.html | 105 + .../docs/5.3/examples/modals/index.html | 150 + .../docs/5.3/examples/modals/modals.css | 8 + .../5.3/examples/navbar-bottom/index.html | 41 + .../docs/5.3/examples/navbar-fixed/index.html | 40 + .../examples/navbar-fixed/navbar-fixed.css | 5 + .../5.3/examples/navbar-static/index.html | 40 + .../examples/navbar-static/navbar-static.css | 4 + .../5.3/examples/navbars-offcanvas/index.html | 147 + .../navbars-offcanvas/navbars-offcanvas.css | 7 + .../docs/5.3/examples/navbars/index.html | 450 + .../docs/5.3/examples/navbars/navbars.css | 7 + .../5.3/examples/offcanvas-navbar/index.html | 140 + .../offcanvas-navbar/offcanvas-navbar.css | 52 + .../offcanvas-navbar/offcanvas-navbar.js | 7 + .../docs/5.3/examples/pricing/index.html | 186 + .../docs/5.3/examples/pricing/pricing.css | 11 + .../docs/5.3/examples/product/index.html | 189 + .../docs/5.3/examples/product/product.css | 74 + .../docs/5.3/examples/sidebars/index.html | 356 + .../docs/5.3/examples/sidebars/sidebars.css | 63 + .../docs/5.3/examples/sidebars/sidebars.js | 8 + .../docs/5.3/examples/sign-in/index.html | 32 + .../docs/5.3/examples/sign-in/sign-in.css | 25 + .../5.3/examples/starter-template/index.html | 107 + .../examples/sticky-footer-navbar/index.html | 52 + .../sticky-footer-navbar.css | 7 + .../5.3/examples/sticky-footer/index.html | 23 + .../examples/sticky-footer/sticky-footer.css | 9 + .../site/content/docs/5.3/extend/approach.md | 86 + .../bs5/site/content/docs/5.3/extend/icons.md | 40 + .../content/docs/5.3/forms/checks-radios.md | 313 + .../content/docs/5.3/forms/floating-labels.md | 180 + .../content/docs/5.3/forms/form-control.md | 190 + .../content/docs/5.3/forms/input-group.md | 319 + .../bs5/site/content/docs/5.3/forms/layout.md | 329 + .../site/content/docs/5.3/forms/overview.md | 116 + .../bs5/site/content/docs/5.3/forms/range.md | 49 + .../bs5/site/content/docs/5.3/forms/select.md | 81 + .../site/content/docs/5.3/forms/validation.md | 394 + .../docs/5.3/getting-started/accessibility.md | 62 + .../5.3/getting-started/best-practices.md | 20 + .../5.3/getting-started/browsers-devices.md | 79 + .../docs/5.3/getting-started/contents.md | 111 + .../docs/5.3/getting-started/contribute.md | 67 + .../docs/5.3/getting-started/download.md | 119 + .../docs/5.3/getting-started/introduction.md | 162 + .../docs/5.3/getting-started/javascript.md | 312 + .../docs/5.3/getting-started/parcel.md | 159 + .../content/docs/5.3/getting-started/rfs.md | 86 + .../content/docs/5.3/getting-started/rtl.md | 178 + .../content/docs/5.3/getting-started/vite.md | 181 + .../docs/5.3/getting-started/webpack.md | 347 + .../site/content/docs/5.3/helpers/clearfix.md | 36 + .../docs/5.3/helpers/color-background.md | 54 + .../content/docs/5.3/helpers/colored-links.md | 43 + .../content/docs/5.3/helpers/focus-ring.md | 68 + .../content/docs/5.3/helpers/icon-link.md | 88 + .../site/content/docs/5.3/helpers/position.md | 63 + .../site/content/docs/5.3/helpers/ratio.md | 81 + .../site/content/docs/5.3/helpers/stacks.md | 85 + .../docs/5.3/helpers/stretched-link.md | 74 + .../docs/5.3/helpers/text-truncation.md | 23 + .../content/docs/5.3/helpers/vertical-rule.md | 45 + .../docs/5.3/helpers/visually-hidden.md | 29 + .../content/docs/5.3/layout/breakpoints.md | 174 + .../site/content/docs/5.3/layout/columns.md | 334 + .../content/docs/5.3/layout/containers.md | 95 + .../site/content/docs/5.3/layout/css-grid.md | 267 + .../bs5/site/content/docs/5.3/layout/grid.md | 530 + .../site/content/docs/5.3/layout/gutters.md | 165 + .../site/content/docs/5.3/layout/utilities.md | 25 + .../site/content/docs/5.3/layout/z-index.md | 16 + .../bs5/site/content/docs/5.3/migration.md | 737 + .../site/content/docs/5.3/utilities/api.md | 623 + .../content/docs/5.3/utilities/background.md | 150 + .../content/docs/5.3/utilities/borders.md | 194 + .../site/content/docs/5.3/utilities/colors.md | 141 + .../content/docs/5.3/utilities/display.md | 114 + .../site/content/docs/5.3/utilities/flex.md | 664 + .../site/content/docs/5.3/utilities/float.md | 48 + .../docs/5.3/utilities/interactions.md | 42 + .../site/content/docs/5.3/utilities/link.md | 105 + .../content/docs/5.3/utilities/object-fit.md | 63 + .../content/docs/5.3/utilities/opacity.md | 33 + .../content/docs/5.3/utilities/overflow.md | 99 + .../content/docs/5.3/utilities/position.md | 130 + .../content/docs/5.3/utilities/shadows.md | 30 + .../site/content/docs/5.3/utilities/sizing.md | 62 + .../content/docs/5.3/utilities/spacing.md | 154 + .../site/content/docs/5.3/utilities/text.md | 160 + .../docs/5.3/utilities/vertical-align.md | 48 + .../content/docs/5.3/utilities/visibility.md | 37 + .../content/docs/5.3/utilities/z-index.md | 50 + gawa/static/bs5/site/content/docs/_index.html | 5 + gawa/static/bs5/site/content/docs/versions.md | 27 + gawa/static/bs5/site/data/breakpoints.yml | 35 + gawa/static/bs5/site/data/colors.yml | 26 + gawa/static/bs5/site/data/core-team.yml | 35 + gawa/static/bs5/site/data/docs-versions.yml | 56 + gawa/static/bs5/site/data/examples.yml | 142 + gawa/static/bs5/site/data/grays.yml | 18 + gawa/static/bs5/site/data/icons.yml | 27 + gawa/static/bs5/site/data/plugins.yml | 47 + gawa/static/bs5/site/data/sidebar.yml | 159 + gawa/static/bs5/site/data/theme-colors.yml | 20 + gawa/static/bs5/site/data/translations.yml | 44 + .../static/bs5/site/layouts/_default/404.html | 6 + .../_default/_markup/render-heading.html | 5 + .../bs5/site/layouts/_default/baseof.html | 21 + .../bs5/site/layouts/_default/docs.html | 72 + .../bs5/site/layouts/_default/examples.html | 166 + .../bs5/site/layouts/_default/home.html | 16 + .../bs5/site/layouts/_default/redirect.html | 1 + .../bs5/site/layouts/_default/single.html | 52 + gawa/static/bs5/site/layouts/alias.html | 1 + .../static/bs5/site/layouts/partials/ads.html | 1 + .../bs5/site/layouts/partials/analytics.html | 9 + .../partials/callouts/danger-async-methods.md | 1 + .../callouts/info-mediaqueries-breakpoints.md | 1 + .../partials/callouts/info-npm-starter.md | 1 + .../callouts/info-prefersreducedmotion.md | 1 + .../partials/callouts/info-sanitizer.md | 1 + .../warning-color-assistive-technologies.md | 1 + .../warning-data-bs-title-vs-title.md | 1 + .../callouts/warning-input-support.md | 1 + .../site/layouts/partials/docs-navbar.html | 126 + .../site/layouts/partials/docs-sidebar.html | 46 + .../site/layouts/partials/docs-versions.html | 54 + .../bs5/site/layouts/partials/favicons.html | 8 + .../bs5/site/layouts/partials/footer.html | 59 + .../bs5/site/layouts/partials/guide-footer.md | 3 + .../bs5/site/layouts/partials/header.html | 28 + .../partials/home/components-utilities.html | 88 + .../layouts/partials/home/css-variables.html | 48 + .../site/layouts/partials/home/customize.html | 59 + .../layouts/partials/home/get-started.html | 58 + .../bs5/site/layouts/partials/home/icons.html | 23 + .../site/layouts/partials/home/masthead.html | 34 + .../site/layouts/partials/home/plugins.html | 65 + .../site/layouts/partials/home/themes.html | 23 + .../bs5/site/layouts/partials/icons.html | 81 + .../partials/icons/bootstrap-white-fill.svg | 1 + .../layouts/partials/icons/circle-square.svg | 4 + .../layouts/partials/icons/droplet-fill.svg | 3 + .../site/layouts/partials/icons/github.svg | 1 + .../site/layouts/partials/icons/hamburger.svg | 3 + .../layouts/partials/icons/opencollective.svg | 1 + .../site/layouts/partials/icons/twitter.svg | 1 + .../layouts/partials/js-data-attributes.md | 5 + .../bs5/site/layouts/partials/redirect.html | 11 + .../bs5/site/layouts/partials/scripts.html | 72 + .../bs5/site/layouts/partials/skippy.html | 8 + .../bs5/site/layouts/partials/social.html | 27 + .../bs5/site/layouts/partials/stylesheet.html | 27 + .../site/layouts/partials/table-content.html | 27 + gawa/static/bs5/site/layouts/robots.txt | 12 + .../bs5/site/layouts/shortcodes/added-in.html | 5 + .../bs5/site/layouts/shortcodes/bs-table.html | 9 + .../callout-deprecated-dark-variants.html | 9 + .../bs5/site/layouts/shortcodes/callout.html | 9 + .../layouts/shortcodes/deprecated-in.html | 5 + .../bs5/site/layouts/shortcodes/docsref.html | 1 + .../bs5/site/layouts/shortcodes/example.html | 49 + .../site/layouts/shortcodes/js-dismiss.html | 15 + .../bs5/site/layouts/shortcodes/js-docs.html | 64 + .../bs5/site/layouts/shortcodes/markdown.html | 1 + .../bs5/site/layouts/shortcodes/param.html | 14 + .../bs5/site/layouts/shortcodes/partial.html | 1 + .../site/layouts/shortcodes/placeholder.html | 44 + .../site/layouts/shortcodes/scss-docs.html | 76 + .../bs5/site/layouts/shortcodes/table.html | 31 + .../bs5/site/layouts/shortcodes/year.html | 3 + gawa/static/bs5/site/layouts/sitemap.xml | 12 + gawa/static/bs5/site/static/CNAME | 1 + .../5.3/assets/brand/bootstrap-logo-black.svg | 1 + .../assets/brand/bootstrap-logo-shadow.png | Bin 0 -> 48625 bytes .../5.3/assets/brand/bootstrap-logo-white.svg | 1 + .../docs/5.3/assets/brand/bootstrap-logo.svg | 1 + .../5.3/assets/brand/bootstrap-social.png | Bin 0 -> 724582 bytes .../docs/5.3/assets/img/bootstrap-icons.png | Bin 0 -> 40798 bytes .../5.3/assets/img/bootstrap-icons@2x.png | Bin 0 -> 125442 bytes .../assets/img/bootstrap-themes-collage.png | Bin 0 -> 74442 bytes .../img/bootstrap-themes-collage@2x.png | Bin 0 -> 244640 bytes .../docs/5.3/assets/img/bootstrap-themes.png | Bin 0 -> 88695 bytes .../5.3/assets/img/bootstrap-themes@2x.png | Bin 0 -> 278159 bytes .../5.3/assets/img/examples/album-rtl.png | Bin 0 -> 6391 bytes .../5.3/assets/img/examples/album-rtl@2x.png | Bin 0 -> 15347 bytes .../docs/5.3/assets/img/examples/album.png | Bin 0 -> 10678 bytes .../docs/5.3/assets/img/examples/album@2x.png | Bin 0 -> 25026 bytes .../docs/5.3/assets/img/examples/badges.png | Bin 0 -> 6328 bytes .../5.3/assets/img/examples/badges@2x.png | Bin 0 -> 14798 bytes .../docs/5.3/assets/img/examples/blog-rtl.png | Bin 0 -> 12545 bytes .../5.3/assets/img/examples/blog-rtl@2x.png | Bin 0 -> 31035 bytes .../docs/5.3/assets/img/examples/blog.png | Bin 0 -> 15245 bytes .../docs/5.3/assets/img/examples/blog@2x.png | Bin 0 -> 36944 bytes .../5.3/assets/img/examples/breadcrumbs.png | Bin 0 -> 2382 bytes .../assets/img/examples/breadcrumbs@2x.png | Bin 0 -> 6028 bytes .../docs/5.3/assets/img/examples/buttons.png | Bin 0 -> 4545 bytes .../5.3/assets/img/examples/buttons@2x.png | Bin 0 -> 9994 bytes .../5.3/assets/img/examples/carousel-rtl.png | Bin 0 -> 10344 bytes .../assets/img/examples/carousel-rtl@2x.png | Bin 0 -> 24460 bytes .../docs/5.3/assets/img/examples/carousel.png | Bin 0 -> 13219 bytes .../5.3/assets/img/examples/carousel@2x.png | Bin 0 -> 31320 bytes .../assets/img/examples/cheatsheet-rtl.png | Bin 0 -> 6089 bytes .../assets/img/examples/cheatsheet-rtl@2x.png | Bin 0 -> 13863 bytes .../5.3/assets/img/examples/cheatsheet.png | Bin 0 -> 8132 bytes .../5.3/assets/img/examples/cheatsheet@2x.png | Bin 0 -> 19324 bytes .../5.3/assets/img/examples/checkout-rtl.png | Bin 0 -> 8848 bytes .../assets/img/examples/checkout-rtl@2x.png | Bin 0 -> 21965 bytes .../docs/5.3/assets/img/examples/checkout.png | Bin 0 -> 7639 bytes .../5.3/assets/img/examples/checkout@2x.png | Bin 0 -> 19105 bytes .../docs/5.3/assets/img/examples/cover.png | Bin 0 -> 7240 bytes .../docs/5.3/assets/img/examples/cover@2x.png | Bin 0 -> 17927 bytes .../5.3/assets/img/examples/dashboard-rtl.png | Bin 0 -> 8261 bytes .../assets/img/examples/dashboard-rtl@2x.png | Bin 0 -> 19399 bytes .../5.3/assets/img/examples/dashboard.png | Bin 0 -> 11914 bytes .../5.3/assets/img/examples/dashboard@2x.png | Bin 0 -> 26556 bytes .../5.3/assets/img/examples/dropdowns.png | Bin 0 -> 6146 bytes .../5.3/assets/img/examples/dropdowns@2x.png | Bin 0 -> 15203 bytes .../docs/5.3/assets/img/examples/features.png | Bin 0 -> 6067 bytes .../5.3/assets/img/examples/features@2x.png | Bin 0 -> 15002 bytes .../docs/5.3/assets/img/examples/footers.png | Bin 0 -> 4297 bytes .../5.3/assets/img/examples/footers@2x.png | Bin 0 -> 10238 bytes .../docs/5.3/assets/img/examples/grid.png | Bin 0 -> 9395 bytes .../docs/5.3/assets/img/examples/grid@2x.png | Bin 0 -> 24996 bytes .../docs/5.3/assets/img/examples/headers.png | Bin 0 -> 5196 bytes .../5.3/assets/img/examples/headers@2x.png | Bin 0 -> 12639 bytes .../docs/5.3/assets/img/examples/heroes.png | Bin 0 -> 9017 bytes .../5.3/assets/img/examples/heroes@2x.png | Bin 0 -> 23433 bytes .../5.3/assets/img/examples/jumbotron.png | Bin 0 -> 9155 bytes .../5.3/assets/img/examples/jumbotron@2x.png | Bin 0 -> 23316 bytes .../5.3/assets/img/examples/jumbotrons.png | Bin 0 -> 6463 bytes .../5.3/assets/img/examples/jumbotrons@2x.png | Bin 0 -> 13933 bytes .../5.3/assets/img/examples/list-groups.png | Bin 0 -> 7134 bytes .../assets/img/examples/list-groups@2x.png | Bin 0 -> 17804 bytes .../docs/5.3/assets/img/examples/masonry.png | Bin 0 -> 15253 bytes .../5.3/assets/img/examples/masonry@2x.png | Bin 0 -> 37705 bytes .../docs/5.3/assets/img/examples/modals.png | Bin 0 -> 4814 bytes .../5.3/assets/img/examples/modals@2x.png | Bin 0 -> 11689 bytes .../5.3/assets/img/examples/navbar-bottom.png | Bin 0 -> 4819 bytes .../assets/img/examples/navbar-bottom@2x.png | Bin 0 -> 11666 bytes .../5.3/assets/img/examples/navbar-fixed.png | Bin 0 -> 5876 bytes .../assets/img/examples/navbar-fixed@2x.png | Bin 0 -> 13979 bytes .../5.3/assets/img/examples/navbar-static.png | Bin 0 -> 6541 bytes .../assets/img/examples/navbar-static@2x.png | Bin 0 -> 15155 bytes .../assets/img/examples/navbars-offcanvas.png | Bin 0 -> 6850 bytes .../img/examples/navbars-offcanvas@2x.png | Bin 0 -> 16965 bytes .../docs/5.3/assets/img/examples/navbars.png | Bin 0 -> 12965 bytes .../5.3/assets/img/examples/navbars@2x.png | Bin 0 -> 31168 bytes .../assets/img/examples/offcanvas-navbar.png | Bin 0 -> 9691 bytes .../img/examples/offcanvas-navbar@2x.png | Bin 0 -> 23975 bytes .../docs/5.3/assets/img/examples/pricing.png | Bin 0 -> 11621 bytes .../5.3/assets/img/examples/pricing@2x.png | Bin 0 -> 29088 bytes .../docs/5.3/assets/img/examples/product.png | Bin 0 -> 12906 bytes .../5.3/assets/img/examples/product@2x.png | Bin 0 -> 27953 bytes .../docs/5.3/assets/img/examples/sidebars.png | Bin 0 -> 12287 bytes .../5.3/assets/img/examples/sidebars@2x.png | Bin 0 -> 33499 bytes .../docs/5.3/assets/img/examples/sign-in.png | Bin 0 -> 2199 bytes .../5.3/assets/img/examples/sign-in@2x.png | Bin 0 -> 4568 bytes .../assets/img/examples/starter-template.png | Bin 0 -> 7753 bytes .../img/examples/starter-template@2x.png | Bin 0 -> 20134 bytes .../img/examples/sticky-footer-navbar.png | Bin 0 -> 6966 bytes .../img/examples/sticky-footer-navbar@2x.png | Bin 0 -> 15744 bytes .../5.3/assets/img/examples/sticky-footer.png | Bin 0 -> 4279 bytes .../assets/img/examples/sticky-footer@2x.png | Bin 0 -> 9665 bytes .../img/favicons/android-chrome-192x192.png | Bin 0 -> 8364 bytes .../img/favicons/android-chrome-512x512.png | Bin 0 -> 23832 bytes .../assets/img/favicons/apple-touch-icon.png | Bin 0 -> 7650 bytes .../5.3/assets/img/favicons/favicon-16x16.png | Bin 0 -> 525 bytes .../5.3/assets/img/favicons/favicon-32x32.png | Bin 0 -> 1156 bytes .../docs/5.3/assets/img/favicons/favicon.ico | Bin 0 -> 15086 bytes .../5.3/assets/img/favicons/manifest.json | 20 + .../assets/img/favicons/safari-pinned-tab.svg | 1 + .../assets/img/guides/bootstrap-parcel.png | Bin 0 -> 161826 bytes .../assets/img/guides/bootstrap-parcel@2x.png | Bin 0 -> 564766 bytes .../5.3/assets/img/guides/bootstrap-vite.png | Bin 0 -> 169189 bytes .../assets/img/guides/bootstrap-vite@2x.png | Bin 0 -> 558538 bytes .../assets/img/guides/bootstrap-webpack.png | Bin 0 -> 169872 bytes .../img/guides/bootstrap-webpack@2x.png | Bin 0 -> 572482 bytes .../guides/parcel-dev-server-bootstrap.png | Bin 0 -> 15565 bytes .../assets/img/guides/parcel-dev-server.png | Bin 0 -> 13933 bytes .../img/guides/vite-dev-server-bootstrap.png | Bin 0 -> 14001 bytes .../5.3/assets/img/guides/vite-dev-server.png | Bin 0 -> 13584 bytes .../guides/webpack-dev-server-bootstrap.png | Bin 0 -> 14702 bytes .../assets/img/guides/webpack-dev-server.png | Bin 0 -> 14197 bytes .../static/docs/5.3/assets/img/parcel.png | Bin 0 -> 6003 bytes .../site/static/docs/5.3/assets/img/vite.svg | 1 + .../static/docs/5.3/assets/img/webpack.svg | 1 + .../static/docs/5.3/assets/js/color-modes.js | 80 + .../docs/5.3/assets/js/validate-forms.js | 19 + gawa/static/bs5/site/static/sw.js | 27 + gawa/static/bsi1/0-circle-fill.svg | 4 + gawa/static/bsi1/0-circle.svg | 4 + gawa/static/bsi1/0-square-fill.svg | 4 + gawa/static/bsi1/0-square.svg | 4 + gawa/static/bsi1/1-circle-fill.svg | 3 + gawa/static/bsi1/1-circle.svg | 3 + gawa/static/bsi1/1-square-fill.svg | 3 + gawa/static/bsi1/1-square.svg | 4 + gawa/static/bsi1/123.svg | 3 + gawa/static/bsi1/2-circle-fill.svg | 3 + gawa/static/bsi1/2-circle.svg | 3 + gawa/static/bsi1/2-square-fill.svg | 3 + gawa/static/bsi1/2-square.svg | 4 + gawa/static/bsi1/3-circle-fill.svg | 3 + gawa/static/bsi1/3-circle.svg | 4 + gawa/static/bsi1/3-square-fill.svg | 3 + gawa/static/bsi1/3-square.svg | 4 + gawa/static/bsi1/4-circle-fill.svg | 3 + gawa/static/bsi1/4-circle.svg | 4 + gawa/static/bsi1/4-square-fill.svg | 4 + gawa/static/bsi1/4-square.svg | 4 + gawa/static/bsi1/5-circle-fill.svg | 3 + gawa/static/bsi1/5-circle.svg | 3 + gawa/static/bsi1/5-square-fill.svg | 3 + gawa/static/bsi1/5-square.svg | 4 + gawa/static/bsi1/6-circle-fill.svg | 3 + gawa/static/bsi1/6-circle.svg | 3 + gawa/static/bsi1/6-square-fill.svg | 4 + gawa/static/bsi1/6-square.svg | 4 + gawa/static/bsi1/7-circle-fill.svg | 3 + gawa/static/bsi1/7-circle.svg | 3 + gawa/static/bsi1/7-square-fill.svg | 3 + gawa/static/bsi1/7-square.svg | 4 + gawa/static/bsi1/8-circle-fill.svg | 3 + gawa/static/bsi1/8-circle.svg | 3 + gawa/static/bsi1/8-square-fill.svg | 4 + gawa/static/bsi1/8-square.svg | 4 + gawa/static/bsi1/9-circle-fill.svg | 3 + gawa/static/bsi1/9-circle.svg | 3 + gawa/static/bsi1/9-square-fill.svg | 4 + gawa/static/bsi1/9-square.svg | 4 + gawa/static/bsi1/activity.svg | 3 + gawa/static/bsi1/airplane-engines-fill.svg | 3 + gawa/static/bsi1/airplane-engines.svg | 3 + gawa/static/bsi1/airplane-fill.svg | 3 + gawa/static/bsi1/airplane.svg | 3 + gawa/static/bsi1/alarm-fill.svg | 3 + gawa/static/bsi1/alarm.svg | 4 + gawa/static/bsi1/alexa.svg | 3 + gawa/static/bsi1/align-bottom.svg | 4 + gawa/static/bsi1/align-center.svg | 3 + gawa/static/bsi1/align-end.svg | 4 + gawa/static/bsi1/align-middle.svg | 3 + gawa/static/bsi1/align-start.svg | 4 + gawa/static/bsi1/align-top.svg | 4 + gawa/static/bsi1/alipay.svg | 4 + gawa/static/bsi1/alt.svg | 3 + gawa/static/bsi1/amd.svg | 3 + gawa/static/bsi1/android.svg | 3 + gawa/static/bsi1/android2.svg | 3 + gawa/static/bsi1/app-indicator.svg | 4 + gawa/static/bsi1/app.svg | 3 + gawa/static/bsi1/apple.svg | 4 + gawa/static/bsi1/archive-fill.svg | 3 + gawa/static/bsi1/archive.svg | 3 + gawa/static/bsi1/arrow-90deg-down.svg | 3 + gawa/static/bsi1/arrow-90deg-left.svg | 3 + gawa/static/bsi1/arrow-90deg-right.svg | 3 + gawa/static/bsi1/arrow-90deg-up.svg | 3 + gawa/static/bsi1/arrow-bar-down.svg | 3 + gawa/static/bsi1/arrow-bar-left.svg | 3 + gawa/static/bsi1/arrow-bar-right.svg | 3 + gawa/static/bsi1/arrow-bar-up.svg | 3 + gawa/static/bsi1/arrow-clockwise.svg | 4 + gawa/static/bsi1/arrow-counterclockwise.svg | 4 + gawa/static/bsi1/arrow-down-circle-fill.svg | 3 + gawa/static/bsi1/arrow-down-circle.svg | 3 + .../bsi1/arrow-down-left-circle-fill.svg | 3 + gawa/static/bsi1/arrow-down-left-circle.svg | 3 + .../bsi1/arrow-down-left-square-fill.svg | 3 + gawa/static/bsi1/arrow-down-left-square.svg | 3 + gawa/static/bsi1/arrow-down-left.svg | 3 + .../bsi1/arrow-down-right-circle-fill.svg | 3 + gawa/static/bsi1/arrow-down-right-circle.svg | 3 + .../bsi1/arrow-down-right-square-fill.svg | 3 + gawa/static/bsi1/arrow-down-right-square.svg | 3 + gawa/static/bsi1/arrow-down-right.svg | 3 + gawa/static/bsi1/arrow-down-short.svg | 3 + gawa/static/bsi1/arrow-down-square-fill.svg | 3 + gawa/static/bsi1/arrow-down-square.svg | 3 + gawa/static/bsi1/arrow-down-up.svg | 3 + gawa/static/bsi1/arrow-down.svg | 3 + gawa/static/bsi1/arrow-left-circle-fill.svg | 3 + gawa/static/bsi1/arrow-left-circle.svg | 3 + gawa/static/bsi1/arrow-left-right.svg | 3 + gawa/static/bsi1/arrow-left-short.svg | 3 + gawa/static/bsi1/arrow-left-square-fill.svg | 3 + gawa/static/bsi1/arrow-left-square.svg | 3 + gawa/static/bsi1/arrow-left.svg | 3 + gawa/static/bsi1/arrow-repeat.svg | 4 + gawa/static/bsi1/arrow-return-left.svg | 3 + gawa/static/bsi1/arrow-return-right.svg | 3 + gawa/static/bsi1/arrow-right-circle-fill.svg | 3 + gawa/static/bsi1/arrow-right-circle.svg | 3 + gawa/static/bsi1/arrow-right-short.svg | 3 + gawa/static/bsi1/arrow-right-square-fill.svg | 3 + gawa/static/bsi1/arrow-right-square.svg | 3 + gawa/static/bsi1/arrow-right.svg | 3 + gawa/static/bsi1/arrow-through-heart-fill.svg | 3 + gawa/static/bsi1/arrow-through-heart.svg | 3 + gawa/static/bsi1/arrow-up-circle-fill.svg | 3 + gawa/static/bsi1/arrow-up-circle.svg | 3 + .../static/bsi1/arrow-up-left-circle-fill.svg | 3 + gawa/static/bsi1/arrow-up-left-circle.svg | 3 + .../static/bsi1/arrow-up-left-square-fill.svg | 3 + gawa/static/bsi1/arrow-up-left-square.svg | 3 + gawa/static/bsi1/arrow-up-left.svg | 3 + .../bsi1/arrow-up-right-circle-fill.svg | 3 + gawa/static/bsi1/arrow-up-right-circle.svg | 3 + .../bsi1/arrow-up-right-square-fill.svg | 3 + gawa/static/bsi1/arrow-up-right-square.svg | 3 + gawa/static/bsi1/arrow-up-right.svg | 3 + gawa/static/bsi1/arrow-up-short.svg | 3 + gawa/static/bsi1/arrow-up-square-fill.svg | 3 + gawa/static/bsi1/arrow-up-square.svg | 3 + gawa/static/bsi1/arrow-up.svg | 3 + gawa/static/bsi1/arrows-angle-contract.svg | 3 + gawa/static/bsi1/arrows-angle-expand.svg | 3 + gawa/static/bsi1/arrows-collapse.svg | 3 + gawa/static/bsi1/arrows-expand.svg | 3 + gawa/static/bsi1/arrows-fullscreen.svg | 3 + gawa/static/bsi1/arrows-move.svg | 3 + gawa/static/bsi1/aspect-ratio-fill.svg | 3 + gawa/static/bsi1/aspect-ratio.svg | 4 + gawa/static/bsi1/asterisk.svg | 3 + gawa/static/bsi1/at.svg | 3 + gawa/static/bsi1/award-fill.svg | 4 + gawa/static/bsi1/award.svg | 4 + gawa/static/bsi1/back.svg | 3 + gawa/static/bsi1/backspace-fill.svg | 3 + gawa/static/bsi1/backspace-reverse-fill.svg | 3 + gawa/static/bsi1/backspace-reverse.svg | 4 + gawa/static/bsi1/backspace.svg | 4 + gawa/static/bsi1/badge-3d-fill.svg | 4 + gawa/static/bsi1/badge-3d.svg | 4 + gawa/static/bsi1/badge-4k-fill.svg | 4 + gawa/static/bsi1/badge-4k.svg | 4 + gawa/static/bsi1/badge-8k-fill.svg | 4 + gawa/static/bsi1/badge-8k.svg | 4 + gawa/static/bsi1/badge-ad-fill.svg | 4 + gawa/static/bsi1/badge-ad.svg | 4 + gawa/static/bsi1/badge-ar-fill.svg | 4 + gawa/static/bsi1/badge-ar.svg | 4 + gawa/static/bsi1/badge-cc-fill.svg | 3 + gawa/static/bsi1/badge-cc.svg | 4 + gawa/static/bsi1/badge-hd-fill.svg | 4 + gawa/static/bsi1/badge-hd.svg | 4 + gawa/static/bsi1/badge-sd-fill.svg | 4 + gawa/static/bsi1/badge-sd.svg | 3 + gawa/static/bsi1/badge-tm-fill.svg | 3 + gawa/static/bsi1/badge-tm.svg | 4 + gawa/static/bsi1/badge-vo-fill.svg | 4 + gawa/static/bsi1/badge-vo.svg | 4 + gawa/static/bsi1/badge-vr-fill.svg | 4 + gawa/static/bsi1/badge-vr.svg | 4 + gawa/static/bsi1/badge-wc-fill.svg | 3 + gawa/static/bsi1/badge-wc.svg | 4 + gawa/static/bsi1/bag-check-fill.svg | 3 + gawa/static/bsi1/bag-check.svg | 4 + gawa/static/bsi1/bag-dash-fill.svg | 3 + gawa/static/bsi1/bag-dash.svg | 4 + gawa/static/bsi1/bag-fill.svg | 3 + gawa/static/bsi1/bag-heart-fill.svg | 3 + gawa/static/bsi1/bag-heart.svg | 3 + gawa/static/bsi1/bag-plus-fill.svg | 3 + gawa/static/bsi1/bag-plus.svg | 4 + gawa/static/bsi1/bag-x-fill.svg | 3 + gawa/static/bsi1/bag-x.svg | 4 + gawa/static/bsi1/bag.svg | 3 + gawa/static/bsi1/balloon-fill.svg | 3 + gawa/static/bsi1/balloon-heart-fill.svg | 3 + gawa/static/bsi1/balloon-heart.svg | 3 + gawa/static/bsi1/balloon.svg | 3 + gawa/static/bsi1/bandaid-fill.svg | 3 + gawa/static/bsi1/bandaid.svg | 4 + gawa/static/bsi1/bank.svg | 3 + gawa/static/bsi1/bank2.svg | 3 + gawa/static/bsi1/bar-chart-fill.svg | 3 + gawa/static/bsi1/bar-chart-line-fill.svg | 3 + gawa/static/bsi1/bar-chart-line.svg | 3 + gawa/static/bsi1/bar-chart-steps.svg | 3 + gawa/static/bsi1/bar-chart.svg | 3 + gawa/static/bsi1/basket-fill.svg | 3 + gawa/static/bsi1/basket.svg | 3 + gawa/static/bsi1/basket2-fill.svg | 3 + gawa/static/bsi1/basket2.svg | 4 + gawa/static/bsi1/basket3-fill.svg | 3 + gawa/static/bsi1/basket3.svg | 3 + gawa/static/bsi1/battery-charging.svg | 6 + gawa/static/bsi1/battery-full.svg | 4 + gawa/static/bsi1/battery-half.svg | 4 + gawa/static/bsi1/battery.svg | 3 + gawa/static/bsi1/behance.svg | 3 + gawa/static/bsi1/bell-fill.svg | 3 + gawa/static/bsi1/bell-slash-fill.svg | 3 + gawa/static/bsi1/bell-slash.svg | 3 + gawa/static/bsi1/bell.svg | 3 + gawa/static/bsi1/bezier.svg | 4 + gawa/static/bsi1/bezier2.svg | 3 + gawa/static/bsi1/bicycle.svg | 3 + gawa/static/bsi1/binoculars-fill.svg | 3 + gawa/static/bsi1/binoculars.svg | 3 + gawa/static/bsi1/blockquote-left.svg | 3 + gawa/static/bsi1/blockquote-right.svg | 3 + gawa/static/bsi1/bluetooth.svg | 3 + gawa/static/bsi1/body-text.svg | 3 + gawa/static/bsi1/book-fill.svg | 3 + gawa/static/bsi1/book-half.svg | 3 + gawa/static/bsi1/book.svg | 3 + gawa/static/bsi1/bookmark-check-fill.svg | 3 + gawa/static/bsi1/bookmark-check.svg | 4 + gawa/static/bsi1/bookmark-dash-fill.svg | 3 + gawa/static/bsi1/bookmark-dash.svg | 4 + gawa/static/bsi1/bookmark-fill.svg | 3 + gawa/static/bsi1/bookmark-heart-fill.svg | 3 + gawa/static/bsi1/bookmark-heart.svg | 4 + gawa/static/bsi1/bookmark-plus-fill.svg | 3 + gawa/static/bsi1/bookmark-plus.svg | 4 + gawa/static/bsi1/bookmark-star-fill.svg | 3 + gawa/static/bsi1/bookmark-star.svg | 4 + gawa/static/bsi1/bookmark-x-fill.svg | 3 + gawa/static/bsi1/bookmark-x.svg | 4 + gawa/static/bsi1/bookmark.svg | 3 + gawa/static/bsi1/bookmarks-fill.svg | 4 + gawa/static/bsi1/bookmarks.svg | 4 + gawa/static/bsi1/bookshelf.svg | 3 + gawa/static/bsi1/boombox-fill.svg | 4 + gawa/static/bsi1/boombox.svg | 6 + gawa/static/bsi1/bootstrap-fill.svg | 4 + gawa/static/bsi1/bootstrap-icons.svg | 1 + gawa/static/bsi1/bootstrap-reboot.svg | 4 + gawa/static/bsi1/bootstrap.svg | 4 + gawa/static/bsi1/border-all.svg | 3 + gawa/static/bsi1/border-bottom.svg | 3 + gawa/static/bsi1/border-center.svg | 3 + gawa/static/bsi1/border-inner.svg | 5 + gawa/static/bsi1/border-left.svg | 3 + gawa/static/bsi1/border-middle.svg | 3 + gawa/static/bsi1/border-outer.svg | 4 + gawa/static/bsi1/border-right.svg | 3 + gawa/static/bsi1/border-style.svg | 3 + gawa/static/bsi1/border-top.svg | 3 + gawa/static/bsi1/border-width.svg | 3 + gawa/static/bsi1/border.svg | 3 + gawa/static/bsi1/bounding-box-circles.svg | 3 + gawa/static/bsi1/bounding-box.svg | 3 + gawa/static/bsi1/box-arrow-down-left.svg | 4 + gawa/static/bsi1/box-arrow-down-right.svg | 4 + gawa/static/bsi1/box-arrow-down.svg | 4 + gawa/static/bsi1/box-arrow-in-down-left.svg | 4 + gawa/static/bsi1/box-arrow-in-down-right.svg | 4 + gawa/static/bsi1/box-arrow-in-down.svg | 4 + gawa/static/bsi1/box-arrow-in-left.svg | 4 + gawa/static/bsi1/box-arrow-in-right.svg | 4 + gawa/static/bsi1/box-arrow-in-up-left.svg | 4 + gawa/static/bsi1/box-arrow-in-up-right.svg | 4 + gawa/static/bsi1/box-arrow-in-up.svg | 4 + gawa/static/bsi1/box-arrow-left.svg | 4 + gawa/static/bsi1/box-arrow-right.svg | 4 + gawa/static/bsi1/box-arrow-up-left.svg | 4 + gawa/static/bsi1/box-arrow-up-right.svg | 4 + gawa/static/bsi1/box-arrow-up.svg | 4 + gawa/static/bsi1/box-fill.svg | 3 + gawa/static/bsi1/box-seam-fill.svg | 3 + gawa/static/bsi1/box-seam.svg | 3 + gawa/static/bsi1/box.svg | 3 + gawa/static/bsi1/box2-fill.svg | 3 + gawa/static/bsi1/box2-heart-fill.svg | 3 + gawa/static/bsi1/box2-heart.svg | 4 + gawa/static/bsi1/box2.svg | 3 + gawa/static/bsi1/boxes.svg | 3 + gawa/static/bsi1/braces-asterisk.svg | 3 + gawa/static/bsi1/braces.svg | 3 + gawa/static/bsi1/bricks.svg | 3 + gawa/static/bsi1/briefcase-fill.svg | 4 + gawa/static/bsi1/briefcase.svg | 3 + gawa/static/bsi1/brightness-alt-high-fill.svg | 3 + gawa/static/bsi1/brightness-alt-high.svg | 3 + gawa/static/bsi1/brightness-alt-low-fill.svg | 3 + gawa/static/bsi1/brightness-alt-low.svg | 3 + gawa/static/bsi1/brightness-high-fill.svg | 3 + gawa/static/bsi1/brightness-high.svg | 3 + gawa/static/bsi1/brightness-low-fill.svg | 3 + gawa/static/bsi1/brightness-low.svg | 3 + gawa/static/bsi1/broadcast-pin.svg | 3 + gawa/static/bsi1/broadcast.svg | 3 + gawa/static/bsi1/browser-chrome.svg | 3 + gawa/static/bsi1/browser-edge.svg | 5 + gawa/static/bsi1/browser-firefox.svg | 3 + gawa/static/bsi1/browser-safari.svg | 3 + gawa/static/bsi1/brush-fill.svg | 3 + gawa/static/bsi1/brush.svg | 3 + gawa/static/bsi1/bucket-fill.svg | 3 + gawa/static/bsi1/bucket.svg | 3 + gawa/static/bsi1/bug-fill.svg | 4 + gawa/static/bsi1/bug.svg | 3 + gawa/static/bsi1/building-add.svg | 5 + gawa/static/bsi1/building-check.svg | 5 + gawa/static/bsi1/building-dash.svg | 5 + gawa/static/bsi1/building-down.svg | 5 + gawa/static/bsi1/building-exclamation.svg | 4 + gawa/static/bsi1/building-fill-add.svg | 4 + gawa/static/bsi1/building-fill-check.svg | 4 + gawa/static/bsi1/building-fill-dash.svg | 4 + gawa/static/bsi1/building-fill-down.svg | 4 + .../static/bsi1/building-fill-exclamation.svg | 4 + gawa/static/bsi1/building-fill-gear.svg | 4 + gawa/static/bsi1/building-fill-lock.svg | 4 + gawa/static/bsi1/building-fill-slash.svg | 4 + gawa/static/bsi1/building-fill-up.svg | 4 + gawa/static/bsi1/building-fill-x.svg | 4 + gawa/static/bsi1/building-fill.svg | 3 + gawa/static/bsi1/building-gear.svg | 4 + gawa/static/bsi1/building-lock.svg | 4 + gawa/static/bsi1/building-slash.svg | 5 + gawa/static/bsi1/building-up.svg | 5 + gawa/static/bsi1/building-x.svg | 4 + gawa/static/bsi1/building.svg | 4 + gawa/static/bsi1/buildings-fill.svg | 3 + gawa/static/bsi1/buildings.svg | 4 + gawa/static/bsi1/bullseye.svg | 6 + gawa/static/bsi1/bus-front-fill.svg | 3 + gawa/static/bsi1/bus-front.svg | 4 + gawa/static/bsi1/c-circle-fill.svg | 3 + gawa/static/bsi1/c-circle.svg | 3 + gawa/static/bsi1/c-square-fill.svg | 3 + gawa/static/bsi1/c-square.svg | 4 + gawa/static/bsi1/calculator-fill.svg | 3 + gawa/static/bsi1/calculator.svg | 4 + gawa/static/bsi1/calendar-check-fill.svg | 3 + gawa/static/bsi1/calendar-check.svg | 4 + gawa/static/bsi1/calendar-date-fill.svg | 4 + gawa/static/bsi1/calendar-date.svg | 4 + gawa/static/bsi1/calendar-day-fill.svg | 3 + gawa/static/bsi1/calendar-day.svg | 4 + gawa/static/bsi1/calendar-event-fill.svg | 3 + gawa/static/bsi1/calendar-event.svg | 4 + gawa/static/bsi1/calendar-fill.svg | 3 + gawa/static/bsi1/calendar-heart-fill.svg | 3 + gawa/static/bsi1/calendar-heart.svg | 3 + gawa/static/bsi1/calendar-minus-fill.svg | 3 + gawa/static/bsi1/calendar-minus.svg | 4 + gawa/static/bsi1/calendar-month-fill.svg | 4 + gawa/static/bsi1/calendar-month.svg | 4 + gawa/static/bsi1/calendar-plus-fill.svg | 3 + gawa/static/bsi1/calendar-plus.svg | 4 + gawa/static/bsi1/calendar-range-fill.svg | 3 + gawa/static/bsi1/calendar-range.svg | 4 + gawa/static/bsi1/calendar-week-fill.svg | 3 + gawa/static/bsi1/calendar-week.svg | 4 + gawa/static/bsi1/calendar-x-fill.svg | 3 + gawa/static/bsi1/calendar-x.svg | 4 + gawa/static/bsi1/calendar.svg | 3 + gawa/static/bsi1/calendar2-check-fill.svg | 3 + gawa/static/bsi1/calendar2-check.svg | 5 + gawa/static/bsi1/calendar2-date-fill.svg | 4 + gawa/static/bsi1/calendar2-date.svg | 5 + gawa/static/bsi1/calendar2-day-fill.svg | 3 + gawa/static/bsi1/calendar2-day.svg | 5 + gawa/static/bsi1/calendar2-event-fill.svg | 3 + gawa/static/bsi1/calendar2-event.svg | 5 + gawa/static/bsi1/calendar2-fill.svg | 3 + gawa/static/bsi1/calendar2-heart-fill.svg | 3 + gawa/static/bsi1/calendar2-heart.svg | 3 + gawa/static/bsi1/calendar2-minus-fill.svg | 3 + gawa/static/bsi1/calendar2-minus.svg | 5 + gawa/static/bsi1/calendar2-month-fill.svg | 4 + gawa/static/bsi1/calendar2-month.svg | 5 + gawa/static/bsi1/calendar2-plus-fill.svg | 3 + gawa/static/bsi1/calendar2-plus.svg | 4 + gawa/static/bsi1/calendar2-range-fill.svg | 3 + gawa/static/bsi1/calendar2-range.svg | 4 + gawa/static/bsi1/calendar2-week-fill.svg | 3 + gawa/static/bsi1/calendar2-week.svg | 4 + gawa/static/bsi1/calendar2-x-fill.svg | 3 + gawa/static/bsi1/calendar2-x.svg | 5 + gawa/static/bsi1/calendar2.svg | 4 + gawa/static/bsi1/calendar3-event-fill.svg | 3 + gawa/static/bsi1/calendar3-event.svg | 4 + gawa/static/bsi1/calendar3-fill.svg | 3 + gawa/static/bsi1/calendar3-range-fill.svg | 3 + gawa/static/bsi1/calendar3-range.svg | 4 + gawa/static/bsi1/calendar3-week-fill.svg | 3 + gawa/static/bsi1/calendar3-week.svg | 4 + gawa/static/bsi1/calendar3.svg | 4 + gawa/static/bsi1/calendar4-event.svg | 4 + gawa/static/bsi1/calendar4-range.svg | 4 + gawa/static/bsi1/calendar4-week.svg | 4 + gawa/static/bsi1/calendar4.svg | 3 + gawa/static/bsi1/camera-fill.svg | 4 + gawa/static/bsi1/camera-reels-fill.svg | 5 + gawa/static/bsi1/camera-reels.svg | 5 + gawa/static/bsi1/camera-video-fill.svg | 3 + gawa/static/bsi1/camera-video-off-fill.svg | 3 + gawa/static/bsi1/camera-video-off.svg | 3 + gawa/static/bsi1/camera-video.svg | 3 + gawa/static/bsi1/camera.svg | 4 + gawa/static/bsi1/camera2.svg | 4 + gawa/static/bsi1/capslock-fill.svg | 3 + gawa/static/bsi1/capslock.svg | 3 + gawa/static/bsi1/capsule-pill.svg | 3 + gawa/static/bsi1/capsule.svg | 3 + gawa/static/bsi1/car-front-fill.svg | 3 + gawa/static/bsi1/car-front.svg | 4 + gawa/static/bsi1/card-checklist.svg | 4 + gawa/static/bsi1/card-heading.svg | 4 + gawa/static/bsi1/card-image.svg | 4 + gawa/static/bsi1/card-list.svg | 4 + gawa/static/bsi1/card-text.svg | 4 + gawa/static/bsi1/caret-down-fill.svg | 3 + gawa/static/bsi1/caret-down-square-fill.svg | 3 + gawa/static/bsi1/caret-down-square.svg | 4 + gawa/static/bsi1/caret-down.svg | 3 + gawa/static/bsi1/caret-left-fill.svg | 3 + gawa/static/bsi1/caret-left-square-fill.svg | 3 + gawa/static/bsi1/caret-left-square.svg | 4 + gawa/static/bsi1/caret-left.svg | 3 + gawa/static/bsi1/caret-right-fill.svg | 3 + gawa/static/bsi1/caret-right-square-fill.svg | 3 + gawa/static/bsi1/caret-right-square.svg | 4 + gawa/static/bsi1/caret-right.svg | 3 + gawa/static/bsi1/caret-up-fill.svg | 3 + gawa/static/bsi1/caret-up-square-fill.svg | 3 + gawa/static/bsi1/caret-up-square.svg | 4 + gawa/static/bsi1/caret-up.svg | 3 + gawa/static/bsi1/cart-check-fill.svg | 3 + gawa/static/bsi1/cart-check.svg | 4 + gawa/static/bsi1/cart-dash-fill.svg | 3 + gawa/static/bsi1/cart-dash.svg | 4 + gawa/static/bsi1/cart-fill.svg | 3 + gawa/static/bsi1/cart-plus-fill.svg | 3 + gawa/static/bsi1/cart-plus.svg | 4 + gawa/static/bsi1/cart-x-fill.svg | 3 + gawa/static/bsi1/cart-x.svg | 4 + gawa/static/bsi1/cart.svg | 3 + gawa/static/bsi1/cart2.svg | 3 + gawa/static/bsi1/cart3.svg | 3 + gawa/static/bsi1/cart4.svg | 3 + gawa/static/bsi1/cash-coin.svg | 6 + gawa/static/bsi1/cash-stack.svg | 4 + gawa/static/bsi1/cash.svg | 4 + gawa/static/bsi1/cassette-fill.svg | 4 + gawa/static/bsi1/cassette.svg | 4 + gawa/static/bsi1/cast.svg | 4 + gawa/static/bsi1/cc-circle-fill.svg | 3 + gawa/static/bsi1/cc-circle.svg | 3 + gawa/static/bsi1/cc-square-fill.svg | 3 + gawa/static/bsi1/cc-square.svg | 4 + gawa/static/bsi1/chat-dots-fill.svg | 3 + gawa/static/bsi1/chat-dots.svg | 4 + gawa/static/bsi1/chat-fill.svg | 3 + gawa/static/bsi1/chat-heart-fill.svg | 3 + gawa/static/bsi1/chat-heart.svg | 3 + gawa/static/bsi1/chat-left-dots-fill.svg | 3 + gawa/static/bsi1/chat-left-dots.svg | 4 + gawa/static/bsi1/chat-left-fill.svg | 3 + gawa/static/bsi1/chat-left-heart-fill.svg | 3 + gawa/static/bsi1/chat-left-heart.svg | 4 + gawa/static/bsi1/chat-left-quote-fill.svg | 3 + gawa/static/bsi1/chat-left-quote.svg | 4 + gawa/static/bsi1/chat-left-text-fill.svg | 3 + gawa/static/bsi1/chat-left-text.svg | 4 + gawa/static/bsi1/chat-left.svg | 3 + gawa/static/bsi1/chat-quote-fill.svg | 3 + gawa/static/bsi1/chat-quote.svg | 4 + gawa/static/bsi1/chat-right-dots-fill.svg | 3 + gawa/static/bsi1/chat-right-dots.svg | 4 + gawa/static/bsi1/chat-right-fill.svg | 3 + gawa/static/bsi1/chat-right-heart-fill.svg | 3 + gawa/static/bsi1/chat-right-heart.svg | 4 + gawa/static/bsi1/chat-right-quote-fill.svg | 3 + gawa/static/bsi1/chat-right-quote.svg | 4 + gawa/static/bsi1/chat-right-text-fill.svg | 3 + gawa/static/bsi1/chat-right-text.svg | 4 + gawa/static/bsi1/chat-right.svg | 3 + gawa/static/bsi1/chat-square-dots-fill.svg | 3 + gawa/static/bsi1/chat-square-dots.svg | 4 + gawa/static/bsi1/chat-square-fill.svg | 3 + gawa/static/bsi1/chat-square-heart-fill.svg | 3 + gawa/static/bsi1/chat-square-heart.svg | 4 + gawa/static/bsi1/chat-square-quote-fill.svg | 3 + gawa/static/bsi1/chat-square-quote.svg | 4 + gawa/static/bsi1/chat-square-text-fill.svg | 3 + gawa/static/bsi1/chat-square-text.svg | 4 + gawa/static/bsi1/chat-square.svg | 3 + gawa/static/bsi1/chat-text-fill.svg | 3 + gawa/static/bsi1/chat-text.svg | 4 + gawa/static/bsi1/chat.svg | 3 + gawa/static/bsi1/check-all.svg | 3 + gawa/static/bsi1/check-circle-fill.svg | 3 + gawa/static/bsi1/check-circle.svg | 4 + gawa/static/bsi1/check-lg.svg | 3 + gawa/static/bsi1/check-square-fill.svg | 3 + gawa/static/bsi1/check-square.svg | 4 + gawa/static/bsi1/check.svg | 3 + gawa/static/bsi1/check2-all.svg | 4 + gawa/static/bsi1/check2-circle.svg | 4 + gawa/static/bsi1/check2-square.svg | 4 + gawa/static/bsi1/check2.svg | 3 + gawa/static/bsi1/chevron-bar-contract.svg | 3 + gawa/static/bsi1/chevron-bar-down.svg | 3 + gawa/static/bsi1/chevron-bar-expand.svg | 3 + gawa/static/bsi1/chevron-bar-left.svg | 3 + gawa/static/bsi1/chevron-bar-right.svg | 3 + gawa/static/bsi1/chevron-bar-up.svg | 3 + gawa/static/bsi1/chevron-compact-down.svg | 3 + gawa/static/bsi1/chevron-compact-left.svg | 3 + gawa/static/bsi1/chevron-compact-right.svg | 3 + gawa/static/bsi1/chevron-compact-up.svg | 3 + gawa/static/bsi1/chevron-contract.svg | 3 + gawa/static/bsi1/chevron-double-down.svg | 4 + gawa/static/bsi1/chevron-double-left.svg | 4 + gawa/static/bsi1/chevron-double-right.svg | 4 + gawa/static/bsi1/chevron-double-up.svg | 4 + gawa/static/bsi1/chevron-down.svg | 3 + gawa/static/bsi1/chevron-expand.svg | 3 + gawa/static/bsi1/chevron-left.svg | 3 + gawa/static/bsi1/chevron-right.svg | 3 + gawa/static/bsi1/chevron-up.svg | 3 + gawa/static/bsi1/circle-fill.svg | 3 + gawa/static/bsi1/circle-half.svg | 3 + gawa/static/bsi1/circle-square.svg | 4 + gawa/static/bsi1/circle.svg | 3 + gawa/static/bsi1/clipboard-check-fill.svg | 4 + gawa/static/bsi1/clipboard-check.svg | 5 + gawa/static/bsi1/clipboard-data-fill.svg | 4 + gawa/static/bsi1/clipboard-data.svg | 5 + gawa/static/bsi1/clipboard-fill.svg | 3 + gawa/static/bsi1/clipboard-heart-fill.svg | 4 + gawa/static/bsi1/clipboard-heart.svg | 5 + gawa/static/bsi1/clipboard-minus-fill.svg | 4 + gawa/static/bsi1/clipboard-minus.svg | 5 + gawa/static/bsi1/clipboard-plus-fill.svg | 4 + gawa/static/bsi1/clipboard-plus.svg | 5 + gawa/static/bsi1/clipboard-pulse.svg | 3 + gawa/static/bsi1/clipboard-x-fill.svg | 4 + gawa/static/bsi1/clipboard-x.svg | 5 + gawa/static/bsi1/clipboard.svg | 4 + gawa/static/bsi1/clipboard2-check-fill.svg | 4 + gawa/static/bsi1/clipboard2-check.svg | 5 + gawa/static/bsi1/clipboard2-data-fill.svg | 4 + gawa/static/bsi1/clipboard2-data.svg | 5 + gawa/static/bsi1/clipboard2-fill.svg | 4 + gawa/static/bsi1/clipboard2-heart-fill.svg | 4 + gawa/static/bsi1/clipboard2-heart.svg | 5 + gawa/static/bsi1/clipboard2-minus-fill.svg | 4 + gawa/static/bsi1/clipboard2-minus.svg | 5 + gawa/static/bsi1/clipboard2-plus-fill.svg | 4 + gawa/static/bsi1/clipboard2-plus.svg | 5 + gawa/static/bsi1/clipboard2-pulse-fill.svg | 4 + gawa/static/bsi1/clipboard2-pulse.svg | 5 + gawa/static/bsi1/clipboard2-x-fill.svg | 4 + gawa/static/bsi1/clipboard2-x.svg | 5 + gawa/static/bsi1/clipboard2.svg | 4 + gawa/static/bsi1/clock-fill.svg | 3 + gawa/static/bsi1/clock-history.svg | 5 + gawa/static/bsi1/clock.svg | 4 + gawa/static/bsi1/cloud-arrow-down-fill.svg | 3 + gawa/static/bsi1/cloud-arrow-down.svg | 4 + gawa/static/bsi1/cloud-arrow-up-fill.svg | 3 + gawa/static/bsi1/cloud-arrow-up.svg | 4 + gawa/static/bsi1/cloud-check-fill.svg | 3 + gawa/static/bsi1/cloud-check.svg | 4 + gawa/static/bsi1/cloud-download-fill.svg | 3 + gawa/static/bsi1/cloud-download.svg | 4 + gawa/static/bsi1/cloud-drizzle-fill.svg | 3 + gawa/static/bsi1/cloud-drizzle.svg | 3 + gawa/static/bsi1/cloud-fill.svg | 3 + gawa/static/bsi1/cloud-fog-fill.svg | 3 + gawa/static/bsi1/cloud-fog.svg | 3 + gawa/static/bsi1/cloud-fog2-fill.svg | 3 + gawa/static/bsi1/cloud-fog2.svg | 3 + gawa/static/bsi1/cloud-hail-fill.svg | 3 + gawa/static/bsi1/cloud-hail.svg | 3 + gawa/static/bsi1/cloud-haze-fill.svg | 3 + gawa/static/bsi1/cloud-haze.svg | 3 + gawa/static/bsi1/cloud-haze2-fill.svg | 3 + gawa/static/bsi1/cloud-haze2.svg | 3 + gawa/static/bsi1/cloud-lightning-fill.svg | 3 + .../static/bsi1/cloud-lightning-rain-fill.svg | 3 + gawa/static/bsi1/cloud-lightning-rain.svg | 3 + gawa/static/bsi1/cloud-lightning.svg | 3 + gawa/static/bsi1/cloud-minus-fill.svg | 3 + gawa/static/bsi1/cloud-minus.svg | 4 + gawa/static/bsi1/cloud-moon-fill.svg | 4 + gawa/static/bsi1/cloud-moon.svg | 4 + gawa/static/bsi1/cloud-plus-fill.svg | 3 + gawa/static/bsi1/cloud-plus.svg | 4 + gawa/static/bsi1/cloud-rain-fill.svg | 3 + gawa/static/bsi1/cloud-rain-heavy-fill.svg | 3 + gawa/static/bsi1/cloud-rain-heavy.svg | 3 + gawa/static/bsi1/cloud-rain.svg | 3 + gawa/static/bsi1/cloud-slash-fill.svg | 3 + gawa/static/bsi1/cloud-slash.svg | 4 + gawa/static/bsi1/cloud-sleet-fill.svg | 3 + gawa/static/bsi1/cloud-sleet.svg | 3 + gawa/static/bsi1/cloud-snow-fill.svg | 3 + gawa/static/bsi1/cloud-snow.svg | 3 + gawa/static/bsi1/cloud-sun-fill.svg | 4 + gawa/static/bsi1/cloud-sun.svg | 4 + gawa/static/bsi1/cloud-upload-fill.svg | 3 + gawa/static/bsi1/cloud-upload.svg | 4 + gawa/static/bsi1/cloud.svg | 3 + gawa/static/bsi1/clouds-fill.svg | 4 + gawa/static/bsi1/clouds.svg | 4 + gawa/static/bsi1/cloudy-fill.svg | 3 + gawa/static/bsi1/cloudy.svg | 3 + gawa/static/bsi1/code-slash.svg | 3 + gawa/static/bsi1/code-square.svg | 4 + gawa/static/bsi1/code.svg | 3 + gawa/static/bsi1/coin.svg | 5 + gawa/static/bsi1/collection-fill.svg | 3 + gawa/static/bsi1/collection-play-fill.svg | 3 + gawa/static/bsi1/collection-play.svg | 4 + gawa/static/bsi1/collection.svg | 3 + gawa/static/bsi1/columns-gap.svg | 3 + gawa/static/bsi1/columns.svg | 3 + gawa/static/bsi1/command.svg | 3 + gawa/static/bsi1/compass-fill.svg | 3 + gawa/static/bsi1/compass.svg | 4 + gawa/static/bsi1/cone-striped.svg | 3 + gawa/static/bsi1/cone.svg | 3 + gawa/static/bsi1/controller.svg | 4 + gawa/static/bsi1/cpu-fill.svg | 4 + gawa/static/bsi1/cpu.svg | 3 + gawa/static/bsi1/credit-card-2-back-fill.svg | 3 + gawa/static/bsi1/credit-card-2-back.svg | 4 + gawa/static/bsi1/credit-card-2-front-fill.svg | 3 + gawa/static/bsi1/credit-card-2-front.svg | 4 + gawa/static/bsi1/credit-card-fill.svg | 3 + gawa/static/bsi1/credit-card.svg | 4 + gawa/static/bsi1/crop.svg | 3 + gawa/static/bsi1/cup-fill.svg | 3 + gawa/static/bsi1/cup-hot-fill.svg | 4 + gawa/static/bsi1/cup-hot.svg | 4 + gawa/static/bsi1/cup-straw.svg | 3 + gawa/static/bsi1/cup.svg | 3 + gawa/static/bsi1/currency-bitcoin.svg | 3 + gawa/static/bsi1/currency-dollar.svg | 3 + gawa/static/bsi1/currency-euro.svg | 3 + gawa/static/bsi1/currency-exchange.svg | 3 + gawa/static/bsi1/currency-pound.svg | 3 + gawa/static/bsi1/currency-rupee.svg | 3 + gawa/static/bsi1/currency-yen.svg | 3 + gawa/static/bsi1/cursor-fill.svg | 3 + gawa/static/bsi1/cursor-text.svg | 3 + gawa/static/bsi1/cursor.svg | 3 + gawa/static/bsi1/dash-circle-dotted.svg | 3 + gawa/static/bsi1/dash-circle-fill.svg | 3 + gawa/static/bsi1/dash-circle.svg | 4 + gawa/static/bsi1/dash-lg.svg | 3 + gawa/static/bsi1/dash-square-dotted.svg | 3 + gawa/static/bsi1/dash-square-fill.svg | 3 + gawa/static/bsi1/dash-square.svg | 4 + gawa/static/bsi1/dash.svg | 3 + gawa/static/bsi1/database-add.svg | 4 + gawa/static/bsi1/database-check.svg | 4 + gawa/static/bsi1/database-dash.svg | 4 + gawa/static/bsi1/database-down.svg | 4 + gawa/static/bsi1/database-exclamation.svg | 4 + gawa/static/bsi1/database-fill-add.svg | 4 + gawa/static/bsi1/database-fill-check.svg | 4 + gawa/static/bsi1/database-fill-dash.svg | 4 + gawa/static/bsi1/database-fill-down.svg | 4 + .../static/bsi1/database-fill-exclamation.svg | 5 + gawa/static/bsi1/database-fill-gear.svg | 4 + gawa/static/bsi1/database-fill-lock.svg | 5 + gawa/static/bsi1/database-fill-slash.svg | 4 + gawa/static/bsi1/database-fill-up.svg | 4 + gawa/static/bsi1/database-fill-x.svg | 5 + gawa/static/bsi1/database-fill.svg | 6 + gawa/static/bsi1/database-gear.svg | 4 + gawa/static/bsi1/database-lock.svg | 4 + gawa/static/bsi1/database-slash.svg | 4 + gawa/static/bsi1/database-up.svg | 4 + gawa/static/bsi1/database-x.svg | 4 + gawa/static/bsi1/database.svg | 3 + gawa/static/bsi1/device-hdd-fill.svg | 4 + gawa/static/bsi1/device-hdd.svg | 5 + gawa/static/bsi1/device-ssd-fill.svg | 4 + gawa/static/bsi1/device-ssd.svg | 4 + gawa/static/bsi1/diagram-2-fill.svg | 3 + gawa/static/bsi1/diagram-2.svg | 3 + gawa/static/bsi1/diagram-3-fill.svg | 3 + gawa/static/bsi1/diagram-3.svg | 3 + gawa/static/bsi1/diamond-fill.svg | 3 + gawa/static/bsi1/diamond-half.svg | 3 + gawa/static/bsi1/diamond.svg | 3 + gawa/static/bsi1/dice-1-fill.svg | 3 + gawa/static/bsi1/dice-1.svg | 4 + gawa/static/bsi1/dice-2-fill.svg | 3 + gawa/static/bsi1/dice-2.svg | 4 + gawa/static/bsi1/dice-3-fill.svg | 3 + gawa/static/bsi1/dice-3.svg | 4 + gawa/static/bsi1/dice-4-fill.svg | 3 + gawa/static/bsi1/dice-4.svg | 4 + gawa/static/bsi1/dice-5-fill.svg | 3 + gawa/static/bsi1/dice-5.svg | 4 + gawa/static/bsi1/dice-6-fill.svg | 3 + gawa/static/bsi1/dice-6.svg | 4 + gawa/static/bsi1/disc-fill.svg | 3 + gawa/static/bsi1/disc.svg | 4 + gawa/static/bsi1/discord.svg | 3 + gawa/static/bsi1/display-fill.svg | 3 + gawa/static/bsi1/display.svg | 3 + gawa/static/bsi1/displayport-fill.svg | 3 + gawa/static/bsi1/displayport.svg | 4 + gawa/static/bsi1/distribute-horizontal.svg | 4 + gawa/static/bsi1/distribute-vertical.svg | 4 + gawa/static/bsi1/door-closed-fill.svg | 3 + gawa/static/bsi1/door-closed.svg | 4 + gawa/static/bsi1/door-open-fill.svg | 3 + gawa/static/bsi1/door-open.svg | 4 + gawa/static/bsi1/dot.svg | 3 + gawa/static/bsi1/download.svg | 4 + gawa/static/bsi1/dpad-fill.svg | 3 + gawa/static/bsi1/dpad.svg | 4 + gawa/static/bsi1/dribbble.svg | 3 + gawa/static/bsi1/dropbox.svg | 3 + gawa/static/bsi1/droplet-fill.svg | 3 + gawa/static/bsi1/droplet-half.svg | 4 + gawa/static/bsi1/droplet.svg | 4 + gawa/static/bsi1/ear-fill.svg | 3 + gawa/static/bsi1/ear.svg | 3 + gawa/static/bsi1/earbuds.svg | 3 + gawa/static/bsi1/easel-fill.svg | 3 + gawa/static/bsi1/easel.svg | 3 + gawa/static/bsi1/easel2-fill.svg | 4 + gawa/static/bsi1/easel2.svg | 3 + gawa/static/bsi1/easel3-fill.svg | 3 + gawa/static/bsi1/easel3.svg | 3 + gawa/static/bsi1/egg-fill.svg | 3 + gawa/static/bsi1/egg-fried.svg | 4 + gawa/static/bsi1/egg.svg | 3 + gawa/static/bsi1/eject-fill.svg | 3 + gawa/static/bsi1/eject.svg | 3 + gawa/static/bsi1/emoji-angry-fill.svg | 3 + gawa/static/bsi1/emoji-angry.svg | 4 + gawa/static/bsi1/emoji-dizzy-fill.svg | 3 + gawa/static/bsi1/emoji-dizzy.svg | 4 + .../static/bsi1/emoji-expressionless-fill.svg | 3 + gawa/static/bsi1/emoji-expressionless.svg | 4 + gawa/static/bsi1/emoji-frown-fill.svg | 3 + gawa/static/bsi1/emoji-frown.svg | 4 + gawa/static/bsi1/emoji-heart-eyes-fill.svg | 3 + gawa/static/bsi1/emoji-heart-eyes.svg | 4 + gawa/static/bsi1/emoji-kiss-fill.svg | 3 + gawa/static/bsi1/emoji-kiss.svg | 3 + gawa/static/bsi1/emoji-laughing-fill.svg | 3 + gawa/static/bsi1/emoji-laughing.svg | 4 + gawa/static/bsi1/emoji-neutral-fill.svg | 3 + gawa/static/bsi1/emoji-neutral.svg | 4 + gawa/static/bsi1/emoji-smile-fill.svg | 3 + .../bsi1/emoji-smile-upside-down-fill.svg | 3 + gawa/static/bsi1/emoji-smile-upside-down.svg | 4 + gawa/static/bsi1/emoji-smile.svg | 4 + gawa/static/bsi1/emoji-sunglasses-fill.svg | 3 + gawa/static/bsi1/emoji-sunglasses.svg | 4 + gawa/static/bsi1/emoji-wink-fill.svg | 3 + gawa/static/bsi1/emoji-wink.svg | 4 + gawa/static/bsi1/envelope-at-fill.svg | 4 + gawa/static/bsi1/envelope-at.svg | 4 + gawa/static/bsi1/envelope-check-fill.svg | 4 + gawa/static/bsi1/envelope-check.svg | 4 + gawa/static/bsi1/envelope-dash-fill.svg | 4 + gawa/static/bsi1/envelope-dash.svg | 4 + .../static/bsi1/envelope-exclamation-fill.svg | 4 + gawa/static/bsi1/envelope-exclamation.svg | 4 + gawa/static/bsi1/envelope-fill.svg | 3 + gawa/static/bsi1/envelope-heart-fill.svg | 4 + gawa/static/bsi1/envelope-heart.svg | 3 + gawa/static/bsi1/envelope-open-fill.svg | 3 + gawa/static/bsi1/envelope-open-heart-fill.svg | 4 + gawa/static/bsi1/envelope-open-heart.svg | 3 + gawa/static/bsi1/envelope-open.svg | 3 + gawa/static/bsi1/envelope-paper-fill.svg | 3 + .../static/bsi1/envelope-paper-heart-fill.svg | 3 + gawa/static/bsi1/envelope-paper-heart.svg | 3 + gawa/static/bsi1/envelope-paper.svg | 3 + gawa/static/bsi1/envelope-plus-fill.svg | 4 + gawa/static/bsi1/envelope-plus.svg | 4 + gawa/static/bsi1/envelope-slash-fill.svg | 4 + gawa/static/bsi1/envelope-slash.svg | 4 + gawa/static/bsi1/envelope-x-fill.svg | 4 + gawa/static/bsi1/envelope-x.svg | 4 + gawa/static/bsi1/envelope.svg | 3 + gawa/static/bsi1/eraser-fill.svg | 3 + gawa/static/bsi1/eraser.svg | 3 + gawa/static/bsi1/escape.svg | 4 + gawa/static/bsi1/ethernet.svg | 4 + gawa/static/bsi1/ev-front-fill.svg | 3 + gawa/static/bsi1/ev-front.svg | 4 + gawa/static/bsi1/ev-station-fill.svg | 3 + gawa/static/bsi1/ev-station.svg | 4 + gawa/static/bsi1/exclamation-circle-fill.svg | 3 + gawa/static/bsi1/exclamation-circle.svg | 4 + gawa/static/bsi1/exclamation-diamond-fill.svg | 3 + gawa/static/bsi1/exclamation-diamond.svg | 4 + gawa/static/bsi1/exclamation-lg.svg | 3 + gawa/static/bsi1/exclamation-octagon-fill.svg | 3 + gawa/static/bsi1/exclamation-octagon.svg | 4 + gawa/static/bsi1/exclamation-square-fill.svg | 3 + gawa/static/bsi1/exclamation-square.svg | 4 + .../static/bsi1/exclamation-triangle-fill.svg | 3 + gawa/static/bsi1/exclamation-triangle.svg | 4 + gawa/static/bsi1/exclamation.svg | 3 + gawa/static/bsi1/exclude.svg | 3 + gawa/static/bsi1/explicit-fill.svg | 3 + gawa/static/bsi1/explicit.svg | 4 + gawa/static/bsi1/eye-fill.svg | 4 + gawa/static/bsi1/eye-slash-fill.svg | 4 + gawa/static/bsi1/eye-slash.svg | 5 + gawa/static/bsi1/eye.svg | 4 + gawa/static/bsi1/eyedropper.svg | 3 + gawa/static/bsi1/eyeglasses.svg | 3 + gawa/static/bsi1/facebook.svg | 3 + gawa/static/bsi1/fan.svg | 4 + gawa/static/bsi1/fast-forward-btn-fill.svg | 3 + gawa/static/bsi1/fast-forward-btn.svg | 4 + gawa/static/bsi1/fast-forward-circle-fill.svg | 3 + gawa/static/bsi1/fast-forward-circle.svg | 4 + gawa/static/bsi1/fast-forward-fill.svg | 4 + gawa/static/bsi1/fast-forward.svg | 4 + gawa/static/bsi1/file-arrow-down-fill.svg | 3 + gawa/static/bsi1/file-arrow-down.svg | 4 + gawa/static/bsi1/file-arrow-up-fill.svg | 3 + gawa/static/bsi1/file-arrow-up.svg | 4 + gawa/static/bsi1/file-bar-graph-fill.svg | 3 + gawa/static/bsi1/file-bar-graph.svg | 4 + gawa/static/bsi1/file-binary-fill.svg | 4 + gawa/static/bsi1/file-binary.svg | 4 + gawa/static/bsi1/file-break-fill.svg | 3 + gawa/static/bsi1/file-break.svg | 3 + gawa/static/bsi1/file-check-fill.svg | 3 + gawa/static/bsi1/file-check.svg | 4 + gawa/static/bsi1/file-code-fill.svg | 3 + gawa/static/bsi1/file-code.svg | 4 + gawa/static/bsi1/file-diff-fill.svg | 3 + gawa/static/bsi1/file-diff.svg | 4 + .../bsi1/file-earmark-arrow-down-fill.svg | 3 + gawa/static/bsi1/file-earmark-arrow-down.svg | 4 + .../bsi1/file-earmark-arrow-up-fill.svg | 3 + gawa/static/bsi1/file-earmark-arrow-up.svg | 4 + .../bsi1/file-earmark-bar-graph-fill.svg | 3 + gawa/static/bsi1/file-earmark-bar-graph.svg | 4 + gawa/static/bsi1/file-earmark-binary-fill.svg | 4 + gawa/static/bsi1/file-earmark-binary.svg | 4 + gawa/static/bsi1/file-earmark-break-fill.svg | 3 + gawa/static/bsi1/file-earmark-break.svg | 3 + gawa/static/bsi1/file-earmark-check-fill.svg | 3 + gawa/static/bsi1/file-earmark-check.svg | 4 + gawa/static/bsi1/file-earmark-code-fill.svg | 3 + gawa/static/bsi1/file-earmark-code.svg | 4 + gawa/static/bsi1/file-earmark-diff-fill.svg | 3 + gawa/static/bsi1/file-earmark-diff.svg | 4 + gawa/static/bsi1/file-earmark-easel-fill.svg | 4 + gawa/static/bsi1/file-earmark-easel.svg | 4 + gawa/static/bsi1/file-earmark-excel-fill.svg | 3 + gawa/static/bsi1/file-earmark-excel.svg | 4 + gawa/static/bsi1/file-earmark-fill.svg | 3 + gawa/static/bsi1/file-earmark-font-fill.svg | 3 + gawa/static/bsi1/file-earmark-font.svg | 4 + gawa/static/bsi1/file-earmark-image-fill.svg | 4 + gawa/static/bsi1/file-earmark-image.svg | 4 + gawa/static/bsi1/file-earmark-lock-fill.svg | 4 + gawa/static/bsi1/file-earmark-lock.svg | 4 + gawa/static/bsi1/file-earmark-lock2-fill.svg | 4 + gawa/static/bsi1/file-earmark-lock2.svg | 4 + .../static/bsi1/file-earmark-medical-fill.svg | 3 + gawa/static/bsi1/file-earmark-medical.svg | 4 + gawa/static/bsi1/file-earmark-minus-fill.svg | 3 + gawa/static/bsi1/file-earmark-minus.svg | 4 + gawa/static/bsi1/file-earmark-music-fill.svg | 3 + gawa/static/bsi1/file-earmark-music.svg | 4 + gawa/static/bsi1/file-earmark-pdf-fill.svg | 4 + gawa/static/bsi1/file-earmark-pdf.svg | 4 + gawa/static/bsi1/file-earmark-person-fill.svg | 3 + gawa/static/bsi1/file-earmark-person.svg | 4 + gawa/static/bsi1/file-earmark-play-fill.svg | 3 + gawa/static/bsi1/file-earmark-play.svg | 4 + gawa/static/bsi1/file-earmark-plus-fill.svg | 3 + gawa/static/bsi1/file-earmark-plus.svg | 4 + gawa/static/bsi1/file-earmark-post-fill.svg | 3 + gawa/static/bsi1/file-earmark-post.svg | 4 + gawa/static/bsi1/file-earmark-ppt-fill.svg | 4 + gawa/static/bsi1/file-earmark-ppt.svg | 4 + .../bsi1/file-earmark-richtext-fill.svg | 3 + gawa/static/bsi1/file-earmark-richtext.svg | 4 + gawa/static/bsi1/file-earmark-ruled-fill.svg | 3 + gawa/static/bsi1/file-earmark-ruled.svg | 3 + gawa/static/bsi1/file-earmark-slides-fill.svg | 4 + gawa/static/bsi1/file-earmark-slides.svg | 4 + .../bsi1/file-earmark-spreadsheet-fill.svg | 4 + gawa/static/bsi1/file-earmark-spreadsheet.svg | 3 + gawa/static/bsi1/file-earmark-text-fill.svg | 3 + gawa/static/bsi1/file-earmark-text.svg | 4 + gawa/static/bsi1/file-earmark-word-fill.svg | 3 + gawa/static/bsi1/file-earmark-word.svg | 4 + gawa/static/bsi1/file-earmark-x-fill.svg | 3 + gawa/static/bsi1/file-earmark-x.svg | 4 + gawa/static/bsi1/file-earmark-zip-fill.svg | 4 + gawa/static/bsi1/file-earmark-zip.svg | 4 + gawa/static/bsi1/file-earmark.svg | 3 + gawa/static/bsi1/file-easel-fill.svg | 4 + gawa/static/bsi1/file-easel.svg | 4 + gawa/static/bsi1/file-excel-fill.svg | 3 + gawa/static/bsi1/file-excel.svg | 4 + gawa/static/bsi1/file-fill.svg | 3 + gawa/static/bsi1/file-font-fill.svg | 3 + gawa/static/bsi1/file-font.svg | 4 + gawa/static/bsi1/file-image-fill.svg | 4 + gawa/static/bsi1/file-image.svg | 4 + gawa/static/bsi1/file-lock-fill.svg | 4 + gawa/static/bsi1/file-lock.svg | 4 + gawa/static/bsi1/file-lock2-fill.svg | 4 + gawa/static/bsi1/file-lock2.svg | 4 + gawa/static/bsi1/file-medical-fill.svg | 3 + gawa/static/bsi1/file-medical.svg | 4 + gawa/static/bsi1/file-minus-fill.svg | 3 + gawa/static/bsi1/file-minus.svg | 4 + gawa/static/bsi1/file-music-fill.svg | 3 + gawa/static/bsi1/file-music.svg | 4 + gawa/static/bsi1/file-pdf-fill.svg | 4 + gawa/static/bsi1/file-pdf.svg | 4 + gawa/static/bsi1/file-person-fill.svg | 3 + gawa/static/bsi1/file-person.svg | 4 + gawa/static/bsi1/file-play-fill.svg | 3 + gawa/static/bsi1/file-play.svg | 4 + gawa/static/bsi1/file-plus-fill.svg | 3 + gawa/static/bsi1/file-plus.svg | 4 + gawa/static/bsi1/file-post-fill.svg | 3 + gawa/static/bsi1/file-post.svg | 4 + gawa/static/bsi1/file-ppt-fill.svg | 4 + gawa/static/bsi1/file-ppt.svg | 4 + gawa/static/bsi1/file-richtext-fill.svg | 3 + gawa/static/bsi1/file-richtext.svg | 4 + gawa/static/bsi1/file-ruled-fill.svg | 3 + gawa/static/bsi1/file-ruled.svg | 3 + gawa/static/bsi1/file-slides-fill.svg | 4 + gawa/static/bsi1/file-slides.svg | 4 + gawa/static/bsi1/file-spreadsheet-fill.svg | 3 + gawa/static/bsi1/file-spreadsheet.svg | 3 + gawa/static/bsi1/file-text-fill.svg | 3 + gawa/static/bsi1/file-text.svg | 4 + gawa/static/bsi1/file-word-fill.svg | 3 + gawa/static/bsi1/file-word.svg | 4 + gawa/static/bsi1/file-x-fill.svg | 3 + gawa/static/bsi1/file-x.svg | 4 + gawa/static/bsi1/file-zip-fill.svg | 4 + gawa/static/bsi1/file-zip.svg | 4 + gawa/static/bsi1/file.svg | 3 + gawa/static/bsi1/files-alt.svg | 3 + gawa/static/bsi1/files.svg | 3 + gawa/static/bsi1/filetype-aac.svg | 3 + gawa/static/bsi1/filetype-ai.svg | 3 + gawa/static/bsi1/filetype-bmp.svg | 3 + gawa/static/bsi1/filetype-cs.svg | 3 + gawa/static/bsi1/filetype-css.svg | 3 + gawa/static/bsi1/filetype-csv.svg | 3 + gawa/static/bsi1/filetype-doc.svg | 3 + gawa/static/bsi1/filetype-docx.svg | 3 + gawa/static/bsi1/filetype-exe.svg | 3 + gawa/static/bsi1/filetype-gif.svg | 3 + gawa/static/bsi1/filetype-heic.svg | 3 + gawa/static/bsi1/filetype-html.svg | 3 + gawa/static/bsi1/filetype-java.svg | 3 + gawa/static/bsi1/filetype-jpg.svg | 3 + gawa/static/bsi1/filetype-js.svg | 3 + gawa/static/bsi1/filetype-json.svg | 3 + gawa/static/bsi1/filetype-jsx.svg | 3 + gawa/static/bsi1/filetype-key.svg | 3 + gawa/static/bsi1/filetype-m4p.svg | 3 + gawa/static/bsi1/filetype-md.svg | 3 + gawa/static/bsi1/filetype-mdx.svg | 3 + gawa/static/bsi1/filetype-mov.svg | 3 + gawa/static/bsi1/filetype-mp3.svg | 3 + gawa/static/bsi1/filetype-mp4.svg | 3 + gawa/static/bsi1/filetype-otf.svg | 3 + gawa/static/bsi1/filetype-pdf.svg | 3 + gawa/static/bsi1/filetype-php.svg | 3 + gawa/static/bsi1/filetype-png.svg | 3 + gawa/static/bsi1/filetype-ppt.svg | 3 + gawa/static/bsi1/filetype-pptx.svg | 3 + gawa/static/bsi1/filetype-psd.svg | 3 + gawa/static/bsi1/filetype-py.svg | 3 + gawa/static/bsi1/filetype-raw.svg | 3 + gawa/static/bsi1/filetype-rb.svg | 3 + gawa/static/bsi1/filetype-sass.svg | 3 + gawa/static/bsi1/filetype-scss.svg | 3 + gawa/static/bsi1/filetype-sh.svg | 3 + gawa/static/bsi1/filetype-sql.svg | 3 + gawa/static/bsi1/filetype-svg.svg | 3 + gawa/static/bsi1/filetype-tiff.svg | 3 + gawa/static/bsi1/filetype-tsx.svg | 3 + gawa/static/bsi1/filetype-ttf.svg | 3 + gawa/static/bsi1/filetype-txt.svg | 3 + gawa/static/bsi1/filetype-wav.svg | 3 + gawa/static/bsi1/filetype-woff.svg | 3 + gawa/static/bsi1/filetype-xls.svg | 3 + gawa/static/bsi1/filetype-xlsx.svg | 3 + gawa/static/bsi1/filetype-xml.svg | 3 + gawa/static/bsi1/filetype-yml.svg | 3 + gawa/static/bsi1/film.svg | 3 + gawa/static/bsi1/filter-circle-fill.svg | 3 + gawa/static/bsi1/filter-circle.svg | 4 + gawa/static/bsi1/filter-left.svg | 3 + gawa/static/bsi1/filter-right.svg | 3 + gawa/static/bsi1/filter-square-fill.svg | 3 + gawa/static/bsi1/filter-square.svg | 4 + gawa/static/bsi1/filter.svg | 3 + gawa/static/bsi1/fingerprint.svg | 7 + gawa/static/bsi1/fire.svg | 3 + gawa/static/bsi1/flag-fill.svg | 3 + gawa/static/bsi1/flag.svg | 3 + gawa/static/bsi1/flower1.svg | 3 + gawa/static/bsi1/flower2.svg | 3 + gawa/static/bsi1/flower3.svg | 3 + gawa/static/bsi1/folder-check.svg | 4 + gawa/static/bsi1/folder-fill.svg | 3 + gawa/static/bsi1/folder-minus.svg | 4 + gawa/static/bsi1/folder-plus.svg | 4 + gawa/static/bsi1/folder-symlink-fill.svg | 3 + gawa/static/bsi1/folder-symlink.svg | 4 + gawa/static/bsi1/folder-x.svg | 4 + gawa/static/bsi1/folder.svg | 3 + gawa/static/bsi1/folder2-open.svg | 3 + gawa/static/bsi1/folder2.svg | 3 + gawa/static/bsi1/font/bootstrap-icons.css | 1981 ++ gawa/static/bsi1/font/bootstrap-icons.json | 1955 ++ gawa/static/bsi1/font/bootstrap-icons.min.css | 5 + gawa/static/bsi1/font/bootstrap-icons.scss | 1993 ++ .../bsi1/font/fonts/bootstrap-icons.woff | Bin 0 -> 164360 bytes .../bsi1/font/fonts/bootstrap-icons.woff2 | Bin 0 -> 121340 bytes gawa/static/bsi1/fonts.svg | 3 + gawa/static/bsi1/forward-fill.svg | 3 + gawa/static/bsi1/forward.svg | 3 + gawa/static/bsi1/front.svg | 3 + gawa/static/bsi1/fuel-pump-diesel-fill.svg | 4 + gawa/static/bsi1/fuel-pump-diesel.svg | 4 + gawa/static/bsi1/fuel-pump-fill.svg | 3 + gawa/static/bsi1/fuel-pump.svg | 4 + gawa/static/bsi1/fullscreen-exit.svg | 3 + gawa/static/bsi1/fullscreen.svg | 3 + gawa/static/bsi1/funnel-fill.svg | 3 + gawa/static/bsi1/funnel.svg | 3 + gawa/static/bsi1/gear-fill.svg | 3 + gawa/static/bsi1/gear-wide-connected.svg | 3 + gawa/static/bsi1/gear-wide.svg | 3 + gawa/static/bsi1/gear.svg | 4 + gawa/static/bsi1/gem.svg | 3 + gawa/static/bsi1/gender-ambiguous.svg | 3 + gawa/static/bsi1/gender-female.svg | 3 + gawa/static/bsi1/gender-male.svg | 3 + gawa/static/bsi1/gender-trans.svg | 3 + gawa/static/bsi1/geo-alt-fill.svg | 3 + gawa/static/bsi1/geo-alt.svg | 4 + gawa/static/bsi1/geo-fill.svg | 3 + gawa/static/bsi1/geo.svg | 3 + gawa/static/bsi1/gift-fill.svg | 3 + gawa/static/bsi1/gift.svg | 3 + gawa/static/bsi1/git.svg | 3 + gawa/static/bsi1/github.svg | 3 + gawa/static/bsi1/globe-americas.svg | 3 + gawa/static/bsi1/globe-asia-australia.svg | 4 + gawa/static/bsi1/globe-central-south-asia.svg | 3 + gawa/static/bsi1/globe-europe-africa.svg | 3 + gawa/static/bsi1/globe.svg | 3 + gawa/static/bsi1/globe2.svg | 3 + gawa/static/bsi1/google-play.svg | 3 + gawa/static/bsi1/google.svg | 3 + gawa/static/bsi1/gpu-card.svg | 5 + gawa/static/bsi1/graph-down-arrow.svg | 3 + gawa/static/bsi1/graph-down.svg | 3 + gawa/static/bsi1/graph-up-arrow.svg | 3 + gawa/static/bsi1/graph-up.svg | 3 + gawa/static/bsi1/grid-1x2-fill.svg | 3 + gawa/static/bsi1/grid-1x2.svg | 3 + gawa/static/bsi1/grid-3x2-gap-fill.svg | 3 + gawa/static/bsi1/grid-3x2-gap.svg | 3 + gawa/static/bsi1/grid-3x2.svg | 3 + gawa/static/bsi1/grid-3x3-gap-fill.svg | 3 + gawa/static/bsi1/grid-3x3-gap.svg | 3 + gawa/static/bsi1/grid-3x3.svg | 3 + gawa/static/bsi1/grid-fill.svg | 3 + gawa/static/bsi1/grid.svg | 3 + gawa/static/bsi1/grip-horizontal.svg | 3 + gawa/static/bsi1/grip-vertical.svg | 3 + gawa/static/bsi1/h-circle-fill.svg | 3 + gawa/static/bsi1/h-circle.svg | 3 + gawa/static/bsi1/h-square-fill.svg | 3 + gawa/static/bsi1/h-square.svg | 4 + gawa/static/bsi1/hammer.svg | 3 + gawa/static/bsi1/hand-index-fill.svg | 3 + gawa/static/bsi1/hand-index-thumb-fill.svg | 3 + gawa/static/bsi1/hand-index-thumb.svg | 3 + gawa/static/bsi1/hand-index.svg | 3 + gawa/static/bsi1/hand-thumbs-down-fill.svg | 3 + gawa/static/bsi1/hand-thumbs-down.svg | 3 + gawa/static/bsi1/hand-thumbs-up-fill.svg | 3 + gawa/static/bsi1/hand-thumbs-up.svg | 3 + gawa/static/bsi1/handbag-fill.svg | 3 + gawa/static/bsi1/handbag.svg | 3 + gawa/static/bsi1/hash.svg | 3 + gawa/static/bsi1/hdd-fill.svg | 3 + gawa/static/bsi1/hdd-network-fill.svg | 3 + gawa/static/bsi1/hdd-network.svg | 4 + gawa/static/bsi1/hdd-rack-fill.svg | 3 + gawa/static/bsi1/hdd-rack.svg | 4 + gawa/static/bsi1/hdd-stack-fill.svg | 3 + gawa/static/bsi1/hdd-stack.svg | 5 + gawa/static/bsi1/hdd.svg | 4 + gawa/static/bsi1/hdmi-fill.svg | 3 + gawa/static/bsi1/hdmi.svg | 4 + gawa/static/bsi1/headphones.svg | 3 + gawa/static/bsi1/headset-vr.svg | 4 + gawa/static/bsi1/headset.svg | 3 + gawa/static/bsi1/heart-arrow.svg | 3 + gawa/static/bsi1/heart-fill.svg | 3 + gawa/static/bsi1/heart-half.svg | 3 + gawa/static/bsi1/heart-pulse-fill.svg | 4 + gawa/static/bsi1/heart-pulse.svg | 4 + gawa/static/bsi1/heart.svg | 3 + gawa/static/bsi1/heartbreak-fill.svg | 3 + gawa/static/bsi1/heartbreak.svg | 3 + gawa/static/bsi1/hearts.svg | 3 + gawa/static/bsi1/heptagon-fill.svg | 3 + gawa/static/bsi1/heptagon-half.svg | 3 + gawa/static/bsi1/heptagon.svg | 3 + gawa/static/bsi1/hexagon-fill.svg | 3 + gawa/static/bsi1/hexagon-half.svg | 3 + gawa/static/bsi1/hexagon.svg | 3 + gawa/static/bsi1/hospital-fill.svg | 3 + gawa/static/bsi1/hospital.svg | 4 + gawa/static/bsi1/hourglass-bottom.svg | 3 + gawa/static/bsi1/hourglass-split.svg | 3 + gawa/static/bsi1/hourglass-top.svg | 3 + gawa/static/bsi1/hourglass.svg | 3 + gawa/static/bsi1/house-add-fill.svg | 5 + gawa/static/bsi1/house-add.svg | 4 + gawa/static/bsi1/house-check-fill.svg | 5 + gawa/static/bsi1/house-check.svg | 4 + gawa/static/bsi1/house-dash-fill.svg | 5 + gawa/static/bsi1/house-dash.svg | 4 + gawa/static/bsi1/house-door-fill.svg | 3 + gawa/static/bsi1/house-door.svg | 3 + gawa/static/bsi1/house-down-fill.svg | 5 + gawa/static/bsi1/house-down.svg | 4 + gawa/static/bsi1/house-exclamation-fill.svg | 5 + gawa/static/bsi1/house-exclamation.svg | 4 + gawa/static/bsi1/house-fill.svg | 4 + gawa/static/bsi1/house-gear-fill.svg | 5 + gawa/static/bsi1/house-gear.svg | 4 + gawa/static/bsi1/house-heart-fill.svg | 4 + gawa/static/bsi1/house-heart.svg | 4 + gawa/static/bsi1/house-lock-fill.svg | 5 + gawa/static/bsi1/house-lock.svg | 4 + gawa/static/bsi1/house-slash-fill.svg | 5 + gawa/static/bsi1/house-slash.svg | 4 + gawa/static/bsi1/house-up-fill.svg | 5 + gawa/static/bsi1/house-up.svg | 4 + gawa/static/bsi1/house-x-fill.svg | 5 + gawa/static/bsi1/house-x.svg | 4 + gawa/static/bsi1/house.svg | 3 + gawa/static/bsi1/houses-fill.svg | 4 + gawa/static/bsi1/houses.svg | 3 + gawa/static/bsi1/hr.svg | 3 + gawa/static/bsi1/hurricane.svg | 3 + gawa/static/bsi1/hypnotize.svg | 4 + gawa/static/bsi1/image-alt.svg | 3 + gawa/static/bsi1/image-fill.svg | 3 + gawa/static/bsi1/image.svg | 4 + gawa/static/bsi1/images.svg | 4 + gawa/static/bsi1/inbox-fill.svg | 3 + gawa/static/bsi1/inbox.svg | 3 + gawa/static/bsi1/inboxes-fill.svg | 3 + gawa/static/bsi1/inboxes.svg | 3 + gawa/static/bsi1/incognito.svg | 3 + gawa/static/bsi1/indent.svg | 4 + gawa/static/bsi1/infinity.svg | 3 + gawa/static/bsi1/info-circle-fill.svg | 3 + gawa/static/bsi1/info-circle.svg | 4 + gawa/static/bsi1/info-lg.svg | 3 + gawa/static/bsi1/info-square-fill.svg | 3 + gawa/static/bsi1/info-square.svg | 4 + gawa/static/bsi1/info.svg | 3 + gawa/static/bsi1/input-cursor-text.svg | 4 + gawa/static/bsi1/input-cursor.svg | 4 + gawa/static/bsi1/instagram.svg | 3 + gawa/static/bsi1/intersect.svg | 3 + gawa/static/bsi1/journal-album.svg | 5 + gawa/static/bsi1/journal-arrow-down.svg | 5 + gawa/static/bsi1/journal-arrow-up.svg | 5 + gawa/static/bsi1/journal-bookmark-fill.svg | 5 + gawa/static/bsi1/journal-bookmark.svg | 5 + gawa/static/bsi1/journal-check.svg | 5 + gawa/static/bsi1/journal-code.svg | 5 + gawa/static/bsi1/journal-medical.svg | 5 + gawa/static/bsi1/journal-minus.svg | 5 + gawa/static/bsi1/journal-plus.svg | 5 + gawa/static/bsi1/journal-richtext.svg | 5 + gawa/static/bsi1/journal-text.svg | 5 + gawa/static/bsi1/journal-x.svg | 5 + gawa/static/bsi1/journal.svg | 4 + gawa/static/bsi1/journals.svg | 4 + gawa/static/bsi1/joystick.svg | 4 + gawa/static/bsi1/justify-left.svg | 3 + gawa/static/bsi1/justify-right.svg | 3 + gawa/static/bsi1/justify.svg | 3 + gawa/static/bsi1/kanban-fill.svg | 3 + gawa/static/bsi1/kanban.svg | 4 + gawa/static/bsi1/key-fill.svg | 3 + gawa/static/bsi1/key.svg | 4 + gawa/static/bsi1/keyboard-fill.svg | 3 + gawa/static/bsi1/keyboard.svg | 4 + gawa/static/bsi1/ladder.svg | 3 + gawa/static/bsi1/lamp-fill.svg | 4 + gawa/static/bsi1/lamp.svg | 4 + gawa/static/bsi1/laptop-fill.svg | 3 + gawa/static/bsi1/laptop.svg | 3 + gawa/static/bsi1/layer-backward.svg | 4 + gawa/static/bsi1/layer-forward.svg | 4 + gawa/static/bsi1/layers-fill.svg | 4 + gawa/static/bsi1/layers-half.svg | 3 + gawa/static/bsi1/layers.svg | 3 + .../bsi1/layout-sidebar-inset-reverse.svg | 4 + gawa/static/bsi1/layout-sidebar-inset.svg | 4 + gawa/static/bsi1/layout-sidebar-reverse.svg | 3 + gawa/static/bsi1/layout-sidebar.svg | 3 + gawa/static/bsi1/layout-split.svg | 3 + .../bsi1/layout-text-sidebar-reverse.svg | 4 + gawa/static/bsi1/layout-text-sidebar.svg | 4 + .../bsi1/layout-text-window-reverse.svg | 4 + gawa/static/bsi1/layout-text-window.svg | 4 + gawa/static/bsi1/layout-three-columns.svg | 3 + gawa/static/bsi1/layout-wtf.svg | 3 + gawa/static/bsi1/life-preserver.svg | 3 + gawa/static/bsi1/lightbulb-fill.svg | 3 + gawa/static/bsi1/lightbulb-off-fill.svg | 3 + gawa/static/bsi1/lightbulb-off.svg | 3 + gawa/static/bsi1/lightbulb.svg | 3 + gawa/static/bsi1/lightning-charge-fill.svg | 3 + gawa/static/bsi1/lightning-charge.svg | 3 + gawa/static/bsi1/lightning-fill.svg | 3 + gawa/static/bsi1/lightning.svg | 3 + gawa/static/bsi1/line.svg | 3 + gawa/static/bsi1/link-45deg.svg | 4 + gawa/static/bsi1/link.svg | 4 + gawa/static/bsi1/linkedin.svg | 3 + gawa/static/bsi1/list-check.svg | 3 + gawa/static/bsi1/list-columns-reverse.svg | 3 + gawa/static/bsi1/list-columns.svg | 3 + gawa/static/bsi1/list-nested.svg | 3 + gawa/static/bsi1/list-ol.svg | 4 + gawa/static/bsi1/list-stars.svg | 4 + gawa/static/bsi1/list-task.svg | 5 + gawa/static/bsi1/list-ul.svg | 3 + gawa/static/bsi1/list.svg | 3 + gawa/static/bsi1/lock-fill.svg | 3 + gawa/static/bsi1/lock.svg | 3 + gawa/static/bsi1/lungs-fill.svg | 3 + gawa/static/bsi1/lungs.svg | 3 + gawa/static/bsi1/magic.svg | 3 + gawa/static/bsi1/magnet-fill.svg | 3 + gawa/static/bsi1/magnet.svg | 3 + gawa/static/bsi1/mailbox.svg | 4 + gawa/static/bsi1/mailbox2.svg | 4 + gawa/static/bsi1/map-fill.svg | 3 + gawa/static/bsi1/map.svg | 3 + gawa/static/bsi1/markdown-fill.svg | 3 + gawa/static/bsi1/markdown.svg | 6 + gawa/static/bsi1/mask.svg | 3 + gawa/static/bsi1/mastodon.svg | 3 + gawa/static/bsi1/medium.svg | 3 + gawa/static/bsi1/megaphone-fill.svg | 3 + gawa/static/bsi1/megaphone.svg | 3 + gawa/static/bsi1/memory.svg | 3 + gawa/static/bsi1/menu-app-fill.svg | 3 + gawa/static/bsi1/menu-app.svg | 3 + gawa/static/bsi1/menu-button-fill.svg | 3 + gawa/static/bsi1/menu-button-wide-fill.svg | 3 + gawa/static/bsi1/menu-button-wide.svg | 4 + gawa/static/bsi1/menu-button.svg | 4 + gawa/static/bsi1/menu-down.svg | 3 + gawa/static/bsi1/menu-up.svg | 3 + gawa/static/bsi1/messenger.svg | 3 + gawa/static/bsi1/meta.svg | 3 + gawa/static/bsi1/mic-fill.svg | 4 + gawa/static/bsi1/mic-mute-fill.svg | 4 + gawa/static/bsi1/mic-mute.svg | 4 + gawa/static/bsi1/mic.svg | 4 + gawa/static/bsi1/microsoft-teams.svg | 4 + gawa/static/bsi1/microsoft.svg | 3 + gawa/static/bsi1/minecart-loaded.svg | 4 + gawa/static/bsi1/minecart.svg | 3 + gawa/static/bsi1/modem-fill.svg | 3 + gawa/static/bsi1/modem.svg | 4 + gawa/static/bsi1/moisture.svg | 3 + gawa/static/bsi1/moon-fill.svg | 3 + gawa/static/bsi1/moon-stars-fill.svg | 4 + gawa/static/bsi1/moon-stars.svg | 4 + gawa/static/bsi1/moon.svg | 3 + gawa/static/bsi1/mortarboard-fill.svg | 4 + gawa/static/bsi1/mortarboard.svg | 4 + gawa/static/bsi1/motherboard-fill.svg | 4 + gawa/static/bsi1/motherboard.svg | 4 + gawa/static/bsi1/mouse-fill.svg | 3 + gawa/static/bsi1/mouse.svg | 3 + gawa/static/bsi1/mouse2-fill.svg | 3 + gawa/static/bsi1/mouse2.svg | 3 + gawa/static/bsi1/mouse3-fill.svg | 3 + gawa/static/bsi1/mouse3.svg | 3 + gawa/static/bsi1/music-note-beamed.svg | 5 + gawa/static/bsi1/music-note-list.svg | 6 + gawa/static/bsi1/music-note.svg | 5 + gawa/static/bsi1/music-player-fill.svg | 4 + gawa/static/bsi1/music-player.svg | 5 + gawa/static/bsi1/newspaper.svg | 4 + gawa/static/bsi1/nintendo-switch.svg | 4 + gawa/static/bsi1/node-minus-fill.svg | 3 + gawa/static/bsi1/node-minus.svg | 3 + gawa/static/bsi1/node-plus-fill.svg | 3 + gawa/static/bsi1/node-plus.svg | 3 + gawa/static/bsi1/nut-fill.svg | 3 + gawa/static/bsi1/nut.svg | 4 + gawa/static/bsi1/nvidia.svg | 3 + gawa/static/bsi1/octagon-fill.svg | 3 + gawa/static/bsi1/octagon-half.svg | 3 + gawa/static/bsi1/octagon.svg | 3 + gawa/static/bsi1/optical-audio-fill.svg | 4 + gawa/static/bsi1/optical-audio.svg | 5 + gawa/static/bsi1/option.svg | 3 + gawa/static/bsi1/outlet.svg | 4 + gawa/static/bsi1/p-circle-fill.svg | 3 + gawa/static/bsi1/p-circle.svg | 3 + gawa/static/bsi1/p-square-fill.svg | 4 + gawa/static/bsi1/p-square.svg | 4 + gawa/static/bsi1/paint-bucket.svg | 3 + gawa/static/bsi1/palette-fill.svg | 3 + gawa/static/bsi1/palette.svg | 4 + gawa/static/bsi1/palette2.svg | 4 + gawa/static/bsi1/paperclip.svg | 3 + gawa/static/bsi1/paragraph.svg | 3 + gawa/static/bsi1/pass-fill.svg | 3 + gawa/static/bsi1/pass.svg | 4 + gawa/static/bsi1/patch-check-fill.svg | 3 + gawa/static/bsi1/patch-check.svg | 4 + gawa/static/bsi1/patch-exclamation-fill.svg | 3 + gawa/static/bsi1/patch-exclamation.svg | 4 + gawa/static/bsi1/patch-minus-fill.svg | 3 + gawa/static/bsi1/patch-minus.svg | 4 + gawa/static/bsi1/patch-plus-fill.svg | 3 + gawa/static/bsi1/patch-plus.svg | 4 + gawa/static/bsi1/patch-question-fill.svg | 3 + gawa/static/bsi1/patch-question.svg | 5 + gawa/static/bsi1/pause-btn-fill.svg | 3 + gawa/static/bsi1/pause-btn.svg | 4 + gawa/static/bsi1/pause-circle-fill.svg | 3 + gawa/static/bsi1/pause-circle.svg | 4 + gawa/static/bsi1/pause-fill.svg | 3 + gawa/static/bsi1/pause.svg | 3 + gawa/static/bsi1/paypal.svg | 3 + gawa/static/bsi1/pc-display-horizontal.svg | 3 + gawa/static/bsi1/pc-display.svg | 3 + gawa/static/bsi1/pc-horizontal.svg | 3 + gawa/static/bsi1/pc.svg | 3 + gawa/static/bsi1/pci-card.svg | 4 + gawa/static/bsi1/peace-fill.svg | 3 + gawa/static/bsi1/peace.svg | 3 + gawa/static/bsi1/pen-fill.svg | 3 + gawa/static/bsi1/pen.svg | 3 + gawa/static/bsi1/pencil-fill.svg | 3 + gawa/static/bsi1/pencil-square.svg | 4 + gawa/static/bsi1/pencil.svg | 3 + gawa/static/bsi1/pentagon-fill.svg | 3 + gawa/static/bsi1/pentagon-half.svg | 3 + gawa/static/bsi1/pentagon.svg | 3 + gawa/static/bsi1/people-fill.svg | 3 + gawa/static/bsi1/people.svg | 3 + gawa/static/bsi1/percent.svg | 3 + gawa/static/bsi1/person-add.svg | 4 + gawa/static/bsi1/person-badge-fill.svg | 3 + gawa/static/bsi1/person-badge.svg | 4 + gawa/static/bsi1/person-bounding-box.svg | 4 + gawa/static/bsi1/person-check-fill.svg | 4 + gawa/static/bsi1/person-check.svg | 4 + gawa/static/bsi1/person-circle.svg | 4 + gawa/static/bsi1/person-dash-fill.svg | 4 + gawa/static/bsi1/person-dash.svg | 4 + gawa/static/bsi1/person-down.svg | 4 + gawa/static/bsi1/person-exclamation.svg | 4 + gawa/static/bsi1/person-fill-add.svg | 4 + gawa/static/bsi1/person-fill-check.svg | 4 + gawa/static/bsi1/person-fill-dash.svg | 4 + gawa/static/bsi1/person-fill-down.svg | 4 + gawa/static/bsi1/person-fill-exclamation.svg | 4 + gawa/static/bsi1/person-fill-gear.svg | 3 + gawa/static/bsi1/person-fill-lock.svg | 3 + gawa/static/bsi1/person-fill-slash.svg | 3 + gawa/static/bsi1/person-fill-up.svg | 4 + gawa/static/bsi1/person-fill-x.svg | 4 + gawa/static/bsi1/person-fill.svg | 3 + gawa/static/bsi1/person-gear.svg | 3 + gawa/static/bsi1/person-heart.svg | 3 + gawa/static/bsi1/person-hearts.svg | 3 + gawa/static/bsi1/person-lines-fill.svg | 3 + gawa/static/bsi1/person-lock.svg | 3 + gawa/static/bsi1/person-plus-fill.svg | 4 + gawa/static/bsi1/person-plus.svg | 4 + gawa/static/bsi1/person-rolodex.svg | 4 + gawa/static/bsi1/person-slash.svg | 3 + gawa/static/bsi1/person-square.svg | 4 + gawa/static/bsi1/person-up.svg | 4 + gawa/static/bsi1/person-vcard-fill.svg | 3 + gawa/static/bsi1/person-vcard.svg | 4 + gawa/static/bsi1/person-video.svg | 4 + gawa/static/bsi1/person-video2.svg | 4 + gawa/static/bsi1/person-video3.svg | 4 + gawa/static/bsi1/person-workspace.svg | 4 + gawa/static/bsi1/person-x-fill.svg | 3 + gawa/static/bsi1/person-x.svg | 4 + gawa/static/bsi1/person.svg | 3 + gawa/static/bsi1/phone-fill.svg | 3 + gawa/static/bsi1/phone-flip.svg | 3 + gawa/static/bsi1/phone-landscape-fill.svg | 3 + gawa/static/bsi1/phone-landscape.svg | 4 + gawa/static/bsi1/phone-vibrate-fill.svg | 3 + gawa/static/bsi1/phone-vibrate.svg | 4 + gawa/static/bsi1/phone.svg | 4 + gawa/static/bsi1/pie-chart-fill.svg | 3 + gawa/static/bsi1/pie-chart.svg | 3 + gawa/static/bsi1/piggy-bank-fill.svg | 3 + gawa/static/bsi1/piggy-bank.svg | 4 + gawa/static/bsi1/pin-angle-fill.svg | 3 + gawa/static/bsi1/pin-angle.svg | 3 + gawa/static/bsi1/pin-fill.svg | 3 + gawa/static/bsi1/pin-map-fill.svg | 4 + gawa/static/bsi1/pin-map.svg | 4 + gawa/static/bsi1/pin.svg | 3 + gawa/static/bsi1/pinterest.svg | 3 + gawa/static/bsi1/pip-fill.svg | 3 + gawa/static/bsi1/pip.svg | 4 + gawa/static/bsi1/play-btn-fill.svg | 3 + gawa/static/bsi1/play-btn.svg | 4 + gawa/static/bsi1/play-circle-fill.svg | 3 + gawa/static/bsi1/play-circle.svg | 4 + gawa/static/bsi1/play-fill.svg | 3 + gawa/static/bsi1/play.svg | 3 + gawa/static/bsi1/playstation.svg | 3 + gawa/static/bsi1/plug-fill.svg | 3 + gawa/static/bsi1/plug.svg | 3 + gawa/static/bsi1/plugin.svg | 3 + gawa/static/bsi1/plus-circle-dotted.svg | 3 + gawa/static/bsi1/plus-circle-fill.svg | 3 + gawa/static/bsi1/plus-circle.svg | 4 + gawa/static/bsi1/plus-lg.svg | 3 + gawa/static/bsi1/plus-slash-minus.svg | 3 + gawa/static/bsi1/plus-square-dotted.svg | 3 + gawa/static/bsi1/plus-square-fill.svg | 3 + gawa/static/bsi1/plus-square.svg | 4 + gawa/static/bsi1/plus.svg | 3 + gawa/static/bsi1/postage-fill.svg | 4 + gawa/static/bsi1/postage-heart-fill.svg | 4 + gawa/static/bsi1/postage-heart.svg | 4 + gawa/static/bsi1/postage.svg | 4 + gawa/static/bsi1/postcard-fill.svg | 4 + gawa/static/bsi1/postcard-heart-fill.svg | 3 + gawa/static/bsi1/postcard-heart.svg | 4 + gawa/static/bsi1/postcard.svg | 3 + gawa/static/bsi1/power.svg | 4 + gawa/static/bsi1/prescription.svg | 4 + gawa/static/bsi1/prescription2.svg | 4 + gawa/static/bsi1/printer-fill.svg | 4 + gawa/static/bsi1/printer.svg | 4 + gawa/static/bsi1/projector-fill.svg | 3 + gawa/static/bsi1/projector.svg | 4 + gawa/static/bsi1/puzzle-fill.svg | 3 + gawa/static/bsi1/puzzle.svg | 3 + gawa/static/bsi1/qr-code-scan.svg | 7 + gawa/static/bsi1/qr-code.svg | 7 + gawa/static/bsi1/question-circle-fill.svg | 3 + gawa/static/bsi1/question-circle.svg | 4 + gawa/static/bsi1/question-diamond-fill.svg | 3 + gawa/static/bsi1/question-diamond.svg | 4 + gawa/static/bsi1/question-lg.svg | 3 + gawa/static/bsi1/question-octagon-fill.svg | 3 + gawa/static/bsi1/question-octagon.svg | 4 + gawa/static/bsi1/question-square-fill.svg | 3 + gawa/static/bsi1/question-square.svg | 4 + gawa/static/bsi1/question.svg | 3 + gawa/static/bsi1/quora.svg | 3 + gawa/static/bsi1/quote.svg | 3 + gawa/static/bsi1/r-circle-fill.svg | 3 + gawa/static/bsi1/r-circle.svg | 3 + gawa/static/bsi1/r-square-fill.svg | 4 + gawa/static/bsi1/r-square.svg | 4 + gawa/static/bsi1/radioactive.svg | 4 + gawa/static/bsi1/rainbow.svg | 3 + gawa/static/bsi1/receipt-cutoff.svg | 4 + gawa/static/bsi1/receipt.svg | 4 + gawa/static/bsi1/reception-0.svg | 3 + gawa/static/bsi1/reception-1.svg | 3 + gawa/static/bsi1/reception-2.svg | 3 + gawa/static/bsi1/reception-3.svg | 3 + gawa/static/bsi1/reception-4.svg | 3 + gawa/static/bsi1/record-btn-fill.svg | 3 + gawa/static/bsi1/record-btn.svg | 4 + gawa/static/bsi1/record-circle-fill.svg | 3 + gawa/static/bsi1/record-circle.svg | 4 + gawa/static/bsi1/record-fill.svg | 3 + gawa/static/bsi1/record.svg | 3 + gawa/static/bsi1/record2-fill.svg | 4 + gawa/static/bsi1/record2.svg | 4 + gawa/static/bsi1/recycle.svg | 3 + gawa/static/bsi1/reddit.svg | 4 + gawa/static/bsi1/regex.svg | 3 + gawa/static/bsi1/repeat-1.svg | 4 + gawa/static/bsi1/repeat.svg | 3 + gawa/static/bsi1/reply-all-fill.svg | 4 + gawa/static/bsi1/reply-all.svg | 4 + gawa/static/bsi1/reply-fill.svg | 3 + gawa/static/bsi1/reply.svg | 3 + gawa/static/bsi1/rewind-btn-fill.svg | 3 + gawa/static/bsi1/rewind-btn.svg | 4 + gawa/static/bsi1/rewind-circle-fill.svg | 3 + gawa/static/bsi1/rewind-circle.svg | 4 + gawa/static/bsi1/rewind-fill.svg | 4 + gawa/static/bsi1/rewind.svg | 4 + gawa/static/bsi1/robot.svg | 4 + gawa/static/bsi1/rocket-fill.svg | 4 + gawa/static/bsi1/rocket-takeoff-fill.svg | 4 + gawa/static/bsi1/rocket-takeoff.svg | 5 + gawa/static/bsi1/rocket.svg | 5 + gawa/static/bsi1/router-fill.svg | 6 + gawa/static/bsi1/router.svg | 6 + gawa/static/bsi1/rss-fill.svg | 3 + gawa/static/bsi1/rss.svg | 4 + gawa/static/bsi1/rulers.svg | 3 + gawa/static/bsi1/safe-fill.svg | 4 + gawa/static/bsi1/safe.svg | 4 + gawa/static/bsi1/safe2-fill.svg | 4 + gawa/static/bsi1/safe2.svg | 4 + gawa/static/bsi1/save-fill.svg | 3 + gawa/static/bsi1/save.svg | 3 + gawa/static/bsi1/save2-fill.svg | 3 + gawa/static/bsi1/save2.svg | 3 + gawa/static/bsi1/scissors.svg | 3 + gawa/static/bsi1/scooter.svg | 3 + gawa/static/bsi1/screwdriver.svg | 3 + gawa/static/bsi1/sd-card-fill.svg | 3 + gawa/static/bsi1/sd-card.svg | 4 + gawa/static/bsi1/search-heart-fill.svg | 3 + gawa/static/bsi1/search-heart.svg | 4 + gawa/static/bsi1/search.svg | 3 + gawa/static/bsi1/segmented-nav.svg | 3 + gawa/static/bsi1/send-check-fill.svg | 4 + gawa/static/bsi1/send-check.svg | 4 + gawa/static/bsi1/send-dash-fill.svg | 4 + gawa/static/bsi1/send-dash.svg | 4 + gawa/static/bsi1/send-exclamation-fill.svg | 4 + gawa/static/bsi1/send-exclamation.svg | 4 + gawa/static/bsi1/send-fill.svg | 3 + gawa/static/bsi1/send-plus-fill.svg | 4 + gawa/static/bsi1/send-plus.svg | 4 + gawa/static/bsi1/send-slash-fill.svg | 4 + gawa/static/bsi1/send-slash.svg | 4 + gawa/static/bsi1/send-x-fill.svg | 4 + gawa/static/bsi1/send-x.svg | 4 + gawa/static/bsi1/send.svg | 3 + gawa/static/bsi1/server.svg | 5 + gawa/static/bsi1/share-fill.svg | 3 + gawa/static/bsi1/share.svg | 3 + gawa/static/bsi1/shield-check.svg | 4 + gawa/static/bsi1/shield-exclamation.svg | 4 + gawa/static/bsi1/shield-fill-check.svg | 3 + gawa/static/bsi1/shield-fill-exclamation.svg | 3 + gawa/static/bsi1/shield-fill-minus.svg | 3 + gawa/static/bsi1/shield-fill-plus.svg | 3 + gawa/static/bsi1/shield-fill-x.svg | 3 + gawa/static/bsi1/shield-fill.svg | 3 + gawa/static/bsi1/shield-lock-fill.svg | 3 + gawa/static/bsi1/shield-lock.svg | 4 + gawa/static/bsi1/shield-minus.svg | 4 + gawa/static/bsi1/shield-plus.svg | 4 + gawa/static/bsi1/shield-shaded.svg | 3 + gawa/static/bsi1/shield-slash-fill.svg | 3 + gawa/static/bsi1/shield-slash.svg | 3 + gawa/static/bsi1/shield-x.svg | 4 + gawa/static/bsi1/shield.svg | 3 + gawa/static/bsi1/shift-fill.svg | 3 + gawa/static/bsi1/shift.svg | 3 + gawa/static/bsi1/shop-window.svg | 3 + gawa/static/bsi1/shop.svg | 3 + gawa/static/bsi1/shuffle.svg | 4 + gawa/static/bsi1/sign-dead-end-fill.svg | 4 + gawa/static/bsi1/sign-dead-end.svg | 4 + gawa/static/bsi1/sign-do-not-enter-fill.svg | 4 + gawa/static/bsi1/sign-do-not-enter.svg | 4 + gawa/static/bsi1/sign-intersection-fill.svg | 3 + .../bsi1/sign-intersection-side-fill.svg | 3 + gawa/static/bsi1/sign-intersection-side.svg | 4 + gawa/static/bsi1/sign-intersection-t-fill.svg | 3 + gawa/static/bsi1/sign-intersection-t.svg | 4 + gawa/static/bsi1/sign-intersection-y-fill.svg | 3 + gawa/static/bsi1/sign-intersection-y.svg | 4 + gawa/static/bsi1/sign-intersection.svg | 4 + gawa/static/bsi1/sign-merge-left-fill.svg | 3 + gawa/static/bsi1/sign-merge-left.svg | 4 + gawa/static/bsi1/sign-merge-right-fill.svg | 3 + gawa/static/bsi1/sign-merge-right.svg | 4 + gawa/static/bsi1/sign-no-left-turn-fill.svg | 4 + gawa/static/bsi1/sign-no-left-turn.svg | 3 + gawa/static/bsi1/sign-no-parking-fill.svg | 4 + gawa/static/bsi1/sign-no-parking.svg | 3 + gawa/static/bsi1/sign-no-right-turn-fill.svg | 4 + gawa/static/bsi1/sign-no-right-turn.svg | 3 + gawa/static/bsi1/sign-railroad-fill.svg | 5 + gawa/static/bsi1/sign-railroad.svg | 4 + gawa/static/bsi1/sign-stop-fill.svg | 4 + gawa/static/bsi1/sign-stop-lights-fill.svg | 4 + gawa/static/bsi1/sign-stop-lights.svg | 4 + gawa/static/bsi1/sign-stop.svg | 5 + gawa/static/bsi1/sign-turn-left-fill.svg | 3 + gawa/static/bsi1/sign-turn-left.svg | 4 + gawa/static/bsi1/sign-turn-right-fill.svg | 3 + gawa/static/bsi1/sign-turn-right.svg | 4 + .../bsi1/sign-turn-slight-left-fill.svg | 3 + gawa/static/bsi1/sign-turn-slight-left.svg | 4 + .../bsi1/sign-turn-slight-right-fill.svg | 3 + gawa/static/bsi1/sign-turn-slight-right.svg | 4 + gawa/static/bsi1/sign-yield-fill.svg | 4 + gawa/static/bsi1/sign-yield.svg | 5 + gawa/static/bsi1/signal.svg | 3 + gawa/static/bsi1/signpost-2-fill.svg | 3 + gawa/static/bsi1/signpost-2.svg | 3 + gawa/static/bsi1/signpost-fill.svg | 3 + gawa/static/bsi1/signpost-split-fill.svg | 3 + gawa/static/bsi1/signpost-split.svg | 3 + gawa/static/bsi1/signpost.svg | 3 + gawa/static/bsi1/sim-fill.svg | 4 + gawa/static/bsi1/sim.svg | 4 + gawa/static/bsi1/sina-weibo.svg | 4 + gawa/static/bsi1/skip-backward-btn-fill.svg | 3 + gawa/static/bsi1/skip-backward-btn.svg | 4 + .../static/bsi1/skip-backward-circle-fill.svg | 3 + gawa/static/bsi1/skip-backward-circle.svg | 4 + gawa/static/bsi1/skip-backward-fill.svg | 3 + gawa/static/bsi1/skip-backward.svg | 3 + gawa/static/bsi1/skip-end-btn-fill.svg | 3 + gawa/static/bsi1/skip-end-btn.svg | 4 + gawa/static/bsi1/skip-end-circle-fill.svg | 3 + gawa/static/bsi1/skip-end-circle.svg | 4 + gawa/static/bsi1/skip-end-fill.svg | 3 + gawa/static/bsi1/skip-end.svg | 3 + gawa/static/bsi1/skip-forward-btn-fill.svg | 3 + gawa/static/bsi1/skip-forward-btn.svg | 4 + gawa/static/bsi1/skip-forward-circle-fill.svg | 3 + gawa/static/bsi1/skip-forward-circle.svg | 4 + gawa/static/bsi1/skip-forward-fill.svg | 3 + gawa/static/bsi1/skip-forward.svg | 3 + gawa/static/bsi1/skip-start-btn-fill.svg | 3 + gawa/static/bsi1/skip-start-btn.svg | 4 + gawa/static/bsi1/skip-start-circle-fill.svg | 3 + gawa/static/bsi1/skip-start-circle.svg | 4 + gawa/static/bsi1/skip-start-fill.svg | 3 + gawa/static/bsi1/skip-start.svg | 3 + gawa/static/bsi1/skype.svg | 3 + gawa/static/bsi1/slack.svg | 3 + gawa/static/bsi1/slash-circle-fill.svg | 3 + gawa/static/bsi1/slash-circle.svg | 4 + gawa/static/bsi1/slash-lg.svg | 3 + gawa/static/bsi1/slash-square-fill.svg | 3 + gawa/static/bsi1/slash-square.svg | 4 + gawa/static/bsi1/slash.svg | 3 + gawa/static/bsi1/sliders.svg | 3 + gawa/static/bsi1/sliders2-vertical.svg | 3 + gawa/static/bsi1/sliders2.svg | 3 + gawa/static/bsi1/smartwatch.svg | 4 + gawa/static/bsi1/snapchat.svg | 3 + gawa/static/bsi1/snow.svg | 3 + gawa/static/bsi1/snow2.svg | 3 + gawa/static/bsi1/snow3.svg | 4 + gawa/static/bsi1/sort-alpha-down-alt.svg | 5 + gawa/static/bsi1/sort-alpha-down.svg | 4 + gawa/static/bsi1/sort-alpha-up-alt.svg | 5 + gawa/static/bsi1/sort-alpha-up.svg | 4 + gawa/static/bsi1/sort-down-alt.svg | 3 + gawa/static/bsi1/sort-down.svg | 3 + gawa/static/bsi1/sort-numeric-down-alt.svg | 4 + gawa/static/bsi1/sort-numeric-down.svg | 5 + gawa/static/bsi1/sort-numeric-up-alt.svg | 4 + gawa/static/bsi1/sort-numeric-up.svg | 5 + gawa/static/bsi1/sort-up-alt.svg | 3 + gawa/static/bsi1/sort-up.svg | 3 + gawa/static/bsi1/soundwave.svg | 3 + gawa/static/bsi1/speaker-fill.svg | 4 + gawa/static/bsi1/speaker.svg | 4 + gawa/static/bsi1/speedometer.svg | 4 + gawa/static/bsi1/speedometer2.svg | 4 + gawa/static/bsi1/spellcheck.svg | 4 + gawa/static/bsi1/spotify.svg | 3 + gawa/static/bsi1/square-fill.svg | 3 + gawa/static/bsi1/square-half.svg | 3 + gawa/static/bsi1/square.svg | 3 + gawa/static/bsi1/stack-overflow.svg | 4 + gawa/static/bsi1/stack.svg | 4 + gawa/static/bsi1/star-fill.svg | 3 + gawa/static/bsi1/star-half.svg | 3 + gawa/static/bsi1/star.svg | 3 + gawa/static/bsi1/stars.svg | 3 + gawa/static/bsi1/steam.svg | 4 + gawa/static/bsi1/stickies-fill.svg | 4 + gawa/static/bsi1/stickies.svg | 4 + gawa/static/bsi1/sticky-fill.svg | 3 + gawa/static/bsi1/sticky.svg | 3 + gawa/static/bsi1/stop-btn-fill.svg | 3 + gawa/static/bsi1/stop-btn.svg | 4 + gawa/static/bsi1/stop-circle-fill.svg | 3 + gawa/static/bsi1/stop-circle.svg | 4 + gawa/static/bsi1/stop-fill.svg | 3 + gawa/static/bsi1/stop.svg | 3 + gawa/static/bsi1/stoplights-fill.svg | 3 + gawa/static/bsi1/stoplights.svg | 4 + gawa/static/bsi1/stopwatch-fill.svg | 3 + gawa/static/bsi1/stopwatch.svg | 4 + gawa/static/bsi1/strava.svg | 3 + gawa/static/bsi1/stripe.svg | 3 + gawa/static/bsi1/subscript.svg | 3 + gawa/static/bsi1/subtract.svg | 3 + gawa/static/bsi1/suit-club-fill.svg | 3 + gawa/static/bsi1/suit-club.svg | 3 + gawa/static/bsi1/suit-diamond-fill.svg | 3 + gawa/static/bsi1/suit-diamond.svg | 3 + gawa/static/bsi1/suit-heart-fill.svg | 3 + gawa/static/bsi1/suit-heart.svg | 3 + gawa/static/bsi1/suit-spade-fill.svg | 3 + gawa/static/bsi1/suit-spade.svg | 3 + gawa/static/bsi1/sun-fill.svg | 3 + gawa/static/bsi1/sun.svg | 3 + gawa/static/bsi1/sunglasses.svg | 3 + gawa/static/bsi1/sunrise-fill.svg | 3 + gawa/static/bsi1/sunrise.svg | 3 + gawa/static/bsi1/sunset-fill.svg | 3 + gawa/static/bsi1/sunset.svg | 3 + gawa/static/bsi1/superscript.svg | 3 + gawa/static/bsi1/symmetry-horizontal.svg | 3 + gawa/static/bsi1/symmetry-vertical.svg | 3 + gawa/static/bsi1/table.svg | 3 + gawa/static/bsi1/tablet-fill.svg | 3 + gawa/static/bsi1/tablet-landscape-fill.svg | 3 + gawa/static/bsi1/tablet-landscape.svg | 4 + gawa/static/bsi1/tablet.svg | 4 + gawa/static/bsi1/tag-fill.svg | 3 + gawa/static/bsi1/tag.svg | 4 + gawa/static/bsi1/tags-fill.svg | 4 + gawa/static/bsi1/tags.svg | 4 + gawa/static/bsi1/taxi-front-fill.svg | 3 + gawa/static/bsi1/taxi-front.svg | 4 + gawa/static/bsi1/telegram.svg | 3 + gawa/static/bsi1/telephone-fill.svg | 3 + gawa/static/bsi1/telephone-forward-fill.svg | 3 + gawa/static/bsi1/telephone-forward.svg | 3 + gawa/static/bsi1/telephone-inbound-fill.svg | 3 + gawa/static/bsi1/telephone-inbound.svg | 3 + gawa/static/bsi1/telephone-minus-fill.svg | 3 + gawa/static/bsi1/telephone-minus.svg | 4 + gawa/static/bsi1/telephone-outbound-fill.svg | 3 + gawa/static/bsi1/telephone-outbound.svg | 3 + gawa/static/bsi1/telephone-plus-fill.svg | 3 + gawa/static/bsi1/telephone-plus.svg | 4 + gawa/static/bsi1/telephone-x-fill.svg | 3 + gawa/static/bsi1/telephone-x.svg | 4 + gawa/static/bsi1/telephone.svg | 3 + gawa/static/bsi1/tencent-qq.svg | 4 + gawa/static/bsi1/terminal-dash.svg | 4 + gawa/static/bsi1/terminal-fill.svg | 3 + gawa/static/bsi1/terminal-plus.svg | 4 + gawa/static/bsi1/terminal-split.svg | 4 + gawa/static/bsi1/terminal-x.svg | 4 + gawa/static/bsi1/terminal.svg | 4 + gawa/static/bsi1/text-center.svg | 3 + gawa/static/bsi1/text-indent-left.svg | 3 + gawa/static/bsi1/text-indent-right.svg | 3 + gawa/static/bsi1/text-left.svg | 3 + gawa/static/bsi1/text-paragraph.svg | 3 + gawa/static/bsi1/text-right.svg | 3 + gawa/static/bsi1/text-wrap.svg | 3 + gawa/static/bsi1/textarea-resize.svg | 3 + gawa/static/bsi1/textarea-t.svg | 4 + gawa/static/bsi1/textarea.svg | 3 + gawa/static/bsi1/thermometer-half.svg | 4 + gawa/static/bsi1/thermometer-high.svg | 4 + gawa/static/bsi1/thermometer-low.svg | 4 + gawa/static/bsi1/thermometer-snow.svg | 4 + gawa/static/bsi1/thermometer-sun.svg | 4 + gawa/static/bsi1/thermometer.svg | 4 + gawa/static/bsi1/three-dots-vertical.svg | 3 + gawa/static/bsi1/three-dots.svg | 3 + gawa/static/bsi1/thunderbolt-fill.svg | 3 + gawa/static/bsi1/thunderbolt.svg | 4 + gawa/static/bsi1/ticket-detailed-fill.svg | 3 + gawa/static/bsi1/ticket-detailed.svg | 4 + gawa/static/bsi1/ticket-fill.svg | 3 + gawa/static/bsi1/ticket-perforated-fill.svg | 3 + gawa/static/bsi1/ticket-perforated.svg | 4 + gawa/static/bsi1/ticket.svg | 3 + gawa/static/bsi1/tiktok.svg | 3 + gawa/static/bsi1/toggle-off.svg | 3 + gawa/static/bsi1/toggle-on.svg | 3 + gawa/static/bsi1/toggle2-off.svg | 4 + gawa/static/bsi1/toggle2-on.svg | 4 + gawa/static/bsi1/toggles.svg | 3 + gawa/static/bsi1/toggles2.svg | 5 + gawa/static/bsi1/tools.svg | 3 + gawa/static/bsi1/tornado.svg | 3 + gawa/static/bsi1/train-freight-front-fill.svg | 3 + gawa/static/bsi1/train-freight-front.svg | 3 + gawa/static/bsi1/train-front-fill.svg | 3 + gawa/static/bsi1/train-front.svg | 3 + .../bsi1/train-lightrail-front-fill.svg | 3 + gawa/static/bsi1/train-lightrail-front.svg | 3 + gawa/static/bsi1/translate.svg | 4 + gawa/static/bsi1/trash-fill.svg | 3 + gawa/static/bsi1/trash.svg | 4 + gawa/static/bsi1/trash2-fill.svg | 3 + gawa/static/bsi1/trash2.svg | 3 + gawa/static/bsi1/trash3-fill.svg | 3 + gawa/static/bsi1/trash3.svg | 3 + gawa/static/bsi1/tree-fill.svg | 3 + gawa/static/bsi1/tree.svg | 3 + gawa/static/bsi1/trello.svg | 3 + gawa/static/bsi1/triangle-fill.svg | 3 + gawa/static/bsi1/triangle-half.svg | 3 + gawa/static/bsi1/triangle.svg | 3 + gawa/static/bsi1/trophy-fill.svg | 3 + gawa/static/bsi1/trophy.svg | 3 + gawa/static/bsi1/tropical-storm.svg | 4 + gawa/static/bsi1/truck-flatbed.svg | 3 + gawa/static/bsi1/truck-front-fill.svg | 3 + gawa/static/bsi1/truck-front.svg | 4 + gawa/static/bsi1/truck.svg | 3 + gawa/static/bsi1/tsunami.svg | 3 + gawa/static/bsi1/tv-fill.svg | 3 + gawa/static/bsi1/tv.svg | 3 + gawa/static/bsi1/twitch.svg | 4 + gawa/static/bsi1/twitter.svg | 3 + gawa/static/bsi1/type-bold.svg | 3 + gawa/static/bsi1/type-h1.svg | 3 + gawa/static/bsi1/type-h2.svg | 3 + gawa/static/bsi1/type-h3.svg | 3 + gawa/static/bsi1/type-italic.svg | 3 + gawa/static/bsi1/type-strikethrough.svg | 3 + gawa/static/bsi1/type-underline.svg | 3 + gawa/static/bsi1/type.svg | 3 + gawa/static/bsi1/ubuntu.svg | 3 + gawa/static/bsi1/ui-checks-grid.svg | 3 + gawa/static/bsi1/ui-checks.svg | 3 + gawa/static/bsi1/ui-radios-grid.svg | 3 + gawa/static/bsi1/ui-radios.svg | 3 + gawa/static/bsi1/umbrella-fill.svg | 3 + gawa/static/bsi1/umbrella.svg | 3 + gawa/static/bsi1/unindent.svg | 4 + gawa/static/bsi1/union.svg | 3 + gawa/static/bsi1/unity.svg | 3 + gawa/static/bsi1/universal-access-circle.svg | 4 + gawa/static/bsi1/universal-access.svg | 3 + gawa/static/bsi1/unlock-fill.svg | 3 + gawa/static/bsi1/unlock.svg | 3 + gawa/static/bsi1/upc-scan.svg | 3 + gawa/static/bsi1/upc.svg | 3 + gawa/static/bsi1/upload.svg | 4 + gawa/static/bsi1/usb-c-fill.svg | 3 + gawa/static/bsi1/usb-c.svg | 4 + gawa/static/bsi1/usb-drive-fill.svg | 3 + gawa/static/bsi1/usb-drive.svg | 3 + gawa/static/bsi1/usb-fill.svg | 3 + gawa/static/bsi1/usb-micro-fill.svg | 3 + gawa/static/bsi1/usb-micro.svg | 4 + gawa/static/bsi1/usb-mini-fill.svg | 3 + gawa/static/bsi1/usb-mini.svg | 4 + gawa/static/bsi1/usb-plug-fill.svg | 3 + gawa/static/bsi1/usb-plug.svg | 3 + gawa/static/bsi1/usb-symbol.svg | 3 + gawa/static/bsi1/usb.svg | 4 + gawa/static/bsi1/valentine.svg | 4 + gawa/static/bsi1/valentine2.svg | 4 + gawa/static/bsi1/vector-pen.svg | 4 + gawa/static/bsi1/view-list.svg | 3 + gawa/static/bsi1/view-stacked.svg | 3 + gawa/static/bsi1/vimeo.svg | 3 + gawa/static/bsi1/vinyl-fill.svg | 4 + gawa/static/bsi1/vinyl.svg | 5 + gawa/static/bsi1/virus.svg | 3 + gawa/static/bsi1/virus2.svg | 3 + gawa/static/bsi1/voicemail.svg | 3 + gawa/static/bsi1/volume-down-fill.svg | 3 + gawa/static/bsi1/volume-down.svg | 3 + gawa/static/bsi1/volume-mute-fill.svg | 3 + gawa/static/bsi1/volume-mute.svg | 3 + gawa/static/bsi1/volume-off-fill.svg | 3 + gawa/static/bsi1/volume-off.svg | 3 + gawa/static/bsi1/volume-up-fill.svg | 5 + gawa/static/bsi1/volume-up.svg | 5 + gawa/static/bsi1/vr.svg | 3 + gawa/static/bsi1/wallet-fill.svg | 4 + gawa/static/bsi1/wallet.svg | 3 + gawa/static/bsi1/wallet2.svg | 3 + gawa/static/bsi1/watch.svg | 4 + gawa/static/bsi1/water.svg | 3 + gawa/static/bsi1/webcam-fill.svg | 4 + gawa/static/bsi1/webcam.svg | 4 + gawa/static/bsi1/wechat.svg | 4 + gawa/static/bsi1/whatsapp.svg | 3 + gawa/static/bsi1/wifi-1.svg | 3 + gawa/static/bsi1/wifi-2.svg | 3 + gawa/static/bsi1/wifi-off.svg | 3 + gawa/static/bsi1/wifi.svg | 4 + gawa/static/bsi1/wikipedia.svg | 3 + gawa/static/bsi1/wind.svg | 3 + gawa/static/bsi1/window-dash.svg | 5 + gawa/static/bsi1/window-desktop.svg | 4 + gawa/static/bsi1/window-dock.svg | 4 + gawa/static/bsi1/window-fullscreen.svg | 4 + gawa/static/bsi1/window-plus.svg | 5 + gawa/static/bsi1/window-sidebar.svg | 4 + gawa/static/bsi1/window-split.svg | 4 + gawa/static/bsi1/window-stack.svg | 4 + gawa/static/bsi1/window-x.svg | 5 + gawa/static/bsi1/window.svg | 4 + gawa/static/bsi1/windows.svg | 3 + gawa/static/bsi1/wordpress.svg | 5 + .../bsi1/wrench-adjustable-circle-fill.svg | 4 + gawa/static/bsi1/wrench-adjustable-circle.svg | 4 + gawa/static/bsi1/wrench-adjustable.svg | 4 + gawa/static/bsi1/wrench.svg | 3 + gawa/static/bsi1/x-circle-fill.svg | 3 + gawa/static/bsi1/x-circle.svg | 4 + gawa/static/bsi1/x-diamond-fill.svg | 3 + gawa/static/bsi1/x-diamond.svg | 3 + gawa/static/bsi1/x-lg.svg | 3 + gawa/static/bsi1/x-octagon-fill.svg | 3 + gawa/static/bsi1/x-octagon.svg | 4 + gawa/static/bsi1/x-square-fill.svg | 3 + gawa/static/bsi1/x-square.svg | 4 + gawa/static/bsi1/x.svg | 3 + gawa/static/bsi1/xbox.svg | 3 + gawa/static/bsi1/yelp.svg | 3 + gawa/static/bsi1/yin-yang.svg | 4 + gawa/static/bsi1/youtube.svg | 3 + gawa/static/bsi1/zoom-in.svg | 5 + gawa/static/bsi1/zoom-out.svg | 5 + gawa/static/codehighlight.css | 85 + gawa/static/custom.css | 20 + gawa/static/custom.js | 27 + 2805 files changed, 201954 insertions(+), 1 deletion(-) create mode 100644 gawa/static/admin/css/autocomplete.css create mode 100644 gawa/static/admin/css/base.css create mode 100644 gawa/static/admin/css/changelists.css create mode 100644 gawa/static/admin/css/dark_mode.css create mode 100644 gawa/static/admin/css/dashboard.css create mode 100644 gawa/static/admin/css/fonts.css create mode 100644 gawa/static/admin/css/forms.css create mode 100644 gawa/static/admin/css/login.css create mode 100644 gawa/static/admin/css/nav_sidebar.css create mode 100644 gawa/static/admin/css/responsive.css create mode 100644 gawa/static/admin/css/responsive_rtl.css create mode 100644 gawa/static/admin/css/rtl.css create mode 100644 gawa/static/admin/css/vendor/select2/LICENSE-SELECT2.md create mode 100644 gawa/static/admin/css/vendor/select2/select2.css create mode 100644 gawa/static/admin/css/vendor/select2/select2.min.css create mode 100644 gawa/static/admin/css/widgets.css create mode 100644 gawa/static/admin/fonts/LICENSE.txt create mode 100644 gawa/static/admin/fonts/README.txt create mode 100644 gawa/static/admin/fonts/Roboto-Bold-webfont.woff create mode 100644 gawa/static/admin/fonts/Roboto-Light-webfont.woff create mode 100644 gawa/static/admin/fonts/Roboto-Regular-webfont.woff create mode 100644 gawa/static/admin/img/LICENSE create mode 100644 gawa/static/admin/img/README.txt create mode 100644 gawa/static/admin/img/calendar-icons.svg create mode 100644 gawa/static/admin/img/gis/move_vertex_off.svg create mode 100644 gawa/static/admin/img/gis/move_vertex_on.svg create mode 100644 gawa/static/admin/img/icon-addlink.svg create mode 100644 gawa/static/admin/img/icon-alert.svg create mode 100644 gawa/static/admin/img/icon-calendar.svg create mode 100644 gawa/static/admin/img/icon-changelink.svg create mode 100644 gawa/static/admin/img/icon-clock.svg create mode 100644 gawa/static/admin/img/icon-deletelink.svg create mode 100644 gawa/static/admin/img/icon-no.svg create mode 100644 gawa/static/admin/img/icon-unknown-alt.svg create mode 100644 gawa/static/admin/img/icon-unknown.svg create mode 100644 gawa/static/admin/img/icon-viewlink.svg create mode 100644 gawa/static/admin/img/icon-yes.svg create mode 100644 gawa/static/admin/img/inline-delete.svg create mode 100644 gawa/static/admin/img/search.svg create mode 100644 gawa/static/admin/img/selector-icons.svg create mode 100644 gawa/static/admin/img/sorting-icons.svg create mode 100644 gawa/static/admin/img/tooltag-add.svg create mode 100644 gawa/static/admin/img/tooltag-arrowright.svg create mode 100644 gawa/static/admin/js/SelectBox.js create mode 100644 gawa/static/admin/js/SelectFilter2.js create mode 100644 gawa/static/admin/js/actions.js create mode 100644 gawa/static/admin/js/admin/DateTimeShortcuts.js create mode 100644 gawa/static/admin/js/admin/RelatedObjectLookups.js create mode 100644 gawa/static/admin/js/autocomplete.js create mode 100644 gawa/static/admin/js/calendar.js create mode 100644 gawa/static/admin/js/cancel.js create mode 100644 gawa/static/admin/js/change_form.js create mode 100644 gawa/static/admin/js/collapse.js create mode 100644 gawa/static/admin/js/core.js create mode 100644 gawa/static/admin/js/filters.js create mode 100644 gawa/static/admin/js/inlines.js create mode 100644 gawa/static/admin/js/jquery.init.js create mode 100644 gawa/static/admin/js/nav_sidebar.js create mode 100644 gawa/static/admin/js/popup_response.js create mode 100644 gawa/static/admin/js/prepopulate.js create mode 100644 gawa/static/admin/js/prepopulate_init.js create mode 100644 gawa/static/admin/js/theme.js create mode 100644 gawa/static/admin/js/urlify.js create mode 100644 gawa/static/admin/js/vendor/jquery/LICENSE.txt create mode 100644 gawa/static/admin/js/vendor/jquery/jquery.js create mode 100644 gawa/static/admin/js/vendor/jquery/jquery.min.js create mode 100644 gawa/static/admin/js/vendor/select2/LICENSE.md create mode 100644 gawa/static/admin/js/vendor/select2/i18n/af.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/ar.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/az.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/bg.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/bn.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/bs.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/ca.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/cs.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/da.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/de.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/dsb.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/el.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/en.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/es.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/et.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/eu.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/fa.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/fi.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/fr.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/gl.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/he.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/hi.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/hr.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/hsb.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/hu.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/hy.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/id.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/is.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/it.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/ja.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/ka.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/km.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/ko.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/lt.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/lv.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/mk.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/ms.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/nb.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/ne.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/nl.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/pl.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/ps.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/pt-BR.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/pt.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/ro.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/ru.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/sk.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/sl.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/sq.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/sr-Cyrl.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/sr.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/sv.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/th.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/tk.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/tr.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/uk.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/vi.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/zh-CN.js create mode 100644 gawa/static/admin/js/vendor/select2/i18n/zh-TW.js create mode 100644 gawa/static/admin/js/vendor/select2/select2.full.js create mode 100644 gawa/static/admin/js/vendor/select2/select2.full.min.js create mode 100644 gawa/static/admin/js/vendor/xregexp/LICENSE.txt create mode 100644 gawa/static/admin/js/vendor/xregexp/xregexp.js create mode 100644 gawa/static/admin/js/vendor/xregexp/xregexp.min.js create mode 100644 gawa/static/bs5/CODE_OF_CONDUCT.md create mode 100644 gawa/static/bs5/LICENSE create mode 100644 gawa/static/bs5/README.md create mode 100644 gawa/static/bs5/SECURITY.md create mode 100644 gawa/static/bs5/build/banner.js create mode 100644 gawa/static/bs5/build/build-plugins.js create mode 100644 gawa/static/bs5/build/change-version.js create mode 100644 gawa/static/bs5/build/generate-sri.js create mode 100644 gawa/static/bs5/build/postcss.config.js create mode 100644 gawa/static/bs5/build/rollup.config.js create mode 100644 gawa/static/bs5/build/vnu-jar.js create mode 100644 gawa/static/bs5/build/zip-examples.js create mode 100644 gawa/static/bs5/composer.json create mode 100644 gawa/static/bs5/dist/css/bootstrap-grid.css create mode 100644 gawa/static/bs5/dist/css/bootstrap-grid.css.map create mode 100644 gawa/static/bs5/dist/css/bootstrap-grid.min.css create mode 100644 gawa/static/bs5/dist/css/bootstrap-grid.min.css.map create mode 100644 gawa/static/bs5/dist/css/bootstrap-grid.rtl.css create mode 100644 gawa/static/bs5/dist/css/bootstrap-grid.rtl.css.map create mode 100644 gawa/static/bs5/dist/css/bootstrap-grid.rtl.min.css create mode 100644 gawa/static/bs5/dist/css/bootstrap-grid.rtl.min.css.map create mode 100644 gawa/static/bs5/dist/css/bootstrap-reboot.css create mode 100644 gawa/static/bs5/dist/css/bootstrap-reboot.css.map create mode 100644 gawa/static/bs5/dist/css/bootstrap-reboot.min.css create mode 100644 gawa/static/bs5/dist/css/bootstrap-reboot.min.css.map create mode 100644 gawa/static/bs5/dist/css/bootstrap-reboot.rtl.css create mode 100644 gawa/static/bs5/dist/css/bootstrap-reboot.rtl.css.map create mode 100644 gawa/static/bs5/dist/css/bootstrap-reboot.rtl.min.css create mode 100644 gawa/static/bs5/dist/css/bootstrap-reboot.rtl.min.css.map create mode 100644 gawa/static/bs5/dist/css/bootstrap-utilities.css create mode 100644 gawa/static/bs5/dist/css/bootstrap-utilities.css.map create mode 100644 gawa/static/bs5/dist/css/bootstrap-utilities.min.css create mode 100644 gawa/static/bs5/dist/css/bootstrap-utilities.min.css.map create mode 100644 gawa/static/bs5/dist/css/bootstrap-utilities.rtl.css create mode 100644 gawa/static/bs5/dist/css/bootstrap-utilities.rtl.css.map create mode 100644 gawa/static/bs5/dist/css/bootstrap-utilities.rtl.min.css create mode 100644 gawa/static/bs5/dist/css/bootstrap-utilities.rtl.min.css.map create mode 100644 gawa/static/bs5/dist/css/bootstrap.css create mode 100644 gawa/static/bs5/dist/css/bootstrap.css.map create mode 100644 gawa/static/bs5/dist/css/bootstrap.min.css create mode 100644 gawa/static/bs5/dist/css/bootstrap.min.css.map create mode 100644 gawa/static/bs5/dist/css/bootstrap.rtl.css create mode 100644 gawa/static/bs5/dist/css/bootstrap.rtl.css.map create mode 100644 gawa/static/bs5/dist/css/bootstrap.rtl.min.css create mode 100644 gawa/static/bs5/dist/css/bootstrap.rtl.min.css.map create mode 100644 gawa/static/bs5/dist/js/bootstrap.bundle.js create mode 100644 gawa/static/bs5/dist/js/bootstrap.bundle.js.map create mode 100644 gawa/static/bs5/dist/js/bootstrap.bundle.min.js create mode 100644 gawa/static/bs5/dist/js/bootstrap.bundle.min.js.map create mode 100644 gawa/static/bs5/dist/js/bootstrap.esm.js create mode 100644 gawa/static/bs5/dist/js/bootstrap.esm.js.map create mode 100644 gawa/static/bs5/dist/js/bootstrap.esm.min.js create mode 100644 gawa/static/bs5/dist/js/bootstrap.esm.min.js.map create mode 100644 gawa/static/bs5/dist/js/bootstrap.js create mode 100644 gawa/static/bs5/dist/js/bootstrap.js.map create mode 100644 gawa/static/bs5/dist/js/bootstrap.min.js create mode 100644 gawa/static/bs5/dist/js/bootstrap.min.js.map create mode 100644 gawa/static/bs5/hugo.yml create mode 100644 gawa/static/bs5/js/dist/alert.js create mode 100644 gawa/static/bs5/js/dist/alert.js.map create mode 100644 gawa/static/bs5/js/dist/base-component.js create mode 100644 gawa/static/bs5/js/dist/base-component.js.map create mode 100644 gawa/static/bs5/js/dist/button.js create mode 100644 gawa/static/bs5/js/dist/button.js.map create mode 100644 gawa/static/bs5/js/dist/carousel.js create mode 100644 gawa/static/bs5/js/dist/carousel.js.map create mode 100644 gawa/static/bs5/js/dist/collapse.js create mode 100644 gawa/static/bs5/js/dist/collapse.js.map create mode 100644 gawa/static/bs5/js/dist/dom/data.js create mode 100644 gawa/static/bs5/js/dist/dom/data.js.map create mode 100644 gawa/static/bs5/js/dist/dom/event-handler.js create mode 100644 gawa/static/bs5/js/dist/dom/event-handler.js.map create mode 100644 gawa/static/bs5/js/dist/dom/manipulator.js create mode 100644 gawa/static/bs5/js/dist/dom/manipulator.js.map create mode 100644 gawa/static/bs5/js/dist/dom/selector-engine.js create mode 100644 gawa/static/bs5/js/dist/dom/selector-engine.js.map create mode 100644 gawa/static/bs5/js/dist/dropdown.js create mode 100644 gawa/static/bs5/js/dist/dropdown.js.map create mode 100644 gawa/static/bs5/js/dist/modal.js create mode 100644 gawa/static/bs5/js/dist/modal.js.map create mode 100644 gawa/static/bs5/js/dist/offcanvas.js create mode 100644 gawa/static/bs5/js/dist/offcanvas.js.map create mode 100644 gawa/static/bs5/js/dist/popover.js create mode 100644 gawa/static/bs5/js/dist/popover.js.map create mode 100644 gawa/static/bs5/js/dist/scrollspy.js create mode 100644 gawa/static/bs5/js/dist/scrollspy.js.map create mode 100644 gawa/static/bs5/js/dist/tab.js create mode 100644 gawa/static/bs5/js/dist/tab.js.map create mode 100644 gawa/static/bs5/js/dist/toast.js create mode 100644 gawa/static/bs5/js/dist/toast.js.map create mode 100644 gawa/static/bs5/js/dist/tooltip.js create mode 100644 gawa/static/bs5/js/dist/tooltip.js.map create mode 100644 gawa/static/bs5/js/dist/util/backdrop.js create mode 100644 gawa/static/bs5/js/dist/util/backdrop.js.map create mode 100644 gawa/static/bs5/js/dist/util/component-functions.js create mode 100644 gawa/static/bs5/js/dist/util/component-functions.js.map create mode 100644 gawa/static/bs5/js/dist/util/config.js create mode 100644 gawa/static/bs5/js/dist/util/config.js.map create mode 100644 gawa/static/bs5/js/dist/util/focustrap.js create mode 100644 gawa/static/bs5/js/dist/util/focustrap.js.map create mode 100644 gawa/static/bs5/js/dist/util/index.js create mode 100644 gawa/static/bs5/js/dist/util/index.js.map create mode 100644 gawa/static/bs5/js/dist/util/sanitizer.js create mode 100644 gawa/static/bs5/js/dist/util/sanitizer.js.map create mode 100644 gawa/static/bs5/js/dist/util/scrollbar.js create mode 100644 gawa/static/bs5/js/dist/util/scrollbar.js.map create mode 100644 gawa/static/bs5/js/dist/util/swipe.js create mode 100644 gawa/static/bs5/js/dist/util/swipe.js.map create mode 100644 gawa/static/bs5/js/dist/util/template-factory.js create mode 100644 gawa/static/bs5/js/dist/util/template-factory.js.map create mode 100644 gawa/static/bs5/js/index.esm.js create mode 100644 gawa/static/bs5/js/index.umd.js create mode 100644 gawa/static/bs5/js/src/alert.js create mode 100644 gawa/static/bs5/js/src/base-component.js create mode 100644 gawa/static/bs5/js/src/button.js create mode 100644 gawa/static/bs5/js/src/carousel.js create mode 100644 gawa/static/bs5/js/src/collapse.js create mode 100644 gawa/static/bs5/js/src/dom/data.js create mode 100644 gawa/static/bs5/js/src/dom/event-handler.js create mode 100644 gawa/static/bs5/js/src/dom/manipulator.js create mode 100644 gawa/static/bs5/js/src/dom/selector-engine.js create mode 100644 gawa/static/bs5/js/src/dropdown.js create mode 100644 gawa/static/bs5/js/src/modal.js create mode 100644 gawa/static/bs5/js/src/offcanvas.js create mode 100644 gawa/static/bs5/js/src/popover.js create mode 100644 gawa/static/bs5/js/src/scrollspy.js create mode 100644 gawa/static/bs5/js/src/tab.js create mode 100644 gawa/static/bs5/js/src/toast.js create mode 100644 gawa/static/bs5/js/src/tooltip.js create mode 100644 gawa/static/bs5/js/src/util/backdrop.js create mode 100644 gawa/static/bs5/js/src/util/component-functions.js create mode 100644 gawa/static/bs5/js/src/util/config.js create mode 100644 gawa/static/bs5/js/src/util/focustrap.js create mode 100644 gawa/static/bs5/js/src/util/index.js create mode 100644 gawa/static/bs5/js/src/util/sanitizer.js create mode 100644 gawa/static/bs5/js/src/util/scrollbar.js create mode 100644 gawa/static/bs5/js/src/util/swipe.js create mode 100644 gawa/static/bs5/js/src/util/template-factory.js create mode 100644 gawa/static/bs5/js/tests/README.md create mode 100644 gawa/static/bs5/js/tests/browsers.js create mode 100644 gawa/static/bs5/js/tests/helpers/fixture.js create mode 100644 gawa/static/bs5/js/tests/integration/bundle-modularity.js create mode 100644 gawa/static/bs5/js/tests/integration/bundle.js create mode 100644 gawa/static/bs5/js/tests/integration/index.html create mode 100644 gawa/static/bs5/js/tests/integration/rollup.bundle-modularity.js create mode 100644 gawa/static/bs5/js/tests/integration/rollup.bundle.js create mode 100644 gawa/static/bs5/js/tests/karma.conf.js create mode 100644 gawa/static/bs5/js/tests/unit/alert.spec.js create mode 100644 gawa/static/bs5/js/tests/unit/base-component.spec.js create mode 100644 gawa/static/bs5/js/tests/unit/button.spec.js create mode 100644 gawa/static/bs5/js/tests/unit/carousel.spec.js create mode 100644 gawa/static/bs5/js/tests/unit/collapse.spec.js create mode 100644 gawa/static/bs5/js/tests/unit/dom/data.spec.js create mode 100644 gawa/static/bs5/js/tests/unit/dom/event-handler.spec.js create mode 100644 gawa/static/bs5/js/tests/unit/dom/manipulator.spec.js create mode 100644 gawa/static/bs5/js/tests/unit/dom/selector-engine.spec.js create mode 100644 gawa/static/bs5/js/tests/unit/dropdown.spec.js create mode 100644 gawa/static/bs5/js/tests/unit/jquery.spec.js create mode 100644 gawa/static/bs5/js/tests/unit/modal.spec.js create mode 100644 gawa/static/bs5/js/tests/unit/offcanvas.spec.js create mode 100644 gawa/static/bs5/js/tests/unit/popover.spec.js create mode 100644 gawa/static/bs5/js/tests/unit/scrollspy.spec.js create mode 100644 gawa/static/bs5/js/tests/unit/tab.spec.js create mode 100644 gawa/static/bs5/js/tests/unit/toast.spec.js create mode 100644 gawa/static/bs5/js/tests/unit/tooltip.spec.js create mode 100644 gawa/static/bs5/js/tests/unit/util/backdrop.spec.js create mode 100644 gawa/static/bs5/js/tests/unit/util/component-functions.spec.js create mode 100644 gawa/static/bs5/js/tests/unit/util/config.spec.js create mode 100644 gawa/static/bs5/js/tests/unit/util/focustrap.spec.js create mode 100644 gawa/static/bs5/js/tests/unit/util/index.spec.js create mode 100644 gawa/static/bs5/js/tests/unit/util/sanitizer.spec.js create mode 100644 gawa/static/bs5/js/tests/unit/util/scrollbar.spec.js create mode 100644 gawa/static/bs5/js/tests/unit/util/swipe.spec.js create mode 100644 gawa/static/bs5/js/tests/unit/util/template-factory.spec.js create mode 100644 gawa/static/bs5/js/tests/visual/alert.html create mode 100644 gawa/static/bs5/js/tests/visual/button.html create mode 100644 gawa/static/bs5/js/tests/visual/carousel.html create mode 100644 gawa/static/bs5/js/tests/visual/collapse.html create mode 100644 gawa/static/bs5/js/tests/visual/dropdown.html create mode 100644 gawa/static/bs5/js/tests/visual/input.html create mode 100644 gawa/static/bs5/js/tests/visual/modal.html create mode 100644 gawa/static/bs5/js/tests/visual/popover.html create mode 100644 gawa/static/bs5/js/tests/visual/scrollspy.html create mode 100644 gawa/static/bs5/js/tests/visual/tab.html create mode 100644 gawa/static/bs5/js/tests/visual/toast.html create mode 100644 gawa/static/bs5/js/tests/visual/tooltip.html create mode 100644 gawa/static/bs5/nuget/MyGet.ps1 create mode 100644 gawa/static/bs5/nuget/bootstrap.nuspec create mode 100644 gawa/static/bs5/nuget/bootstrap.png create mode 100644 gawa/static/bs5/nuget/bootstrap.sass.nuspec create mode 100644 gawa/static/bs5/package-lock.json create mode 100644 gawa/static/bs5/package.js create mode 100644 gawa/static/bs5/package.json create mode 100644 gawa/static/bs5/scss/_accordion.scss create mode 100644 gawa/static/bs5/scss/_alert.scss create mode 100644 gawa/static/bs5/scss/_badge.scss create mode 100644 gawa/static/bs5/scss/_breadcrumb.scss create mode 100644 gawa/static/bs5/scss/_button-group.scss create mode 100644 gawa/static/bs5/scss/_buttons.scss create mode 100644 gawa/static/bs5/scss/_card.scss create mode 100644 gawa/static/bs5/scss/_carousel.scss create mode 100644 gawa/static/bs5/scss/_close.scss create mode 100644 gawa/static/bs5/scss/_containers.scss create mode 100644 gawa/static/bs5/scss/_dropdown.scss create mode 100644 gawa/static/bs5/scss/_forms.scss create mode 100644 gawa/static/bs5/scss/_functions.scss create mode 100644 gawa/static/bs5/scss/_grid.scss create mode 100644 gawa/static/bs5/scss/_helpers.scss create mode 100644 gawa/static/bs5/scss/_images.scss create mode 100644 gawa/static/bs5/scss/_list-group.scss create mode 100644 gawa/static/bs5/scss/_maps.scss create mode 100644 gawa/static/bs5/scss/_mixins.scss create mode 100644 gawa/static/bs5/scss/_modal.scss create mode 100644 gawa/static/bs5/scss/_nav.scss create mode 100644 gawa/static/bs5/scss/_navbar.scss create mode 100644 gawa/static/bs5/scss/_offcanvas.scss create mode 100644 gawa/static/bs5/scss/_pagination.scss create mode 100644 gawa/static/bs5/scss/_placeholders.scss create mode 100644 gawa/static/bs5/scss/_popover.scss create mode 100644 gawa/static/bs5/scss/_progress.scss create mode 100644 gawa/static/bs5/scss/_reboot.scss create mode 100644 gawa/static/bs5/scss/_root.scss create mode 100644 gawa/static/bs5/scss/_spinners.scss create mode 100644 gawa/static/bs5/scss/_tables.scss create mode 100644 gawa/static/bs5/scss/_toasts.scss create mode 100644 gawa/static/bs5/scss/_tooltip.scss create mode 100644 gawa/static/bs5/scss/_transitions.scss create mode 100644 gawa/static/bs5/scss/_type.scss create mode 100644 gawa/static/bs5/scss/_utilities.scss create mode 100644 gawa/static/bs5/scss/_variables-dark.scss create mode 100644 gawa/static/bs5/scss/_variables.scss create mode 100644 gawa/static/bs5/scss/bootstrap-grid.scss create mode 100644 gawa/static/bs5/scss/bootstrap-reboot.scss create mode 100644 gawa/static/bs5/scss/bootstrap-utilities.scss create mode 100644 gawa/static/bs5/scss/bootstrap.scss create mode 100644 gawa/static/bs5/scss/forms/_floating-labels.scss create mode 100644 gawa/static/bs5/scss/forms/_form-check.scss create mode 100644 gawa/static/bs5/scss/forms/_form-control.scss create mode 100644 gawa/static/bs5/scss/forms/_form-range.scss create mode 100644 gawa/static/bs5/scss/forms/_form-select.scss create mode 100644 gawa/static/bs5/scss/forms/_form-text.scss create mode 100644 gawa/static/bs5/scss/forms/_input-group.scss create mode 100644 gawa/static/bs5/scss/forms/_labels.scss create mode 100644 gawa/static/bs5/scss/forms/_validation.scss create mode 100644 gawa/static/bs5/scss/helpers/_clearfix.scss create mode 100644 gawa/static/bs5/scss/helpers/_color-bg.scss create mode 100644 gawa/static/bs5/scss/helpers/_colored-links.scss create mode 100644 gawa/static/bs5/scss/helpers/_focus-ring.scss create mode 100644 gawa/static/bs5/scss/helpers/_icon-link.scss create mode 100644 gawa/static/bs5/scss/helpers/_position.scss create mode 100644 gawa/static/bs5/scss/helpers/_ratio.scss create mode 100644 gawa/static/bs5/scss/helpers/_stacks.scss create mode 100644 gawa/static/bs5/scss/helpers/_stretched-link.scss create mode 100644 gawa/static/bs5/scss/helpers/_text-truncation.scss create mode 100644 gawa/static/bs5/scss/helpers/_visually-hidden.scss create mode 100644 gawa/static/bs5/scss/helpers/_vr.scss create mode 100644 gawa/static/bs5/scss/mixins/_alert.scss create mode 100644 gawa/static/bs5/scss/mixins/_backdrop.scss create mode 100644 gawa/static/bs5/scss/mixins/_banner.scss create mode 100644 gawa/static/bs5/scss/mixins/_border-radius.scss create mode 100644 gawa/static/bs5/scss/mixins/_box-shadow.scss create mode 100644 gawa/static/bs5/scss/mixins/_breakpoints.scss create mode 100644 gawa/static/bs5/scss/mixins/_buttons.scss create mode 100644 gawa/static/bs5/scss/mixins/_caret.scss create mode 100644 gawa/static/bs5/scss/mixins/_clearfix.scss create mode 100644 gawa/static/bs5/scss/mixins/_color-mode.scss create mode 100644 gawa/static/bs5/scss/mixins/_color-scheme.scss create mode 100644 gawa/static/bs5/scss/mixins/_container.scss create mode 100644 gawa/static/bs5/scss/mixins/_deprecate.scss create mode 100644 gawa/static/bs5/scss/mixins/_forms.scss create mode 100644 gawa/static/bs5/scss/mixins/_gradients.scss create mode 100644 gawa/static/bs5/scss/mixins/_grid.scss create mode 100644 gawa/static/bs5/scss/mixins/_image.scss create mode 100644 gawa/static/bs5/scss/mixins/_list-group.scss create mode 100644 gawa/static/bs5/scss/mixins/_lists.scss create mode 100644 gawa/static/bs5/scss/mixins/_pagination.scss create mode 100644 gawa/static/bs5/scss/mixins/_reset-text.scss create mode 100644 gawa/static/bs5/scss/mixins/_resize.scss create mode 100644 gawa/static/bs5/scss/mixins/_table-variants.scss create mode 100644 gawa/static/bs5/scss/mixins/_text-truncate.scss create mode 100644 gawa/static/bs5/scss/mixins/_transition.scss create mode 100644 gawa/static/bs5/scss/mixins/_utilities.scss create mode 100644 gawa/static/bs5/scss/mixins/_visually-hidden.scss create mode 100644 gawa/static/bs5/scss/tests/jasmine.js create mode 100644 gawa/static/bs5/scss/tests/mixins/_color-modes.test.scss create mode 100644 gawa/static/bs5/scss/tests/mixins/_media-query-color-mode-full.test.scss create mode 100644 gawa/static/bs5/scss/tests/mixins/_utilities.test.scss create mode 100644 gawa/static/bs5/scss/tests/sass-true/register.js create mode 100644 gawa/static/bs5/scss/tests/sass-true/runner.js create mode 100644 gawa/static/bs5/scss/tests/utilities/_api.test.scss create mode 100644 gawa/static/bs5/scss/utilities/_api.scss create mode 100644 gawa/static/bs5/scss/vendor/_rfs.scss create mode 100644 gawa/static/bs5/site/assets/js/application.js create mode 100644 gawa/static/bs5/site/assets/js/code-examples.js create mode 100644 gawa/static/bs5/site/assets/js/search.js create mode 100644 gawa/static/bs5/site/assets/js/snippets.js create mode 100644 gawa/static/bs5/site/assets/js/vendor/clipboard.min.js create mode 100644 gawa/static/bs5/site/assets/scss/_ads.scss create mode 100644 gawa/static/bs5/site/assets/scss/_anchor.scss create mode 100644 gawa/static/bs5/site/assets/scss/_brand.scss create mode 100644 gawa/static/bs5/site/assets/scss/_buttons.scss create mode 100644 gawa/static/bs5/site/assets/scss/_callouts.scss create mode 100644 gawa/static/bs5/site/assets/scss/_clipboard-js.scss create mode 100644 gawa/static/bs5/site/assets/scss/_colors.scss create mode 100644 gawa/static/bs5/site/assets/scss/_component-examples.scss create mode 100644 gawa/static/bs5/site/assets/scss/_content.scss create mode 100644 gawa/static/bs5/site/assets/scss/_footer.scss create mode 100644 gawa/static/bs5/site/assets/scss/_layout.scss create mode 100644 gawa/static/bs5/site/assets/scss/_masthead.scss create mode 100644 gawa/static/bs5/site/assets/scss/_navbar.scss create mode 100644 gawa/static/bs5/site/assets/scss/_placeholder-img.scss create mode 100644 gawa/static/bs5/site/assets/scss/_scrolling.scss create mode 100644 gawa/static/bs5/site/assets/scss/_search.scss create mode 100644 gawa/static/bs5/site/assets/scss/_sidebar.scss create mode 100644 gawa/static/bs5/site/assets/scss/_skippy.scss create mode 100644 gawa/static/bs5/site/assets/scss/_syntax.scss create mode 100644 gawa/static/bs5/site/assets/scss/_toc.scss create mode 100644 gawa/static/bs5/site/assets/scss/_variables.scss create mode 100644 gawa/static/bs5/site/assets/scss/docs.scss create mode 100644 gawa/static/bs5/site/content/404.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/_index.html create mode 100644 gawa/static/bs5/site/content/docs/5.3/about/brand.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/about/license.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/about/overview.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/about/team.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/about/translations.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/components/accordion.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/components/alerts.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/components/badge.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/components/breadcrumb.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/components/button-group.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/components/buttons.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/components/card.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/components/carousel.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/components/close-button.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/components/collapse.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/components/dropdowns.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/components/list-group.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/components/modal.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/components/navbar.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/components/navs-tabs.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/components/offcanvas.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/components/pagination.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/components/placeholders.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/components/popovers.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/components/progress.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/components/scrollspy.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/components/spinners.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/components/toasts.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/components/tooltips.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/content/figures.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/content/images.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/content/reboot.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/content/tables.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/content/typography.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/customize/color-modes.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/customize/color.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/customize/components.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/customize/css-variables.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/customize/optimize.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/customize/options.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/customize/overview.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/customize/sass.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/docsref.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/_index.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/album-rtl/index.html create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/album/index.html create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/badges/badges.css create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/badges/index.html create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/blog-rtl/index.html create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/blog/blog.css create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/blog/blog.rtl.css create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/blog/index.html create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/breadcrumbs/breadcrumbs.css create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/breadcrumbs/index.html create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/buttons/index.html create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/carousel-rtl/index.html create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/carousel/carousel.css create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/carousel/carousel.rtl.css create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/carousel/index.html create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/cheatsheet-rtl/index.html create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/cheatsheet/cheatsheet.css create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/cheatsheet/cheatsheet.js create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/cheatsheet/cheatsheet.rtl.css create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/cheatsheet/index.html create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/checkout-rtl/index.html create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/checkout/checkout.css create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/checkout/checkout.js create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/checkout/index.html create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/cover/cover.css create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/cover/index.html create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/dashboard-rtl/dashboard.js create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/dashboard-rtl/index.html create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/dashboard/dashboard.css create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/dashboard/dashboard.js create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/dashboard/dashboard.rtl.css create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/dashboard/index.html create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/dropdowns/dropdowns.css create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/dropdowns/index.html create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/features/features.css create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/features/index.html create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/features/unsplash-photo-1.jpg create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/features/unsplash-photo-2.jpg create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/features/unsplash-photo-3.jpg create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/footers/index.html create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/grid/grid.css create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/grid/index.html create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/headers/headers.css create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/headers/index.html create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/heroes/bootstrap-docs.png create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/heroes/bootstrap-themes.png create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/heroes/heroes.css create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/heroes/index.html create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/jumbotron/index.html create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/jumbotrons/index.html create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/jumbotrons/jumbotrons.css create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/list-groups/index.html create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/list-groups/list-groups.css create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/masonry/index.html create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/modals/index.html create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/modals/modals.css create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/navbar-bottom/index.html create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/navbar-fixed/index.html create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/navbar-fixed/navbar-fixed.css create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/navbar-static/index.html create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/navbar-static/navbar-static.css create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/navbars-offcanvas/index.html create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/navbars-offcanvas/navbars-offcanvas.css create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/navbars/index.html create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/navbars/navbars.css create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/offcanvas-navbar/index.html create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/offcanvas-navbar/offcanvas-navbar.css create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/offcanvas-navbar/offcanvas-navbar.js create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/pricing/index.html create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/pricing/pricing.css create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/product/index.html create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/product/product.css create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/sidebars/index.html create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/sidebars/sidebars.css create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/sidebars/sidebars.js create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/sign-in/index.html create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/sign-in/sign-in.css create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/starter-template/index.html create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/sticky-footer-navbar/index.html create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/sticky-footer-navbar/sticky-footer-navbar.css create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/sticky-footer/index.html create mode 100644 gawa/static/bs5/site/content/docs/5.3/examples/sticky-footer/sticky-footer.css create mode 100644 gawa/static/bs5/site/content/docs/5.3/extend/approach.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/extend/icons.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/forms/checks-radios.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/forms/floating-labels.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/forms/form-control.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/forms/input-group.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/forms/layout.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/forms/overview.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/forms/range.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/forms/select.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/forms/validation.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/getting-started/accessibility.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/getting-started/best-practices.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/getting-started/browsers-devices.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/getting-started/contents.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/getting-started/contribute.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/getting-started/download.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/getting-started/introduction.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/getting-started/javascript.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/getting-started/parcel.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/getting-started/rfs.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/getting-started/rtl.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/getting-started/vite.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/getting-started/webpack.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/helpers/clearfix.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/helpers/color-background.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/helpers/colored-links.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/helpers/focus-ring.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/helpers/icon-link.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/helpers/position.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/helpers/ratio.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/helpers/stacks.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/helpers/stretched-link.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/helpers/text-truncation.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/helpers/vertical-rule.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/helpers/visually-hidden.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/layout/breakpoints.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/layout/columns.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/layout/containers.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/layout/css-grid.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/layout/grid.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/layout/gutters.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/layout/utilities.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/layout/z-index.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/migration.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/utilities/api.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/utilities/background.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/utilities/borders.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/utilities/colors.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/utilities/display.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/utilities/flex.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/utilities/float.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/utilities/interactions.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/utilities/link.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/utilities/object-fit.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/utilities/opacity.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/utilities/overflow.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/utilities/position.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/utilities/shadows.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/utilities/sizing.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/utilities/spacing.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/utilities/text.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/utilities/vertical-align.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/utilities/visibility.md create mode 100644 gawa/static/bs5/site/content/docs/5.3/utilities/z-index.md create mode 100644 gawa/static/bs5/site/content/docs/_index.html create mode 100644 gawa/static/bs5/site/content/docs/versions.md create mode 100644 gawa/static/bs5/site/data/breakpoints.yml create mode 100644 gawa/static/bs5/site/data/colors.yml create mode 100644 gawa/static/bs5/site/data/core-team.yml create mode 100644 gawa/static/bs5/site/data/docs-versions.yml create mode 100644 gawa/static/bs5/site/data/examples.yml create mode 100644 gawa/static/bs5/site/data/grays.yml create mode 100644 gawa/static/bs5/site/data/icons.yml create mode 100644 gawa/static/bs5/site/data/plugins.yml create mode 100644 gawa/static/bs5/site/data/sidebar.yml create mode 100644 gawa/static/bs5/site/data/theme-colors.yml create mode 100644 gawa/static/bs5/site/data/translations.yml create mode 100644 gawa/static/bs5/site/layouts/_default/404.html create mode 100644 gawa/static/bs5/site/layouts/_default/_markup/render-heading.html create mode 100644 gawa/static/bs5/site/layouts/_default/baseof.html create mode 100644 gawa/static/bs5/site/layouts/_default/docs.html create mode 100644 gawa/static/bs5/site/layouts/_default/examples.html create mode 100644 gawa/static/bs5/site/layouts/_default/home.html create mode 100644 gawa/static/bs5/site/layouts/_default/redirect.html create mode 100644 gawa/static/bs5/site/layouts/_default/single.html create mode 100644 gawa/static/bs5/site/layouts/alias.html create mode 100644 gawa/static/bs5/site/layouts/partials/ads.html create mode 100644 gawa/static/bs5/site/layouts/partials/analytics.html create mode 100644 gawa/static/bs5/site/layouts/partials/callouts/danger-async-methods.md create mode 100644 gawa/static/bs5/site/layouts/partials/callouts/info-mediaqueries-breakpoints.md create mode 100644 gawa/static/bs5/site/layouts/partials/callouts/info-npm-starter.md create mode 100644 gawa/static/bs5/site/layouts/partials/callouts/info-prefersreducedmotion.md create mode 100644 gawa/static/bs5/site/layouts/partials/callouts/info-sanitizer.md create mode 100644 gawa/static/bs5/site/layouts/partials/callouts/warning-color-assistive-technologies.md create mode 100644 gawa/static/bs5/site/layouts/partials/callouts/warning-data-bs-title-vs-title.md create mode 100644 gawa/static/bs5/site/layouts/partials/callouts/warning-input-support.md create mode 100644 gawa/static/bs5/site/layouts/partials/docs-navbar.html create mode 100644 gawa/static/bs5/site/layouts/partials/docs-sidebar.html create mode 100644 gawa/static/bs5/site/layouts/partials/docs-versions.html create mode 100644 gawa/static/bs5/site/layouts/partials/favicons.html create mode 100644 gawa/static/bs5/site/layouts/partials/footer.html create mode 100644 gawa/static/bs5/site/layouts/partials/guide-footer.md create mode 100644 gawa/static/bs5/site/layouts/partials/header.html create mode 100644 gawa/static/bs5/site/layouts/partials/home/components-utilities.html create mode 100644 gawa/static/bs5/site/layouts/partials/home/css-variables.html create mode 100644 gawa/static/bs5/site/layouts/partials/home/customize.html create mode 100644 gawa/static/bs5/site/layouts/partials/home/get-started.html create mode 100644 gawa/static/bs5/site/layouts/partials/home/icons.html create mode 100644 gawa/static/bs5/site/layouts/partials/home/masthead.html create mode 100644 gawa/static/bs5/site/layouts/partials/home/plugins.html create mode 100644 gawa/static/bs5/site/layouts/partials/home/themes.html create mode 100644 gawa/static/bs5/site/layouts/partials/icons.html create mode 100644 gawa/static/bs5/site/layouts/partials/icons/bootstrap-white-fill.svg create mode 100644 gawa/static/bs5/site/layouts/partials/icons/circle-square.svg create mode 100644 gawa/static/bs5/site/layouts/partials/icons/droplet-fill.svg create mode 100644 gawa/static/bs5/site/layouts/partials/icons/github.svg create mode 100644 gawa/static/bs5/site/layouts/partials/icons/hamburger.svg create mode 100644 gawa/static/bs5/site/layouts/partials/icons/opencollective.svg create mode 100644 gawa/static/bs5/site/layouts/partials/icons/twitter.svg create mode 100644 gawa/static/bs5/site/layouts/partials/js-data-attributes.md create mode 100644 gawa/static/bs5/site/layouts/partials/redirect.html create mode 100644 gawa/static/bs5/site/layouts/partials/scripts.html create mode 100644 gawa/static/bs5/site/layouts/partials/skippy.html create mode 100644 gawa/static/bs5/site/layouts/partials/social.html create mode 100644 gawa/static/bs5/site/layouts/partials/stylesheet.html create mode 100644 gawa/static/bs5/site/layouts/partials/table-content.html create mode 100644 gawa/static/bs5/site/layouts/robots.txt create mode 100644 gawa/static/bs5/site/layouts/shortcodes/added-in.html create mode 100644 gawa/static/bs5/site/layouts/shortcodes/bs-table.html create mode 100644 gawa/static/bs5/site/layouts/shortcodes/callout-deprecated-dark-variants.html create mode 100644 gawa/static/bs5/site/layouts/shortcodes/callout.html create mode 100644 gawa/static/bs5/site/layouts/shortcodes/deprecated-in.html create mode 100644 gawa/static/bs5/site/layouts/shortcodes/docsref.html create mode 100644 gawa/static/bs5/site/layouts/shortcodes/example.html create mode 100644 gawa/static/bs5/site/layouts/shortcodes/js-dismiss.html create mode 100644 gawa/static/bs5/site/layouts/shortcodes/js-docs.html create mode 100644 gawa/static/bs5/site/layouts/shortcodes/markdown.html create mode 100644 gawa/static/bs5/site/layouts/shortcodes/param.html create mode 100644 gawa/static/bs5/site/layouts/shortcodes/partial.html create mode 100644 gawa/static/bs5/site/layouts/shortcodes/placeholder.html create mode 100644 gawa/static/bs5/site/layouts/shortcodes/scss-docs.html create mode 100644 gawa/static/bs5/site/layouts/shortcodes/table.html create mode 100644 gawa/static/bs5/site/layouts/shortcodes/year.html create mode 100644 gawa/static/bs5/site/layouts/sitemap.xml create mode 100644 gawa/static/bs5/site/static/CNAME create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/brand/bootstrap-logo-black.svg create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/brand/bootstrap-logo-shadow.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/brand/bootstrap-logo-white.svg create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/brand/bootstrap-logo.svg create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/brand/bootstrap-social.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/bootstrap-icons.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/bootstrap-icons@2x.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/bootstrap-themes-collage.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/bootstrap-themes-collage@2x.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/bootstrap-themes.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/bootstrap-themes@2x.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/album-rtl.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/album-rtl@2x.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/album.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/album@2x.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/badges.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/badges@2x.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/blog-rtl.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/blog-rtl@2x.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/blog.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/blog@2x.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/breadcrumbs.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/breadcrumbs@2x.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/buttons.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/buttons@2x.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/carousel-rtl.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/carousel-rtl@2x.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/carousel.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/carousel@2x.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/cheatsheet-rtl.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/cheatsheet-rtl@2x.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/cheatsheet.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/cheatsheet@2x.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/checkout-rtl.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/checkout-rtl@2x.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/checkout.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/checkout@2x.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/cover.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/cover@2x.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/dashboard-rtl.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/dashboard-rtl@2x.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/dashboard.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/dashboard@2x.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/dropdowns.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/dropdowns@2x.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/features.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/features@2x.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/footers.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/footers@2x.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/grid.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/grid@2x.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/headers.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/headers@2x.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/heroes.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/heroes@2x.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/jumbotron.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/jumbotron@2x.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/jumbotrons.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/jumbotrons@2x.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/list-groups.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/list-groups@2x.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/masonry.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/masonry@2x.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/modals.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/modals@2x.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/navbar-bottom.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/navbar-bottom@2x.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/navbar-fixed.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/navbar-fixed@2x.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/navbar-static.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/navbar-static@2x.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/navbars-offcanvas.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/navbars-offcanvas@2x.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/navbars.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/navbars@2x.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/offcanvas-navbar.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/offcanvas-navbar@2x.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/pricing.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/pricing@2x.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/product.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/product@2x.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/sidebars.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/sidebars@2x.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/sign-in.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/sign-in@2x.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/starter-template.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/starter-template@2x.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/sticky-footer-navbar.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/sticky-footer-navbar@2x.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/sticky-footer.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/examples/sticky-footer@2x.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/favicons/android-chrome-192x192.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/favicons/android-chrome-512x512.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/favicons/apple-touch-icon.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/favicons/favicon-16x16.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/favicons/favicon-32x32.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/favicons/favicon.ico create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/favicons/manifest.json create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/favicons/safari-pinned-tab.svg create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/guides/bootstrap-parcel.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/guides/bootstrap-parcel@2x.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/guides/bootstrap-vite.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/guides/bootstrap-vite@2x.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/guides/bootstrap-webpack.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/guides/bootstrap-webpack@2x.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/guides/parcel-dev-server-bootstrap.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/guides/parcel-dev-server.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/guides/vite-dev-server-bootstrap.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/guides/vite-dev-server.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/guides/webpack-dev-server-bootstrap.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/guides/webpack-dev-server.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/parcel.png create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/vite.svg create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/img/webpack.svg create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/js/color-modes.js create mode 100644 gawa/static/bs5/site/static/docs/5.3/assets/js/validate-forms.js create mode 100644 gawa/static/bs5/site/static/sw.js create mode 100644 gawa/static/bsi1/0-circle-fill.svg create mode 100644 gawa/static/bsi1/0-circle.svg create mode 100644 gawa/static/bsi1/0-square-fill.svg create mode 100644 gawa/static/bsi1/0-square.svg create mode 100644 gawa/static/bsi1/1-circle-fill.svg create mode 100644 gawa/static/bsi1/1-circle.svg create mode 100644 gawa/static/bsi1/1-square-fill.svg create mode 100644 gawa/static/bsi1/1-square.svg create mode 100644 gawa/static/bsi1/123.svg create mode 100644 gawa/static/bsi1/2-circle-fill.svg create mode 100644 gawa/static/bsi1/2-circle.svg create mode 100644 gawa/static/bsi1/2-square-fill.svg create mode 100644 gawa/static/bsi1/2-square.svg create mode 100644 gawa/static/bsi1/3-circle-fill.svg create mode 100644 gawa/static/bsi1/3-circle.svg create mode 100644 gawa/static/bsi1/3-square-fill.svg create mode 100644 gawa/static/bsi1/3-square.svg create mode 100644 gawa/static/bsi1/4-circle-fill.svg create mode 100644 gawa/static/bsi1/4-circle.svg create mode 100644 gawa/static/bsi1/4-square-fill.svg create mode 100644 gawa/static/bsi1/4-square.svg create mode 100644 gawa/static/bsi1/5-circle-fill.svg create mode 100644 gawa/static/bsi1/5-circle.svg create mode 100644 gawa/static/bsi1/5-square-fill.svg create mode 100644 gawa/static/bsi1/5-square.svg create mode 100644 gawa/static/bsi1/6-circle-fill.svg create mode 100644 gawa/static/bsi1/6-circle.svg create mode 100644 gawa/static/bsi1/6-square-fill.svg create mode 100644 gawa/static/bsi1/6-square.svg create mode 100644 gawa/static/bsi1/7-circle-fill.svg create mode 100644 gawa/static/bsi1/7-circle.svg create mode 100644 gawa/static/bsi1/7-square-fill.svg create mode 100644 gawa/static/bsi1/7-square.svg create mode 100644 gawa/static/bsi1/8-circle-fill.svg create mode 100644 gawa/static/bsi1/8-circle.svg create mode 100644 gawa/static/bsi1/8-square-fill.svg create mode 100644 gawa/static/bsi1/8-square.svg create mode 100644 gawa/static/bsi1/9-circle-fill.svg create mode 100644 gawa/static/bsi1/9-circle.svg create mode 100644 gawa/static/bsi1/9-square-fill.svg create mode 100644 gawa/static/bsi1/9-square.svg create mode 100644 gawa/static/bsi1/activity.svg create mode 100644 gawa/static/bsi1/airplane-engines-fill.svg create mode 100644 gawa/static/bsi1/airplane-engines.svg create mode 100644 gawa/static/bsi1/airplane-fill.svg create mode 100644 gawa/static/bsi1/airplane.svg create mode 100644 gawa/static/bsi1/alarm-fill.svg create mode 100644 gawa/static/bsi1/alarm.svg create mode 100644 gawa/static/bsi1/alexa.svg create mode 100644 gawa/static/bsi1/align-bottom.svg create mode 100644 gawa/static/bsi1/align-center.svg create mode 100644 gawa/static/bsi1/align-end.svg create mode 100644 gawa/static/bsi1/align-middle.svg create mode 100644 gawa/static/bsi1/align-start.svg create mode 100644 gawa/static/bsi1/align-top.svg create mode 100644 gawa/static/bsi1/alipay.svg create mode 100644 gawa/static/bsi1/alt.svg create mode 100644 gawa/static/bsi1/amd.svg create mode 100644 gawa/static/bsi1/android.svg create mode 100644 gawa/static/bsi1/android2.svg create mode 100644 gawa/static/bsi1/app-indicator.svg create mode 100644 gawa/static/bsi1/app.svg create mode 100644 gawa/static/bsi1/apple.svg create mode 100644 gawa/static/bsi1/archive-fill.svg create mode 100644 gawa/static/bsi1/archive.svg create mode 100644 gawa/static/bsi1/arrow-90deg-down.svg create mode 100644 gawa/static/bsi1/arrow-90deg-left.svg create mode 100644 gawa/static/bsi1/arrow-90deg-right.svg create mode 100644 gawa/static/bsi1/arrow-90deg-up.svg create mode 100644 gawa/static/bsi1/arrow-bar-down.svg create mode 100644 gawa/static/bsi1/arrow-bar-left.svg create mode 100644 gawa/static/bsi1/arrow-bar-right.svg create mode 100644 gawa/static/bsi1/arrow-bar-up.svg create mode 100644 gawa/static/bsi1/arrow-clockwise.svg create mode 100644 gawa/static/bsi1/arrow-counterclockwise.svg create mode 100644 gawa/static/bsi1/arrow-down-circle-fill.svg create mode 100644 gawa/static/bsi1/arrow-down-circle.svg create mode 100644 gawa/static/bsi1/arrow-down-left-circle-fill.svg create mode 100644 gawa/static/bsi1/arrow-down-left-circle.svg create mode 100644 gawa/static/bsi1/arrow-down-left-square-fill.svg create mode 100644 gawa/static/bsi1/arrow-down-left-square.svg create mode 100644 gawa/static/bsi1/arrow-down-left.svg create mode 100644 gawa/static/bsi1/arrow-down-right-circle-fill.svg create mode 100644 gawa/static/bsi1/arrow-down-right-circle.svg create mode 100644 gawa/static/bsi1/arrow-down-right-square-fill.svg create mode 100644 gawa/static/bsi1/arrow-down-right-square.svg create mode 100644 gawa/static/bsi1/arrow-down-right.svg create mode 100644 gawa/static/bsi1/arrow-down-short.svg create mode 100644 gawa/static/bsi1/arrow-down-square-fill.svg create mode 100644 gawa/static/bsi1/arrow-down-square.svg create mode 100644 gawa/static/bsi1/arrow-down-up.svg create mode 100644 gawa/static/bsi1/arrow-down.svg create mode 100644 gawa/static/bsi1/arrow-left-circle-fill.svg create mode 100644 gawa/static/bsi1/arrow-left-circle.svg create mode 100644 gawa/static/bsi1/arrow-left-right.svg create mode 100644 gawa/static/bsi1/arrow-left-short.svg create mode 100644 gawa/static/bsi1/arrow-left-square-fill.svg create mode 100644 gawa/static/bsi1/arrow-left-square.svg create mode 100644 gawa/static/bsi1/arrow-left.svg create mode 100644 gawa/static/bsi1/arrow-repeat.svg create mode 100644 gawa/static/bsi1/arrow-return-left.svg create mode 100644 gawa/static/bsi1/arrow-return-right.svg create mode 100644 gawa/static/bsi1/arrow-right-circle-fill.svg create mode 100644 gawa/static/bsi1/arrow-right-circle.svg create mode 100644 gawa/static/bsi1/arrow-right-short.svg create mode 100644 gawa/static/bsi1/arrow-right-square-fill.svg create mode 100644 gawa/static/bsi1/arrow-right-square.svg create mode 100644 gawa/static/bsi1/arrow-right.svg create mode 100644 gawa/static/bsi1/arrow-through-heart-fill.svg create mode 100644 gawa/static/bsi1/arrow-through-heart.svg create mode 100644 gawa/static/bsi1/arrow-up-circle-fill.svg create mode 100644 gawa/static/bsi1/arrow-up-circle.svg create mode 100644 gawa/static/bsi1/arrow-up-left-circle-fill.svg create mode 100644 gawa/static/bsi1/arrow-up-left-circle.svg create mode 100644 gawa/static/bsi1/arrow-up-left-square-fill.svg create mode 100644 gawa/static/bsi1/arrow-up-left-square.svg create mode 100644 gawa/static/bsi1/arrow-up-left.svg create mode 100644 gawa/static/bsi1/arrow-up-right-circle-fill.svg create mode 100644 gawa/static/bsi1/arrow-up-right-circle.svg create mode 100644 gawa/static/bsi1/arrow-up-right-square-fill.svg create mode 100644 gawa/static/bsi1/arrow-up-right-square.svg create mode 100644 gawa/static/bsi1/arrow-up-right.svg create mode 100644 gawa/static/bsi1/arrow-up-short.svg create mode 100644 gawa/static/bsi1/arrow-up-square-fill.svg create mode 100644 gawa/static/bsi1/arrow-up-square.svg create mode 100644 gawa/static/bsi1/arrow-up.svg create mode 100644 gawa/static/bsi1/arrows-angle-contract.svg create mode 100644 gawa/static/bsi1/arrows-angle-expand.svg create mode 100644 gawa/static/bsi1/arrows-collapse.svg create mode 100644 gawa/static/bsi1/arrows-expand.svg create mode 100644 gawa/static/bsi1/arrows-fullscreen.svg create mode 100644 gawa/static/bsi1/arrows-move.svg create mode 100644 gawa/static/bsi1/aspect-ratio-fill.svg create mode 100644 gawa/static/bsi1/aspect-ratio.svg create mode 100644 gawa/static/bsi1/asterisk.svg create mode 100644 gawa/static/bsi1/at.svg create mode 100644 gawa/static/bsi1/award-fill.svg create mode 100644 gawa/static/bsi1/award.svg create mode 100644 gawa/static/bsi1/back.svg create mode 100644 gawa/static/bsi1/backspace-fill.svg create mode 100644 gawa/static/bsi1/backspace-reverse-fill.svg create mode 100644 gawa/static/bsi1/backspace-reverse.svg create mode 100644 gawa/static/bsi1/backspace.svg create mode 100644 gawa/static/bsi1/badge-3d-fill.svg create mode 100644 gawa/static/bsi1/badge-3d.svg create mode 100644 gawa/static/bsi1/badge-4k-fill.svg create mode 100644 gawa/static/bsi1/badge-4k.svg create mode 100644 gawa/static/bsi1/badge-8k-fill.svg create mode 100644 gawa/static/bsi1/badge-8k.svg create mode 100644 gawa/static/bsi1/badge-ad-fill.svg create mode 100644 gawa/static/bsi1/badge-ad.svg create mode 100644 gawa/static/bsi1/badge-ar-fill.svg create mode 100644 gawa/static/bsi1/badge-ar.svg create mode 100644 gawa/static/bsi1/badge-cc-fill.svg create mode 100644 gawa/static/bsi1/badge-cc.svg create mode 100644 gawa/static/bsi1/badge-hd-fill.svg create mode 100644 gawa/static/bsi1/badge-hd.svg create mode 100644 gawa/static/bsi1/badge-sd-fill.svg create mode 100644 gawa/static/bsi1/badge-sd.svg create mode 100644 gawa/static/bsi1/badge-tm-fill.svg create mode 100644 gawa/static/bsi1/badge-tm.svg create mode 100644 gawa/static/bsi1/badge-vo-fill.svg create mode 100644 gawa/static/bsi1/badge-vo.svg create mode 100644 gawa/static/bsi1/badge-vr-fill.svg create mode 100644 gawa/static/bsi1/badge-vr.svg create mode 100644 gawa/static/bsi1/badge-wc-fill.svg create mode 100644 gawa/static/bsi1/badge-wc.svg create mode 100644 gawa/static/bsi1/bag-check-fill.svg create mode 100644 gawa/static/bsi1/bag-check.svg create mode 100644 gawa/static/bsi1/bag-dash-fill.svg create mode 100644 gawa/static/bsi1/bag-dash.svg create mode 100644 gawa/static/bsi1/bag-fill.svg create mode 100644 gawa/static/bsi1/bag-heart-fill.svg create mode 100644 gawa/static/bsi1/bag-heart.svg create mode 100644 gawa/static/bsi1/bag-plus-fill.svg create mode 100644 gawa/static/bsi1/bag-plus.svg create mode 100644 gawa/static/bsi1/bag-x-fill.svg create mode 100644 gawa/static/bsi1/bag-x.svg create mode 100644 gawa/static/bsi1/bag.svg create mode 100644 gawa/static/bsi1/balloon-fill.svg create mode 100644 gawa/static/bsi1/balloon-heart-fill.svg create mode 100644 gawa/static/bsi1/balloon-heart.svg create mode 100644 gawa/static/bsi1/balloon.svg create mode 100644 gawa/static/bsi1/bandaid-fill.svg create mode 100644 gawa/static/bsi1/bandaid.svg create mode 100644 gawa/static/bsi1/bank.svg create mode 100644 gawa/static/bsi1/bank2.svg create mode 100644 gawa/static/bsi1/bar-chart-fill.svg create mode 100644 gawa/static/bsi1/bar-chart-line-fill.svg create mode 100644 gawa/static/bsi1/bar-chart-line.svg create mode 100644 gawa/static/bsi1/bar-chart-steps.svg create mode 100644 gawa/static/bsi1/bar-chart.svg create mode 100644 gawa/static/bsi1/basket-fill.svg create mode 100644 gawa/static/bsi1/basket.svg create mode 100644 gawa/static/bsi1/basket2-fill.svg create mode 100644 gawa/static/bsi1/basket2.svg create mode 100644 gawa/static/bsi1/basket3-fill.svg create mode 100644 gawa/static/bsi1/basket3.svg create mode 100644 gawa/static/bsi1/battery-charging.svg create mode 100644 gawa/static/bsi1/battery-full.svg create mode 100644 gawa/static/bsi1/battery-half.svg create mode 100644 gawa/static/bsi1/battery.svg create mode 100644 gawa/static/bsi1/behance.svg create mode 100644 gawa/static/bsi1/bell-fill.svg create mode 100644 gawa/static/bsi1/bell-slash-fill.svg create mode 100644 gawa/static/bsi1/bell-slash.svg create mode 100644 gawa/static/bsi1/bell.svg create mode 100644 gawa/static/bsi1/bezier.svg create mode 100644 gawa/static/bsi1/bezier2.svg create mode 100644 gawa/static/bsi1/bicycle.svg create mode 100644 gawa/static/bsi1/binoculars-fill.svg create mode 100644 gawa/static/bsi1/binoculars.svg create mode 100644 gawa/static/bsi1/blockquote-left.svg create mode 100644 gawa/static/bsi1/blockquote-right.svg create mode 100644 gawa/static/bsi1/bluetooth.svg create mode 100644 gawa/static/bsi1/body-text.svg create mode 100644 gawa/static/bsi1/book-fill.svg create mode 100644 gawa/static/bsi1/book-half.svg create mode 100644 gawa/static/bsi1/book.svg create mode 100644 gawa/static/bsi1/bookmark-check-fill.svg create mode 100644 gawa/static/bsi1/bookmark-check.svg create mode 100644 gawa/static/bsi1/bookmark-dash-fill.svg create mode 100644 gawa/static/bsi1/bookmark-dash.svg create mode 100644 gawa/static/bsi1/bookmark-fill.svg create mode 100644 gawa/static/bsi1/bookmark-heart-fill.svg create mode 100644 gawa/static/bsi1/bookmark-heart.svg create mode 100644 gawa/static/bsi1/bookmark-plus-fill.svg create mode 100644 gawa/static/bsi1/bookmark-plus.svg create mode 100644 gawa/static/bsi1/bookmark-star-fill.svg create mode 100644 gawa/static/bsi1/bookmark-star.svg create mode 100644 gawa/static/bsi1/bookmark-x-fill.svg create mode 100644 gawa/static/bsi1/bookmark-x.svg create mode 100644 gawa/static/bsi1/bookmark.svg create mode 100644 gawa/static/bsi1/bookmarks-fill.svg create mode 100644 gawa/static/bsi1/bookmarks.svg create mode 100644 gawa/static/bsi1/bookshelf.svg create mode 100644 gawa/static/bsi1/boombox-fill.svg create mode 100644 gawa/static/bsi1/boombox.svg create mode 100644 gawa/static/bsi1/bootstrap-fill.svg create mode 100644 gawa/static/bsi1/bootstrap-icons.svg create mode 100644 gawa/static/bsi1/bootstrap-reboot.svg create mode 100644 gawa/static/bsi1/bootstrap.svg create mode 100644 gawa/static/bsi1/border-all.svg create mode 100644 gawa/static/bsi1/border-bottom.svg create mode 100644 gawa/static/bsi1/border-center.svg create mode 100644 gawa/static/bsi1/border-inner.svg create mode 100644 gawa/static/bsi1/border-left.svg create mode 100644 gawa/static/bsi1/border-middle.svg create mode 100644 gawa/static/bsi1/border-outer.svg create mode 100644 gawa/static/bsi1/border-right.svg create mode 100644 gawa/static/bsi1/border-style.svg create mode 100644 gawa/static/bsi1/border-top.svg create mode 100644 gawa/static/bsi1/border-width.svg create mode 100644 gawa/static/bsi1/border.svg create mode 100644 gawa/static/bsi1/bounding-box-circles.svg create mode 100644 gawa/static/bsi1/bounding-box.svg create mode 100644 gawa/static/bsi1/box-arrow-down-left.svg create mode 100644 gawa/static/bsi1/box-arrow-down-right.svg create mode 100644 gawa/static/bsi1/box-arrow-down.svg create mode 100644 gawa/static/bsi1/box-arrow-in-down-left.svg create mode 100644 gawa/static/bsi1/box-arrow-in-down-right.svg create mode 100644 gawa/static/bsi1/box-arrow-in-down.svg create mode 100644 gawa/static/bsi1/box-arrow-in-left.svg create mode 100644 gawa/static/bsi1/box-arrow-in-right.svg create mode 100644 gawa/static/bsi1/box-arrow-in-up-left.svg create mode 100644 gawa/static/bsi1/box-arrow-in-up-right.svg create mode 100644 gawa/static/bsi1/box-arrow-in-up.svg create mode 100644 gawa/static/bsi1/box-arrow-left.svg create mode 100644 gawa/static/bsi1/box-arrow-right.svg create mode 100644 gawa/static/bsi1/box-arrow-up-left.svg create mode 100644 gawa/static/bsi1/box-arrow-up-right.svg create mode 100644 gawa/static/bsi1/box-arrow-up.svg create mode 100644 gawa/static/bsi1/box-fill.svg create mode 100644 gawa/static/bsi1/box-seam-fill.svg create mode 100644 gawa/static/bsi1/box-seam.svg create mode 100644 gawa/static/bsi1/box.svg create mode 100644 gawa/static/bsi1/box2-fill.svg create mode 100644 gawa/static/bsi1/box2-heart-fill.svg create mode 100644 gawa/static/bsi1/box2-heart.svg create mode 100644 gawa/static/bsi1/box2.svg create mode 100644 gawa/static/bsi1/boxes.svg create mode 100644 gawa/static/bsi1/braces-asterisk.svg create mode 100644 gawa/static/bsi1/braces.svg create mode 100644 gawa/static/bsi1/bricks.svg create mode 100644 gawa/static/bsi1/briefcase-fill.svg create mode 100644 gawa/static/bsi1/briefcase.svg create mode 100644 gawa/static/bsi1/brightness-alt-high-fill.svg create mode 100644 gawa/static/bsi1/brightness-alt-high.svg create mode 100644 gawa/static/bsi1/brightness-alt-low-fill.svg create mode 100644 gawa/static/bsi1/brightness-alt-low.svg create mode 100644 gawa/static/bsi1/brightness-high-fill.svg create mode 100644 gawa/static/bsi1/brightness-high.svg create mode 100644 gawa/static/bsi1/brightness-low-fill.svg create mode 100644 gawa/static/bsi1/brightness-low.svg create mode 100644 gawa/static/bsi1/broadcast-pin.svg create mode 100644 gawa/static/bsi1/broadcast.svg create mode 100644 gawa/static/bsi1/browser-chrome.svg create mode 100644 gawa/static/bsi1/browser-edge.svg create mode 100644 gawa/static/bsi1/browser-firefox.svg create mode 100644 gawa/static/bsi1/browser-safari.svg create mode 100644 gawa/static/bsi1/brush-fill.svg create mode 100644 gawa/static/bsi1/brush.svg create mode 100644 gawa/static/bsi1/bucket-fill.svg create mode 100644 gawa/static/bsi1/bucket.svg create mode 100644 gawa/static/bsi1/bug-fill.svg create mode 100644 gawa/static/bsi1/bug.svg create mode 100644 gawa/static/bsi1/building-add.svg create mode 100644 gawa/static/bsi1/building-check.svg create mode 100644 gawa/static/bsi1/building-dash.svg create mode 100644 gawa/static/bsi1/building-down.svg create mode 100644 gawa/static/bsi1/building-exclamation.svg create mode 100644 gawa/static/bsi1/building-fill-add.svg create mode 100644 gawa/static/bsi1/building-fill-check.svg create mode 100644 gawa/static/bsi1/building-fill-dash.svg create mode 100644 gawa/static/bsi1/building-fill-down.svg create mode 100644 gawa/static/bsi1/building-fill-exclamation.svg create mode 100644 gawa/static/bsi1/building-fill-gear.svg create mode 100644 gawa/static/bsi1/building-fill-lock.svg create mode 100644 gawa/static/bsi1/building-fill-slash.svg create mode 100644 gawa/static/bsi1/building-fill-up.svg create mode 100644 gawa/static/bsi1/building-fill-x.svg create mode 100644 gawa/static/bsi1/building-fill.svg create mode 100644 gawa/static/bsi1/building-gear.svg create mode 100644 gawa/static/bsi1/building-lock.svg create mode 100644 gawa/static/bsi1/building-slash.svg create mode 100644 gawa/static/bsi1/building-up.svg create mode 100644 gawa/static/bsi1/building-x.svg create mode 100644 gawa/static/bsi1/building.svg create mode 100644 gawa/static/bsi1/buildings-fill.svg create mode 100644 gawa/static/bsi1/buildings.svg create mode 100644 gawa/static/bsi1/bullseye.svg create mode 100644 gawa/static/bsi1/bus-front-fill.svg create mode 100644 gawa/static/bsi1/bus-front.svg create mode 100644 gawa/static/bsi1/c-circle-fill.svg create mode 100644 gawa/static/bsi1/c-circle.svg create mode 100644 gawa/static/bsi1/c-square-fill.svg create mode 100644 gawa/static/bsi1/c-square.svg create mode 100644 gawa/static/bsi1/calculator-fill.svg create mode 100644 gawa/static/bsi1/calculator.svg create mode 100644 gawa/static/bsi1/calendar-check-fill.svg create mode 100644 gawa/static/bsi1/calendar-check.svg create mode 100644 gawa/static/bsi1/calendar-date-fill.svg create mode 100644 gawa/static/bsi1/calendar-date.svg create mode 100644 gawa/static/bsi1/calendar-day-fill.svg create mode 100644 gawa/static/bsi1/calendar-day.svg create mode 100644 gawa/static/bsi1/calendar-event-fill.svg create mode 100644 gawa/static/bsi1/calendar-event.svg create mode 100644 gawa/static/bsi1/calendar-fill.svg create mode 100644 gawa/static/bsi1/calendar-heart-fill.svg create mode 100644 gawa/static/bsi1/calendar-heart.svg create mode 100644 gawa/static/bsi1/calendar-minus-fill.svg create mode 100644 gawa/static/bsi1/calendar-minus.svg create mode 100644 gawa/static/bsi1/calendar-month-fill.svg create mode 100644 gawa/static/bsi1/calendar-month.svg create mode 100644 gawa/static/bsi1/calendar-plus-fill.svg create mode 100644 gawa/static/bsi1/calendar-plus.svg create mode 100644 gawa/static/bsi1/calendar-range-fill.svg create mode 100644 gawa/static/bsi1/calendar-range.svg create mode 100644 gawa/static/bsi1/calendar-week-fill.svg create mode 100644 gawa/static/bsi1/calendar-week.svg create mode 100644 gawa/static/bsi1/calendar-x-fill.svg create mode 100644 gawa/static/bsi1/calendar-x.svg create mode 100644 gawa/static/bsi1/calendar.svg create mode 100644 gawa/static/bsi1/calendar2-check-fill.svg create mode 100644 gawa/static/bsi1/calendar2-check.svg create mode 100644 gawa/static/bsi1/calendar2-date-fill.svg create mode 100644 gawa/static/bsi1/calendar2-date.svg create mode 100644 gawa/static/bsi1/calendar2-day-fill.svg create mode 100644 gawa/static/bsi1/calendar2-day.svg create mode 100644 gawa/static/bsi1/calendar2-event-fill.svg create mode 100644 gawa/static/bsi1/calendar2-event.svg create mode 100644 gawa/static/bsi1/calendar2-fill.svg create mode 100644 gawa/static/bsi1/calendar2-heart-fill.svg create mode 100644 gawa/static/bsi1/calendar2-heart.svg create mode 100644 gawa/static/bsi1/calendar2-minus-fill.svg create mode 100644 gawa/static/bsi1/calendar2-minus.svg create mode 100644 gawa/static/bsi1/calendar2-month-fill.svg create mode 100644 gawa/static/bsi1/calendar2-month.svg create mode 100644 gawa/static/bsi1/calendar2-plus-fill.svg create mode 100644 gawa/static/bsi1/calendar2-plus.svg create mode 100644 gawa/static/bsi1/calendar2-range-fill.svg create mode 100644 gawa/static/bsi1/calendar2-range.svg create mode 100644 gawa/static/bsi1/calendar2-week-fill.svg create mode 100644 gawa/static/bsi1/calendar2-week.svg create mode 100644 gawa/static/bsi1/calendar2-x-fill.svg create mode 100644 gawa/static/bsi1/calendar2-x.svg create mode 100644 gawa/static/bsi1/calendar2.svg create mode 100644 gawa/static/bsi1/calendar3-event-fill.svg create mode 100644 gawa/static/bsi1/calendar3-event.svg create mode 100644 gawa/static/bsi1/calendar3-fill.svg create mode 100644 gawa/static/bsi1/calendar3-range-fill.svg create mode 100644 gawa/static/bsi1/calendar3-range.svg create mode 100644 gawa/static/bsi1/calendar3-week-fill.svg create mode 100644 gawa/static/bsi1/calendar3-week.svg create mode 100644 gawa/static/bsi1/calendar3.svg create mode 100644 gawa/static/bsi1/calendar4-event.svg create mode 100644 gawa/static/bsi1/calendar4-range.svg create mode 100644 gawa/static/bsi1/calendar4-week.svg create mode 100644 gawa/static/bsi1/calendar4.svg create mode 100644 gawa/static/bsi1/camera-fill.svg create mode 100644 gawa/static/bsi1/camera-reels-fill.svg create mode 100644 gawa/static/bsi1/camera-reels.svg create mode 100644 gawa/static/bsi1/camera-video-fill.svg create mode 100644 gawa/static/bsi1/camera-video-off-fill.svg create mode 100644 gawa/static/bsi1/camera-video-off.svg create mode 100644 gawa/static/bsi1/camera-video.svg create mode 100644 gawa/static/bsi1/camera.svg create mode 100644 gawa/static/bsi1/camera2.svg create mode 100644 gawa/static/bsi1/capslock-fill.svg create mode 100644 gawa/static/bsi1/capslock.svg create mode 100644 gawa/static/bsi1/capsule-pill.svg create mode 100644 gawa/static/bsi1/capsule.svg create mode 100644 gawa/static/bsi1/car-front-fill.svg create mode 100644 gawa/static/bsi1/car-front.svg create mode 100644 gawa/static/bsi1/card-checklist.svg create mode 100644 gawa/static/bsi1/card-heading.svg create mode 100644 gawa/static/bsi1/card-image.svg create mode 100644 gawa/static/bsi1/card-list.svg create mode 100644 gawa/static/bsi1/card-text.svg create mode 100644 gawa/static/bsi1/caret-down-fill.svg create mode 100644 gawa/static/bsi1/caret-down-square-fill.svg create mode 100644 gawa/static/bsi1/caret-down-square.svg create mode 100644 gawa/static/bsi1/caret-down.svg create mode 100644 gawa/static/bsi1/caret-left-fill.svg create mode 100644 gawa/static/bsi1/caret-left-square-fill.svg create mode 100644 gawa/static/bsi1/caret-left-square.svg create mode 100644 gawa/static/bsi1/caret-left.svg create mode 100644 gawa/static/bsi1/caret-right-fill.svg create mode 100644 gawa/static/bsi1/caret-right-square-fill.svg create mode 100644 gawa/static/bsi1/caret-right-square.svg create mode 100644 gawa/static/bsi1/caret-right.svg create mode 100644 gawa/static/bsi1/caret-up-fill.svg create mode 100644 gawa/static/bsi1/caret-up-square-fill.svg create mode 100644 gawa/static/bsi1/caret-up-square.svg create mode 100644 gawa/static/bsi1/caret-up.svg create mode 100644 gawa/static/bsi1/cart-check-fill.svg create mode 100644 gawa/static/bsi1/cart-check.svg create mode 100644 gawa/static/bsi1/cart-dash-fill.svg create mode 100644 gawa/static/bsi1/cart-dash.svg create mode 100644 gawa/static/bsi1/cart-fill.svg create mode 100644 gawa/static/bsi1/cart-plus-fill.svg create mode 100644 gawa/static/bsi1/cart-plus.svg create mode 100644 gawa/static/bsi1/cart-x-fill.svg create mode 100644 gawa/static/bsi1/cart-x.svg create mode 100644 gawa/static/bsi1/cart.svg create mode 100644 gawa/static/bsi1/cart2.svg create mode 100644 gawa/static/bsi1/cart3.svg create mode 100644 gawa/static/bsi1/cart4.svg create mode 100644 gawa/static/bsi1/cash-coin.svg create mode 100644 gawa/static/bsi1/cash-stack.svg create mode 100644 gawa/static/bsi1/cash.svg create mode 100644 gawa/static/bsi1/cassette-fill.svg create mode 100644 gawa/static/bsi1/cassette.svg create mode 100644 gawa/static/bsi1/cast.svg create mode 100644 gawa/static/bsi1/cc-circle-fill.svg create mode 100644 gawa/static/bsi1/cc-circle.svg create mode 100644 gawa/static/bsi1/cc-square-fill.svg create mode 100644 gawa/static/bsi1/cc-square.svg create mode 100644 gawa/static/bsi1/chat-dots-fill.svg create mode 100644 gawa/static/bsi1/chat-dots.svg create mode 100644 gawa/static/bsi1/chat-fill.svg create mode 100644 gawa/static/bsi1/chat-heart-fill.svg create mode 100644 gawa/static/bsi1/chat-heart.svg create mode 100644 gawa/static/bsi1/chat-left-dots-fill.svg create mode 100644 gawa/static/bsi1/chat-left-dots.svg create mode 100644 gawa/static/bsi1/chat-left-fill.svg create mode 100644 gawa/static/bsi1/chat-left-heart-fill.svg create mode 100644 gawa/static/bsi1/chat-left-heart.svg create mode 100644 gawa/static/bsi1/chat-left-quote-fill.svg create mode 100644 gawa/static/bsi1/chat-left-quote.svg create mode 100644 gawa/static/bsi1/chat-left-text-fill.svg create mode 100644 gawa/static/bsi1/chat-left-text.svg create mode 100644 gawa/static/bsi1/chat-left.svg create mode 100644 gawa/static/bsi1/chat-quote-fill.svg create mode 100644 gawa/static/bsi1/chat-quote.svg create mode 100644 gawa/static/bsi1/chat-right-dots-fill.svg create mode 100644 gawa/static/bsi1/chat-right-dots.svg create mode 100644 gawa/static/bsi1/chat-right-fill.svg create mode 100644 gawa/static/bsi1/chat-right-heart-fill.svg create mode 100644 gawa/static/bsi1/chat-right-heart.svg create mode 100644 gawa/static/bsi1/chat-right-quote-fill.svg create mode 100644 gawa/static/bsi1/chat-right-quote.svg create mode 100644 gawa/static/bsi1/chat-right-text-fill.svg create mode 100644 gawa/static/bsi1/chat-right-text.svg create mode 100644 gawa/static/bsi1/chat-right.svg create mode 100644 gawa/static/bsi1/chat-square-dots-fill.svg create mode 100644 gawa/static/bsi1/chat-square-dots.svg create mode 100644 gawa/static/bsi1/chat-square-fill.svg create mode 100644 gawa/static/bsi1/chat-square-heart-fill.svg create mode 100644 gawa/static/bsi1/chat-square-heart.svg create mode 100644 gawa/static/bsi1/chat-square-quote-fill.svg create mode 100644 gawa/static/bsi1/chat-square-quote.svg create mode 100644 gawa/static/bsi1/chat-square-text-fill.svg create mode 100644 gawa/static/bsi1/chat-square-text.svg create mode 100644 gawa/static/bsi1/chat-square.svg create mode 100644 gawa/static/bsi1/chat-text-fill.svg create mode 100644 gawa/static/bsi1/chat-text.svg create mode 100644 gawa/static/bsi1/chat.svg create mode 100644 gawa/static/bsi1/check-all.svg create mode 100644 gawa/static/bsi1/check-circle-fill.svg create mode 100644 gawa/static/bsi1/check-circle.svg create mode 100644 gawa/static/bsi1/check-lg.svg create mode 100644 gawa/static/bsi1/check-square-fill.svg create mode 100644 gawa/static/bsi1/check-square.svg create mode 100644 gawa/static/bsi1/check.svg create mode 100644 gawa/static/bsi1/check2-all.svg create mode 100644 gawa/static/bsi1/check2-circle.svg create mode 100644 gawa/static/bsi1/check2-square.svg create mode 100644 gawa/static/bsi1/check2.svg create mode 100644 gawa/static/bsi1/chevron-bar-contract.svg create mode 100644 gawa/static/bsi1/chevron-bar-down.svg create mode 100644 gawa/static/bsi1/chevron-bar-expand.svg create mode 100644 gawa/static/bsi1/chevron-bar-left.svg create mode 100644 gawa/static/bsi1/chevron-bar-right.svg create mode 100644 gawa/static/bsi1/chevron-bar-up.svg create mode 100644 gawa/static/bsi1/chevron-compact-down.svg create mode 100644 gawa/static/bsi1/chevron-compact-left.svg create mode 100644 gawa/static/bsi1/chevron-compact-right.svg create mode 100644 gawa/static/bsi1/chevron-compact-up.svg create mode 100644 gawa/static/bsi1/chevron-contract.svg create mode 100644 gawa/static/bsi1/chevron-double-down.svg create mode 100644 gawa/static/bsi1/chevron-double-left.svg create mode 100644 gawa/static/bsi1/chevron-double-right.svg create mode 100644 gawa/static/bsi1/chevron-double-up.svg create mode 100644 gawa/static/bsi1/chevron-down.svg create mode 100644 gawa/static/bsi1/chevron-expand.svg create mode 100644 gawa/static/bsi1/chevron-left.svg create mode 100644 gawa/static/bsi1/chevron-right.svg create mode 100644 gawa/static/bsi1/chevron-up.svg create mode 100644 gawa/static/bsi1/circle-fill.svg create mode 100644 gawa/static/bsi1/circle-half.svg create mode 100644 gawa/static/bsi1/circle-square.svg create mode 100644 gawa/static/bsi1/circle.svg create mode 100644 gawa/static/bsi1/clipboard-check-fill.svg create mode 100644 gawa/static/bsi1/clipboard-check.svg create mode 100644 gawa/static/bsi1/clipboard-data-fill.svg create mode 100644 gawa/static/bsi1/clipboard-data.svg create mode 100644 gawa/static/bsi1/clipboard-fill.svg create mode 100644 gawa/static/bsi1/clipboard-heart-fill.svg create mode 100644 gawa/static/bsi1/clipboard-heart.svg create mode 100644 gawa/static/bsi1/clipboard-minus-fill.svg create mode 100644 gawa/static/bsi1/clipboard-minus.svg create mode 100644 gawa/static/bsi1/clipboard-plus-fill.svg create mode 100644 gawa/static/bsi1/clipboard-plus.svg create mode 100644 gawa/static/bsi1/clipboard-pulse.svg create mode 100644 gawa/static/bsi1/clipboard-x-fill.svg create mode 100644 gawa/static/bsi1/clipboard-x.svg create mode 100644 gawa/static/bsi1/clipboard.svg create mode 100644 gawa/static/bsi1/clipboard2-check-fill.svg create mode 100644 gawa/static/bsi1/clipboard2-check.svg create mode 100644 gawa/static/bsi1/clipboard2-data-fill.svg create mode 100644 gawa/static/bsi1/clipboard2-data.svg create mode 100644 gawa/static/bsi1/clipboard2-fill.svg create mode 100644 gawa/static/bsi1/clipboard2-heart-fill.svg create mode 100644 gawa/static/bsi1/clipboard2-heart.svg create mode 100644 gawa/static/bsi1/clipboard2-minus-fill.svg create mode 100644 gawa/static/bsi1/clipboard2-minus.svg create mode 100644 gawa/static/bsi1/clipboard2-plus-fill.svg create mode 100644 gawa/static/bsi1/clipboard2-plus.svg create mode 100644 gawa/static/bsi1/clipboard2-pulse-fill.svg create mode 100644 gawa/static/bsi1/clipboard2-pulse.svg create mode 100644 gawa/static/bsi1/clipboard2-x-fill.svg create mode 100644 gawa/static/bsi1/clipboard2-x.svg create mode 100644 gawa/static/bsi1/clipboard2.svg create mode 100644 gawa/static/bsi1/clock-fill.svg create mode 100644 gawa/static/bsi1/clock-history.svg create mode 100644 gawa/static/bsi1/clock.svg create mode 100644 gawa/static/bsi1/cloud-arrow-down-fill.svg create mode 100644 gawa/static/bsi1/cloud-arrow-down.svg create mode 100644 gawa/static/bsi1/cloud-arrow-up-fill.svg create mode 100644 gawa/static/bsi1/cloud-arrow-up.svg create mode 100644 gawa/static/bsi1/cloud-check-fill.svg create mode 100644 gawa/static/bsi1/cloud-check.svg create mode 100644 gawa/static/bsi1/cloud-download-fill.svg create mode 100644 gawa/static/bsi1/cloud-download.svg create mode 100644 gawa/static/bsi1/cloud-drizzle-fill.svg create mode 100644 gawa/static/bsi1/cloud-drizzle.svg create mode 100644 gawa/static/bsi1/cloud-fill.svg create mode 100644 gawa/static/bsi1/cloud-fog-fill.svg create mode 100644 gawa/static/bsi1/cloud-fog.svg create mode 100644 gawa/static/bsi1/cloud-fog2-fill.svg create mode 100644 gawa/static/bsi1/cloud-fog2.svg create mode 100644 gawa/static/bsi1/cloud-hail-fill.svg create mode 100644 gawa/static/bsi1/cloud-hail.svg create mode 100644 gawa/static/bsi1/cloud-haze-fill.svg create mode 100644 gawa/static/bsi1/cloud-haze.svg create mode 100644 gawa/static/bsi1/cloud-haze2-fill.svg create mode 100644 gawa/static/bsi1/cloud-haze2.svg create mode 100644 gawa/static/bsi1/cloud-lightning-fill.svg create mode 100644 gawa/static/bsi1/cloud-lightning-rain-fill.svg create mode 100644 gawa/static/bsi1/cloud-lightning-rain.svg create mode 100644 gawa/static/bsi1/cloud-lightning.svg create mode 100644 gawa/static/bsi1/cloud-minus-fill.svg create mode 100644 gawa/static/bsi1/cloud-minus.svg create mode 100644 gawa/static/bsi1/cloud-moon-fill.svg create mode 100644 gawa/static/bsi1/cloud-moon.svg create mode 100644 gawa/static/bsi1/cloud-plus-fill.svg create mode 100644 gawa/static/bsi1/cloud-plus.svg create mode 100644 gawa/static/bsi1/cloud-rain-fill.svg create mode 100644 gawa/static/bsi1/cloud-rain-heavy-fill.svg create mode 100644 gawa/static/bsi1/cloud-rain-heavy.svg create mode 100644 gawa/static/bsi1/cloud-rain.svg create mode 100644 gawa/static/bsi1/cloud-slash-fill.svg create mode 100644 gawa/static/bsi1/cloud-slash.svg create mode 100644 gawa/static/bsi1/cloud-sleet-fill.svg create mode 100644 gawa/static/bsi1/cloud-sleet.svg create mode 100644 gawa/static/bsi1/cloud-snow-fill.svg create mode 100644 gawa/static/bsi1/cloud-snow.svg create mode 100644 gawa/static/bsi1/cloud-sun-fill.svg create mode 100644 gawa/static/bsi1/cloud-sun.svg create mode 100644 gawa/static/bsi1/cloud-upload-fill.svg create mode 100644 gawa/static/bsi1/cloud-upload.svg create mode 100644 gawa/static/bsi1/cloud.svg create mode 100644 gawa/static/bsi1/clouds-fill.svg create mode 100644 gawa/static/bsi1/clouds.svg create mode 100644 gawa/static/bsi1/cloudy-fill.svg create mode 100644 gawa/static/bsi1/cloudy.svg create mode 100644 gawa/static/bsi1/code-slash.svg create mode 100644 gawa/static/bsi1/code-square.svg create mode 100644 gawa/static/bsi1/code.svg create mode 100644 gawa/static/bsi1/coin.svg create mode 100644 gawa/static/bsi1/collection-fill.svg create mode 100644 gawa/static/bsi1/collection-play-fill.svg create mode 100644 gawa/static/bsi1/collection-play.svg create mode 100644 gawa/static/bsi1/collection.svg create mode 100644 gawa/static/bsi1/columns-gap.svg create mode 100644 gawa/static/bsi1/columns.svg create mode 100644 gawa/static/bsi1/command.svg create mode 100644 gawa/static/bsi1/compass-fill.svg create mode 100644 gawa/static/bsi1/compass.svg create mode 100644 gawa/static/bsi1/cone-striped.svg create mode 100644 gawa/static/bsi1/cone.svg create mode 100644 gawa/static/bsi1/controller.svg create mode 100644 gawa/static/bsi1/cpu-fill.svg create mode 100644 gawa/static/bsi1/cpu.svg create mode 100644 gawa/static/bsi1/credit-card-2-back-fill.svg create mode 100644 gawa/static/bsi1/credit-card-2-back.svg create mode 100644 gawa/static/bsi1/credit-card-2-front-fill.svg create mode 100644 gawa/static/bsi1/credit-card-2-front.svg create mode 100644 gawa/static/bsi1/credit-card-fill.svg create mode 100644 gawa/static/bsi1/credit-card.svg create mode 100644 gawa/static/bsi1/crop.svg create mode 100644 gawa/static/bsi1/cup-fill.svg create mode 100644 gawa/static/bsi1/cup-hot-fill.svg create mode 100644 gawa/static/bsi1/cup-hot.svg create mode 100644 gawa/static/bsi1/cup-straw.svg create mode 100644 gawa/static/bsi1/cup.svg create mode 100644 gawa/static/bsi1/currency-bitcoin.svg create mode 100644 gawa/static/bsi1/currency-dollar.svg create mode 100644 gawa/static/bsi1/currency-euro.svg create mode 100644 gawa/static/bsi1/currency-exchange.svg create mode 100644 gawa/static/bsi1/currency-pound.svg create mode 100644 gawa/static/bsi1/currency-rupee.svg create mode 100644 gawa/static/bsi1/currency-yen.svg create mode 100644 gawa/static/bsi1/cursor-fill.svg create mode 100644 gawa/static/bsi1/cursor-text.svg create mode 100644 gawa/static/bsi1/cursor.svg create mode 100644 gawa/static/bsi1/dash-circle-dotted.svg create mode 100644 gawa/static/bsi1/dash-circle-fill.svg create mode 100644 gawa/static/bsi1/dash-circle.svg create mode 100644 gawa/static/bsi1/dash-lg.svg create mode 100644 gawa/static/bsi1/dash-square-dotted.svg create mode 100644 gawa/static/bsi1/dash-square-fill.svg create mode 100644 gawa/static/bsi1/dash-square.svg create mode 100644 gawa/static/bsi1/dash.svg create mode 100644 gawa/static/bsi1/database-add.svg create mode 100644 gawa/static/bsi1/database-check.svg create mode 100644 gawa/static/bsi1/database-dash.svg create mode 100644 gawa/static/bsi1/database-down.svg create mode 100644 gawa/static/bsi1/database-exclamation.svg create mode 100644 gawa/static/bsi1/database-fill-add.svg create mode 100644 gawa/static/bsi1/database-fill-check.svg create mode 100644 gawa/static/bsi1/database-fill-dash.svg create mode 100644 gawa/static/bsi1/database-fill-down.svg create mode 100644 gawa/static/bsi1/database-fill-exclamation.svg create mode 100644 gawa/static/bsi1/database-fill-gear.svg create mode 100644 gawa/static/bsi1/database-fill-lock.svg create mode 100644 gawa/static/bsi1/database-fill-slash.svg create mode 100644 gawa/static/bsi1/database-fill-up.svg create mode 100644 gawa/static/bsi1/database-fill-x.svg create mode 100644 gawa/static/bsi1/database-fill.svg create mode 100644 gawa/static/bsi1/database-gear.svg create mode 100644 gawa/static/bsi1/database-lock.svg create mode 100644 gawa/static/bsi1/database-slash.svg create mode 100644 gawa/static/bsi1/database-up.svg create mode 100644 gawa/static/bsi1/database-x.svg create mode 100644 gawa/static/bsi1/database.svg create mode 100644 gawa/static/bsi1/device-hdd-fill.svg create mode 100644 gawa/static/bsi1/device-hdd.svg create mode 100644 gawa/static/bsi1/device-ssd-fill.svg create mode 100644 gawa/static/bsi1/device-ssd.svg create mode 100644 gawa/static/bsi1/diagram-2-fill.svg create mode 100644 gawa/static/bsi1/diagram-2.svg create mode 100644 gawa/static/bsi1/diagram-3-fill.svg create mode 100644 gawa/static/bsi1/diagram-3.svg create mode 100644 gawa/static/bsi1/diamond-fill.svg create mode 100644 gawa/static/bsi1/diamond-half.svg create mode 100644 gawa/static/bsi1/diamond.svg create mode 100644 gawa/static/bsi1/dice-1-fill.svg create mode 100644 gawa/static/bsi1/dice-1.svg create mode 100644 gawa/static/bsi1/dice-2-fill.svg create mode 100644 gawa/static/bsi1/dice-2.svg create mode 100644 gawa/static/bsi1/dice-3-fill.svg create mode 100644 gawa/static/bsi1/dice-3.svg create mode 100644 gawa/static/bsi1/dice-4-fill.svg create mode 100644 gawa/static/bsi1/dice-4.svg create mode 100644 gawa/static/bsi1/dice-5-fill.svg create mode 100644 gawa/static/bsi1/dice-5.svg create mode 100644 gawa/static/bsi1/dice-6-fill.svg create mode 100644 gawa/static/bsi1/dice-6.svg create mode 100644 gawa/static/bsi1/disc-fill.svg create mode 100644 gawa/static/bsi1/disc.svg create mode 100644 gawa/static/bsi1/discord.svg create mode 100644 gawa/static/bsi1/display-fill.svg create mode 100644 gawa/static/bsi1/display.svg create mode 100644 gawa/static/bsi1/displayport-fill.svg create mode 100644 gawa/static/bsi1/displayport.svg create mode 100644 gawa/static/bsi1/distribute-horizontal.svg create mode 100644 gawa/static/bsi1/distribute-vertical.svg create mode 100644 gawa/static/bsi1/door-closed-fill.svg create mode 100644 gawa/static/bsi1/door-closed.svg create mode 100644 gawa/static/bsi1/door-open-fill.svg create mode 100644 gawa/static/bsi1/door-open.svg create mode 100644 gawa/static/bsi1/dot.svg create mode 100644 gawa/static/bsi1/download.svg create mode 100644 gawa/static/bsi1/dpad-fill.svg create mode 100644 gawa/static/bsi1/dpad.svg create mode 100644 gawa/static/bsi1/dribbble.svg create mode 100644 gawa/static/bsi1/dropbox.svg create mode 100644 gawa/static/bsi1/droplet-fill.svg create mode 100644 gawa/static/bsi1/droplet-half.svg create mode 100644 gawa/static/bsi1/droplet.svg create mode 100644 gawa/static/bsi1/ear-fill.svg create mode 100644 gawa/static/bsi1/ear.svg create mode 100644 gawa/static/bsi1/earbuds.svg create mode 100644 gawa/static/bsi1/easel-fill.svg create mode 100644 gawa/static/bsi1/easel.svg create mode 100644 gawa/static/bsi1/easel2-fill.svg create mode 100644 gawa/static/bsi1/easel2.svg create mode 100644 gawa/static/bsi1/easel3-fill.svg create mode 100644 gawa/static/bsi1/easel3.svg create mode 100644 gawa/static/bsi1/egg-fill.svg create mode 100644 gawa/static/bsi1/egg-fried.svg create mode 100644 gawa/static/bsi1/egg.svg create mode 100644 gawa/static/bsi1/eject-fill.svg create mode 100644 gawa/static/bsi1/eject.svg create mode 100644 gawa/static/bsi1/emoji-angry-fill.svg create mode 100644 gawa/static/bsi1/emoji-angry.svg create mode 100644 gawa/static/bsi1/emoji-dizzy-fill.svg create mode 100644 gawa/static/bsi1/emoji-dizzy.svg create mode 100644 gawa/static/bsi1/emoji-expressionless-fill.svg create mode 100644 gawa/static/bsi1/emoji-expressionless.svg create mode 100644 gawa/static/bsi1/emoji-frown-fill.svg create mode 100644 gawa/static/bsi1/emoji-frown.svg create mode 100644 gawa/static/bsi1/emoji-heart-eyes-fill.svg create mode 100644 gawa/static/bsi1/emoji-heart-eyes.svg create mode 100644 gawa/static/bsi1/emoji-kiss-fill.svg create mode 100644 gawa/static/bsi1/emoji-kiss.svg create mode 100644 gawa/static/bsi1/emoji-laughing-fill.svg create mode 100644 gawa/static/bsi1/emoji-laughing.svg create mode 100644 gawa/static/bsi1/emoji-neutral-fill.svg create mode 100644 gawa/static/bsi1/emoji-neutral.svg create mode 100644 gawa/static/bsi1/emoji-smile-fill.svg create mode 100644 gawa/static/bsi1/emoji-smile-upside-down-fill.svg create mode 100644 gawa/static/bsi1/emoji-smile-upside-down.svg create mode 100644 gawa/static/bsi1/emoji-smile.svg create mode 100644 gawa/static/bsi1/emoji-sunglasses-fill.svg create mode 100644 gawa/static/bsi1/emoji-sunglasses.svg create mode 100644 gawa/static/bsi1/emoji-wink-fill.svg create mode 100644 gawa/static/bsi1/emoji-wink.svg create mode 100644 gawa/static/bsi1/envelope-at-fill.svg create mode 100644 gawa/static/bsi1/envelope-at.svg create mode 100644 gawa/static/bsi1/envelope-check-fill.svg create mode 100644 gawa/static/bsi1/envelope-check.svg create mode 100644 gawa/static/bsi1/envelope-dash-fill.svg create mode 100644 gawa/static/bsi1/envelope-dash.svg create mode 100644 gawa/static/bsi1/envelope-exclamation-fill.svg create mode 100644 gawa/static/bsi1/envelope-exclamation.svg create mode 100644 gawa/static/bsi1/envelope-fill.svg create mode 100644 gawa/static/bsi1/envelope-heart-fill.svg create mode 100644 gawa/static/bsi1/envelope-heart.svg create mode 100644 gawa/static/bsi1/envelope-open-fill.svg create mode 100644 gawa/static/bsi1/envelope-open-heart-fill.svg create mode 100644 gawa/static/bsi1/envelope-open-heart.svg create mode 100644 gawa/static/bsi1/envelope-open.svg create mode 100644 gawa/static/bsi1/envelope-paper-fill.svg create mode 100644 gawa/static/bsi1/envelope-paper-heart-fill.svg create mode 100644 gawa/static/bsi1/envelope-paper-heart.svg create mode 100644 gawa/static/bsi1/envelope-paper.svg create mode 100644 gawa/static/bsi1/envelope-plus-fill.svg create mode 100644 gawa/static/bsi1/envelope-plus.svg create mode 100644 gawa/static/bsi1/envelope-slash-fill.svg create mode 100644 gawa/static/bsi1/envelope-slash.svg create mode 100644 gawa/static/bsi1/envelope-x-fill.svg create mode 100644 gawa/static/bsi1/envelope-x.svg create mode 100644 gawa/static/bsi1/envelope.svg create mode 100644 gawa/static/bsi1/eraser-fill.svg create mode 100644 gawa/static/bsi1/eraser.svg create mode 100644 gawa/static/bsi1/escape.svg create mode 100644 gawa/static/bsi1/ethernet.svg create mode 100644 gawa/static/bsi1/ev-front-fill.svg create mode 100644 gawa/static/bsi1/ev-front.svg create mode 100644 gawa/static/bsi1/ev-station-fill.svg create mode 100644 gawa/static/bsi1/ev-station.svg create mode 100644 gawa/static/bsi1/exclamation-circle-fill.svg create mode 100644 gawa/static/bsi1/exclamation-circle.svg create mode 100644 gawa/static/bsi1/exclamation-diamond-fill.svg create mode 100644 gawa/static/bsi1/exclamation-diamond.svg create mode 100644 gawa/static/bsi1/exclamation-lg.svg create mode 100644 gawa/static/bsi1/exclamation-octagon-fill.svg create mode 100644 gawa/static/bsi1/exclamation-octagon.svg create mode 100644 gawa/static/bsi1/exclamation-square-fill.svg create mode 100644 gawa/static/bsi1/exclamation-square.svg create mode 100644 gawa/static/bsi1/exclamation-triangle-fill.svg create mode 100644 gawa/static/bsi1/exclamation-triangle.svg create mode 100644 gawa/static/bsi1/exclamation.svg create mode 100644 gawa/static/bsi1/exclude.svg create mode 100644 gawa/static/bsi1/explicit-fill.svg create mode 100644 gawa/static/bsi1/explicit.svg create mode 100644 gawa/static/bsi1/eye-fill.svg create mode 100644 gawa/static/bsi1/eye-slash-fill.svg create mode 100644 gawa/static/bsi1/eye-slash.svg create mode 100644 gawa/static/bsi1/eye.svg create mode 100644 gawa/static/bsi1/eyedropper.svg create mode 100644 gawa/static/bsi1/eyeglasses.svg create mode 100644 gawa/static/bsi1/facebook.svg create mode 100644 gawa/static/bsi1/fan.svg create mode 100644 gawa/static/bsi1/fast-forward-btn-fill.svg create mode 100644 gawa/static/bsi1/fast-forward-btn.svg create mode 100644 gawa/static/bsi1/fast-forward-circle-fill.svg create mode 100644 gawa/static/bsi1/fast-forward-circle.svg create mode 100644 gawa/static/bsi1/fast-forward-fill.svg create mode 100644 gawa/static/bsi1/fast-forward.svg create mode 100644 gawa/static/bsi1/file-arrow-down-fill.svg create mode 100644 gawa/static/bsi1/file-arrow-down.svg create mode 100644 gawa/static/bsi1/file-arrow-up-fill.svg create mode 100644 gawa/static/bsi1/file-arrow-up.svg create mode 100644 gawa/static/bsi1/file-bar-graph-fill.svg create mode 100644 gawa/static/bsi1/file-bar-graph.svg create mode 100644 gawa/static/bsi1/file-binary-fill.svg create mode 100644 gawa/static/bsi1/file-binary.svg create mode 100644 gawa/static/bsi1/file-break-fill.svg create mode 100644 gawa/static/bsi1/file-break.svg create mode 100644 gawa/static/bsi1/file-check-fill.svg create mode 100644 gawa/static/bsi1/file-check.svg create mode 100644 gawa/static/bsi1/file-code-fill.svg create mode 100644 gawa/static/bsi1/file-code.svg create mode 100644 gawa/static/bsi1/file-diff-fill.svg create mode 100644 gawa/static/bsi1/file-diff.svg create mode 100644 gawa/static/bsi1/file-earmark-arrow-down-fill.svg create mode 100644 gawa/static/bsi1/file-earmark-arrow-down.svg create mode 100644 gawa/static/bsi1/file-earmark-arrow-up-fill.svg create mode 100644 gawa/static/bsi1/file-earmark-arrow-up.svg create mode 100644 gawa/static/bsi1/file-earmark-bar-graph-fill.svg create mode 100644 gawa/static/bsi1/file-earmark-bar-graph.svg create mode 100644 gawa/static/bsi1/file-earmark-binary-fill.svg create mode 100644 gawa/static/bsi1/file-earmark-binary.svg create mode 100644 gawa/static/bsi1/file-earmark-break-fill.svg create mode 100644 gawa/static/bsi1/file-earmark-break.svg create mode 100644 gawa/static/bsi1/file-earmark-check-fill.svg create mode 100644 gawa/static/bsi1/file-earmark-check.svg create mode 100644 gawa/static/bsi1/file-earmark-code-fill.svg create mode 100644 gawa/static/bsi1/file-earmark-code.svg create mode 100644 gawa/static/bsi1/file-earmark-diff-fill.svg create mode 100644 gawa/static/bsi1/file-earmark-diff.svg create mode 100644 gawa/static/bsi1/file-earmark-easel-fill.svg create mode 100644 gawa/static/bsi1/file-earmark-easel.svg create mode 100644 gawa/static/bsi1/file-earmark-excel-fill.svg create mode 100644 gawa/static/bsi1/file-earmark-excel.svg create mode 100644 gawa/static/bsi1/file-earmark-fill.svg create mode 100644 gawa/static/bsi1/file-earmark-font-fill.svg create mode 100644 gawa/static/bsi1/file-earmark-font.svg create mode 100644 gawa/static/bsi1/file-earmark-image-fill.svg create mode 100644 gawa/static/bsi1/file-earmark-image.svg create mode 100644 gawa/static/bsi1/file-earmark-lock-fill.svg create mode 100644 gawa/static/bsi1/file-earmark-lock.svg create mode 100644 gawa/static/bsi1/file-earmark-lock2-fill.svg create mode 100644 gawa/static/bsi1/file-earmark-lock2.svg create mode 100644 gawa/static/bsi1/file-earmark-medical-fill.svg create mode 100644 gawa/static/bsi1/file-earmark-medical.svg create mode 100644 gawa/static/bsi1/file-earmark-minus-fill.svg create mode 100644 gawa/static/bsi1/file-earmark-minus.svg create mode 100644 gawa/static/bsi1/file-earmark-music-fill.svg create mode 100644 gawa/static/bsi1/file-earmark-music.svg create mode 100644 gawa/static/bsi1/file-earmark-pdf-fill.svg create mode 100644 gawa/static/bsi1/file-earmark-pdf.svg create mode 100644 gawa/static/bsi1/file-earmark-person-fill.svg create mode 100644 gawa/static/bsi1/file-earmark-person.svg create mode 100644 gawa/static/bsi1/file-earmark-play-fill.svg create mode 100644 gawa/static/bsi1/file-earmark-play.svg create mode 100644 gawa/static/bsi1/file-earmark-plus-fill.svg create mode 100644 gawa/static/bsi1/file-earmark-plus.svg create mode 100644 gawa/static/bsi1/file-earmark-post-fill.svg create mode 100644 gawa/static/bsi1/file-earmark-post.svg create mode 100644 gawa/static/bsi1/file-earmark-ppt-fill.svg create mode 100644 gawa/static/bsi1/file-earmark-ppt.svg create mode 100644 gawa/static/bsi1/file-earmark-richtext-fill.svg create mode 100644 gawa/static/bsi1/file-earmark-richtext.svg create mode 100644 gawa/static/bsi1/file-earmark-ruled-fill.svg create mode 100644 gawa/static/bsi1/file-earmark-ruled.svg create mode 100644 gawa/static/bsi1/file-earmark-slides-fill.svg create mode 100644 gawa/static/bsi1/file-earmark-slides.svg create mode 100644 gawa/static/bsi1/file-earmark-spreadsheet-fill.svg create mode 100644 gawa/static/bsi1/file-earmark-spreadsheet.svg create mode 100644 gawa/static/bsi1/file-earmark-text-fill.svg create mode 100644 gawa/static/bsi1/file-earmark-text.svg create mode 100644 gawa/static/bsi1/file-earmark-word-fill.svg create mode 100644 gawa/static/bsi1/file-earmark-word.svg create mode 100644 gawa/static/bsi1/file-earmark-x-fill.svg create mode 100644 gawa/static/bsi1/file-earmark-x.svg create mode 100644 gawa/static/bsi1/file-earmark-zip-fill.svg create mode 100644 gawa/static/bsi1/file-earmark-zip.svg create mode 100644 gawa/static/bsi1/file-earmark.svg create mode 100644 gawa/static/bsi1/file-easel-fill.svg create mode 100644 gawa/static/bsi1/file-easel.svg create mode 100644 gawa/static/bsi1/file-excel-fill.svg create mode 100644 gawa/static/bsi1/file-excel.svg create mode 100644 gawa/static/bsi1/file-fill.svg create mode 100644 gawa/static/bsi1/file-font-fill.svg create mode 100644 gawa/static/bsi1/file-font.svg create mode 100644 gawa/static/bsi1/file-image-fill.svg create mode 100644 gawa/static/bsi1/file-image.svg create mode 100644 gawa/static/bsi1/file-lock-fill.svg create mode 100644 gawa/static/bsi1/file-lock.svg create mode 100644 gawa/static/bsi1/file-lock2-fill.svg create mode 100644 gawa/static/bsi1/file-lock2.svg create mode 100644 gawa/static/bsi1/file-medical-fill.svg create mode 100644 gawa/static/bsi1/file-medical.svg create mode 100644 gawa/static/bsi1/file-minus-fill.svg create mode 100644 gawa/static/bsi1/file-minus.svg create mode 100644 gawa/static/bsi1/file-music-fill.svg create mode 100644 gawa/static/bsi1/file-music.svg create mode 100644 gawa/static/bsi1/file-pdf-fill.svg create mode 100644 gawa/static/bsi1/file-pdf.svg create mode 100644 gawa/static/bsi1/file-person-fill.svg create mode 100644 gawa/static/bsi1/file-person.svg create mode 100644 gawa/static/bsi1/file-play-fill.svg create mode 100644 gawa/static/bsi1/file-play.svg create mode 100644 gawa/static/bsi1/file-plus-fill.svg create mode 100644 gawa/static/bsi1/file-plus.svg create mode 100644 gawa/static/bsi1/file-post-fill.svg create mode 100644 gawa/static/bsi1/file-post.svg create mode 100644 gawa/static/bsi1/file-ppt-fill.svg create mode 100644 gawa/static/bsi1/file-ppt.svg create mode 100644 gawa/static/bsi1/file-richtext-fill.svg create mode 100644 gawa/static/bsi1/file-richtext.svg create mode 100644 gawa/static/bsi1/file-ruled-fill.svg create mode 100644 gawa/static/bsi1/file-ruled.svg create mode 100644 gawa/static/bsi1/file-slides-fill.svg create mode 100644 gawa/static/bsi1/file-slides.svg create mode 100644 gawa/static/bsi1/file-spreadsheet-fill.svg create mode 100644 gawa/static/bsi1/file-spreadsheet.svg create mode 100644 gawa/static/bsi1/file-text-fill.svg create mode 100644 gawa/static/bsi1/file-text.svg create mode 100644 gawa/static/bsi1/file-word-fill.svg create mode 100644 gawa/static/bsi1/file-word.svg create mode 100644 gawa/static/bsi1/file-x-fill.svg create mode 100644 gawa/static/bsi1/file-x.svg create mode 100644 gawa/static/bsi1/file-zip-fill.svg create mode 100644 gawa/static/bsi1/file-zip.svg create mode 100644 gawa/static/bsi1/file.svg create mode 100644 gawa/static/bsi1/files-alt.svg create mode 100644 gawa/static/bsi1/files.svg create mode 100644 gawa/static/bsi1/filetype-aac.svg create mode 100644 gawa/static/bsi1/filetype-ai.svg create mode 100644 gawa/static/bsi1/filetype-bmp.svg create mode 100644 gawa/static/bsi1/filetype-cs.svg create mode 100644 gawa/static/bsi1/filetype-css.svg create mode 100644 gawa/static/bsi1/filetype-csv.svg create mode 100644 gawa/static/bsi1/filetype-doc.svg create mode 100644 gawa/static/bsi1/filetype-docx.svg create mode 100644 gawa/static/bsi1/filetype-exe.svg create mode 100644 gawa/static/bsi1/filetype-gif.svg create mode 100644 gawa/static/bsi1/filetype-heic.svg create mode 100644 gawa/static/bsi1/filetype-html.svg create mode 100644 gawa/static/bsi1/filetype-java.svg create mode 100644 gawa/static/bsi1/filetype-jpg.svg create mode 100644 gawa/static/bsi1/filetype-js.svg create mode 100644 gawa/static/bsi1/filetype-json.svg create mode 100644 gawa/static/bsi1/filetype-jsx.svg create mode 100644 gawa/static/bsi1/filetype-key.svg create mode 100644 gawa/static/bsi1/filetype-m4p.svg create mode 100644 gawa/static/bsi1/filetype-md.svg create mode 100644 gawa/static/bsi1/filetype-mdx.svg create mode 100644 gawa/static/bsi1/filetype-mov.svg create mode 100644 gawa/static/bsi1/filetype-mp3.svg create mode 100644 gawa/static/bsi1/filetype-mp4.svg create mode 100644 gawa/static/bsi1/filetype-otf.svg create mode 100644 gawa/static/bsi1/filetype-pdf.svg create mode 100644 gawa/static/bsi1/filetype-php.svg create mode 100644 gawa/static/bsi1/filetype-png.svg create mode 100644 gawa/static/bsi1/filetype-ppt.svg create mode 100644 gawa/static/bsi1/filetype-pptx.svg create mode 100644 gawa/static/bsi1/filetype-psd.svg create mode 100644 gawa/static/bsi1/filetype-py.svg create mode 100644 gawa/static/bsi1/filetype-raw.svg create mode 100644 gawa/static/bsi1/filetype-rb.svg create mode 100644 gawa/static/bsi1/filetype-sass.svg create mode 100644 gawa/static/bsi1/filetype-scss.svg create mode 100644 gawa/static/bsi1/filetype-sh.svg create mode 100644 gawa/static/bsi1/filetype-sql.svg create mode 100644 gawa/static/bsi1/filetype-svg.svg create mode 100644 gawa/static/bsi1/filetype-tiff.svg create mode 100644 gawa/static/bsi1/filetype-tsx.svg create mode 100644 gawa/static/bsi1/filetype-ttf.svg create mode 100644 gawa/static/bsi1/filetype-txt.svg create mode 100644 gawa/static/bsi1/filetype-wav.svg create mode 100644 gawa/static/bsi1/filetype-woff.svg create mode 100644 gawa/static/bsi1/filetype-xls.svg create mode 100644 gawa/static/bsi1/filetype-xlsx.svg create mode 100644 gawa/static/bsi1/filetype-xml.svg create mode 100644 gawa/static/bsi1/filetype-yml.svg create mode 100644 gawa/static/bsi1/film.svg create mode 100644 gawa/static/bsi1/filter-circle-fill.svg create mode 100644 gawa/static/bsi1/filter-circle.svg create mode 100644 gawa/static/bsi1/filter-left.svg create mode 100644 gawa/static/bsi1/filter-right.svg create mode 100644 gawa/static/bsi1/filter-square-fill.svg create mode 100644 gawa/static/bsi1/filter-square.svg create mode 100644 gawa/static/bsi1/filter.svg create mode 100644 gawa/static/bsi1/fingerprint.svg create mode 100644 gawa/static/bsi1/fire.svg create mode 100644 gawa/static/bsi1/flag-fill.svg create mode 100644 gawa/static/bsi1/flag.svg create mode 100644 gawa/static/bsi1/flower1.svg create mode 100644 gawa/static/bsi1/flower2.svg create mode 100644 gawa/static/bsi1/flower3.svg create mode 100644 gawa/static/bsi1/folder-check.svg create mode 100644 gawa/static/bsi1/folder-fill.svg create mode 100644 gawa/static/bsi1/folder-minus.svg create mode 100644 gawa/static/bsi1/folder-plus.svg create mode 100644 gawa/static/bsi1/folder-symlink-fill.svg create mode 100644 gawa/static/bsi1/folder-symlink.svg create mode 100644 gawa/static/bsi1/folder-x.svg create mode 100644 gawa/static/bsi1/folder.svg create mode 100644 gawa/static/bsi1/folder2-open.svg create mode 100644 gawa/static/bsi1/folder2.svg create mode 100644 gawa/static/bsi1/font/bootstrap-icons.css create mode 100644 gawa/static/bsi1/font/bootstrap-icons.json create mode 100644 gawa/static/bsi1/font/bootstrap-icons.min.css create mode 100644 gawa/static/bsi1/font/bootstrap-icons.scss create mode 100644 gawa/static/bsi1/font/fonts/bootstrap-icons.woff create mode 100644 gawa/static/bsi1/font/fonts/bootstrap-icons.woff2 create mode 100644 gawa/static/bsi1/fonts.svg create mode 100644 gawa/static/bsi1/forward-fill.svg create mode 100644 gawa/static/bsi1/forward.svg create mode 100644 gawa/static/bsi1/front.svg create mode 100644 gawa/static/bsi1/fuel-pump-diesel-fill.svg create mode 100644 gawa/static/bsi1/fuel-pump-diesel.svg create mode 100644 gawa/static/bsi1/fuel-pump-fill.svg create mode 100644 gawa/static/bsi1/fuel-pump.svg create mode 100644 gawa/static/bsi1/fullscreen-exit.svg create mode 100644 gawa/static/bsi1/fullscreen.svg create mode 100644 gawa/static/bsi1/funnel-fill.svg create mode 100644 gawa/static/bsi1/funnel.svg create mode 100644 gawa/static/bsi1/gear-fill.svg create mode 100644 gawa/static/bsi1/gear-wide-connected.svg create mode 100644 gawa/static/bsi1/gear-wide.svg create mode 100644 gawa/static/bsi1/gear.svg create mode 100644 gawa/static/bsi1/gem.svg create mode 100644 gawa/static/bsi1/gender-ambiguous.svg create mode 100644 gawa/static/bsi1/gender-female.svg create mode 100644 gawa/static/bsi1/gender-male.svg create mode 100644 gawa/static/bsi1/gender-trans.svg create mode 100644 gawa/static/bsi1/geo-alt-fill.svg create mode 100644 gawa/static/bsi1/geo-alt.svg create mode 100644 gawa/static/bsi1/geo-fill.svg create mode 100644 gawa/static/bsi1/geo.svg create mode 100644 gawa/static/bsi1/gift-fill.svg create mode 100644 gawa/static/bsi1/gift.svg create mode 100644 gawa/static/bsi1/git.svg create mode 100644 gawa/static/bsi1/github.svg create mode 100644 gawa/static/bsi1/globe-americas.svg create mode 100644 gawa/static/bsi1/globe-asia-australia.svg create mode 100644 gawa/static/bsi1/globe-central-south-asia.svg create mode 100644 gawa/static/bsi1/globe-europe-africa.svg create mode 100644 gawa/static/bsi1/globe.svg create mode 100644 gawa/static/bsi1/globe2.svg create mode 100644 gawa/static/bsi1/google-play.svg create mode 100644 gawa/static/bsi1/google.svg create mode 100644 gawa/static/bsi1/gpu-card.svg create mode 100644 gawa/static/bsi1/graph-down-arrow.svg create mode 100644 gawa/static/bsi1/graph-down.svg create mode 100644 gawa/static/bsi1/graph-up-arrow.svg create mode 100644 gawa/static/bsi1/graph-up.svg create mode 100644 gawa/static/bsi1/grid-1x2-fill.svg create mode 100644 gawa/static/bsi1/grid-1x2.svg create mode 100644 gawa/static/bsi1/grid-3x2-gap-fill.svg create mode 100644 gawa/static/bsi1/grid-3x2-gap.svg create mode 100644 gawa/static/bsi1/grid-3x2.svg create mode 100644 gawa/static/bsi1/grid-3x3-gap-fill.svg create mode 100644 gawa/static/bsi1/grid-3x3-gap.svg create mode 100644 gawa/static/bsi1/grid-3x3.svg create mode 100644 gawa/static/bsi1/grid-fill.svg create mode 100644 gawa/static/bsi1/grid.svg create mode 100644 gawa/static/bsi1/grip-horizontal.svg create mode 100644 gawa/static/bsi1/grip-vertical.svg create mode 100644 gawa/static/bsi1/h-circle-fill.svg create mode 100644 gawa/static/bsi1/h-circle.svg create mode 100644 gawa/static/bsi1/h-square-fill.svg create mode 100644 gawa/static/bsi1/h-square.svg create mode 100644 gawa/static/bsi1/hammer.svg create mode 100644 gawa/static/bsi1/hand-index-fill.svg create mode 100644 gawa/static/bsi1/hand-index-thumb-fill.svg create mode 100644 gawa/static/bsi1/hand-index-thumb.svg create mode 100644 gawa/static/bsi1/hand-index.svg create mode 100644 gawa/static/bsi1/hand-thumbs-down-fill.svg create mode 100644 gawa/static/bsi1/hand-thumbs-down.svg create mode 100644 gawa/static/bsi1/hand-thumbs-up-fill.svg create mode 100644 gawa/static/bsi1/hand-thumbs-up.svg create mode 100644 gawa/static/bsi1/handbag-fill.svg create mode 100644 gawa/static/bsi1/handbag.svg create mode 100644 gawa/static/bsi1/hash.svg create mode 100644 gawa/static/bsi1/hdd-fill.svg create mode 100644 gawa/static/bsi1/hdd-network-fill.svg create mode 100644 gawa/static/bsi1/hdd-network.svg create mode 100644 gawa/static/bsi1/hdd-rack-fill.svg create mode 100644 gawa/static/bsi1/hdd-rack.svg create mode 100644 gawa/static/bsi1/hdd-stack-fill.svg create mode 100644 gawa/static/bsi1/hdd-stack.svg create mode 100644 gawa/static/bsi1/hdd.svg create mode 100644 gawa/static/bsi1/hdmi-fill.svg create mode 100644 gawa/static/bsi1/hdmi.svg create mode 100644 gawa/static/bsi1/headphones.svg create mode 100644 gawa/static/bsi1/headset-vr.svg create mode 100644 gawa/static/bsi1/headset.svg create mode 100644 gawa/static/bsi1/heart-arrow.svg create mode 100644 gawa/static/bsi1/heart-fill.svg create mode 100644 gawa/static/bsi1/heart-half.svg create mode 100644 gawa/static/bsi1/heart-pulse-fill.svg create mode 100644 gawa/static/bsi1/heart-pulse.svg create mode 100644 gawa/static/bsi1/heart.svg create mode 100644 gawa/static/bsi1/heartbreak-fill.svg create mode 100644 gawa/static/bsi1/heartbreak.svg create mode 100644 gawa/static/bsi1/hearts.svg create mode 100644 gawa/static/bsi1/heptagon-fill.svg create mode 100644 gawa/static/bsi1/heptagon-half.svg create mode 100644 gawa/static/bsi1/heptagon.svg create mode 100644 gawa/static/bsi1/hexagon-fill.svg create mode 100644 gawa/static/bsi1/hexagon-half.svg create mode 100644 gawa/static/bsi1/hexagon.svg create mode 100644 gawa/static/bsi1/hospital-fill.svg create mode 100644 gawa/static/bsi1/hospital.svg create mode 100644 gawa/static/bsi1/hourglass-bottom.svg create mode 100644 gawa/static/bsi1/hourglass-split.svg create mode 100644 gawa/static/bsi1/hourglass-top.svg create mode 100644 gawa/static/bsi1/hourglass.svg create mode 100644 gawa/static/bsi1/house-add-fill.svg create mode 100644 gawa/static/bsi1/house-add.svg create mode 100644 gawa/static/bsi1/house-check-fill.svg create mode 100644 gawa/static/bsi1/house-check.svg create mode 100644 gawa/static/bsi1/house-dash-fill.svg create mode 100644 gawa/static/bsi1/house-dash.svg create mode 100644 gawa/static/bsi1/house-door-fill.svg create mode 100644 gawa/static/bsi1/house-door.svg create mode 100644 gawa/static/bsi1/house-down-fill.svg create mode 100644 gawa/static/bsi1/house-down.svg create mode 100644 gawa/static/bsi1/house-exclamation-fill.svg create mode 100644 gawa/static/bsi1/house-exclamation.svg create mode 100644 gawa/static/bsi1/house-fill.svg create mode 100644 gawa/static/bsi1/house-gear-fill.svg create mode 100644 gawa/static/bsi1/house-gear.svg create mode 100644 gawa/static/bsi1/house-heart-fill.svg create mode 100644 gawa/static/bsi1/house-heart.svg create mode 100644 gawa/static/bsi1/house-lock-fill.svg create mode 100644 gawa/static/bsi1/house-lock.svg create mode 100644 gawa/static/bsi1/house-slash-fill.svg create mode 100644 gawa/static/bsi1/house-slash.svg create mode 100644 gawa/static/bsi1/house-up-fill.svg create mode 100644 gawa/static/bsi1/house-up.svg create mode 100644 gawa/static/bsi1/house-x-fill.svg create mode 100644 gawa/static/bsi1/house-x.svg create mode 100644 gawa/static/bsi1/house.svg create mode 100644 gawa/static/bsi1/houses-fill.svg create mode 100644 gawa/static/bsi1/houses.svg create mode 100644 gawa/static/bsi1/hr.svg create mode 100644 gawa/static/bsi1/hurricane.svg create mode 100644 gawa/static/bsi1/hypnotize.svg create mode 100644 gawa/static/bsi1/image-alt.svg create mode 100644 gawa/static/bsi1/image-fill.svg create mode 100644 gawa/static/bsi1/image.svg create mode 100644 gawa/static/bsi1/images.svg create mode 100644 gawa/static/bsi1/inbox-fill.svg create mode 100644 gawa/static/bsi1/inbox.svg create mode 100644 gawa/static/bsi1/inboxes-fill.svg create mode 100644 gawa/static/bsi1/inboxes.svg create mode 100644 gawa/static/bsi1/incognito.svg create mode 100644 gawa/static/bsi1/indent.svg create mode 100644 gawa/static/bsi1/infinity.svg create mode 100644 gawa/static/bsi1/info-circle-fill.svg create mode 100644 gawa/static/bsi1/info-circle.svg create mode 100644 gawa/static/bsi1/info-lg.svg create mode 100644 gawa/static/bsi1/info-square-fill.svg create mode 100644 gawa/static/bsi1/info-square.svg create mode 100644 gawa/static/bsi1/info.svg create mode 100644 gawa/static/bsi1/input-cursor-text.svg create mode 100644 gawa/static/bsi1/input-cursor.svg create mode 100644 gawa/static/bsi1/instagram.svg create mode 100644 gawa/static/bsi1/intersect.svg create mode 100644 gawa/static/bsi1/journal-album.svg create mode 100644 gawa/static/bsi1/journal-arrow-down.svg create mode 100644 gawa/static/bsi1/journal-arrow-up.svg create mode 100644 gawa/static/bsi1/journal-bookmark-fill.svg create mode 100644 gawa/static/bsi1/journal-bookmark.svg create mode 100644 gawa/static/bsi1/journal-check.svg create mode 100644 gawa/static/bsi1/journal-code.svg create mode 100644 gawa/static/bsi1/journal-medical.svg create mode 100644 gawa/static/bsi1/journal-minus.svg create mode 100644 gawa/static/bsi1/journal-plus.svg create mode 100644 gawa/static/bsi1/journal-richtext.svg create mode 100644 gawa/static/bsi1/journal-text.svg create mode 100644 gawa/static/bsi1/journal-x.svg create mode 100644 gawa/static/bsi1/journal.svg create mode 100644 gawa/static/bsi1/journals.svg create mode 100644 gawa/static/bsi1/joystick.svg create mode 100644 gawa/static/bsi1/justify-left.svg create mode 100644 gawa/static/bsi1/justify-right.svg create mode 100644 gawa/static/bsi1/justify.svg create mode 100644 gawa/static/bsi1/kanban-fill.svg create mode 100644 gawa/static/bsi1/kanban.svg create mode 100644 gawa/static/bsi1/key-fill.svg create mode 100644 gawa/static/bsi1/key.svg create mode 100644 gawa/static/bsi1/keyboard-fill.svg create mode 100644 gawa/static/bsi1/keyboard.svg create mode 100644 gawa/static/bsi1/ladder.svg create mode 100644 gawa/static/bsi1/lamp-fill.svg create mode 100644 gawa/static/bsi1/lamp.svg create mode 100644 gawa/static/bsi1/laptop-fill.svg create mode 100644 gawa/static/bsi1/laptop.svg create mode 100644 gawa/static/bsi1/layer-backward.svg create mode 100644 gawa/static/bsi1/layer-forward.svg create mode 100644 gawa/static/bsi1/layers-fill.svg create mode 100644 gawa/static/bsi1/layers-half.svg create mode 100644 gawa/static/bsi1/layers.svg create mode 100644 gawa/static/bsi1/layout-sidebar-inset-reverse.svg create mode 100644 gawa/static/bsi1/layout-sidebar-inset.svg create mode 100644 gawa/static/bsi1/layout-sidebar-reverse.svg create mode 100644 gawa/static/bsi1/layout-sidebar.svg create mode 100644 gawa/static/bsi1/layout-split.svg create mode 100644 gawa/static/bsi1/layout-text-sidebar-reverse.svg create mode 100644 gawa/static/bsi1/layout-text-sidebar.svg create mode 100644 gawa/static/bsi1/layout-text-window-reverse.svg create mode 100644 gawa/static/bsi1/layout-text-window.svg create mode 100644 gawa/static/bsi1/layout-three-columns.svg create mode 100644 gawa/static/bsi1/layout-wtf.svg create mode 100644 gawa/static/bsi1/life-preserver.svg create mode 100644 gawa/static/bsi1/lightbulb-fill.svg create mode 100644 gawa/static/bsi1/lightbulb-off-fill.svg create mode 100644 gawa/static/bsi1/lightbulb-off.svg create mode 100644 gawa/static/bsi1/lightbulb.svg create mode 100644 gawa/static/bsi1/lightning-charge-fill.svg create mode 100644 gawa/static/bsi1/lightning-charge.svg create mode 100644 gawa/static/bsi1/lightning-fill.svg create mode 100644 gawa/static/bsi1/lightning.svg create mode 100644 gawa/static/bsi1/line.svg create mode 100644 gawa/static/bsi1/link-45deg.svg create mode 100644 gawa/static/bsi1/link.svg create mode 100644 gawa/static/bsi1/linkedin.svg create mode 100644 gawa/static/bsi1/list-check.svg create mode 100644 gawa/static/bsi1/list-columns-reverse.svg create mode 100644 gawa/static/bsi1/list-columns.svg create mode 100644 gawa/static/bsi1/list-nested.svg create mode 100644 gawa/static/bsi1/list-ol.svg create mode 100644 gawa/static/bsi1/list-stars.svg create mode 100644 gawa/static/bsi1/list-task.svg create mode 100644 gawa/static/bsi1/list-ul.svg create mode 100644 gawa/static/bsi1/list.svg create mode 100644 gawa/static/bsi1/lock-fill.svg create mode 100644 gawa/static/bsi1/lock.svg create mode 100644 gawa/static/bsi1/lungs-fill.svg create mode 100644 gawa/static/bsi1/lungs.svg create mode 100644 gawa/static/bsi1/magic.svg create mode 100644 gawa/static/bsi1/magnet-fill.svg create mode 100644 gawa/static/bsi1/magnet.svg create mode 100644 gawa/static/bsi1/mailbox.svg create mode 100644 gawa/static/bsi1/mailbox2.svg create mode 100644 gawa/static/bsi1/map-fill.svg create mode 100644 gawa/static/bsi1/map.svg create mode 100644 gawa/static/bsi1/markdown-fill.svg create mode 100644 gawa/static/bsi1/markdown.svg create mode 100644 gawa/static/bsi1/mask.svg create mode 100644 gawa/static/bsi1/mastodon.svg create mode 100644 gawa/static/bsi1/medium.svg create mode 100644 gawa/static/bsi1/megaphone-fill.svg create mode 100644 gawa/static/bsi1/megaphone.svg create mode 100644 gawa/static/bsi1/memory.svg create mode 100644 gawa/static/bsi1/menu-app-fill.svg create mode 100644 gawa/static/bsi1/menu-app.svg create mode 100644 gawa/static/bsi1/menu-button-fill.svg create mode 100644 gawa/static/bsi1/menu-button-wide-fill.svg create mode 100644 gawa/static/bsi1/menu-button-wide.svg create mode 100644 gawa/static/bsi1/menu-button.svg create mode 100644 gawa/static/bsi1/menu-down.svg create mode 100644 gawa/static/bsi1/menu-up.svg create mode 100644 gawa/static/bsi1/messenger.svg create mode 100644 gawa/static/bsi1/meta.svg create mode 100644 gawa/static/bsi1/mic-fill.svg create mode 100644 gawa/static/bsi1/mic-mute-fill.svg create mode 100644 gawa/static/bsi1/mic-mute.svg create mode 100644 gawa/static/bsi1/mic.svg create mode 100644 gawa/static/bsi1/microsoft-teams.svg create mode 100644 gawa/static/bsi1/microsoft.svg create mode 100644 gawa/static/bsi1/minecart-loaded.svg create mode 100644 gawa/static/bsi1/minecart.svg create mode 100644 gawa/static/bsi1/modem-fill.svg create mode 100644 gawa/static/bsi1/modem.svg create mode 100644 gawa/static/bsi1/moisture.svg create mode 100644 gawa/static/bsi1/moon-fill.svg create mode 100644 gawa/static/bsi1/moon-stars-fill.svg create mode 100644 gawa/static/bsi1/moon-stars.svg create mode 100644 gawa/static/bsi1/moon.svg create mode 100644 gawa/static/bsi1/mortarboard-fill.svg create mode 100644 gawa/static/bsi1/mortarboard.svg create mode 100644 gawa/static/bsi1/motherboard-fill.svg create mode 100644 gawa/static/bsi1/motherboard.svg create mode 100644 gawa/static/bsi1/mouse-fill.svg create mode 100644 gawa/static/bsi1/mouse.svg create mode 100644 gawa/static/bsi1/mouse2-fill.svg create mode 100644 gawa/static/bsi1/mouse2.svg create mode 100644 gawa/static/bsi1/mouse3-fill.svg create mode 100644 gawa/static/bsi1/mouse3.svg create mode 100644 gawa/static/bsi1/music-note-beamed.svg create mode 100644 gawa/static/bsi1/music-note-list.svg create mode 100644 gawa/static/bsi1/music-note.svg create mode 100644 gawa/static/bsi1/music-player-fill.svg create mode 100644 gawa/static/bsi1/music-player.svg create mode 100644 gawa/static/bsi1/newspaper.svg create mode 100644 gawa/static/bsi1/nintendo-switch.svg create mode 100644 gawa/static/bsi1/node-minus-fill.svg create mode 100644 gawa/static/bsi1/node-minus.svg create mode 100644 gawa/static/bsi1/node-plus-fill.svg create mode 100644 gawa/static/bsi1/node-plus.svg create mode 100644 gawa/static/bsi1/nut-fill.svg create mode 100644 gawa/static/bsi1/nut.svg create mode 100644 gawa/static/bsi1/nvidia.svg create mode 100644 gawa/static/bsi1/octagon-fill.svg create mode 100644 gawa/static/bsi1/octagon-half.svg create mode 100644 gawa/static/bsi1/octagon.svg create mode 100644 gawa/static/bsi1/optical-audio-fill.svg create mode 100644 gawa/static/bsi1/optical-audio.svg create mode 100644 gawa/static/bsi1/option.svg create mode 100644 gawa/static/bsi1/outlet.svg create mode 100644 gawa/static/bsi1/p-circle-fill.svg create mode 100644 gawa/static/bsi1/p-circle.svg create mode 100644 gawa/static/bsi1/p-square-fill.svg create mode 100644 gawa/static/bsi1/p-square.svg create mode 100644 gawa/static/bsi1/paint-bucket.svg create mode 100644 gawa/static/bsi1/palette-fill.svg create mode 100644 gawa/static/bsi1/palette.svg create mode 100644 gawa/static/bsi1/palette2.svg create mode 100644 gawa/static/bsi1/paperclip.svg create mode 100644 gawa/static/bsi1/paragraph.svg create mode 100644 gawa/static/bsi1/pass-fill.svg create mode 100644 gawa/static/bsi1/pass.svg create mode 100644 gawa/static/bsi1/patch-check-fill.svg create mode 100644 gawa/static/bsi1/patch-check.svg create mode 100644 gawa/static/bsi1/patch-exclamation-fill.svg create mode 100644 gawa/static/bsi1/patch-exclamation.svg create mode 100644 gawa/static/bsi1/patch-minus-fill.svg create mode 100644 gawa/static/bsi1/patch-minus.svg create mode 100644 gawa/static/bsi1/patch-plus-fill.svg create mode 100644 gawa/static/bsi1/patch-plus.svg create mode 100644 gawa/static/bsi1/patch-question-fill.svg create mode 100644 gawa/static/bsi1/patch-question.svg create mode 100644 gawa/static/bsi1/pause-btn-fill.svg create mode 100644 gawa/static/bsi1/pause-btn.svg create mode 100644 gawa/static/bsi1/pause-circle-fill.svg create mode 100644 gawa/static/bsi1/pause-circle.svg create mode 100644 gawa/static/bsi1/pause-fill.svg create mode 100644 gawa/static/bsi1/pause.svg create mode 100644 gawa/static/bsi1/paypal.svg create mode 100644 gawa/static/bsi1/pc-display-horizontal.svg create mode 100644 gawa/static/bsi1/pc-display.svg create mode 100644 gawa/static/bsi1/pc-horizontal.svg create mode 100644 gawa/static/bsi1/pc.svg create mode 100644 gawa/static/bsi1/pci-card.svg create mode 100644 gawa/static/bsi1/peace-fill.svg create mode 100644 gawa/static/bsi1/peace.svg create mode 100644 gawa/static/bsi1/pen-fill.svg create mode 100644 gawa/static/bsi1/pen.svg create mode 100644 gawa/static/bsi1/pencil-fill.svg create mode 100644 gawa/static/bsi1/pencil-square.svg create mode 100644 gawa/static/bsi1/pencil.svg create mode 100644 gawa/static/bsi1/pentagon-fill.svg create mode 100644 gawa/static/bsi1/pentagon-half.svg create mode 100644 gawa/static/bsi1/pentagon.svg create mode 100644 gawa/static/bsi1/people-fill.svg create mode 100644 gawa/static/bsi1/people.svg create mode 100644 gawa/static/bsi1/percent.svg create mode 100644 gawa/static/bsi1/person-add.svg create mode 100644 gawa/static/bsi1/person-badge-fill.svg create mode 100644 gawa/static/bsi1/person-badge.svg create mode 100644 gawa/static/bsi1/person-bounding-box.svg create mode 100644 gawa/static/bsi1/person-check-fill.svg create mode 100644 gawa/static/bsi1/person-check.svg create mode 100644 gawa/static/bsi1/person-circle.svg create mode 100644 gawa/static/bsi1/person-dash-fill.svg create mode 100644 gawa/static/bsi1/person-dash.svg create mode 100644 gawa/static/bsi1/person-down.svg create mode 100644 gawa/static/bsi1/person-exclamation.svg create mode 100644 gawa/static/bsi1/person-fill-add.svg create mode 100644 gawa/static/bsi1/person-fill-check.svg create mode 100644 gawa/static/bsi1/person-fill-dash.svg create mode 100644 gawa/static/bsi1/person-fill-down.svg create mode 100644 gawa/static/bsi1/person-fill-exclamation.svg create mode 100644 gawa/static/bsi1/person-fill-gear.svg create mode 100644 gawa/static/bsi1/person-fill-lock.svg create mode 100644 gawa/static/bsi1/person-fill-slash.svg create mode 100644 gawa/static/bsi1/person-fill-up.svg create mode 100644 gawa/static/bsi1/person-fill-x.svg create mode 100644 gawa/static/bsi1/person-fill.svg create mode 100644 gawa/static/bsi1/person-gear.svg create mode 100644 gawa/static/bsi1/person-heart.svg create mode 100644 gawa/static/bsi1/person-hearts.svg create mode 100644 gawa/static/bsi1/person-lines-fill.svg create mode 100644 gawa/static/bsi1/person-lock.svg create mode 100644 gawa/static/bsi1/person-plus-fill.svg create mode 100644 gawa/static/bsi1/person-plus.svg create mode 100644 gawa/static/bsi1/person-rolodex.svg create mode 100644 gawa/static/bsi1/person-slash.svg create mode 100644 gawa/static/bsi1/person-square.svg create mode 100644 gawa/static/bsi1/person-up.svg create mode 100644 gawa/static/bsi1/person-vcard-fill.svg create mode 100644 gawa/static/bsi1/person-vcard.svg create mode 100644 gawa/static/bsi1/person-video.svg create mode 100644 gawa/static/bsi1/person-video2.svg create mode 100644 gawa/static/bsi1/person-video3.svg create mode 100644 gawa/static/bsi1/person-workspace.svg create mode 100644 gawa/static/bsi1/person-x-fill.svg create mode 100644 gawa/static/bsi1/person-x.svg create mode 100644 gawa/static/bsi1/person.svg create mode 100644 gawa/static/bsi1/phone-fill.svg create mode 100644 gawa/static/bsi1/phone-flip.svg create mode 100644 gawa/static/bsi1/phone-landscape-fill.svg create mode 100644 gawa/static/bsi1/phone-landscape.svg create mode 100644 gawa/static/bsi1/phone-vibrate-fill.svg create mode 100644 gawa/static/bsi1/phone-vibrate.svg create mode 100644 gawa/static/bsi1/phone.svg create mode 100644 gawa/static/bsi1/pie-chart-fill.svg create mode 100644 gawa/static/bsi1/pie-chart.svg create mode 100644 gawa/static/bsi1/piggy-bank-fill.svg create mode 100644 gawa/static/bsi1/piggy-bank.svg create mode 100644 gawa/static/bsi1/pin-angle-fill.svg create mode 100644 gawa/static/bsi1/pin-angle.svg create mode 100644 gawa/static/bsi1/pin-fill.svg create mode 100644 gawa/static/bsi1/pin-map-fill.svg create mode 100644 gawa/static/bsi1/pin-map.svg create mode 100644 gawa/static/bsi1/pin.svg create mode 100644 gawa/static/bsi1/pinterest.svg create mode 100644 gawa/static/bsi1/pip-fill.svg create mode 100644 gawa/static/bsi1/pip.svg create mode 100644 gawa/static/bsi1/play-btn-fill.svg create mode 100644 gawa/static/bsi1/play-btn.svg create mode 100644 gawa/static/bsi1/play-circle-fill.svg create mode 100644 gawa/static/bsi1/play-circle.svg create mode 100644 gawa/static/bsi1/play-fill.svg create mode 100644 gawa/static/bsi1/play.svg create mode 100644 gawa/static/bsi1/playstation.svg create mode 100644 gawa/static/bsi1/plug-fill.svg create mode 100644 gawa/static/bsi1/plug.svg create mode 100644 gawa/static/bsi1/plugin.svg create mode 100644 gawa/static/bsi1/plus-circle-dotted.svg create mode 100644 gawa/static/bsi1/plus-circle-fill.svg create mode 100644 gawa/static/bsi1/plus-circle.svg create mode 100644 gawa/static/bsi1/plus-lg.svg create mode 100644 gawa/static/bsi1/plus-slash-minus.svg create mode 100644 gawa/static/bsi1/plus-square-dotted.svg create mode 100644 gawa/static/bsi1/plus-square-fill.svg create mode 100644 gawa/static/bsi1/plus-square.svg create mode 100644 gawa/static/bsi1/plus.svg create mode 100644 gawa/static/bsi1/postage-fill.svg create mode 100644 gawa/static/bsi1/postage-heart-fill.svg create mode 100644 gawa/static/bsi1/postage-heart.svg create mode 100644 gawa/static/bsi1/postage.svg create mode 100644 gawa/static/bsi1/postcard-fill.svg create mode 100644 gawa/static/bsi1/postcard-heart-fill.svg create mode 100644 gawa/static/bsi1/postcard-heart.svg create mode 100644 gawa/static/bsi1/postcard.svg create mode 100644 gawa/static/bsi1/power.svg create mode 100644 gawa/static/bsi1/prescription.svg create mode 100644 gawa/static/bsi1/prescription2.svg create mode 100644 gawa/static/bsi1/printer-fill.svg create mode 100644 gawa/static/bsi1/printer.svg create mode 100644 gawa/static/bsi1/projector-fill.svg create mode 100644 gawa/static/bsi1/projector.svg create mode 100644 gawa/static/bsi1/puzzle-fill.svg create mode 100644 gawa/static/bsi1/puzzle.svg create mode 100644 gawa/static/bsi1/qr-code-scan.svg create mode 100644 gawa/static/bsi1/qr-code.svg create mode 100644 gawa/static/bsi1/question-circle-fill.svg create mode 100644 gawa/static/bsi1/question-circle.svg create mode 100644 gawa/static/bsi1/question-diamond-fill.svg create mode 100644 gawa/static/bsi1/question-diamond.svg create mode 100644 gawa/static/bsi1/question-lg.svg create mode 100644 gawa/static/bsi1/question-octagon-fill.svg create mode 100644 gawa/static/bsi1/question-octagon.svg create mode 100644 gawa/static/bsi1/question-square-fill.svg create mode 100644 gawa/static/bsi1/question-square.svg create mode 100644 gawa/static/bsi1/question.svg create mode 100644 gawa/static/bsi1/quora.svg create mode 100644 gawa/static/bsi1/quote.svg create mode 100644 gawa/static/bsi1/r-circle-fill.svg create mode 100644 gawa/static/bsi1/r-circle.svg create mode 100644 gawa/static/bsi1/r-square-fill.svg create mode 100644 gawa/static/bsi1/r-square.svg create mode 100644 gawa/static/bsi1/radioactive.svg create mode 100644 gawa/static/bsi1/rainbow.svg create mode 100644 gawa/static/bsi1/receipt-cutoff.svg create mode 100644 gawa/static/bsi1/receipt.svg create mode 100644 gawa/static/bsi1/reception-0.svg create mode 100644 gawa/static/bsi1/reception-1.svg create mode 100644 gawa/static/bsi1/reception-2.svg create mode 100644 gawa/static/bsi1/reception-3.svg create mode 100644 gawa/static/bsi1/reception-4.svg create mode 100644 gawa/static/bsi1/record-btn-fill.svg create mode 100644 gawa/static/bsi1/record-btn.svg create mode 100644 gawa/static/bsi1/record-circle-fill.svg create mode 100644 gawa/static/bsi1/record-circle.svg create mode 100644 gawa/static/bsi1/record-fill.svg create mode 100644 gawa/static/bsi1/record.svg create mode 100644 gawa/static/bsi1/record2-fill.svg create mode 100644 gawa/static/bsi1/record2.svg create mode 100644 gawa/static/bsi1/recycle.svg create mode 100644 gawa/static/bsi1/reddit.svg create mode 100644 gawa/static/bsi1/regex.svg create mode 100644 gawa/static/bsi1/repeat-1.svg create mode 100644 gawa/static/bsi1/repeat.svg create mode 100644 gawa/static/bsi1/reply-all-fill.svg create mode 100644 gawa/static/bsi1/reply-all.svg create mode 100644 gawa/static/bsi1/reply-fill.svg create mode 100644 gawa/static/bsi1/reply.svg create mode 100644 gawa/static/bsi1/rewind-btn-fill.svg create mode 100644 gawa/static/bsi1/rewind-btn.svg create mode 100644 gawa/static/bsi1/rewind-circle-fill.svg create mode 100644 gawa/static/bsi1/rewind-circle.svg create mode 100644 gawa/static/bsi1/rewind-fill.svg create mode 100644 gawa/static/bsi1/rewind.svg create mode 100644 gawa/static/bsi1/robot.svg create mode 100644 gawa/static/bsi1/rocket-fill.svg create mode 100644 gawa/static/bsi1/rocket-takeoff-fill.svg create mode 100644 gawa/static/bsi1/rocket-takeoff.svg create mode 100644 gawa/static/bsi1/rocket.svg create mode 100644 gawa/static/bsi1/router-fill.svg create mode 100644 gawa/static/bsi1/router.svg create mode 100644 gawa/static/bsi1/rss-fill.svg create mode 100644 gawa/static/bsi1/rss.svg create mode 100644 gawa/static/bsi1/rulers.svg create mode 100644 gawa/static/bsi1/safe-fill.svg create mode 100644 gawa/static/bsi1/safe.svg create mode 100644 gawa/static/bsi1/safe2-fill.svg create mode 100644 gawa/static/bsi1/safe2.svg create mode 100644 gawa/static/bsi1/save-fill.svg create mode 100644 gawa/static/bsi1/save.svg create mode 100644 gawa/static/bsi1/save2-fill.svg create mode 100644 gawa/static/bsi1/save2.svg create mode 100644 gawa/static/bsi1/scissors.svg create mode 100644 gawa/static/bsi1/scooter.svg create mode 100644 gawa/static/bsi1/screwdriver.svg create mode 100644 gawa/static/bsi1/sd-card-fill.svg create mode 100644 gawa/static/bsi1/sd-card.svg create mode 100644 gawa/static/bsi1/search-heart-fill.svg create mode 100644 gawa/static/bsi1/search-heart.svg create mode 100644 gawa/static/bsi1/search.svg create mode 100644 gawa/static/bsi1/segmented-nav.svg create mode 100644 gawa/static/bsi1/send-check-fill.svg create mode 100644 gawa/static/bsi1/send-check.svg create mode 100644 gawa/static/bsi1/send-dash-fill.svg create mode 100644 gawa/static/bsi1/send-dash.svg create mode 100644 gawa/static/bsi1/send-exclamation-fill.svg create mode 100644 gawa/static/bsi1/send-exclamation.svg create mode 100644 gawa/static/bsi1/send-fill.svg create mode 100644 gawa/static/bsi1/send-plus-fill.svg create mode 100644 gawa/static/bsi1/send-plus.svg create mode 100644 gawa/static/bsi1/send-slash-fill.svg create mode 100644 gawa/static/bsi1/send-slash.svg create mode 100644 gawa/static/bsi1/send-x-fill.svg create mode 100644 gawa/static/bsi1/send-x.svg create mode 100644 gawa/static/bsi1/send.svg create mode 100644 gawa/static/bsi1/server.svg create mode 100644 gawa/static/bsi1/share-fill.svg create mode 100644 gawa/static/bsi1/share.svg create mode 100644 gawa/static/bsi1/shield-check.svg create mode 100644 gawa/static/bsi1/shield-exclamation.svg create mode 100644 gawa/static/bsi1/shield-fill-check.svg create mode 100644 gawa/static/bsi1/shield-fill-exclamation.svg create mode 100644 gawa/static/bsi1/shield-fill-minus.svg create mode 100644 gawa/static/bsi1/shield-fill-plus.svg create mode 100644 gawa/static/bsi1/shield-fill-x.svg create mode 100644 gawa/static/bsi1/shield-fill.svg create mode 100644 gawa/static/bsi1/shield-lock-fill.svg create mode 100644 gawa/static/bsi1/shield-lock.svg create mode 100644 gawa/static/bsi1/shield-minus.svg create mode 100644 gawa/static/bsi1/shield-plus.svg create mode 100644 gawa/static/bsi1/shield-shaded.svg create mode 100644 gawa/static/bsi1/shield-slash-fill.svg create mode 100644 gawa/static/bsi1/shield-slash.svg create mode 100644 gawa/static/bsi1/shield-x.svg create mode 100644 gawa/static/bsi1/shield.svg create mode 100644 gawa/static/bsi1/shift-fill.svg create mode 100644 gawa/static/bsi1/shift.svg create mode 100644 gawa/static/bsi1/shop-window.svg create mode 100644 gawa/static/bsi1/shop.svg create mode 100644 gawa/static/bsi1/shuffle.svg create mode 100644 gawa/static/bsi1/sign-dead-end-fill.svg create mode 100644 gawa/static/bsi1/sign-dead-end.svg create mode 100644 gawa/static/bsi1/sign-do-not-enter-fill.svg create mode 100644 gawa/static/bsi1/sign-do-not-enter.svg create mode 100644 gawa/static/bsi1/sign-intersection-fill.svg create mode 100644 gawa/static/bsi1/sign-intersection-side-fill.svg create mode 100644 gawa/static/bsi1/sign-intersection-side.svg create mode 100644 gawa/static/bsi1/sign-intersection-t-fill.svg create mode 100644 gawa/static/bsi1/sign-intersection-t.svg create mode 100644 gawa/static/bsi1/sign-intersection-y-fill.svg create mode 100644 gawa/static/bsi1/sign-intersection-y.svg create mode 100644 gawa/static/bsi1/sign-intersection.svg create mode 100644 gawa/static/bsi1/sign-merge-left-fill.svg create mode 100644 gawa/static/bsi1/sign-merge-left.svg create mode 100644 gawa/static/bsi1/sign-merge-right-fill.svg create mode 100644 gawa/static/bsi1/sign-merge-right.svg create mode 100644 gawa/static/bsi1/sign-no-left-turn-fill.svg create mode 100644 gawa/static/bsi1/sign-no-left-turn.svg create mode 100644 gawa/static/bsi1/sign-no-parking-fill.svg create mode 100644 gawa/static/bsi1/sign-no-parking.svg create mode 100644 gawa/static/bsi1/sign-no-right-turn-fill.svg create mode 100644 gawa/static/bsi1/sign-no-right-turn.svg create mode 100644 gawa/static/bsi1/sign-railroad-fill.svg create mode 100644 gawa/static/bsi1/sign-railroad.svg create mode 100644 gawa/static/bsi1/sign-stop-fill.svg create mode 100644 gawa/static/bsi1/sign-stop-lights-fill.svg create mode 100644 gawa/static/bsi1/sign-stop-lights.svg create mode 100644 gawa/static/bsi1/sign-stop.svg create mode 100644 gawa/static/bsi1/sign-turn-left-fill.svg create mode 100644 gawa/static/bsi1/sign-turn-left.svg create mode 100644 gawa/static/bsi1/sign-turn-right-fill.svg create mode 100644 gawa/static/bsi1/sign-turn-right.svg create mode 100644 gawa/static/bsi1/sign-turn-slight-left-fill.svg create mode 100644 gawa/static/bsi1/sign-turn-slight-left.svg create mode 100644 gawa/static/bsi1/sign-turn-slight-right-fill.svg create mode 100644 gawa/static/bsi1/sign-turn-slight-right.svg create mode 100644 gawa/static/bsi1/sign-yield-fill.svg create mode 100644 gawa/static/bsi1/sign-yield.svg create mode 100644 gawa/static/bsi1/signal.svg create mode 100644 gawa/static/bsi1/signpost-2-fill.svg create mode 100644 gawa/static/bsi1/signpost-2.svg create mode 100644 gawa/static/bsi1/signpost-fill.svg create mode 100644 gawa/static/bsi1/signpost-split-fill.svg create mode 100644 gawa/static/bsi1/signpost-split.svg create mode 100644 gawa/static/bsi1/signpost.svg create mode 100644 gawa/static/bsi1/sim-fill.svg create mode 100644 gawa/static/bsi1/sim.svg create mode 100644 gawa/static/bsi1/sina-weibo.svg create mode 100644 gawa/static/bsi1/skip-backward-btn-fill.svg create mode 100644 gawa/static/bsi1/skip-backward-btn.svg create mode 100644 gawa/static/bsi1/skip-backward-circle-fill.svg create mode 100644 gawa/static/bsi1/skip-backward-circle.svg create mode 100644 gawa/static/bsi1/skip-backward-fill.svg create mode 100644 gawa/static/bsi1/skip-backward.svg create mode 100644 gawa/static/bsi1/skip-end-btn-fill.svg create mode 100644 gawa/static/bsi1/skip-end-btn.svg create mode 100644 gawa/static/bsi1/skip-end-circle-fill.svg create mode 100644 gawa/static/bsi1/skip-end-circle.svg create mode 100644 gawa/static/bsi1/skip-end-fill.svg create mode 100644 gawa/static/bsi1/skip-end.svg create mode 100644 gawa/static/bsi1/skip-forward-btn-fill.svg create mode 100644 gawa/static/bsi1/skip-forward-btn.svg create mode 100644 gawa/static/bsi1/skip-forward-circle-fill.svg create mode 100644 gawa/static/bsi1/skip-forward-circle.svg create mode 100644 gawa/static/bsi1/skip-forward-fill.svg create mode 100644 gawa/static/bsi1/skip-forward.svg create mode 100644 gawa/static/bsi1/skip-start-btn-fill.svg create mode 100644 gawa/static/bsi1/skip-start-btn.svg create mode 100644 gawa/static/bsi1/skip-start-circle-fill.svg create mode 100644 gawa/static/bsi1/skip-start-circle.svg create mode 100644 gawa/static/bsi1/skip-start-fill.svg create mode 100644 gawa/static/bsi1/skip-start.svg create mode 100644 gawa/static/bsi1/skype.svg create mode 100644 gawa/static/bsi1/slack.svg create mode 100644 gawa/static/bsi1/slash-circle-fill.svg create mode 100644 gawa/static/bsi1/slash-circle.svg create mode 100644 gawa/static/bsi1/slash-lg.svg create mode 100644 gawa/static/bsi1/slash-square-fill.svg create mode 100644 gawa/static/bsi1/slash-square.svg create mode 100644 gawa/static/bsi1/slash.svg create mode 100644 gawa/static/bsi1/sliders.svg create mode 100644 gawa/static/bsi1/sliders2-vertical.svg create mode 100644 gawa/static/bsi1/sliders2.svg create mode 100644 gawa/static/bsi1/smartwatch.svg create mode 100644 gawa/static/bsi1/snapchat.svg create mode 100644 gawa/static/bsi1/snow.svg create mode 100644 gawa/static/bsi1/snow2.svg create mode 100644 gawa/static/bsi1/snow3.svg create mode 100644 gawa/static/bsi1/sort-alpha-down-alt.svg create mode 100644 gawa/static/bsi1/sort-alpha-down.svg create mode 100644 gawa/static/bsi1/sort-alpha-up-alt.svg create mode 100644 gawa/static/bsi1/sort-alpha-up.svg create mode 100644 gawa/static/bsi1/sort-down-alt.svg create mode 100644 gawa/static/bsi1/sort-down.svg create mode 100644 gawa/static/bsi1/sort-numeric-down-alt.svg create mode 100644 gawa/static/bsi1/sort-numeric-down.svg create mode 100644 gawa/static/bsi1/sort-numeric-up-alt.svg create mode 100644 gawa/static/bsi1/sort-numeric-up.svg create mode 100644 gawa/static/bsi1/sort-up-alt.svg create mode 100644 gawa/static/bsi1/sort-up.svg create mode 100644 gawa/static/bsi1/soundwave.svg create mode 100644 gawa/static/bsi1/speaker-fill.svg create mode 100644 gawa/static/bsi1/speaker.svg create mode 100644 gawa/static/bsi1/speedometer.svg create mode 100644 gawa/static/bsi1/speedometer2.svg create mode 100644 gawa/static/bsi1/spellcheck.svg create mode 100644 gawa/static/bsi1/spotify.svg create mode 100644 gawa/static/bsi1/square-fill.svg create mode 100644 gawa/static/bsi1/square-half.svg create mode 100644 gawa/static/bsi1/square.svg create mode 100644 gawa/static/bsi1/stack-overflow.svg create mode 100644 gawa/static/bsi1/stack.svg create mode 100644 gawa/static/bsi1/star-fill.svg create mode 100644 gawa/static/bsi1/star-half.svg create mode 100644 gawa/static/bsi1/star.svg create mode 100644 gawa/static/bsi1/stars.svg create mode 100644 gawa/static/bsi1/steam.svg create mode 100644 gawa/static/bsi1/stickies-fill.svg create mode 100644 gawa/static/bsi1/stickies.svg create mode 100644 gawa/static/bsi1/sticky-fill.svg create mode 100644 gawa/static/bsi1/sticky.svg create mode 100644 gawa/static/bsi1/stop-btn-fill.svg create mode 100644 gawa/static/bsi1/stop-btn.svg create mode 100644 gawa/static/bsi1/stop-circle-fill.svg create mode 100644 gawa/static/bsi1/stop-circle.svg create mode 100644 gawa/static/bsi1/stop-fill.svg create mode 100644 gawa/static/bsi1/stop.svg create mode 100644 gawa/static/bsi1/stoplights-fill.svg create mode 100644 gawa/static/bsi1/stoplights.svg create mode 100644 gawa/static/bsi1/stopwatch-fill.svg create mode 100644 gawa/static/bsi1/stopwatch.svg create mode 100644 gawa/static/bsi1/strava.svg create mode 100644 gawa/static/bsi1/stripe.svg create mode 100644 gawa/static/bsi1/subscript.svg create mode 100644 gawa/static/bsi1/subtract.svg create mode 100644 gawa/static/bsi1/suit-club-fill.svg create mode 100644 gawa/static/bsi1/suit-club.svg create mode 100644 gawa/static/bsi1/suit-diamond-fill.svg create mode 100644 gawa/static/bsi1/suit-diamond.svg create mode 100644 gawa/static/bsi1/suit-heart-fill.svg create mode 100644 gawa/static/bsi1/suit-heart.svg create mode 100644 gawa/static/bsi1/suit-spade-fill.svg create mode 100644 gawa/static/bsi1/suit-spade.svg create mode 100644 gawa/static/bsi1/sun-fill.svg create mode 100644 gawa/static/bsi1/sun.svg create mode 100644 gawa/static/bsi1/sunglasses.svg create mode 100644 gawa/static/bsi1/sunrise-fill.svg create mode 100644 gawa/static/bsi1/sunrise.svg create mode 100644 gawa/static/bsi1/sunset-fill.svg create mode 100644 gawa/static/bsi1/sunset.svg create mode 100644 gawa/static/bsi1/superscript.svg create mode 100644 gawa/static/bsi1/symmetry-horizontal.svg create mode 100644 gawa/static/bsi1/symmetry-vertical.svg create mode 100644 gawa/static/bsi1/table.svg create mode 100644 gawa/static/bsi1/tablet-fill.svg create mode 100644 gawa/static/bsi1/tablet-landscape-fill.svg create mode 100644 gawa/static/bsi1/tablet-landscape.svg create mode 100644 gawa/static/bsi1/tablet.svg create mode 100644 gawa/static/bsi1/tag-fill.svg create mode 100644 gawa/static/bsi1/tag.svg create mode 100644 gawa/static/bsi1/tags-fill.svg create mode 100644 gawa/static/bsi1/tags.svg create mode 100644 gawa/static/bsi1/taxi-front-fill.svg create mode 100644 gawa/static/bsi1/taxi-front.svg create mode 100644 gawa/static/bsi1/telegram.svg create mode 100644 gawa/static/bsi1/telephone-fill.svg create mode 100644 gawa/static/bsi1/telephone-forward-fill.svg create mode 100644 gawa/static/bsi1/telephone-forward.svg create mode 100644 gawa/static/bsi1/telephone-inbound-fill.svg create mode 100644 gawa/static/bsi1/telephone-inbound.svg create mode 100644 gawa/static/bsi1/telephone-minus-fill.svg create mode 100644 gawa/static/bsi1/telephone-minus.svg create mode 100644 gawa/static/bsi1/telephone-outbound-fill.svg create mode 100644 gawa/static/bsi1/telephone-outbound.svg create mode 100644 gawa/static/bsi1/telephone-plus-fill.svg create mode 100644 gawa/static/bsi1/telephone-plus.svg create mode 100644 gawa/static/bsi1/telephone-x-fill.svg create mode 100644 gawa/static/bsi1/telephone-x.svg create mode 100644 gawa/static/bsi1/telephone.svg create mode 100644 gawa/static/bsi1/tencent-qq.svg create mode 100644 gawa/static/bsi1/terminal-dash.svg create mode 100644 gawa/static/bsi1/terminal-fill.svg create mode 100644 gawa/static/bsi1/terminal-plus.svg create mode 100644 gawa/static/bsi1/terminal-split.svg create mode 100644 gawa/static/bsi1/terminal-x.svg create mode 100644 gawa/static/bsi1/terminal.svg create mode 100644 gawa/static/bsi1/text-center.svg create mode 100644 gawa/static/bsi1/text-indent-left.svg create mode 100644 gawa/static/bsi1/text-indent-right.svg create mode 100644 gawa/static/bsi1/text-left.svg create mode 100644 gawa/static/bsi1/text-paragraph.svg create mode 100644 gawa/static/bsi1/text-right.svg create mode 100644 gawa/static/bsi1/text-wrap.svg create mode 100644 gawa/static/bsi1/textarea-resize.svg create mode 100644 gawa/static/bsi1/textarea-t.svg create mode 100644 gawa/static/bsi1/textarea.svg create mode 100644 gawa/static/bsi1/thermometer-half.svg create mode 100644 gawa/static/bsi1/thermometer-high.svg create mode 100644 gawa/static/bsi1/thermometer-low.svg create mode 100644 gawa/static/bsi1/thermometer-snow.svg create mode 100644 gawa/static/bsi1/thermometer-sun.svg create mode 100644 gawa/static/bsi1/thermometer.svg create mode 100644 gawa/static/bsi1/three-dots-vertical.svg create mode 100644 gawa/static/bsi1/three-dots.svg create mode 100644 gawa/static/bsi1/thunderbolt-fill.svg create mode 100644 gawa/static/bsi1/thunderbolt.svg create mode 100644 gawa/static/bsi1/ticket-detailed-fill.svg create mode 100644 gawa/static/bsi1/ticket-detailed.svg create mode 100644 gawa/static/bsi1/ticket-fill.svg create mode 100644 gawa/static/bsi1/ticket-perforated-fill.svg create mode 100644 gawa/static/bsi1/ticket-perforated.svg create mode 100644 gawa/static/bsi1/ticket.svg create mode 100644 gawa/static/bsi1/tiktok.svg create mode 100644 gawa/static/bsi1/toggle-off.svg create mode 100644 gawa/static/bsi1/toggle-on.svg create mode 100644 gawa/static/bsi1/toggle2-off.svg create mode 100644 gawa/static/bsi1/toggle2-on.svg create mode 100644 gawa/static/bsi1/toggles.svg create mode 100644 gawa/static/bsi1/toggles2.svg create mode 100644 gawa/static/bsi1/tools.svg create mode 100644 gawa/static/bsi1/tornado.svg create mode 100644 gawa/static/bsi1/train-freight-front-fill.svg create mode 100644 gawa/static/bsi1/train-freight-front.svg create mode 100644 gawa/static/bsi1/train-front-fill.svg create mode 100644 gawa/static/bsi1/train-front.svg create mode 100644 gawa/static/bsi1/train-lightrail-front-fill.svg create mode 100644 gawa/static/bsi1/train-lightrail-front.svg create mode 100644 gawa/static/bsi1/translate.svg create mode 100644 gawa/static/bsi1/trash-fill.svg create mode 100644 gawa/static/bsi1/trash.svg create mode 100644 gawa/static/bsi1/trash2-fill.svg create mode 100644 gawa/static/bsi1/trash2.svg create mode 100644 gawa/static/bsi1/trash3-fill.svg create mode 100644 gawa/static/bsi1/trash3.svg create mode 100644 gawa/static/bsi1/tree-fill.svg create mode 100644 gawa/static/bsi1/tree.svg create mode 100644 gawa/static/bsi1/trello.svg create mode 100644 gawa/static/bsi1/triangle-fill.svg create mode 100644 gawa/static/bsi1/triangle-half.svg create mode 100644 gawa/static/bsi1/triangle.svg create mode 100644 gawa/static/bsi1/trophy-fill.svg create mode 100644 gawa/static/bsi1/trophy.svg create mode 100644 gawa/static/bsi1/tropical-storm.svg create mode 100644 gawa/static/bsi1/truck-flatbed.svg create mode 100644 gawa/static/bsi1/truck-front-fill.svg create mode 100644 gawa/static/bsi1/truck-front.svg create mode 100644 gawa/static/bsi1/truck.svg create mode 100644 gawa/static/bsi1/tsunami.svg create mode 100644 gawa/static/bsi1/tv-fill.svg create mode 100644 gawa/static/bsi1/tv.svg create mode 100644 gawa/static/bsi1/twitch.svg create mode 100644 gawa/static/bsi1/twitter.svg create mode 100644 gawa/static/bsi1/type-bold.svg create mode 100644 gawa/static/bsi1/type-h1.svg create mode 100644 gawa/static/bsi1/type-h2.svg create mode 100644 gawa/static/bsi1/type-h3.svg create mode 100644 gawa/static/bsi1/type-italic.svg create mode 100644 gawa/static/bsi1/type-strikethrough.svg create mode 100644 gawa/static/bsi1/type-underline.svg create mode 100644 gawa/static/bsi1/type.svg create mode 100644 gawa/static/bsi1/ubuntu.svg create mode 100644 gawa/static/bsi1/ui-checks-grid.svg create mode 100644 gawa/static/bsi1/ui-checks.svg create mode 100644 gawa/static/bsi1/ui-radios-grid.svg create mode 100644 gawa/static/bsi1/ui-radios.svg create mode 100644 gawa/static/bsi1/umbrella-fill.svg create mode 100644 gawa/static/bsi1/umbrella.svg create mode 100644 gawa/static/bsi1/unindent.svg create mode 100644 gawa/static/bsi1/union.svg create mode 100644 gawa/static/bsi1/unity.svg create mode 100644 gawa/static/bsi1/universal-access-circle.svg create mode 100644 gawa/static/bsi1/universal-access.svg create mode 100644 gawa/static/bsi1/unlock-fill.svg create mode 100644 gawa/static/bsi1/unlock.svg create mode 100644 gawa/static/bsi1/upc-scan.svg create mode 100644 gawa/static/bsi1/upc.svg create mode 100644 gawa/static/bsi1/upload.svg create mode 100644 gawa/static/bsi1/usb-c-fill.svg create mode 100644 gawa/static/bsi1/usb-c.svg create mode 100644 gawa/static/bsi1/usb-drive-fill.svg create mode 100644 gawa/static/bsi1/usb-drive.svg create mode 100644 gawa/static/bsi1/usb-fill.svg create mode 100644 gawa/static/bsi1/usb-micro-fill.svg create mode 100644 gawa/static/bsi1/usb-micro.svg create mode 100644 gawa/static/bsi1/usb-mini-fill.svg create mode 100644 gawa/static/bsi1/usb-mini.svg create mode 100644 gawa/static/bsi1/usb-plug-fill.svg create mode 100644 gawa/static/bsi1/usb-plug.svg create mode 100644 gawa/static/bsi1/usb-symbol.svg create mode 100644 gawa/static/bsi1/usb.svg create mode 100644 gawa/static/bsi1/valentine.svg create mode 100644 gawa/static/bsi1/valentine2.svg create mode 100644 gawa/static/bsi1/vector-pen.svg create mode 100644 gawa/static/bsi1/view-list.svg create mode 100644 gawa/static/bsi1/view-stacked.svg create mode 100644 gawa/static/bsi1/vimeo.svg create mode 100644 gawa/static/bsi1/vinyl-fill.svg create mode 100644 gawa/static/bsi1/vinyl.svg create mode 100644 gawa/static/bsi1/virus.svg create mode 100644 gawa/static/bsi1/virus2.svg create mode 100644 gawa/static/bsi1/voicemail.svg create mode 100644 gawa/static/bsi1/volume-down-fill.svg create mode 100644 gawa/static/bsi1/volume-down.svg create mode 100644 gawa/static/bsi1/volume-mute-fill.svg create mode 100644 gawa/static/bsi1/volume-mute.svg create mode 100644 gawa/static/bsi1/volume-off-fill.svg create mode 100644 gawa/static/bsi1/volume-off.svg create mode 100644 gawa/static/bsi1/volume-up-fill.svg create mode 100644 gawa/static/bsi1/volume-up.svg create mode 100644 gawa/static/bsi1/vr.svg create mode 100644 gawa/static/bsi1/wallet-fill.svg create mode 100644 gawa/static/bsi1/wallet.svg create mode 100644 gawa/static/bsi1/wallet2.svg create mode 100644 gawa/static/bsi1/watch.svg create mode 100644 gawa/static/bsi1/water.svg create mode 100644 gawa/static/bsi1/webcam-fill.svg create mode 100644 gawa/static/bsi1/webcam.svg create mode 100644 gawa/static/bsi1/wechat.svg create mode 100644 gawa/static/bsi1/whatsapp.svg create mode 100644 gawa/static/bsi1/wifi-1.svg create mode 100644 gawa/static/bsi1/wifi-2.svg create mode 100644 gawa/static/bsi1/wifi-off.svg create mode 100644 gawa/static/bsi1/wifi.svg create mode 100644 gawa/static/bsi1/wikipedia.svg create mode 100644 gawa/static/bsi1/wind.svg create mode 100644 gawa/static/bsi1/window-dash.svg create mode 100644 gawa/static/bsi1/window-desktop.svg create mode 100644 gawa/static/bsi1/window-dock.svg create mode 100644 gawa/static/bsi1/window-fullscreen.svg create mode 100644 gawa/static/bsi1/window-plus.svg create mode 100644 gawa/static/bsi1/window-sidebar.svg create mode 100644 gawa/static/bsi1/window-split.svg create mode 100644 gawa/static/bsi1/window-stack.svg create mode 100644 gawa/static/bsi1/window-x.svg create mode 100644 gawa/static/bsi1/window.svg create mode 100644 gawa/static/bsi1/windows.svg create mode 100644 gawa/static/bsi1/wordpress.svg create mode 100644 gawa/static/bsi1/wrench-adjustable-circle-fill.svg create mode 100644 gawa/static/bsi1/wrench-adjustable-circle.svg create mode 100644 gawa/static/bsi1/wrench-adjustable.svg create mode 100644 gawa/static/bsi1/wrench.svg create mode 100644 gawa/static/bsi1/x-circle-fill.svg create mode 100644 gawa/static/bsi1/x-circle.svg create mode 100644 gawa/static/bsi1/x-diamond-fill.svg create mode 100644 gawa/static/bsi1/x-diamond.svg create mode 100644 gawa/static/bsi1/x-lg.svg create mode 100644 gawa/static/bsi1/x-octagon-fill.svg create mode 100644 gawa/static/bsi1/x-octagon.svg create mode 100644 gawa/static/bsi1/x-square-fill.svg create mode 100644 gawa/static/bsi1/x-square.svg create mode 100644 gawa/static/bsi1/x.svg create mode 100644 gawa/static/bsi1/xbox.svg create mode 100644 gawa/static/bsi1/yelp.svg create mode 100644 gawa/static/bsi1/yin-yang.svg create mode 100644 gawa/static/bsi1/youtube.svg create mode 100644 gawa/static/bsi1/zoom-in.svg create mode 100644 gawa/static/bsi1/zoom-out.svg create mode 100644 gawa/static/codehighlight.css create mode 100644 gawa/static/custom.css create mode 100644 gawa/static/custom.js diff --git a/.gitignore b/.gitignore index 1a1445b..2e46773 100644 --- a/.gitignore +++ b/.gitignore @@ -21,4 +21,3 @@ gawa/media/CACHE gawa/static/CACHE site/static/CACHE gawa/media/img/links/favicons -gawa/static diff --git a/gawa/static/admin/css/autocomplete.css b/gawa/static/admin/css/autocomplete.css new file mode 100644 index 0000000..69c94e7 --- /dev/null +++ b/gawa/static/admin/css/autocomplete.css @@ -0,0 +1,275 @@ +select.admin-autocomplete { + width: 20em; +} + +.select2-container--admin-autocomplete.select2-container { + min-height: 30px; +} + +.select2-container--admin-autocomplete .select2-selection--single, +.select2-container--admin-autocomplete .select2-selection--multiple { + min-height: 30px; + padding: 0; +} + +.select2-container--admin-autocomplete.select2-container--focus .select2-selection, +.select2-container--admin-autocomplete.select2-container--open .select2-selection { + border-color: var(--body-quiet-color); + min-height: 30px; +} + +.select2-container--admin-autocomplete.select2-container--focus .select2-selection.select2-selection--single, +.select2-container--admin-autocomplete.select2-container--open .select2-selection.select2-selection--single { + padding: 0; +} + +.select2-container--admin-autocomplete.select2-container--focus .select2-selection.select2-selection--multiple, +.select2-container--admin-autocomplete.select2-container--open .select2-selection.select2-selection--multiple { + padding: 0; +} + +.select2-container--admin-autocomplete .select2-selection--single { + background-color: var(--body-bg); + border: 1px solid var(--border-color); + border-radius: 4px; +} + +.select2-container--admin-autocomplete .select2-selection--single .select2-selection__rendered { + color: var(--body-fg); + line-height: 30px; +} + +.select2-container--admin-autocomplete .select2-selection--single .select2-selection__clear { + cursor: pointer; + float: right; + font-weight: bold; +} + +.select2-container--admin-autocomplete .select2-selection--single .select2-selection__placeholder { + color: var(--body-quiet-color); +} + +.select2-container--admin-autocomplete .select2-selection--single .select2-selection__arrow { + height: 26px; + position: absolute; + top: 1px; + right: 1px; + width: 20px; +} + +.select2-container--admin-autocomplete .select2-selection--single .select2-selection__arrow b { + border-color: #888 transparent transparent transparent; + border-style: solid; + border-width: 5px 4px 0 4px; + height: 0; + left: 50%; + margin-left: -4px; + margin-top: -2px; + position: absolute; + top: 50%; + width: 0; +} + +.select2-container--admin-autocomplete[dir="rtl"] .select2-selection--single .select2-selection__clear { + float: left; +} + +.select2-container--admin-autocomplete[dir="rtl"] .select2-selection--single .select2-selection__arrow { + left: 1px; + right: auto; +} + +.select2-container--admin-autocomplete.select2-container--disabled .select2-selection--single { + background-color: var(--darkened-bg); + cursor: default; +} + +.select2-container--admin-autocomplete.select2-container--disabled .select2-selection--single .select2-selection__clear { + display: none; +} + +.select2-container--admin-autocomplete.select2-container--open .select2-selection--single .select2-selection__arrow b { + border-color: transparent transparent #888 transparent; + border-width: 0 4px 5px 4px; +} + +.select2-container--admin-autocomplete .select2-selection--multiple { + background-color: var(--body-bg); + border: 1px solid var(--border-color); + border-radius: 4px; + cursor: text; +} + +.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__rendered { + box-sizing: border-box; + list-style: none; + margin: 0; + padding: 0 10px 5px 5px; + width: 100%; + display: flex; + flex-wrap: wrap; +} + +.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__rendered li { + list-style: none; +} + +.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__placeholder { + color: var(--body-quiet-color); + margin-top: 5px; + float: left; +} + +.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__clear { + cursor: pointer; + float: right; + font-weight: bold; + margin: 5px; + position: absolute; + right: 0; +} + +.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__choice { + background-color: var(--darkened-bg); + border: 1px solid var(--border-color); + border-radius: 4px; + cursor: default; + float: left; + margin-right: 5px; + margin-top: 5px; + padding: 0 5px; +} + +.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__choice__remove { + color: var(--body-quiet-color); + cursor: pointer; + display: inline-block; + font-weight: bold; + margin-right: 2px; +} + +.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__choice__remove:hover { + color: var(--body-fg); +} + +.select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-selection__choice, .select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder, .select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-search--inline { + float: right; +} + +.select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-selection__choice { + margin-left: 5px; + margin-right: auto; +} + +.select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove { + margin-left: 2px; + margin-right: auto; +} + +.select2-container--admin-autocomplete.select2-container--focus .select2-selection--multiple { + border: solid var(--body-quiet-color) 1px; + outline: 0; +} + +.select2-container--admin-autocomplete.select2-container--disabled .select2-selection--multiple { + background-color: var(--darkened-bg); + cursor: default; +} + +.select2-container--admin-autocomplete.select2-container--disabled .select2-selection__choice__remove { + display: none; +} + +.select2-container--admin-autocomplete.select2-container--open.select2-container--above .select2-selection--single, .select2-container--admin-autocomplete.select2-container--open.select2-container--above .select2-selection--multiple { + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.select2-container--admin-autocomplete.select2-container--open.select2-container--below .select2-selection--single, .select2-container--admin-autocomplete.select2-container--open.select2-container--below .select2-selection--multiple { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} + +.select2-container--admin-autocomplete .select2-search--dropdown { + background: var(--darkened-bg); +} + +.select2-container--admin-autocomplete .select2-search--dropdown .select2-search__field { + background: var(--body-bg); + color: var(--body-fg); + border: 1px solid var(--border-color); + border-radius: 4px; +} + +.select2-container--admin-autocomplete .select2-search--inline .select2-search__field { + background: transparent; + color: var(--body-fg); + border: none; + outline: 0; + box-shadow: none; + -webkit-appearance: textfield; +} + +.select2-container--admin-autocomplete .select2-results > .select2-results__options { + max-height: 200px; + overflow-y: auto; + color: var(--body-fg); + background: var(--body-bg); +} + +.select2-container--admin-autocomplete .select2-results__option[role=group] { + padding: 0; +} + +.select2-container--admin-autocomplete .select2-results__option[aria-disabled=true] { + color: var(--body-quiet-color); +} + +.select2-container--admin-autocomplete .select2-results__option[aria-selected=true] { + background-color: var(--selected-bg); + color: var(--body-fg); +} + +.select2-container--admin-autocomplete .select2-results__option .select2-results__option { + padding-left: 1em; +} + +.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__group { + padding-left: 0; +} + +.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option { + margin-left: -1em; + padding-left: 2em; +} + +.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -2em; + padding-left: 3em; +} + +.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -3em; + padding-left: 4em; +} + +.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -4em; + padding-left: 5em; +} + +.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -5em; + padding-left: 6em; +} + +.select2-container--admin-autocomplete .select2-results__option--highlighted[aria-selected] { + background-color: var(--primary); + color: var(--primary-fg); +} + +.select2-container--admin-autocomplete .select2-results__group { + cursor: default; + display: block; + padding: 6px; +} diff --git a/gawa/static/admin/css/base.css b/gawa/static/admin/css/base.css new file mode 100644 index 0000000..72f4ae1 --- /dev/null +++ b/gawa/static/admin/css/base.css @@ -0,0 +1,1138 @@ +/* + DJANGO Admin styles +*/ + +/* VARIABLE DEFINITIONS */ +html[data-theme="light"], +:root { + --primary: #79aec8; + --secondary: #417690; + --accent: #f5dd5d; + --primary-fg: #fff; + + --body-fg: #333; + --body-bg: #fff; + --body-quiet-color: #666; + --body-loud-color: #000; + + --header-color: #ffc; + --header-branding-color: var(--accent); + --header-bg: var(--secondary); + --header-link-color: var(--primary-fg); + + --breadcrumbs-fg: #c4dce8; + --breadcrumbs-link-fg: var(--body-bg); + --breadcrumbs-bg: var(--primary); + + --link-fg: #417893; + --link-hover-color: #036; + --link-selected-fg: #5b80b2; + + --hairline-color: #e8e8e8; + --border-color: #ccc; + + --error-fg: #ba2121; + + --message-success-bg: #dfd; + --message-warning-bg: #ffc; + --message-error-bg: #ffefef; + + --darkened-bg: #f8f8f8; /* A bit darker than --body-bg */ + --selected-bg: #e4e4e4; /* E.g. selected table cells */ + --selected-row: #ffc; + + --button-fg: #fff; + --button-bg: var(--primary); + --button-hover-bg: #609ab6; + --default-button-bg: var(--secondary); + --default-button-hover-bg: #205067; + --close-button-bg: #747474; + --close-button-hover-bg: #333; + --delete-button-bg: #ba2121; + --delete-button-hover-bg: #a41515; + + --object-tools-fg: var(--button-fg); + --object-tools-bg: var(--close-button-bg); + --object-tools-hover-bg: var(--close-button-hover-bg); + + --font-family-primary: + -apple-system, + BlinkMacSystemFont, + "Segoe UI", + system-ui, + Roboto, + "Helvetica Neue", + Arial, + sans-serif, + "Apple Color Emoji", + "Segoe UI Emoji", + "Segoe UI Symbol", + "Noto Color Emoji"; + --font-family-monospace: + ui-monospace, + Menlo, + Monaco, + "Cascadia Mono", + "Segoe UI Mono", + "Roboto Mono", + "Oxygen Mono", + "Ubuntu Monospace", + "Source Code Pro", + "Fira Mono", + "Droid Sans Mono", + "Courier New", + monospace, + "Apple Color Emoji", + "Segoe UI Emoji", + "Segoe UI Symbol", + "Noto Color Emoji"; +} + +html, body { + height: 100%; +} + +body { + margin: 0; + padding: 0; + font-size: 0.875rem; + font-family: var(--font-family-primary); + color: var(--body-fg); + background: var(--body-bg); +} + +/* LINKS */ + +a:link, a:visited { + color: var(--link-fg); + text-decoration: none; + transition: color 0.15s, background 0.15s; +} + +a:focus, a:hover { + color: var(--link-hover-color); +} + +a:focus { + text-decoration: underline; +} + +a img { + border: none; +} + +a.section:link, a.section:visited { + color: var(--header-link-color); + text-decoration: none; +} + +a.section:focus, a.section:hover { + text-decoration: underline; +} + +/* GLOBAL DEFAULTS */ + +p, ol, ul, dl { + margin: .2em 0 .8em 0; +} + +p { + padding: 0; + line-height: 140%; +} + +h1,h2,h3,h4,h5 { + font-weight: bold; +} + +h1 { + margin: 0 0 20px; + font-weight: 300; + font-size: 1.25rem; + color: var(--body-quiet-color); +} + +h2 { + font-size: 1rem; + margin: 1em 0 .5em 0; +} + +h2.subhead { + font-weight: normal; + margin-top: 0; +} + +h3 { + font-size: 0.875rem; + margin: .8em 0 .3em 0; + color: var(--body-quiet-color); + font-weight: bold; +} + +h4 { + font-size: 0.75rem; + margin: 1em 0 .8em 0; + padding-bottom: 3px; +} + +h5 { + font-size: 0.625rem; + margin: 1.5em 0 .5em 0; + color: var(--body-quiet-color); + text-transform: uppercase; + letter-spacing: 1px; +} + +ul > li { + list-style-type: square; + padding: 1px 0; +} + +li ul { + margin-bottom: 0; +} + +li, dt, dd { + font-size: 0.8125rem; + line-height: 1.25rem; +} + +dt { + font-weight: bold; + margin-top: 4px; +} + +dd { + margin-left: 0; +} + +form { + margin: 0; + padding: 0; +} + +fieldset { + margin: 0; + min-width: 0; + padding: 0; + border: none; + border-top: 1px solid var(--hairline-color); +} + +blockquote { + font-size: 0.6875rem; + color: #777; + margin-left: 2px; + padding-left: 10px; + border-left: 5px solid #ddd; +} + +code, pre { + font-family: var(--font-family-monospace); + color: var(--body-quiet-color); + font-size: 0.75rem; + overflow-x: auto; +} + +pre.literal-block { + margin: 10px; + background: var(--darkened-bg); + padding: 6px 8px; +} + +code strong { + color: #930; +} + +hr { + clear: both; + color: var(--hairline-color); + background-color: var(--hairline-color); + height: 1px; + border: none; + margin: 0; + padding: 0; + line-height: 1px; +} + +/* TEXT STYLES & MODIFIERS */ + +.small { + font-size: 0.6875rem; +} + +.mini { + font-size: 0.625rem; +} + +.help, p.help, form p.help, div.help, form div.help, div.help li { + font-size: 0.6875rem; + color: var(--body-quiet-color); +} + +div.help ul { + margin-bottom: 0; +} + +.help-tooltip { + cursor: help; +} + +p img, h1 img, h2 img, h3 img, h4 img, td img { + vertical-align: middle; +} + +.quiet, a.quiet:link, a.quiet:visited { + color: var(--body-quiet-color); + font-weight: normal; +} + +.clear { + clear: both; +} + +.nowrap { + white-space: nowrap; +} + +.hidden { + display: none !important; +} + +/* TABLES */ + +table { + border-collapse: collapse; + border-color: var(--border-color); +} + +td, th { + font-size: 0.8125rem; + line-height: 1rem; + border-bottom: 1px solid var(--hairline-color); + vertical-align: top; + padding: 8px; +} + +th { + font-weight: 600; + text-align: left; +} + +thead th, +tfoot td { + color: var(--body-quiet-color); + padding: 5px 10px; + font-size: 0.6875rem; + background: var(--body-bg); + border: none; + border-top: 1px solid var(--hairline-color); + border-bottom: 1px solid var(--hairline-color); +} + +tfoot td { + border-bottom: none; + border-top: 1px solid var(--hairline-color); +} + +thead th.required { + color: var(--body-loud-color); +} + +tr.alt { + background: var(--darkened-bg); +} + +tr:nth-child(odd), .row-form-errors { + background: var(--body-bg); +} + +tr:nth-child(even), +tr:nth-child(even) .errorlist, +tr:nth-child(odd) + .row-form-errors, +tr:nth-child(odd) + .row-form-errors .errorlist { + background: var(--darkened-bg); +} + +/* SORTABLE TABLES */ + +thead th { + padding: 5px 10px; + line-height: normal; + text-transform: uppercase; + background: var(--darkened-bg); +} + +thead th a:link, thead th a:visited { + color: var(--body-quiet-color); +} + +thead th.sorted { + background: var(--selected-bg); +} + +thead th.sorted .text { + padding-right: 42px; +} + +table thead th .text span { + padding: 8px 10px; + display: block; +} + +table thead th .text a { + display: block; + cursor: pointer; + padding: 8px 10px; +} + +table thead th .text a:focus, table thead th .text a:hover { + background: var(--selected-bg); +} + +thead th.sorted a.sortremove { + visibility: hidden; +} + +table thead th.sorted:hover a.sortremove { + visibility: visible; +} + +table thead th.sorted .sortoptions { + display: block; + padding: 9px 5px 0 5px; + float: right; + text-align: right; +} + +table thead th.sorted .sortpriority { + font-size: .8em; + min-width: 12px; + text-align: center; + vertical-align: 3px; + margin-left: 2px; + margin-right: 2px; +} + +table thead th.sorted .sortoptions a { + position: relative; + width: 14px; + height: 14px; + display: inline-block; + background: url(../img/sorting-icons.svg) 0 0 no-repeat; + background-size: 14px auto; +} + +table thead th.sorted .sortoptions a.sortremove { + background-position: 0 0; +} + +table thead th.sorted .sortoptions a.sortremove:after { + content: '\\'; + position: absolute; + top: -6px; + left: 3px; + font-weight: 200; + font-size: 1.125rem; + color: var(--body-quiet-color); +} + +table thead th.sorted .sortoptions a.sortremove:focus:after, +table thead th.sorted .sortoptions a.sortremove:hover:after { + color: var(--link-fg); +} + +table thead th.sorted .sortoptions a.sortremove:focus, +table thead th.sorted .sortoptions a.sortremove:hover { + background-position: 0 -14px; +} + +table thead th.sorted .sortoptions a.ascending { + background-position: 0 -28px; +} + +table thead th.sorted .sortoptions a.ascending:focus, +table thead th.sorted .sortoptions a.ascending:hover { + background-position: 0 -42px; +} + +table thead th.sorted .sortoptions a.descending { + top: 1px; + background-position: 0 -56px; +} + +table thead th.sorted .sortoptions a.descending:focus, +table thead th.sorted .sortoptions a.descending:hover { + background-position: 0 -70px; +} + +/* FORM DEFAULTS */ + +input, textarea, select, .form-row p, form .button { + margin: 2px 0; + padding: 2px 3px; + vertical-align: middle; + font-family: var(--font-family-primary); + font-weight: normal; + font-size: 0.8125rem; +} +.form-row div.help { + padding: 2px 3px; +} + +textarea { + vertical-align: top; +} + +input[type=text], input[type=password], input[type=email], input[type=url], +input[type=number], input[type=tel], textarea, select, .vTextField { + border: 1px solid var(--border-color); + border-radius: 4px; + padding: 5px 6px; + margin-top: 0; + color: var(--body-fg); + background-color: var(--body-bg); +} + +input[type=text]:focus, input[type=password]:focus, input[type=email]:focus, +input[type=url]:focus, input[type=number]:focus, input[type=tel]:focus, +textarea:focus, select:focus, .vTextField:focus { + border-color: var(--body-quiet-color); +} + +select { + height: 1.875rem; +} + +select[multiple] { + /* Allow HTML size attribute to override the height in the rule above. */ + height: auto; + min-height: 150px; +} + +/* FORM BUTTONS */ + +.button, input[type=submit], input[type=button], .submit-row input, a.button { + background: var(--button-bg); + padding: 10px 15px; + border: none; + border-radius: 4px; + color: var(--button-fg); + cursor: pointer; + transition: background 0.15s; +} + +a.button { + padding: 4px 5px; +} + +.button:active, input[type=submit]:active, input[type=button]:active, +.button:focus, input[type=submit]:focus, input[type=button]:focus, +.button:hover, input[type=submit]:hover, input[type=button]:hover { + background: var(--button-hover-bg); +} + +.button[disabled], input[type=submit][disabled], input[type=button][disabled] { + opacity: 0.4; +} + +.button.default, input[type=submit].default, .submit-row input.default { + border: none; + font-weight: 400; + background: var(--default-button-bg); +} + +.button.default:active, input[type=submit].default:active, +.button.default:focus, input[type=submit].default:focus, +.button.default:hover, input[type=submit].default:hover { + background: var(--default-button-hover-bg); +} + +.button[disabled].default, +input[type=submit][disabled].default, +input[type=button][disabled].default { + opacity: 0.4; +} + + +/* MODULES */ + +.module { + border: none; + margin-bottom: 30px; + background: var(--body-bg); +} + +.module p, .module ul, .module h3, .module h4, .module dl, .module pre { + padding-left: 10px; + padding-right: 10px; +} + +.module blockquote { + margin-left: 12px; +} + +.module ul, .module ol { + margin-left: 1.5em; +} + +.module h3 { + margin-top: .6em; +} + +.module h2, .module caption, .inline-group h2 { + margin: 0; + padding: 8px; + font-weight: 400; + font-size: 0.8125rem; + text-align: left; + background: var(--primary); + color: var(--header-link-color); +} + +.module caption, +.inline-group h2 { + font-size: 0.75rem; + letter-spacing: 0.5px; + text-transform: uppercase; +} + +.module table { + border-collapse: collapse; +} + +/* MESSAGES & ERRORS */ + +ul.messagelist { + padding: 0; + margin: 0; +} + +ul.messagelist li { + display: block; + font-weight: 400; + font-size: 0.8125rem; + padding: 10px 10px 10px 65px; + margin: 0 0 10px 0; + background: var(--message-success-bg) url(../img/icon-yes.svg) 40px 12px no-repeat; + background-size: 16px auto; + color: var(--body-fg); + word-break: break-word; +} + +ul.messagelist li.warning { + background: var(--message-warning-bg) url(../img/icon-alert.svg) 40px 14px no-repeat; + background-size: 14px auto; +} + +ul.messagelist li.error { + background: var(--message-error-bg) url(../img/icon-no.svg) 40px 12px no-repeat; + background-size: 16px auto; +} + +.errornote { + font-size: 0.875rem; + font-weight: 700; + display: block; + padding: 10px 12px; + margin: 0 0 10px 0; + color: var(--error-fg); + border: 1px solid var(--error-fg); + border-radius: 4px; + background-color: var(--body-bg); + background-position: 5px 12px; + overflow-wrap: break-word; +} + +ul.errorlist { + margin: 0 0 4px; + padding: 0; + color: var(--error-fg); + background: var(--body-bg); +} + +ul.errorlist li { + font-size: 0.8125rem; + display: block; + margin-bottom: 4px; + overflow-wrap: break-word; +} + +ul.errorlist li:first-child { + margin-top: 0; +} + +ul.errorlist li a { + color: inherit; + text-decoration: underline; +} + +td ul.errorlist { + margin: 0; + padding: 0; +} + +td ul.errorlist li { + margin: 0; +} + +.form-row.errors { + margin: 0; + border: none; + border-bottom: 1px solid var(--hairline-color); + background: none; +} + +.form-row.errors ul.errorlist li { + padding-left: 0; +} + +.errors input, .errors select, .errors textarea, +td ul.errorlist + input, td ul.errorlist + select, td ul.errorlist + textarea { + border: 1px solid var(--error-fg); +} + +.description { + font-size: 0.75rem; + padding: 5px 0 0 12px; +} + +/* BREADCRUMBS */ + +div.breadcrumbs { + background: var(--breadcrumbs-bg); + padding: 10px 40px; + border: none; + color: var(--breadcrumbs-fg); + text-align: left; +} + +div.breadcrumbs a { + color: var(--breadcrumbs-link-fg); +} + +div.breadcrumbs a:focus, div.breadcrumbs a:hover { + color: var(--breadcrumbs-fg); +} + +/* ACTION ICONS */ + +.viewlink, .inlineviewlink { + padding-left: 16px; + background: url(../img/icon-viewlink.svg) 0 1px no-repeat; +} + +.addlink { + padding-left: 16px; + background: url(../img/icon-addlink.svg) 0 1px no-repeat; +} + +.changelink, .inlinechangelink { + padding-left: 16px; + background: url(../img/icon-changelink.svg) 0 1px no-repeat; +} + +.deletelink { + padding-left: 16px; + background: url(../img/icon-deletelink.svg) 0 1px no-repeat; +} + +a.deletelink:link, a.deletelink:visited { + color: #CC3434; /* XXX Probably unused? */ +} + +a.deletelink:focus, a.deletelink:hover { + color: #993333; /* XXX Probably unused? */ + text-decoration: none; +} + +/* OBJECT TOOLS */ + +.object-tools { + font-size: 0.625rem; + font-weight: bold; + padding-left: 0; + float: right; + position: relative; + margin-top: -48px; +} + +.object-tools li { + display: block; + float: left; + margin-left: 5px; + height: 1rem; +} + +.object-tools a { + border-radius: 15px; +} + +.object-tools a:link, .object-tools a:visited { + display: block; + float: left; + padding: 3px 12px; + background: var(--object-tools-bg); + color: var(--object-tools-fg); + font-weight: 400; + font-size: 0.6875rem; + text-transform: uppercase; + letter-spacing: 0.5px; +} + +.object-tools a:focus, .object-tools a:hover { + background-color: var(--object-tools-hover-bg); +} + +.object-tools a:focus{ + text-decoration: none; +} + +.object-tools a.viewsitelink, .object-tools a.addlink { + background-repeat: no-repeat; + background-position: right 7px center; + padding-right: 26px; +} + +.object-tools a.viewsitelink { + background-image: url(../img/tooltag-arrowright.svg); +} + +.object-tools a.addlink { + background-image: url(../img/tooltag-add.svg); +} + +/* OBJECT HISTORY */ + +#change-history table { + width: 100%; +} + +#change-history table tbody th { + width: 16em; +} + +#change-history .paginator { + color: var(--body-quiet-color); + border-bottom: 1px solid var(--hairline-color); + background: var(--body-bg); + overflow: hidden; +} + +/* PAGE STRUCTURE */ + +#container { + position: relative; + width: 100%; + min-width: 980px; + padding: 0; + display: flex; + flex-direction: column; + height: 100%; +} + +#container > div { + flex-shrink: 0; +} + +#container > .main { + display: flex; + flex: 1 0 auto; +} + +.main > .content { + flex: 1 0; + max-width: 100%; +} + +.skip-to-content-link { + position: absolute; + top: -999px; + margin: 5px; + padding: 5px; + background: var(--body-bg); + z-index: 1; +} + +.skip-to-content-link:focus { + left: 0px; + top: 0px; +} + +#content { + padding: 20px 40px; +} + +.dashboard #content { + width: 600px; +} + +#content-main { + float: left; + width: 100%; +} + +#content-related { + float: right; + width: 260px; + position: relative; + margin-right: -300px; +} + +#footer { + clear: both; + padding: 10px; +} + +/* COLUMN TYPES */ + +.colMS { + margin-right: 300px; +} + +.colSM { + margin-left: 300px; +} + +.colSM #content-related { + float: left; + margin-right: 0; + margin-left: -300px; +} + +.colSM #content-main { + float: right; +} + +.popup .colM { + width: auto; +} + +/* HEADER */ + +#header { + width: auto; + height: auto; + display: flex; + justify-content: space-between; + align-items: center; + padding: 10px 40px; + background: var(--header-bg); + color: var(--header-color); + overflow: hidden; +} + +#header a:link, #header a:visited, #logout-form button { + color: var(--header-link-color); +} + +#header a:focus , #header a:hover { + text-decoration: underline; +} + +#branding { + display: flex; +} + +#branding h1 { + padding: 0; + margin: 0; + margin-inline-end: 20px; + font-weight: 300; + font-size: 1.5rem; + color: var(--header-branding-color); +} + +#branding h1 a:link, #branding h1 a:visited { + color: var(--accent); +} + +#branding h2 { + padding: 0 10px; + font-size: 0.875rem; + margin: -8px 0 8px 0; + font-weight: normal; + color: var(--header-color); +} + +#branding a:hover { + text-decoration: none; +} + +#logout-form { + display: inline; +} + +#logout-form button { + background: none; + border: 0; + cursor: pointer; + font-family: var(--font-family-primary); +} + +#user-tools { + float: right; + margin: 0 0 0 20px; + text-align: right; +} + +#user-tools, #logout-form button{ + padding: 0; + font-weight: 300; + font-size: 0.6875rem; + letter-spacing: 0.5px; + text-transform: uppercase; +} + +#user-tools a, #logout-form button { + border-bottom: 1px solid rgba(255, 255, 255, 0.25); +} + +#user-tools a:focus, #user-tools a:hover, +#logout-form button:active, #logout-form button:hover { + text-decoration: none; + border-bottom: 0; +} + +#logout-form button:active, #logout-form button:hover { + margin-bottom: 1px; +} + +/* SIDEBAR */ + +#content-related { + background: var(--darkened-bg); +} + +#content-related .module { + background: none; +} + +#content-related h3 { + color: var(--body-quiet-color); + padding: 0 16px; + margin: 0 0 16px; +} + +#content-related h4 { + font-size: 0.8125rem; +} + +#content-related p { + padding-left: 16px; + padding-right: 16px; +} + +#content-related .actionlist { + padding: 0; + margin: 16px; +} + +#content-related .actionlist li { + line-height: 1.2; + margin-bottom: 10px; + padding-left: 18px; +} + +#content-related .module h2 { + background: none; + padding: 16px; + margin-bottom: 16px; + border-bottom: 1px solid var(--hairline-color); + font-size: 1.125rem; + color: var(--body-fg); +} + +.delete-confirmation form input[type="submit"] { + background: var(--delete-button-bg); + border-radius: 4px; + padding: 10px 15px; + color: var(--button-fg); +} + +.delete-confirmation form input[type="submit"]:active, +.delete-confirmation form input[type="submit"]:focus, +.delete-confirmation form input[type="submit"]:hover { + background: var(--delete-button-hover-bg); +} + +.delete-confirmation form .cancel-link { + display: inline-block; + vertical-align: middle; + height: 0.9375rem; + line-height: 0.9375rem; + border-radius: 4px; + padding: 10px 15px; + color: var(--button-fg); + background: var(--close-button-bg); + margin: 0 0 0 10px; +} + +.delete-confirmation form .cancel-link:active, +.delete-confirmation form .cancel-link:focus, +.delete-confirmation form .cancel-link:hover { + background: var(--close-button-hover-bg); +} + +/* POPUP */ +.popup #content { + padding: 20px; +} + +.popup #container { + min-width: 0; +} + +.popup #header { + padding: 10px 20px; +} + +/* PAGINATOR */ + +.paginator { + font-size: 0.8125rem; + padding-top: 10px; + padding-bottom: 10px; + line-height: 22px; + margin: 0; + border-top: 1px solid var(--hairline-color); + width: 100%; +} + +.paginator a:link, .paginator a:visited { + padding: 2px 6px; + background: var(--button-bg); + text-decoration: none; + color: var(--button-fg); +} + +.paginator a.showall { + border: none; + background: none; + color: var(--link-fg); +} + +.paginator a.showall:focus, .paginator a.showall:hover { + background: none; + color: var(--link-hover-color); +} + +.paginator .end { + margin-right: 6px; +} + +.paginator .this-page { + padding: 2px 6px; + font-weight: bold; + font-size: 0.8125rem; + vertical-align: top; +} + +.paginator a:focus, .paginator a:hover { + color: white; + background: var(--link-hover-color); +} + +.base-svgs { + display: none; +} diff --git a/gawa/static/admin/css/changelists.css b/gawa/static/admin/css/changelists.css new file mode 100644 index 0000000..a754513 --- /dev/null +++ b/gawa/static/admin/css/changelists.css @@ -0,0 +1,328 @@ +/* CHANGELISTS */ + +#changelist { + display: flex; + align-items: flex-start; + justify-content: space-between; +} + +#changelist .changelist-form-container { + flex: 1 1 auto; + min-width: 0; +} + +#changelist table { + width: 100%; +} + +.change-list .hiddenfields { display:none; } + +.change-list .filtered table { + border-right: none; +} + +.change-list .filtered { + min-height: 400px; +} + +.change-list .filtered .results, .change-list .filtered .paginator, +.filtered #toolbar, .filtered div.xfull { + width: auto; +} + +.change-list .filtered table tbody th { + padding-right: 1em; +} + +#changelist-form .results { + overflow-x: auto; + width: 100%; +} + +#changelist .toplinks { + border-bottom: 1px solid var(--hairline-color); +} + +#changelist .paginator { + color: var(--body-quiet-color); + border-bottom: 1px solid var(--hairline-color); + background: var(--body-bg); + overflow: hidden; +} + +/* CHANGELIST TABLES */ + +#changelist table thead th { + padding: 0; + white-space: nowrap; + vertical-align: middle; +} + +#changelist table thead th.action-checkbox-column { + width: 1.5em; + text-align: center; +} + +#changelist table tbody td.action-checkbox { + text-align: center; +} + +#changelist table tfoot { + color: var(--body-quiet-color); +} + +/* TOOLBAR */ + +#toolbar { + padding: 8px 10px; + margin-bottom: 15px; + border-top: 1px solid var(--hairline-color); + border-bottom: 1px solid var(--hairline-color); + background: var(--darkened-bg); + color: var(--body-quiet-color); +} + +#toolbar form input { + border-radius: 4px; + font-size: 0.875rem; + padding: 5px; + color: var(--body-fg); +} + +#toolbar #searchbar { + height: 1.1875rem; + border: 1px solid var(--border-color); + padding: 2px 5px; + margin: 0; + vertical-align: top; + font-size: 0.8125rem; + max-width: 100%; +} + +#toolbar #searchbar:focus { + border-color: var(--body-quiet-color); +} + +#toolbar form input[type="submit"] { + border: 1px solid var(--border-color); + font-size: 0.8125rem; + padding: 4px 8px; + margin: 0; + vertical-align: middle; + background: var(--body-bg); + box-shadow: 0 -15px 20px -10px rgba(0, 0, 0, 0.15) inset; + cursor: pointer; + color: var(--body-fg); +} + +#toolbar form input[type="submit"]:focus, +#toolbar form input[type="submit"]:hover { + border-color: var(--body-quiet-color); +} + +#changelist-search img { + vertical-align: middle; + margin-right: 4px; +} + +#changelist-search .help { + word-break: break-word; +} + +/* FILTER COLUMN */ + +#changelist-filter { + flex: 0 0 240px; + order: 1; + background: var(--darkened-bg); + border-left: none; + margin: 0 0 0 30px; +} + +#changelist-filter h2 { + font-size: 0.875rem; + text-transform: uppercase; + letter-spacing: 0.5px; + padding: 5px 15px; + margin-bottom: 12px; + border-bottom: none; +} + +#changelist-filter h3, +#changelist-filter details summary { + font-weight: 400; + padding: 0 15px; + margin-bottom: 10px; +} + +#changelist-filter details summary > * { + display: inline; +} + +#changelist-filter details > summary { + list-style-type: none; +} + +#changelist-filter details > summary::-webkit-details-marker { + display: none; +} + +#changelist-filter details > summary::before { + content: '→'; + font-weight: bold; + color: var(--link-hover-color); +} + +#changelist-filter details[open] > summary::before { + content: '↓'; +} + +#changelist-filter ul { + margin: 5px 0; + padding: 0 15px 15px; + border-bottom: 1px solid var(--hairline-color); +} + +#changelist-filter ul:last-child { + border-bottom: none; +} + +#changelist-filter li { + list-style-type: none; + margin-left: 0; + padding-left: 0; +} + +#changelist-filter a { + display: block; + color: var(--body-quiet-color); + word-break: break-word; +} + +#changelist-filter li.selected { + border-left: 5px solid var(--hairline-color); + padding-left: 10px; + margin-left: -15px; +} + +#changelist-filter li.selected a { + color: var(--link-selected-fg); +} + +#changelist-filter a:focus, #changelist-filter a:hover, +#changelist-filter li.selected a:focus, +#changelist-filter li.selected a:hover { + color: var(--link-hover-color); +} + +#changelist-filter #changelist-filter-clear a { + font-size: 0.8125rem; + padding-bottom: 10px; + border-bottom: 1px solid var(--hairline-color); +} + +/* DATE DRILLDOWN */ + +.change-list .toplinks { + display: flex; + padding-bottom: 5px; + flex-wrap: wrap; + gap: 3px 17px; + font-weight: bold; +} + +.change-list .toplinks a { + font-size: 0.8125rem; +} + +.change-list .toplinks .date-back { + color: var(--body-quiet-color); +} + +.change-list .toplinks .date-back:focus, +.change-list .toplinks .date-back:hover { + color: var(--link-hover-color); +} + +/* ACTIONS */ + +.filtered .actions { + border-right: none; +} + +#changelist table input { + margin: 0; + vertical-align: baseline; +} + +/* Once the :has() pseudo-class is supported by all browsers, the tr.selected + selector and the JS adding the class can be removed. */ +#changelist tbody tr.selected { + background-color: var(--selected-row); +} + +#changelist tbody tr:has(.action-select:checked) { + background-color: var(--selected-row); +} + +#changelist .actions { + padding: 10px; + background: var(--body-bg); + border-top: none; + border-bottom: none; + line-height: 1.5rem; + color: var(--body-quiet-color); + width: 100%; +} + +#changelist .actions span.all, +#changelist .actions span.action-counter, +#changelist .actions span.clear, +#changelist .actions span.question { + font-size: 0.8125rem; + margin: 0 0.5em; +} + +#changelist .actions:last-child { + border-bottom: none; +} + +#changelist .actions select { + vertical-align: top; + height: 1.5rem; + color: var(--body-fg); + border: 1px solid var(--border-color); + border-radius: 4px; + font-size: 0.875rem; + padding: 0 0 0 4px; + margin: 0; + margin-left: 10px; +} + +#changelist .actions select:focus { + border-color: var(--body-quiet-color); +} + +#changelist .actions label { + display: inline-block; + vertical-align: middle; + font-size: 0.8125rem; +} + +#changelist .actions .button { + font-size: 0.8125rem; + border: 1px solid var(--border-color); + border-radius: 4px; + background: var(--body-bg); + box-shadow: 0 -15px 20px -10px rgba(0, 0, 0, 0.15) inset; + cursor: pointer; + height: 1.5rem; + line-height: 1; + padding: 4px 8px; + margin: 0; + color: var(--body-fg); +} + +#changelist .actions .button:focus, #changelist .actions .button:hover { + border-color: var(--body-quiet-color); +} diff --git a/gawa/static/admin/css/dark_mode.css b/gawa/static/admin/css/dark_mode.css new file mode 100644 index 0000000..6d08233 --- /dev/null +++ b/gawa/static/admin/css/dark_mode.css @@ -0,0 +1,137 @@ +@media (prefers-color-scheme: dark) { + :root { + --primary: #264b5d; + --primary-fg: #f7f7f7; + + --body-fg: #eeeeee; + --body-bg: #121212; + --body-quiet-color: #e0e0e0; + --body-loud-color: #ffffff; + + --breadcrumbs-link-fg: #e0e0e0; + --breadcrumbs-bg: var(--primary); + + --link-fg: #81d4fa; + --link-hover-color: #4ac1f7; + --link-selected-fg: #6f94c6; + + --hairline-color: #272727; + --border-color: #353535; + + --error-fg: #e35f5f; + --message-success-bg: #006b1b; + --message-warning-bg: #583305; + --message-error-bg: #570808; + + --darkened-bg: #212121; + --selected-bg: #1b1b1b; + --selected-row: #00363a; + + --close-button-bg: #333333; + --close-button-hover-bg: #666666; + } + } + + +html[data-theme="dark"] { + --primary: #264b5d; + --primary-fg: #f7f7f7; + + --body-fg: #eeeeee; + --body-bg: #121212; + --body-quiet-color: #e0e0e0; + --body-loud-color: #ffffff; + + --breadcrumbs-link-fg: #e0e0e0; + --breadcrumbs-bg: var(--primary); + + --link-fg: #81d4fa; + --link-hover-color: #4ac1f7; + --link-selected-fg: #6f94c6; + + --hairline-color: #272727; + --border-color: #353535; + + --error-fg: #e35f5f; + --message-success-bg: #006b1b; + --message-warning-bg: #583305; + --message-error-bg: #570808; + + --darkened-bg: #212121; + --selected-bg: #1b1b1b; + --selected-row: #00363a; + + --close-button-bg: #333333; + --close-button-hover-bg: #666666; +} + +/* THEME SWITCH */ +.theme-toggle { + cursor: pointer; + border: none; + padding: 0; + background: transparent; + vertical-align: middle; + margin-inline-start: 5px; + margin-top: -1px; +} + +.theme-toggle svg { + vertical-align: middle; + height: 1rem; + width: 1rem; + display: none; +} + +/* +Fully hide screen reader text so we only show the one matching the current +theme. +*/ +.theme-toggle .visually-hidden { + display: none; +} + +html[data-theme="auto"] .theme-toggle .theme-label-when-auto { + display: block; +} + +html[data-theme="dark"] .theme-toggle .theme-label-when-dark { + display: block; +} + +html[data-theme="light"] .theme-toggle .theme-label-when-light { + display: block; +} + +/* ICONS */ +.theme-toggle svg.theme-icon-when-auto, +.theme-toggle svg.theme-icon-when-dark, +.theme-toggle svg.theme-icon-when-light { + fill: var(--header-link-color); + color: var(--header-bg); +} + +html[data-theme="auto"] .theme-toggle svg.theme-icon-when-auto { + display: block; +} + +html[data-theme="dark"] .theme-toggle svg.theme-icon-when-dark { + display: block; +} + +html[data-theme="light"] .theme-toggle svg.theme-icon-when-light { + display: block; +} + +.visually-hidden { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + overflow: hidden; + clip: rect(0,0,0,0); + white-space: nowrap; + border: 0; + color: var(--body-fg); + background-color: var(--body-bg); +} diff --git a/gawa/static/admin/css/dashboard.css b/gawa/static/admin/css/dashboard.css new file mode 100644 index 0000000..242b81a --- /dev/null +++ b/gawa/static/admin/css/dashboard.css @@ -0,0 +1,29 @@ +/* DASHBOARD */ +.dashboard td, .dashboard th { + word-break: break-word; +} + +.dashboard .module table th { + width: 100%; +} + +.dashboard .module table td { + white-space: nowrap; +} + +.dashboard .module table td a { + display: block; + padding-right: .6em; +} + +/* RECENT ACTIONS MODULE */ + +.module ul.actionlist { + margin-left: 0; +} + +ul.actionlist li { + list-style-type: none; + overflow: hidden; + text-overflow: ellipsis; +} diff --git a/gawa/static/admin/css/fonts.css b/gawa/static/admin/css/fonts.css new file mode 100644 index 0000000..c837e01 --- /dev/null +++ b/gawa/static/admin/css/fonts.css @@ -0,0 +1,20 @@ +@font-face { + font-family: 'Roboto'; + src: url('../fonts/Roboto-Bold-webfont.woff'); + font-weight: 700; + font-style: normal; +} + +@font-face { + font-family: 'Roboto'; + src: url('../fonts/Roboto-Regular-webfont.woff'); + font-weight: 400; + font-style: normal; +} + +@font-face { + font-family: 'Roboto'; + src: url('../fonts/Roboto-Light-webfont.woff'); + font-weight: 300; + font-style: normal; +} diff --git a/gawa/static/admin/css/forms.css b/gawa/static/admin/css/forms.css new file mode 100644 index 0000000..e45abe1 --- /dev/null +++ b/gawa/static/admin/css/forms.css @@ -0,0 +1,530 @@ +@import url('widgets.css'); + +/* FORM ROWS */ + +.form-row { + overflow: hidden; + padding: 10px; + font-size: 0.8125rem; + border-bottom: 1px solid var(--hairline-color); +} + +.form-row img, .form-row input { + vertical-align: middle; +} + +.form-row label input[type="checkbox"] { + margin-top: 0; + vertical-align: 0; +} + +form .form-row p { + padding-left: 0; +} + +.flex-container { + display: flex; + flex-wrap: wrap; +} + +.form-multiline > div { + padding-bottom: 10px; +} + +/* FORM LABELS */ + +label { + font-weight: normal; + color: var(--body-quiet-color); + font-size: 0.8125rem; +} + +.required label, label.required { + font-weight: bold; + color: var(--body-fg); +} + +/* RADIO BUTTONS */ + +form div.radiolist div { + padding-right: 7px; +} + +form div.radiolist.inline div { + display: inline-block; +} + +form div.radiolist label { + width: auto; +} + +form div.radiolist input[type="radio"] { + margin: -2px 4px 0 0; + padding: 0; +} + +form ul.inline { + margin-left: 0; + padding: 0; +} + +form ul.inline li { + float: left; + padding-right: 7px; +} + +/* ALIGNED FIELDSETS */ + +.aligned label { + display: block; + padding: 4px 10px 0 0; + width: 160px; + word-wrap: break-word; + line-height: 1; +} + +.aligned label:not(.vCheckboxLabel):after { + content: ''; + display: inline-block; + vertical-align: middle; + height: 1.625rem; +} + +.aligned label + p, .aligned .checkbox-row + div.help, .aligned label + div.readonly { + padding: 6px 0; + margin-top: 0; + margin-bottom: 0; + margin-left: 0; + overflow-wrap: break-word; +} + +.aligned ul label { + display: inline; + float: none; + width: auto; +} + +.aligned .form-row input { + margin-bottom: 0; +} + +.colMS .aligned .vLargeTextField, .colMS .aligned .vXMLLargeTextField { + width: 350px; +} + +form .aligned ul { + margin-left: 160px; + padding-left: 10px; +} + +form .aligned div.radiolist { + display: inline-block; + margin: 0; + padding: 0; +} + +form .aligned p.help, +form .aligned div.help { + margin-top: 0; + margin-left: 160px; + padding-left: 10px; +} + +form .aligned p.date div.help.timezonewarning, +form .aligned p.datetime div.help.timezonewarning, +form .aligned p.time div.help.timezonewarning { + margin-left: 0; + padding-left: 0; + font-weight: normal; +} + +form .aligned p.help:last-child, +form .aligned div.help:last-child { + margin-bottom: 0; + padding-bottom: 0; +} + +form .aligned input + p.help, +form .aligned textarea + p.help, +form .aligned select + p.help, +form .aligned input + div.help, +form .aligned textarea + div.help, +form .aligned select + div.help { + margin-left: 160px; + padding-left: 10px; +} + +form .aligned ul li { + list-style: none; +} + +form .aligned table p { + margin-left: 0; + padding-left: 0; +} + +.aligned .vCheckboxLabel { + float: none; + width: auto; + display: inline-block; + vertical-align: -3px; + padding: 0 0 5px 5px; +} + +.aligned .vCheckboxLabel + p.help, +.aligned .vCheckboxLabel + div.help { + margin-top: -4px; +} + +.colM .aligned .vLargeTextField, .colM .aligned .vXMLLargeTextField { + width: 610px; +} + +fieldset .fieldBox { + margin-right: 20px; +} + +/* WIDE FIELDSETS */ + +.wide label { + width: 200px; +} + +form .wide p, +form .wide ul.errorlist, +form .wide input + p.help, +form .wide input + div.help { + margin-left: 200px; +} + +form .wide p.help, +form .wide div.help { + padding-left: 50px; +} + +form div.help ul { + padding-left: 0; + margin-left: 0; +} + +.colM fieldset.wide .vLargeTextField, .colM fieldset.wide .vXMLLargeTextField { + width: 450px; +} + +/* COLLAPSED FIELDSETS */ + +fieldset.collapsed * { + display: none; +} + +fieldset.collapsed h2, fieldset.collapsed { + display: block; +} + +fieldset.collapsed { + border: 1px solid var(--hairline-color); + border-radius: 4px; + overflow: hidden; +} + +fieldset.collapsed h2 { + background: var(--darkened-bg); + color: var(--body-quiet-color); +} + +fieldset .collapse-toggle { + color: var(--header-link-color); +} + +fieldset.collapsed .collapse-toggle { + background: transparent; + display: inline; + color: var(--link-fg); +} + +/* MONOSPACE TEXTAREAS */ + +fieldset.monospace textarea { + font-family: var(--font-family-monospace); +} + +/* SUBMIT ROW */ + +.submit-row { + padding: 12px 14px 12px; + margin: 0 0 20px; + background: var(--darkened-bg); + border: 1px solid var(--hairline-color); + border-radius: 4px; + overflow: hidden; + display: flex; + gap: 10px; + flex-wrap: wrap; +} + +body.popup .submit-row { + overflow: auto; +} + +.submit-row input { + height: 2.1875rem; + line-height: 0.9375rem; +} + +.submit-row input, .submit-row a { + margin: 0; +} + +.submit-row input.default { + text-transform: uppercase; +} + +.submit-row a.deletelink { + margin-left: auto; +} + +.submit-row a.deletelink { + display: block; + background: var(--delete-button-bg); + border-radius: 4px; + padding: 0.625rem 0.9375rem; + height: 0.9375rem; + line-height: 0.9375rem; + color: var(--button-fg); +} + +.submit-row a.closelink { + display: inline-block; + background: var(--close-button-bg); + border-radius: 4px; + padding: 10px 15px; + height: 0.9375rem; + line-height: 0.9375rem; + color: var(--button-fg); +} + +.submit-row a.deletelink:focus, +.submit-row a.deletelink:hover, +.submit-row a.deletelink:active { + background: var(--delete-button-hover-bg); + text-decoration: none; +} + +.submit-row a.closelink:focus, +.submit-row a.closelink:hover, +.submit-row a.closelink:active { + background: var(--close-button-hover-bg); + text-decoration: none; +} + +/* CUSTOM FORM FIELDS */ + +.vSelectMultipleField { + vertical-align: top; +} + +.vCheckboxField { + border: none; +} + +.vDateField, .vTimeField { + margin-right: 2px; + margin-bottom: 4px; +} + +.vDateField { + min-width: 6.85em; +} + +.vTimeField { + min-width: 4.7em; +} + +.vURLField { + width: 30em; +} + +.vLargeTextField, .vXMLLargeTextField { + width: 48em; +} + +.flatpages-flatpage #id_content { + height: 40.2em; +} + +.module table .vPositiveSmallIntegerField { + width: 2.2em; +} + +.vIntegerField { + width: 5em; +} + +.vBigIntegerField { + width: 10em; +} + +.vForeignKeyRawIdAdminField { + width: 5em; +} + +.vTextField, .vUUIDField { + width: 20em; +} + +/* INLINES */ + +.inline-group { + padding: 0; + margin: 0 0 30px; +} + +.inline-group thead th { + padding: 8px 10px; +} + +.inline-group .aligned label { + width: 160px; +} + +.inline-related { + position: relative; +} + +.inline-related h3 { + margin: 0; + color: var(--body-quiet-color); + padding: 5px; + font-size: 0.8125rem; + background: var(--darkened-bg); + border-top: 1px solid var(--hairline-color); + border-bottom: 1px solid var(--hairline-color); +} + +.inline-related h3 span.delete { + float: right; +} + +.inline-related h3 span.delete label { + margin-left: 2px; + font-size: 0.6875rem; +} + +.inline-related fieldset { + margin: 0; + background: var(--body-bg); + border: none; + width: 100%; +} + +.inline-related fieldset.module h3 { + margin: 0; + padding: 2px 5px 3px 5px; + font-size: 0.6875rem; + text-align: left; + font-weight: bold; + background: #bcd; + color: var(--body-bg); +} + +.inline-group .tabular fieldset.module { + border: none; +} + +.inline-related.tabular fieldset.module table { + width: 100%; + overflow-x: scroll; +} + +.last-related fieldset { + border: none; +} + +.inline-group .tabular tr.has_original td { + padding-top: 2em; +} + +.inline-group .tabular tr td.original { + padding: 2px 0 0 0; + width: 0; + _position: relative; +} + +.inline-group .tabular th.original { + width: 0px; + padding: 0; +} + +.inline-group .tabular td.original p { + position: absolute; + left: 0; + height: 1.1em; + padding: 2px 9px; + overflow: hidden; + font-size: 0.5625rem; + font-weight: bold; + color: var(--body-quiet-color); + _width: 700px; +} + +.inline-group ul.tools { + padding: 0; + margin: 0; + list-style: none; +} + +.inline-group ul.tools li { + display: inline; + padding: 0 5px; +} + +.inline-group div.add-row, +.inline-group .tabular tr.add-row td { + color: var(--body-quiet-color); + background: var(--darkened-bg); + padding: 8px 10px; + border-bottom: 1px solid var(--hairline-color); +} + +.inline-group .tabular tr.add-row td { + padding: 8px 10px; + border-bottom: 1px solid var(--hairline-color); +} + +.inline-group ul.tools a.add, +.inline-group div.add-row a, +.inline-group .tabular tr.add-row td a { + background: url(../img/icon-addlink.svg) 0 1px no-repeat; + padding-left: 16px; + font-size: 0.75rem; +} + +.empty-form { + display: none; +} + +/* RELATED FIELD ADD ONE / LOOKUP */ + +.related-lookup { + margin-left: 5px; + display: inline-block; + vertical-align: middle; + background-repeat: no-repeat; + background-size: 14px; +} + +.related-lookup { + width: 1rem; + height: 1rem; + background-image: url(../img/search.svg); +} + +form .related-widget-wrapper ul { + display: inline-block; + margin-left: 0; + padding-left: 0; +} + +.clearable-file-input input { + margin-top: 0; +} diff --git a/gawa/static/admin/css/login.css b/gawa/static/admin/css/login.css new file mode 100644 index 0000000..389772f --- /dev/null +++ b/gawa/static/admin/css/login.css @@ -0,0 +1,61 @@ +/* LOGIN FORM */ + +.login { + background: var(--darkened-bg); + height: auto; +} + +.login #header { + height: auto; + padding: 15px 16px; + justify-content: center; +} + +.login #header h1 { + font-size: 1.125rem; + margin: 0; +} + +.login #header h1 a { + color: var(--header-link-color); +} + +.login #content { + padding: 20px 20px 0; +} + +.login #container { + background: var(--body-bg); + border: 1px solid var(--hairline-color); + border-radius: 4px; + overflow: hidden; + width: 28em; + min-width: 300px; + margin: 100px auto; + height: auto; +} + +.login .form-row { + padding: 4px 0; +} + +.login .form-row label { + display: block; + line-height: 2em; +} + +.login .form-row #id_username, .login .form-row #id_password { + padding: 8px; + width: 100%; + box-sizing: border-box; +} + +.login .submit-row { + padding: 1em 0 0 0; + margin: 0; + text-align: center; +} + +.login .password-reset-link { + text-align: center; +} diff --git a/gawa/static/admin/css/nav_sidebar.css b/gawa/static/admin/css/nav_sidebar.css new file mode 100644 index 0000000..f76e6ce --- /dev/null +++ b/gawa/static/admin/css/nav_sidebar.css @@ -0,0 +1,144 @@ +.sticky { + position: sticky; + top: 0; + max-height: 100vh; +} + +.toggle-nav-sidebar { + z-index: 20; + left: 0; + display: flex; + align-items: center; + justify-content: center; + flex: 0 0 23px; + width: 23px; + border: 0; + border-right: 1px solid var(--hairline-color); + background-color: var(--body-bg); + cursor: pointer; + font-size: 1.25rem; + color: var(--link-fg); + padding: 0; +} + +[dir="rtl"] .toggle-nav-sidebar { + border-left: 1px solid var(--hairline-color); + border-right: 0; +} + +.toggle-nav-sidebar:hover, +.toggle-nav-sidebar:focus { + background-color: var(--darkened-bg); +} + +#nav-sidebar { + z-index: 15; + flex: 0 0 275px; + left: -276px; + margin-left: -276px; + border-top: 1px solid transparent; + border-right: 1px solid var(--hairline-color); + background-color: var(--body-bg); + overflow: auto; +} + +[dir="rtl"] #nav-sidebar { + border-left: 1px solid var(--hairline-color); + border-right: 0; + left: 0; + margin-left: 0; + right: -276px; + margin-right: -276px; +} + +.toggle-nav-sidebar::before { + content: '\00BB'; +} + +.main.shifted .toggle-nav-sidebar::before { + content: '\00AB'; +} + +.main > #nav-sidebar { + visibility: hidden; +} + +.main.shifted > #nav-sidebar { + margin-left: 0; + visibility: visible; +} + +[dir="rtl"] .main.shifted > #nav-sidebar { + margin-right: 0; +} + +#nav-sidebar .module th { + width: 100%; + overflow-wrap: anywhere; +} + +#nav-sidebar .module th, +#nav-sidebar .module caption { + padding-left: 16px; +} + +#nav-sidebar .module td { + white-space: nowrap; +} + +[dir="rtl"] #nav-sidebar .module th, +[dir="rtl"] #nav-sidebar .module caption { + padding-left: 8px; + padding-right: 16px; +} + +#nav-sidebar .current-app .section:link, +#nav-sidebar .current-app .section:visited { + color: var(--header-color); + font-weight: bold; +} + +#nav-sidebar .current-model { + background: var(--selected-row); +} + +.main > #nav-sidebar + .content { + max-width: calc(100% - 23px); +} + +.main.shifted > #nav-sidebar + .content { + max-width: calc(100% - 299px); +} + +@media (max-width: 767px) { + #nav-sidebar, #toggle-nav-sidebar { + display: none; + } + + .main > #nav-sidebar + .content, + .main.shifted > #nav-sidebar + .content { + max-width: 100%; + } +} + +#nav-filter { + width: 100%; + box-sizing: border-box; + padding: 2px 5px; + margin: 5px 0; + border: 1px solid var(--border-color); + background-color: var(--darkened-bg); + color: var(--body-fg); +} + +#nav-filter:focus { + border-color: var(--body-quiet-color); +} + +#nav-filter.no-results { + background: var(--message-error-bg); +} + +#nav-sidebar table { + width: 100%; +} diff --git a/gawa/static/admin/css/responsive.css b/gawa/static/admin/css/responsive.css new file mode 100644 index 0000000..9ce4f67 --- /dev/null +++ b/gawa/static/admin/css/responsive.css @@ -0,0 +1,998 @@ +/* Tablets */ + +input[type="submit"], button { + -webkit-appearance: none; + appearance: none; +} + +@media (max-width: 1024px) { + /* Basic */ + + html { + -webkit-text-size-adjust: 100%; + } + + td, th { + padding: 10px; + font-size: 0.875rem; + } + + .small { + font-size: 0.75rem; + } + + /* Layout */ + + #container { + min-width: 0; + } + + #content { + padding: 15px 20px 20px; + } + + div.breadcrumbs { + padding: 10px 30px; + } + + /* Header */ + + #header { + flex-direction: column; + padding: 15px 30px; + justify-content: flex-start; + } + + #branding h1 { + margin: 0 0 8px; + line-height: 1.2; + } + + #user-tools { + margin: 0; + font-weight: 400; + line-height: 1.85; + text-align: left; + } + + #user-tools a { + display: inline-block; + line-height: 1.4; + } + + /* Dashboard */ + + .dashboard #content { + width: auto; + } + + #content-related { + margin-right: -290px; + } + + .colSM #content-related { + margin-left: -290px; + } + + .colMS { + margin-right: 290px; + } + + .colSM { + margin-left: 290px; + } + + .dashboard .module table td a { + padding-right: 0; + } + + td .changelink, td .addlink { + font-size: 0.8125rem; + } + + /* Changelist */ + + #toolbar { + border: none; + padding: 15px; + } + + #changelist-search > div { + display: flex; + flex-wrap: nowrap; + max-width: 480px; + } + + #changelist-search label { + line-height: 1.375rem; + } + + #toolbar form #searchbar { + flex: 1 0 auto; + width: 0; + height: 1.375rem; + margin: 0 10px 0 6px; + } + + #toolbar form input[type=submit] { + flex: 0 1 auto; + } + + #changelist-search .quiet { + width: 0; + flex: 1 0 auto; + margin: 5px 0 0 25px; + } + + #changelist .actions { + display: flex; + flex-wrap: wrap; + padding: 15px 0; + } + + #changelist .actions label { + display: flex; + } + + #changelist .actions select { + background: var(--body-bg); + } + + #changelist .actions .button { + min-width: 48px; + margin: 0 10px; + } + + #changelist .actions span.all, + #changelist .actions span.clear, + #changelist .actions span.question, + #changelist .actions span.action-counter { + font-size: 0.6875rem; + margin: 0 10px 0 0; + } + + #changelist-filter { + flex-basis: 200px; + } + + .change-list .filtered .results, + .change-list .filtered .paginator, + .filtered #toolbar, + .filtered .actions, + + #changelist .paginator { + border-top-color: var(--hairline-color); /* XXX Is this used at all? */ + } + + #changelist .results + .paginator { + border-top: none; + } + + /* Forms */ + + label { + font-size: 0.875rem; + } + + .form-row input[type=text], + .form-row input[type=password], + .form-row input[type=email], + .form-row input[type=url], + .form-row input[type=tel], + .form-row input[type=number], + .form-row textarea, + .form-row select, + .form-row .vTextField { + box-sizing: border-box; + margin: 0; + padding: 6px 8px; + min-height: 2.25rem; + font-size: 0.875rem; + } + + .form-row select { + height: 2.25rem; + } + + .form-row select[multiple] { + height: auto; + min-height: 0; + } + + fieldset .fieldBox + .fieldBox { + margin-top: 10px; + padding-top: 10px; + border-top: 1px solid var(--hairline-color); + } + + textarea { + max-width: 100%; + max-height: 120px; + } + + .aligned label { + padding-top: 6px; + } + + .aligned .related-lookup, + .aligned .datetimeshortcuts, + .aligned .related-lookup + strong { + align-self: center; + margin-left: 15px; + } + + form .aligned div.radiolist { + margin-left: 2px; + } + + .submit-row { + padding: 8px; + } + + .submit-row a.deletelink { + padding: 10px 7px; + } + + .button, input[type=submit], input[type=button], .submit-row input, a.button { + padding: 7px; + } + + /* Related widget */ + + .related-widget-wrapper { + float: none; + } + + .related-widget-wrapper-link + .selector { + max-width: calc(100% - 30px); + margin-right: 15px; + } + + select + .related-widget-wrapper-link, + .related-widget-wrapper-link + .related-widget-wrapper-link { + margin-left: 10px; + } + + /* Selector */ + + .selector { + display: flex; + width: 100%; + } + + .selector .selector-filter { + display: flex; + align-items: center; + } + + .selector .selector-filter label { + margin: 0 8px 0 0; + } + + .selector .selector-filter input { + width: auto; + min-height: 0; + flex: 1 1; + } + + .selector-available, .selector-chosen { + width: auto; + flex: 1 1; + display: flex; + flex-direction: column; + } + + .selector select { + width: 100%; + flex: 1 0 auto; + margin-bottom: 5px; + } + + .selector ul.selector-chooser { + width: 26px; + height: 52px; + padding: 2px 0; + margin: auto 15px; + border-radius: 20px; + transform: translateY(-10px); + } + + .selector-add, .selector-remove { + width: 20px; + height: 20px; + background-size: 20px auto; + } + + .selector-add { + background-position: 0 -120px; + } + + .selector-remove { + background-position: 0 -80px; + } + + a.selector-chooseall, a.selector-clearall { + align-self: center; + } + + .stacked { + flex-direction: column; + max-width: 480px; + } + + .stacked > * { + flex: 0 1 auto; + } + + .stacked select { + margin-bottom: 0; + } + + .stacked .selector-available, .stacked .selector-chosen { + width: auto; + } + + .stacked ul.selector-chooser { + width: 52px; + height: 26px; + padding: 0 2px; + margin: 15px auto; + transform: none; + } + + .stacked .selector-chooser li { + padding: 3px; + } + + .stacked .selector-add, .stacked .selector-remove { + background-size: 20px auto; + } + + .stacked .selector-add { + background-position: 0 -40px; + } + + .stacked .active.selector-add { + background-position: 0 -40px; + } + + .active.selector-add:focus, .active.selector-add:hover { + background-position: 0 -140px; + } + + .stacked .active.selector-add:focus, .stacked .active.selector-add:hover { + background-position: 0 -60px; + } + + .stacked .selector-remove { + background-position: 0 0; + } + + .stacked .active.selector-remove { + background-position: 0 0; + } + + .active.selector-remove:focus, .active.selector-remove:hover { + background-position: 0 -100px; + } + + .stacked .active.selector-remove:focus, .stacked .active.selector-remove:hover { + background-position: 0 -20px; + } + + .help-tooltip, .selector .help-icon { + display: none; + } + + .datetime input { + width: 50%; + max-width: 120px; + } + + .datetime span { + font-size: 0.8125rem; + } + + .datetime .timezonewarning { + display: block; + font-size: 0.6875rem; + color: var(--body-quiet-color); + } + + .datetimeshortcuts { + color: var(--border-color); /* XXX Redundant, .datetime span also sets #ccc */ + } + + .form-row .datetime input.vDateField, .form-row .datetime input.vTimeField { + width: 75%; + } + + .inline-group { + overflow: auto; + } + + /* Messages */ + + ul.messagelist li { + padding-left: 55px; + background-position: 30px 12px; + } + + ul.messagelist li.error { + background-position: 30px 12px; + } + + ul.messagelist li.warning { + background-position: 30px 14px; + } + + /* Login */ + + .login #header { + padding: 15px 20px; + } + + .login #branding h1 { + margin: 0; + } + + /* GIS */ + + div.olMap { + max-width: calc(100vw - 30px); + max-height: 300px; + } + + .olMap + .clear_features { + display: block; + margin-top: 10px; + } + + /* Docs */ + + .module table.xfull { + width: 100%; + } + + pre.literal-block { + overflow: auto; + } +} + +/* Mobile */ + +@media (max-width: 767px) { + /* Layout */ + + #header, #content, #footer { + padding: 15px; + } + + #footer:empty { + padding: 0; + } + + div.breadcrumbs { + padding: 10px 15px; + } + + /* Dashboard */ + + .colMS, .colSM { + margin: 0; + } + + #content-related, .colSM #content-related { + width: 100%; + margin: 0; + } + + #content-related .module { + margin-bottom: 0; + } + + #content-related .module h2 { + padding: 10px 15px; + font-size: 1rem; + } + + /* Changelist */ + + #changelist { + align-items: stretch; + flex-direction: column; + } + + #toolbar { + padding: 10px; + } + + #changelist-filter { + margin-left: 0; + } + + #changelist .actions label { + flex: 1 1; + } + + #changelist .actions select { + flex: 1 0; + width: 100%; + } + + #changelist .actions span { + flex: 1 0 100%; + } + + #changelist-filter { + position: static; + width: auto; + margin-top: 30px; + } + + .object-tools { + float: none; + margin: 0 0 15px; + padding: 0; + overflow: hidden; + } + + .object-tools li { + height: auto; + margin-left: 0; + } + + .object-tools li + li { + margin-left: 15px; + } + + /* Forms */ + + .form-row { + padding: 15px 0; + } + + .aligned .form-row, + .aligned .form-row > div { + max-width: 100vw; + } + + .aligned .form-row > div { + width: calc(100vw - 30px); + } + + .flex-container { + flex-flow: column; + } + + textarea { + max-width: none; + } + + .vURLField { + width: auto; + } + + fieldset .fieldBox + .fieldBox { + margin-top: 15px; + padding-top: 15px; + } + + fieldset.collapsed .form-row { + display: none; + } + + .aligned label { + width: 100%; + padding: 0 0 10px; + } + + .aligned label:after { + max-height: 0; + } + + .aligned .form-row input, + .aligned .form-row select, + .aligned .form-row textarea { + flex: 1 1 auto; + max-width: 100%; + } + + .aligned .checkbox-row { + align-items: center; + } + + .aligned .checkbox-row input { + flex: 0 1 auto; + margin: 0; + } + + .aligned .vCheckboxLabel { + flex: 1 0; + padding: 1px 0 0 5px; + } + + .aligned label + p, + .aligned label + div.help, + .aligned label + div.readonly { + padding: 0; + margin-left: 0; + } + + .aligned p.file-upload { + font-size: 0.8125rem; + } + + span.clearable-file-input { + margin-left: 15px; + } + + span.clearable-file-input label { + font-size: 0.8125rem; + padding-bottom: 0; + } + + .aligned .timezonewarning { + flex: 1 0 100%; + margin-top: 5px; + } + + form .aligned .form-row div.help { + width: 100%; + margin: 5px 0 0; + padding: 0; + } + + form .aligned ul, + form .aligned ul.errorlist { + margin-left: 0; + padding-left: 0; + } + + form .aligned div.radiolist { + margin-top: 5px; + margin-right: 15px; + margin-bottom: -3px; + } + + form .aligned div.radiolist:not(.inline) div + div { + margin-top: 5px; + } + + /* Related widget */ + + .related-widget-wrapper { + width: 100%; + display: flex; + align-items: flex-start; + } + + .related-widget-wrapper .selector { + order: 1; + } + + .related-widget-wrapper > a { + order: 2; + } + + .related-widget-wrapper .radiolist ~ a { + align-self: flex-end; + } + + .related-widget-wrapper > select ~ a { + align-self: center; + } + + select + .related-widget-wrapper-link, + .related-widget-wrapper-link + .related-widget-wrapper-link { + margin-left: 15px; + } + + /* Selector */ + + .selector { + flex-direction: column; + } + + .selector > * { + float: none; + } + + .selector-available, .selector-chosen { + margin-bottom: 0; + flex: 1 1 auto; + } + + .selector select { + max-height: 96px; + } + + .selector ul.selector-chooser { + display: block; + float: none; + width: 52px; + height: 26px; + padding: 0 2px; + margin: 15px auto 20px; + transform: none; + } + + .selector ul.selector-chooser li { + float: left; + } + + .selector-remove { + background-position: 0 0; + } + + .active.selector-remove:focus, .active.selector-remove:hover { + background-position: 0 -20px; + } + + .selector-add { + background-position: 0 -40px; + } + + .active.selector-add:focus, .active.selector-add:hover { + background-position: 0 -60px; + } + + /* Inlines */ + + .inline-group[data-inline-type="stacked"] .inline-related { + border: 1px solid var(--hairline-color); + border-radius: 4px; + margin-top: 15px; + overflow: auto; + } + + .inline-group[data-inline-type="stacked"] .inline-related > * { + box-sizing: border-box; + } + + .inline-group[data-inline-type="stacked"] .inline-related .module { + padding: 0 10px; + } + + .inline-group[data-inline-type="stacked"] .inline-related .module .form-row { + border-top: 1px solid var(--hairline-color); + border-bottom: none; + } + + .inline-group[data-inline-type="stacked"] .inline-related .module .form-row:first-child { + border-top: none; + } + + .inline-group[data-inline-type="stacked"] .inline-related h3 { + padding: 10px; + border-top-width: 0; + border-bottom-width: 2px; + display: flex; + flex-wrap: wrap; + align-items: center; + } + + .inline-group[data-inline-type="stacked"] .inline-related h3 .inline_label { + margin-right: auto; + } + + .inline-group[data-inline-type="stacked"] .inline-related h3 span.delete { + float: none; + flex: 1 1 100%; + margin-top: 5px; + } + + .inline-group[data-inline-type="stacked"] .aligned .form-row > div:not([class]) { + width: 100%; + } + + .inline-group[data-inline-type="stacked"] .aligned label { + width: 100%; + } + + .inline-group[data-inline-type="stacked"] div.add-row { + margin-top: 15px; + border: 1px solid var(--hairline-color); + border-radius: 4px; + } + + .inline-group div.add-row, + .inline-group .tabular tr.add-row td { + padding: 0; + } + + .inline-group div.add-row a, + .inline-group .tabular tr.add-row td a { + display: block; + padding: 8px 10px 8px 26px; + background-position: 8px 9px; + } + + /* Submit row */ + + .submit-row { + padding: 10px; + margin: 0 0 15px; + flex-direction: column; + gap: 8px; + } + + .submit-row input, .submit-row input.default, .submit-row a { + text-align: center; + } + + .submit-row a.closelink { + padding: 10px 0; + text-align: center; + } + + .submit-row a.deletelink { + margin: 0; + } + + /* Messages */ + + ul.messagelist li { + padding-left: 40px; + background-position: 15px 12px; + } + + ul.messagelist li.error { + background-position: 15px 12px; + } + + ul.messagelist li.warning { + background-position: 15px 14px; + } + + /* Paginator */ + + .paginator .this-page, .paginator a:link, .paginator a:visited { + padding: 4px 10px; + } + + /* Login */ + + body.login { + padding: 0 15px; + } + + .login #container { + width: auto; + max-width: 480px; + margin: 50px auto; + } + + .login #header, + .login #content { + padding: 15px; + } + + .login #content-main { + float: none; + } + + .login .form-row { + padding: 0; + } + + .login .form-row + .form-row { + margin-top: 15px; + } + + .login .form-row label { + margin: 0 0 5px; + line-height: 1.2; + } + + .login .submit-row { + padding: 15px 0 0; + } + + .login br { + display: none; + } + + .login .submit-row input { + margin: 0; + text-transform: uppercase; + } + + .errornote { + margin: 0 0 20px; + padding: 8px 12px; + font-size: 0.8125rem; + } + + /* Calendar and clock */ + + .calendarbox, .clockbox { + position: fixed !important; + top: 50% !important; + left: 50% !important; + transform: translate(-50%, -50%); + margin: 0; + border: none; + overflow: visible; + } + + .calendarbox:before, .clockbox:before { + content: ''; + position: fixed; + top: 50%; + left: 50%; + width: 100vw; + height: 100vh; + background: rgba(0, 0, 0, 0.75); + transform: translate(-50%, -50%); + } + + .calendarbox > *, .clockbox > * { + position: relative; + z-index: 1; + } + + .calendarbox > div:first-child { + z-index: 2; + } + + .calendarbox .calendar, .clockbox h2 { + border-radius: 4px 4px 0 0; + overflow: hidden; + } + + .calendarbox .calendar-cancel, .clockbox .calendar-cancel { + border-radius: 0 0 4px 4px; + overflow: hidden; + } + + .calendar-shortcuts { + padding: 10px 0; + font-size: 0.75rem; + line-height: 0.75rem; + } + + .calendar-shortcuts a { + margin: 0 4px; + } + + .timelist a { + background: var(--body-bg); + padding: 4px; + } + + .calendar-cancel { + padding: 8px 10px; + } + + .clockbox h2 { + padding: 8px 15px; + } + + .calendar caption { + padding: 10px; + } + + .calendarbox .calendarnav-previous, .calendarbox .calendarnav-next { + z-index: 1; + top: 10px; + } + + /* History */ + + table#change-history tbody th, table#change-history tbody td { + font-size: 0.8125rem; + word-break: break-word; + } + + table#change-history tbody th { + width: auto; + } + + /* Docs */ + + table.model tbody th, table.model tbody td { + font-size: 0.8125rem; + word-break: break-word; + } +} diff --git a/gawa/static/admin/css/responsive_rtl.css b/gawa/static/admin/css/responsive_rtl.css new file mode 100644 index 0000000..639e20b --- /dev/null +++ b/gawa/static/admin/css/responsive_rtl.css @@ -0,0 +1,81 @@ +/* TABLETS */ + +@media (max-width: 1024px) { + [dir="rtl"] .colMS { + margin-right: 0; + } + + [dir="rtl"] #user-tools { + text-align: right; + } + + [dir="rtl"] #changelist .actions label { + padding-left: 10px; + padding-right: 0; + } + + [dir="rtl"] #changelist .actions select { + margin-left: 0; + margin-right: 15px; + } + + [dir="rtl"] .change-list .filtered .results, + [dir="rtl"] .change-list .filtered .paginator, + [dir="rtl"] .filtered #toolbar, + [dir="rtl"] .filtered div.xfull, + [dir="rtl"] .filtered .actions, + [dir="rtl"] #changelist-filter { + margin-left: 0; + } + + [dir="rtl"] .inline-group ul.tools a.add, + [dir="rtl"] .inline-group div.add-row a, + [dir="rtl"] .inline-group .tabular tr.add-row td a { + padding: 8px 26px 8px 10px; + background-position: calc(100% - 8px) 9px; + } + + [dir="rtl"] .related-widget-wrapper-link + .selector { + margin-right: 0; + margin-left: 15px; + } + + [dir="rtl"] .selector .selector-filter label { + margin-right: 0; + margin-left: 8px; + } + + [dir="rtl"] .object-tools li { + float: right; + } + + [dir="rtl"] .object-tools li + li { + margin-left: 0; + margin-right: 15px; + } + + [dir="rtl"] .dashboard .module table td a { + padding-left: 0; + padding-right: 16px; + } +} + +/* MOBILE */ + +@media (max-width: 767px) { + [dir="rtl"] .aligned .related-lookup, + [dir="rtl"] .aligned .datetimeshortcuts { + margin-left: 0; + margin-right: 15px; + } + + [dir="rtl"] .aligned ul, + [dir="rtl"] form .aligned ul.errorlist { + margin-right: 0; + } + + [dir="rtl"] #changelist-filter { + margin-left: 0; + margin-right: 0; + } +} diff --git a/gawa/static/admin/css/rtl.css b/gawa/static/admin/css/rtl.css new file mode 100644 index 0000000..53a6dd6 --- /dev/null +++ b/gawa/static/admin/css/rtl.css @@ -0,0 +1,288 @@ +/* GLOBAL */ + +th { + text-align: right; +} + +.module h2, .module caption { + text-align: right; +} + +.module ul, .module ol { + margin-left: 0; + margin-right: 1.5em; +} + +.viewlink, .addlink, .changelink { + padding-left: 0; + padding-right: 16px; + background-position: 100% 1px; +} + +.deletelink { + padding-left: 0; + padding-right: 16px; + background-position: 100% 1px; +} + +.object-tools { + float: left; +} + +thead th:first-child, +tfoot td:first-child { + border-left: none; +} + +/* LAYOUT */ + +#user-tools { + right: auto; + left: 0; + text-align: left; +} + +div.breadcrumbs { + text-align: right; +} + +#content-main { + float: right; +} + +#content-related { + float: left; + margin-left: -300px; + margin-right: auto; +} + +.colMS { + margin-left: 300px; + margin-right: 0; +} + +/* SORTABLE TABLES */ + +table thead th.sorted .sortoptions { + float: left; +} + +thead th.sorted .text { + padding-right: 0; + padding-left: 42px; +} + +/* dashboard styles */ + +.dashboard .module table td a { + padding-left: .6em; + padding-right: 16px; +} + +/* changelists styles */ + +.change-list .filtered table { + border-left: none; + border-right: 0px none; +} + +#changelist-filter { + border-left: none; + border-right: none; + margin-left: 0; + margin-right: 30px; +} + +#changelist-filter li.selected { + border-left: none; + padding-left: 10px; + margin-left: 0; + border-right: 5px solid var(--hairline-color); + padding-right: 10px; + margin-right: -15px; +} + +#changelist table tbody td:first-child, #changelist table tbody th:first-child { + border-right: none; + border-left: none; +} + +/* FORMS */ + +.aligned label { + padding: 0 0 3px 1em; +} + +.submit-row a.deletelink { + margin-left: 0; + margin-right: auto; +} + +.vDateField, .vTimeField { + margin-left: 2px; +} + +.aligned .form-row input { + margin-left: 5px; +} + +form .aligned ul { + margin-right: 163px; + padding-right: 10px; + margin-left: 0; + padding-left: 0; +} + +form ul.inline li { + float: right; + padding-right: 0; + padding-left: 7px; +} + +form .aligned p.help, +form .aligned div.help { + margin-right: 160px; + padding-right: 10px; +} + +form div.help ul, +form .aligned .checkbox-row + .help, +form .aligned p.date div.help.timezonewarning, +form .aligned p.datetime div.help.timezonewarning, +form .aligned p.time div.help.timezonewarning { + margin-right: 0; + padding-right: 0; +} + +form .wide p.help, form .wide div.help { + padding-left: 0; + padding-right: 50px; +} + +form .wide p, +form .wide ul.errorlist, +form .wide input + p.help, +form .wide input + div.help { + margin-right: 200px; + margin-left: 0px; +} + +.submit-row { + text-align: right; +} + +fieldset .fieldBox { + margin-left: 20px; + margin-right: 0; +} + +.errorlist li { + background-position: 100% 12px; + padding: 0; +} + +.errornote { + background-position: 100% 12px; + padding: 10px 12px; +} + +/* WIDGETS */ + +.calendarnav-previous { + top: 0; + left: auto; + right: 10px; + background: url(../img/calendar-icons.svg) 0 -30px no-repeat; +} + +.calendarbox .calendarnav-previous:focus, +.calendarbox .calendarnav-previous:hover { + background-position: 0 -45px; +} + +.calendarnav-next { + top: 0; + right: auto; + left: 10px; + background: url(../img/calendar-icons.svg) 0 0 no-repeat; +} + +.calendarbox .calendarnav-next:focus, +.calendarbox .calendarnav-next:hover { + background-position: 0 -15px; +} + +.calendar caption, .calendarbox h2 { + text-align: center; +} + +.selector { + float: right; +} + +.selector .selector-filter { + text-align: right; +} + +.selector-add { + background: url(../img/selector-icons.svg) 0 -64px no-repeat; +} + +.active.selector-add:focus, .active.selector-add:hover { + background-position: 0 -80px; +} + +.selector-remove { + background: url(../img/selector-icons.svg) 0 -96px no-repeat; +} + +.active.selector-remove:focus, .active.selector-remove:hover { + background-position: 0 -112px; +} + +a.selector-chooseall { + background: url(../img/selector-icons.svg) right -128px no-repeat; +} + +a.active.selector-chooseall:focus, a.active.selector-chooseall:hover { + background-position: 100% -144px; +} + +a.selector-clearall { + background: url(../img/selector-icons.svg) 0 -160px no-repeat; +} + +a.active.selector-clearall:focus, a.active.selector-clearall:hover { + background-position: 0 -176px; +} + +.inline-deletelink { + float: left; +} + +form .form-row p.datetime { + overflow: hidden; +} + +.related-widget-wrapper { + float: right; +} + +/* MISC */ + +.inline-related h2, .inline-group h2 { + text-align: right +} + +.inline-related h3 span.delete { + padding-right: 20px; + padding-left: inherit; + left: 10px; + right: inherit; + float:left; +} + +.inline-related h3 span.delete label { + margin-left: inherit; + margin-right: 2px; +} diff --git a/gawa/static/admin/css/vendor/select2/LICENSE-SELECT2.md b/gawa/static/admin/css/vendor/select2/LICENSE-SELECT2.md new file mode 100644 index 0000000..8cb8a2b --- /dev/null +++ b/gawa/static/admin/css/vendor/select2/LICENSE-SELECT2.md @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2012-2017 Kevin Brown, Igor Vaynberg, and Select2 contributors + +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. diff --git a/gawa/static/admin/css/vendor/select2/select2.css b/gawa/static/admin/css/vendor/select2/select2.css new file mode 100644 index 0000000..750b320 --- /dev/null +++ b/gawa/static/admin/css/vendor/select2/select2.css @@ -0,0 +1,481 @@ +.select2-container { + box-sizing: border-box; + display: inline-block; + margin: 0; + position: relative; + vertical-align: middle; } + .select2-container .select2-selection--single { + box-sizing: border-box; + cursor: pointer; + display: block; + height: 28px; + user-select: none; + -webkit-user-select: none; } + .select2-container .select2-selection--single .select2-selection__rendered { + display: block; + padding-left: 8px; + padding-right: 20px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; } + .select2-container .select2-selection--single .select2-selection__clear { + position: relative; } + .select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered { + padding-right: 8px; + padding-left: 20px; } + .select2-container .select2-selection--multiple { + box-sizing: border-box; + cursor: pointer; + display: block; + min-height: 32px; + user-select: none; + -webkit-user-select: none; } + .select2-container .select2-selection--multiple .select2-selection__rendered { + display: inline-block; + overflow: hidden; + padding-left: 8px; + text-overflow: ellipsis; + white-space: nowrap; } + .select2-container .select2-search--inline { + float: left; } + .select2-container .select2-search--inline .select2-search__field { + box-sizing: border-box; + border: none; + font-size: 100%; + margin-top: 5px; + padding: 0; } + .select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button { + -webkit-appearance: none; } + +.select2-dropdown { + background-color: white; + border: 1px solid #aaa; + border-radius: 4px; + box-sizing: border-box; + display: block; + position: absolute; + left: -100000px; + width: 100%; + z-index: 1051; } + +.select2-results { + display: block; } + +.select2-results__options { + list-style: none; + margin: 0; + padding: 0; } + +.select2-results__option { + padding: 6px; + user-select: none; + -webkit-user-select: none; } + .select2-results__option[aria-selected] { + cursor: pointer; } + +.select2-container--open .select2-dropdown { + left: 0; } + +.select2-container--open .select2-dropdown--above { + border-bottom: none; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; } + +.select2-container--open .select2-dropdown--below { + border-top: none; + border-top-left-radius: 0; + border-top-right-radius: 0; } + +.select2-search--dropdown { + display: block; + padding: 4px; } + .select2-search--dropdown .select2-search__field { + padding: 4px; + width: 100%; + box-sizing: border-box; } + .select2-search--dropdown .select2-search__field::-webkit-search-cancel-button { + -webkit-appearance: none; } + .select2-search--dropdown.select2-search--hide { + display: none; } + +.select2-close-mask { + border: 0; + margin: 0; + padding: 0; + display: block; + position: fixed; + left: 0; + top: 0; + min-height: 100%; + min-width: 100%; + height: auto; + width: auto; + opacity: 0; + z-index: 99; + background-color: #fff; + filter: alpha(opacity=0); } + +.select2-hidden-accessible { + border: 0 !important; + clip: rect(0 0 0 0) !important; + -webkit-clip-path: inset(50%) !important; + clip-path: inset(50%) !important; + height: 1px !important; + overflow: hidden !important; + padding: 0 !important; + position: absolute !important; + width: 1px !important; + white-space: nowrap !important; } + +.select2-container--default .select2-selection--single { + background-color: #fff; + border: 1px solid #aaa; + border-radius: 4px; } + .select2-container--default .select2-selection--single .select2-selection__rendered { + color: #444; + line-height: 28px; } + .select2-container--default .select2-selection--single .select2-selection__clear { + cursor: pointer; + float: right; + font-weight: bold; } + .select2-container--default .select2-selection--single .select2-selection__placeholder { + color: #999; } + .select2-container--default .select2-selection--single .select2-selection__arrow { + height: 26px; + position: absolute; + top: 1px; + right: 1px; + width: 20px; } + .select2-container--default .select2-selection--single .select2-selection__arrow b { + border-color: #888 transparent transparent transparent; + border-style: solid; + border-width: 5px 4px 0 4px; + height: 0; + left: 50%; + margin-left: -4px; + margin-top: -2px; + position: absolute; + top: 50%; + width: 0; } + +.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear { + float: left; } + +.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow { + left: 1px; + right: auto; } + +.select2-container--default.select2-container--disabled .select2-selection--single { + background-color: #eee; + cursor: default; } + .select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear { + display: none; } + +.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b { + border-color: transparent transparent #888 transparent; + border-width: 0 4px 5px 4px; } + +.select2-container--default .select2-selection--multiple { + background-color: white; + border: 1px solid #aaa; + border-radius: 4px; + cursor: text; } + .select2-container--default .select2-selection--multiple .select2-selection__rendered { + box-sizing: border-box; + list-style: none; + margin: 0; + padding: 0 5px; + width: 100%; } + .select2-container--default .select2-selection--multiple .select2-selection__rendered li { + list-style: none; } + .select2-container--default .select2-selection--multiple .select2-selection__clear { + cursor: pointer; + float: right; + font-weight: bold; + margin-top: 5px; + margin-right: 10px; + padding: 1px; } + .select2-container--default .select2-selection--multiple .select2-selection__choice { + background-color: #e4e4e4; + border: 1px solid #aaa; + border-radius: 4px; + cursor: default; + float: left; + margin-right: 5px; + margin-top: 5px; + padding: 0 5px; } + .select2-container--default .select2-selection--multiple .select2-selection__choice__remove { + color: #999; + cursor: pointer; + display: inline-block; + font-weight: bold; + margin-right: 2px; } + .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover { + color: #333; } + +.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline { + float: right; } + +.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice { + margin-left: 5px; + margin-right: auto; } + +.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove { + margin-left: 2px; + margin-right: auto; } + +.select2-container--default.select2-container--focus .select2-selection--multiple { + border: solid black 1px; + outline: 0; } + +.select2-container--default.select2-container--disabled .select2-selection--multiple { + background-color: #eee; + cursor: default; } + +.select2-container--default.select2-container--disabled .select2-selection__choice__remove { + display: none; } + +.select2-container--default.select2-container--open.select2-container--above .select2-selection--single, .select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple { + border-top-left-radius: 0; + border-top-right-radius: 0; } + +.select2-container--default.select2-container--open.select2-container--below .select2-selection--single, .select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; } + +.select2-container--default .select2-search--dropdown .select2-search__field { + border: 1px solid #aaa; } + +.select2-container--default .select2-search--inline .select2-search__field { + background: transparent; + border: none; + outline: 0; + box-shadow: none; + -webkit-appearance: textfield; } + +.select2-container--default .select2-results > .select2-results__options { + max-height: 200px; + overflow-y: auto; } + +.select2-container--default .select2-results__option[role=group] { + padding: 0; } + +.select2-container--default .select2-results__option[aria-disabled=true] { + color: #999; } + +.select2-container--default .select2-results__option[aria-selected=true] { + background-color: #ddd; } + +.select2-container--default .select2-results__option .select2-results__option { + padding-left: 1em; } + .select2-container--default .select2-results__option .select2-results__option .select2-results__group { + padding-left: 0; } + .select2-container--default .select2-results__option .select2-results__option .select2-results__option { + margin-left: -1em; + padding-left: 2em; } + .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -2em; + padding-left: 3em; } + .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -3em; + padding-left: 4em; } + .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -4em; + padding-left: 5em; } + .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -5em; + padding-left: 6em; } + +.select2-container--default .select2-results__option--highlighted[aria-selected] { + background-color: #5897fb; + color: white; } + +.select2-container--default .select2-results__group { + cursor: default; + display: block; + padding: 6px; } + +.select2-container--classic .select2-selection--single { + background-color: #f7f7f7; + border: 1px solid #aaa; + border-radius: 4px; + outline: 0; + background-image: -webkit-linear-gradient(top, white 50%, #eeeeee 100%); + background-image: -o-linear-gradient(top, white 50%, #eeeeee 100%); + background-image: linear-gradient(to bottom, white 50%, #eeeeee 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); } + .select2-container--classic .select2-selection--single:focus { + border: 1px solid #5897fb; } + .select2-container--classic .select2-selection--single .select2-selection__rendered { + color: #444; + line-height: 28px; } + .select2-container--classic .select2-selection--single .select2-selection__clear { + cursor: pointer; + float: right; + font-weight: bold; + margin-right: 10px; } + .select2-container--classic .select2-selection--single .select2-selection__placeholder { + color: #999; } + .select2-container--classic .select2-selection--single .select2-selection__arrow { + background-color: #ddd; + border: none; + border-left: 1px solid #aaa; + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; + height: 26px; + position: absolute; + top: 1px; + right: 1px; + width: 20px; + background-image: -webkit-linear-gradient(top, #eeeeee 50%, #cccccc 100%); + background-image: -o-linear-gradient(top, #eeeeee 50%, #cccccc 100%); + background-image: linear-gradient(to bottom, #eeeeee 50%, #cccccc 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0); } + .select2-container--classic .select2-selection--single .select2-selection__arrow b { + border-color: #888 transparent transparent transparent; + border-style: solid; + border-width: 5px 4px 0 4px; + height: 0; + left: 50%; + margin-left: -4px; + margin-top: -2px; + position: absolute; + top: 50%; + width: 0; } + +.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear { + float: left; } + +.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow { + border: none; + border-right: 1px solid #aaa; + border-radius: 0; + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; + left: 1px; + right: auto; } + +.select2-container--classic.select2-container--open .select2-selection--single { + border: 1px solid #5897fb; } + .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow { + background: transparent; + border: none; } + .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b { + border-color: transparent transparent #888 transparent; + border-width: 0 4px 5px 4px; } + +.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single { + border-top: none; + border-top-left-radius: 0; + border-top-right-radius: 0; + background-image: -webkit-linear-gradient(top, white 0%, #eeeeee 50%); + background-image: -o-linear-gradient(top, white 0%, #eeeeee 50%); + background-image: linear-gradient(to bottom, white 0%, #eeeeee 50%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); } + +.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single { + border-bottom: none; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + background-image: -webkit-linear-gradient(top, #eeeeee 50%, white 100%); + background-image: -o-linear-gradient(top, #eeeeee 50%, white 100%); + background-image: linear-gradient(to bottom, #eeeeee 50%, white 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0); } + +.select2-container--classic .select2-selection--multiple { + background-color: white; + border: 1px solid #aaa; + border-radius: 4px; + cursor: text; + outline: 0; } + .select2-container--classic .select2-selection--multiple:focus { + border: 1px solid #5897fb; } + .select2-container--classic .select2-selection--multiple .select2-selection__rendered { + list-style: none; + margin: 0; + padding: 0 5px; } + .select2-container--classic .select2-selection--multiple .select2-selection__clear { + display: none; } + .select2-container--classic .select2-selection--multiple .select2-selection__choice { + background-color: #e4e4e4; + border: 1px solid #aaa; + border-radius: 4px; + cursor: default; + float: left; + margin-right: 5px; + margin-top: 5px; + padding: 0 5px; } + .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove { + color: #888; + cursor: pointer; + display: inline-block; + font-weight: bold; + margin-right: 2px; } + .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover { + color: #555; } + +.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice { + float: right; + margin-left: 5px; + margin-right: auto; } + +.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove { + margin-left: 2px; + margin-right: auto; } + +.select2-container--classic.select2-container--open .select2-selection--multiple { + border: 1px solid #5897fb; } + +.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple { + border-top: none; + border-top-left-radius: 0; + border-top-right-radius: 0; } + +.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple { + border-bottom: none; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; } + +.select2-container--classic .select2-search--dropdown .select2-search__field { + border: 1px solid #aaa; + outline: 0; } + +.select2-container--classic .select2-search--inline .select2-search__field { + outline: 0; + box-shadow: none; } + +.select2-container--classic .select2-dropdown { + background-color: white; + border: 1px solid transparent; } + +.select2-container--classic .select2-dropdown--above { + border-bottom: none; } + +.select2-container--classic .select2-dropdown--below { + border-top: none; } + +.select2-container--classic .select2-results > .select2-results__options { + max-height: 200px; + overflow-y: auto; } + +.select2-container--classic .select2-results__option[role=group] { + padding: 0; } + +.select2-container--classic .select2-results__option[aria-disabled=true] { + color: grey; } + +.select2-container--classic .select2-results__option--highlighted[aria-selected] { + background-color: #3875d7; + color: white; } + +.select2-container--classic .select2-results__group { + cursor: default; + display: block; + padding: 6px; } + +.select2-container--classic.select2-container--open .select2-dropdown { + border-color: #5897fb; } diff --git a/gawa/static/admin/css/vendor/select2/select2.min.css b/gawa/static/admin/css/vendor/select2/select2.min.css new file mode 100644 index 0000000..7c18ad5 --- /dev/null +++ b/gawa/static/admin/css/vendor/select2/select2.min.css @@ -0,0 +1 @@ +.select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:white;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.select2-hidden-accessible{border:0 !important;clip:rect(0 0 0 0) !important;-webkit-clip-path:inset(50%) !important;clip-path:inset(50%) !important;height:1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important;white-space:nowrap !important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--default .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-top:5px;margin-right:10px;padding:1px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline{float:right}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:solid black 1px;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--single,.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--single,.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:transparent;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:white}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top, #fff 50%, #eee 100%);background-image:-o-linear-gradient(top, #fff 50%, #eee 100%);background-image:linear-gradient(to bottom, #fff 50%, #eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top, #eee 50%, #ccc 100%);background-image:-o-linear-gradient(top, #eee 50%, #ccc 100%);background-image:linear-gradient(to bottom, #eee 50%, #ccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0)}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:transparent;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top, #fff 0%, #eee 50%);background-image:-o-linear-gradient(top, #fff 0%, #eee 50%);background-image:linear-gradient(to bottom, #fff 0%, #eee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top, #eee 50%, #fff 100%);background-image:-o-linear-gradient(top, #eee 50%, #fff 100%);background-image:linear-gradient(to bottom, #eee 50%, #fff 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0)}.select2-container--classic .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{float:right;margin-left:5px;margin-right:auto}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb} diff --git a/gawa/static/admin/css/widgets.css b/gawa/static/admin/css/widgets.css new file mode 100644 index 0000000..5f7adcb --- /dev/null +++ b/gawa/static/admin/css/widgets.css @@ -0,0 +1,603 @@ +/* SELECTOR (FILTER INTERFACE) */ + +.selector { + width: 800px; + float: left; + display: flex; +} + +.selector select { + width: 380px; + height: 17.2em; + flex: 1 0 auto; +} + +.selector-available, .selector-chosen { + width: 380px; + text-align: center; + margin-bottom: 5px; + display: flex; + flex-direction: column; +} + +.selector-available h2, .selector-chosen h2 { + border: 1px solid var(--border-color); + border-radius: 4px 4px 0 0; +} + +.selector-chosen .list-footer-display { + border: 1px solid var(--border-color); + border-top: none; + border-radius: 0 0 4px 4px; + margin: 0 0 10px; + padding: 8px; + text-align: center; + background: var(--primary); + color: var(--header-link-color); + cursor: pointer; +} +.selector-chosen .list-footer-display__clear { + color: var(--breadcrumbs-fg); +} + +.selector-chosen h2 { + background: var(--primary); + color: var(--header-link-color); +} + +.selector .selector-available h2 { + background: var(--darkened-bg); + color: var(--body-quiet-color); +} + +.selector .selector-filter { + border: 1px solid var(--border-color); + border-width: 0 1px; + padding: 8px; + color: var(--body-quiet-color); + font-size: 0.625rem; + margin: 0; + text-align: left; +} + +.selector .selector-filter label, +.inline-group .aligned .selector .selector-filter label { + float: left; + margin: 7px 0 0; + width: 18px; + height: 18px; + padding: 0; + overflow: hidden; + line-height: 1; +} + +.selector .selector-available input, +.selector .selector-chosen input { + width: 320px; + margin-left: 8px; +} + +.selector ul.selector-chooser { + align-self: center; + width: 22px; + background-color: var(--selected-bg); + border-radius: 10px; + margin: 0 5px; + padding: 0; + transform: translateY(-17px); +} + +.selector-chooser li { + margin: 0; + padding: 3px; + list-style-type: none; +} + +.selector select { + padding: 0 10px; + margin: 0 0 10px; + border-radius: 0 0 4px 4px; +} +.selector .selector-chosen--with-filtered select { + margin: 0; + border-radius: 0; + height: 14em; +} + +.selector .selector-chosen:not(.selector-chosen--with-filtered) .list-footer-display { + display: none; +} + +.selector-add, .selector-remove { + width: 16px; + height: 16px; + display: block; + text-indent: -3000px; + overflow: hidden; + cursor: default; + opacity: 0.55; +} + +.active.selector-add, .active.selector-remove { + opacity: 1; +} + +.active.selector-add:hover, .active.selector-remove:hover { + cursor: pointer; +} + +.selector-add { + background: url(../img/selector-icons.svg) 0 -96px no-repeat; +} + +.active.selector-add:focus, .active.selector-add:hover { + background-position: 0 -112px; +} + +.selector-remove { + background: url(../img/selector-icons.svg) 0 -64px no-repeat; +} + +.active.selector-remove:focus, .active.selector-remove:hover { + background-position: 0 -80px; +} + +a.selector-chooseall, a.selector-clearall { + display: inline-block; + height: 16px; + text-align: left; + margin: 1px auto 3px; + overflow: hidden; + font-weight: bold; + line-height: 16px; + color: var(--body-quiet-color); + text-decoration: none; + opacity: 0.55; +} + +a.active.selector-chooseall:focus, a.active.selector-clearall:focus, +a.active.selector-chooseall:hover, a.active.selector-clearall:hover { + color: var(--link-fg); +} + +a.active.selector-chooseall, a.active.selector-clearall { + opacity: 1; +} + +a.active.selector-chooseall:hover, a.active.selector-clearall:hover { + cursor: pointer; +} + +a.selector-chooseall { + padding: 0 18px 0 0; + background: url(../img/selector-icons.svg) right -160px no-repeat; + cursor: default; +} + +a.active.selector-chooseall:focus, a.active.selector-chooseall:hover { + background-position: 100% -176px; +} + +a.selector-clearall { + padding: 0 0 0 18px; + background: url(../img/selector-icons.svg) 0 -128px no-repeat; + cursor: default; +} + +a.active.selector-clearall:focus, a.active.selector-clearall:hover { + background-position: 0 -144px; +} + +/* STACKED SELECTORS */ + +.stacked { + float: left; + width: 490px; + display: block; +} + +.stacked select { + width: 480px; + height: 10.1em; +} + +.stacked .selector-available, .stacked .selector-chosen { + width: 480px; +} + +.stacked .selector-available { + margin-bottom: 0; +} + +.stacked .selector-available input { + width: 422px; +} + +.stacked ul.selector-chooser { + height: 22px; + width: 50px; + margin: 0 0 10px 40%; + background-color: #eee; + border-radius: 10px; + transform: none; +} + +.stacked .selector-chooser li { + float: left; + padding: 3px 3px 3px 5px; +} + +.stacked .selector-chooseall, .stacked .selector-clearall { + display: none; +} + +.stacked .selector-add { + background: url(../img/selector-icons.svg) 0 -32px no-repeat; + cursor: default; +} + +.stacked .active.selector-add { + background-position: 0 -32px; + cursor: pointer; +} + +.stacked .active.selector-add:focus, .stacked .active.selector-add:hover { + background-position: 0 -48px; + cursor: pointer; +} + +.stacked .selector-remove { + background: url(../img/selector-icons.svg) 0 0 no-repeat; + cursor: default; +} + +.stacked .active.selector-remove { + background-position: 0 0px; + cursor: pointer; +} + +.stacked .active.selector-remove:focus, .stacked .active.selector-remove:hover { + background-position: 0 -16px; + cursor: pointer; +} + +.selector .help-icon { + background: url(../img/icon-unknown.svg) 0 0 no-repeat; + display: inline-block; + vertical-align: middle; + margin: -2px 0 0 2px; + width: 13px; + height: 13px; +} + +.selector .selector-chosen .help-icon { + background: url(../img/icon-unknown-alt.svg) 0 0 no-repeat; +} + +.selector .search-label-icon { + background: url(../img/search.svg) 0 0 no-repeat; + display: inline-block; + height: 1.125rem; + width: 1.125rem; +} + +/* DATE AND TIME */ + +p.datetime { + line-height: 20px; + margin: 0; + padding: 0; + color: var(--body-quiet-color); + font-weight: bold; +} + +.datetime span { + white-space: nowrap; + font-weight: normal; + font-size: 0.6875rem; + color: var(--body-quiet-color); +} + +.datetime input, .form-row .datetime input.vDateField, .form-row .datetime input.vTimeField { + margin-left: 5px; + margin-bottom: 4px; +} + +table p.datetime { + font-size: 0.6875rem; + margin-left: 0; + padding-left: 0; +} + +.datetimeshortcuts .clock-icon, .datetimeshortcuts .date-icon { + position: relative; + display: inline-block; + vertical-align: middle; + height: 16px; + width: 16px; + overflow: hidden; +} + +.datetimeshortcuts .clock-icon { + background: url(../img/icon-clock.svg) 0 0 no-repeat; +} + +.datetimeshortcuts a:focus .clock-icon, +.datetimeshortcuts a:hover .clock-icon { + background-position: 0 -16px; +} + +.datetimeshortcuts .date-icon { + background: url(../img/icon-calendar.svg) 0 0 no-repeat; + top: -1px; +} + +.datetimeshortcuts a:focus .date-icon, +.datetimeshortcuts a:hover .date-icon { + background-position: 0 -16px; +} + +.timezonewarning { + font-size: 0.6875rem; + color: var(--body-quiet-color); +} + +/* URL */ + +p.url { + line-height: 20px; + margin: 0; + padding: 0; + color: var(--body-quiet-color); + font-size: 0.6875rem; + font-weight: bold; +} + +.url a { + font-weight: normal; +} + +/* FILE UPLOADS */ + +p.file-upload { + line-height: 20px; + margin: 0; + padding: 0; + color: var(--body-quiet-color); + font-size: 0.6875rem; + font-weight: bold; +} + +.file-upload a { + font-weight: normal; +} + +.file-upload .deletelink { + margin-left: 5px; +} + +span.clearable-file-input label { + color: var(--body-fg); + font-size: 0.6875rem; + display: inline; + float: none; +} + +/* CALENDARS & CLOCKS */ + +.calendarbox, .clockbox { + margin: 5px auto; + font-size: 0.75rem; + width: 19em; + text-align: center; + background: var(--body-bg); + color: var(--body-fg); + border: 1px solid var(--hairline-color); + border-radius: 4px; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15); + overflow: hidden; + position: relative; +} + +.clockbox { + width: auto; +} + +.calendar { + margin: 0; + padding: 0; +} + +.calendar table { + margin: 0; + padding: 0; + border-collapse: collapse; + background: white; + width: 100%; +} + +.calendar caption, .calendarbox h2 { + margin: 0; + text-align: center; + border-top: none; + font-weight: 700; + font-size: 0.75rem; + color: #333; + background: var(--accent); +} + +.calendar th { + padding: 8px 5px; + background: var(--darkened-bg); + border-bottom: 1px solid var(--border-color); + font-weight: 400; + font-size: 0.75rem; + text-align: center; + color: var(--body-quiet-color); +} + +.calendar td { + font-weight: 400; + font-size: 0.75rem; + text-align: center; + padding: 0; + border-top: 1px solid var(--hairline-color); + border-bottom: none; +} + +.calendar td.selected a { + background: var(--primary); + color: var(--button-fg); +} + +.calendar td.nonday { + background: var(--darkened-bg); +} + +.calendar td.today a { + font-weight: 700; +} + +.calendar td a, .timelist a { + display: block; + font-weight: 400; + padding: 6px; + text-decoration: none; + color: var(--body-quiet-color); +} + +.calendar td a:focus, .timelist a:focus, +.calendar td a:hover, .timelist a:hover { + background: var(--primary); + color: white; +} + +.calendar td a:active, .timelist a:active { + background: var(--header-bg); + color: white; +} + +.calendarnav { + font-size: 0.625rem; + text-align: center; + color: #ccc; + margin: 0; + padding: 1px 3px; +} + +.calendarnav a:link, #calendarnav a:visited, +#calendarnav a:focus, #calendarnav a:hover { + color: var(--body-quiet-color); +} + +.calendar-shortcuts { + background: var(--body-bg); + color: var(--body-quiet-color); + font-size: 0.6875rem; + line-height: 0.6875rem; + border-top: 1px solid var(--hairline-color); + padding: 8px 0; +} + +.calendarbox .calendarnav-previous, .calendarbox .calendarnav-next { + display: block; + position: absolute; + top: 8px; + width: 15px; + height: 15px; + text-indent: -9999px; + padding: 0; +} + +.calendarnav-previous { + left: 10px; + background: url(../img/calendar-icons.svg) 0 0 no-repeat; +} + +.calendarbox .calendarnav-previous:focus, +.calendarbox .calendarnav-previous:hover { + background-position: 0 -15px; +} + +.calendarnav-next { + right: 10px; + background: url(../img/calendar-icons.svg) 0 -30px no-repeat; +} + +.calendarbox .calendarnav-next:focus, +.calendarbox .calendarnav-next:hover { + background-position: 0 -45px; +} + +.calendar-cancel { + margin: 0; + padding: 4px 0; + font-size: 0.75rem; + background: #eee; + border-top: 1px solid var(--border-color); + color: var(--body-fg); +} + +.calendar-cancel:focus, .calendar-cancel:hover { + background: #ddd; +} + +.calendar-cancel a { + color: black; + display: block; +} + +ul.timelist, .timelist li { + list-style-type: none; + margin: 0; + padding: 0; +} + +.timelist a { + padding: 2px; +} + +/* EDIT INLINE */ + +.inline-deletelink { + float: right; + text-indent: -9999px; + background: url(../img/inline-delete.svg) 0 0 no-repeat; + width: 16px; + height: 16px; + border: 0px none; +} + +.inline-deletelink:focus, .inline-deletelink:hover { + cursor: pointer; +} + +/* RELATED WIDGET WRAPPER */ +.related-widget-wrapper { + float: left; /* display properly in form rows with multiple fields */ + overflow: hidden; /* clear floated contents */ +} + +.related-widget-wrapper-link { + opacity: 0.3; +} + +.related-widget-wrapper-link:link { + opacity: .8; +} + +.related-widget-wrapper-link:link:focus, +.related-widget-wrapper-link:link:hover { + opacity: 1; +} + +select + .related-widget-wrapper-link, +.related-widget-wrapper-link + .related-widget-wrapper-link { + margin-left: 7px; +} + +/* GIS MAPS */ +.dj_map { + width: 600px; + height: 400px; +} diff --git a/gawa/static/admin/fonts/LICENSE.txt b/gawa/static/admin/fonts/LICENSE.txt new file mode 100644 index 0000000..75b5248 --- /dev/null +++ b/gawa/static/admin/fonts/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/gawa/static/admin/fonts/README.txt b/gawa/static/admin/fonts/README.txt new file mode 100644 index 0000000..b247bef --- /dev/null +++ b/gawa/static/admin/fonts/README.txt @@ -0,0 +1,3 @@ +Roboto webfont source: https://www.google.com/fonts/specimen/Roboto +WOFF files extracted using https://github.com/majodev/google-webfonts-helper +Weights used in this project: Light (300), Regular (400), Bold (700) diff --git a/gawa/static/admin/fonts/Roboto-Bold-webfont.woff b/gawa/static/admin/fonts/Roboto-Bold-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..6e0f56267035c2321ca6b590adcfc0fc93b7dc51 GIT binary patch literal 86184 zcmZ_01$Z2>&M3NRnxtW7ZWtP7W@cvGFf%s|bJ8#;4Kp({Hq6Y-%y75o{O{fO-TS@W z(X8c>Y>%apCEK%Z@?v5DFaQ7mrcew(0sVeS{|3VU<@{eCaS>555McrcoIr#|^+MJD z;tKN0008(m0DwUi05G9@wv`SRS5_4Q0GJH`09bDT0R8u=|DLA2GCdOjz_$h}R1pLQ zDU~%P#x{ob002J&001ou0HBD0xoHp>yE+pA0204IG!p-S=I7T2Q+qQTP;wYlFEa?* z^>1*>%nY4CypnGq8o2+!Hvp=cwTCGHAO&j6xgh{-<9BwF#IiZi#vK60ZVlr54FEu3 z{fdb$FgGy-0>C)_@v{Acx5XJ9b5JG#jFSa~6M=vfmK}53%35rb zD`;=$=qp0#fn`DwOoal2>%PM+mtPMjwz$kJnT20j9G?@jJ z@m@}?(1;POO4jfdfdw_2K3(8Bu@#|a$S{}K0(55oELXtcaO)o$_ssHD;QG9ecX7;9 zYI#-T*-L-80L*(kHS~(KspZ6weD4iQoN#}fo2xl{&5GW zi*U>we-V@3%uISS%V)7I2G3mcD>*hJplI=xR3xj0Whqf zF8Bs=Tg; zT-&;?kIw7Nshe0F NnEW@dXOkKyR?}yvkZ8wQL&uuS_U3)~+lk}gj(#3(&<^9sR z`BJSwiLAZ9^<$%P0O8%a?W#aUXG6vdiq zSroRqwcvweuMA z;=76kgTw(=69?m%HY1DSnA9^4;+VBVlfO*M|9pthe?M^ZeVWz(c!=?RKlF{4VH;4H zm0|CbsT*S((mA!R9>Ji0;A zir@hGOBfCUe4xfKg{siN-wzy4hG9U30pLVV^dT=M1n zr+n3sOGiQ1oc^g@BenKngRHEuu0qJlU`tS;)yiPZC?l4Eid-pFZ@el)BH7M~6Q@wx z&99${WHFYW=WS!_scm0ZB~{u!L;{)o^FJ!D8?I#`nUGQ=fsWTpvQ1tLgJl#XCN^De zaNCBmmvPhWYfM^QD}-zHKBNIOc2xwf{&GvHuBPi2ZVT@gS_gM4d8ZAysd(%4c4P*d zkS}~PSK(_G8&Oxb4wt*{m1`gJ<`B}JMMNZ~xxcM5I86MK~mP%>ahePK_bD1&c}+%wU)+BB(B(e?t{oKe^d zSYW+@p_!Gt$qA1~0s)#8h(SZ^81LI(!!#P6S@zF{*LrC8hkN8ogwL2=Bj=fAQ>L^z z$Q+(|QkbC9-*QqN84aB+q9o8)6CMF8bzSoLWVw z+&Z$CSL~wq0ApytSHXJIiGPOme-7>GC6;i51Rmaj2w7EZQR3&9IO8NzP#Ih3d%!#RC)UZyf zYDvY`X9kGN%R^u{_7eMtq14?DatgndOBu{mkS84ca&;6sY?Z2pNX`On1->{s06N!F_!VJ^_ShVq;;d*^_n)B+E>?Xs)u0$=J|~k zuR`r=2W0)`aH5~Y zHV2_M&qFv5#osBD-%@S=7FE4^F6^XGmFmwnvL z`6&K3MZ^!}imZO*s-C2Z9J%cToa1`AvT3=?a-7|@%94@F^Ocp8R@(xbi#<86ogRXm zJc4~iu5$;1D(0*`Nv=bxtkT=8i{sX#)T|O|y|ew+vqZfTT)lJF)?*jFqScMPAFaDK z8-=eM+q#}xyc>B#8;3rgJK%hUMSR;|gO908E3M%Bu5_%%J*6LW61EVca0!wH*Vf}( z+tx*ixy07iX<UwcToDiGuMciJJ${FTJj>WRu6!)T2I6zh)XFoB}g#RgPpbE!O6J zt=beToLnju%kWnW=ZdTXDc3aCi5-}G_ZOxS+NEQsYFlIisZ7J|AJ_)Xu>?vs zPrt!J)#wI^n1VCJJ7ef;?nLuyP|9i`UE<7HByzFCA(*;#LPa$q$wEc(8l_8Gz`1K+ z+iIY^YUEGG-Z_2+a0HTYgd1~2qjFF+98hHpVrL{;-r`NveLyUnq*_>4AL5dC;zw7eDRRuat+xacQvaEi$N?p6gNi}hg^kIzfIY*5Pr+yTQSsr~ne`n#H59KxiIPMqFD|Co0S)eB zBD)-ahfk)$@J6nadm!uzC4cTEqmTS>QNBbbo57AOM-L=s$wH-l0J{qz_8*@DmDku0 zAOKqeGPVc!?U`UX>rB9vlsh(agbt`)i@Th8Cip-qJi@?~5ebYjzZ28H8xnvMgA+4i z88qS{H)1L@;xaX2JJ|8@rfhgI_70!CChHt*ddlK{56!-&v9rZB+wz*@PHn=3!oG#_ z_zHbj#6Sn{DmjNRCzT7Ms;E@xDOqsxiffDNeI~DU>-^!{%C5pVt)~exfh-Q5t@NZGPQFD4yr3#QsgBO`Ad@Ab}D2htwwLquW zKxjLNM$406+2@b=h2h)n6u`B`&?wHo87f@lZ952Q|haPo|;C<&1~_Lp3KNFxR#27G2l+)HDM zk8b1(n^GtxVE>33>#xl+J@`KR$bO)8KbwvqdF_?L2|O&{w{D`bzSk$ElX0J=7;uhI z;ZX4}alidpfJCsaKoZPnN&(`hw2J>!S}eq?MdaN9DZ|l&8yhNScPHu#*Kg2o@K5?1 zLvn9^Bx`?lWfNff;2lQCdA_3`DB|@wWON(z3^4(Ptb$Roo6;EM`@;_m)tYky$Xj9_%|-EBhcBi1#k9AJPA|?G=^p~pqbdpCB21RdV(m8RG&u3x(cR$V?@%INW=~x z#tPon2yf5`xnKGf)g0dSI~2Ir<7Y+LOTyE`TvFR=K-Ne^5N0k=r*i!NU)fJZY7J^t zLWkl`r9X1Yd=V<0@7g;I8*x%333!pqI}Df-1uaMs)mYL<5ggX>Uv7Ckkdq5$V19q0 z`6f+O^<6!Fbp(H>+BG(^A&zP@Uq`Sdv0eThd7nb5uO?O*v|f(!(hv6`>T|Y4w6e}O2y(Nl8;mCUX;qb)Lk{b zm7PU?iaV+_>L_zMYR@xwV*fDj<6RpP9_0U?y+x%b5tm~iS#ynYOfDK6l7P!M2R;?n z`0Y-RA1>GCJ14d>BkZlY7oomXO$*|y0|3h5o3B)yhe-HX9!KylhhMysQC6=-Mvo>H z`y_D|C$xkR%*<~;+NIbioxMCjP;<1}LrVyhd+5;FHOQ(Dd#X#7yV{3<6e~i2s>xNl zra?Wf{Cy6Q>4CwJ zrXOPat>@?N5Ib{|y;~=@o7qEn=bahRq9c9))|kXl)Pb1eFjRz+?hdb^ z+YMjmn0jir2sz`xCwCOK_uo(c?15;_lO>Zz{t}&GniYNHsCTKg?9K2A1nyimI2SVn zV-Av$-6Z?r^$r?G^oxsDbFhf|4&u@Jw$=rW<9ki_6>mE224YgGtZeHE&d&lAj8rR&CXDwB817b_c;V7(Yx` zMWMi_t5K^aOKczMB#u$DzNn7Yxqut9L|<0_h55HtOSB-|0fsF}c3U$Ap47%r@-sDR z$}njm$03Vp^-|~GdR|bOV%lLD@b~A-Y$wAC*f@jsVsS%u8r`_V*7bU{yY|J=s5&zA zm4|W{Mqldk8n0uXu=!(FMh#pR@^}WB2+SZv(dvRxq^OKZ>|%{j)0amZ6*4Ieew;2# zpf}8+3b`WpXMWfYppVnC_FP z%`Cs^a{QiWv`n7YY$>`qEXSco6#YC~8M~y=l)r_WyuqUvx2e_J=5MgwEq1~?wCl0s zRZQ*WVKxH2-Tz+p;!l6G@RB<{cm@ z13MmeJhqk2gViAKz4`p}7psX;>Zxb13oluvsy;;}=HLGjrkD+CTk#*M*Pk{;3mH+P zMOECZ!D(YF%-Uyo4U(<}+@DzuM-oGk|D)0wopK$*?{p5~w{pgi5%bBGljXXac@=?C zIh3g|P;qwR=W!PMZv9f038xM0(|8T?1n4oM=S+E9>%~6#{CTUKp$^FU$O!%He|}sW z@{JBH3q%;lCoDH*lHlg9a$@1^&@_YH_lG=F5}JYk$RSS6AM5PM)fQGh81}w?FwiCE z5?*6w$#lgyt(n@>&Y_x4N7PRBPKdb;^u(UXkci-3k|!zpD4NKjT28!>F~nik5QbiG zonD__HWZ!zvj^C7xo0c{vC%C;iB3ku)5@$$m!SMecG1SJR@zSxh97XGiyOSKCP!-vL-1e`H z3Mp6Qw(#}-3!@l?R80~Y#Vl$$)S?LHeyDPGf?A(O&)A!jYEkmiII97acWza3wUK`6 zRE_Vb1x$(*s6mR+dW3&v(c&9@q|Kv82k;-3E8gUaV`F`olP0pdtHc=FR zD2drRO>)M3Df`znM+RfmClPv1LekrGB4Sg*n+orlfz>@U+v6c53q z`8^(!5U*2=qJNAY;->2(4d8(oLZwwu`nxvI$j^>!ju{}k|0wE zWI`9u5RFmz9#55O9U8^EEHh&2XI=S^xe!>ly~jcOWPmqX3__U6(y9Jk?Hj3iPKxZL zNRJsl;7au-&KkfwV4`m)ivMfElsGSd`U4MvDwS3OI2)^H=#h)aZ%P~?6d*&F461Em z^gqo3QY(ftQvav41IJ}=;+hB;>IPM1R4JfSi#1yYULL%pv5J~CiKC`2T^U5J7F8M5zZ8|G>npIPO*8YjLK&D&v&mE}&CILxivF;z!Tw)cXL;oISh1Ej^CT2 z{4B94CoTVkVIYJ!^6DoJ7m}#qhVi|n1l33TSuRtuLn4fd&5tlD(2?v93Uov!P_Wgk z|4cMuWgUgD-*~*IxP0|orb^Cqe0=W#iDa6jokDp3;`L-trSSIGWmZVNuk@?+{qqh@ zyI8DESwlr)^7C{^c{N||A%D-l&Iqev%-MNtOZZX9NtY=f{mLWRwF#rmtLgra(f!fY zyoqVs{V`OzcY!%7O9g(MhyD>tZa#JSCe*et-g;dky?!zsF@2lGumDl{3ilKa9X#S_ zj3ExTko3M+CS_vg%l^kQ-yiOdCBDK7`4lFvUjWMvxTtNF`9oZ=jV`h8v(p}b+%Tr)H(q%T)g=XH5! z{W1N7WuG$7kE5`O$ycQ>F!!ox+_r6vZVmI4gi~tb0gWUp(W1*EY_+S=2zLx0p255$ z5e@oM^eOfK_CcL@77f<+lA?DkW8^-0XaD%xsJrc<9C=9izupsAiub7Hqn%LG z-|~)GI&=XkiD|{_*65M{)K+wcG`hVMd)*NL_nXD;XAh^AZ~chScBG@8Dg{=VRj z!L&6gb8@?O(j^)5E7CX*uv9K)kpg6S=AO&asr!p6-^* zR&mR5K0o2uO^*xzV8@6OgCkAB;}EA9(u~i`*H@hn7{Tiw_;}P?ifbWulUo1 z&{#X#_-3H(+=>2?#w<%GIy0Y#^W^uvZs*YBGZ;URyiUVl;l1>U%QuoM<5?vSv994$ z<1MvWK?exmDpFr5$I*CyTxiqwROuPDBv98#ax#>QFcNsLNnzDO=iH}5yFAP5RAZAo z6T#=55_99gH&XOWn|%mF4pnDg81J#dIoUVCtnJ}Bw=Q=;%?#9b3uq7VzAQ4FN<=Zqmf`%)F zgZL!T>|5wZ9Fte?-YyY~f2zOpuvHOxW4m#^`ZIvjJMM2EU$(Oyj|3iVG_q6uVZ`ID z%i|)cgJbb^$;XcJx$HladgAlM2&;+q@C@|59@&sbTkX{HY4Zdhzlr~&?9RUolIz2Q z3H7W8(V6T7Mud(PVfK!0b}t1|Q|SJV>n1ICg4-^t2vk30T?uJ&+i2&;Ap#0igmFLK z`SZ@ZjFID2GS9}Y>1?cMQKgE9%K=OW`_3JWcX!*`_fI!B^?LnmHZhBuwba+0OO-oG zLs0GAo9Sa15gBz=oN--id*p*&Vi*w(Pd@Zq#d<|L@+7h> zvqr1P*H}ZGhQZhl7>6EudMC@z(EBw0iP=jrVBUVX_50x-k;XhtR_W%h&uH*0)4kgU zVv^7W)>muZ%4;HI^Y!jx8t!NmF~H={hxTi+9G~ zKi{~|Om8<2MC`KuM6z&m?BX|i8k@_x7SgPz_JSPsV3g0tM8#-6Jdnen{1>b)l?&wX zrwOz8KmR(=?OEN}J}^-C%@0#a8u!#?sJ^*MG5OOP`a3S_jrzS+(+lP>7&uXy?#DFlAhJuu)mHiSPqzy>|Y*@96lXxq@o4Sloxpf zn|VZk&b^{Ub3JhQ-dg>NO~dMkhco>qj4g~{JhHE5Ys~X3vxh5_+x^}-){NyX)}L()E?=eq)Pu=#AH|y0`QHjD*RL@pKXISeaxMsXck%ms4FWB+ zEmz}>h(DJfk?_B7Ql!pTUk)EpQt*)M7F(H`SVJHqDidyZI7PpRn3OF6<<+mMee76V z5ykqjCM0g2;9=bZ?h~e4v&=7jm#rdSl2ATz^d7s;S@jTKHdlr)BRY;SKd|)a5$bG2 zmIw})T#H_GWejp3Mh0gIBMbf;&d1h`s4oV zrp~`$wdi?Ebm#vH4MXsoG`!=4e70;Ni`4mO%%L|UqAlk?O>w!$*?4O1yt)`z7W%Hg zU4%`9UBb$GZnc@>mW{Egk$K*JHOXJ@`H8cRo_Q?g=J}#u6gr#I(|2MeA|G1pcIrip zJ&vhv-yM1Mr`02eCN6tw=_Pu2eqA8?j_xLhg&Wm5=ak8C|33hkWoj)O!I3b-l zVTd{PpYu3*DbKwu8syX3e84*`sMX7UzhSx9s(ER%=)|piO3>j}bGn`frG6@SIiGL| z?c!M@NdI%h<-$SND^Aigc;3^*Wo}~m!lkhuG{$dPPwdeik7>$r2jtB}ONk$Ho>)a| zxD6tI0x!qRRuAf)lMMeGxcsPz*Hu|Mv^BQ+$r8C8Ny;u0ebeud=lX zgb?!V;D2H0=v}iEaoQ5!mLlMAWP3I?>6tL3F}RBsJn}yQEloY<|2faVak8}g_CrQ4 z1HF}EVw-1WD%ziczhPKVxh@5gFczt#z~;ZIN$-)QJq+mZ4^k5un}&n=kd zzl%AMaPGwoaoEeR;@=H-%fPnrhVVz?`_gyg?|%| z9Xbdp+XW@V=}z(5@VxM487H+xkJbp1ZxV31IMdUB^Q-x?#Jc`I3ENUGCxRr!xKVJy zK^6;gm>k-`D*F4Tb9$}uS)3Y^`WcAbMN`lAVTa5WXW_M8$C~Bw(mi6{KjL?}SuU5H zctBA-!;5Dbwy>XS_^&c}sMPNm&vfa3ixuUy$7D%QQM@r8{d30$?jm`Kzkk?=AgXw>7 zz`ALdc(YZ&Ugk$__c;TfXg4rBBNunK3K-ZQn&PXIdDYcVWL<{_P@9ipB7Qa>fe-cB zI}Z$5YgEGTvjmygn?LA9xG8lpA_SLt%}`~4Y4fxC8ZhxxD7}jJaG(uJ8=O(h6m7L* zOz`D)@U$>i^c}YEebkGc+7~Wt|7`Z^Sy#O?+j6bDB=Q{aS^3T@?q1b@Dvp-Lb5L9vZ5VD(+doxWb(%njUnHY&r)YSjNJ@*=R0vv3g!~_6nKVUYgn0o$P}4f zIyYASTNo`{V|-pBLc*``A;9Zi7jDS#_c>Q@%r@@K#)Mth!=n+k*c|-TT1kOBjkAo9&JIn;MJPgxmC|GZPS^(#k6vV3`GP7p2i9Iwyx^Qxk6(maKR`J8sYvS}&>IT8Yvi37 zt0M5sqWmLpe%kq+P4_Y6cqp39n2Vrj*MZA+r7Ir$+kB_MY?dj{xO-a9xJ%aRHiUSN zja#x}7RSlT*-PDNU*&M6zSqQx_IFpe*|U1K#6un`52d^Ou?yi+wpD`2)ZXuU%#{_; zBg+IoG?JR=YCGylR`1JC*7=9Ec)OPzAplq(R>q1X)OlJpvws?Gpc?QgqEuHG>TGbW zxF_B&ffpm?au>Qj@z;!ft@6!|Xs?70q)@%n{8?9&W)9@Ss;HV~ydtV_>a2I^_iPN| zHXjyMIR@;pn=45#d_O;=L|qdqU1RHzi^)bVm`d_3lMOI;4+N-HPeD}l#s-AY57DfJ zyaTM~STGw0>717O#! z*u`V(f=ZRN-BFfAS)V95`QbN*2GqDmmM18G8vAfex+M{MmVG`m+tUucMEG)T+J67s z!m1uJ(L6YHwJ)Eov%ONi!t)xOS#3nL2wNs?;hgy8o{6_=JywN}2hoU0v#7XB2*KuO z(>S159dc8;puvm2d^#Y<)k~7JlJt4Da`(z#g%?W*z^e{X{ zevf%M{%4KaRFuHJ2&wv{LgLv38EXJV0+YNfb}EIm9RQf zpuUnlF8VS-)$Z>Li$_qOHTUSU3F5i@mFPPR&5(y+YYv35CTO{7+ql}(I(?_nY2px= z;Fs)k3iJN6=50FqgbCdVTopMe&VHI5W@NA3*O4)pbw7=rSBz!nB*{R0ZN>CJbSJcz z;JAX`bc2tLaYFJVG)eZ9AqYNmzLFTU(>X2HHE|2%&lHQp?Z$3=s$=f1dJBp>vER}{ z(MjttkeQ_E#*lh&ut#J_D={k_%m3XbLuP%B|rSH4@Fk3rn<^buvxcJkN3zrYD-x@rjV3+G^xqexdo$7j# zM6gHKw^#>L|l+GEcb&B{%C`1#pRVjo7M%P;L z2wFD`&l%Hkiey+Yh6IY&5ATlDaY}jNymM~$NpNxtiZ_Dr4)5pG?UNw=7F0(l;T^%x zsn;h#!YwEt5Q6-3YG~nd^ezmd9mdBJqDm@Tv$t&eaN+9YE=aT;(kG1ZE-@;Hz^7vp zeTM#3hnQQ$HRz78Qo)}lA($p1h$bO|CLx4I#h+#lbcEB)1=Gw$)65yFA8i~7q2Yv5 zvh?Rp!7{=~n}1K50@CJCX$UFT1ezK_j}M_}8Au;hX#{?+M-Vj!51+z7%dw#pT2%~u z5Ju*L5(00XvR=H;u6WxMhdbOMQg=ZJVFr3X+sLS5JPK)QalnA z$q7LUA`nFLL<4n*NDc*ZP!|3&~B$`M5oz+k;r=k;9)-5b-ks7zxOgmT7`V%B&5i31w zlstlwPzSNBbv{}@Xkt}CV}!}H95hu?DcaN`($qGEPiII~s~L_a9Xq1LQiDwPGTd+q zdx(0PrV);l)O+yzFOUl7zRGIOmoC1;97vC|9MSKkSWsUK@{q-4=O|ZKr`1!Z>0e67 zUc`Op-NhkGNFj#|5(kj%r0CM){ub_e%959mk`DnBYe=^7H7n9IP_4XuE7%L*n##GN z!}I1M_0;f(1{^F+P0}<|)zrv0X>P+-c9iX81DX!J&<7E(11>+0)~SGQI7^w3t`yn- zl2Xf=25$cAR96>xCH*f4iqs9=9vL$gwplsV%^uN?<(Zjf?Rz}wX4oSIBL$@*e1C7` zbc<9RI~J+Otz3#~SUOTbuly!)KHqgMErh{*q9_XIwaWZV(LtJ83yGvssQuxC><`o3!XJwg_E?J+TgKxfbSU`V%WOvn96t!_-W*o<-8 zGBTdh_ro?wa$NWI(t*CwA^SC&Z_6(-#sg2qXbBdBWOZLn!+((Nt$sRz-+_hy!}>uLYZ_br~$ z?<+RywH0v~sYkqI5@S$;h5&U*O{nt>I1>Z>Fex)zoM_V7GH{5?@yd!gd2LCE@A&~! zVJn_Kci0M=Oz$tHvM=X;w3-5TdP&Zp6}}5sX^~zKJj?KsMBYl8MWZSAc}*q)m(IL& z70l~Vd`I@rGI$1qPbA?|d{YgwyhtsxNXFAhX1Xi`A)fJiRpkh0kal^=2wdx5!?2)2B_XRjuz(CGPi7Y!yVHGNQELWC5x=Ow=Zs2{UP{k=AKzi<32G{?eYJtKCtTc}B5zOtfwo2;0?`G%d}nTA$*( z-qE#r#_)DbcJgfr5IPpeaLf$houbO!Q5C&JGW$$;I6L%+-Z_pGbnZy$J5|^zwJE!TISu4+GF-?(GnobEy7kKIbve;>-0i<_fT;*!-e8$P1d z%p@tg-E;Btr&F3ElUk9ouLwLElCq~!G5SqCf0QRCyI67x3BR6SViSs0C`yxLG5b+e z9qsTfG#3!QF^O&{LK!OX-F1}u&mSRSiYYKZ+0?~MGQ3tsXy>z(98`+P9aP{ow542T zF0&b0Mtaw35UdoPZk$d_E>_>4{S{Upc3a9e7wK@D-)k+xj~635ct8gPE&`rE;xR`f zs3Ub|D|+n;(GgSO5ekndiKXmzaP3}2JAL98MU!jv`gh*1g~vmP@LfM8Ki=N0Dyr~? z42i;XL-OPCxZJqSE`8l@`Ktxdh>CXuU$01mm8himKeXCXbgeKS7gq)@wAwiItuWiH z&UgMN*KFj^<6l^TdW~i6YgWi%q*LZ!I`0NX)~DlnC1&4(CD>!Xh36JYGz;qos7HBy zhQIB5TQ>=j@`BFX_n15;w}3bPJ_-a@9$>=wj?(NjdT+9!|O(O6BeocRIC^vjP< zb5f0jM7qXSc=}+P1}5c~l5CRgEh-*fgQiwqAehv6Dk-uwFtWmDV1s~Oue^PZwYv7^ zv*ni62^W(`bIDKzzy8%!%=8OwlvD4%v(0e_?dqh7EWulb#JQK z(sD@&1`Mr3p{sNn3oE#8uJ&;~>h*VB4CVIs(;#r3=2Lee_wvumO@{dtPglZVID>^5 ziDbp263a?4^<%NujL@FSaEPoxow0E+Z~?X`zR54xGQ39AIe%gZaHbY#FE_9$z`0s# z!^DNDJ{+UeB^{tBaqI$%aOm~AVZ;51C192;^M|u#Sl#cWczgwf;!g0;cBmwqSTk6* z14zQrS~{&}Fr&N1DCD+RV$2j53)8Bfh7_DrVa{BT)ziN^_#Dl)7UJ)We%XP?UA46R znb*n7+&zp}C;tI6)^OAx(>>fPHvWw3rP+-P+Gy{-k}w4(03)IK%I50Rt2!q;I6ZK>!U$`t|e{I$$v4wZm)k z{jzN`0I-Du)yP&qF2WS?+e51fiFzI}2D$cT9Hub`tlIzpA=jAjy`GswhVxDf=5**?0q9RnJP?F@JT7D?&T=H8yro))9d{h!! zUTwbqs<*S&PNj0UP73yg6-7U)RysdZr<7`GnMhfzLPM zLQy;)v!Ul=^*g6`t*%A>`~=As`t({d`u&PGHgB=%BkGvixztw0N#9S0on#{S>S(~P zFMx$Nix&->8QBwbt5fS$F_a`I>4xU3?e%nZ`Yc|LyDh$n9TvGA4g^)zghVv-y?vlb zegP@j+w1M=P!oOj3629gy90ic1Gbw(Wl2FrURjZyfjQ9H$kNo-(89z<9tm$<;41_G zz}*4$?Hf^b=)2pEaJ~H9OIUA27g3UgiDS@Afs$4I_QEl|Sp2e4!*XVH43WElEl4{6 zu1)2asWz)@R;#v~>*R$p>5Ntr?GO=3wAwY6of)QD#~YY%sZr`u%M+Y5trf0T&lkvGu|e`e z(}U}-pn}APsEW*vfV}v+h%#*nNaDbRwxVQt5h-5QP!C7}v@ExS)g@E>)lwU6_IVr7 zm=79;7C@(siq*G}TfD}an{vDbW7PCkwtIu$y4H;|_*!}JE4lb9dEi{Rs9brlt+}|Z zc~G9Yn4WovFS&#-#sEkoBuL|L!A4kFL$L11U0dv9-LzwaMznn}<-O1u{r}mSJHVMS z1fdhitg{8f-rNVCb>+|Qy#>qvL;~>pCd43w6wVMx@+CHusY8aJxf_m2c#PpT++)1m zaD(wO^>KXh0Jm#t0|q1Y(j{`F5!`M{ zH)$b5RO*;1-7SP-l4WtyNpTiVaco*~s#bC0N^xe^l(MJTWJv&5NknT&$bn_nft4SI zWh{nONs>j2nt6emMZZYZoY>lawla1xdT;=yoOh&wG-^g3DXr)V|-4hcb zsYJ|VZQ71{Jya`?gzzSB*<49lx@MW5t`1fEJF;MkGd8t}4~I8pSv&IdQ*jlX558^L z&-#1(jj#NrkM-VC3CSmPJ_62R2l+-rENY&rw*xz6ZKh=~%Rfq&q6P8W{n)QTyD7Qd zF)z1$ynp?F=IFis=&#W`2ic!6Hn+Xrei1T4IWZ!_R)cmle*FvDZ0G=;>;R$e0Kez} z&h7x)#veejE_Amf>9eAptDCz2mv{W zg@gTfDFvsn@Yv=h-Oscd+cJy2Ds6E*{XqBD?>Q-+GZD8XEWIU2yCrJ1C4jpnqOB#w zt0m^u;}?`iXoyE3Xo7yo!=J(<9JEYx=`3!52nx2 z5CD=fVLKAYVvId0Le89cJZ6M&t3gCEBF3t!?V_p=Kd&J>uk&MG%Vu6r{=|Z}Ec&Fp z@}x3rrPOAn5`U#&eI>7BrRbgOPXJebUu(f?YhGJx(W~d55KmI=GCnQP7XT4eRYba zV{Z?N8Sj-sZrIHE3B|r=#aCw&UG>Mg_o>Nt>?<}Ga?WmT^6S3B zH@NtcoRTKudT2>uNM|#e#7h*Y?Pb%;#7iXc#7h?7)C^$gWW9*tyo z>9Q33;WHXX!~;o0vJeGh0wY^;$6BkD5iygp7H+7vhUif>sMZFOtuCje&xflOH?rQg zp!WUYw$yg?;!+fkMM(E$?8*lZjY^!Q%4w)0|0>Pn-XKeAq<1{5ab?IUMR`OOHdGQ(fqr38#xrK{p=Rt<1bJ1fvJmmXNE2V9kvY z>9HSA@I#!zjYnP>M)ee5coS))JlZAYZ=JtL>|7^BF4Uls!VyNZ$4A~hJpZ~2_ZLA z2G4vG)>IKv`e2ic;xadAM+(9M3gM;UJRFz@tYvt>7{#@q5288I_#Yprq1BC5U>&4t zJCyh1By81(MBsNXsAz4 znvv0xaIzq&$j_`#%16okJ5)u!x+pw!C;a=9?XnlWD8`OU+u#jGpetzOK1Q^|0MD6RvBFb z%EH8~tdMBZ8Aa-?tJFO3ViwhMs8K^$nbJ>PrFVrw<{PaP|I|2b-$jBLbX4eo$di63C+%Dw}@$?vi)z?

zIwVb_c{d3>6!eNhQnC;wEc1B_bBU1C)>=|l7Py(Ye}U7mhnJjX%(s!H&~{x9N*ZBx{5j-SBg}sRBE+O z@!nr~lJX{19*^9A_r&io>@`Ll`1^i2e9qCh3-B&i)8S1nQ|}?*fHNcdN)Ql$%z#4P zOPYc~V}NgcQ{#zHd2rJ7eQ@YRSjQ)*Y}@G`P)R^G^!M4ZVvRgzq)rDuA#_H8m|FP0 z1l}c&m?b1>nrlU_=osdCRvK{|SrPn4@`8AJ9`AgX6Dy@Yx}d1qbfOY;3s>goON(cx zR(_Jxy;{R=`pF4l8Ocx8^IA9Fd;G!#1=TJ>bH0b&0&uufq865)4J! z?!J4oe%s}?@RkF+GiLYG1Nv*N&)kLqeGTU7?OEyr17PTUsoVJV=DI?`?TGu=l#MmM z_Sivfi8bw}d@st4!;fD?pMN|A_X9j3g1_E>JF#e}ThXonE5}fCDl1WCHz-kMHK{|663SWtLlEWuPulA7}`ST4l90)>>epC6+SByp1f_WV0ATQ@@LKm^Zx|FwLt>_07TLJ++h>oJ?=IH?#>8M;g;ai zQ?U`mmWaF5d5@s}kp2}>R545ot%@tD1Z}j_;gC{F(@7WI^eCgO^2#y5AVUoMkr752 zW1IQ}${fkl>l=X=#uSA%6%SY?fMHrQm# zSH5PO9d?Za4qCQb+{zyNzVWSl-Nylk9C7S-e{kY{e{#whA;SLl7e7AdH_&Xl9)R>{ z!YB%NPk*s(+qP}nMk%&!+u4n6+qP}n#-6G>Kep=0d2?$vTt+m!MA&8Y^8NqsNbvqA zlFuP2`XPWI@p{l;tU?Q{7Oy8=gS}{veK^eCpC0iI#8I4OA4boK*PEWl74Gr$Dz0G= zuH!cQRC)(@F$DMUn0*#~;v0sic*`D4-}#2)J-)E7pkMI~Bk&!++1JrOzESvVjE%y+ znMM__7mX%nG>wi_>_=#7F=J>N@%qrT$jW_#W)m}(W=9_OhcvI4aWo%_vOlNAP@H`{ zErD|E?`e5dV4p}Uq8j@*S{*gmC)1i}!v2RgMKfbuMA{s!xTDh6Xu~soXAr}2@1J2K59 zW)7_Tn@W*r@YQT{f@Hwxo038OI?Q+R$oor>w0fEi*o(wUfr$(Su>6P<&(n2LE~ zHq-gO=?D_Dg$Da(V4;|;bP*O~CYFfVMwj|#V;PpSZ>KA;4s);`Y-T6j;aiBEVh+(= z*p0>5BjzyO>sy3OuW3(luV^m}pFcuTpGtxFn9)4DkNy-q2Z?%bttQ!+Z=u5SFv&qbsnI=ikv)SdH#jgSG4*=sK*&Fl+#CceVuG z>FbYO*v(#%?!jL4#Xj)1=04GbIKeZO=}DYIPn^aX_S*C;uJZg>dQEIydfjJn!)I_4 zcj4h4?(=*-`T(C124C_nO!IgD{PX+Gp&4Ea+p&XtKHY`g`g$T+ zD6tD^46%!7Y_W@JaVhv{s2w@U;!}ztN_IT)Bt<{EdT%j6#ifU6at$7AOj%) z3j{g<6amsvkYvTW}*~x=g?yE%prfNLfTiP7nAE_MdofCibNnzNGK&!tTTso zA{3EDx7`@>eR;N9dtlHVS@d>>+#wcVHx7VEg2k~!!XqeW#$eK%` zmDmEUv@aZb;(QVbGM3FhdtLlR?ggt4Wi8(3Fsh~ zWqrz8MnQ365SO)NcdpVb5i6#nO+xkuQ!I$J000310ssgA0{{O24|v+Fdk0(;$M^Vq zv%7b6u5pK;z)_8;D93?~0``iCqQnwgno(oyCf3+Z54l^3rhILQ-Ix$1J+W&N zON^!qH~eSz4!MQ={eA!C1Gjs#vp4hJo7dkANH7*aXe>EE01fy;00cu{a6s3g4w4k^ zB%$qclm@T{1hmVMMFM(5YguyNwCt-y;aa7>QS(w z9j!uRR~vFPmHt9Mz<_H+pcIMAB{?4Kmb9+_g$fz2or zKS9AT$)PQG2>dY{Ux?A$Bz{4^#yd}A*Myy?q?vRaiF=-3fRD-s+`@1Phe+5eM@Cus zAd!qr9$W$#_yIMz=vYI?8nw$2;Aw=hMi^g?MgfG4FwfB_DbxwtT8zbVMqg?&V z9sWs9AFp12J|Vvv${jvBhe>(O%!s6Ogep%W$`xwG7-Q^K{hNdJ7wt;&wWce@f}Kx9E7%4I2U= zrfUw1UNQTI+NUUz)O3 zrgHwpTJA_<++a^~q$Sno?>N?oV-(>$=U2|C<^V#dLp9pHFK3@2=iq(XQNs+kfYo^jg_0jSLbYwYNDhuMsVYA(rS&VcAHLX zu_iD|#KtA3p_Z|XSuk1BQd1RLbuV7uvBy{Yc75)cR+;hVGvCtpvUhy`HLb#%6Z7fi zkesRdp}jJi^+<1*jZ4P8HEGDk0dIWq(dyDg{pj~4FVJfa*WiMyQabhw?m1z|6yfpg z>9+XHu|4_%LVMvGG%C8tBBP{X(7JVy~38@C7T}Kkq%m#ynjC%U_Wvy217Iv*^ zwdCF+fwaCthttDtHcrNa7;VQyJUM-120cy3{=ml$CvAkaOhX1ilzWLqwveK-#N`c` z8V_~&vb%3mD4Q!TO%iNEoJBHf1t9?k(c>AIW;$xZqzroa+_rsX+k}sD-kp#6bj#fR zIrPtBjHNdU`7EtrjTkBJ1AhnyHW(Y5ufGPpM2V|FtN!61*@u(pdU}Vxgav36l4vEJ zh#OGC#eBRNx)z^=KfxCwWnaZs0GCavz7aAeq;b8Y)o4CgAKRJyj#xz3_UZV+zbjD zub-!Rn3>D+g8XjX^Yb#h=dI{EcyQM)g9ZUs|5p7BxuRHFBQRjS-2nD$OAOjhe?>yS zny+aFK)5~=)0m6~Kp14oLU=SV z(&`mmoF=9{xc5ty;KJ{#1g4B9jUOe9np`lPkYV&3J&frXhXL3U+t3sAyRdiny!JhY)%R^cQjC0(Q}EIfMBq;qFGjM**#s-SNM9wnk>aq) zx4!0U&<#M$VsvN#xw1Yi{NWnt*|_?;lQ=`YhlWtDfCN48dG$J{uUBUP=y|7E51#4m zn40R*%GQ)r&q`|1DrQxM;a8*bN9T?%rWY3ewD$5p)0WV8$@Js+XTjF)qoyt{TJ-(= zua6a8dXeq|gbr-oYz*GUuv*qW*5o0)!3@OU8hFE5Bb*ZjgE>YHOe&j-3z6iPEyR^b zipwtIUDlGT5sS-OV;1|)^s-ayg@B*umpW&H*VB*$vwThJDNVHw{1>!MNQIf}n?*Wos3WLIPjWO#&yW zg_Rp@&xuxAgw=z24djKEme%h<_CVt=N`Fk_!^ zsH%hzDE@S@KBSQAsU*&ld?(ihaD!JBdnZX<2_U}u~|%PN|lP26Maqm?L;P_i3<~%gkDU% z%WmG@uq=cn@`Vpd4D+};QMH|H24}pAqBSBH6>Il$g3v9OZpXOhdvdB6T998bkN!>5 z>7Vl^v#zH($vS#rzW1t0wI zUDbyprWcRQpI$`1A2ea?&>;l{TrLM!-xr%QYJ@OqjFinWu^eQx&f)uScE!LN22KUD zuR)1~%t@gtF*WF%Mz1DAy^#u6#xcb1R;LC_hz=yJJuOyX=Eh!wqM$8af8?k6mtI(P zX&%y-Xj%6TIA>?KabeSj51BTFbeoF4msj3hw2Iy@olMu!kwJJ5^>`@LHf!z9ZL?=> zgz9RT&+PP3F%ROwPz|VM*J{BA8gK+Nmw@%RrfYF8>rY@kzX&$efX)oOUts-!kP1tM zwPGLk#O%d=CPoBO?sfnrJ=)o{IV8Pmmyk~iPSKxm%59uNf8sPh*eHP$L?%m8pSEQeZ^P&W#6hSznc zWWlW>g6deFASDYCqIB|TuN_-r?nzi5noTYHXR(dah>pkHF7LM4(j$k^3*@(R6*qg1 z=-1O*)guw>$!aoeSP-BLF@B+WsPo2&vqU%gl7wYKsL?LT#}Z6 z9Xi4SIlWV74pX|$5#zzehaupj1Z_OJcDB~mf~xUp&0gj)cW^ml21jcii1P?1x!jS= zRJvEx?!&_#N0TIHjMqbEbK7gZ7mX06#}l|RPfIm0Y%LZ+qqt87uttkSOTfw+7N#kq zVu{gUh-Eg`fbLg}oZ~fL`2YCv;Q3KwcdXfNGCXs#WaYT_HovqsdGj=SdW@bqLeG`@ z>#z-G4A|ExzU^m|nCQQ-KOo>5F8!+#3(Bf|{JZpQIkZuegvVwqB%#$n&-dv1!k?%2 zAU@wI(RHxTz^_U%A7>q<>wl(O>HN6JO^sWAf!i<&O}OvwS9BU({_N7h{qUQ>qd-6l zAmvF8cK3ts>WH9zUPQwh8m{gq>dV#ETJ2O?02SMpRCdvF z*TVfL%SsC=mLn}VU9Pq;?*z6?-WpZw zD``=0<%TaI&ZgM%n5U7VFB*zQPkV~~{x|&-v0&C`^v;E=Gv=L>9A}PB-WA{Qjk)K( zCgce^Yh2Drp+a=57SA{8|w8DS!^Dn(fR&H9h)DN%UqW5tQX62m2 z4sX)?zb{|-)s>>#-!5DPL|Lit*h=|B2xL5BQ8@JiyZ~dg4Xi^OwXO^=-Ee1;w^Me#sY%8f63UAPXYz|miUV<^<}Wj(*r zU*w@YBWPK=e-D3>uhPb%PVH^#oIYyhtha`EKEf}q!(?|=3*l3iHSIuV(I@Unj^F4W z4hb2-%T+iRcy=d7CfhmlgWX^JT1<<%{)T($oRM3j|srl(}Xz00y|;=JPKB zgyAfYLm2l&!3;UT8qFqA_ z-f&yJ@(xlAt#Iw971)$yvClNuD#_uJNpCKjFS5%KC0=jzh@8E9JUqh3kQ_?>ruw$< z5BsWv7BXW&27<~fSL;%>Xs{(`Uba^(M$Tf>xtEszNGUcSHfr#A$x)?S_C?99uO^S5 zImJVxI5t-R^pqix8)P*j)*8sVTv@AaIH^F<-Lj@eg=-b^q@fkjN_uSJ$UTcQu-H{e zOms8Je2tD|gerU&FS_PbeFYv_NMw*m@Yo|{!3io3Qn(vS$^5Dz*z_KgE6+%p1&T$; zQ4>zJ2&$!4`2n>ez%fG*m0F7X<_GRD(wA`jj2MGPb|-!~6HD-UdOm{A`jpO&;1;U# zk{I=%FRmc(RDLYBarLLuC5MON(Ol*k#Zk#csRI@j#nsHIl13td0+&>ifItQazev%H zCExR~WTJ4esuNrE4#Hs|+*(M@nY`;D0y1UMZ7D@wVo=Mynl?k0u8v1YtsF-& z#T=L7Z8D_h8|d}@@6u~qa5IKuA%<_J<-0em-;KLBt>1}c|5x-sj#BJ=F7qqw{?0q} z{V(zQFSo9Czxd~!tKhL3KPXacfmHfTimD8zRIe$e=IIEadsPWW` z#}mR3YfU;ShP-^2(Yz5741MYu%%BG;+%KN@_?&wr#C1z@+&K5*i451|}ILfbp`S@nip9or++M2o9nU;m0K<*e}9UmoofsGn{ga@-8pI#HlM%@v#Z< z?m*P5BxSaUp4=BNNihZz9-mE5=Kj6tpUqo-UrZ|&OfPz3df~i7JvH8*s1wFyN_(r>)IO!zMA{x@_R$L1pp9FD_(Vy+H$EELZegL ze@{+ai3(5CPPBq%iaW&vm7T={zX3uCqguIQSK7*AUAv;r*d}rc#4y zWd|tKCTh@1wqOtJO(lAQYOxni61zX>>(>1-0Gf-6JsT-Y+@7iDP~-RrhuPc2dS;g; z_sy>c7NZiOu#3@X6MsF5iSz(Hcjpd0M-O1)v0o|f76Tsi6+W#>X2#%8(T~Gt29Q9} zW&_lK)#G2aZPK!a)(wlO7+UvD01dzSYM_QZ5C6$Bo^PN-aWCCPe`0^Ta4&1+2p`~| zuI8?2q?C{g zuS6$o2ZSs(!&b%Wbpx+KA7R~P5r{kO;FP?c`bt{%)NT6hJO>hjhslM?H%YmxrP$@( zJ%Su(- zp1KPI)mvuR5A~cQ6Ua#VwdDBcJbyoszKsWznG=-vG08zxNI0;Lr*7mjYtzRtF{6D~ zuGDP(JNTl;#>Z+(z7Ym0GLxW^nOdt?E~Az+B%eldZ*xE!#^B-78<=O4z0v~hu+2v@ieA#yV8Ye8V$=oMKE7(j(a8xo5^CT!$j&>oQM|A%>EW|$6fMD ze>Rmxr;4`?{uU*XXkevAQDr%KcpKy6?WemFEj&qTt5ccLn=K)6JaFWBbd#A}G5Jn< zZQJM7_ZIaUkTrl_EU9?*CeQGx#FqPrlP6H4O;mj%-8#dxd7i*!7B&pw;v6DOGHD;e=ySAgw~{*j>jj(~A=)JfC7;_CnJTVx(2{hs85A z;QHoq`UCx2+P%J*4x0XaCqU@LVvj%B$~A;uvbj-&y82{NdopTq6?}p@$n<1`&7uAJ`IjqP-AiL`loOV+jW1%(L@;qQ9fxPiOuh^d1@8f82!eUkuGE+CL5x zP&7WkCO;k?IBD&kh*#GD;gE`Y4L}ftGT+70Ak0(45E;ESURyIvkM!;(!AGIDa(jeh zpcLgcx`C>^f+y!}%bOs~E-AE(oCJUjBOn(vAz*@W zvR3iby>JTiW_*+PCaSvFa@wP>%0muRX-~d0%E)vbQ<-*~QvR@L*-C_j@Z#RV9Xme% zPn#h^Y|5^$z7ob)lX$GjeP~V@{!1og=_Io-ldK zWlbZLH9}P!6vR15qg07?0iks`NH!}yj!?ChVz|ZD=c_bN;2xilro`=brSKs=WHL?H zJE!C^0jPQE=F79Lq(51>X~vUdcYS;hturS)+dBQJiL*%DKiJ}l@s&4MoGTiU?U*yS zIK3EKR{5@dbqt;u^9CSH1Q3HY06OR)`+597U6QIkQ0s!#bM%2o?oESEKa~zjwMFp| zSW!Jn1iExaDUOur#lHCqThohZ6^=enC%Cf7+xa=8tEx484WEUbx)O%Vk_)j_ICh(nN|9n!5XzktYMni&bMFbh1$Bsj)Qx% zyQCyMV;S<&5CxdZWqVKPulp_&XVroQ2vY&XVH#j?b@d9o!n`$?>Cx#IA9wo2=U>t< z`1eG<46QH(bLkv>otB|Ik?zw#)!Uiam9}*)kEZ?)|?5D0?M9v#D&((l9hYuX@62x>~ z^XIa{@Y2ITIly47iMgx;i0>Cb2_DV#KO=H!ABlCY!ddHVZ}9{On>tET! zeIPngY|G#aX7Ejujc)jiZury=keaPMiZ-Zj*eCh8BQAdXpS>Xy_l7v*Tk3d2V%w`n zc8_C15a2iI^^+Iq#mVEB*z8L_BgO~x{B%mBZwnSswiQsbe)mM$b+STfhKZhG62vf> zB3s;;ShzR$Xe;4CE2y5Ip$SkhVYmOv&q%W|MAUwUrqk8qr4x*lUKqRc$PKhk8M7!Y z_1UpSB%vA`FDiZzkFH{D`e5_U0z5Q+r&~73d4*fL%VH4s&b&%QDsby*et%VYL-zIe z?31Wb@`}ij&oY|rwlT8meTHmm(L_k}nd)jIra$#!AlD47m?wFT%^nB&a(H}#+7~d@ zm2wiU_+kD&;U0%2*vtMi#UD~GN4opMnV0XYPR%65Dn5W$UdC+k?4ygfySL1c_a~Lm z1$U2p`WF+hL0NrszwU9Jo?3E#HX6i&oB@L{(cU(+-(Rbae6+b;zfQIm8HwQoKU=qd z)a#>r^=}Ude$}_ha;XcLm_7h6&qmQ%raHEgvpkl&Yv4TA6TNT=R8@+2@>R!mn4Wts z%2J20(yze%8aZS21NRWNH)Q?SLsJB#``@eUIZ*R8l>h4S9h4*W?4G`w3b%txaQw_Sd4PPaYx1 zTwPxuPiWdK)dvkAIF!iL>%J zdEGTcOn3DqN)9RnK;%|Lo#Qci=Xgwy&hhxUb3A_ab3ATXb zJ;m;4F_rv8X|K>x7u$Di+P|MAnl8dL+(>p*MzpRleuv5FIbvHt=m8*n!r)M6flU8j zvOpgaeboYVQG+n%=bs&9`^`7`TC|`W$kUp(5DLv?qY@(mQ_6gAiY9>5lOgJqe7&~d zNg6kmV_BRUV`p{96uupUXWq4JpS{^ade9AWsaRIls%LMqcdxXbZWxD!C(eI%qT>B) zwjB+Z%{_M|H}7i2%@ja*o8HH~f8Vj|NjYI2OUvKa9OSS@GgwO)tQKhI$;AWXTb4PI z^-9u%ZCQ01ykM0KdIeSsFMy}T+wDAfV2KU0Erf+aM2g-Z?%ywNXtlQt#ZuXaZaLwAnha~I$&@tBaoc-IDOdk+t=462Q`>PnJ>35q6G+z9d52WxvQe5G4@=2!2&)ceU@oinn91|R&?dfV9EJM&1i~ z%-bdlt8`La=fQ)YW4nM5##H-@p;A0pxdxApVY7Jc+EWQ9mq%^6Hy84gErPPwPp@1< z`PCU-FTtU4pHCq?x^|yl@hWPQ{yfd0BS$u${IKHOfs?!5C-he`w%_>iIDw@(R-bQl z^XCYRx?=toqoXceZggSS;0Z5ox4yO-IP?JGQt4xegc3Q-YY(cj!A_MsSI!+7lvu5i zI_0U}{K!ybIR^(QCy)Y^Ge$w>ve}^Itqg2yh}vH@X}PGe{VEB}G$p9at;HHbQZ((z z^2#6bGNqlHw10h8ai3lu(y!AHU$m1B%jRa?yJy(3<@VLnH!mL^G;H+9tGD^e_p81x zbr$bII3z-bOqw?H97>BS=W(f8B}928IavLyu}>Wnm7q;v5|EOXkfyjMX%;O%6=Kn% zN#RBA({flfV#{r(&uo2a`QoutRxMw#nVI`lE7naOy=+C*oWes>iw+eQ9-KPuVBzG2 z3!YuIbjz_%cC1~sddB1HRSrWlaG)`+lX7FqtFam!*g;(dWO4(=4f3G z49nVT93L)4tCZnVRL;Cij42*9ALLy|G;(bqH;+()sOCCn6R*w&&70IO)ydIK;@k?{ zq*Y3DY?EwUO;i&b&sl_h_^!HIXHhhp&L7y9SU#LN3~#((h6i7(G!&WP;x9s7?fda0l+ zf5Q83p1X2t$mHH#vU-dz+Bl=hn6BB4J16D0>(dwr3>Uu?hDjCR3nqvF&IVdRweIe< zHYR!0tD@j6UWtwwz1z0y*>hg6bN$jY`mnn+$ez_>Vs>^)YE}<>N_I8~O1=MzbW}Of zmIg1%k*!*LPBi+K^J|JHnrX@wr)dqhrm#ke;*+N|bsu0V3nr0-h`R~xf2M%rB_4by$p?TwQd|u8leB~wj%dTzo?v~A{#|~)R@Zj!; zn2k?j_J;@Q{zFIT{{N7H8+LwCR$ThUo)eu_ZJJ=R*6_Fm6GHfj0S!-uQ^d^hDj-g>3O!EA+ zz2?n)=C!xSmvqc}`<*3=w}jE{jR%Go^c+l%gg@4Q?xdnQwuQD9K@*=^wTK=a)$i%J z21~F_%c0fP&OaaUe0w8B%V$tKR?S_GNh4=*UUe zBB3+RM3H%4;zRxmf`*U`8L&oOyizGgWpjp~s+tp4+ms^|f1IfiIZ9BpXB6YYC|wle zLR&->e_%^;HuCyGd?TAj3pFcuBtGQOD4jFIo3chVSJh!TJwuDj8{4oE2BgmJaABCMH(`mhSAoC+ zVLRExR>BWV&{Dk$H7AhO2UYd;PoOGVNK$Z*)|ku-b{0+9wrxt`Zq(Vkb}h)v5*^cb z?zr*t%f8+1DLs2m%;Zv&11Q{)B=Cn|=*SCU>Ok37_pfLB9D!;(AO(56a&GDrPSe{s zhGY+B()V1{iG5hHrE0q{QYgJg*J0s39P*&*79gaN&E#F_L$E-u>=W8RUC&Z&u+lLv z!|W}oW>BK9VDQwle7rgtI=s`wJ2_mQ(_dULV^SV&Vz-iaUF$HiRm%~{8K1tnc-@Z7 z!gV-;Y}|5~!3x zF)36oN6g>19UXWWh2ni3urH2eU*uKnaajw-g=9LXr^X9>-#~Pq{c^-S)YgU=DX9Q87{9?=Qji1(&VX@mh<~4y0(0^9zmQ6CwzW&VWHy6LOf8C0=KJAjy#{NW} zSUfbQNo1q(b7xJSmHgPsNedTEk8Wv?$wQ9$I96dEr{tcOLQPrObATWiFkco3r*a3Y zzYs1Y3K>GSkSk0U<_gP%&BB|)hr$`*JK>g4Dd_V5i+76ui+85;6~!2Af*JJIEe+7q zfUt~Z1begC)d2nEK%+@npMOsRt7=<8b#g;a(c8b#2D=T~ zf79eF8K21$!miZ|W=$fMmB+i}G^3f)x14s_0Kz!slw6`r`~%ckwtBnW5qy;Sta_&F zxEo~Eljr;1pnsv?4QxVu=$BtqKj_QHeSt*cd0`;!i0q107}b$~4tKK&n$8ASLw= zkTMIVWd}%!?vn#J)5r#neQfI-ATX22LZas!tzEs3SN09BIme(Q-swuGrH=NDQk~JS zJ-#&a5T+jf&&yj6zLVd#cP{4l>76f*+WzrJuVilf_~{0HQpr~R!C)PHMB;pddq|IR5txD=Kcacs-yb@hv&?_cQ>9* zHoF@kvI$A>03iu(#Vxo8cXxMpDGtRcPFZegDOPCFmQqrr&=v?3m$o>CWGC;;+?%ko zK%VFMz4nLC-j%G(oUtR{^F6`-x(@FrS%MO|Wv!_{DKwiuCD+`?D=V%o6TY&38w_^* z?EIz2D>{~p$BAn~-0YK~s(sKvIL$NrBS8 z&h7s2iUgT(ugv0*5)Adpmx|*tS^by{V;N;^B~(FYDQ;sv@Yyd`pDv(IdZinJfVmmntiQCCJk`6d@mF3!fc>9%UFnw(*!-C&{jII|t&I6&~GEmi2T7 zCs3d)MpF@zSJRo|i!6vjUajnir0sTK*SPU});=I_4VR^w_#-M4A(jlnbl^dN2+Y!h zV%Yv4Ks!UXKiGVC!#@+qqbJW;5I1A!r11k32YCto&rbXCg+gx9CqAU!u;U{z+Yf0h z;IzR;N1?SET&S?PABw?TG3H8Vtipnvu3jHC(#-cug=L6~0e4*m;6^jOcfl>t7Sm;_ zXDGu~lJW1KNAC5m&~n+`%Z=6)NbWQ;wQ2RnOZ&B|wpNkrU;X>kjy_-1k4mMb!~YJA9Q|qsb+NBo^^B%#|C`9+g7n(RCG9sHl61il(z`>2w!(nGjWS zhYyGzG91QF93Os1J;LgIABHs(;WK6*4oC~p-djd{ZyEaDGE}pQER#?M4^-Qifq{D> zMF>ue%Xh?~NG?RdcfmrL#RQL*BZ;m+B|6^Vj#!H=#pZgljpk2lP#x}$erNMpfx&j@ zo8{}TXIDNu_Q0?IKHu7?e&hCZx+v)vhKxIX@tL!W_w1qdC%33y`*PO)5<}uQweR0Z zGPmyQ3*%Y@Evnu?UB7xKl&ROeW-0TM!~F(e^5*{PA)}&-9xh$^V$qnx(6mD7Pw=L} zee<>Jh8XId&ay^^!YCgqfLe2o0u8+po6cRwxlox<_sDp#NlXfehN+@1L9=NWxU3_a3d`H;nJ{#JL?-&t+Zz`-Lr zbswdKkhf$+ot@5@>u>PGfS48 zZQInUnbx{a-Ih7`xZGWcs@Akg^-r2Kbz1cYe5DMc?LLZv=(yxZJye<75DuAVsnct; zh!GHT`&FCFJ#CTv&JoF7+_IRyWn-RMHfYiB0SNTXI0)%mH0Zl>&Zf+;1YMieSl|6L zdHAq>qgv~`p96bAkn)G5JNVV`v2E-8t-P{lc9s|(`cjvq{L+F_9$VDK? zyVvL_M+SM!%7W-MS$lQ3qx^klMFw;P9|n7TxNrLOtYx{F$0&ppnskWF$cFj~2DpgL zRD(E(l*VLKQxJc|;s9Jluo(ph0aY{=9)vN9Gt`T|nZv~V8AvdP?t}l=y2Dl+y(x*K zMzPF2I#2_lD9hc;nvH8a_sOTf$h^za_~g(p?%%)fRKGz8&@_74BA0bTM+JQt9kqoW z)b!1IPTQwioLX3X|23}5fIYMz<=za#KL(a^No^;Ag~JPU*NE25L=F2NGK@8%1%yIh zG6m+6xiFs$l*^Kyu*~_|c}~Y_%JsNTlO`sAiBk+vkfQ>0%a549zMkT|j{Pkh-#sT3w+O^Xwaz@4vvMaS{5tL0DA?mUKU} zzqs{TJ^)j5X|W4l&3EAOox9=3FB??xE1EpALGuaKn3H1p&Z}3P)xQ5F;GWMe?C8_E zMb--qyVfE5v9T$&qiraLX6b{*IRor;5~iPvEc48NbojaHY8usqIblzbXmMHHwsvs? z3>P(9E$J>mGca;9xD~$rX;fFnrdhMLjQoN;ULh?5i(~W_X^68uuH^g;~_GB=O{*%(_&0HEtXIWi_ma4-8Mw~fSn%mf__g)Ec8SD zeXWyD0)rb$Fjm(-n~b`@^4^?jmw$cb9Aui@z1g(JskMI}{$S25QjAeP4eZlv(2!m| z2T42XcQQf$GC~b#t))p#d1V` zI~D1O{B-p3nW!p!F;jDbO+$~5PdLRbj;=6f1r7f*Zw){7yknf5|JID~!(<&%#-$tNJP*hZ0$rWJY$eGm}P{CM@_hi{0eK1ljL zK_>@4ZIfMq`FPto_-zDTs!&r?NppcI&;T1feVI^t@S^@;PEc;7ITibeezn)DAi6i z$K=Ntjij%Joe#=zvdK+a_lKL z_TH)+a4M(rGY{;4c*2no*ZrtEly5(~%r_|8Y04Rj| z0DZYOE}oep)t-=00LWM8ZSxd|N=zBHRKzsIU@*R)bXvDb>~{x$a8EtGZK%+H@{`{^ zoyXi$P<6DVk|M95v#OVB3<(t(F9eAPsRqBl01^;By2eP3tfK>xf#N!0iBs3r*bZx9;!!Vl`0Wdbno5xZ)89%T~>rPEU^x9M?8lzA6njAmo9lsAL*Yk|B+0 zheir&Fh&}wMy<#UToOXJzhDPY?oy!lGIQ;z68{UQu%lLO5+q8)@2*_=CluH!-}hO# z&;&v37n;e}q#g#KzYv@I3p_|pe*q#H2_uq$3n85fjA^5Z7Kj0g)XDhtH95bJoPVth zn(s~SL6|4=yz9|j$$$nRguDfeijIH0>Zy;vM1NAEMu8_5$PWz( z6x5}mD{@10QUv7;IC8db)hczAS5r4_m|m%R^-8P{!{lFK4b6-3L^kA5=oc#V3y~xY zku`^x+pBtNYV~Rj8!7kdkEmB~M16$OaJdUkQr>cApF*l+wYlWgcW#{7#@f~KI7*)CoDjMnvhH zLXilkF-Ma`C#ys!D>7-UZtOKa@T|2)`bQ&Y;brjUL@5T30*So(eRKAmi%K@LF~|j` z`^+N)v6Ov^j=UKaR1vp&SSs9DM-cn!^f8>%SNnb++5pX}R&r;9EqB4sgsEZZL_npI?6Y)8&g>t(dU_u5&N!4`8io{ zn1=i~&rE{08C3RUyFr4nl2J~hLR3M+T>B!>c7S*u-A~ct`W9zN|JqgN84n$4TupvH zO%9K$KD|eqa&^5bBZM=b$hWhbD}VFROA-624-_9II=Kvyh6IC@rY#R9TA994<{gRQ z!)7PaKjbPz;93t}La=-ryvQr?qJ1!u*`!YPI^=~y*lgX4B$I^c7T~&Km3L4vr?GX- zTCH1s+VWxf1`W!WYse$KzsvV=K|>YV&R{N6KE3oT=bvVn9mBgeFqe}zTM^V+(Y{Q{jTpze0NFA@TDh1ktv{w-y^0kY z;GU`F$~K};4428?WQt?!QKxoNQk~lDAsx}2$TT*f5gea11tGZt=M5^77ikIAi_ic~ zK(fF4}Mny^gA#LLP$BQ*IOw5G4>$$Funojz(9b~$N+8yDY(Mhny?Jd zB?lQ*-BYOxl2Bu+dlaH}hQ#?|`nvGNK>B}VjZv|Oi6cI6Lh#<=xH86qALu`k%5a}o z-b6jpR5B69!{>R^^|ZggATPomKqiEgFwR&|A`gNdF&cv;5a>OYkfY=vJb=>hkQ|iF znSU`MGA34p9?%-!T7n;w~e$ktJl+~Qqu=g_2=4bRPuA?mNNfsM41}=ALbWR z@{vO_<&V{CK7^#RYm~@>E8^)@ zbC4IeadP$zH@}YM~xa9cL<@S7g)2cGTSv|BW*mz^Kvd>>d_6NDu;oF z8>oJroGk6x0eH?FlDU;!+)m!knFq=?DB?V_c;e(wr6%(yPgdXXjp0dcZIuF{8mq@8Xa|udGvcY2vWKP)u4i=Pz){+JKwhq$7fMFK)F3Dio^YO&SiQ$4vD}kx2+0p<#z1~*VH#ZUWFfRkAtJZ4{v?Jz ziFx0(#>{=h20&OICSD37nl?Q)*_={J=W+OId>lP3VqH>)vkNJ^AnS zHKR$!xEoNmbE9Vc8c*vsqHnK`4R$EU(+_mnP@>Q`lh59%M@lN|#-15OIyCMwu(Q*% z?BLdYMqV(my)A&Wmkrdq^eb2(1qN)_khx& z&yWs%KB{N;5#u`c7%ksiu{|W{dO~8+h6A?#y5>2#05Si1ugQurbadWYv2*9H{@+-5 z<{M)zPmt@QI5brajxX@x{M-EWNq)XRdF0pjC-sPxlHNvI6ReD6#7gZzn@j(&&B|dD zR(_y*h|z=mCb51?e)gula#RonX)_t5#J!h#kx0XHIbnP|CsJ$wQ;SX@-S`0z$>`d+ zQK#0e4<0$*w^iG|U?;EAGspud`OPQ!N7h=j^}xc!idBj+d^mALmpTrlF8BEc`HLO!IAo`z@^?)E|2d)~#kW@_4xlrqCf#{_IhLTWDuqYzZ|1Zs68BOHY-M6>-RdRjOz%`rwN|#$ zoySiM!2}A4b^M?gDUFa6z&2B4R_qqKotnYU9hH(?lRSQqjpXdd_W)$NwtN3{(3kXq zC0)B6^2Hs<1+pJ1LM%v7462b+Aoy0(sfQ;FH%WVwICTpVN9ABtQ2BUk*H8+=B zrk_930)-}|@6A?mGq!=vYD?6-8SyLun9ji%IvXM4WOdkViY`SFf(5JhpId0hHF6rp z*9xkbP}Wex;I%RHT1+i~+s4iV;gYkbZ2!Du0qL?80qRbM%RooE2x_n9D_Sgf?iHjh zEa+Zq#8FT@EjdXP!if0Qx$`TZbtwz3*C~Q2wn8fx$ZEvvJ zq?K)&mK@yk@%-83;IqZ`wn#JEEp0!vT%YYjE3R628KmFaPG~GUf_>{(TKx3w?lSp9 zDz9pAtm=TyHL6CL?3LQjA29FRga!w{JZlL@On=LMDHA&4K~xL!cF)@vvpz-Y4u0Sx zai%IC3WEfsYd`}beP6>H*yX!BidLo5r2|PfkjErrkE}{*&X?tqJa`I!5~~GpO-Hp< z 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

qKeC=lP*lYeHehI6Q)MS6&+vP#n675bfQ1FhUtH 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 I3*a(Q$S^tF@Bjb+ literal 0 HcmV?d00001 diff --git a/gawa/static/admin/fonts/Roboto-Light-webfont.woff b/gawa/static/admin/fonts/Roboto-Light-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..b9e99185c8300c786fa77a0490fefdd26ab2e99e GIT binary patch literal 85692 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ŐfpB|})B55Bx+ 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 literal 0 HcmV?d00001 diff --git a/gawa/static/admin/fonts/Roboto-Regular-webfont.woff b/gawa/static/admin/fonts/Roboto-Regular-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..96c1986f01459bc3b7ca8e18fc06785e5e35dc45 GIT binary patch literal 85876 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 YL6htZCcLmfC1Z!aXXnWeQyf*20Ac;`*Z=?k literal 0 HcmV?d00001 diff --git a/gawa/static/admin/img/LICENSE b/gawa/static/admin/img/LICENSE new file mode 100644 index 0000000..a4faaa1 --- /dev/null +++ b/gawa/static/admin/img/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2014 Code Charm Ltd + +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. diff --git a/gawa/static/admin/img/README.txt b/gawa/static/admin/img/README.txt new file mode 100644 index 0000000..4eb2e49 --- /dev/null +++ b/gawa/static/admin/img/README.txt @@ -0,0 +1,7 @@ +All icons are taken from Font Awesome (http://fontawesome.io/) project. +The Font Awesome font is licensed under the SIL OFL 1.1: +- https://scripts.sil.org/OFL + +SVG icons source: https://github.com/encharm/Font-Awesome-SVG-PNG +Font-Awesome-SVG-PNG is licensed under the MIT license (see file license +in current folder). diff --git a/gawa/static/admin/img/calendar-icons.svg b/gawa/static/admin/img/calendar-icons.svg new file mode 100644 index 0000000..dbf21c3 --- /dev/null +++ b/gawa/static/admin/img/calendar-icons.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/gawa/static/admin/img/gis/move_vertex_off.svg b/gawa/static/admin/img/gis/move_vertex_off.svg new file mode 100644 index 0000000..228854f --- /dev/null +++ b/gawa/static/admin/img/gis/move_vertex_off.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gawa/static/admin/img/gis/move_vertex_on.svg b/gawa/static/admin/img/gis/move_vertex_on.svg new file mode 100644 index 0000000..96b87fd --- /dev/null +++ b/gawa/static/admin/img/gis/move_vertex_on.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gawa/static/admin/img/icon-addlink.svg b/gawa/static/admin/img/icon-addlink.svg new file mode 100644 index 0000000..e004fb1 --- /dev/null +++ b/gawa/static/admin/img/icon-addlink.svg @@ -0,0 +1,3 @@ + + + diff --git a/gawa/static/admin/img/icon-alert.svg b/gawa/static/admin/img/icon-alert.svg new file mode 100644 index 0000000..e51ea83 --- /dev/null +++ b/gawa/static/admin/img/icon-alert.svg @@ -0,0 +1,3 @@ + + + diff --git a/gawa/static/admin/img/icon-calendar.svg b/gawa/static/admin/img/icon-calendar.svg new file mode 100644 index 0000000..97910a9 --- /dev/null +++ b/gawa/static/admin/img/icon-calendar.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/gawa/static/admin/img/icon-changelink.svg b/gawa/static/admin/img/icon-changelink.svg new file mode 100644 index 0000000..bbb137a --- /dev/null +++ b/gawa/static/admin/img/icon-changelink.svg @@ -0,0 +1,3 @@ + + + diff --git a/gawa/static/admin/img/icon-clock.svg b/gawa/static/admin/img/icon-clock.svg new file mode 100644 index 0000000..bf9985d --- /dev/null +++ b/gawa/static/admin/img/icon-clock.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/gawa/static/admin/img/icon-deletelink.svg b/gawa/static/admin/img/icon-deletelink.svg new file mode 100644 index 0000000..4059b15 --- /dev/null +++ b/gawa/static/admin/img/icon-deletelink.svg @@ -0,0 +1,3 @@ + + + diff --git a/gawa/static/admin/img/icon-no.svg b/gawa/static/admin/img/icon-no.svg new file mode 100644 index 0000000..2e0d383 --- /dev/null +++ b/gawa/static/admin/img/icon-no.svg @@ -0,0 +1,3 @@ + + + diff --git a/gawa/static/admin/img/icon-unknown-alt.svg b/gawa/static/admin/img/icon-unknown-alt.svg new file mode 100644 index 0000000..1c6b99f --- /dev/null +++ b/gawa/static/admin/img/icon-unknown-alt.svg @@ -0,0 +1,3 @@ + + + diff --git a/gawa/static/admin/img/icon-unknown.svg b/gawa/static/admin/img/icon-unknown.svg new file mode 100644 index 0000000..50b4f97 --- /dev/null +++ b/gawa/static/admin/img/icon-unknown.svg @@ -0,0 +1,3 @@ + + + diff --git a/gawa/static/admin/img/icon-viewlink.svg b/gawa/static/admin/img/icon-viewlink.svg new file mode 100644 index 0000000..a1ca1d3 --- /dev/null +++ b/gawa/static/admin/img/icon-viewlink.svg @@ -0,0 +1,3 @@ + + + diff --git a/gawa/static/admin/img/icon-yes.svg b/gawa/static/admin/img/icon-yes.svg new file mode 100644 index 0000000..5883d87 --- /dev/null +++ b/gawa/static/admin/img/icon-yes.svg @@ -0,0 +1,3 @@ + + + diff --git a/gawa/static/admin/img/inline-delete.svg b/gawa/static/admin/img/inline-delete.svg new file mode 100644 index 0000000..17d1ad6 --- /dev/null +++ b/gawa/static/admin/img/inline-delete.svg @@ -0,0 +1,3 @@ + + + diff --git a/gawa/static/admin/img/search.svg b/gawa/static/admin/img/search.svg new file mode 100644 index 0000000..c8c69b2 --- /dev/null +++ b/gawa/static/admin/img/search.svg @@ -0,0 +1,3 @@ + + + diff --git a/gawa/static/admin/img/selector-icons.svg b/gawa/static/admin/img/selector-icons.svg new file mode 100644 index 0000000..926b8e2 --- /dev/null +++ b/gawa/static/admin/img/selector-icons.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/gawa/static/admin/img/sorting-icons.svg b/gawa/static/admin/img/sorting-icons.svg new file mode 100644 index 0000000..7c31ec9 --- /dev/null +++ b/gawa/static/admin/img/sorting-icons.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/gawa/static/admin/img/tooltag-add.svg b/gawa/static/admin/img/tooltag-add.svg new file mode 100644 index 0000000..1ca64ae --- /dev/null +++ b/gawa/static/admin/img/tooltag-add.svg @@ -0,0 +1,3 @@ + + + diff --git a/gawa/static/admin/img/tooltag-arrowright.svg b/gawa/static/admin/img/tooltag-arrowright.svg new file mode 100644 index 0000000..b664d61 --- /dev/null +++ b/gawa/static/admin/img/tooltag-arrowright.svg @@ -0,0 +1,3 @@ + + + diff --git a/gawa/static/admin/js/SelectBox.js b/gawa/static/admin/js/SelectBox.js new file mode 100644 index 0000000..3db4ec7 --- /dev/null +++ b/gawa/static/admin/js/SelectBox.js @@ -0,0 +1,116 @@ +'use strict'; +{ + const SelectBox = { + cache: {}, + init: function(id) { + const box = document.getElementById(id); + SelectBox.cache[id] = []; + const cache = SelectBox.cache[id]; + for (const node of box.options) { + cache.push({value: node.value, text: node.text, displayed: 1}); + } + }, + redisplay: function(id) { + // Repopulate HTML select box from cache + const box = document.getElementById(id); + const scroll_value_from_top = box.scrollTop; + box.innerHTML = ''; + for (const node of SelectBox.cache[id]) { + if (node.displayed) { + const new_option = new Option(node.text, node.value, false, false); + // Shows a tooltip when hovering over the option + new_option.title = node.text; + box.appendChild(new_option); + } + } + box.scrollTop = scroll_value_from_top; + }, + filter: function(id, text) { + // Redisplay the HTML select box, displaying only the choices containing ALL + // the words in text. (It's an AND search.) + const tokens = text.toLowerCase().split(/\s+/); + for (const node of SelectBox.cache[id]) { + node.displayed = 1; + const node_text = node.text.toLowerCase(); + for (const token of tokens) { + if (!node_text.includes(token)) { + node.displayed = 0; + break; // Once the first token isn't found we're done + } + } + } + SelectBox.redisplay(id); + }, + get_hidden_node_count(id) { + const cache = SelectBox.cache[id] || []; + return cache.filter(node => node.displayed === 0).length; + }, + delete_from_cache: function(id, value) { + let delete_index = null; + const cache = SelectBox.cache[id]; + for (const [i, node] of cache.entries()) { + if (node.value === value) { + delete_index = i; + break; + } + } + cache.splice(delete_index, 1); + }, + add_to_cache: function(id, option) { + SelectBox.cache[id].push({value: option.value, text: option.text, displayed: 1}); + }, + cache_contains: function(id, value) { + // Check if an item is contained in the cache + for (const node of SelectBox.cache[id]) { + if (node.value === value) { + return true; + } + } + return false; + }, + move: function(from, to) { + const from_box = document.getElementById(from); + for (const option of from_box.options) { + const option_value = option.value; + if (option.selected && SelectBox.cache_contains(from, option_value)) { + SelectBox.add_to_cache(to, {value: option_value, text: option.text, displayed: 1}); + SelectBox.delete_from_cache(from, option_value); + } + } + SelectBox.redisplay(from); + SelectBox.redisplay(to); + }, + move_all: function(from, to) { + const from_box = document.getElementById(from); + for (const option of from_box.options) { + const option_value = option.value; + if (SelectBox.cache_contains(from, option_value)) { + SelectBox.add_to_cache(to, {value: option_value, text: option.text, displayed: 1}); + SelectBox.delete_from_cache(from, option_value); + } + } + SelectBox.redisplay(from); + SelectBox.redisplay(to); + }, + sort: function(id) { + SelectBox.cache[id].sort(function(a, b) { + a = a.text.toLowerCase(); + b = b.text.toLowerCase(); + if (a > b) { + return 1; + } + if (a < b) { + return -1; + } + return 0; + } ); + }, + select_all: function(id) { + const box = document.getElementById(id); + for (const option of box.options) { + option.selected = true; + } + } + }; + window.SelectBox = SelectBox; +} diff --git a/gawa/static/admin/js/SelectFilter2.js b/gawa/static/admin/js/SelectFilter2.js new file mode 100644 index 0000000..9a4e0a3 --- /dev/null +++ b/gawa/static/admin/js/SelectFilter2.js @@ -0,0 +1,283 @@ +/*global SelectBox, gettext, interpolate, quickElement, SelectFilter*/ +/* +SelectFilter2 - Turns a multiple-select box into a filter interface. + +Requires core.js and SelectBox.js. +*/ +'use strict'; +{ + window.SelectFilter = { + init: function(field_id, field_name, is_stacked) { + if (field_id.match(/__prefix__/)) { + // Don't initialize on empty forms. + return; + } + const from_box = document.getElementById(field_id); + from_box.id += '_from'; // change its ID + from_box.className = 'filtered'; + + for (const p of from_box.parentNode.getElementsByTagName('p')) { + if (p.classList.contains("info")) { + // Remove

, because it just gets in the way. + from_box.parentNode.removeChild(p); + } else if (p.classList.contains("help")) { + // Move help text up to the top so it isn't below the select + // boxes or wrapped off on the side to the right of the add + // button: + from_box.parentNode.insertBefore(p, from_box.parentNode.firstChild); + } + } + + //

or
+ const selector_div = quickElement('div', from_box.parentNode); + selector_div.className = is_stacked ? 'selector stacked' : 'selector'; + + //
+ const selector_available = quickElement('div', selector_div); + selector_available.className = 'selector-available'; + const title_available = quickElement('h2', selector_available, interpolate(gettext('Available %s') + ' ', [field_name])); + quickElement( + 'span', title_available, '', + 'class', 'help help-tooltip help-icon', + 'title', interpolate( + gettext( + 'This is the list of available %s. You may choose some by ' + + 'selecting them in the box below and then clicking the ' + + '"Choose" arrow between the two boxes.' + ), + [field_name] + ) + ); + + const filter_p = quickElement('p', selector_available, '', 'id', field_id + '_filter'); + filter_p.className = 'selector-filter'; + + const search_filter_label = quickElement('label', filter_p, '', 'for', field_id + '_input'); + + quickElement( + 'span', search_filter_label, '', + 'class', 'help-tooltip search-label-icon', + 'title', interpolate(gettext("Type into this box to filter down the list of available %s."), [field_name]) + ); + + filter_p.appendChild(document.createTextNode(' ')); + + const filter_input = quickElement('input', filter_p, '', 'type', 'text', 'placeholder', gettext("Filter")); + filter_input.id = field_id + '_input'; + + selector_available.appendChild(from_box); + const choose_all = quickElement('a', selector_available, gettext('Choose all'), 'title', interpolate(gettext('Click to choose all %s at once.'), [field_name]), 'href', '#', 'id', field_id + '_add_all_link'); + choose_all.className = 'selector-chooseall'; + + //
    + const selector_chooser = quickElement('ul', selector_div); + selector_chooser.className = 'selector-chooser'; + const add_link = quickElement('a', quickElement('li', selector_chooser), gettext('Choose'), 'title', gettext('Choose'), 'href', '#', 'id', field_id + '_add_link'); + add_link.className = 'selector-add'; + const remove_link = quickElement('a', quickElement('li', selector_chooser), gettext('Remove'), 'title', gettext('Remove'), 'href', '#', 'id', field_id + '_remove_link'); + remove_link.className = 'selector-remove'; + + //
    + const selector_chosen = quickElement('div', selector_div, '', 'id', field_id + '_selector_chosen'); + selector_chosen.className = 'selector-chosen'; + const title_chosen = quickElement('h2', selector_chosen, interpolate(gettext('Chosen %s') + ' ', [field_name])); + quickElement( + 'span', title_chosen, '', + 'class', 'help help-tooltip help-icon', + 'title', interpolate( + gettext( + 'This is the list of chosen %s. You may remove some by ' + + 'selecting them in the box below and then clicking the ' + + '"Remove" arrow between the two boxes.' + ), + [field_name] + ) + ); + + const filter_selected_p = quickElement('p', selector_chosen, '', 'id', field_id + '_filter_selected'); + filter_selected_p.className = 'selector-filter'; + + const search_filter_selected_label = quickElement('label', filter_selected_p, '', 'for', field_id + '_selected_input'); + + quickElement( + 'span', search_filter_selected_label, '', + 'class', 'help-tooltip search-label-icon', + 'title', interpolate(gettext("Type into this box to filter down the list of selected %s."), [field_name]) + ); + + filter_selected_p.appendChild(document.createTextNode(' ')); + + const filter_selected_input = quickElement('input', filter_selected_p, '', 'type', 'text', 'placeholder', gettext("Filter")); + filter_selected_input.id = field_id + '_selected_input'; + + const to_box = quickElement('select', selector_chosen, '', 'id', field_id + '_to', 'multiple', '', 'size', from_box.size, 'name', from_box.name); + to_box.className = 'filtered'; + + const warning_footer = quickElement('div', selector_chosen, '', 'class', 'list-footer-display'); + quickElement('span', warning_footer, '', 'id', field_id + '_list-footer-display-text'); + quickElement('span', warning_footer, ' (click to clear)', 'class', 'list-footer-display__clear'); + + const clear_all = quickElement('a', selector_chosen, gettext('Remove all'), 'title', interpolate(gettext('Click to remove all chosen %s at once.'), [field_name]), 'href', '#', 'id', field_id + '_remove_all_link'); + clear_all.className = 'selector-clearall'; + + from_box.name = from_box.name + '_old'; + + // Set up the JavaScript event handlers for the select box filter interface + const move_selection = function(e, elem, move_func, from, to) { + if (elem.classList.contains('active')) { + move_func(from, to); + SelectFilter.refresh_icons(field_id); + SelectFilter.refresh_filtered_selects(field_id); + SelectFilter.refresh_filtered_warning(field_id); + } + e.preventDefault(); + }; + choose_all.addEventListener('click', function(e) { + move_selection(e, this, SelectBox.move_all, field_id + '_from', field_id + '_to'); + }); + add_link.addEventListener('click', function(e) { + move_selection(e, this, SelectBox.move, field_id + '_from', field_id + '_to'); + }); + remove_link.addEventListener('click', function(e) { + move_selection(e, this, SelectBox.move, field_id + '_to', field_id + '_from'); + }); + clear_all.addEventListener('click', function(e) { + move_selection(e, this, SelectBox.move_all, field_id + '_to', field_id + '_from'); + }); + warning_footer.addEventListener('click', function(e) { + filter_selected_input.value = ''; + SelectBox.filter(field_id + '_to', ''); + SelectFilter.refresh_filtered_warning(field_id); + SelectFilter.refresh_icons(field_id); + }); + filter_input.addEventListener('keypress', function(e) { + SelectFilter.filter_key_press(e, field_id, '_from', '_to'); + }); + filter_input.addEventListener('keyup', function(e) { + SelectFilter.filter_key_up(e, field_id, '_from'); + }); + filter_input.addEventListener('keydown', function(e) { + SelectFilter.filter_key_down(e, field_id, '_from', '_to'); + }); + filter_selected_input.addEventListener('keypress', function(e) { + SelectFilter.filter_key_press(e, field_id, '_to', '_from'); + }); + filter_selected_input.addEventListener('keyup', function(e) { + SelectFilter.filter_key_up(e, field_id, '_to', '_selected_input'); + }); + filter_selected_input.addEventListener('keydown', function(e) { + SelectFilter.filter_key_down(e, field_id, '_to', '_from'); + }); + selector_div.addEventListener('change', function(e) { + if (e.target.tagName === 'SELECT') { + SelectFilter.refresh_icons(field_id); + } + }); + selector_div.addEventListener('dblclick', function(e) { + if (e.target.tagName === 'OPTION') { + if (e.target.closest('select').id === field_id + '_to') { + SelectBox.move(field_id + '_to', field_id + '_from'); + } else { + SelectBox.move(field_id + '_from', field_id + '_to'); + } + SelectFilter.refresh_icons(field_id); + } + }); + from_box.closest('form').addEventListener('submit', function() { + SelectBox.filter(field_id + '_to', ''); + SelectBox.select_all(field_id + '_to'); + }); + SelectBox.init(field_id + '_from'); + SelectBox.init(field_id + '_to'); + // Move selected from_box options to to_box + SelectBox.move(field_id + '_from', field_id + '_to'); + + // Initial icon refresh + SelectFilter.refresh_icons(field_id); + }, + any_selected: function(field) { + // Temporarily add the required attribute and check validity. + field.required = true; + const any_selected = field.checkValidity(); + field.required = false; + return any_selected; + }, + refresh_filtered_warning: function(field_id) { + const count = SelectBox.get_hidden_node_count(field_id + '_to'); + const selector = document.getElementById(field_id + '_selector_chosen'); + const warning = document.getElementById(field_id + '_list-footer-display-text'); + selector.className = selector.className.replace('selector-chosen--with-filtered', ''); + warning.textContent = interpolate(ngettext( + '%s selected option not visible', + '%s selected options not visible', + count + ), [count]); + if(count > 0) { + selector.className += ' selector-chosen--with-filtered'; + } + }, + refresh_filtered_selects: function(field_id) { + SelectBox.filter(field_id + '_from', document.getElementById(field_id + "_input").value); + SelectBox.filter(field_id + '_to', document.getElementById(field_id + "_selected_input").value); + }, + refresh_icons: function(field_id) { + const from = document.getElementById(field_id + '_from'); + const to = document.getElementById(field_id + '_to'); + // Active if at least one item is selected + document.getElementById(field_id + '_add_link').classList.toggle('active', SelectFilter.any_selected(from)); + document.getElementById(field_id + '_remove_link').classList.toggle('active', SelectFilter.any_selected(to)); + // Active if the corresponding box isn't empty + document.getElementById(field_id + '_add_all_link').classList.toggle('active', from.querySelector('option')); + document.getElementById(field_id + '_remove_all_link').classList.toggle('active', to.querySelector('option')); + SelectFilter.refresh_filtered_warning(field_id); + }, + filter_key_press: function(event, field_id, source, target) { + const source_box = document.getElementById(field_id + source); + // don't submit form if user pressed Enter + if ((event.which && event.which === 13) || (event.keyCode && event.keyCode === 13)) { + source_box.selectedIndex = 0; + SelectBox.move(field_id + source, field_id + target); + source_box.selectedIndex = 0; + event.preventDefault(); + } + }, + filter_key_up: function(event, field_id, source, filter_input) { + const input = filter_input || '_input'; + const source_box = document.getElementById(field_id + source); + const temp = source_box.selectedIndex; + SelectBox.filter(field_id + source, document.getElementById(field_id + input).value); + source_box.selectedIndex = temp; + SelectFilter.refresh_filtered_warning(field_id); + SelectFilter.refresh_icons(field_id); + }, + filter_key_down: function(event, field_id, source, target) { + const source_box = document.getElementById(field_id + source); + // right key (39) or left key (37) + const direction = source === '_from' ? 39 : 37; + // right arrow -- move across + if ((event.which && event.which === direction) || (event.keyCode && event.keyCode === direction)) { + const old_index = source_box.selectedIndex; + SelectBox.move(field_id + source, field_id + target); + SelectFilter.refresh_filtered_selects(field_id); + SelectFilter.refresh_filtered_warning(field_id); + source_box.selectedIndex = (old_index === source_box.length) ? source_box.length - 1 : old_index; + return; + } + // down arrow -- wrap around + if ((event.which && event.which === 40) || (event.keyCode && event.keyCode === 40)) { + source_box.selectedIndex = (source_box.length === source_box.selectedIndex + 1) ? 0 : source_box.selectedIndex + 1; + } + // up arrow -- wrap around + if ((event.which && event.which === 38) || (event.keyCode && event.keyCode === 38)) { + source_box.selectedIndex = (source_box.selectedIndex === 0) ? source_box.length - 1 : source_box.selectedIndex - 1; + } + } + }; + + window.addEventListener('load', function(e) { + document.querySelectorAll('select.selectfilter, select.selectfilterstacked').forEach(function(el) { + const data = el.dataset; + SelectFilter.init(el.id, data.fieldName, parseInt(data.isStacked, 10)); + }); + }); +} diff --git a/gawa/static/admin/js/actions.js b/gawa/static/admin/js/actions.js new file mode 100644 index 0000000..20a5c14 --- /dev/null +++ b/gawa/static/admin/js/actions.js @@ -0,0 +1,201 @@ +/*global gettext, interpolate, ngettext*/ +'use strict'; +{ + function show(selector) { + document.querySelectorAll(selector).forEach(function(el) { + el.classList.remove('hidden'); + }); + } + + function hide(selector) { + document.querySelectorAll(selector).forEach(function(el) { + el.classList.add('hidden'); + }); + } + + function showQuestion(options) { + hide(options.acrossClears); + show(options.acrossQuestions); + hide(options.allContainer); + } + + function showClear(options) { + show(options.acrossClears); + hide(options.acrossQuestions); + document.querySelector(options.actionContainer).classList.remove(options.selectedClass); + show(options.allContainer); + hide(options.counterContainer); + } + + function reset(options) { + hide(options.acrossClears); + hide(options.acrossQuestions); + hide(options.allContainer); + show(options.counterContainer); + } + + function clearAcross(options) { + reset(options); + const acrossInputs = document.querySelectorAll(options.acrossInput); + acrossInputs.forEach(function(acrossInput) { + acrossInput.value = 0; + }); + document.querySelector(options.actionContainer).classList.remove(options.selectedClass); + } + + function checker(actionCheckboxes, options, checked) { + if (checked) { + showQuestion(options); + } else { + reset(options); + } + actionCheckboxes.forEach(function(el) { + el.checked = checked; + el.closest('tr').classList.toggle(options.selectedClass, checked); + }); + } + + function updateCounter(actionCheckboxes, options) { + const sel = Array.from(actionCheckboxes).filter(function(el) { + return el.checked; + }).length; + const counter = document.querySelector(options.counterContainer); + // data-actions-icnt is defined in the generated HTML + // and contains the total amount of objects in the queryset + const actions_icnt = Number(counter.dataset.actionsIcnt); + counter.textContent = interpolate( + ngettext('%(sel)s of %(cnt)s selected', '%(sel)s of %(cnt)s selected', sel), { + sel: sel, + cnt: actions_icnt + }, true); + const allToggle = document.getElementById(options.allToggleId); + allToggle.checked = sel === actionCheckboxes.length; + if (allToggle.checked) { + showQuestion(options); + } else { + clearAcross(options); + } + } + + const defaults = { + actionContainer: "div.actions", + counterContainer: "span.action-counter", + allContainer: "div.actions span.all", + acrossInput: "div.actions input.select-across", + acrossQuestions: "div.actions span.question", + acrossClears: "div.actions span.clear", + allToggleId: "action-toggle", + selectedClass: "selected" + }; + + window.Actions = function(actionCheckboxes, options) { + options = Object.assign({}, defaults, options); + let list_editable_changed = false; + let lastChecked = null; + let shiftPressed = false; + + document.addEventListener('keydown', (event) => { + shiftPressed = event.shiftKey; + }); + + document.addEventListener('keyup', (event) => { + shiftPressed = event.shiftKey; + }); + + document.getElementById(options.allToggleId).addEventListener('click', function(event) { + checker(actionCheckboxes, options, this.checked); + updateCounter(actionCheckboxes, options); + }); + + document.querySelectorAll(options.acrossQuestions + " a").forEach(function(el) { + el.addEventListener('click', function(event) { + event.preventDefault(); + const acrossInputs = document.querySelectorAll(options.acrossInput); + acrossInputs.forEach(function(acrossInput) { + acrossInput.value = 1; + }); + showClear(options); + }); + }); + + document.querySelectorAll(options.acrossClears + " a").forEach(function(el) { + el.addEventListener('click', function(event) { + event.preventDefault(); + document.getElementById(options.allToggleId).checked = false; + clearAcross(options); + checker(actionCheckboxes, options, false); + updateCounter(actionCheckboxes, options); + }); + }); + + function affectedCheckboxes(target, withModifier) { + const multiSelect = (lastChecked && withModifier && lastChecked !== target); + if (!multiSelect) { + return [target]; + } + const checkboxes = Array.from(actionCheckboxes); + const targetIndex = checkboxes.findIndex(el => el === target); + const lastCheckedIndex = checkboxes.findIndex(el => el === lastChecked); + const startIndex = Math.min(targetIndex, lastCheckedIndex); + const endIndex = Math.max(targetIndex, lastCheckedIndex); + const filtered = checkboxes.filter((el, index) => (startIndex <= index) && (index <= endIndex)); + return filtered; + }; + + Array.from(document.getElementById('result_list').tBodies).forEach(function(el) { + el.addEventListener('change', function(event) { + const target = event.target; + if (target.classList.contains('action-select')) { + const checkboxes = affectedCheckboxes(target, shiftPressed); + checker(checkboxes, options, target.checked); + updateCounter(actionCheckboxes, options); + lastChecked = target; + } else { + list_editable_changed = true; + } + }); + }); + + document.querySelector('#changelist-form button[name=index]').addEventListener('click', function(event) { + if (list_editable_changed) { + const confirmed = confirm(gettext("You have unsaved changes on individual editable fields. If you run an action, your unsaved changes will be lost.")); + if (!confirmed) { + event.preventDefault(); + } + } + }); + + const el = document.querySelector('#changelist-form input[name=_save]'); + // The button does not exist if no fields are editable. + if (el) { + el.addEventListener('click', function(event) { + if (document.querySelector('[name=action]').value) { + const text = list_editable_changed + ? gettext("You have selected an action, but you haven’t saved your changes to individual fields yet. Please click OK to save. You’ll need to re-run the action.") + : gettext("You have selected an action, and you haven’t made any changes on individual fields. You’re probably looking for the Go button rather than the Save button."); + if (!confirm(text)) { + event.preventDefault(); + } + } + }); + } + }; + + // Call function fn when the DOM is loaded and ready. If it is already + // loaded, call the function now. + // http://youmightnotneedjquery.com/#ready + function ready(fn) { + if (document.readyState !== 'loading') { + fn(); + } else { + document.addEventListener('DOMContentLoaded', fn); + } + } + + ready(function() { + const actionsEls = document.querySelectorAll('tr input.action-select'); + if (actionsEls.length > 0) { + Actions(actionsEls); + } + }); +} diff --git a/gawa/static/admin/js/admin/DateTimeShortcuts.js b/gawa/static/admin/js/admin/DateTimeShortcuts.js new file mode 100644 index 0000000..aa1cae9 --- /dev/null +++ b/gawa/static/admin/js/admin/DateTimeShortcuts.js @@ -0,0 +1,408 @@ +/*global Calendar, findPosX, findPosY, get_format, gettext, gettext_noop, interpolate, ngettext, quickElement*/ +// Inserts shortcut buttons after all of the following: +// +// +'use strict'; +{ + const DateTimeShortcuts = { + calendars: [], + calendarInputs: [], + clockInputs: [], + clockHours: { + default_: [ + [gettext_noop('Now'), -1], + [gettext_noop('Midnight'), 0], + [gettext_noop('6 a.m.'), 6], + [gettext_noop('Noon'), 12], + [gettext_noop('6 p.m.'), 18] + ] + }, + dismissClockFunc: [], + dismissCalendarFunc: [], + calendarDivName1: 'calendarbox', // name of calendar
    that gets toggled + calendarDivName2: 'calendarin', // name of
    that contains calendar + calendarLinkName: 'calendarlink', // name of the link that is used to toggle + clockDivName: 'clockbox', // name of clock
    that gets toggled + clockLinkName: 'clocklink', // name of the link that is used to toggle + shortCutsClass: 'datetimeshortcuts', // class of the clock and cal shortcuts + timezoneWarningClass: 'timezonewarning', // class of the warning for timezone mismatch + timezoneOffset: 0, + init: function() { + const serverOffset = document.body.dataset.adminUtcOffset; + if (serverOffset) { + const localOffset = new Date().getTimezoneOffset() * -60; + DateTimeShortcuts.timezoneOffset = localOffset - serverOffset; + } + + for (const inp of document.getElementsByTagName('input')) { + if (inp.type === 'text' && inp.classList.contains('vTimeField')) { + DateTimeShortcuts.addClock(inp); + DateTimeShortcuts.addTimezoneWarning(inp); + } + else if (inp.type === 'text' && inp.classList.contains('vDateField')) { + DateTimeShortcuts.addCalendar(inp); + DateTimeShortcuts.addTimezoneWarning(inp); + } + } + }, + // Return the current time while accounting for the server timezone. + now: function() { + const serverOffset = document.body.dataset.adminUtcOffset; + if (serverOffset) { + const localNow = new Date(); + const localOffset = localNow.getTimezoneOffset() * -60; + localNow.setTime(localNow.getTime() + 1000 * (serverOffset - localOffset)); + return localNow; + } else { + return new Date(); + } + }, + // Add a warning when the time zone in the browser and backend do not match. + addTimezoneWarning: function(inp) { + const warningClass = DateTimeShortcuts.timezoneWarningClass; + let timezoneOffset = DateTimeShortcuts.timezoneOffset / 3600; + + // Only warn if there is a time zone mismatch. + if (!timezoneOffset) { + return; + } + + // Check if warning is already there. + if (inp.parentNode.querySelectorAll('.' + warningClass).length) { + return; + } + + let message; + if (timezoneOffset > 0) { + message = ngettext( + 'Note: You are %s hour ahead of server time.', + 'Note: You are %s hours ahead of server time.', + timezoneOffset + ); + } + else { + timezoneOffset *= -1; + message = ngettext( + 'Note: You are %s hour behind server time.', + 'Note: You are %s hours behind server time.', + timezoneOffset + ); + } + message = interpolate(message, [timezoneOffset]); + + const warning = document.createElement('div'); + warning.classList.add('help', warningClass); + warning.textContent = message; + inp.parentNode.appendChild(warning); + }, + // Add clock widget to a given field + addClock: function(inp) { + const num = DateTimeShortcuts.clockInputs.length; + DateTimeShortcuts.clockInputs[num] = inp; + DateTimeShortcuts.dismissClockFunc[num] = function() { DateTimeShortcuts.dismissClock(num); return true; }; + + // Shortcut links (clock icon and "Now" link) + const shortcuts_span = document.createElement('span'); + shortcuts_span.className = DateTimeShortcuts.shortCutsClass; + inp.parentNode.insertBefore(shortcuts_span, inp.nextSibling); + const now_link = document.createElement('a'); + now_link.href = "#"; + now_link.textContent = gettext('Now'); + now_link.addEventListener('click', function(e) { + e.preventDefault(); + DateTimeShortcuts.handleClockQuicklink(num, -1); + }); + const clock_link = document.createElement('a'); + clock_link.href = '#'; + clock_link.id = DateTimeShortcuts.clockLinkName + num; + clock_link.addEventListener('click', function(e) { + e.preventDefault(); + // avoid triggering the document click handler to dismiss the clock + e.stopPropagation(); + DateTimeShortcuts.openClock(num); + }); + + quickElement( + 'span', clock_link, '', + 'class', 'clock-icon', + 'title', gettext('Choose a Time') + ); + shortcuts_span.appendChild(document.createTextNode('\u00A0')); + shortcuts_span.appendChild(now_link); + shortcuts_span.appendChild(document.createTextNode('\u00A0|\u00A0')); + shortcuts_span.appendChild(clock_link); + + // Create clock link div + // + // Markup looks like: + // + + const clock_box = document.createElement('div'); + clock_box.style.display = 'none'; + clock_box.style.position = 'absolute'; + clock_box.className = 'clockbox module'; + clock_box.id = DateTimeShortcuts.clockDivName + num; + document.body.appendChild(clock_box); + clock_box.addEventListener('click', function(e) { e.stopPropagation(); }); + + quickElement('h2', clock_box, gettext('Choose a time')); + const time_list = quickElement('ul', clock_box); + time_list.className = 'timelist'; + // The list of choices can be overridden in JavaScript like this: + // DateTimeShortcuts.clockHours.name = [['3 a.m.', 3]]; + // where name is the name attribute of the . + const name = typeof DateTimeShortcuts.clockHours[inp.name] === 'undefined' ? 'default_' : inp.name; + DateTimeShortcuts.clockHours[name].forEach(function(element) { + const time_link = quickElement('a', quickElement('li', time_list), gettext(element[0]), 'href', '#'); + time_link.addEventListener('click', function(e) { + e.preventDefault(); + DateTimeShortcuts.handleClockQuicklink(num, element[1]); + }); + }); + + const cancel_p = quickElement('p', clock_box); + cancel_p.className = 'calendar-cancel'; + const cancel_link = quickElement('a', cancel_p, gettext('Cancel'), 'href', '#'); + cancel_link.addEventListener('click', function(e) { + e.preventDefault(); + DateTimeShortcuts.dismissClock(num); + }); + + document.addEventListener('keyup', function(event) { + if (event.which === 27) { + // ESC key closes popup + DateTimeShortcuts.dismissClock(num); + event.preventDefault(); + } + }); + }, + openClock: function(num) { + const clock_box = document.getElementById(DateTimeShortcuts.clockDivName + num); + const clock_link = document.getElementById(DateTimeShortcuts.clockLinkName + num); + + // Recalculate the clockbox position + // is it left-to-right or right-to-left layout ? + if (window.getComputedStyle(document.body).direction !== 'rtl') { + clock_box.style.left = findPosX(clock_link) + 17 + 'px'; + } + else { + // since style's width is in em, it'd be tough to calculate + // px value of it. let's use an estimated px for now + clock_box.style.left = findPosX(clock_link) - 110 + 'px'; + } + clock_box.style.top = Math.max(0, findPosY(clock_link) - 30) + 'px'; + + // Show the clock box + clock_box.style.display = 'block'; + document.addEventListener('click', DateTimeShortcuts.dismissClockFunc[num]); + }, + dismissClock: function(num) { + document.getElementById(DateTimeShortcuts.clockDivName + num).style.display = 'none'; + document.removeEventListener('click', DateTimeShortcuts.dismissClockFunc[num]); + }, + handleClockQuicklink: function(num, val) { + let d; + if (val === -1) { + d = DateTimeShortcuts.now(); + } + else { + d = new Date(1970, 1, 1, val, 0, 0, 0); + } + DateTimeShortcuts.clockInputs[num].value = d.strftime(get_format('TIME_INPUT_FORMATS')[0]); + DateTimeShortcuts.clockInputs[num].focus(); + DateTimeShortcuts.dismissClock(num); + }, + // Add calendar widget to a given field. + addCalendar: function(inp) { + const num = DateTimeShortcuts.calendars.length; + + DateTimeShortcuts.calendarInputs[num] = inp; + DateTimeShortcuts.dismissCalendarFunc[num] = function() { DateTimeShortcuts.dismissCalendar(num); return true; }; + + // Shortcut links (calendar icon and "Today" link) + const shortcuts_span = document.createElement('span'); + shortcuts_span.className = DateTimeShortcuts.shortCutsClass; + inp.parentNode.insertBefore(shortcuts_span, inp.nextSibling); + const today_link = document.createElement('a'); + today_link.href = '#'; + today_link.appendChild(document.createTextNode(gettext('Today'))); + today_link.addEventListener('click', function(e) { + e.preventDefault(); + DateTimeShortcuts.handleCalendarQuickLink(num, 0); + }); + const cal_link = document.createElement('a'); + cal_link.href = '#'; + cal_link.id = DateTimeShortcuts.calendarLinkName + num; + cal_link.addEventListener('click', function(e) { + e.preventDefault(); + // avoid triggering the document click handler to dismiss the calendar + e.stopPropagation(); + DateTimeShortcuts.openCalendar(num); + }); + quickElement( + 'span', cal_link, '', + 'class', 'date-icon', + 'title', gettext('Choose a Date') + ); + shortcuts_span.appendChild(document.createTextNode('\u00A0')); + shortcuts_span.appendChild(today_link); + shortcuts_span.appendChild(document.createTextNode('\u00A0|\u00A0')); + shortcuts_span.appendChild(cal_link); + + // Create calendarbox div. + // + // Markup looks like: + // + //
    + //

    + // + // February 2003 + //

    + //
    + // + //
    + //
    + // Yesterday | Today | Tomorrow + //
    + //

    Cancel

    + //
    + const cal_box = document.createElement('div'); + cal_box.style.display = 'none'; + cal_box.style.position = 'absolute'; + cal_box.className = 'calendarbox module'; + cal_box.id = DateTimeShortcuts.calendarDivName1 + num; + document.body.appendChild(cal_box); + cal_box.addEventListener('click', function(e) { e.stopPropagation(); }); + + // next-prev links + const cal_nav = quickElement('div', cal_box); + const cal_nav_prev = quickElement('a', cal_nav, '<', 'href', '#'); + cal_nav_prev.className = 'calendarnav-previous'; + cal_nav_prev.addEventListener('click', function(e) { + e.preventDefault(); + DateTimeShortcuts.drawPrev(num); + }); + + const cal_nav_next = quickElement('a', cal_nav, '>', 'href', '#'); + cal_nav_next.className = 'calendarnav-next'; + cal_nav_next.addEventListener('click', function(e) { + e.preventDefault(); + DateTimeShortcuts.drawNext(num); + }); + + // main box + const cal_main = quickElement('div', cal_box, '', 'id', DateTimeShortcuts.calendarDivName2 + num); + cal_main.className = 'calendar'; + DateTimeShortcuts.calendars[num] = new Calendar(DateTimeShortcuts.calendarDivName2 + num, DateTimeShortcuts.handleCalendarCallback(num)); + DateTimeShortcuts.calendars[num].drawCurrent(); + + // calendar shortcuts + const shortcuts = quickElement('div', cal_box); + shortcuts.className = 'calendar-shortcuts'; + let day_link = quickElement('a', shortcuts, gettext('Yesterday'), 'href', '#'); + day_link.addEventListener('click', function(e) { + e.preventDefault(); + DateTimeShortcuts.handleCalendarQuickLink(num, -1); + }); + shortcuts.appendChild(document.createTextNode('\u00A0|\u00A0')); + day_link = quickElement('a', shortcuts, gettext('Today'), 'href', '#'); + day_link.addEventListener('click', function(e) { + e.preventDefault(); + DateTimeShortcuts.handleCalendarQuickLink(num, 0); + }); + shortcuts.appendChild(document.createTextNode('\u00A0|\u00A0')); + day_link = quickElement('a', shortcuts, gettext('Tomorrow'), 'href', '#'); + day_link.addEventListener('click', function(e) { + e.preventDefault(); + DateTimeShortcuts.handleCalendarQuickLink(num, +1); + }); + + // cancel bar + const cancel_p = quickElement('p', cal_box); + cancel_p.className = 'calendar-cancel'; + const cancel_link = quickElement('a', cancel_p, gettext('Cancel'), 'href', '#'); + cancel_link.addEventListener('click', function(e) { + e.preventDefault(); + DateTimeShortcuts.dismissCalendar(num); + }); + document.addEventListener('keyup', function(event) { + if (event.which === 27) { + // ESC key closes popup + DateTimeShortcuts.dismissCalendar(num); + event.preventDefault(); + } + }); + }, + openCalendar: function(num) { + const cal_box = document.getElementById(DateTimeShortcuts.calendarDivName1 + num); + const cal_link = document.getElementById(DateTimeShortcuts.calendarLinkName + num); + const inp = DateTimeShortcuts.calendarInputs[num]; + + // Determine if the current value in the input has a valid date. + // If so, draw the calendar with that date's year and month. + if (inp.value) { + const format = get_format('DATE_INPUT_FORMATS')[0]; + const selected = inp.value.strptime(format); + const year = selected.getUTCFullYear(); + const month = selected.getUTCMonth() + 1; + const re = /\d{4}/; + if (re.test(year.toString()) && month >= 1 && month <= 12) { + DateTimeShortcuts.calendars[num].drawDate(month, year, selected); + } + } + + // Recalculate the clockbox position + // is it left-to-right or right-to-left layout ? + if (window.getComputedStyle(document.body).direction !== 'rtl') { + cal_box.style.left = findPosX(cal_link) + 17 + 'px'; + } + else { + // since style's width is in em, it'd be tough to calculate + // px value of it. let's use an estimated px for now + cal_box.style.left = findPosX(cal_link) - 180 + 'px'; + } + cal_box.style.top = Math.max(0, findPosY(cal_link) - 75) + 'px'; + + cal_box.style.display = 'block'; + document.addEventListener('click', DateTimeShortcuts.dismissCalendarFunc[num]); + }, + dismissCalendar: function(num) { + document.getElementById(DateTimeShortcuts.calendarDivName1 + num).style.display = 'none'; + document.removeEventListener('click', DateTimeShortcuts.dismissCalendarFunc[num]); + }, + drawPrev: function(num) { + DateTimeShortcuts.calendars[num].drawPreviousMonth(); + }, + drawNext: function(num) { + DateTimeShortcuts.calendars[num].drawNextMonth(); + }, + handleCalendarCallback: function(num) { + const format = get_format('DATE_INPUT_FORMATS')[0]; + return function(y, m, d) { + DateTimeShortcuts.calendarInputs[num].value = new Date(y, m - 1, d).strftime(format); + DateTimeShortcuts.calendarInputs[num].focus(); + document.getElementById(DateTimeShortcuts.calendarDivName1 + num).style.display = 'none'; + }; + }, + handleCalendarQuickLink: function(num, offset) { + const d = DateTimeShortcuts.now(); + d.setDate(d.getDate() + offset); + DateTimeShortcuts.calendarInputs[num].value = d.strftime(get_format('DATE_INPUT_FORMATS')[0]); + DateTimeShortcuts.calendarInputs[num].focus(); + DateTimeShortcuts.dismissCalendar(num); + } + }; + + window.addEventListener('load', DateTimeShortcuts.init); + window.DateTimeShortcuts = DateTimeShortcuts; +} diff --git a/gawa/static/admin/js/admin/RelatedObjectLookups.js b/gawa/static/admin/js/admin/RelatedObjectLookups.js new file mode 100644 index 0000000..afb6b66 --- /dev/null +++ b/gawa/static/admin/js/admin/RelatedObjectLookups.js @@ -0,0 +1,238 @@ +/*global SelectBox, interpolate*/ +// Handles related-objects functionality: lookup link for raw_id_fields +// and Add Another links. +'use strict'; +{ + const $ = django.jQuery; + let popupIndex = 0; + const relatedWindows = []; + + function dismissChildPopups() { + relatedWindows.forEach(function(win) { + if(!win.closed) { + win.dismissChildPopups(); + win.close(); + } + }); + } + + function setPopupIndex() { + if(document.getElementsByName("_popup").length > 0) { + const index = window.name.lastIndexOf("__") + 2; + popupIndex = parseInt(window.name.substring(index)); + } else { + popupIndex = 0; + } + } + + function addPopupIndex(name) { + return name + "__" + (popupIndex + 1); + } + + function removePopupIndex(name) { + return name.replace(new RegExp("__" + (popupIndex + 1) + "$"), ''); + } + + function showAdminPopup(triggeringLink, name_regexp, add_popup) { + const name = addPopupIndex(triggeringLink.id.replace(name_regexp, '')); + const href = new URL(triggeringLink.href); + if (add_popup) { + href.searchParams.set('_popup', 1); + } + const win = window.open(href, name, 'height=500,width=800,resizable=yes,scrollbars=yes'); + relatedWindows.push(win); + win.focus(); + return false; + } + + function showRelatedObjectLookupPopup(triggeringLink) { + return showAdminPopup(triggeringLink, /^lookup_/, true); + } + + function dismissRelatedLookupPopup(win, chosenId) { + const name = removePopupIndex(win.name); + const elem = document.getElementById(name); + if (elem.classList.contains('vManyToManyRawIdAdminField') && elem.value) { + elem.value += ',' + chosenId; + } else { + document.getElementById(name).value = chosenId; + } + const index = relatedWindows.indexOf(win); + if (index > -1) { + relatedWindows.splice(index, 1); + } + win.close(); + } + + function showRelatedObjectPopup(triggeringLink) { + return showAdminPopup(triggeringLink, /^(change|add|delete)_/, false); + } + + function updateRelatedObjectLinks(triggeringLink) { + const $this = $(triggeringLink); + const siblings = $this.nextAll('.view-related, .change-related, .delete-related'); + if (!siblings.length) { + return; + } + const value = $this.val(); + if (value) { + siblings.each(function() { + const elm = $(this); + elm.attr('href', elm.attr('data-href-template').replace('__fk__', value)); + }); + } else { + siblings.removeAttr('href'); + } + } + + function updateRelatedSelectsOptions(currentSelect, win, objId, newRepr, newId) { + // After create/edit a model from the options next to the current + // select (+ or :pencil:) update ForeignKey PK of the rest of selects + // in the page. + + const path = win.location.pathname; + // Extract the model from the popup url '...//add/' or + // '...///change/' depending the action (add or change). + const modelName = path.split('/')[path.split('/').length - (objId ? 4 : 3)]; + // Exclude autocomplete selects. + const selectsRelated = document.querySelectorAll(`[data-model-ref="${modelName}"] select:not(.admin-autocomplete)`); + + selectsRelated.forEach(function(select) { + if (currentSelect === select) { + return; + } + + let option = select.querySelector(`option[value="${objId}"]`); + + if (!option) { + option = new Option(newRepr, newId); + select.options.add(option); + return; + } + + option.textContent = newRepr; + option.value = newId; + }); + } + + function dismissAddRelatedObjectPopup(win, newId, newRepr) { + const name = removePopupIndex(win.name); + const elem = document.getElementById(name); + if (elem) { + const elemName = elem.nodeName.toUpperCase(); + if (elemName === 'SELECT') { + elem.options[elem.options.length] = new Option(newRepr, newId, true, true); + updateRelatedSelectsOptions(elem, win, null, newRepr, newId); + } else if (elemName === 'INPUT') { + if (elem.classList.contains('vManyToManyRawIdAdminField') && elem.value) { + elem.value += ',' + newId; + } else { + elem.value = newId; + } + } + // Trigger a change event to update related links if required. + $(elem).trigger('change'); + } else { + const toId = name + "_to"; + const o = new Option(newRepr, newId); + SelectBox.add_to_cache(toId, o); + SelectBox.redisplay(toId); + } + const index = relatedWindows.indexOf(win); + if (index > -1) { + relatedWindows.splice(index, 1); + } + win.close(); + } + + function dismissChangeRelatedObjectPopup(win, objId, newRepr, newId) { + const id = removePopupIndex(win.name.replace(/^edit_/, '')); + const selectsSelector = interpolate('#%s, #%s_from, #%s_to', [id, id, id]); + const selects = $(selectsSelector); + selects.find('option').each(function() { + if (this.value === objId) { + this.textContent = newRepr; + this.value = newId; + } + }).trigger('change'); + updateRelatedSelectsOptions(selects[0], win, objId, newRepr, newId); + selects.next().find('.select2-selection__rendered').each(function() { + // The element can have a clear button as a child. + // Use the lastChild to modify only the displayed value. + this.lastChild.textContent = newRepr; + this.title = newRepr; + }); + const index = relatedWindows.indexOf(win); + if (index > -1) { + relatedWindows.splice(index, 1); + } + win.close(); + } + + function dismissDeleteRelatedObjectPopup(win, objId) { + const id = removePopupIndex(win.name.replace(/^delete_/, '')); + const selectsSelector = interpolate('#%s, #%s_from, #%s_to', [id, id, id]); + const selects = $(selectsSelector); + selects.find('option').each(function() { + if (this.value === objId) { + $(this).remove(); + } + }).trigger('change'); + const index = relatedWindows.indexOf(win); + if (index > -1) { + relatedWindows.splice(index, 1); + } + win.close(); + } + + window.showRelatedObjectLookupPopup = showRelatedObjectLookupPopup; + window.dismissRelatedLookupPopup = dismissRelatedLookupPopup; + window.showRelatedObjectPopup = showRelatedObjectPopup; + window.updateRelatedObjectLinks = updateRelatedObjectLinks; + window.dismissAddRelatedObjectPopup = dismissAddRelatedObjectPopup; + window.dismissChangeRelatedObjectPopup = dismissChangeRelatedObjectPopup; + window.dismissDeleteRelatedObjectPopup = dismissDeleteRelatedObjectPopup; + window.dismissChildPopups = dismissChildPopups; + + // Kept for backward compatibility + window.showAddAnotherPopup = showRelatedObjectPopup; + window.dismissAddAnotherPopup = dismissAddRelatedObjectPopup; + + window.addEventListener('unload', function(evt) { + window.dismissChildPopups(); + }); + + $(document).ready(function() { + setPopupIndex(); + $("a[data-popup-opener]").on('click', function(event) { + event.preventDefault(); + opener.dismissRelatedLookupPopup(window, $(this).data("popup-opener")); + }); + $('body').on('click', '.related-widget-wrapper-link[data-popup="yes"]', function(e) { + e.preventDefault(); + if (this.href) { + const event = $.Event('django:show-related', {href: this.href}); + $(this).trigger(event); + if (!event.isDefaultPrevented()) { + showRelatedObjectPopup(this); + } + } + }); + $('body').on('change', '.related-widget-wrapper select', function(e) { + const event = $.Event('django:update-related'); + $(this).trigger(event); + if (!event.isDefaultPrevented()) { + updateRelatedObjectLinks(this); + } + }); + $('.related-widget-wrapper select').trigger('change'); + $('body').on('click', '.related-lookup', function(e) { + e.preventDefault(); + const event = $.Event('django:lookup-related'); + $(this).trigger(event); + if (!event.isDefaultPrevented()) { + showRelatedObjectLookupPopup(this); + } + }); + }); +} diff --git a/gawa/static/admin/js/autocomplete.js b/gawa/static/admin/js/autocomplete.js new file mode 100644 index 0000000..d3daeab --- /dev/null +++ b/gawa/static/admin/js/autocomplete.js @@ -0,0 +1,33 @@ +'use strict'; +{ + const $ = django.jQuery; + + $.fn.djangoAdminSelect2 = function() { + $.each(this, function(i, element) { + $(element).select2({ + ajax: { + data: (params) => { + return { + term: params.term, + page: params.page, + app_label: element.dataset.appLabel, + model_name: element.dataset.modelName, + field_name: element.dataset.fieldName + }; + } + } + }); + }); + return this; + }; + + $(function() { + // Initialize all autocomplete widgets except the one in the template + // form used when a new formset is added. + $('.admin-autocomplete').not('[name*=__prefix__]').djangoAdminSelect2(); + }); + + document.addEventListener('formset:added', (event) => { + $(event.target).find('.admin-autocomplete').djangoAdminSelect2(); + }); +} diff --git a/gawa/static/admin/js/calendar.js b/gawa/static/admin/js/calendar.js new file mode 100644 index 0000000..a62d10a --- /dev/null +++ b/gawa/static/admin/js/calendar.js @@ -0,0 +1,221 @@ +/*global gettext, pgettext, get_format, quickElement, removeChildren*/ +/* +calendar.js - Calendar functions by Adrian Holovaty +depends on core.js for utility functions like removeChildren or quickElement +*/ +'use strict'; +{ + // CalendarNamespace -- Provides a collection of HTML calendar-related helper functions + const CalendarNamespace = { + monthsOfYear: [ + gettext('January'), + gettext('February'), + gettext('March'), + gettext('April'), + gettext('May'), + gettext('June'), + gettext('July'), + gettext('August'), + gettext('September'), + gettext('October'), + gettext('November'), + gettext('December') + ], + monthsOfYearAbbrev: [ + pgettext('abbrev. month January', 'Jan'), + pgettext('abbrev. month February', 'Feb'), + pgettext('abbrev. month March', 'Mar'), + pgettext('abbrev. month April', 'Apr'), + pgettext('abbrev. month May', 'May'), + pgettext('abbrev. month June', 'Jun'), + pgettext('abbrev. month July', 'Jul'), + pgettext('abbrev. month August', 'Aug'), + pgettext('abbrev. month September', 'Sep'), + pgettext('abbrev. month October', 'Oct'), + pgettext('abbrev. month November', 'Nov'), + pgettext('abbrev. month December', 'Dec') + ], + daysOfWeek: [ + pgettext('one letter Sunday', 'S'), + pgettext('one letter Monday', 'M'), + pgettext('one letter Tuesday', 'T'), + pgettext('one letter Wednesday', 'W'), + pgettext('one letter Thursday', 'T'), + pgettext('one letter Friday', 'F'), + pgettext('one letter Saturday', 'S') + ], + firstDayOfWeek: parseInt(get_format('FIRST_DAY_OF_WEEK')), + isLeapYear: function(year) { + return (((year % 4) === 0) && ((year % 100) !== 0 ) || ((year % 400) === 0)); + }, + getDaysInMonth: function(month, year) { + let days; + if (month === 1 || month === 3 || month === 5 || month === 7 || month === 8 || month === 10 || month === 12) { + days = 31; + } + else if (month === 4 || month === 6 || month === 9 || month === 11) { + days = 30; + } + else if (month === 2 && CalendarNamespace.isLeapYear(year)) { + days = 29; + } + else { + days = 28; + } + return days; + }, + draw: function(month, year, div_id, callback, selected) { // month = 1-12, year = 1-9999 + const today = new Date(); + const todayDay = today.getDate(); + const todayMonth = today.getMonth() + 1; + const todayYear = today.getFullYear(); + let todayClass = ''; + + // Use UTC functions here because the date field does not contain time + // and using the UTC function variants prevent the local time offset + // from altering the date, specifically the day field. For example: + // + // ``` + // var x = new Date('2013-10-02'); + // var day = x.getDate(); + // ``` + // + // The day variable above will be 1 instead of 2 in, say, US Pacific time + // zone. + let isSelectedMonth = false; + if (typeof selected !== 'undefined') { + isSelectedMonth = (selected.getUTCFullYear() === year && (selected.getUTCMonth() + 1) === month); + } + + month = parseInt(month); + year = parseInt(year); + const calDiv = document.getElementById(div_id); + removeChildren(calDiv); + const calTable = document.createElement('table'); + quickElement('caption', calTable, CalendarNamespace.monthsOfYear[month - 1] + ' ' + year); + const tableBody = quickElement('tbody', calTable); + + // Draw days-of-week header + let tableRow = quickElement('tr', tableBody); + for (let i = 0; i < 7; i++) { + quickElement('th', tableRow, CalendarNamespace.daysOfWeek[(i + CalendarNamespace.firstDayOfWeek) % 7]); + } + + const startingPos = new Date(year, month - 1, 1 - CalendarNamespace.firstDayOfWeek).getDay(); + const days = CalendarNamespace.getDaysInMonth(month, year); + + let nonDayCell; + + // Draw blanks before first of month + tableRow = quickElement('tr', tableBody); + for (let i = 0; i < startingPos; i++) { + nonDayCell = quickElement('td', tableRow, ' '); + nonDayCell.className = "nonday"; + } + + function calendarMonth(y, m) { + function onClick(e) { + e.preventDefault(); + callback(y, m, this.textContent); + } + return onClick; + } + + // Draw days of month + let currentDay = 1; + for (let i = startingPos; currentDay <= days; i++) { + if (i % 7 === 0 && currentDay !== 1) { + tableRow = quickElement('tr', tableBody); + } + if ((currentDay === todayDay) && (month === todayMonth) && (year === todayYear)) { + todayClass = 'today'; + } else { + todayClass = ''; + } + + // use UTC function; see above for explanation. + if (isSelectedMonth && currentDay === selected.getUTCDate()) { + if (todayClass !== '') { + todayClass += " "; + } + todayClass += "selected"; + } + + const cell = quickElement('td', tableRow, '', 'class', todayClass); + const link = quickElement('a', cell, currentDay, 'href', '#'); + link.addEventListener('click', calendarMonth(year, month)); + currentDay++; + } + + // Draw blanks after end of month (optional, but makes for valid code) + while (tableRow.childNodes.length < 7) { + nonDayCell = quickElement('td', tableRow, ' '); + nonDayCell.className = "nonday"; + } + + calDiv.appendChild(calTable); + } + }; + + // Calendar -- A calendar instance + function Calendar(div_id, callback, selected) { + // div_id (string) is the ID of the element in which the calendar will + // be displayed + // callback (string) is the name of a JavaScript function that will be + // called with the parameters (year, month, day) when a day in the + // calendar is clicked + this.div_id = div_id; + this.callback = callback; + this.today = new Date(); + this.currentMonth = this.today.getMonth() + 1; + this.currentYear = this.today.getFullYear(); + if (typeof selected !== 'undefined') { + this.selected = selected; + } + } + Calendar.prototype = { + drawCurrent: function() { + CalendarNamespace.draw(this.currentMonth, this.currentYear, this.div_id, this.callback, this.selected); + }, + drawDate: function(month, year, selected) { + this.currentMonth = month; + this.currentYear = year; + + if(selected) { + this.selected = selected; + } + + this.drawCurrent(); + }, + drawPreviousMonth: function() { + if (this.currentMonth === 1) { + this.currentMonth = 12; + this.currentYear--; + } + else { + this.currentMonth--; + } + this.drawCurrent(); + }, + drawNextMonth: function() { + if (this.currentMonth === 12) { + this.currentMonth = 1; + this.currentYear++; + } + else { + this.currentMonth++; + } + this.drawCurrent(); + }, + drawPreviousYear: function() { + this.currentYear--; + this.drawCurrent(); + }, + drawNextYear: function() { + this.currentYear++; + this.drawCurrent(); + } + }; + window.Calendar = Calendar; + window.CalendarNamespace = CalendarNamespace; +} diff --git a/gawa/static/admin/js/cancel.js b/gawa/static/admin/js/cancel.js new file mode 100644 index 0000000..3069c6f --- /dev/null +++ b/gawa/static/admin/js/cancel.js @@ -0,0 +1,29 @@ +'use strict'; +{ + // Call function fn when the DOM is loaded and ready. If it is already + // loaded, call the function now. + // http://youmightnotneedjquery.com/#ready + function ready(fn) { + if (document.readyState !== 'loading') { + fn(); + } else { + document.addEventListener('DOMContentLoaded', fn); + } + } + + ready(function() { + function handleClick(event) { + event.preventDefault(); + const params = new URLSearchParams(window.location.search); + if (params.has('_popup')) { + window.close(); // Close the popup. + } else { + window.history.back(); // Otherwise, go back. + } + } + + document.querySelectorAll('.cancel-link').forEach(function(el) { + el.addEventListener('click', handleClick); + }); + }); +} diff --git a/gawa/static/admin/js/change_form.js b/gawa/static/admin/js/change_form.js new file mode 100644 index 0000000..96a4c62 --- /dev/null +++ b/gawa/static/admin/js/change_form.js @@ -0,0 +1,16 @@ +'use strict'; +{ + const inputTags = ['BUTTON', 'INPUT', 'SELECT', 'TEXTAREA']; + const modelName = document.getElementById('django-admin-form-add-constants').dataset.modelName; + if (modelName) { + const form = document.getElementById(modelName + '_form'); + for (const element of form.elements) { + // HTMLElement.offsetParent returns null when the element is not + // rendered. + if (inputTags.includes(element.tagName) && !element.disabled && element.offsetParent) { + element.focus(); + break; + } + } + } +} diff --git a/gawa/static/admin/js/collapse.js b/gawa/static/admin/js/collapse.js new file mode 100644 index 0000000..c6c7b0f --- /dev/null +++ b/gawa/static/admin/js/collapse.js @@ -0,0 +1,43 @@ +/*global gettext*/ +'use strict'; +{ + window.addEventListener('load', function() { + // Add anchor tag for Show/Hide link + const fieldsets = document.querySelectorAll('fieldset.collapse'); + for (const [i, elem] of fieldsets.entries()) { + // Don't hide if fields in this fieldset have errors + if (elem.querySelectorAll('div.errors, ul.errorlist').length === 0) { + elem.classList.add('collapsed'); + const h2 = elem.querySelector('h2'); + const link = document.createElement('a'); + link.id = 'fieldsetcollapser' + i; + link.className = 'collapse-toggle'; + link.href = '#'; + link.textContent = gettext('Show'); + h2.appendChild(document.createTextNode(' (')); + h2.appendChild(link); + h2.appendChild(document.createTextNode(')')); + } + } + // Add toggle to hide/show anchor tag + const toggleFunc = function(ev) { + if (ev.target.matches('.collapse-toggle')) { + ev.preventDefault(); + ev.stopPropagation(); + const fieldset = ev.target.closest('fieldset'); + if (fieldset.classList.contains('collapsed')) { + // Show + ev.target.textContent = gettext('Hide'); + fieldset.classList.remove('collapsed'); + } else { + // Hide + ev.target.textContent = gettext('Show'); + fieldset.classList.add('collapsed'); + } + } + }; + document.querySelectorAll('fieldset.module').forEach(function(el) { + el.addEventListener('click', toggleFunc); + }); + }); +} diff --git a/gawa/static/admin/js/core.js b/gawa/static/admin/js/core.js new file mode 100644 index 0000000..0344a13 --- /dev/null +++ b/gawa/static/admin/js/core.js @@ -0,0 +1,170 @@ +// Core JavaScript helper functions +'use strict'; + +// quickElement(tagType, parentReference [, textInChildNode, attribute, attributeValue ...]); +function quickElement() { + const obj = document.createElement(arguments[0]); + if (arguments[2]) { + const textNode = document.createTextNode(arguments[2]); + obj.appendChild(textNode); + } + const len = arguments.length; + for (let i = 3; i < len; i += 2) { + obj.setAttribute(arguments[i], arguments[i + 1]); + } + arguments[1].appendChild(obj); + return obj; +} + +// "a" is reference to an object +function removeChildren(a) { + while (a.hasChildNodes()) { + a.removeChild(a.lastChild); + } +} + +// ---------------------------------------------------------------------------- +// Find-position functions by PPK +// See https://www.quirksmode.org/js/findpos.html +// ---------------------------------------------------------------------------- +function findPosX(obj) { + let curleft = 0; + if (obj.offsetParent) { + while (obj.offsetParent) { + curleft += obj.offsetLeft - obj.scrollLeft; + obj = obj.offsetParent; + } + } else if (obj.x) { + curleft += obj.x; + } + return curleft; +} + +function findPosY(obj) { + let curtop = 0; + if (obj.offsetParent) { + while (obj.offsetParent) { + curtop += obj.offsetTop - obj.scrollTop; + obj = obj.offsetParent; + } + } else if (obj.y) { + curtop += obj.y; + } + return curtop; +} + +//----------------------------------------------------------------------------- +// Date object extensions +// ---------------------------------------------------------------------------- +{ + Date.prototype.getTwelveHours = function() { + return this.getHours() % 12 || 12; + }; + + Date.prototype.getTwoDigitMonth = function() { + return (this.getMonth() < 9) ? '0' + (this.getMonth() + 1) : (this.getMonth() + 1); + }; + + Date.prototype.getTwoDigitDate = function() { + return (this.getDate() < 10) ? '0' + this.getDate() : this.getDate(); + }; + + Date.prototype.getTwoDigitTwelveHour = function() { + return (this.getTwelveHours() < 10) ? '0' + this.getTwelveHours() : this.getTwelveHours(); + }; + + Date.prototype.getTwoDigitHour = function() { + return (this.getHours() < 10) ? '0' + this.getHours() : this.getHours(); + }; + + Date.prototype.getTwoDigitMinute = function() { + return (this.getMinutes() < 10) ? '0' + this.getMinutes() : this.getMinutes(); + }; + + Date.prototype.getTwoDigitSecond = function() { + return (this.getSeconds() < 10) ? '0' + this.getSeconds() : this.getSeconds(); + }; + + Date.prototype.getAbbrevMonthName = function() { + return typeof window.CalendarNamespace === "undefined" + ? this.getTwoDigitMonth() + : window.CalendarNamespace.monthsOfYearAbbrev[this.getMonth()]; + }; + + Date.prototype.getFullMonthName = function() { + return typeof window.CalendarNamespace === "undefined" + ? this.getTwoDigitMonth() + : window.CalendarNamespace.monthsOfYear[this.getMonth()]; + }; + + Date.prototype.strftime = function(format) { + const fields = { + b: this.getAbbrevMonthName(), + B: this.getFullMonthName(), + c: this.toString(), + d: this.getTwoDigitDate(), + H: this.getTwoDigitHour(), + I: this.getTwoDigitTwelveHour(), + m: this.getTwoDigitMonth(), + M: this.getTwoDigitMinute(), + p: (this.getHours() >= 12) ? 'PM' : 'AM', + S: this.getTwoDigitSecond(), + w: '0' + this.getDay(), + x: this.toLocaleDateString(), + X: this.toLocaleTimeString(), + y: ('' + this.getFullYear()).substr(2, 4), + Y: '' + this.getFullYear(), + '%': '%' + }; + let result = '', i = 0; + while (i < format.length) { + if (format.charAt(i) === '%') { + result += fields[format.charAt(i + 1)]; + ++i; + } + else { + result += format.charAt(i); + } + ++i; + } + return result; + }; + + // ---------------------------------------------------------------------------- + // String object extensions + // ---------------------------------------------------------------------------- + String.prototype.strptime = function(format) { + const split_format = format.split(/[.\-/]/); + const date = this.split(/[.\-/]/); + let i = 0; + let day, month, year; + while (i < split_format.length) { + switch (split_format[i]) { + case "%d": + day = date[i]; + break; + case "%m": + month = date[i] - 1; + break; + case "%Y": + year = date[i]; + break; + case "%y": + // A %y value in the range of [00, 68] is in the current + // century, while [69, 99] is in the previous century, + // according to the Open Group Specification. + if (parseInt(date[i], 10) >= 69) { + year = date[i]; + } else { + year = (new Date(Date.UTC(date[i], 0))).getUTCFullYear() + 100; + } + break; + } + ++i; + } + // Create Date object from UTC since the parsed value is supposed to be + // in UTC, not local time. Also, the calendar uses UTC functions for + // date extraction. + return new Date(Date.UTC(year, month, day)); + }; +} diff --git a/gawa/static/admin/js/filters.js b/gawa/static/admin/js/filters.js new file mode 100644 index 0000000..f5536eb --- /dev/null +++ b/gawa/static/admin/js/filters.js @@ -0,0 +1,30 @@ +/** + * Persist changelist filters state (collapsed/expanded). + */ +'use strict'; +{ + // Init filters. + let filters = JSON.parse(sessionStorage.getItem('django.admin.filtersState')); + + if (!filters) { + filters = {}; + } + + Object.entries(filters).forEach(([key, value]) => { + const detailElement = document.querySelector(`[data-filter-title='${CSS.escape(key)}']`); + + // Check if the filter is present, it could be from other view. + if (detailElement) { + value ? detailElement.setAttribute('open', '') : detailElement.removeAttribute('open'); + } + }); + + // Save filter state when clicks. + const details = document.querySelectorAll('details'); + details.forEach(detail => { + detail.addEventListener('toggle', event => { + filters[`${event.target.dataset.filterTitle}`] = detail.open; + sessionStorage.setItem('django.admin.filtersState', JSON.stringify(filters)); + }); + }); +} diff --git a/gawa/static/admin/js/inlines.js b/gawa/static/admin/js/inlines.js new file mode 100644 index 0000000..e9a1dfe --- /dev/null +++ b/gawa/static/admin/js/inlines.js @@ -0,0 +1,359 @@ +/*global DateTimeShortcuts, SelectFilter*/ +/** + * Django admin inlines + * + * Based on jQuery Formset 1.1 + * @author Stanislaus Madueke (stan DOT madueke AT gmail DOT com) + * @requires jQuery 1.2.6 or later + * + * Copyright (c) 2009, Stanislaus Madueke + * All rights reserved. + * + * Spiced up with Code from Zain Memon's GSoC project 2009 + * and modified for Django by Jannis Leidel, Travis Swicegood and Julien Phalip. + * + * Licensed under the New BSD License + * See: https://opensource.org/licenses/bsd-license.php + */ +'use strict'; +{ + const $ = django.jQuery; + $.fn.formset = function(opts) { + const options = $.extend({}, $.fn.formset.defaults, opts); + const $this = $(this); + const $parent = $this.parent(); + const updateElementIndex = function(el, prefix, ndx) { + const id_regex = new RegExp("(" + prefix + "-(\\d+|__prefix__))"); + const replacement = prefix + "-" + ndx; + if ($(el).prop("for")) { + $(el).prop("for", $(el).prop("for").replace(id_regex, replacement)); + } + if (el.id) { + el.id = el.id.replace(id_regex, replacement); + } + if (el.name) { + el.name = el.name.replace(id_regex, replacement); + } + }; + const totalForms = $("#id_" + options.prefix + "-TOTAL_FORMS").prop("autocomplete", "off"); + let nextIndex = parseInt(totalForms.val(), 10); + const maxForms = $("#id_" + options.prefix + "-MAX_NUM_FORMS").prop("autocomplete", "off"); + const minForms = $("#id_" + options.prefix + "-MIN_NUM_FORMS").prop("autocomplete", "off"); + let addButton; + + /** + * The "Add another MyModel" button below the inline forms. + */ + const addInlineAddButton = function() { + if (addButton === null) { + if ($this.prop("tagName") === "TR") { + // If forms are laid out as table rows, insert the + // "add" button in a new table row: + const numCols = $this.eq(-1).children().length; + $parent.append('' + options.addText + ""); + addButton = $parent.find("tr:last a"); + } else { + // Otherwise, insert it immediately after the last form: + $this.filter(":last").after('"); + addButton = $this.filter(":last").next().find("a"); + } + } + addButton.on('click', addInlineClickHandler); + }; + + const addInlineClickHandler = function(e) { + e.preventDefault(); + const template = $("#" + options.prefix + "-empty"); + const row = template.clone(true); + row.removeClass(options.emptyCssClass) + .addClass(options.formCssClass) + .attr("id", options.prefix + "-" + nextIndex); + addInlineDeleteButton(row); + row.find("*").each(function() { + updateElementIndex(this, options.prefix, totalForms.val()); + }); + // Insert the new form when it has been fully edited. + row.insertBefore($(template)); + // Update number of total forms. + $(totalForms).val(parseInt(totalForms.val(), 10) + 1); + nextIndex += 1; + // Hide the add button if there's a limit and it's been reached. + if ((maxForms.val() !== '') && (maxForms.val() - totalForms.val()) <= 0) { + addButton.parent().hide(); + } + // Show the remove buttons if there are more than min_num. + toggleDeleteButtonVisibility(row.closest('.inline-group')); + + // Pass the new form to the post-add callback, if provided. + if (options.added) { + options.added(row); + } + row.get(0).dispatchEvent(new CustomEvent("formset:added", { + bubbles: true, + detail: { + formsetName: options.prefix + } + })); + }; + + /** + * The "X" button that is part of every unsaved inline. + * (When saved, it is replaced with a "Delete" checkbox.) + */ + const addInlineDeleteButton = function(row) { + if (row.is("tr")) { + // If the forms are laid out in table rows, insert + // the remove button into the last table cell: + row.children(":last").append('"); + } else if (row.is("ul") || row.is("ol")) { + // If they're laid out as an ordered/unordered list, + // insert an
  • after the last list item: + row.append('
  • ' + options.deleteText + "
  • "); + } else { + // Otherwise, just insert the remove button as the + // last child element of the form's container: + row.children(":first").append('' + options.deleteText + ""); + } + // Add delete handler for each row. + row.find("a." + options.deleteCssClass).on('click', inlineDeleteHandler.bind(this)); + }; + + const inlineDeleteHandler = function(e1) { + e1.preventDefault(); + const deleteButton = $(e1.target); + const row = deleteButton.closest('.' + options.formCssClass); + const inlineGroup = row.closest('.inline-group'); + // Remove the parent form containing this button, + // and also remove the relevant row with non-field errors: + const prevRow = row.prev(); + if (prevRow.length && prevRow.hasClass('row-form-errors')) { + prevRow.remove(); + } + row.remove(); + nextIndex -= 1; + // Pass the deleted form to the post-delete callback, if provided. + if (options.removed) { + options.removed(row); + } + document.dispatchEvent(new CustomEvent("formset:removed", { + detail: { + formsetName: options.prefix + } + })); + // Update the TOTAL_FORMS form count. + const forms = $("." + options.formCssClass); + $("#id_" + options.prefix + "-TOTAL_FORMS").val(forms.length); + // Show add button again once below maximum number. + if ((maxForms.val() === '') || (maxForms.val() - forms.length) > 0) { + addButton.parent().show(); + } + // Hide the remove buttons if at min_num. + toggleDeleteButtonVisibility(inlineGroup); + // Also, update names and ids for all remaining form controls so + // they remain in sequence: + let i, formCount; + const updateElementCallback = function() { + updateElementIndex(this, options.prefix, i); + }; + for (i = 0, formCount = forms.length; i < formCount; i++) { + updateElementIndex($(forms).get(i), options.prefix, i); + $(forms.get(i)).find("*").each(updateElementCallback); + } + }; + + const toggleDeleteButtonVisibility = function(inlineGroup) { + if ((minForms.val() !== '') && (minForms.val() - totalForms.val()) >= 0) { + inlineGroup.find('.inline-deletelink').hide(); + } else { + inlineGroup.find('.inline-deletelink').show(); + } + }; + + $this.each(function(i) { + $(this).not("." + options.emptyCssClass).addClass(options.formCssClass); + }); + + // Create the delete buttons for all unsaved inlines: + $this.filter('.' + options.formCssClass + ':not(.has_original):not(.' + options.emptyCssClass + ')').each(function() { + addInlineDeleteButton($(this)); + }); + toggleDeleteButtonVisibility($this); + + // Create the add button, initially hidden. + addButton = options.addButton; + addInlineAddButton(); + + // Show the add button if allowed to add more items. + // Note that max_num = None translates to a blank string. + const showAddButton = maxForms.val() === '' || (maxForms.val() - totalForms.val()) > 0; + if ($this.length && showAddButton) { + addButton.parent().show(); + } else { + addButton.parent().hide(); + } + + return this; + }; + + /* Setup plugin defaults */ + $.fn.formset.defaults = { + prefix: "form", // The form prefix for your django formset + addText: "add another", // Text for the add link + deleteText: "remove", // Text for the delete link + addCssClass: "add-row", // CSS class applied to the add link + deleteCssClass: "delete-row", // CSS class applied to the delete link + emptyCssClass: "empty-row", // CSS class applied to the empty row + formCssClass: "dynamic-form", // CSS class applied to each form in a formset + added: null, // Function called each time a new form is added + removed: null, // Function called each time a form is deleted + addButton: null // Existing add button to use + }; + + + // Tabular inlines --------------------------------------------------------- + $.fn.tabularFormset = function(selector, options) { + const $rows = $(this); + + const reinitDateTimeShortCuts = function() { + // Reinitialize the calendar and clock widgets by force + if (typeof DateTimeShortcuts !== "undefined") { + $(".datetimeshortcuts").remove(); + DateTimeShortcuts.init(); + } + }; + + const updateSelectFilter = function() { + // If any SelectFilter widgets are a part of the new form, + // instantiate a new SelectFilter instance for it. + if (typeof SelectFilter !== 'undefined') { + $('.selectfilter').each(function(index, value) { + SelectFilter.init(value.id, this.dataset.fieldName, false); + }); + $('.selectfilterstacked').each(function(index, value) { + SelectFilter.init(value.id, this.dataset.fieldName, true); + }); + } + }; + + const initPrepopulatedFields = function(row) { + row.find('.prepopulated_field').each(function() { + const field = $(this), + input = field.find('input, select, textarea'), + dependency_list = input.data('dependency_list') || [], + dependencies = []; + $.each(dependency_list, function(i, field_name) { + dependencies.push('#' + row.find('.field-' + field_name).find('input, select, textarea').attr('id')); + }); + if (dependencies.length) { + input.prepopulate(dependencies, input.attr('maxlength')); + } + }); + }; + + $rows.formset({ + prefix: options.prefix, + addText: options.addText, + formCssClass: "dynamic-" + options.prefix, + deleteCssClass: "inline-deletelink", + deleteText: options.deleteText, + emptyCssClass: "empty-form", + added: function(row) { + initPrepopulatedFields(row); + reinitDateTimeShortCuts(); + updateSelectFilter(); + }, + addButton: options.addButton + }); + + return $rows; + }; + + // Stacked inlines --------------------------------------------------------- + $.fn.stackedFormset = function(selector, options) { + const $rows = $(this); + const updateInlineLabel = function(row) { + $(selector).find(".inline_label").each(function(i) { + const count = i + 1; + $(this).html($(this).html().replace(/(#\d+)/g, "#" + count)); + }); + }; + + const reinitDateTimeShortCuts = function() { + // Reinitialize the calendar and clock widgets by force, yuck. + if (typeof DateTimeShortcuts !== "undefined") { + $(".datetimeshortcuts").remove(); + DateTimeShortcuts.init(); + } + }; + + const updateSelectFilter = function() { + // If any SelectFilter widgets were added, instantiate a new instance. + if (typeof SelectFilter !== "undefined") { + $(".selectfilter").each(function(index, value) { + SelectFilter.init(value.id, this.dataset.fieldName, false); + }); + $(".selectfilterstacked").each(function(index, value) { + SelectFilter.init(value.id, this.dataset.fieldName, true); + }); + } + }; + + const initPrepopulatedFields = function(row) { + row.find('.prepopulated_field').each(function() { + const field = $(this), + input = field.find('input, select, textarea'), + dependency_list = input.data('dependency_list') || [], + dependencies = []; + $.each(dependency_list, function(i, field_name) { + // Dependency in a fieldset. + let field_element = row.find('.form-row .field-' + field_name); + // Dependency without a fieldset. + if (!field_element.length) { + field_element = row.find('.form-row.field-' + field_name); + } + dependencies.push('#' + field_element.find('input, select, textarea').attr('id')); + }); + if (dependencies.length) { + input.prepopulate(dependencies, input.attr('maxlength')); + } + }); + }; + + $rows.formset({ + prefix: options.prefix, + addText: options.addText, + formCssClass: "dynamic-" + options.prefix, + deleteCssClass: "inline-deletelink", + deleteText: options.deleteText, + emptyCssClass: "empty-form", + removed: updateInlineLabel, + added: function(row) { + initPrepopulatedFields(row); + reinitDateTimeShortCuts(); + updateSelectFilter(); + updateInlineLabel(row); + }, + addButton: options.addButton + }); + + return $rows; + }; + + $(document).ready(function() { + $(".js-inline-admin-formset").each(function() { + const data = $(this).data(), + inlineOptions = data.inlineFormset; + let selector; + switch(data.inlineType) { + case "stacked": + selector = inlineOptions.name + "-group .inline-related"; + $(selector).stackedFormset(selector, inlineOptions.options); + break; + case "tabular": + selector = inlineOptions.name + "-group .tabular.inline-related tbody:first > tr.form-row"; + $(selector).tabularFormset(selector, inlineOptions.options); + break; + } + }); + }); +} diff --git a/gawa/static/admin/js/jquery.init.js b/gawa/static/admin/js/jquery.init.js new file mode 100644 index 0000000..f40b27f --- /dev/null +++ b/gawa/static/admin/js/jquery.init.js @@ -0,0 +1,8 @@ +/*global jQuery:false*/ +'use strict'; +/* Puts the included jQuery into our own namespace using noConflict and passing + * it 'true'. This ensures that the included jQuery doesn't pollute the global + * namespace (i.e. this preserves pre-existing values for both window.$ and + * window.jQuery). + */ +window.django = {jQuery: jQuery.noConflict(true)}; diff --git a/gawa/static/admin/js/nav_sidebar.js b/gawa/static/admin/js/nav_sidebar.js new file mode 100644 index 0000000..7e735db --- /dev/null +++ b/gawa/static/admin/js/nav_sidebar.js @@ -0,0 +1,79 @@ +'use strict'; +{ + const toggleNavSidebar = document.getElementById('toggle-nav-sidebar'); + if (toggleNavSidebar !== null) { + const navSidebar = document.getElementById('nav-sidebar'); + const main = document.getElementById('main'); + let navSidebarIsOpen = localStorage.getItem('django.admin.navSidebarIsOpen'); + if (navSidebarIsOpen === null) { + navSidebarIsOpen = 'true'; + } + main.classList.toggle('shifted', navSidebarIsOpen === 'true'); + navSidebar.setAttribute('aria-expanded', navSidebarIsOpen); + + toggleNavSidebar.addEventListener('click', function() { + if (navSidebarIsOpen === 'true') { + navSidebarIsOpen = 'false'; + } else { + navSidebarIsOpen = 'true'; + } + localStorage.setItem('django.admin.navSidebarIsOpen', navSidebarIsOpen); + main.classList.toggle('shifted'); + navSidebar.setAttribute('aria-expanded', navSidebarIsOpen); + }); + } + + function initSidebarQuickFilter() { + const options = []; + const navSidebar = document.getElementById('nav-sidebar'); + if (!navSidebar) { + return; + } + navSidebar.querySelectorAll('th[scope=row] a').forEach((container) => { + options.push({title: container.innerHTML, node: container}); + }); + + function checkValue(event) { + let filterValue = event.target.value; + if (filterValue) { + filterValue = filterValue.toLowerCase(); + } + if (event.key === 'Escape') { + filterValue = ''; + event.target.value = ''; // clear input + } + let matches = false; + for (const o of options) { + let displayValue = ''; + if (filterValue) { + if (o.title.toLowerCase().indexOf(filterValue) === -1) { + displayValue = 'none'; + } else { + matches = true; + } + } + // show/hide parent + o.node.parentNode.parentNode.style.display = displayValue; + } + if (!filterValue || matches) { + event.target.classList.remove('no-results'); + } else { + event.target.classList.add('no-results'); + } + sessionStorage.setItem('django.admin.navSidebarFilterValue', filterValue); + } + + const nav = document.getElementById('nav-filter'); + nav.addEventListener('change', checkValue, false); + nav.addEventListener('input', checkValue, false); + nav.addEventListener('keyup', checkValue, false); + + const storedValue = sessionStorage.getItem('django.admin.navSidebarFilterValue'); + if (storedValue) { + nav.value = storedValue; + checkValue({target: nav, key: ''}); + } + } + window.initSidebarQuickFilter = initSidebarQuickFilter; + initSidebarQuickFilter(); +} diff --git a/gawa/static/admin/js/popup_response.js b/gawa/static/admin/js/popup_response.js new file mode 100644 index 0000000..2b1d3dd --- /dev/null +++ b/gawa/static/admin/js/popup_response.js @@ -0,0 +1,16 @@ +/*global opener */ +'use strict'; +{ + const initData = JSON.parse(document.getElementById('django-admin-popup-response-constants').dataset.popupResponse); + switch(initData.action) { + case 'change': + opener.dismissChangeRelatedObjectPopup(window, initData.value, initData.obj, initData.new_value); + break; + case 'delete': + opener.dismissDeleteRelatedObjectPopup(window, initData.value); + break; + default: + opener.dismissAddRelatedObjectPopup(window, initData.value, initData.obj); + break; + } +} diff --git a/gawa/static/admin/js/prepopulate.js b/gawa/static/admin/js/prepopulate.js new file mode 100644 index 0000000..89e95ab --- /dev/null +++ b/gawa/static/admin/js/prepopulate.js @@ -0,0 +1,43 @@ +/*global URLify*/ +'use strict'; +{ + const $ = django.jQuery; + $.fn.prepopulate = function(dependencies, maxLength, allowUnicode) { + /* + Depends on urlify.js + Populates a selected field with the values of the dependent fields, + URLifies and shortens the string. + dependencies - array of dependent fields ids + maxLength - maximum length of the URLify'd string + allowUnicode - Unicode support of the URLify'd string + */ + return this.each(function() { + const prepopulatedField = $(this); + + const populate = function() { + // Bail if the field's value has been changed by the user + if (prepopulatedField.data('_changed')) { + return; + } + + const values = []; + $.each(dependencies, function(i, field) { + field = $(field); + if (field.val().length > 0) { + values.push(field.val()); + } + }); + prepopulatedField.val(URLify(values.join(' '), maxLength, allowUnicode)); + }; + + prepopulatedField.data('_changed', false); + prepopulatedField.on('change', function() { + prepopulatedField.data('_changed', true); + }); + + if (!prepopulatedField.val()) { + $(dependencies.join(',')).on('keyup change focus', populate); + } + }); + }; +} diff --git a/gawa/static/admin/js/prepopulate_init.js b/gawa/static/admin/js/prepopulate_init.js new file mode 100644 index 0000000..a58841f --- /dev/null +++ b/gawa/static/admin/js/prepopulate_init.js @@ -0,0 +1,15 @@ +'use strict'; +{ + const $ = django.jQuery; + const fields = $('#django-admin-prepopulated-fields-constants').data('prepopulatedFields'); + $.each(fields, function(index, field) { + $( + '.empty-form .form-row .field-' + field.name + + ', .empty-form.form-row .field-' + field.name + + ', .empty-form .form-row.field-' + field.name + ).addClass('prepopulated_field'); + $(field.id).data('dependency_list', field.dependency_list).prepopulate( + field.dependency_ids, field.maxLength, field.allowUnicode + ); + }); +} diff --git a/gawa/static/admin/js/theme.js b/gawa/static/admin/js/theme.js new file mode 100644 index 0000000..794cd15 --- /dev/null +++ b/gawa/static/admin/js/theme.js @@ -0,0 +1,56 @@ +'use strict'; +{ + window.addEventListener('load', function(e) { + + function setTheme(mode) { + if (mode !== "light" && mode !== "dark" && mode !== "auto") { + console.error(`Got invalid theme mode: ${mode}. Resetting to auto.`); + mode = "auto"; + } + document.documentElement.dataset.theme = mode; + localStorage.setItem("theme", mode); + } + + function cycleTheme() { + const currentTheme = localStorage.getItem("theme") || "auto"; + const prefersDark = window.matchMedia("(prefers-color-scheme: dark)").matches; + + if (prefersDark) { + // Auto (dark) -> Light -> Dark + if (currentTheme === "auto") { + setTheme("light"); + } else if (currentTheme === "light") { + setTheme("dark"); + } else { + setTheme("auto"); + } + } else { + // Auto (light) -> Dark -> Light + if (currentTheme === "auto") { + setTheme("dark"); + } else if (currentTheme === "dark") { + setTheme("light"); + } else { + setTheme("auto"); + } + } + } + + function initTheme() { + // set theme defined in localStorage if there is one, or fallback to auto mode + const currentTheme = localStorage.getItem("theme"); + currentTheme ? setTheme(currentTheme) : setTheme("auto"); + } + + function setupTheme() { + // Attach event handlers for toggling themes + const buttons = document.getElementsByClassName("theme-toggle"); + Array.from(buttons).forEach((btn) => { + btn.addEventListener("click", cycleTheme); + }); + initTheme(); + } + + setupTheme(); + }); +} diff --git a/gawa/static/admin/js/urlify.js b/gawa/static/admin/js/urlify.js new file mode 100644 index 0000000..9fc0409 --- /dev/null +++ b/gawa/static/admin/js/urlify.js @@ -0,0 +1,169 @@ +/*global XRegExp*/ +'use strict'; +{ + const LATIN_MAP = { + 'À': 'A', 'Á': 'A', 'Â': 'A', 'Ã': 'A', 'Ä': 'A', 'Å': 'A', 'Æ': 'AE', + 'Ç': 'C', 'È': 'E', 'É': 'E', 'Ê': 'E', 'Ë': 'E', 'Ì': 'I', 'Í': 'I', + 'Î': 'I', 'Ï': 'I', 'Ð': 'D', 'Ñ': 'N', 'Ò': 'O', 'Ó': 'O', 'Ô': 'O', + 'Õ': 'O', 'Ö': 'O', 'Ő': 'O', 'Ø': 'O', 'Ù': 'U', 'Ú': 'U', 'Û': 'U', + 'Ü': 'U', 'Ű': 'U', 'Ý': 'Y', 'Þ': 'TH', 'Ÿ': 'Y', 'ß': 'ss', 'à': 'a', + 'á': 'a', 'â': 'a', 'ã': 'a', 'ä': 'a', 'å': 'a', 'æ': 'ae', 'ç': 'c', + 'è': 'e', 'é': 'e', 'ê': 'e', 'ë': 'e', 'ì': 'i', 'í': 'i', 'î': 'i', + 'ï': 'i', 'ð': 'd', 'ñ': 'n', 'ò': 'o', 'ó': 'o', 'ô': 'o', 'õ': 'o', + 'ö': 'o', 'ő': 'o', 'ø': 'o', 'ù': 'u', 'ú': 'u', 'û': 'u', 'ü': 'u', + 'ű': 'u', 'ý': 'y', 'þ': 'th', 'ÿ': 'y' + }; + const LATIN_SYMBOLS_MAP = { + '©': '(c)' + }; + const GREEK_MAP = { + 'α': 'a', 'β': 'b', 'γ': 'g', 'δ': 'd', 'ε': 'e', 'ζ': 'z', 'η': 'h', + 'θ': '8', 'ι': 'i', 'κ': 'k', 'λ': 'l', 'μ': 'm', 'ν': 'n', 'ξ': '3', + 'ο': 'o', 'π': 'p', 'ρ': 'r', 'σ': 's', 'τ': 't', 'υ': 'y', 'φ': 'f', + 'χ': 'x', 'ψ': 'ps', 'ω': 'w', 'ά': 'a', 'έ': 'e', 'ί': 'i', 'ό': 'o', + 'ύ': 'y', 'ή': 'h', 'ώ': 'w', 'ς': 's', 'ϊ': 'i', 'ΰ': 'y', 'ϋ': 'y', + 'ΐ': 'i', 'Α': 'A', 'Β': 'B', 'Γ': 'G', 'Δ': 'D', 'Ε': 'E', 'Ζ': 'Z', + 'Η': 'H', 'Θ': '8', 'Ι': 'I', 'Κ': 'K', 'Λ': 'L', 'Μ': 'M', 'Ν': 'N', + 'Ξ': '3', 'Ο': 'O', 'Π': 'P', 'Ρ': 'R', 'Σ': 'S', 'Τ': 'T', 'Υ': 'Y', + 'Φ': 'F', 'Χ': 'X', 'Ψ': 'PS', 'Ω': 'W', 'Ά': 'A', 'Έ': 'E', 'Ί': 'I', + 'Ό': 'O', 'Ύ': 'Y', 'Ή': 'H', 'Ώ': 'W', 'Ϊ': 'I', 'Ϋ': 'Y' + }; + const TURKISH_MAP = { + 'ş': 's', 'Ş': 'S', 'ı': 'i', 'İ': 'I', 'ç': 'c', 'Ç': 'C', 'ü': 'u', + 'Ü': 'U', 'ö': 'o', 'Ö': 'O', 'ğ': 'g', 'Ğ': 'G' + }; + const ROMANIAN_MAP = { + 'ă': 'a', 'î': 'i', 'ș': 's', 'ț': 't', 'â': 'a', + 'Ă': 'A', 'Î': 'I', 'Ș': 'S', 'Ț': 'T', 'Â': 'A' + }; + const RUSSIAN_MAP = { + 'а': 'a', 'б': 'b', 'в': 'v', 'г': 'g', 'д': 'd', 'е': 'e', 'ё': 'yo', + 'ж': 'zh', 'з': 'z', 'и': 'i', 'й': 'j', 'к': 'k', 'л': 'l', 'м': 'm', + 'н': 'n', 'о': 'o', 'п': 'p', 'р': 'r', 'с': 's', 'т': 't', 'у': 'u', + 'ф': 'f', 'х': 'h', 'ц': 'c', 'ч': 'ch', 'ш': 'sh', 'щ': 'sh', 'ъ': '', + 'ы': 'y', 'ь': '', 'э': 'e', 'ю': 'yu', 'я': 'ya', + 'А': 'A', 'Б': 'B', 'В': 'V', 'Г': 'G', 'Д': 'D', 'Е': 'E', 'Ё': 'Yo', + 'Ж': 'Zh', 'З': 'Z', 'И': 'I', 'Й': 'J', 'К': 'K', 'Л': 'L', 'М': 'M', + 'Н': 'N', 'О': 'O', 'П': 'P', 'Р': 'R', 'С': 'S', 'Т': 'T', 'У': 'U', + 'Ф': 'F', 'Х': 'H', 'Ц': 'C', 'Ч': 'Ch', 'Ш': 'Sh', 'Щ': 'Sh', 'Ъ': '', + 'Ы': 'Y', 'Ь': '', 'Э': 'E', 'Ю': 'Yu', 'Я': 'Ya' + }; + const UKRAINIAN_MAP = { + 'Є': 'Ye', 'І': 'I', 'Ї': 'Yi', 'Ґ': 'G', 'є': 'ye', 'і': 'i', + 'ї': 'yi', 'ґ': 'g' + }; + const CZECH_MAP = { + 'č': 'c', 'ď': 'd', 'ě': 'e', 'ň': 'n', 'ř': 'r', 'š': 's', 'ť': 't', + 'ů': 'u', 'ž': 'z', 'Č': 'C', 'Ď': 'D', 'Ě': 'E', 'Ň': 'N', 'Ř': 'R', + 'Š': 'S', 'Ť': 'T', 'Ů': 'U', 'Ž': 'Z' + }; + const SLOVAK_MAP = { + 'á': 'a', 'ä': 'a', 'č': 'c', 'ď': 'd', 'é': 'e', 'í': 'i', 'ľ': 'l', + 'ĺ': 'l', 'ň': 'n', 'ó': 'o', 'ô': 'o', 'ŕ': 'r', 'š': 's', 'ť': 't', + 'ú': 'u', 'ý': 'y', 'ž': 'z', + 'Á': 'a', 'Ä': 'A', 'Č': 'C', 'Ď': 'D', 'É': 'E', 'Í': 'I', 'Ľ': 'L', + 'Ĺ': 'L', 'Ň': 'N', 'Ó': 'O', 'Ô': 'O', 'Ŕ': 'R', 'Š': 'S', 'Ť': 'T', + 'Ú': 'U', 'Ý': 'Y', 'Ž': 'Z' + }; + const POLISH_MAP = { + 'ą': 'a', 'ć': 'c', 'ę': 'e', 'ł': 'l', 'ń': 'n', 'ó': 'o', 'ś': 's', + 'ź': 'z', 'ż': 'z', + 'Ą': 'A', 'Ć': 'C', 'Ę': 'E', 'Ł': 'L', 'Ń': 'N', 'Ó': 'O', 'Ś': 'S', + 'Ź': 'Z', 'Ż': 'Z' + }; + const LATVIAN_MAP = { + 'ā': 'a', 'č': 'c', 'ē': 'e', 'ģ': 'g', 'ī': 'i', 'ķ': 'k', 'ļ': 'l', + 'ņ': 'n', 'š': 's', 'ū': 'u', 'ž': 'z', + 'Ā': 'A', 'Č': 'C', 'Ē': 'E', 'Ģ': 'G', 'Ī': 'I', 'Ķ': 'K', 'Ļ': 'L', + 'Ņ': 'N', 'Š': 'S', 'Ū': 'U', 'Ž': 'Z' + }; + const ARABIC_MAP = { + 'أ': 'a', 'ب': 'b', 'ت': 't', 'ث': 'th', 'ج': 'g', 'ح': 'h', 'خ': 'kh', 'د': 'd', + 'ذ': 'th', 'ر': 'r', 'ز': 'z', 'س': 's', 'ش': 'sh', 'ص': 's', 'ض': 'd', 'ط': 't', + 'ظ': 'th', 'ع': 'aa', 'غ': 'gh', 'ف': 'f', 'ق': 'k', 'ك': 'k', 'ل': 'l', 'م': 'm', + 'ن': 'n', 'ه': 'h', 'و': 'o', 'ي': 'y' + }; + const LITHUANIAN_MAP = { + 'ą': 'a', 'č': 'c', 'ę': 'e', 'ė': 'e', 'į': 'i', 'š': 's', 'ų': 'u', + 'ū': 'u', 'ž': 'z', + 'Ą': 'A', 'Č': 'C', 'Ę': 'E', 'Ė': 'E', 'Į': 'I', 'Š': 'S', 'Ų': 'U', + 'Ū': 'U', 'Ž': 'Z' + }; + const SERBIAN_MAP = { + 'ђ': 'dj', 'ј': 'j', 'љ': 'lj', 'њ': 'nj', 'ћ': 'c', 'џ': 'dz', + 'đ': 'dj', 'Ђ': 'Dj', 'Ј': 'j', 'Љ': 'Lj', 'Њ': 'Nj', 'Ћ': 'C', + 'Џ': 'Dz', 'Đ': 'Dj' + }; + const AZERBAIJANI_MAP = { + 'ç': 'c', 'ə': 'e', 'ğ': 'g', 'ı': 'i', 'ö': 'o', 'ş': 's', 'ü': 'u', + 'Ç': 'C', 'Ə': 'E', 'Ğ': 'G', 'İ': 'I', 'Ö': 'O', 'Ş': 'S', 'Ü': 'U' + }; + const GEORGIAN_MAP = { + 'ა': 'a', 'ბ': 'b', 'გ': 'g', 'დ': 'd', 'ე': 'e', 'ვ': 'v', 'ზ': 'z', + 'თ': 't', 'ი': 'i', 'კ': 'k', 'ლ': 'l', 'მ': 'm', 'ნ': 'n', 'ო': 'o', + 'პ': 'p', 'ჟ': 'j', 'რ': 'r', 'ს': 's', 'ტ': 't', 'უ': 'u', 'ფ': 'f', + 'ქ': 'q', 'ღ': 'g', 'ყ': 'y', 'შ': 'sh', 'ჩ': 'ch', 'ც': 'c', 'ძ': 'dz', + 'წ': 'w', 'ჭ': 'ch', 'ხ': 'x', 'ჯ': 'j', 'ჰ': 'h' + }; + + const ALL_DOWNCODE_MAPS = [ + LATIN_MAP, + LATIN_SYMBOLS_MAP, + GREEK_MAP, + TURKISH_MAP, + ROMANIAN_MAP, + RUSSIAN_MAP, + UKRAINIAN_MAP, + CZECH_MAP, + SLOVAK_MAP, + POLISH_MAP, + LATVIAN_MAP, + ARABIC_MAP, + LITHUANIAN_MAP, + SERBIAN_MAP, + AZERBAIJANI_MAP, + GEORGIAN_MAP + ]; + + const Downcoder = { + 'Initialize': function() { + if (Downcoder.map) { // already made + return; + } + Downcoder.map = {}; + for (const lookup of ALL_DOWNCODE_MAPS) { + Object.assign(Downcoder.map, lookup); + } + Downcoder.regex = new RegExp(Object.keys(Downcoder.map).join('|'), 'g'); + } + }; + + function downcode(slug) { + Downcoder.Initialize(); + return slug.replace(Downcoder.regex, function(m) { + return Downcoder.map[m]; + }); + } + + + function URLify(s, num_chars, allowUnicode) { + // changes, e.g., "Petty theft" to "petty-theft" + if (!allowUnicode) { + s = downcode(s); + } + s = s.toLowerCase(); // convert to lowercase + // if downcode doesn't hit, the char will be stripped here + if (allowUnicode) { + // Keep Unicode letters including both lowercase and uppercase + // characters, whitespace, and dash; remove other characters. + s = XRegExp.replace(s, XRegExp('[^-_\\p{L}\\p{N}\\s]', 'g'), ''); + } else { + s = s.replace(/[^-\w\s]/g, ''); // remove unneeded chars + } + s = s.replace(/^\s+|\s+$/g, ''); // trim leading/trailing spaces + s = s.replace(/[-\s]+/g, '-'); // convert spaces to hyphens + s = s.substring(0, num_chars); // trim to first num_chars chars + return s.replace(/-+$/g, ''); // trim any trailing hyphens + } + window.URLify = URLify; +} diff --git a/gawa/static/admin/js/vendor/jquery/LICENSE.txt b/gawa/static/admin/js/vendor/jquery/LICENSE.txt new file mode 100644 index 0000000..f642c3f --- /dev/null +++ b/gawa/static/admin/js/vendor/jquery/LICENSE.txt @@ -0,0 +1,20 @@ +Copyright OpenJS Foundation and other contributors, https://openjsf.org/ + +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. diff --git a/gawa/static/admin/js/vendor/jquery/jquery.js b/gawa/static/admin/js/vendor/jquery/jquery.js new file mode 100644 index 0000000..7f35c11 --- /dev/null +++ b/gawa/static/admin/js/vendor/jquery/jquery.js @@ -0,0 +1,10965 @@ +/*! + * jQuery JavaScript Library v3.6.4 + * https://jquery.com/ + * + * Includes Sizzle.js + * https://sizzlejs.com/ + * + * Copyright OpenJS Foundation and other contributors + * Released under the MIT license + * https://jquery.org/license + * + * Date: 2023-03-08T15:28Z + */ +( function( global, factory ) { + + "use strict"; + + if ( typeof module === "object" && typeof module.exports === "object" ) { + + // For CommonJS and CommonJS-like environments where a proper `window` + // is present, execute the factory and get jQuery. + // For environments that do not have a `window` with a `document` + // (such as Node.js), expose a factory as module.exports. + // This accentuates the need for the creation of a real `window`. + // e.g. var jQuery = require("jquery")(window); + // See ticket trac-14549 for more info. + module.exports = global.document ? + factory( global, true ) : + function( w ) { + if ( !w.document ) { + throw new Error( "jQuery requires a window with a document" ); + } + return factory( w ); + }; + } else { + factory( global ); + } + +// Pass this if window is not defined yet +} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { + +// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 +// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode +// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common +// enough that all such attempts are guarded in a try block. +"use strict"; + +var arr = []; + +var getProto = Object.getPrototypeOf; + +var slice = arr.slice; + +var flat = arr.flat ? function( array ) { + return arr.flat.call( array ); +} : function( array ) { + return arr.concat.apply( [], array ); +}; + + +var push = arr.push; + +var indexOf = arr.indexOf; + +var class2type = {}; + +var toString = class2type.toString; + +var hasOwn = class2type.hasOwnProperty; + +var fnToString = hasOwn.toString; + +var ObjectFunctionString = fnToString.call( Object ); + +var support = {}; + +var isFunction = function isFunction( obj ) { + + // Support: Chrome <=57, Firefox <=52 + // In some browsers, typeof returns "function" for HTML elements + // (i.e., `typeof document.createElement( "object" ) === "function"`). + // We don't want to classify *any* DOM node as a function. + // Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5 + // Plus for old WebKit, typeof returns "function" for HTML collections + // (e.g., `typeof document.getElementsByTagName("div") === "function"`). (gh-4756) + return typeof obj === "function" && typeof obj.nodeType !== "number" && + typeof obj.item !== "function"; + }; + + +var isWindow = function isWindow( obj ) { + return obj != null && obj === obj.window; + }; + + +var document = window.document; + + + + var preservedScriptAttributes = { + type: true, + src: true, + nonce: true, + noModule: true + }; + + function DOMEval( code, node, doc ) { + doc = doc || document; + + var i, val, + script = doc.createElement( "script" ); + + script.text = code; + if ( node ) { + for ( i in preservedScriptAttributes ) { + + // Support: Firefox 64+, Edge 18+ + // Some browsers don't support the "nonce" property on scripts. + // On the other hand, just using `getAttribute` is not enough as + // the `nonce` attribute is reset to an empty string whenever it + // becomes browsing-context connected. + // See https://github.com/whatwg/html/issues/2369 + // See https://html.spec.whatwg.org/#nonce-attributes + // The `node.getAttribute` check was added for the sake of + // `jQuery.globalEval` so that it can fake a nonce-containing node + // via an object. + val = node[ i ] || node.getAttribute && node.getAttribute( i ); + if ( val ) { + script.setAttribute( i, val ); + } + } + } + doc.head.appendChild( script ).parentNode.removeChild( script ); + } + + +function toType( obj ) { + if ( obj == null ) { + return obj + ""; + } + + // Support: Android <=2.3 only (functionish RegExp) + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call( obj ) ] || "object" : + typeof obj; +} +/* global Symbol */ +// Defining this global in .eslintrc.json would create a danger of using the global +// unguarded in another place, it seems safer to define global only for this module + + + +var + version = "3.6.4", + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + + // The jQuery object is actually just the init constructor 'enhanced' + // Need init if jQuery is called (just allow error to be thrown if not included) + return new jQuery.fn.init( selector, context ); + }; + +jQuery.fn = jQuery.prototype = { + + // The current version of jQuery being used + jquery: version, + + constructor: jQuery, + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + + // Return all the elements in a clean array + if ( num == null ) { + return slice.call( this ); + } + + // Return just the one element from the set + return num < 0 ? this[ num + this.length ] : this[ num ]; + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + each: function( callback ) { + return jQuery.each( this, callback ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map( this, function( elem, i ) { + return callback.call( elem, i, elem ); + } ) ); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + even: function() { + return this.pushStack( jQuery.grep( this, function( _elem, i ) { + return ( i + 1 ) % 2; + } ) ); + }, + + odd: function() { + return this.pushStack( jQuery.grep( this, function( _elem, i ) { + return i % 2; + } ) ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); + }, + + end: function() { + return this.prevObject || this.constructor(); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: arr.sort, + splice: arr.splice +}; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[ 0 ] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + + // Skip the boolean and the target + target = arguments[ i ] || {}; + i++; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !isFunction( target ) ) { + target = {}; + } + + // Extend jQuery itself if only one argument is passed + if ( i === length ) { + target = this; + i--; + } + + for ( ; i < length; i++ ) { + + // Only deal with non-null/undefined values + if ( ( options = arguments[ i ] ) != null ) { + + // Extend the base object + for ( name in options ) { + copy = options[ name ]; + + // Prevent Object.prototype pollution + // Prevent never-ending loop + if ( name === "__proto__" || target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject( copy ) || + ( copyIsArray = Array.isArray( copy ) ) ) ) { + src = target[ name ]; + + // Ensure proper type for the source value + if ( copyIsArray && !Array.isArray( src ) ) { + clone = []; + } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) { + clone = {}; + } else { + clone = src; + } + copyIsArray = false; + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend( { + + // Unique for each copy of jQuery on the page + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), + + // Assume jQuery is ready without the ready module + isReady: true, + + error: function( msg ) { + throw new Error( msg ); + }, + + noop: function() {}, + + isPlainObject: function( obj ) { + var proto, Ctor; + + // Detect obvious negatives + // Use toString instead of jQuery.type to catch host objects + if ( !obj || toString.call( obj ) !== "[object Object]" ) { + return false; + } + + proto = getProto( obj ); + + // Objects with no prototype (e.g., `Object.create( null )`) are plain + if ( !proto ) { + return true; + } + + // Objects with prototype are plain iff they were constructed by a global Object function + Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; + return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; + }, + + isEmptyObject: function( obj ) { + var name; + + for ( name in obj ) { + return false; + } + return true; + }, + + // Evaluates a script in a provided context; falls back to the global one + // if not specified. + globalEval: function( code, options, doc ) { + DOMEval( code, { nonce: options && options.nonce }, doc ); + }, + + each: function( obj, callback ) { + var length, i = 0; + + if ( isArrayLike( obj ) ) { + length = obj.length; + for ( ; i < length; i++ ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } else { + for ( i in obj ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } + + return obj; + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArrayLike( Object( arr ) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + return arr == null ? -1 : indexOf.call( arr, elem, i ); + }, + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + merge: function( first, second ) { + var len = +second.length, + j = 0, + i = first.length; + + for ( ; j < len; j++ ) { + first[ i++ ] = second[ j ]; + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, invert ) { + var callbackInverse, + matches = [], + i = 0, + length = elems.length, + callbackExpect = !invert; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + callbackInverse = !callback( elems[ i ], i ); + if ( callbackInverse !== callbackExpect ) { + matches.push( elems[ i ] ); + } + } + + return matches; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var length, value, + i = 0, + ret = []; + + // Go through the array, translating each of the items to their new values + if ( isArrayLike( elems ) ) { + length = elems.length; + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + } + + // Flatten any nested arrays + return flat( ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support +} ); + +if ( typeof Symbol === "function" ) { + jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; +} + +// Populate the class2type map +jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), + function( _i, name ) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); + } ); + +function isArrayLike( obj ) { + + // Support: real iOS 8.2 only (not reproducible in simulator) + // `in` check used to prevent JIT error (gh-2145) + // hasOwn isn't used here due to false negatives + // regarding Nodelist length in IE + var length = !!obj && "length" in obj && obj.length, + type = toType( obj ); + + if ( isFunction( obj ) || isWindow( obj ) ) { + return false; + } + + return type === "array" || length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj; +} +var Sizzle = +/*! + * Sizzle CSS Selector Engine v2.3.10 + * https://sizzlejs.com/ + * + * Copyright JS Foundation and other contributors + * Released under the MIT license + * https://js.foundation/ + * + * Date: 2023-02-14 + */ +( function( window ) { +var i, + support, + Expr, + getText, + isXML, + tokenize, + compile, + select, + outermostContext, + sortInput, + hasDuplicate, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + 1 * new Date(), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + nonnativeSelectorCache = createCache(), + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + } + return 0; + }, + + // Instance methods + hasOwn = ( {} ).hasOwnProperty, + arr = [], + pop = arr.pop, + pushNative = arr.push, + push = arr.push, + slice = arr.slice, + + // Use a stripped-down indexOf as it's faster than native + // https://jsperf.com/thor-indexof-vs-for/5 + indexOf = function( list, elem ) { + var i = 0, + len = list.length; + for ( ; i < len; i++ ) { + if ( list[ i ] === elem ) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|" + + "ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + + // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram + identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace + + "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+", + + // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + + + // Operator (capture 2) + "*([*^$|!~]?=)" + whitespace + + + // "Attribute values must be CSS identifiers [capture 5] + // or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + + whitespace + "*\\]", + + pseudos = ":(" + identifier + ")(?:\\((" + + + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: + // 1. quoted (capture 3; capture 4 or capture 5) + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + + // 2. simple (capture 6) + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + + // 3. anything else (capture 2) + ".*" + + ")\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rwhitespace = new RegExp( whitespace + "+", "g" ), + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rleadingCombinator = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + + "*" ), + rdescend = new RegExp( whitespace + "|>" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + identifier + ")" ), + "CLASS": new RegExp( "^\\.(" + identifier + ")" ), + "TAG": new RegExp( "^(" + identifier + "|[*])" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + + whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + + whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rhtml = /HTML$/i, + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rsibling = /[+~]/, + + // CSS escapes + // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g" ), + funescape = function( escape, nonHex ) { + var high = "0x" + escape.slice( 1 ) - 0x10000; + + return nonHex ? + + // Strip the backslash prefix from a non-hex escape sequence + nonHex : + + // Replace a hexadecimal escape sequence with the encoded Unicode code point + // Support: IE <=11+ + // For values outside the Basic Multilingual Plane (BMP), manually construct a + // surrogate pair + high < 0 ? + String.fromCharCode( high + 0x10000 ) : + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }, + + // CSS string/identifier serialization + // https://drafts.csswg.org/cssom/#common-serializing-idioms + rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, + fcssescape = function( ch, asCodePoint ) { + if ( asCodePoint ) { + + // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER + if ( ch === "\0" ) { + return "\uFFFD"; + } + + // Control characters and (dependent upon position) numbers get escaped as code points + return ch.slice( 0, -1 ) + "\\" + + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; + } + + // Other potentially-special ASCII characters get backslash-escaped + return "\\" + ch; + }, + + // Used for iframes + // See setDocument() + // Removing the function wrapper causes a "Permission Denied" + // error in IE + unloadHandler = function() { + setDocument(); + }, + + inDisabledFieldset = addCombinator( + function( elem ) { + return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset"; + }, + { dir: "parentNode", next: "legend" } + ); + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + ( arr = slice.call( preferredDoc.childNodes ) ), + preferredDoc.childNodes + ); + + // Support: Android<4.0 + // Detect silently failing push.apply + // eslint-disable-next-line no-unused-expressions + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + pushNative.apply( target, slice.call( els ) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + + // Can't trust NodeList.length + while ( ( target[ j++ ] = els[ i++ ] ) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var m, i, elem, nid, match, groups, newSelector, + newContext = context && context.ownerDocument, + + // nodeType defaults to 9, since context defaults to document + nodeType = context ? context.nodeType : 9; + + results = results || []; + + // Return early from calls with invalid selector or context + if ( typeof selector !== "string" || !selector || + nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { + + return results; + } + + // Try to shortcut find operations (as opposed to filters) in HTML documents + if ( !seed ) { + setDocument( context ); + context = context || document; + + if ( documentIsHTML ) { + + // If the selector is sufficiently simple, try using a "get*By*" DOM method + // (excepting DocumentFragment context, where the methods don't exist) + if ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) { + + // ID selector + if ( ( m = match[ 1 ] ) ) { + + // Document context + if ( nodeType === 9 ) { + if ( ( elem = context.getElementById( m ) ) ) { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + + // Element context + } else { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( newContext && ( elem = newContext.getElementById( m ) ) && + contains( context, elem ) && + elem.id === m ) { + + results.push( elem ); + return results; + } + } + + // Type selector + } else if ( match[ 2 ] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Class selector + } else if ( ( m = match[ 3 ] ) && support.getElementsByClassName && + context.getElementsByClassName ) { + + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // Take advantage of querySelectorAll + if ( support.qsa && + !nonnativeSelectorCache[ selector + " " ] && + ( !rbuggyQSA || !rbuggyQSA.test( selector ) ) && + + // Support: IE 8 only + // Exclude object elements + ( nodeType !== 1 || context.nodeName.toLowerCase() !== "object" ) ) { + + newSelector = selector; + newContext = context; + + // qSA considers elements outside a scoping root when evaluating child or + // descendant combinators, which is not what we want. + // In such cases, we work around the behavior by prefixing every selector in the + // list with an ID selector referencing the scope context. + // The technique has to be used as well when a leading combinator is used + // as such selectors are not recognized by querySelectorAll. + // Thanks to Andrew Dupont for this technique. + if ( nodeType === 1 && + ( rdescend.test( selector ) || rleadingCombinator.test( selector ) ) ) { + + // Expand context for sibling selectors + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || + context; + + // We can use :scope instead of the ID hack if the browser + // supports it & if we're not changing the context. + if ( newContext !== context || !support.scope ) { + + // Capture the context ID, setting it first if necessary + if ( ( nid = context.getAttribute( "id" ) ) ) { + nid = nid.replace( rcssescape, fcssescape ); + } else { + context.setAttribute( "id", ( nid = expando ) ); + } + } + + // Prefix every selector in the list + groups = tokenize( selector ); + i = groups.length; + while ( i-- ) { + groups[ i ] = ( nid ? "#" + nid : ":scope" ) + " " + + toSelector( groups[ i ] ); + } + newSelector = groups.join( "," ); + } + + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch ( qsaError ) { + nonnativeSelectorCache( selector, true ); + } finally { + if ( nid === expando ) { + context.removeAttribute( "id" ); + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {function(string, object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key + " " ) > Expr.cacheLength ) { + + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return ( cache[ key + " " ] = value ); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created element and returns a boolean result + */ +function assert( fn ) { + var el = document.createElement( "fieldset" ); + + try { + return !!fn( el ); + } catch ( e ) { + return false; + } finally { + + // Remove from its parent by default + if ( el.parentNode ) { + el.parentNode.removeChild( el ); + } + + // release memory in IE + el = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { + var arr = attrs.split( "|" ), + i = arr.length; + + while ( i-- ) { + Expr.attrHandle[ arr[ i ] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + a.sourceIndex - b.sourceIndex; + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( ( cur = cur.nextSibling ) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return ( name === "input" || name === "button" ) && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for :enabled/:disabled + * @param {Boolean} disabled true for :disabled; false for :enabled + */ +function createDisabledPseudo( disabled ) { + + // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable + return function( elem ) { + + // Only certain elements can match :enabled or :disabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled + if ( "form" in elem ) { + + // Check for inherited disabledness on relevant non-disabled elements: + // * listed form-associated elements in a disabled fieldset + // https://html.spec.whatwg.org/multipage/forms.html#category-listed + // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled + // * option elements in a disabled optgroup + // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled + // All such elements have a "form" property. + if ( elem.parentNode && elem.disabled === false ) { + + // Option elements defer to a parent optgroup if present + if ( "label" in elem ) { + if ( "label" in elem.parentNode ) { + return elem.parentNode.disabled === disabled; + } else { + return elem.disabled === disabled; + } + } + + // Support: IE 6 - 11 + // Use the isDisabled shortcut property to check for disabled fieldset ancestors + return elem.isDisabled === disabled || + + // Where there is no isDisabled, check manually + /* jshint -W018 */ + elem.isDisabled !== !disabled && + inDisabledFieldset( elem ) === disabled; + } + + return elem.disabled === disabled; + + // Try to winnow out elements that can't be disabled before trusting the disabled property. + // Some victims get caught in our net (label, legend, menu, track), but it shouldn't + // even exist on them, let alone have a boolean value. + } else if ( "label" in elem ) { + return elem.disabled === disabled; + } + + // Remaining elements are neither :enabled nor :disabled + return false; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction( function( argument ) { + argument = +argument; + return markFunction( function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ ( j = matchIndexes[ i ] ) ] ) { + seed[ j ] = !( matches[ j ] = seed[ j ] ); + } + } + } ); + } ); +} + +/** + * Checks a node for validity as a Sizzle context + * @param {Element|Object=} context + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value + */ +function testContext( context ) { + return context && typeof context.getElementsByTagName !== "undefined" && context; +} + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Detects XML nodes + * @param {Element|Object} elem An element or a document + * @returns {Boolean} True iff elem is a non-HTML XML node + */ +isXML = Sizzle.isXML = function( elem ) { + var namespace = elem && elem.namespaceURI, + docElem = elem && ( elem.ownerDocument || elem ).documentElement; + + // Support: IE <=8 + // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes + // https://bugs.jquery.com/ticket/4833 + return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" ); +}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var hasCompare, subWindow, + doc = node ? node.ownerDocument || node : preferredDoc; + + // Return early if doc is invalid or already selected + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Update global variables + document = doc; + docElem = document.documentElement; + documentIsHTML = !isXML( document ); + + // Support: IE 9 - 11+, Edge 12 - 18+ + // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( preferredDoc != document && + ( subWindow = document.defaultView ) && subWindow.top !== subWindow ) { + + // Support: IE 11, Edge + if ( subWindow.addEventListener ) { + subWindow.addEventListener( "unload", unloadHandler, false ); + + // Support: IE 9 - 10 only + } else if ( subWindow.attachEvent ) { + subWindow.attachEvent( "onunload", unloadHandler ); + } + } + + // Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only, + // Safari 4 - 5 only, Opera <=11.6 - 12.x only + // IE/Edge & older browsers don't support the :scope pseudo-class. + // Support: Safari 6.0 only + // Safari 6.0 supports :scope but it's an alias of :root there. + support.scope = assert( function( el ) { + docElem.appendChild( el ).appendChild( document.createElement( "div" ) ); + return typeof el.querySelectorAll !== "undefined" && + !el.querySelectorAll( ":scope fieldset div" ).length; + } ); + + // Support: Chrome 105 - 110+, Safari 15.4 - 16.3+ + // Make sure the the `:has()` argument is parsed unforgivingly. + // We include `*` in the test to detect buggy implementations that are + // _selectively_ forgiving (specifically when the list includes at least + // one valid selector). + // Note that we treat complete lack of support for `:has()` as if it were + // spec-compliant support, which is fine because use of `:has()` in such + // environments will fail in the qSA path and fall back to jQuery traversal + // anyway. + support.cssHas = assert( function() { + try { + document.querySelector( ":has(*,:jqfake)" ); + return false; + } catch ( e ) { + return true; + } + } ); + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties + // (excepting IE8 booleans) + support.attributes = assert( function( el ) { + el.className = "i"; + return !el.getAttribute( "className" ); + } ); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert( function( el ) { + el.appendChild( document.createComment( "" ) ); + return !el.getElementsByTagName( "*" ).length; + } ); + + // Support: IE<9 + support.getElementsByClassName = rnative.test( document.getElementsByClassName ); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programmatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert( function( el ) { + docElem.appendChild( el ).id = expando; + return !document.getElementsByName || !document.getElementsByName( expando ).length; + } ); + + // ID filter and find + if ( support.getById ) { + Expr.filter[ "ID" ] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute( "id" ) === attrId; + }; + }; + Expr.find[ "ID" ] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var elem = context.getElementById( id ); + return elem ? [ elem ] : []; + } + }; + } else { + Expr.filter[ "ID" ] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== "undefined" && + elem.getAttributeNode( "id" ); + return node && node.value === attrId; + }; + }; + + // Support: IE 6 - 7 only + // getElementById is not reliable as a find shortcut + Expr.find[ "ID" ] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var node, i, elems, + elem = context.getElementById( id ); + + if ( elem ) { + + // Verify the id attribute + node = elem.getAttributeNode( "id" ); + if ( node && node.value === id ) { + return [ elem ]; + } + + // Fall back on getElementsByName + elems = context.getElementsByName( id ); + i = 0; + while ( ( elem = elems[ i++ ] ) ) { + node = elem.getAttributeNode( "id" ); + if ( node && node.value === id ) { + return [ elem ]; + } + } + } + + return []; + } + }; + } + + // Tag + Expr.find[ "TAG" ] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( tag ); + + // DocumentFragment nodes don't have gEBTN + } else if ( support.qsa ) { + return context.querySelectorAll( tag ); + } + } : + + function( tag, context ) { + var elem, + tmp = [], + i = 0, + + // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( ( elem = results[ i++ ] ) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Class + Expr.find[ "CLASS" ] = support.getElementsByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21) + // We allow this because of a bug in IE8/9 that throws an error + // whenever `document.activeElement` is accessed on an iframe + // So, we allow :focus to pass through QSA all the time to avoid the IE error + // See https://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) { + + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert( function( el ) { + + var input; + + // Select is set to empty string on purpose + // This is to test IE's treatment of not explicitly + // setting a boolean content attribute, + // since its presence should be enough + // https://bugs.jquery.com/ticket/12359 + docElem.appendChild( el ).innerHTML = "" + + ""; + + // Support: IE8, Opera 11-12.16 + // Nothing should be selected when empty strings follow ^= or $= or *= + // The test attribute must be unknown in Opera but "safe" for WinRT + // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section + if ( el.querySelectorAll( "[msallowcapture^='']" ).length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !el.querySelectorAll( "[selected]" ).length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ + if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { + rbuggyQSA.push( "~=" ); + } + + // Support: IE 11+, Edge 15 - 18+ + // IE 11/Edge don't find elements on a `[name='']` query in some cases. + // Adding a temporary attribute to the document before the selection works + // around the issue. + // Interestingly, IE 10 & older don't seem to have the issue. + input = document.createElement( "input" ); + input.setAttribute( "name", "" ); + el.appendChild( input ); + if ( !el.querySelectorAll( "[name='']" ).length ) { + rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" + + whitespace + "*(?:''|\"\")" ); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !el.querySelectorAll( ":checked" ).length ) { + rbuggyQSA.push( ":checked" ); + } + + // Support: Safari 8+, iOS 8+ + // https://bugs.webkit.org/show_bug.cgi?id=136851 + // In-page `selector#id sibling-combinator selector` fails + if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { + rbuggyQSA.push( ".#.+[+~]" ); + } + + // Support: Firefox <=3.6 - 5 only + // Old Firefox doesn't throw on a badly-escaped identifier. + el.querySelectorAll( "\\\f" ); + rbuggyQSA.push( "[\\r\\n\\f]" ); + } ); + + assert( function( el ) { + el.innerHTML = "" + + ""; + + // Support: Windows 8 Native Apps + // The type and name attributes are restricted during .innerHTML assignment + var input = document.createElement( "input" ); + input.setAttribute( "type", "hidden" ); + el.appendChild( input ).setAttribute( "name", "D" ); + + // Support: IE8 + // Enforce case-sensitivity of name attribute + if ( el.querySelectorAll( "[name=d]" ).length ) { + rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( el.querySelectorAll( ":enabled" ).length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Support: IE9-11+ + // IE's :disabled selector does not pick up the children of disabled fieldsets + docElem.appendChild( el ).disabled = true; + if ( el.querySelectorAll( ":disabled" ).length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Support: Opera 10 - 11 only + // Opera 10-11 does not throw on post-comma invalid pseudos + el.querySelectorAll( "*,:x" ); + rbuggyQSA.push( ",.*:" ); + } ); + } + + if ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches || + docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector ) ) ) ) { + + assert( function( el ) { + + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( el, "*" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( el, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + } ); + } + + if ( !support.cssHas ) { + + // Support: Chrome 105 - 110+, Safari 15.4 - 16.3+ + // Our regular `try-catch` mechanism fails to detect natively-unsupported + // pseudo-classes inside `:has()` (such as `:has(:contains("Foo"))`) + // in browsers that parse the `:has()` argument as a forgiving selector list. + // https://drafts.csswg.org/selectors/#relational now requires the argument + // to be parsed unforgivingly, but browsers have not yet fully adjusted. + rbuggyQSA.push( ":has" ); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( "|" ) ); + + /* Contains + ---------------------------------------------------------------------- */ + hasCompare = rnative.test( docElem.compareDocumentPosition ); + + // Element contains another + // Purposefully self-exclusive + // As in, an element does not contain itself + contains = hasCompare || rnative.test( docElem.contains ) ? + function( a, b ) { + + // Support: IE <9 only + // IE doesn't have `contains` on `document` so we need to check for + // `documentElement` presence. + // We need to fall back to `a` when `documentElement` is missing + // as `ownerDocument` of elements within `