diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/CNAME b/CNAME new file mode 100644 index 00000000..30affa61 --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +sfz.tools \ No newline at end of file diff --git a/assets/css/bootstrap-table-filter-control.min.css b/assets/css/bootstrap-table-filter-control.min.css new file mode 100644 index 00000000..c1100294 --- /dev/null +++ b/assets/css/bootstrap-table-filter-control.min.css @@ -0,0 +1,10 @@ +/** + * bootstrap-table - An extended table to integration with some of the most widely used CSS frameworks. (Supports Bootstrap, Semantic UI, Bulma, Material Design, Foundation) + * + * @version v1.22.1 + * @homepage https://bootstrap-table.com + * @author wenzhixin (http://wenzhixin.net.cn/) + * @license MIT + */ + +@charset "UTF-8";.no-filter-control{height:40px}.filter-control{margin:0 2px 2px}.ms-choice{border:0}.ms-parent>button:focus{outline:0} \ No newline at end of file diff --git a/assets/css/bootstrap-table.min.css b/assets/css/bootstrap-table.min.css new file mode 100644 index 00000000..86da662c --- /dev/null +++ b/assets/css/bootstrap-table.min.css @@ -0,0 +1,10 @@ +/** + * bootstrap-table - An extended table to integration with some of the most widely used CSS frameworks. (Supports Bootstrap, Semantic UI, Bulma, Material Design, Foundation) + * + * @version v1.22.1 + * @homepage https://bootstrap-table.com + * @author wenzhixin (http://wenzhixin.net.cn/) + * @license MIT + */ + +.bootstrap-table .fixed-table-toolbar::after{content:"";display:block;clear:both}.bootstrap-table .fixed-table-toolbar .bs-bars,.bootstrap-table .fixed-table-toolbar .columns,.bootstrap-table .fixed-table-toolbar .search{position:relative;margin-top:10px;margin-bottom:10px}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group{display:inline-block;margin-left:-1px!important}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group>.btn{border-radius:0}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group:first-child>.btn{border-top-left-radius:4px;border-bottom-left-radius:4px}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group:last-child>.btn{border-top-right-radius:4px;border-bottom-right-radius:4px}.bootstrap-table .fixed-table-toolbar .columns .dropdown-menu{text-align:left;max-height:300px;overflow:auto;-ms-overflow-style:scrollbar;z-index:1001}.bootstrap-table .fixed-table-toolbar .columns label{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.4286}.bootstrap-table .fixed-table-toolbar .columns-left{margin-right:5px}.bootstrap-table .fixed-table-toolbar .columns-right{margin-left:5px}.bootstrap-table .fixed-table-toolbar .pull-right .dropdown-menu{right:0;left:auto}.bootstrap-table .fixed-table-container{position:relative;clear:both}.bootstrap-table .fixed-table-container .table{width:100%;margin-bottom:0!important}.bootstrap-table .fixed-table-container .table td,.bootstrap-table .fixed-table-container .table th{vertical-align:middle;box-sizing:border-box}.bootstrap-table .fixed-table-container .table thead th{vertical-align:bottom;padding:0;margin:0}.bootstrap-table .fixed-table-container .table thead th:focus{outline:0 solid transparent}.bootstrap-table .fixed-table-container .table thead th.detail{width:30px}.bootstrap-table .fixed-table-container .table thead th .th-inner{padding:.75rem;vertical-align:bottom;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bootstrap-table .fixed-table-container .table thead th .sortable{cursor:pointer;background-position:right;background-repeat:no-repeat;padding-right:30px!important}.bootstrap-table .fixed-table-container .table thead th .sortable.sortable-center{padding-left:20px!important;padding-right:20px!important}.bootstrap-table .fixed-table-container .table thead th .both{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAkElEQVQoz7X QMQ5AQBCF4dWQSJxC5wwax1Cq1e7BAdxD5SL+Tq/QCM1oNiJidwox0355mXnG/DrEtIQ6azioNZQxI0ykPhTQIwhCR+BmBYtlK7kLJYwWCcJA9M4qdrZrd8pPjZWPtOqdRQy320YSV17OatFC4euts6z39GYMKRPCTKY9UnPQ6P+GtMRfGtPnBCiqhAeJPmkqAAAAAElFTkSuQmCC")}.bootstrap-table .fixed-table-container .table thead th .asc{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZ0lEQVQ4y2NgGLKgquEuFxBPAGI2ahhWCsS/gDibUoO0gPgxEP8H4ttArEyuQYxAPBdqEAxPBImTY5gjEL9DM+wTENuQahAvEO9DMwiGdwAxOymGJQLxTyD+jgWDxCMZRsEoGAVoAADeemwtPcZI2wAAAABJRU5ErkJggg==")}.bootstrap-table .fixed-table-container .table thead th .desc{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZUlEQVQ4y2NgGAWjYBSggaqGu5FA/BOIv2PBIPFEUgxjB+IdQPwfC94HxLykus4GiD+hGfQOiB3J8SojEE9EM2wuSJzcsFMG4ttQgx4DsRalkZENxL+AuJQaMcsGxBOAmGvopk8AVz1sLZgg0bsAAAAASUVORK5CYII= ")}.bootstrap-table .fixed-table-container .table tbody tr.selected td{background-color:rgba(0,0,0,.075)}.bootstrap-table .fixed-table-container .table tbody tr.no-records-found td{text-align:center}.bootstrap-table .fixed-table-container .table tbody tr .card-view{display:flex}.bootstrap-table .fixed-table-container .table tbody tr .card-view .card-view-title{font-weight:700;display:inline-block;min-width:30%;width:auto!important;text-align:left!important}.bootstrap-table .fixed-table-container .table tbody tr .card-view .card-view-value{width:100%!important;text-align:left!important}.bootstrap-table .fixed-table-container .table .bs-checkbox{text-align:center}.bootstrap-table .fixed-table-container .table .bs-checkbox label{margin-bottom:0}.bootstrap-table .fixed-table-container .table .bs-checkbox label input[type=checkbox],.bootstrap-table .fixed-table-container .table .bs-checkbox label input[type=radio]{margin:0 auto!important}.bootstrap-table .fixed-table-container .table.table-sm .th-inner{padding:.3rem}.bootstrap-table .fixed-table-container.fixed-height:not(.has-footer){border-bottom:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height.has-card-view{border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height .fixed-table-border{border-left:1px solid #dee2e6;border-right:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height .table thead th{border-bottom:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height .table-dark thead th{border-bottom:1px solid #32383e}.bootstrap-table .fixed-table-container .fixed-table-header{overflow:hidden}.bootstrap-table .fixed-table-container .fixed-table-body{overflow-x:auto;overflow-y:auto;height:100%}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading{align-items:center;background:#fff;display:flex;justify-content:center;position:absolute;bottom:0;width:100%;max-width:100%;z-index:1000;transition:visibility 0s,opacity .15s ease-in-out;opacity:0;visibility:hidden}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.open{visibility:visible;opacity:1}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap{align-items:baseline;display:flex;justify-content:center}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .loading-text{margin-right:6px}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap{align-items:center;display:flex;justify-content:center}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-dot,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap::after,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap::before{content:"";animation-duration:1.5s;animation-iteration-count:infinite;animation-name:loading;background:#212529;border-radius:50%;display:block;height:5px;margin:0 4px;opacity:0;width:5px}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-dot{animation-delay:.3s}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap::after{animation-delay:.6s}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark{background:#212529}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-dot,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-wrap::after,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-wrap::before{background:#fff}.bootstrap-table .fixed-table-container .fixed-table-footer{overflow:hidden}.bootstrap-table .fixed-table-pagination::after{content:"";display:block;clear:both}.bootstrap-table .fixed-table-pagination>.pagination,.bootstrap-table .fixed-table-pagination>.pagination-detail{margin-top:10px;margin-bottom:10px}.bootstrap-table .fixed-table-pagination>.pagination-detail .pagination-info{line-height:34px;margin-right:5px}.bootstrap-table .fixed-table-pagination>.pagination-detail .page-list{display:inline-block}.bootstrap-table .fixed-table-pagination>.pagination-detail .page-list .btn-group{position:relative;display:inline-block;vertical-align:middle}.bootstrap-table .fixed-table-pagination>.pagination-detail .page-list .btn-group .dropdown-menu{margin-bottom:0}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination{margin:0}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.page-intermediate a{color:#c8c8c8}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.page-intermediate a::before{content:"\2B05"}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.page-intermediate a::after{content:"\27A1"}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.disabled a{pointer-events:none;cursor:default}.bootstrap-table.fullscreen{position:fixed;top:0;left:0;z-index:1050;width:100%!important;background:#fff;height:calc(100vh);overflow-y:scroll}.bootstrap-table.bootstrap4 .pagination-lg .page-link,.bootstrap-table.bootstrap5 .pagination-lg .page-link{padding:.5rem 1rem}.bootstrap-table.bootstrap5 .float-left{float:left}.bootstrap-table.bootstrap5 .float-right{float:right}div.fixed-table-scroll-inner{width:100%;height:200px}div.fixed-table-scroll-outer{top:0;left:0;visibility:hidden;width:200px;height:150px;overflow:hidden}@keyframes loading{0%{opacity:0}50%{opacity:1}100%{opacity:0}} \ No newline at end of file diff --git a/assets/css/brands.min.css b/assets/css/brands.min.css new file mode 100644 index 00000000..93a9a732 --- /dev/null +++ b/assets/css/brands.min.css @@ -0,0 +1,6 @@ +/*! + * Font Awesome Free 6.5.1 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2023 Fonticons, Inc. + */ +:host,:root{--fa-style-family-brands:"Font Awesome 6 Brands";--fa-font-brands:normal 400 1em/1 "Font Awesome 6 Brands"}@font-face{font-family:"Font Awesome 6 Brands";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}.fa-brands,.fab{font-weight:400}.fa-monero:before{content:"\f3d0"}.fa-hooli:before{content:"\f427"}.fa-yelp:before{content:"\f1e9"}.fa-cc-visa:before{content:"\f1f0"}.fa-lastfm:before{content:"\f202"}.fa-shopware:before{content:"\f5b5"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-aws:before{content:"\f375"}.fa-redhat:before{content:"\f7bc"}.fa-yoast:before{content:"\f2b1"}.fa-cloudflare:before{content:"\e07d"}.fa-ups:before{content:"\f7e0"}.fa-pixiv:before{content:"\e640"}.fa-wpexplorer:before{content:"\f2de"}.fa-dyalog:before{content:"\f399"}.fa-bity:before{content:"\f37a"}.fa-stackpath:before{content:"\f842"}.fa-buysellads:before{content:"\f20d"}.fa-first-order:before{content:"\f2b0"}.fa-modx:before{content:"\f285"}.fa-guilded:before{content:"\e07e"}.fa-vnv:before{content:"\f40b"}.fa-js-square:before,.fa-square-js:before{content:"\f3b9"}.fa-microsoft:before{content:"\f3ca"}.fa-qq:before{content:"\f1d6"}.fa-orcid:before{content:"\f8d2"}.fa-java:before{content:"\f4e4"}.fa-invision:before{content:"\f7b0"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-centercode:before{content:"\f380"}.fa-glide-g:before{content:"\f2a6"}.fa-drupal:before{content:"\f1a9"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-unity:before{content:"\e049"}.fa-whmcs:before{content:"\f40d"}.fa-rocketchat:before{content:"\f3e8"}.fa-vk:before{content:"\f189"}.fa-untappd:before{content:"\f405"}.fa-mailchimp:before{content:"\f59e"}.fa-css3-alt:before{content:"\f38b"}.fa-reddit-square:before,.fa-square-reddit:before{content:"\f1a2"}.fa-vimeo-v:before{content:"\f27d"}.fa-contao:before{content:"\f26d"}.fa-square-font-awesome:before{content:"\e5ad"}.fa-deskpro:before{content:"\f38f"}.fa-brave:before{content:"\e63c"}.fa-sistrix:before{content:"\f3ee"}.fa-instagram-square:before,.fa-square-instagram:before{content:"\e055"}.fa-battle-net:before{content:"\f835"}.fa-the-red-yeti:before{content:"\f69d"}.fa-hacker-news-square:before,.fa-square-hacker-news:before{content:"\f3af"}.fa-edge:before{content:"\f282"}.fa-threads:before{content:"\e618"}.fa-napster:before{content:"\f3d2"}.fa-snapchat-square:before,.fa-square-snapchat:before{content:"\f2ad"}.fa-google-plus-g:before{content:"\f0d5"}.fa-artstation:before{content:"\f77a"}.fa-markdown:before{content:"\f60f"}.fa-sourcetree:before{content:"\f7d3"}.fa-google-plus:before{content:"\f2b3"}.fa-diaspora:before{content:"\f791"}.fa-foursquare:before{content:"\f180"}.fa-stack-overflow:before{content:"\f16c"}.fa-github-alt:before{content:"\f113"}.fa-phoenix-squadron:before{content:"\f511"}.fa-pagelines:before{content:"\f18c"}.fa-algolia:before{content:"\f36c"}.fa-red-river:before{content:"\f3e3"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-safari:before{content:"\f267"}.fa-google:before{content:"\f1a0"}.fa-font-awesome-alt:before,.fa-square-font-awesome-stroke:before{content:"\f35c"}.fa-atlassian:before{content:"\f77b"}.fa-linkedin-in:before{content:"\f0e1"}.fa-digital-ocean:before{content:"\f391"}.fa-nimblr:before{content:"\f5a8"}.fa-chromecast:before{content:"\f838"}.fa-evernote:before{content:"\f839"}.fa-hacker-news:before{content:"\f1d4"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-adversal:before{content:"\f36a"}.fa-creative-commons:before{content:"\f25e"}.fa-watchman-monitoring:before{content:"\e087"}.fa-fonticons:before{content:"\f280"}.fa-weixin:before{content:"\f1d7"}.fa-shirtsinbulk:before{content:"\f214"}.fa-codepen:before{content:"\f1cb"}.fa-git-alt:before{content:"\f841"}.fa-lyft:before{content:"\f3c3"}.fa-rev:before{content:"\f5b2"}.fa-windows:before{content:"\f17a"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-square-viadeo:before,.fa-viadeo-square:before{content:"\f2aa"}.fa-meetup:before{content:"\f2e0"}.fa-centos:before{content:"\f789"}.fa-adn:before{content:"\f170"}.fa-cloudsmith:before{content:"\f384"}.fa-opensuse:before{content:"\e62b"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-dribbble-square:before,.fa-square-dribbble:before{content:"\f397"}.fa-codiepie:before{content:"\f284"}.fa-node:before{content:"\f419"}.fa-mix:before{content:"\f3cb"}.fa-steam:before{content:"\f1b6"}.fa-cc-apple-pay:before{content:"\f416"}.fa-scribd:before{content:"\f28a"}.fa-debian:before{content:"\e60b"}.fa-openid:before{content:"\f19b"}.fa-instalod:before{content:"\e081"}.fa-expeditedssl:before{content:"\f23e"}.fa-sellcast:before{content:"\f2da"}.fa-square-twitter:before,.fa-twitter-square:before{content:"\f081"}.fa-r-project:before{content:"\f4f7"}.fa-delicious:before{content:"\f1a5"}.fa-freebsd:before{content:"\f3a4"}.fa-vuejs:before{content:"\f41f"}.fa-accusoft:before{content:"\f369"}.fa-ioxhost:before{content:"\f208"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-app-store:before{content:"\f36f"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-itunes-note:before{content:"\f3b5"}.fa-golang:before{content:"\e40f"}.fa-kickstarter:before{content:"\f3bb"}.fa-grav:before{content:"\f2d6"}.fa-weibo:before{content:"\f18a"}.fa-uncharted:before{content:"\e084"}.fa-firstdraft:before{content:"\f3a1"}.fa-square-youtube:before,.fa-youtube-square:before{content:"\f431"}.fa-wikipedia-w:before{content:"\f266"}.fa-rendact:before,.fa-wpressr:before{content:"\f3e4"}.fa-angellist:before{content:"\f209"}.fa-galactic-republic:before{content:"\f50c"}.fa-nfc-directional:before{content:"\e530"}.fa-skype:before{content:"\f17e"}.fa-joget:before{content:"\f3b7"}.fa-fedora:before{content:"\f798"}.fa-stripe-s:before{content:"\f42a"}.fa-meta:before{content:"\e49b"}.fa-laravel:before{content:"\f3bd"}.fa-hotjar:before{content:"\f3b1"}.fa-bluetooth-b:before{content:"\f294"}.fa-square-letterboxd:before{content:"\e62e"}.fa-sticker-mule:before{content:"\f3f7"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-hips:before{content:"\f452"}.fa-behance:before{content:"\f1b4"}.fa-reddit:before{content:"\f1a1"}.fa-discord:before{content:"\f392"}.fa-chrome:before{content:"\f268"}.fa-app-store-ios:before{content:"\f370"}.fa-cc-discover:before{content:"\f1f2"}.fa-wpbeginner:before{content:"\f297"}.fa-confluence:before{content:"\f78d"}.fa-shoelace:before{content:"\e60c"}.fa-mdb:before{content:"\f8ca"}.fa-dochub:before{content:"\f394"}.fa-accessible-icon:before{content:"\f368"}.fa-ebay:before{content:"\f4f4"}.fa-amazon:before{content:"\f270"}.fa-unsplash:before{content:"\e07c"}.fa-yarn:before{content:"\f7e3"}.fa-square-steam:before,.fa-steam-square:before{content:"\f1b7"}.fa-500px:before{content:"\f26e"}.fa-square-vimeo:before,.fa-vimeo-square:before{content:"\f194"}.fa-asymmetrik:before{content:"\f372"}.fa-font-awesome-flag:before,.fa-font-awesome-logo-full:before,.fa-font-awesome:before{content:"\f2b4"}.fa-gratipay:before{content:"\f184"}.fa-apple:before{content:"\f179"}.fa-hive:before{content:"\e07f"}.fa-gitkraken:before{content:"\f3a6"}.fa-keybase:before{content:"\f4f5"}.fa-apple-pay:before{content:"\f415"}.fa-padlet:before{content:"\e4a0"}.fa-amazon-pay:before{content:"\f42c"}.fa-github-square:before,.fa-square-github:before{content:"\f092"}.fa-stumbleupon:before{content:"\f1a4"}.fa-fedex:before{content:"\f797"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-shopify:before{content:"\e057"}.fa-neos:before{content:"\f612"}.fa-square-threads:before{content:"\e619"}.fa-hackerrank:before{content:"\f5f7"}.fa-researchgate:before{content:"\f4f8"}.fa-swift:before{content:"\f8e1"}.fa-angular:before{content:"\f420"}.fa-speakap:before{content:"\f3f3"}.fa-angrycreative:before{content:"\f36e"}.fa-y-combinator:before{content:"\f23b"}.fa-empire:before{content:"\f1d1"}.fa-envira:before{content:"\f299"}.fa-google-scholar:before{content:"\e63b"}.fa-gitlab-square:before,.fa-square-gitlab:before{content:"\e5ae"}.fa-studiovinari:before{content:"\f3f8"}.fa-pied-piper:before{content:"\f2ae"}.fa-wordpress:before{content:"\f19a"}.fa-product-hunt:before{content:"\f288"}.fa-firefox:before{content:"\f269"}.fa-linode:before{content:"\f2b8"}.fa-goodreads:before{content:"\f3a8"}.fa-odnoklassniki-square:before,.fa-square-odnoklassniki:before{content:"\f264"}.fa-jsfiddle:before{content:"\f1cc"}.fa-sith:before{content:"\f512"}.fa-themeisle:before{content:"\f2b2"}.fa-page4:before{content:"\f3d7"}.fa-hashnode:before{content:"\e499"}.fa-react:before{content:"\f41b"}.fa-cc-paypal:before{content:"\f1f4"}.fa-squarespace:before{content:"\f5be"}.fa-cc-stripe:before{content:"\f1f5"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-bitcoin:before{content:"\f379"}.fa-keycdn:before{content:"\f3ba"}.fa-opera:before{content:"\f26a"}.fa-itch-io:before{content:"\f83a"}.fa-umbraco:before{content:"\f8e8"}.fa-galactic-senate:before{content:"\f50d"}.fa-ubuntu:before{content:"\f7df"}.fa-draft2digital:before{content:"\f396"}.fa-stripe:before{content:"\f429"}.fa-houzz:before{content:"\f27c"}.fa-gg:before{content:"\f260"}.fa-dhl:before{content:"\f790"}.fa-pinterest-square:before,.fa-square-pinterest:before{content:"\f0d3"}.fa-xing:before{content:"\f168"}.fa-blackberry:before{content:"\f37b"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-playstation:before{content:"\f3df"}.fa-quinscape:before{content:"\f459"}.fa-less:before{content:"\f41d"}.fa-blogger-b:before{content:"\f37d"}.fa-opencart:before{content:"\f23d"}.fa-vine:before{content:"\f1ca"}.fa-signal-messenger:before{content:"\e663"}.fa-paypal:before{content:"\f1ed"}.fa-gitlab:before{content:"\f296"}.fa-typo3:before{content:"\f42b"}.fa-reddit-alien:before{content:"\f281"}.fa-yahoo:before{content:"\f19e"}.fa-dailymotion:before{content:"\e052"}.fa-affiliatetheme:before{content:"\f36b"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-bootstrap:before{content:"\f836"}.fa-odnoklassniki:before{content:"\f263"}.fa-nfc-symbol:before{content:"\e531"}.fa-mintbit:before{content:"\e62f"}.fa-ethereum:before{content:"\f42e"}.fa-speaker-deck:before{content:"\f83c"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-patreon:before{content:"\f3d9"}.fa-avianex:before{content:"\f374"}.fa-ello:before{content:"\f5f1"}.fa-gofore:before{content:"\f3a7"}.fa-bimobject:before{content:"\f378"}.fa-brave-reverse:before{content:"\e63d"}.fa-facebook-f:before{content:"\f39e"}.fa-google-plus-square:before,.fa-square-google-plus:before{content:"\f0d4"}.fa-mandalorian:before{content:"\f50f"}.fa-first-order-alt:before{content:"\f50a"}.fa-osi:before{content:"\f41a"}.fa-google-wallet:before{content:"\f1ee"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-periscope:before{content:"\f3da"}.fa-fulcrum:before{content:"\f50b"}.fa-cloudscale:before{content:"\f383"}.fa-forumbee:before{content:"\f211"}.fa-mizuni:before{content:"\f3cc"}.fa-schlix:before{content:"\f3ea"}.fa-square-xing:before,.fa-xing-square:before{content:"\f169"}.fa-bandcamp:before{content:"\f2d5"}.fa-wpforms:before{content:"\f298"}.fa-cloudversify:before{content:"\f385"}.fa-usps:before{content:"\f7e1"}.fa-megaport:before{content:"\f5a3"}.fa-magento:before{content:"\f3c4"}.fa-spotify:before{content:"\f1bc"}.fa-optin-monster:before{content:"\f23c"}.fa-fly:before{content:"\f417"}.fa-aviato:before{content:"\f421"}.fa-itunes:before{content:"\f3b4"}.fa-cuttlefish:before{content:"\f38c"}.fa-blogger:before{content:"\f37c"}.fa-flickr:before{content:"\f16e"}.fa-viber:before{content:"\f409"}.fa-soundcloud:before{content:"\f1be"}.fa-digg:before{content:"\f1a6"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-letterboxd:before{content:"\e62d"}.fa-symfony:before{content:"\f83d"}.fa-maxcdn:before{content:"\f136"}.fa-etsy:before{content:"\f2d7"}.fa-facebook-messenger:before{content:"\f39f"}.fa-audible:before{content:"\f373"}.fa-think-peaks:before{content:"\f731"}.fa-bilibili:before{content:"\e3d9"}.fa-erlang:before{content:"\f39d"}.fa-x-twitter:before{content:"\e61b"}.fa-cotton-bureau:before{content:"\f89e"}.fa-dashcube:before{content:"\f210"}.fa-42-group:before,.fa-innosoft:before{content:"\e080"}.fa-stack-exchange:before{content:"\f18d"}.fa-elementor:before{content:"\f430"}.fa-pied-piper-square:before,.fa-square-pied-piper:before{content:"\e01e"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-palfed:before{content:"\f3d8"}.fa-superpowers:before{content:"\f2dd"}.fa-resolving:before{content:"\f3e7"}.fa-xbox:before{content:"\f412"}.fa-searchengin:before{content:"\f3eb"}.fa-tiktok:before{content:"\e07b"}.fa-facebook-square:before,.fa-square-facebook:before{content:"\f082"}.fa-renren:before{content:"\f18b"}.fa-linux:before{content:"\f17c"}.fa-glide:before{content:"\f2a5"}.fa-linkedin:before{content:"\f08c"}.fa-hubspot:before{content:"\f3b2"}.fa-deploydog:before{content:"\f38e"}.fa-twitch:before{content:"\f1e8"}.fa-ravelry:before{content:"\f2d9"}.fa-mixer:before{content:"\e056"}.fa-lastfm-square:before,.fa-square-lastfm:before{content:"\f203"}.fa-vimeo:before{content:"\f40a"}.fa-mendeley:before{content:"\f7b3"}.fa-uniregistry:before{content:"\f404"}.fa-figma:before{content:"\f799"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-dropbox:before{content:"\f16b"}.fa-instagram:before{content:"\f16d"}.fa-cmplid:before{content:"\e360"}.fa-upwork:before{content:"\e641"}.fa-facebook:before{content:"\f09a"}.fa-gripfire:before{content:"\f3ac"}.fa-jedi-order:before{content:"\f50e"}.fa-uikit:before{content:"\f403"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-phabricator:before{content:"\f3db"}.fa-ussunnah:before{content:"\f407"}.fa-earlybirds:before{content:"\f39a"}.fa-trade-federation:before{content:"\f513"}.fa-autoprefixer:before{content:"\f41c"}.fa-whatsapp:before{content:"\f232"}.fa-slideshare:before{content:"\f1e7"}.fa-google-play:before{content:"\f3ab"}.fa-viadeo:before{content:"\f2a9"}.fa-line:before{content:"\f3c0"}.fa-google-drive:before{content:"\f3aa"}.fa-servicestack:before{content:"\f3ec"}.fa-simplybuilt:before{content:"\f215"}.fa-bitbucket:before{content:"\f171"}.fa-imdb:before{content:"\f2d8"}.fa-deezer:before{content:"\e077"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-jira:before{content:"\f7b1"}.fa-docker:before{content:"\f395"}.fa-screenpal:before{content:"\e570"}.fa-bluetooth:before{content:"\f293"}.fa-gitter:before{content:"\f426"}.fa-d-and-d:before{content:"\f38d"}.fa-microblog:before{content:"\e01a"}.fa-cc-diners-club:before{content:"\f24c"}.fa-gg-circle:before{content:"\f261"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-yandex:before{content:"\f413"}.fa-readme:before{content:"\f4d5"}.fa-html5:before{content:"\f13b"}.fa-sellsy:before{content:"\f213"}.fa-sass:before{content:"\f41e"}.fa-wirsindhandwerk:before,.fa-wsh:before{content:"\e2d0"}.fa-buromobelexperte:before{content:"\f37f"}.fa-salesforce:before{content:"\f83b"}.fa-octopus-deploy:before{content:"\e082"}.fa-medapps:before{content:"\f3c6"}.fa-ns8:before{content:"\f3d5"}.fa-pinterest-p:before{content:"\f231"}.fa-apper:before{content:"\f371"}.fa-fort-awesome:before{content:"\f286"}.fa-waze:before{content:"\f83f"}.fa-cc-jcb:before{content:"\f24b"}.fa-snapchat-ghost:before,.fa-snapchat:before{content:"\f2ab"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-rust:before{content:"\e07a"}.fa-wix:before{content:"\f5cf"}.fa-behance-square:before,.fa-square-behance:before{content:"\f1b5"}.fa-supple:before{content:"\f3f9"}.fa-webflow:before{content:"\e65c"}.fa-rebel:before{content:"\f1d0"}.fa-css3:before{content:"\f13c"}.fa-staylinked:before{content:"\f3f5"}.fa-kaggle:before{content:"\f5fa"}.fa-space-awesome:before{content:"\e5ac"}.fa-deviantart:before{content:"\f1bd"}.fa-cpanel:before{content:"\f388"}.fa-goodreads-g:before{content:"\f3a9"}.fa-git-square:before,.fa-square-git:before{content:"\f1d2"}.fa-square-tumblr:before,.fa-tumblr-square:before{content:"\f174"}.fa-trello:before{content:"\f181"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-get-pocket:before{content:"\f265"}.fa-perbyte:before{content:"\e083"}.fa-grunt:before{content:"\f3ad"}.fa-weebly:before{content:"\f5cc"}.fa-connectdevelop:before{content:"\f20e"}.fa-leanpub:before{content:"\f212"}.fa-black-tie:before{content:"\f27e"}.fa-themeco:before{content:"\f5c6"}.fa-python:before{content:"\f3e2"}.fa-android:before{content:"\f17b"}.fa-bots:before{content:"\e340"}.fa-free-code-camp:before{content:"\f2c5"}.fa-hornbill:before{content:"\f592"}.fa-js:before{content:"\f3b8"}.fa-ideal:before{content:"\e013"}.fa-git:before{content:"\f1d3"}.fa-dev:before{content:"\f6cc"}.fa-sketch:before{content:"\f7c6"}.fa-yandex-international:before{content:"\f414"}.fa-cc-amex:before{content:"\f1f3"}.fa-uber:before{content:"\f402"}.fa-github:before{content:"\f09b"}.fa-php:before{content:"\f457"}.fa-alipay:before{content:"\f642"}.fa-youtube:before{content:"\f167"}.fa-skyatlas:before{content:"\f216"}.fa-firefox-browser:before{content:"\e007"}.fa-replyd:before{content:"\f3e6"}.fa-suse:before{content:"\f7d6"}.fa-jenkins:before{content:"\f3b6"}.fa-twitter:before{content:"\f099"}.fa-rockrms:before{content:"\f3e9"}.fa-pinterest:before{content:"\f0d2"}.fa-buffer:before{content:"\f837"}.fa-npm:before{content:"\f3d4"}.fa-yammer:before{content:"\f840"}.fa-btc:before{content:"\f15a"}.fa-dribbble:before{content:"\f17d"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-internet-explorer:before{content:"\f26b"}.fa-stubber:before{content:"\e5c7"}.fa-telegram-plane:before,.fa-telegram:before{content:"\f2c6"}.fa-old-republic:before{content:"\f510"}.fa-odysee:before{content:"\e5c6"}.fa-square-whatsapp:before,.fa-whatsapp-square:before{content:"\f40c"}.fa-node-js:before{content:"\f3d3"}.fa-edge-legacy:before{content:"\e078"}.fa-slack-hash:before,.fa-slack:before{content:"\f198"}.fa-medrt:before{content:"\f3c8"}.fa-usb:before{content:"\f287"}.fa-tumblr:before{content:"\f173"}.fa-vaadin:before{content:"\f408"}.fa-quora:before{content:"\f2c4"}.fa-square-x-twitter:before{content:"\e61a"}.fa-reacteurope:before{content:"\f75d"}.fa-medium-m:before,.fa-medium:before{content:"\f23a"}.fa-amilia:before{content:"\f36d"}.fa-mixcloud:before{content:"\f289"}.fa-flipboard:before{content:"\f44d"}.fa-viacoin:before{content:"\f237"}.fa-critical-role:before{content:"\f6c9"}.fa-sitrox:before{content:"\e44a"}.fa-discourse:before{content:"\f393"}.fa-joomla:before{content:"\f1aa"}.fa-mastodon:before{content:"\f4f6"}.fa-airbnb:before{content:"\f834"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-buy-n-large:before{content:"\f8a6"}.fa-gulp:before{content:"\f3ae"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-strava:before{content:"\f428"}.fa-ember:before{content:"\f423"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-teamspeak:before{content:"\f4f9"}.fa-pushed:before{content:"\f3e1"}.fa-wordpress-simple:before{content:"\f411"}.fa-nutritionix:before{content:"\f3d6"}.fa-wodu:before{content:"\e088"}.fa-google-pay:before{content:"\e079"}.fa-intercom:before{content:"\f7af"}.fa-zhihu:before{content:"\f63f"}.fa-korvue:before{content:"\f42f"}.fa-pix:before{content:"\e43a"}.fa-steam-symbol:before{content:"\f3f6"} \ No newline at end of file diff --git a/assets/css/doxygen.css b/assets/css/doxygen.css new file mode 100644 index 00000000..9101668c --- /dev/null +++ b/assets/css/doxygen.css @@ -0,0 +1,218 @@ +.tab { margin-left:40px } +.type { color:blue; font-weight:bold } +.func { font-weight:bold } +h1.groupheader { + font-size: 150%; +} +h2.groupheader { + border-bottom: 1px solid #69A1D8; + color: --bs-heading-color; + font-size: 150%; + font-weight: normal; + padding-top: 4px; + padding-bottom: 4px; + width: 100%; +} +h3.groupheader { + font-size: 100%; +} +[data-bs-theme=light] h3 { + color: --bs-heading-color; +} +[data-bs-theme=dark] h3 { + color: black; +} +[data-bs-theme=dark] .memdoc { + color: #212529; +} +dt { + font-weight: bold; +} +dl.section { + margin-left: 0px; + padding-left: 0px; +} +dl.section.DocNodeRTL { + margin-right: 0px; + padding-right: 0px; +} +dl.section dd { + margin-bottom: 6px; +} +a.el { + font-weight: bold; +} +dl.el { + margin-left: -1cm; +} +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-left-color: currentcolor; + border-color:#D0C000; +} +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} +dl.todo.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00C0E0; +} +.memtitle { + padding: 8px; + border-top: 1px solid #92BAE2; + border-left: 1px solid #92BAE2; + border-right: 1px solid #92BAE2; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url(../img/nav_f.png); + background-repeat: repeat-x; + background-color: #DBE8F5; + line-height: 1.25; + font-weight: 300; + float:left; +} +.memdoc, dl.reflist dd { + border-bottom: 1px solid #92BAE2; + border-left: 1px solid #92BAE2; + border-right: 1px solid #92BAE2; + padding: 6px 10px 2px 10px; + background-color: #FAFCFD; + border-top-width: 0; + background-image:url(../img/nav_g.png); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} +.memitem.glow { + box-shadow: 0 0 15px cyan; +} +.memname { + font-weight: 400; + margin-left: 6px; +} +.memname td { + vertical-align: bottom; +} +.memproto, dl.reflist dt { + border-top: 1px solid #92BAE2; + border-left: 1px solid #92BAE2; + border-right: 1px solid #92BAE2; + padding: 6px 0px 6px 0px; + color: #153351; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #D6E5F4; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; +} +dl.reflist dt { + padding: 5px; +} +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} +.paramkey { + text-align: right; +} +.paramtype { + white-space: nowrap; +} +.paramname { +/* color: #602020; */ + color: #D20F0F; + white-space: nowrap; + font-weight:bold +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} +.params .paramdir, .tparams .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} +dl.citelist { + margin-bottom:50px; +} +dl.citelist dt { + color:#1E4974; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} +/*# sourceMappingURL=data:application/json;base64,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QUU7RUFLdEIsWUFBQSxhQUFBLEVBQUE7RUFIQSxZQUFZLGFBQWEsRUFBRTtFQUMzQixPQUFBLGdCQUlFLEVBQUE7RUFIRix5QkFJd0IsdUJBQUEsRUFBQTtFQUh4QixXQUFBLGFBQUEsRUFJdUI7RUFIdkIsV0FJRSx3QkFBZ0IsRUFBQTtFQUhsQjs7SUFFRSx3QkFBd0I7SUFDeEIsc0JBQUE7SUFDQSxxQkFBQTtJQUNBLGdCQUFBO0lBQ0EsY0FBQTtFQUNGO0FBQ0YiLCJmaWxlIjoiZG94eWdlbi5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyItLS1cbi0tLVxuLnRhYiAgIHsgbWFyZ2luLWxlZnQ6NDBweCB9XG4udHlwZSAgeyBjb2xvcjpibHVlIH1cbi5wYXJhbSB7IGNvbG9yOiNEMjBGMEY7IGZvbnQtd2VpZ2h0OmJvbGQgfVxuLm1lbWRvYywgZGwucmVmbGlzdCBkZCB7XG5cdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjOTJCQUUyO1xuXHRib3JkZXItbGVmdDogMXB4IHNvbGlkICM5MkJBRTI7XG5cdGJvcmRlci1yaWdodDogMXB4IHNvbGlkICM5MkJBRTI7XG5cdHBhZGRpbmc6IDZweCAxMHB4IDJweCAxMHB4O1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjRkFGQ0ZEO1xuXHRib3JkZXItdG9wLXdpZHRoOiAwO1xuXHRiYWNrZ3JvdW5kLWltYWdlOnVybCh7eyBcIi9hc3NldHMvaW1nL25hdl9nLnBuZ1wiIHwgcmVsYXRpdmVfdXJsIH19KTtcblx0YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXg7XG5cdGJhY2tncm91bmQtY29sb3I6ICNGRkZGRkY7XG5cdC8qIG9wZXJhIHNwZWNpZmljIG1hcmt1cCAqL1xuXHRib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA0cHg7XG5cdGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA0cHg7XG5cdGJveC1zaGFkb3c6IDVweCA1cHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xNSk7XG5cdC8qIGZpcmVmb3ggc3BlY2lmaWMgbWFya3VwICovXG5cdC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21sZWZ0OiA0cHg7XG5cdC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21yaWdodDogNHB4O1xuXHQtbW96LWJveC1zaGFkb3c6IHJnYmEoMCwgMCwgMCwgMC4xNSkgNXB4IDVweCA1cHg7XG5cdC8qIHdlYmtpdCBzcGVjaWZpYyBtYXJrdXAgKi9cblx0LXdlYmtpdC1ib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA0cHg7XG5cdC13ZWJraXQtYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDRweDtcblx0LXdlYmtpdC1ib3gtc2hhZG93OiA1cHggNXB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTUpO1xufVxuLnBhcmFta2V5IHtcblx0dGV4dC1hbGlnbjogcmlnaHQ7XG59XG4ucGFyYW10eXBlIHtcblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cbi5wYXJhbW5hbWUge1xuLypcdGNvbG9yOiAjNjAyMDIwOyAqL1xuXHRjb2xvcjogI0QyMEYwRjtcblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cbi5wYXJhbW5hbWUgZW0ge1xuXHRmb250LXN0eWxlOiBub3JtYWw7XG59XG4ucGFyYW1uYW1lIGNvZGUge1xuXHRsaW5lLWhlaWdodDogMTRweDtcbn1cbi5wYXJhbXMsIC5yZXR2YWwsIC5leGNlcHRpb24sIC50cGFyYW1zIHtcblx0bWFyZ2luLWxlZnQ6IDBweDtcblx0cGFkZGluZy1sZWZ0OiAwcHg7XG59XG4ucGFyYW1zIC5wYXJhbW5hbWUsIC5yZXR2YWwgLnBhcmFtbmFtZSwgLnRwYXJhbXMgLnBhcmFtbmFtZSwgLmV4Y2VwdGlvbiAucGFyYW1uYW1lIHtcblx0Zm9udC13ZWlnaHQ6IGJvbGQ7XG5cdHZlcnRpY2FsLWFsaWduOiB0b3A7XG59XG4ucGFyYW1zIC5wYXJhbXR5cGUsIC50cGFyYW1zIC5wYXJhbXR5cGUge1xuXHRmb250LXN0eWxlOiBpdGFsaWM7XG5cdHZlcnRpY2FsLWFsaWduOiB0b3A7XG59XG4ucGFyYW1zIC5wYXJhbWRpciwgLnRwYXJhbXMgLnBhcmFtZGlyIHtcblx0Zm9udC1mYW1pbHk6IFwiY291cmllciBuZXdcIixjb3VyaWVyLG1vbm9zcGFjZTtcblx0dmVydGljYWwtYWxpZ246IHRvcDtcbn1cbiJdfQ== */ \ No newline at end of file diff --git a/assets/css/fontawesome.min.css b/assets/css/fontawesome.min.css new file mode 100644 index 00000000..688dd75d --- /dev/null +++ b/assets/css/fontawesome.min.css @@ -0,0 +1,9 @@ +/*! + * Font Awesome Free 6.5.1 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2023 Fonticons, Inc. + */ +.fa{font-family:var(--fa-style-family,"Font Awesome 6 Free");font-weight:var(--fa-style,900)}.fa,.fa-brands,.fa-classic,.fa-regular,.fa-sharp,.fa-solid,.fab,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:var(--fa-display,inline-block);font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fa-classic,.fa-regular,.fa-solid,.far,.fas{font-family:"Font Awesome 6 Free"}.fa-brands,.fab{font-family:"Font Awesome 6 Brands"}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.08333em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.07143em;vertical-align:.05357em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.04167em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin,2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(var(--fa-li-width, 2em)*-1);position:absolute;text-align:center;width:var(--fa-li-width,2em);line-height:inherit}.fa-border{border-radius:var(--fa-border-radius,.1em);border:var(--fa-border-width,.08em) var(--fa-border-style,solid) var(--fa-border-color,#eee);padding:var(--fa-border-padding,.2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin,.3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin,.3em)}.fa-beat{-webkit-animation-name:fa-beat;animation-name:fa-beat;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-bounce{-webkit-animation-name:fa-bounce;animation-name:fa-bounce;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1))}.fa-fade{-webkit-animation-name:fa-fade;animation-name:fa-fade;-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-beat-fade,.fa-fade{-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s)}.fa-beat-fade{-webkit-animation-name:fa-beat-fade;animation-name:fa-beat-fade;-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-flip{-webkit-animation-name:fa-flip;animation-name:fa-flip;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-shake{-webkit-animation-name:fa-shake;animation-name:fa-shake;-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-shake,.fa-spin{-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal)}.fa-spin{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-duration:var(--fa-animation-duration,2s);animation-duration:var(--fa-animation-duration,2s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin-reverse{--fa-animation-direction:reverse}.fa-pulse,.fa-spin-pulse{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,steps(8));animation-timing-function:var(--fa-animation-timing,steps(8))}@media (prefers-reduced-motion:reduce){.fa-beat,.fa-beat-fade,.fa-bounce,.fa-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{-webkit-animation-delay:-1ms;animation-delay:-1ms;-webkit-animation-duration:1ms;animation-duration:1ms;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-transition-delay:0s;transition-delay:0s;-webkit-transition-duration:0s;transition-duration:0s}}@-webkit-keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@-webkit-keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@-webkit-keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@-webkit-keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@-webkit-keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@-webkit-keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}.fa-rotate-by{-webkit-transform:rotate(var(--fa-rotate-angle,none));transform:rotate(var(--fa-rotate-angle,none))}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%;z-index:var(--fa-stack-z-index,auto)}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:var(--fa-inverse,#fff)} + +.fa-0:before{content:"\30"}.fa-1:before{content:"\31"}.fa-2:before{content:"\32"}.fa-3:before{content:"\33"}.fa-4:before{content:"\34"}.fa-5:before{content:"\35"}.fa-6:before{content:"\36"}.fa-7:before{content:"\37"}.fa-8:before{content:"\38"}.fa-9:before{content:"\39"}.fa-fill-drip:before{content:"\f576"}.fa-arrows-to-circle:before{content:"\e4bd"}.fa-chevron-circle-right:before,.fa-circle-chevron-right:before{content:"\f138"}.fa-at:before{content:"\40"}.fa-trash-alt:before,.fa-trash-can:before{content:"\f2ed"}.fa-text-height:before{content:"\f034"}.fa-user-times:before,.fa-user-xmark:before{content:"\f235"}.fa-stethoscope:before{content:"\f0f1"}.fa-comment-alt:before,.fa-message:before{content:"\f27a"}.fa-info:before{content:"\f129"}.fa-compress-alt:before,.fa-down-left-and-up-right-to-center:before{content:"\f422"}.fa-explosion:before{content:"\e4e9"}.fa-file-alt:before,.fa-file-lines:before,.fa-file-text:before{content:"\f15c"}.fa-wave-square:before{content:"\f83e"}.fa-ring:before{content:"\f70b"}.fa-building-un:before{content:"\e4d9"}.fa-dice-three:before{content:"\f527"}.fa-calendar-alt:before,.fa-calendar-days:before{content:"\f073"}.fa-anchor-circle-check:before{content:"\e4aa"}.fa-building-circle-arrow-right:before{content:"\e4d1"}.fa-volleyball-ball:before,.fa-volleyball:before{content:"\f45f"}.fa-arrows-up-to-line:before{content:"\e4c2"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-circle-minus:before,.fa-minus-circle:before{content:"\f056"}.fa-door-open:before{content:"\f52b"}.fa-right-from-bracket:before,.fa-sign-out-alt:before{content:"\f2f5"}.fa-atom:before{content:"\f5d2"}.fa-soap:before{content:"\e06e"}.fa-heart-music-camera-bolt:before,.fa-icons:before{content:"\f86d"}.fa-microphone-alt-slash:before,.fa-microphone-lines-slash:before{content:"\f539"}.fa-bridge-circle-check:before{content:"\e4c9"}.fa-pump-medical:before{content:"\e06a"}.fa-fingerprint:before{content:"\f577"}.fa-hand-point-right:before{content:"\f0a4"}.fa-magnifying-glass-location:before,.fa-search-location:before{content:"\f689"}.fa-forward-step:before,.fa-step-forward:before{content:"\f051"}.fa-face-smile-beam:before,.fa-smile-beam:before{content:"\f5b8"}.fa-flag-checkered:before{content:"\f11e"}.fa-football-ball:before,.fa-football:before{content:"\f44e"}.fa-school-circle-exclamation:before{content:"\e56c"}.fa-crop:before{content:"\f125"}.fa-angle-double-down:before,.fa-angles-down:before{content:"\f103"}.fa-users-rectangle:before{content:"\e594"}.fa-people-roof:before{content:"\e537"}.fa-people-line:before{content:"\e534"}.fa-beer-mug-empty:before,.fa-beer:before{content:"\f0fc"}.fa-diagram-predecessor:before{content:"\e477"}.fa-arrow-up-long:before,.fa-long-arrow-up:before{content:"\f176"}.fa-burn:before,.fa-fire-flame-simple:before{content:"\f46a"}.fa-male:before,.fa-person:before{content:"\f183"}.fa-laptop:before{content:"\f109"}.fa-file-csv:before{content:"\f6dd"}.fa-menorah:before{content:"\f676"}.fa-truck-plane:before{content:"\e58f"}.fa-record-vinyl:before{content:"\f8d9"}.fa-face-grin-stars:before,.fa-grin-stars:before{content:"\f587"}.fa-bong:before{content:"\f55c"}.fa-pastafarianism:before,.fa-spaghetti-monster-flying:before{content:"\f67b"}.fa-arrow-down-up-across-line:before{content:"\e4af"}.fa-spoon:before,.fa-utensil-spoon:before{content:"\f2e5"}.fa-jar-wheat:before{content:"\e517"}.fa-envelopes-bulk:before,.fa-mail-bulk:before{content:"\f674"}.fa-file-circle-exclamation:before{content:"\e4eb"}.fa-circle-h:before,.fa-hospital-symbol:before{content:"\f47e"}.fa-pager:before{content:"\f815"}.fa-address-book:before,.fa-contact-book:before{content:"\f2b9"}.fa-strikethrough:before{content:"\f0cc"}.fa-k:before{content:"\4b"}.fa-landmark-flag:before{content:"\e51c"}.fa-pencil-alt:before,.fa-pencil:before{content:"\f303"}.fa-backward:before{content:"\f04a"}.fa-caret-right:before{content:"\f0da"}.fa-comments:before{content:"\f086"}.fa-file-clipboard:before,.fa-paste:before{content:"\f0ea"}.fa-code-pull-request:before{content:"\e13c"}.fa-clipboard-list:before{content:"\f46d"}.fa-truck-loading:before,.fa-truck-ramp-box:before{content:"\f4de"}.fa-user-check:before{content:"\f4fc"}.fa-vial-virus:before{content:"\e597"}.fa-sheet-plastic:before{content:"\e571"}.fa-blog:before{content:"\f781"}.fa-user-ninja:before{content:"\f504"}.fa-person-arrow-up-from-line:before{content:"\e539"}.fa-scroll-torah:before,.fa-torah:before{content:"\f6a0"}.fa-broom-ball:before,.fa-quidditch-broom-ball:before,.fa-quidditch:before{content:"\f458"}.fa-toggle-off:before{content:"\f204"}.fa-archive:before,.fa-box-archive:before{content:"\f187"}.fa-person-drowning:before{content:"\e545"}.fa-arrow-down-9-1:before,.fa-sort-numeric-desc:before,.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-face-grin-tongue-squint:before,.fa-grin-tongue-squint:before{content:"\f58a"}.fa-spray-can:before{content:"\f5bd"}.fa-truck-monster:before{content:"\f63b"}.fa-w:before{content:"\57"}.fa-earth-africa:before,.fa-globe-africa:before{content:"\f57c"}.fa-rainbow:before{content:"\f75b"}.fa-circle-notch:before{content:"\f1ce"}.fa-tablet-alt:before,.fa-tablet-screen-button:before{content:"\f3fa"}.fa-paw:before{content:"\f1b0"}.fa-cloud:before{content:"\f0c2"}.fa-trowel-bricks:before{content:"\e58a"}.fa-face-flushed:before,.fa-flushed:before{content:"\f579"}.fa-hospital-user:before{content:"\f80d"}.fa-tent-arrow-left-right:before{content:"\e57f"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-binoculars:before{content:"\f1e5"}.fa-microphone-slash:before{content:"\f131"}.fa-box-tissue:before{content:"\e05b"}.fa-motorcycle:before{content:"\f21c"}.fa-bell-concierge:before,.fa-concierge-bell:before{content:"\f562"}.fa-pen-ruler:before,.fa-pencil-ruler:before{content:"\f5ae"}.fa-people-arrows-left-right:before,.fa-people-arrows:before{content:"\e068"}.fa-mars-and-venus-burst:before{content:"\e523"}.fa-caret-square-right:before,.fa-square-caret-right:before{content:"\f152"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-sun-plant-wilt:before{content:"\e57a"}.fa-toilets-portable:before{content:"\e584"}.fa-hockey-puck:before{content:"\f453"}.fa-table:before{content:"\f0ce"}.fa-magnifying-glass-arrow-right:before{content:"\e521"}.fa-digital-tachograph:before,.fa-tachograph-digital:before{content:"\f566"}.fa-users-slash:before{content:"\e073"}.fa-clover:before{content:"\e139"}.fa-mail-reply:before,.fa-reply:before{content:"\f3e5"}.fa-star-and-crescent:before{content:"\f699"}.fa-house-fire:before{content:"\e50c"}.fa-minus-square:before,.fa-square-minus:before{content:"\f146"}.fa-helicopter:before{content:"\f533"}.fa-compass:before{content:"\f14e"}.fa-caret-square-down:before,.fa-square-caret-down:before{content:"\f150"}.fa-file-circle-question:before{content:"\e4ef"}.fa-laptop-code:before{content:"\f5fc"}.fa-swatchbook:before{content:"\f5c3"}.fa-prescription-bottle:before{content:"\f485"}.fa-bars:before,.fa-navicon:before{content:"\f0c9"}.fa-people-group:before{content:"\e533"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-heart-broken:before,.fa-heart-crack:before{content:"\f7a9"}.fa-external-link-square-alt:before,.fa-square-up-right:before{content:"\f360"}.fa-face-kiss-beam:before,.fa-kiss-beam:before{content:"\f597"}.fa-film:before{content:"\f008"}.fa-ruler-horizontal:before{content:"\f547"}.fa-people-robbery:before{content:"\e536"}.fa-lightbulb:before{content:"\f0eb"}.fa-caret-left:before{content:"\f0d9"}.fa-circle-exclamation:before,.fa-exclamation-circle:before{content:"\f06a"}.fa-school-circle-xmark:before{content:"\e56d"}.fa-arrow-right-from-bracket:before,.fa-sign-out:before{content:"\f08b"}.fa-chevron-circle-down:before,.fa-circle-chevron-down:before{content:"\f13a"}.fa-unlock-alt:before,.fa-unlock-keyhole:before{content:"\f13e"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-headphones-alt:before,.fa-headphones-simple:before{content:"\f58f"}.fa-sitemap:before{content:"\f0e8"}.fa-circle-dollar-to-slot:before,.fa-donate:before{content:"\f4b9"}.fa-memory:before{content:"\f538"}.fa-road-spikes:before{content:"\e568"}.fa-fire-burner:before{content:"\e4f1"}.fa-flag:before{content:"\f024"}.fa-hanukiah:before{content:"\f6e6"}.fa-feather:before{content:"\f52d"}.fa-volume-down:before,.fa-volume-low:before{content:"\f027"}.fa-comment-slash:before{content:"\f4b3"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-compress:before{content:"\f066"}.fa-wheat-alt:before,.fa-wheat-awn:before{content:"\e2cd"}.fa-ankh:before{content:"\f644"}.fa-hands-holding-child:before{content:"\e4fa"}.fa-asterisk:before{content:"\2a"}.fa-check-square:before,.fa-square-check:before{content:"\f14a"}.fa-peseta-sign:before{content:"\e221"}.fa-header:before,.fa-heading:before{content:"\f1dc"}.fa-ghost:before{content:"\f6e2"}.fa-list-squares:before,.fa-list:before{content:"\f03a"}.fa-phone-square-alt:before,.fa-square-phone-flip:before{content:"\f87b"}.fa-cart-plus:before{content:"\f217"}.fa-gamepad:before{content:"\f11b"}.fa-circle-dot:before,.fa-dot-circle:before{content:"\f192"}.fa-dizzy:before,.fa-face-dizzy:before{content:"\f567"}.fa-egg:before{content:"\f7fb"}.fa-house-medical-circle-xmark:before{content:"\e513"}.fa-campground:before{content:"\f6bb"}.fa-folder-plus:before{content:"\f65e"}.fa-futbol-ball:before,.fa-futbol:before,.fa-soccer-ball:before{content:"\f1e3"}.fa-paint-brush:before,.fa-paintbrush:before{content:"\f1fc"}.fa-lock:before{content:"\f023"}.fa-gas-pump:before{content:"\f52f"}.fa-hot-tub-person:before,.fa-hot-tub:before{content:"\f593"}.fa-map-location:before,.fa-map-marked:before{content:"\f59f"}.fa-house-flood-water:before{content:"\e50e"}.fa-tree:before{content:"\f1bb"}.fa-bridge-lock:before{content:"\e4cc"}.fa-sack-dollar:before{content:"\f81d"}.fa-edit:before,.fa-pen-to-square:before{content:"\f044"}.fa-car-side:before{content:"\f5e4"}.fa-share-alt:before,.fa-share-nodes:before{content:"\f1e0"}.fa-heart-circle-minus:before{content:"\e4ff"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-microscope:before{content:"\f610"}.fa-sink:before{content:"\e06d"}.fa-bag-shopping:before,.fa-shopping-bag:before{content:"\f290"}.fa-arrow-down-z-a:before,.fa-sort-alpha-desc:before,.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-mitten:before{content:"\f7b5"}.fa-person-rays:before{content:"\e54d"}.fa-users:before{content:"\f0c0"}.fa-eye-slash:before{content:"\f070"}.fa-flask-vial:before{content:"\e4f3"}.fa-hand-paper:before,.fa-hand:before{content:"\f256"}.fa-om:before{content:"\f679"}.fa-worm:before{content:"\e599"}.fa-house-circle-xmark:before{content:"\e50b"}.fa-plug:before{content:"\f1e6"}.fa-chevron-up:before{content:"\f077"}.fa-hand-spock:before{content:"\f259"}.fa-stopwatch:before{content:"\f2f2"}.fa-face-kiss:before,.fa-kiss:before{content:"\f596"}.fa-bridge-circle-xmark:before{content:"\e4cb"}.fa-face-grin-tongue:before,.fa-grin-tongue:before{content:"\f589"}.fa-chess-bishop:before{content:"\f43a"}.fa-face-grin-wink:before,.fa-grin-wink:before{content:"\f58c"}.fa-deaf:before,.fa-deafness:before,.fa-ear-deaf:before,.fa-hard-of-hearing:before{content:"\f2a4"}.fa-road-circle-check:before{content:"\e564"}.fa-dice-five:before{content:"\f523"}.fa-rss-square:before,.fa-square-rss:before{content:"\f143"}.fa-land-mine-on:before{content:"\e51b"}.fa-i-cursor:before{content:"\f246"}.fa-stamp:before{content:"\f5bf"}.fa-stairs:before{content:"\e289"}.fa-i:before{content:"\49"}.fa-hryvnia-sign:before,.fa-hryvnia:before{content:"\f6f2"}.fa-pills:before{content:"\f484"}.fa-face-grin-wide:before,.fa-grin-alt:before{content:"\f581"}.fa-tooth:before{content:"\f5c9"}.fa-v:before{content:"\56"}.fa-bangladeshi-taka-sign:before{content:"\e2e6"}.fa-bicycle:before{content:"\f206"}.fa-rod-asclepius:before,.fa-rod-snake:before,.fa-staff-aesculapius:before,.fa-staff-snake:before{content:"\e579"}.fa-head-side-cough-slash:before{content:"\e062"}.fa-ambulance:before,.fa-truck-medical:before{content:"\f0f9"}.fa-wheat-awn-circle-exclamation:before{content:"\e598"}.fa-snowman:before{content:"\f7d0"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-road-barrier:before{content:"\e562"}.fa-school:before{content:"\f549"}.fa-igloo:before{content:"\f7ae"}.fa-joint:before{content:"\f595"}.fa-angle-right:before{content:"\f105"}.fa-horse:before{content:"\f6f0"}.fa-q:before{content:"\51"}.fa-g:before{content:"\47"}.fa-notes-medical:before{content:"\f481"}.fa-temperature-2:before,.fa-temperature-half:before,.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-dong-sign:before{content:"\e169"}.fa-capsules:before{content:"\f46b"}.fa-poo-bolt:before,.fa-poo-storm:before{content:"\f75a"}.fa-face-frown-open:before,.fa-frown-open:before{content:"\f57a"}.fa-hand-point-up:before{content:"\f0a6"}.fa-money-bill:before{content:"\f0d6"}.fa-bookmark:before{content:"\f02e"}.fa-align-justify:before{content:"\f039"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-helmet-un:before{content:"\e503"}.fa-bullseye:before{content:"\f140"}.fa-bacon:before{content:"\f7e5"}.fa-hand-point-down:before{content:"\f0a7"}.fa-arrow-up-from-bracket:before{content:"\e09a"}.fa-folder-blank:before,.fa-folder:before{content:"\f07b"}.fa-file-medical-alt:before,.fa-file-waveform:before{content:"\f478"}.fa-radiation:before{content:"\f7b9"}.fa-chart-simple:before{content:"\e473"}.fa-mars-stroke:before{content:"\f229"}.fa-vial:before{content:"\f492"}.fa-dashboard:before,.fa-gauge-med:before,.fa-gauge:before,.fa-tachometer-alt-average:before{content:"\f624"}.fa-magic-wand-sparkles:before,.fa-wand-magic-sparkles:before{content:"\e2ca"}.fa-e:before{content:"\45"}.fa-pen-alt:before,.fa-pen-clip:before{content:"\f305"}.fa-bridge-circle-exclamation:before{content:"\e4ca"}.fa-user:before{content:"\f007"}.fa-school-circle-check:before{content:"\e56b"}.fa-dumpster:before{content:"\f793"}.fa-shuttle-van:before,.fa-van-shuttle:before{content:"\f5b6"}.fa-building-user:before{content:"\e4da"}.fa-caret-square-left:before,.fa-square-caret-left:before{content:"\f191"}.fa-highlighter:before{content:"\f591"}.fa-key:before{content:"\f084"}.fa-bullhorn:before{content:"\f0a1"}.fa-globe:before{content:"\f0ac"}.fa-synagogue:before{content:"\f69b"}.fa-person-half-dress:before{content:"\e548"}.fa-road-bridge:before{content:"\e563"}.fa-location-arrow:before{content:"\f124"}.fa-c:before{content:"\43"}.fa-tablet-button:before{content:"\f10a"}.fa-building-lock:before{content:"\e4d6"}.fa-pizza-slice:before{content:"\f818"}.fa-money-bill-wave:before{content:"\f53a"}.fa-area-chart:before,.fa-chart-area:before{content:"\f1fe"}.fa-house-flag:before{content:"\e50d"}.fa-person-circle-minus:before{content:"\e540"}.fa-ban:before,.fa-cancel:before{content:"\f05e"}.fa-camera-rotate:before{content:"\e0d8"}.fa-air-freshener:before,.fa-spray-can-sparkles:before{content:"\f5d0"}.fa-star:before{content:"\f005"}.fa-repeat:before{content:"\f363"}.fa-cross:before{content:"\f654"}.fa-box:before{content:"\f466"}.fa-venus-mars:before{content:"\f228"}.fa-arrow-pointer:before,.fa-mouse-pointer:before{content:"\f245"}.fa-expand-arrows-alt:before,.fa-maximize:before{content:"\f31e"}.fa-charging-station:before{content:"\f5e7"}.fa-shapes:before,.fa-triangle-circle-square:before{content:"\f61f"}.fa-random:before,.fa-shuffle:before{content:"\f074"}.fa-person-running:before,.fa-running:before{content:"\f70c"}.fa-mobile-retro:before{content:"\e527"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-spider:before{content:"\f717"}.fa-hands-bound:before{content:"\e4f9"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-plane-circle-exclamation:before{content:"\e556"}.fa-x-ray:before{content:"\f497"}.fa-spell-check:before{content:"\f891"}.fa-slash:before{content:"\f715"}.fa-computer-mouse:before,.fa-mouse:before{content:"\f8cc"}.fa-arrow-right-to-bracket:before,.fa-sign-in:before{content:"\f090"}.fa-shop-slash:before,.fa-store-alt-slash:before{content:"\e070"}.fa-server:before{content:"\f233"}.fa-virus-covid-slash:before{content:"\e4a9"}.fa-shop-lock:before{content:"\e4a5"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-blender-phone:before{content:"\f6b6"}.fa-building-wheat:before{content:"\e4db"}.fa-person-breastfeeding:before{content:"\e53a"}.fa-right-to-bracket:before,.fa-sign-in-alt:before{content:"\f2f6"}.fa-venus:before{content:"\f221"}.fa-passport:before{content:"\f5ab"}.fa-heart-pulse:before,.fa-heartbeat:before{content:"\f21e"}.fa-people-carry-box:before,.fa-people-carry:before{content:"\f4ce"}.fa-temperature-high:before{content:"\f769"}.fa-microchip:before{content:"\f2db"}.fa-crown:before{content:"\f521"}.fa-weight-hanging:before{content:"\f5cd"}.fa-xmarks-lines:before{content:"\e59a"}.fa-file-prescription:before{content:"\f572"}.fa-weight-scale:before,.fa-weight:before{content:"\f496"}.fa-user-friends:before,.fa-user-group:before{content:"\f500"}.fa-arrow-up-a-z:before,.fa-sort-alpha-up:before{content:"\f15e"}.fa-chess-knight:before{content:"\f441"}.fa-face-laugh-squint:before,.fa-laugh-squint:before{content:"\f59b"}.fa-wheelchair:before{content:"\f193"}.fa-arrow-circle-up:before,.fa-circle-arrow-up:before{content:"\f0aa"}.fa-toggle-on:before{content:"\f205"}.fa-person-walking:before,.fa-walking:before{content:"\f554"}.fa-l:before{content:"\4c"}.fa-fire:before{content:"\f06d"}.fa-bed-pulse:before,.fa-procedures:before{content:"\f487"}.fa-shuttle-space:before,.fa-space-shuttle:before{content:"\f197"}.fa-face-laugh:before,.fa-laugh:before{content:"\f599"}.fa-folder-open:before{content:"\f07c"}.fa-heart-circle-plus:before{content:"\e500"}.fa-code-fork:before{content:"\e13b"}.fa-city:before{content:"\f64f"}.fa-microphone-alt:before,.fa-microphone-lines:before{content:"\f3c9"}.fa-pepper-hot:before{content:"\f816"}.fa-unlock:before{content:"\f09c"}.fa-colon-sign:before{content:"\e140"}.fa-headset:before{content:"\f590"}.fa-store-slash:before{content:"\e071"}.fa-road-circle-xmark:before{content:"\e566"}.fa-user-minus:before{content:"\f503"}.fa-mars-stroke-up:before,.fa-mars-stroke-v:before{content:"\f22a"}.fa-champagne-glasses:before,.fa-glass-cheers:before{content:"\f79f"}.fa-clipboard:before{content:"\f328"}.fa-house-circle-exclamation:before{content:"\e50a"}.fa-file-arrow-up:before,.fa-file-upload:before{content:"\f574"}.fa-wifi-3:before,.fa-wifi-strong:before,.fa-wifi:before{content:"\f1eb"}.fa-bath:before,.fa-bathtub:before{content:"\f2cd"}.fa-underline:before{content:"\f0cd"}.fa-user-edit:before,.fa-user-pen:before{content:"\f4ff"}.fa-signature:before{content:"\f5b7"}.fa-stroopwafel:before{content:"\f551"}.fa-bold:before{content:"\f032"}.fa-anchor-lock:before{content:"\e4ad"}.fa-building-ngo:before{content:"\e4d7"}.fa-manat-sign:before{content:"\e1d5"}.fa-not-equal:before{content:"\f53e"}.fa-border-style:before,.fa-border-top-left:before{content:"\f853"}.fa-map-location-dot:before,.fa-map-marked-alt:before{content:"\f5a0"}.fa-jedi:before{content:"\f669"}.fa-poll:before,.fa-square-poll-vertical:before{content:"\f681"}.fa-mug-hot:before{content:"\f7b6"}.fa-battery-car:before,.fa-car-battery:before{content:"\f5df"}.fa-gift:before{content:"\f06b"}.fa-dice-two:before{content:"\f528"}.fa-chess-queen:before{content:"\f445"}.fa-glasses:before{content:"\f530"}.fa-chess-board:before{content:"\f43c"}.fa-building-circle-check:before{content:"\e4d2"}.fa-person-chalkboard:before{content:"\e53d"}.fa-mars-stroke-h:before,.fa-mars-stroke-right:before{content:"\f22b"}.fa-hand-back-fist:before,.fa-hand-rock:before{content:"\f255"}.fa-caret-square-up:before,.fa-square-caret-up:before{content:"\f151"}.fa-cloud-showers-water:before{content:"\e4e4"}.fa-bar-chart:before,.fa-chart-bar:before{content:"\f080"}.fa-hands-bubbles:before,.fa-hands-wash:before{content:"\e05e"}.fa-less-than-equal:before{content:"\f537"}.fa-train:before{content:"\f238"}.fa-eye-low-vision:before,.fa-low-vision:before{content:"\f2a8"}.fa-crow:before{content:"\f520"}.fa-sailboat:before{content:"\e445"}.fa-window-restore:before{content:"\f2d2"}.fa-plus-square:before,.fa-square-plus:before{content:"\f0fe"}.fa-torii-gate:before{content:"\f6a1"}.fa-frog:before{content:"\f52e"}.fa-bucket:before{content:"\e4cf"}.fa-image:before{content:"\f03e"}.fa-microphone:before{content:"\f130"}.fa-cow:before{content:"\f6c8"}.fa-caret-up:before{content:"\f0d8"}.fa-screwdriver:before{content:"\f54a"}.fa-folder-closed:before{content:"\e185"}.fa-house-tsunami:before{content:"\e515"}.fa-square-nfi:before{content:"\e576"}.fa-arrow-up-from-ground-water:before{content:"\e4b5"}.fa-glass-martini-alt:before,.fa-martini-glass:before{content:"\f57b"}.fa-rotate-back:before,.fa-rotate-backward:before,.fa-rotate-left:before,.fa-undo-alt:before{content:"\f2ea"}.fa-columns:before,.fa-table-columns:before{content:"\f0db"}.fa-lemon:before{content:"\f094"}.fa-head-side-mask:before{content:"\e063"}.fa-handshake:before{content:"\f2b5"}.fa-gem:before{content:"\f3a5"}.fa-dolly-box:before,.fa-dolly:before{content:"\f472"}.fa-smoking:before{content:"\f48d"}.fa-compress-arrows-alt:before,.fa-minimize:before{content:"\f78c"}.fa-monument:before{content:"\f5a6"}.fa-snowplow:before{content:"\f7d2"}.fa-angle-double-right:before,.fa-angles-right:before{content:"\f101"}.fa-cannabis:before{content:"\f55f"}.fa-circle-play:before,.fa-play-circle:before{content:"\f144"}.fa-tablets:before{content:"\f490"}.fa-ethernet:before{content:"\f796"}.fa-eur:before,.fa-euro-sign:before,.fa-euro:before{content:"\f153"}.fa-chair:before{content:"\f6c0"}.fa-check-circle:before,.fa-circle-check:before{content:"\f058"}.fa-circle-stop:before,.fa-stop-circle:before{content:"\f28d"}.fa-compass-drafting:before,.fa-drafting-compass:before{content:"\f568"}.fa-plate-wheat:before{content:"\e55a"}.fa-icicles:before{content:"\f7ad"}.fa-person-shelter:before{content:"\e54f"}.fa-neuter:before{content:"\f22c"}.fa-id-badge:before{content:"\f2c1"}.fa-marker:before{content:"\f5a1"}.fa-face-laugh-beam:before,.fa-laugh-beam:before{content:"\f59a"}.fa-helicopter-symbol:before{content:"\e502"}.fa-universal-access:before{content:"\f29a"}.fa-chevron-circle-up:before,.fa-circle-chevron-up:before{content:"\f139"}.fa-lari-sign:before{content:"\e1c8"}.fa-volcano:before{content:"\f770"}.fa-person-walking-dashed-line-arrow-right:before{content:"\e553"}.fa-gbp:before,.fa-pound-sign:before,.fa-sterling-sign:before{content:"\f154"}.fa-viruses:before{content:"\e076"}.fa-square-person-confined:before{content:"\e577"}.fa-user-tie:before{content:"\f508"}.fa-arrow-down-long:before,.fa-long-arrow-down:before{content:"\f175"}.fa-tent-arrow-down-to-line:before{content:"\e57e"}.fa-certificate:before{content:"\f0a3"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-suitcase:before{content:"\f0f2"}.fa-person-skating:before,.fa-skating:before{content:"\f7c5"}.fa-filter-circle-dollar:before,.fa-funnel-dollar:before{content:"\f662"}.fa-camera-retro:before{content:"\f083"}.fa-arrow-circle-down:before,.fa-circle-arrow-down:before{content:"\f0ab"}.fa-arrow-right-to-file:before,.fa-file-import:before{content:"\f56f"}.fa-external-link-square:before,.fa-square-arrow-up-right:before{content:"\f14c"}.fa-box-open:before{content:"\f49e"}.fa-scroll:before{content:"\f70e"}.fa-spa:before{content:"\f5bb"}.fa-location-pin-lock:before{content:"\e51f"}.fa-pause:before{content:"\f04c"}.fa-hill-avalanche:before{content:"\e507"}.fa-temperature-0:before,.fa-temperature-empty:before,.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-bomb:before{content:"\f1e2"}.fa-registered:before{content:"\f25d"}.fa-address-card:before,.fa-contact-card:before,.fa-vcard:before{content:"\f2bb"}.fa-balance-scale-right:before,.fa-scale-unbalanced-flip:before{content:"\f516"}.fa-subscript:before{content:"\f12c"}.fa-diamond-turn-right:before,.fa-directions:before{content:"\f5eb"}.fa-burst:before{content:"\e4dc"}.fa-house-laptop:before,.fa-laptop-house:before{content:"\e066"}.fa-face-tired:before,.fa-tired:before{content:"\f5c8"}.fa-money-bills:before{content:"\e1f3"}.fa-smog:before{content:"\f75f"}.fa-crutch:before{content:"\f7f7"}.fa-cloud-arrow-up:before,.fa-cloud-upload-alt:before,.fa-cloud-upload:before{content:"\f0ee"}.fa-palette:before{content:"\f53f"}.fa-arrows-turn-right:before{content:"\e4c0"}.fa-vest:before{content:"\e085"}.fa-ferry:before{content:"\e4ea"}.fa-arrows-down-to-people:before{content:"\e4b9"}.fa-seedling:before,.fa-sprout:before{content:"\f4d8"}.fa-arrows-alt-h:before,.fa-left-right:before{content:"\f337"}.fa-boxes-packing:before{content:"\e4c7"}.fa-arrow-circle-left:before,.fa-circle-arrow-left:before{content:"\f0a8"}.fa-group-arrows-rotate:before{content:"\e4f6"}.fa-bowl-food:before{content:"\e4c6"}.fa-candy-cane:before{content:"\f786"}.fa-arrow-down-wide-short:before,.fa-sort-amount-asc:before,.fa-sort-amount-down:before{content:"\f160"}.fa-cloud-bolt:before,.fa-thunderstorm:before{content:"\f76c"}.fa-remove-format:before,.fa-text-slash:before{content:"\f87d"}.fa-face-smile-wink:before,.fa-smile-wink:before{content:"\f4da"}.fa-file-word:before{content:"\f1c2"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-arrows-h:before,.fa-arrows-left-right:before{content:"\f07e"}.fa-house-lock:before{content:"\e510"}.fa-cloud-arrow-down:before,.fa-cloud-download-alt:before,.fa-cloud-download:before{content:"\f0ed"}.fa-children:before{content:"\e4e1"}.fa-blackboard:before,.fa-chalkboard:before{content:"\f51b"}.fa-user-alt-slash:before,.fa-user-large-slash:before{content:"\f4fa"}.fa-envelope-open:before{content:"\f2b6"}.fa-handshake-alt-slash:before,.fa-handshake-simple-slash:before{content:"\e05f"}.fa-mattress-pillow:before{content:"\e525"}.fa-guarani-sign:before{content:"\e19a"}.fa-arrows-rotate:before,.fa-refresh:before,.fa-sync:before{content:"\f021"}.fa-fire-extinguisher:before{content:"\f134"}.fa-cruzeiro-sign:before{content:"\e152"}.fa-greater-than-equal:before{content:"\f532"}.fa-shield-alt:before,.fa-shield-halved:before{content:"\f3ed"}.fa-atlas:before,.fa-book-atlas:before{content:"\f558"}.fa-virus:before{content:"\e074"}.fa-envelope-circle-check:before{content:"\e4e8"}.fa-layer-group:before{content:"\f5fd"}.fa-arrows-to-dot:before{content:"\e4be"}.fa-archway:before{content:"\f557"}.fa-heart-circle-check:before{content:"\e4fd"}.fa-house-chimney-crack:before,.fa-house-damage:before{content:"\f6f1"}.fa-file-archive:before,.fa-file-zipper:before{content:"\f1c6"}.fa-square:before{content:"\f0c8"}.fa-glass-martini:before,.fa-martini-glass-empty:before{content:"\f000"}.fa-couch:before{content:"\f4b8"}.fa-cedi-sign:before{content:"\e0df"}.fa-italic:before{content:"\f033"}.fa-church:before{content:"\f51d"}.fa-comments-dollar:before{content:"\f653"}.fa-democrat:before{content:"\f747"}.fa-z:before{content:"\5a"}.fa-person-skiing:before,.fa-skiing:before{content:"\f7c9"}.fa-road-lock:before{content:"\e567"}.fa-a:before{content:"\41"}.fa-temperature-arrow-down:before,.fa-temperature-down:before{content:"\e03f"}.fa-feather-alt:before,.fa-feather-pointed:before{content:"\f56b"}.fa-p:before{content:"\50"}.fa-snowflake:before{content:"\f2dc"}.fa-newspaper:before{content:"\f1ea"}.fa-ad:before,.fa-rectangle-ad:before{content:"\f641"}.fa-arrow-circle-right:before,.fa-circle-arrow-right:before{content:"\f0a9"}.fa-filter-circle-xmark:before{content:"\e17b"}.fa-locust:before{content:"\e520"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-list-1-2:before,.fa-list-numeric:before,.fa-list-ol:before{content:"\f0cb"}.fa-person-dress-burst:before{content:"\e544"}.fa-money-check-alt:before,.fa-money-check-dollar:before{content:"\f53d"}.fa-vector-square:before{content:"\f5cb"}.fa-bread-slice:before{content:"\f7ec"}.fa-language:before{content:"\f1ab"}.fa-face-kiss-wink-heart:before,.fa-kiss-wink-heart:before{content:"\f598"}.fa-filter:before{content:"\f0b0"}.fa-question:before{content:"\3f"}.fa-file-signature:before{content:"\f573"}.fa-arrows-alt:before,.fa-up-down-left-right:before{content:"\f0b2"}.fa-house-chimney-user:before{content:"\e065"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-puzzle-piece:before{content:"\f12e"}.fa-money-check:before{content:"\f53c"}.fa-star-half-alt:before,.fa-star-half-stroke:before{content:"\f5c0"}.fa-code:before{content:"\f121"}.fa-glass-whiskey:before,.fa-whiskey-glass:before{content:"\f7a0"}.fa-building-circle-exclamation:before{content:"\e4d3"}.fa-magnifying-glass-chart:before{content:"\e522"}.fa-arrow-up-right-from-square:before,.fa-external-link:before{content:"\f08e"}.fa-cubes-stacked:before{content:"\e4e6"}.fa-krw:before,.fa-won-sign:before,.fa-won:before{content:"\f159"}.fa-virus-covid:before{content:"\e4a8"}.fa-austral-sign:before{content:"\e0a9"}.fa-f:before{content:"\46"}.fa-leaf:before{content:"\f06c"}.fa-road:before{content:"\f018"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-person-circle-plus:before{content:"\e541"}.fa-chart-pie:before,.fa-pie-chart:before{content:"\f200"}.fa-bolt-lightning:before{content:"\e0b7"}.fa-sack-xmark:before{content:"\e56a"}.fa-file-excel:before{content:"\f1c3"}.fa-file-contract:before{content:"\f56c"}.fa-fish-fins:before{content:"\e4f2"}.fa-building-flag:before{content:"\e4d5"}.fa-face-grin-beam:before,.fa-grin-beam:before{content:"\f582"}.fa-object-ungroup:before{content:"\f248"}.fa-poop:before{content:"\f619"}.fa-location-pin:before,.fa-map-marker:before{content:"\f041"}.fa-kaaba:before{content:"\f66b"}.fa-toilet-paper:before{content:"\f71e"}.fa-hard-hat:before,.fa-hat-hard:before,.fa-helmet-safety:before{content:"\f807"}.fa-eject:before{content:"\f052"}.fa-arrow-alt-circle-right:before,.fa-circle-right:before{content:"\f35a"}.fa-plane-circle-check:before{content:"\e555"}.fa-face-rolling-eyes:before,.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-object-group:before{content:"\f247"}.fa-chart-line:before,.fa-line-chart:before{content:"\f201"}.fa-mask-ventilator:before{content:"\e524"}.fa-arrow-right:before{content:"\f061"}.fa-map-signs:before,.fa-signs-post:before{content:"\f277"}.fa-cash-register:before{content:"\f788"}.fa-person-circle-question:before{content:"\e542"}.fa-h:before{content:"\48"}.fa-tarp:before{content:"\e57b"}.fa-screwdriver-wrench:before,.fa-tools:before{content:"\f7d9"}.fa-arrows-to-eye:before{content:"\e4bf"}.fa-plug-circle-bolt:before{content:"\e55b"}.fa-heart:before{content:"\f004"}.fa-mars-and-venus:before{content:"\f224"}.fa-home-user:before,.fa-house-user:before{content:"\e1b0"}.fa-dumpster-fire:before{content:"\f794"}.fa-house-crack:before{content:"\e3b1"}.fa-cocktail:before,.fa-martini-glass-citrus:before{content:"\f561"}.fa-face-surprise:before,.fa-surprise:before{content:"\f5c2"}.fa-bottle-water:before{content:"\e4c5"}.fa-circle-pause:before,.fa-pause-circle:before{content:"\f28b"}.fa-toilet-paper-slash:before{content:"\e072"}.fa-apple-alt:before,.fa-apple-whole:before{content:"\f5d1"}.fa-kitchen-set:before{content:"\e51a"}.fa-r:before{content:"\52"}.fa-temperature-1:before,.fa-temperature-quarter:before,.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-cube:before{content:"\f1b2"}.fa-bitcoin-sign:before{content:"\e0b4"}.fa-shield-dog:before{content:"\e573"}.fa-solar-panel:before{content:"\f5ba"}.fa-lock-open:before{content:"\f3c1"}.fa-elevator:before{content:"\e16d"}.fa-money-bill-transfer:before{content:"\e528"}.fa-money-bill-trend-up:before{content:"\e529"}.fa-house-flood-water-circle-arrow-right:before{content:"\e50f"}.fa-poll-h:before,.fa-square-poll-horizontal:before{content:"\f682"}.fa-circle:before{content:"\f111"}.fa-backward-fast:before,.fa-fast-backward:before{content:"\f049"}.fa-recycle:before{content:"\f1b8"}.fa-user-astronaut:before{content:"\f4fb"}.fa-plane-slash:before{content:"\e069"}.fa-trademark:before{content:"\f25c"}.fa-basketball-ball:before,.fa-basketball:before{content:"\f434"}.fa-satellite-dish:before{content:"\f7c0"}.fa-arrow-alt-circle-up:before,.fa-circle-up:before{content:"\f35b"}.fa-mobile-alt:before,.fa-mobile-screen-button:before{content:"\f3cd"}.fa-volume-high:before,.fa-volume-up:before{content:"\f028"}.fa-users-rays:before{content:"\e593"}.fa-wallet:before{content:"\f555"}.fa-clipboard-check:before{content:"\f46c"}.fa-file-audio:before{content:"\f1c7"}.fa-burger:before,.fa-hamburger:before{content:"\f805"}.fa-wrench:before{content:"\f0ad"}.fa-bugs:before{content:"\e4d0"}.fa-rupee-sign:before,.fa-rupee:before{content:"\f156"}.fa-file-image:before{content:"\f1c5"}.fa-circle-question:before,.fa-question-circle:before{content:"\f059"}.fa-plane-departure:before{content:"\f5b0"}.fa-handshake-slash:before{content:"\e060"}.fa-book-bookmark:before{content:"\e0bb"}.fa-code-branch:before{content:"\f126"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-bridge:before{content:"\e4c8"}.fa-phone-alt:before,.fa-phone-flip:before{content:"\f879"}.fa-truck-front:before{content:"\e2b7"}.fa-cat:before{content:"\f6be"}.fa-anchor-circle-exclamation:before{content:"\e4ab"}.fa-truck-field:before{content:"\e58d"}.fa-route:before{content:"\f4d7"}.fa-clipboard-question:before{content:"\e4e3"}.fa-panorama:before{content:"\e209"}.fa-comment-medical:before{content:"\f7f5"}.fa-teeth-open:before{content:"\f62f"}.fa-file-circle-minus:before{content:"\e4ed"}.fa-tags:before{content:"\f02c"}.fa-wine-glass:before{content:"\f4e3"}.fa-fast-forward:before,.fa-forward-fast:before{content:"\f050"}.fa-face-meh-blank:before,.fa-meh-blank:before{content:"\f5a4"}.fa-parking:before,.fa-square-parking:before{content:"\f540"}.fa-house-signal:before{content:"\e012"}.fa-bars-progress:before,.fa-tasks-alt:before{content:"\f828"}.fa-faucet-drip:before{content:"\e006"}.fa-cart-flatbed:before,.fa-dolly-flatbed:before{content:"\f474"}.fa-ban-smoking:before,.fa-smoking-ban:before{content:"\f54d"}.fa-terminal:before{content:"\f120"}.fa-mobile-button:before{content:"\f10b"}.fa-house-medical-flag:before{content:"\e514"}.fa-basket-shopping:before,.fa-shopping-basket:before{content:"\f291"}.fa-tape:before{content:"\f4db"}.fa-bus-alt:before,.fa-bus-simple:before{content:"\f55e"}.fa-eye:before{content:"\f06e"}.fa-face-sad-cry:before,.fa-sad-cry:before{content:"\f5b3"}.fa-audio-description:before{content:"\f29e"}.fa-person-military-to-person:before{content:"\e54c"}.fa-file-shield:before{content:"\e4f0"}.fa-user-slash:before{content:"\f506"}.fa-pen:before{content:"\f304"}.fa-tower-observation:before{content:"\e586"}.fa-file-code:before{content:"\f1c9"}.fa-signal-5:before,.fa-signal-perfect:before,.fa-signal:before{content:"\f012"}.fa-bus:before{content:"\f207"}.fa-heart-circle-xmark:before{content:"\e501"}.fa-home-lg:before,.fa-house-chimney:before{content:"\e3af"}.fa-window-maximize:before{content:"\f2d0"}.fa-face-frown:before,.fa-frown:before{content:"\f119"}.fa-prescription:before{content:"\f5b1"}.fa-shop:before,.fa-store-alt:before{content:"\f54f"}.fa-floppy-disk:before,.fa-save:before{content:"\f0c7"}.fa-vihara:before{content:"\f6a7"}.fa-balance-scale-left:before,.fa-scale-unbalanced:before{content:"\f515"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-comment-dots:before,.fa-commenting:before{content:"\f4ad"}.fa-plant-wilt:before{content:"\e5aa"}.fa-diamond:before{content:"\f219"}.fa-face-grin-squint:before,.fa-grin-squint:before{content:"\f585"}.fa-hand-holding-dollar:before,.fa-hand-holding-usd:before{content:"\f4c0"}.fa-bacterium:before{content:"\e05a"}.fa-hand-pointer:before{content:"\f25a"}.fa-drum-steelpan:before{content:"\f56a"}.fa-hand-scissors:before{content:"\f257"}.fa-hands-praying:before,.fa-praying-hands:before{content:"\f684"}.fa-arrow-right-rotate:before,.fa-arrow-rotate-forward:before,.fa-arrow-rotate-right:before,.fa-redo:before{content:"\f01e"}.fa-biohazard:before{content:"\f780"}.fa-location-crosshairs:before,.fa-location:before{content:"\f601"}.fa-mars-double:before{content:"\f227"}.fa-child-dress:before{content:"\e59c"}.fa-users-between-lines:before{content:"\e591"}.fa-lungs-virus:before{content:"\e067"}.fa-face-grin-tears:before,.fa-grin-tears:before{content:"\f588"}.fa-phone:before{content:"\f095"}.fa-calendar-times:before,.fa-calendar-xmark:before{content:"\f273"}.fa-child-reaching:before{content:"\e59d"}.fa-head-side-virus:before{content:"\e064"}.fa-user-cog:before,.fa-user-gear:before{content:"\f4fe"}.fa-arrow-up-1-9:before,.fa-sort-numeric-up:before{content:"\f163"}.fa-door-closed:before{content:"\f52a"}.fa-shield-virus:before{content:"\e06c"}.fa-dice-six:before{content:"\f526"}.fa-mosquito-net:before{content:"\e52c"}.fa-bridge-water:before{content:"\e4ce"}.fa-person-booth:before{content:"\f756"}.fa-text-width:before{content:"\f035"}.fa-hat-wizard:before{content:"\f6e8"}.fa-pen-fancy:before{content:"\f5ac"}.fa-digging:before,.fa-person-digging:before{content:"\f85e"}.fa-trash:before{content:"\f1f8"}.fa-gauge-simple-med:before,.fa-gauge-simple:before,.fa-tachometer-average:before{content:"\f629"}.fa-book-medical:before{content:"\f7e6"}.fa-poo:before{content:"\f2fe"}.fa-quote-right-alt:before,.fa-quote-right:before{content:"\f10e"}.fa-shirt:before,.fa-t-shirt:before,.fa-tshirt:before{content:"\f553"}.fa-cubes:before{content:"\f1b3"}.fa-divide:before{content:"\f529"}.fa-tenge-sign:before,.fa-tenge:before{content:"\f7d7"}.fa-headphones:before{content:"\f025"}.fa-hands-holding:before{content:"\f4c2"}.fa-hands-clapping:before{content:"\e1a8"}.fa-republican:before{content:"\f75e"}.fa-arrow-left:before{content:"\f060"}.fa-person-circle-xmark:before{content:"\e543"}.fa-ruler:before{content:"\f545"}.fa-align-left:before{content:"\f036"}.fa-dice-d6:before{content:"\f6d1"}.fa-restroom:before{content:"\f7bd"}.fa-j:before{content:"\4a"}.fa-users-viewfinder:before{content:"\e595"}.fa-file-video:before{content:"\f1c8"}.fa-external-link-alt:before,.fa-up-right-from-square:before{content:"\f35d"}.fa-table-cells:before,.fa-th:before{content:"\f00a"}.fa-file-pdf:before{content:"\f1c1"}.fa-bible:before,.fa-book-bible:before{content:"\f647"}.fa-o:before{content:"\4f"}.fa-medkit:before,.fa-suitcase-medical:before{content:"\f0fa"}.fa-user-secret:before{content:"\f21b"}.fa-otter:before{content:"\f700"}.fa-female:before,.fa-person-dress:before{content:"\f182"}.fa-comment-dollar:before{content:"\f651"}.fa-briefcase-clock:before,.fa-business-time:before{content:"\f64a"}.fa-table-cells-large:before,.fa-th-large:before{content:"\f009"}.fa-book-tanakh:before,.fa-tanakh:before{content:"\f827"}.fa-phone-volume:before,.fa-volume-control-phone:before{content:"\f2a0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-clipboard-user:before{content:"\f7f3"}.fa-child:before{content:"\f1ae"}.fa-lira-sign:before{content:"\f195"}.fa-satellite:before{content:"\f7bf"}.fa-plane-lock:before{content:"\e558"}.fa-tag:before{content:"\f02b"}.fa-comment:before{content:"\f075"}.fa-birthday-cake:before,.fa-cake-candles:before,.fa-cake:before{content:"\f1fd"}.fa-envelope:before{content:"\f0e0"}.fa-angle-double-up:before,.fa-angles-up:before{content:"\f102"}.fa-paperclip:before{content:"\f0c6"}.fa-arrow-right-to-city:before{content:"\e4b3"}.fa-ribbon:before{content:"\f4d6"}.fa-lungs:before{content:"\f604"}.fa-arrow-up-9-1:before,.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-litecoin-sign:before{content:"\e1d3"}.fa-border-none:before{content:"\f850"}.fa-circle-nodes:before{content:"\e4e2"}.fa-parachute-box:before{content:"\f4cd"}.fa-indent:before{content:"\f03c"}.fa-truck-field-un:before{content:"\e58e"}.fa-hourglass-empty:before,.fa-hourglass:before{content:"\f254"}.fa-mountain:before{content:"\f6fc"}.fa-user-doctor:before,.fa-user-md:before{content:"\f0f0"}.fa-circle-info:before,.fa-info-circle:before{content:"\f05a"}.fa-cloud-meatball:before{content:"\f73b"}.fa-camera-alt:before,.fa-camera:before{content:"\f030"}.fa-square-virus:before{content:"\e578"}.fa-meteor:before{content:"\f753"}.fa-car-on:before{content:"\e4dd"}.fa-sleigh:before{content:"\f7cc"}.fa-arrow-down-1-9:before,.fa-sort-numeric-asc:before,.fa-sort-numeric-down:before{content:"\f162"}.fa-hand-holding-droplet:before,.fa-hand-holding-water:before{content:"\f4c1"}.fa-water:before{content:"\f773"}.fa-calendar-check:before{content:"\f274"}.fa-braille:before{content:"\f2a1"}.fa-prescription-bottle-alt:before,.fa-prescription-bottle-medical:before{content:"\f486"}.fa-landmark:before{content:"\f66f"}.fa-truck:before{content:"\f0d1"}.fa-crosshairs:before{content:"\f05b"}.fa-person-cane:before{content:"\e53c"}.fa-tent:before{content:"\e57d"}.fa-vest-patches:before{content:"\e086"}.fa-check-double:before{content:"\f560"}.fa-arrow-down-a-z:before,.fa-sort-alpha-asc:before,.fa-sort-alpha-down:before{content:"\f15d"}.fa-money-bill-wheat:before{content:"\e52a"}.fa-cookie:before{content:"\f563"}.fa-arrow-left-rotate:before,.fa-arrow-rotate-back:before,.fa-arrow-rotate-backward:before,.fa-arrow-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-hard-drive:before,.fa-hdd:before{content:"\f0a0"}.fa-face-grin-squint-tears:before,.fa-grin-squint-tears:before{content:"\f586"}.fa-dumbbell:before{content:"\f44b"}.fa-list-alt:before,.fa-rectangle-list:before{content:"\f022"}.fa-tarp-droplet:before{content:"\e57c"}.fa-house-medical-circle-check:before{content:"\e511"}.fa-person-skiing-nordic:before,.fa-skiing-nordic:before{content:"\f7ca"}.fa-calendar-plus:before{content:"\f271"}.fa-plane-arrival:before{content:"\f5af"}.fa-arrow-alt-circle-left:before,.fa-circle-left:before{content:"\f359"}.fa-subway:before,.fa-train-subway:before{content:"\f239"}.fa-chart-gantt:before{content:"\e0e4"}.fa-indian-rupee-sign:before,.fa-indian-rupee:before,.fa-inr:before{content:"\e1bc"}.fa-crop-alt:before,.fa-crop-simple:before{content:"\f565"}.fa-money-bill-1:before,.fa-money-bill-alt:before{content:"\f3d1"}.fa-left-long:before,.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-dna:before{content:"\f471"}.fa-virus-slash:before{content:"\e075"}.fa-minus:before,.fa-subtract:before{content:"\f068"}.fa-chess:before{content:"\f439"}.fa-arrow-left-long:before,.fa-long-arrow-left:before{content:"\f177"}.fa-plug-circle-check:before{content:"\e55c"}.fa-street-view:before{content:"\f21d"}.fa-franc-sign:before{content:"\e18f"}.fa-volume-off:before{content:"\f026"}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before,.fa-hands-american-sign-language-interpreting:before,.fa-hands-asl-interpreting:before{content:"\f2a3"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-droplet-slash:before,.fa-tint-slash:before{content:"\f5c7"}.fa-mosque:before{content:"\f678"}.fa-mosquito:before{content:"\e52b"}.fa-star-of-david:before{content:"\f69a"}.fa-person-military-rifle:before{content:"\e54b"}.fa-cart-shopping:before,.fa-shopping-cart:before{content:"\f07a"}.fa-vials:before{content:"\f493"}.fa-plug-circle-plus:before{content:"\e55f"}.fa-place-of-worship:before{content:"\f67f"}.fa-grip-vertical:before{content:"\f58e"}.fa-arrow-turn-up:before,.fa-level-up:before{content:"\f148"}.fa-u:before{content:"\55"}.fa-square-root-alt:before,.fa-square-root-variable:before{content:"\f698"}.fa-clock-four:before,.fa-clock:before{content:"\f017"}.fa-backward-step:before,.fa-step-backward:before{content:"\f048"}.fa-pallet:before{content:"\f482"}.fa-faucet:before{content:"\e005"}.fa-baseball-bat-ball:before{content:"\f432"}.fa-s:before{content:"\53"}.fa-timeline:before{content:"\e29c"}.fa-keyboard:before{content:"\f11c"}.fa-caret-down:before{content:"\f0d7"}.fa-clinic-medical:before,.fa-house-chimney-medical:before{content:"\f7f2"}.fa-temperature-3:before,.fa-temperature-three-quarters:before,.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-mobile-android-alt:before,.fa-mobile-screen:before{content:"\f3cf"}.fa-plane-up:before{content:"\e22d"}.fa-piggy-bank:before{content:"\f4d3"}.fa-battery-3:before,.fa-battery-half:before{content:"\f242"}.fa-mountain-city:before{content:"\e52e"}.fa-coins:before{content:"\f51e"}.fa-khanda:before{content:"\f66d"}.fa-sliders-h:before,.fa-sliders:before{content:"\f1de"}.fa-folder-tree:before{content:"\f802"}.fa-network-wired:before{content:"\f6ff"}.fa-map-pin:before{content:"\f276"}.fa-hamsa:before{content:"\f665"}.fa-cent-sign:before{content:"\e3f5"}.fa-flask:before{content:"\f0c3"}.fa-person-pregnant:before{content:"\e31e"}.fa-wand-sparkles:before{content:"\f72b"}.fa-ellipsis-v:before,.fa-ellipsis-vertical:before{content:"\f142"}.fa-ticket:before{content:"\f145"}.fa-power-off:before{content:"\f011"}.fa-long-arrow-alt-right:before,.fa-right-long:before{content:"\f30b"}.fa-flag-usa:before{content:"\f74d"}.fa-laptop-file:before{content:"\e51d"}.fa-teletype:before,.fa-tty:before{content:"\f1e4"}.fa-diagram-next:before{content:"\e476"}.fa-person-rifle:before{content:"\e54e"}.fa-house-medical-circle-exclamation:before{content:"\e512"}.fa-closed-captioning:before{content:"\f20a"}.fa-hiking:before,.fa-person-hiking:before{content:"\f6ec"}.fa-venus-double:before{content:"\f226"}.fa-images:before{content:"\f302"}.fa-calculator:before{content:"\f1ec"}.fa-people-pulling:before{content:"\e535"}.fa-n:before{content:"\4e"}.fa-cable-car:before,.fa-tram:before{content:"\f7da"}.fa-cloud-rain:before{content:"\f73d"}.fa-building-circle-xmark:before{content:"\e4d4"}.fa-ship:before{content:"\f21a"}.fa-arrows-down-to-line:before{content:"\e4b8"}.fa-download:before{content:"\f019"}.fa-face-grin:before,.fa-grin:before{content:"\f580"}.fa-backspace:before,.fa-delete-left:before{content:"\f55a"}.fa-eye-dropper-empty:before,.fa-eye-dropper:before,.fa-eyedropper:before{content:"\f1fb"}.fa-file-circle-check:before{content:"\e5a0"}.fa-forward:before{content:"\f04e"}.fa-mobile-android:before,.fa-mobile-phone:before,.fa-mobile:before{content:"\f3ce"}.fa-face-meh:before,.fa-meh:before{content:"\f11a"}.fa-align-center:before{content:"\f037"}.fa-book-dead:before,.fa-book-skull:before{content:"\f6b7"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-heart-circle-exclamation:before{content:"\e4fe"}.fa-home-alt:before,.fa-home-lg-alt:before,.fa-home:before,.fa-house:before{content:"\f015"}.fa-calendar-week:before{content:"\f784"}.fa-laptop-medical:before{content:"\f812"}.fa-b:before{content:"\42"}.fa-file-medical:before{content:"\f477"}.fa-dice-one:before{content:"\f525"}.fa-kiwi-bird:before{content:"\f535"}.fa-arrow-right-arrow-left:before,.fa-exchange:before{content:"\f0ec"}.fa-redo-alt:before,.fa-rotate-forward:before,.fa-rotate-right:before{content:"\f2f9"}.fa-cutlery:before,.fa-utensils:before{content:"\f2e7"}.fa-arrow-up-wide-short:before,.fa-sort-amount-up:before{content:"\f161"}.fa-mill-sign:before{content:"\e1ed"}.fa-bowl-rice:before{content:"\e2eb"}.fa-skull:before{content:"\f54c"}.fa-broadcast-tower:before,.fa-tower-broadcast:before{content:"\f519"}.fa-truck-pickup:before{content:"\f63c"}.fa-long-arrow-alt-up:before,.fa-up-long:before{content:"\f30c"}.fa-stop:before{content:"\f04d"}.fa-code-merge:before{content:"\f387"}.fa-upload:before{content:"\f093"}.fa-hurricane:before{content:"\f751"}.fa-mound:before{content:"\e52d"}.fa-toilet-portable:before{content:"\e583"}.fa-compact-disc:before{content:"\f51f"}.fa-file-arrow-down:before,.fa-file-download:before{content:"\f56d"}.fa-caravan:before{content:"\f8ff"}.fa-shield-cat:before{content:"\e572"}.fa-bolt:before,.fa-zap:before{content:"\f0e7"}.fa-glass-water:before{content:"\e4f4"}.fa-oil-well:before{content:"\e532"}.fa-vault:before{content:"\e2c5"}.fa-mars:before{content:"\f222"}.fa-toilet:before{content:"\f7d8"}.fa-plane-circle-xmark:before{content:"\e557"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen-sign:before,.fa-yen:before{content:"\f157"}.fa-rouble:before,.fa-rub:before,.fa-ruble-sign:before,.fa-ruble:before{content:"\f158"}.fa-sun:before{content:"\f185"}.fa-guitar:before{content:"\f7a6"}.fa-face-laugh-wink:before,.fa-laugh-wink:before{content:"\f59c"}.fa-horse-head:before{content:"\f7ab"}.fa-bore-hole:before{content:"\e4c3"}.fa-industry:before{content:"\f275"}.fa-arrow-alt-circle-down:before,.fa-circle-down:before{content:"\f358"}.fa-arrows-turn-to-dots:before{content:"\e4c1"}.fa-florin-sign:before{content:"\e184"}.fa-arrow-down-short-wide:before,.fa-sort-amount-desc:before,.fa-sort-amount-down-alt:before{content:"\f884"}.fa-less-than:before{content:"\3c"}.fa-angle-down:before{content:"\f107"}.fa-car-tunnel:before{content:"\e4de"}.fa-head-side-cough:before{content:"\e061"}.fa-grip-lines:before{content:"\f7a4"}.fa-thumbs-down:before{content:"\f165"}.fa-user-lock:before{content:"\f502"}.fa-arrow-right-long:before,.fa-long-arrow-right:before{content:"\f178"}.fa-anchor-circle-xmark:before{content:"\e4ac"}.fa-ellipsis-h:before,.fa-ellipsis:before{content:"\f141"}.fa-chess-pawn:before{content:"\f443"}.fa-first-aid:before,.fa-kit-medical:before{content:"\f479"}.fa-person-through-window:before{content:"\e5a9"}.fa-toolbox:before{content:"\f552"}.fa-hands-holding-circle:before{content:"\e4fb"}.fa-bug:before{content:"\f188"}.fa-credit-card-alt:before,.fa-credit-card:before{content:"\f09d"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-hand-holding-hand:before{content:"\e4f7"}.fa-book-open-reader:before,.fa-book-reader:before{content:"\f5da"}.fa-mountain-sun:before{content:"\e52f"}.fa-arrows-left-right-to-line:before{content:"\e4ba"}.fa-dice-d20:before{content:"\f6cf"}.fa-truck-droplet:before{content:"\e58c"}.fa-file-circle-xmark:before{content:"\e5a1"}.fa-temperature-arrow-up:before,.fa-temperature-up:before{content:"\e040"}.fa-medal:before{content:"\f5a2"}.fa-bed:before{content:"\f236"}.fa-h-square:before,.fa-square-h:before{content:"\f0fd"}.fa-podcast:before{content:"\f2ce"}.fa-temperature-4:before,.fa-temperature-full:before,.fa-thermometer-4:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-bell:before{content:"\f0f3"}.fa-superscript:before{content:"\f12b"}.fa-plug-circle-xmark:before{content:"\e560"}.fa-star-of-life:before{content:"\f621"}.fa-phone-slash:before{content:"\f3dd"}.fa-paint-roller:before{content:"\f5aa"}.fa-hands-helping:before,.fa-handshake-angle:before{content:"\f4c4"}.fa-location-dot:before,.fa-map-marker-alt:before{content:"\f3c5"}.fa-file:before{content:"\f15b"}.fa-greater-than:before{content:"\3e"}.fa-person-swimming:before,.fa-swimmer:before{content:"\f5c4"}.fa-arrow-down:before{content:"\f063"}.fa-droplet:before,.fa-tint:before{content:"\f043"}.fa-eraser:before{content:"\f12d"}.fa-earth-america:before,.fa-earth-americas:before,.fa-earth:before,.fa-globe-americas:before{content:"\f57d"}.fa-person-burst:before{content:"\e53b"}.fa-dove:before{content:"\f4ba"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-socks:before{content:"\f696"}.fa-inbox:before{content:"\f01c"}.fa-section:before{content:"\e447"}.fa-gauge-high:before,.fa-tachometer-alt-fast:before,.fa-tachometer-alt:before{content:"\f625"}.fa-envelope-open-text:before{content:"\f658"}.fa-hospital-alt:before,.fa-hospital-wide:before,.fa-hospital:before{content:"\f0f8"}.fa-wine-bottle:before{content:"\f72f"}.fa-chess-rook:before{content:"\f447"}.fa-bars-staggered:before,.fa-reorder:before,.fa-stream:before{content:"\f550"}.fa-dharmachakra:before{content:"\f655"}.fa-hotdog:before{content:"\f80f"}.fa-blind:before,.fa-person-walking-with-cane:before{content:"\f29d"}.fa-drum:before{content:"\f569"}.fa-ice-cream:before{content:"\f810"}.fa-heart-circle-bolt:before{content:"\e4fc"}.fa-fax:before{content:"\f1ac"}.fa-paragraph:before{content:"\f1dd"}.fa-check-to-slot:before,.fa-vote-yea:before{content:"\f772"}.fa-star-half:before{content:"\f089"}.fa-boxes-alt:before,.fa-boxes-stacked:before,.fa-boxes:before{content:"\f468"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-assistive-listening-systems:before,.fa-ear-listen:before{content:"\f2a2"}.fa-tree-city:before{content:"\e587"}.fa-play:before{content:"\f04b"}.fa-font:before{content:"\f031"}.fa-rupiah-sign:before{content:"\e23d"}.fa-magnifying-glass:before,.fa-search:before{content:"\f002"}.fa-ping-pong-paddle-ball:before,.fa-table-tennis-paddle-ball:before,.fa-table-tennis:before{content:"\f45d"}.fa-diagnoses:before,.fa-person-dots-from-line:before{content:"\f470"}.fa-trash-can-arrow-up:before,.fa-trash-restore-alt:before{content:"\f82a"}.fa-naira-sign:before{content:"\e1f6"}.fa-cart-arrow-down:before{content:"\f218"}.fa-walkie-talkie:before{content:"\f8ef"}.fa-file-edit:before,.fa-file-pen:before{content:"\f31c"}.fa-receipt:before{content:"\f543"}.fa-pen-square:before,.fa-pencil-square:before,.fa-square-pen:before{content:"\f14b"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-person-circle-exclamation:before{content:"\e53f"}.fa-chevron-down:before{content:"\f078"}.fa-battery-5:before,.fa-battery-full:before,.fa-battery:before{content:"\f240"}.fa-skull-crossbones:before{content:"\f714"}.fa-code-compare:before{content:"\e13a"}.fa-list-dots:before,.fa-list-ul:before{content:"\f0ca"}.fa-school-lock:before{content:"\e56f"}.fa-tower-cell:before{content:"\e585"}.fa-down-long:before,.fa-long-arrow-alt-down:before{content:"\f309"}.fa-ranking-star:before{content:"\e561"}.fa-chess-king:before{content:"\f43f"}.fa-person-harassing:before{content:"\e549"}.fa-brazilian-real-sign:before{content:"\e46c"}.fa-landmark-alt:before,.fa-landmark-dome:before{content:"\f752"}.fa-arrow-up:before{content:"\f062"}.fa-television:before,.fa-tv-alt:before,.fa-tv:before{content:"\f26c"}.fa-shrimp:before{content:"\e448"}.fa-list-check:before,.fa-tasks:before{content:"\f0ae"}.fa-jug-detergent:before{content:"\e519"}.fa-circle-user:before,.fa-user-circle:before{content:"\f2bd"}.fa-user-shield:before{content:"\f505"}.fa-wind:before{content:"\f72e"}.fa-car-burst:before,.fa-car-crash:before{content:"\f5e1"}.fa-y:before{content:"\59"}.fa-person-snowboarding:before,.fa-snowboarding:before{content:"\f7ce"}.fa-shipping-fast:before,.fa-truck-fast:before{content:"\f48b"}.fa-fish:before{content:"\f578"}.fa-user-graduate:before{content:"\f501"}.fa-adjust:before,.fa-circle-half-stroke:before{content:"\f042"}.fa-clapperboard:before{content:"\e131"}.fa-circle-radiation:before,.fa-radiation-alt:before{content:"\f7ba"}.fa-baseball-ball:before,.fa-baseball:before{content:"\f433"}.fa-jet-fighter-up:before{content:"\e518"}.fa-diagram-project:before,.fa-project-diagram:before{content:"\f542"}.fa-copy:before{content:"\f0c5"}.fa-volume-mute:before,.fa-volume-times:before,.fa-volume-xmark:before{content:"\f6a9"}.fa-hand-sparkles:before{content:"\e05d"}.fa-grip-horizontal:before,.fa-grip:before{content:"\f58d"}.fa-share-from-square:before,.fa-share-square:before{content:"\f14d"}.fa-child-combatant:before,.fa-child-rifle:before{content:"\e4e0"}.fa-gun:before{content:"\e19b"}.fa-phone-square:before,.fa-square-phone:before{content:"\f098"}.fa-add:before,.fa-plus:before{content:"\2b"}.fa-expand:before{content:"\f065"}.fa-computer:before{content:"\e4e5"}.fa-close:before,.fa-multiply:before,.fa-remove:before,.fa-times:before,.fa-xmark:before{content:"\f00d"}.fa-arrows-up-down-left-right:before,.fa-arrows:before{content:"\f047"}.fa-chalkboard-teacher:before,.fa-chalkboard-user:before{content:"\f51c"}.fa-peso-sign:before{content:"\e222"}.fa-building-shield:before{content:"\e4d8"}.fa-baby:before{content:"\f77c"}.fa-users-line:before{content:"\e592"}.fa-quote-left-alt:before,.fa-quote-left:before{content:"\f10d"}.fa-tractor:before{content:"\f722"}.fa-trash-arrow-up:before,.fa-trash-restore:before{content:"\f829"}.fa-arrow-down-up-lock:before{content:"\e4b0"}.fa-lines-leaning:before{content:"\e51e"}.fa-ruler-combined:before{content:"\f546"}.fa-copyright:before{content:"\f1f9"}.fa-equals:before{content:"\3d"}.fa-blender:before{content:"\f517"}.fa-teeth:before{content:"\f62e"}.fa-ils:before,.fa-shekel-sign:before,.fa-shekel:before,.fa-sheqel-sign:before,.fa-sheqel:before{content:"\f20b"}.fa-map:before{content:"\f279"}.fa-rocket:before{content:"\f135"}.fa-photo-film:before,.fa-photo-video:before{content:"\f87c"}.fa-folder-minus:before{content:"\f65d"}.fa-store:before{content:"\f54e"}.fa-arrow-trend-up:before{content:"\e098"}.fa-plug-circle-minus:before{content:"\e55e"}.fa-sign-hanging:before,.fa-sign:before{content:"\f4d9"}.fa-bezier-curve:before{content:"\f55b"}.fa-bell-slash:before{content:"\f1f6"}.fa-tablet-android:before,.fa-tablet:before{content:"\f3fb"}.fa-school-flag:before{content:"\e56e"}.fa-fill:before{content:"\f575"}.fa-angle-up:before{content:"\f106"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-holly-berry:before{content:"\f7aa"}.fa-chevron-left:before{content:"\f053"}.fa-bacteria:before{content:"\e059"}.fa-hand-lizard:before{content:"\f258"}.fa-notdef:before{content:"\e1fe"}.fa-disease:before{content:"\f7fa"}.fa-briefcase-medical:before{content:"\f469"}.fa-genderless:before{content:"\f22d"}.fa-chevron-right:before{content:"\f054"}.fa-retweet:before{content:"\f079"}.fa-car-alt:before,.fa-car-rear:before{content:"\f5de"}.fa-pump-soap:before{content:"\e06b"}.fa-video-slash:before{content:"\f4e2"}.fa-battery-2:before,.fa-battery-quarter:before{content:"\f243"}.fa-radio:before{content:"\f8d7"}.fa-baby-carriage:before,.fa-carriage-baby:before{content:"\f77d"}.fa-traffic-light:before{content:"\f637"}.fa-thermometer:before{content:"\f491"}.fa-vr-cardboard:before{content:"\f729"}.fa-hand-middle-finger:before{content:"\f806"}.fa-percent:before,.fa-percentage:before{content:"\25"}.fa-truck-moving:before{content:"\f4df"}.fa-glass-water-droplet:before{content:"\e4f5"}.fa-display:before{content:"\e163"}.fa-face-smile:before,.fa-smile:before{content:"\f118"}.fa-thumb-tack:before,.fa-thumbtack:before{content:"\f08d"}.fa-trophy:before{content:"\f091"}.fa-person-praying:before,.fa-pray:before{content:"\f683"}.fa-hammer:before{content:"\f6e3"}.fa-hand-peace:before{content:"\f25b"}.fa-rotate:before,.fa-sync-alt:before{content:"\f2f1"}.fa-spinner:before{content:"\f110"}.fa-robot:before{content:"\f544"}.fa-peace:before{content:"\f67c"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-warehouse:before{content:"\f494"}.fa-arrow-up-right-dots:before{content:"\e4b7"}.fa-splotch:before{content:"\f5bc"}.fa-face-grin-hearts:before,.fa-grin-hearts:before{content:"\f584"}.fa-dice-four:before{content:"\f524"}.fa-sim-card:before{content:"\f7c4"}.fa-transgender-alt:before,.fa-transgender:before{content:"\f225"}.fa-mercury:before{content:"\f223"}.fa-arrow-turn-down:before,.fa-level-down:before{content:"\f149"}.fa-person-falling-burst:before{content:"\e547"}.fa-award:before{content:"\f559"}.fa-ticket-alt:before,.fa-ticket-simple:before{content:"\f3ff"}.fa-building:before{content:"\f1ad"}.fa-angle-double-left:before,.fa-angles-left:before{content:"\f100"}.fa-qrcode:before{content:"\f029"}.fa-clock-rotate-left:before,.fa-history:before{content:"\f1da"}.fa-face-grin-beam-sweat:before,.fa-grin-beam-sweat:before{content:"\f583"}.fa-arrow-right-from-file:before,.fa-file-export:before{content:"\f56e"}.fa-shield-blank:before,.fa-shield:before{content:"\f132"}.fa-arrow-up-short-wide:before,.fa-sort-amount-up-alt:before{content:"\f885"}.fa-house-medical:before{content:"\e3b2"}.fa-golf-ball-tee:before,.fa-golf-ball:before{content:"\f450"}.fa-chevron-circle-left:before,.fa-circle-chevron-left:before{content:"\f137"}.fa-house-chimney-window:before{content:"\e00d"}.fa-pen-nib:before{content:"\f5ad"}.fa-tent-arrow-turn-left:before{content:"\e580"}.fa-tents:before{content:"\e582"}.fa-magic:before,.fa-wand-magic:before{content:"\f0d0"}.fa-dog:before{content:"\f6d3"}.fa-carrot:before{content:"\f787"}.fa-moon:before{content:"\f186"}.fa-wine-glass-alt:before,.fa-wine-glass-empty:before{content:"\f5ce"}.fa-cheese:before{content:"\f7ef"}.fa-yin-yang:before{content:"\f6ad"}.fa-music:before{content:"\f001"}.fa-code-commit:before{content:"\f386"}.fa-temperature-low:before{content:"\f76b"}.fa-biking:before,.fa-person-biking:before{content:"\f84a"}.fa-broom:before{content:"\f51a"}.fa-shield-heart:before{content:"\e574"}.fa-gopuram:before{content:"\f664"}.fa-earth-oceania:before,.fa-globe-oceania:before{content:"\e47b"}.fa-square-xmark:before,.fa-times-square:before,.fa-xmark-square:before{content:"\f2d3"}.fa-hashtag:before{content:"\23"}.fa-expand-alt:before,.fa-up-right-and-down-left-from-center:before{content:"\f424"}.fa-oil-can:before{content:"\f613"}.fa-t:before{content:"\54"}.fa-hippo:before{content:"\f6ed"}.fa-chart-column:before{content:"\e0e3"}.fa-infinity:before{content:"\f534"}.fa-vial-circle-check:before{content:"\e596"}.fa-person-arrow-down-to-line:before{content:"\e538"}.fa-voicemail:before{content:"\f897"}.fa-fan:before{content:"\f863"}.fa-person-walking-luggage:before{content:"\e554"}.fa-arrows-alt-v:before,.fa-up-down:before{content:"\f338"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-calendar:before{content:"\f133"}.fa-trailer:before{content:"\e041"}.fa-bahai:before,.fa-haykal:before{content:"\f666"}.fa-sd-card:before{content:"\f7c2"}.fa-dragon:before{content:"\f6d5"}.fa-shoe-prints:before{content:"\f54b"}.fa-circle-plus:before,.fa-plus-circle:before{content:"\f055"}.fa-face-grin-tongue-wink:before,.fa-grin-tongue-wink:before{content:"\f58b"}.fa-hand-holding:before{content:"\f4bd"}.fa-plug-circle-exclamation:before{content:"\e55d"}.fa-chain-broken:before,.fa-chain-slash:before,.fa-link-slash:before,.fa-unlink:before{content:"\f127"}.fa-clone:before{content:"\f24d"}.fa-person-walking-arrow-loop-left:before{content:"\e551"}.fa-arrow-up-z-a:before,.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-fire-alt:before,.fa-fire-flame-curved:before{content:"\f7e4"}.fa-tornado:before{content:"\f76f"}.fa-file-circle-plus:before{content:"\e494"}.fa-book-quran:before,.fa-quran:before{content:"\f687"}.fa-anchor:before{content:"\f13d"}.fa-border-all:before{content:"\f84c"}.fa-angry:before,.fa-face-angry:before{content:"\f556"}.fa-cookie-bite:before{content:"\f564"}.fa-arrow-trend-down:before{content:"\e097"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-draw-polygon:before{content:"\f5ee"}.fa-balance-scale:before,.fa-scale-balanced:before{content:"\f24e"}.fa-gauge-simple-high:before,.fa-tachometer-fast:before,.fa-tachometer:before{content:"\f62a"}.fa-shower:before{content:"\f2cc"}.fa-desktop-alt:before,.fa-desktop:before{content:"\f390"}.fa-m:before{content:"\4d"}.fa-table-list:before,.fa-th-list:before{content:"\f00b"}.fa-comment-sms:before,.fa-sms:before{content:"\f7cd"}.fa-book:before{content:"\f02d"}.fa-user-plus:before{content:"\f234"}.fa-check:before{content:"\f00c"}.fa-battery-4:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-house-circle-check:before{content:"\e509"}.fa-angle-left:before{content:"\f104"}.fa-diagram-successor:before{content:"\e47a"}.fa-truck-arrow-right:before{content:"\e58b"}.fa-arrows-split-up-and-left:before{content:"\e4bc"}.fa-fist-raised:before,.fa-hand-fist:before{content:"\f6de"}.fa-cloud-moon:before{content:"\f6c3"}.fa-briefcase:before{content:"\f0b1"}.fa-person-falling:before{content:"\e546"}.fa-image-portrait:before,.fa-portrait:before{content:"\f3e0"}.fa-user-tag:before{content:"\f507"}.fa-rug:before{content:"\e569"}.fa-earth-europe:before,.fa-globe-europe:before{content:"\f7a2"}.fa-cart-flatbed-suitcase:before,.fa-luggage-cart:before{content:"\f59d"}.fa-rectangle-times:before,.fa-rectangle-xmark:before,.fa-times-rectangle:before,.fa-window-close:before{content:"\f410"}.fa-baht-sign:before{content:"\e0ac"}.fa-book-open:before{content:"\f518"}.fa-book-journal-whills:before,.fa-journal-whills:before{content:"\f66a"}.fa-handcuffs:before{content:"\e4f8"}.fa-exclamation-triangle:before,.fa-triangle-exclamation:before,.fa-warning:before{content:"\f071"}.fa-database:before{content:"\f1c0"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-bottle-droplet:before{content:"\e4c4"}.fa-mask-face:before{content:"\e1d7"}.fa-hill-rockslide:before{content:"\e508"}.fa-exchange-alt:before,.fa-right-left:before{content:"\f362"}.fa-paper-plane:before{content:"\f1d8"}.fa-road-circle-exclamation:before{content:"\e565"}.fa-dungeon:before{content:"\f6d9"}.fa-align-right:before{content:"\f038"}.fa-money-bill-1-wave:before,.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-life-ring:before{content:"\f1cd"}.fa-hands:before,.fa-sign-language:before,.fa-signing:before{content:"\f2a7"}.fa-calendar-day:before{content:"\f783"}.fa-ladder-water:before,.fa-swimming-pool:before,.fa-water-ladder:before{content:"\f5c5"}.fa-arrows-up-down:before,.fa-arrows-v:before{content:"\f07d"}.fa-face-grimace:before,.fa-grimace:before{content:"\f57f"}.fa-wheelchair-alt:before,.fa-wheelchair-move:before{content:"\e2ce"}.fa-level-down-alt:before,.fa-turn-down:before{content:"\f3be"}.fa-person-walking-arrow-right:before{content:"\e552"}.fa-envelope-square:before,.fa-square-envelope:before{content:"\f199"}.fa-dice:before{content:"\f522"}.fa-bowling-ball:before{content:"\f436"}.fa-brain:before{content:"\f5dc"}.fa-band-aid:before,.fa-bandage:before{content:"\f462"}.fa-calendar-minus:before{content:"\f272"}.fa-circle-xmark:before,.fa-times-circle:before,.fa-xmark-circle:before{content:"\f057"}.fa-gifts:before{content:"\f79c"}.fa-hotel:before{content:"\f594"}.fa-earth-asia:before,.fa-globe-asia:before{content:"\f57e"}.fa-id-card-alt:before,.fa-id-card-clip:before{content:"\f47f"}.fa-magnifying-glass-plus:before,.fa-search-plus:before{content:"\f00e"}.fa-thumbs-up:before{content:"\f164"}.fa-user-clock:before{content:"\f4fd"}.fa-allergies:before,.fa-hand-dots:before{content:"\f461"}.fa-file-invoice:before{content:"\f570"}.fa-window-minimize:before{content:"\f2d1"}.fa-coffee:before,.fa-mug-saucer:before{content:"\f0f4"}.fa-brush:before{content:"\f55d"}.fa-mask:before{content:"\f6fa"}.fa-magnifying-glass-minus:before,.fa-search-minus:before{content:"\f010"}.fa-ruler-vertical:before{content:"\f548"}.fa-user-alt:before,.fa-user-large:before{content:"\f406"}.fa-train-tram:before{content:"\e5b4"}.fa-user-nurse:before{content:"\f82f"}.fa-syringe:before{content:"\f48e"}.fa-cloud-sun:before{content:"\f6c4"}.fa-stopwatch-20:before{content:"\e06f"}.fa-square-full:before{content:"\f45c"}.fa-magnet:before{content:"\f076"}.fa-jar:before{content:"\e516"}.fa-note-sticky:before,.fa-sticky-note:before{content:"\f249"}.fa-bug-slash:before{content:"\e490"}.fa-arrow-up-from-water-pump:before{content:"\e4b6"}.fa-bone:before{content:"\f5d7"}.fa-user-injured:before{content:"\f728"}.fa-face-sad-tear:before,.fa-sad-tear:before{content:"\f5b4"}.fa-plane:before{content:"\f072"}.fa-tent-arrows-down:before{content:"\e581"}.fa-exclamation:before{content:"\21"}.fa-arrows-spin:before{content:"\e4bb"}.fa-print:before{content:"\f02f"}.fa-try:before,.fa-turkish-lira-sign:before,.fa-turkish-lira:before{content:"\e2bb"}.fa-dollar-sign:before,.fa-dollar:before,.fa-usd:before{content:"\24"}.fa-x:before{content:"\58"}.fa-magnifying-glass-dollar:before,.fa-search-dollar:before{content:"\f688"}.fa-users-cog:before,.fa-users-gear:before{content:"\f509"}.fa-person-military-pointing:before{content:"\e54a"}.fa-bank:before,.fa-building-columns:before,.fa-institution:before,.fa-museum:before,.fa-university:before{content:"\f19c"}.fa-umbrella:before{content:"\f0e9"}.fa-trowel:before{content:"\e589"}.fa-d:before{content:"\44"}.fa-stapler:before{content:"\e5af"}.fa-masks-theater:before,.fa-theater-masks:before{content:"\f630"}.fa-kip-sign:before{content:"\e1c4"}.fa-hand-point-left:before{content:"\f0a5"}.fa-handshake-alt:before,.fa-handshake-simple:before{content:"\f4c6"}.fa-fighter-jet:before,.fa-jet-fighter:before{content:"\f0fb"}.fa-share-alt-square:before,.fa-square-share-nodes:before{content:"\f1e1"}.fa-barcode:before{content:"\f02a"}.fa-plus-minus:before{content:"\e43c"}.fa-video-camera:before,.fa-video:before{content:"\f03d"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-hand-holding-medical:before{content:"\e05c"}.fa-person-circle-check:before{content:"\e53e"}.fa-level-up-alt:before,.fa-turn-up:before{content:"\f3bf"} +.fa-sr-only,.fa-sr-only-focusable:not(:focus),.sr-only,.sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0} \ No newline at end of file diff --git a/assets/css/github-dark-dimmed.min.css b/assets/css/github-dark-dimmed.min.css new file mode 100644 index 00000000..e266dfc1 --- /dev/null +++ b/assets/css/github-dark-dimmed.min.css @@ -0,0 +1,9 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*! + Theme: GitHub Dark Dimmed + Description: Dark dimmed theme as seen on github.com + Author: github.com + Maintainer: @Hirse + Updated: 2021-05-15 + + Colors taken from GitHub's CSS +*/.hljs{color:#adbac7;background:#22272e}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#f47067}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#dcbdfb}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-variable{color:#6cb6ff}.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#96d0ff}.hljs-built_in,.hljs-symbol{color:#f69d50}.hljs-code,.hljs-comment,.hljs-formula{color:#768390}.hljs-name,.hljs-quote,.hljs-selector-pseudo,.hljs-selector-tag{color:#8ddb8c}.hljs-subst{color:#adbac7}.hljs-section{color:#316dca;font-weight:700}.hljs-bullet{color:#eac55f}.hljs-emphasis{color:#adbac7;font-style:italic}.hljs-strong{color:#adbac7;font-weight:700}.hljs-addition{color:#b4f1b4;background-color:#1b4721}.hljs-deletion{color:#ffd8d3;background-color:#78191b} \ No newline at end of file diff --git a/assets/css/github.min.css b/assets/css/github.min.css new file mode 100644 index 00000000..275239a7 --- /dev/null +++ b/assets/css/github.min.css @@ -0,0 +1,10 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*! + Theme: GitHub + Description: Light theme as seen on github.com + Author: github.com + Maintainer: @Hirse + Updated: 2021-05-15 + + Outdated base version: https://github.com/primer/github-syntax-light + Current colors taken from GitHub's CSS +*/.hljs{color:#24292e;background:#fff}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#d73a49}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#6f42c1}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-variable{color:#005cc5}.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#032f62}.hljs-built_in,.hljs-symbol{color:#e36209}.hljs-code,.hljs-comment,.hljs-formula{color:#6a737d}.hljs-name,.hljs-quote,.hljs-selector-pseudo,.hljs-selector-tag{color:#22863a}.hljs-subst{color:#24292e}.hljs-section{color:#005cc5;font-weight:700}.hljs-bullet{color:#735c0f}.hljs-emphasis{color:#24292e;font-style:italic}.hljs-strong{color:#24292e;font-weight:700}.hljs-addition{color:#22863a;background-color:#f0fff4}.hljs-deletion{color:#b31d28;background-color:#ffeef0} \ No newline at end of file diff --git a/assets/css/solid.min.css b/assets/css/solid.min.css new file mode 100644 index 00000000..7e1fb2d4 --- /dev/null +++ b/assets/css/solid.min.css @@ -0,0 +1,6 @@ +/*! + * Font Awesome Free 6.5.1 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2023 Fonticons, Inc. + */ +:host,:root{--fa-style-family-classic:"Font Awesome 6 Free";--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}.fa-solid,.fas{font-weight:900} \ No newline at end of file diff --git a/assets/css/style.min.css b/assets/css/style.min.css new file mode 100644 index 00000000..4474e25b --- /dev/null +++ b/assets/css/style.min.css @@ -0,0 +1,12 @@ +/*! + * Bootstrap v5.3.0 (https://getbootstrap.com/) + * Copyright 2011-2023 The Bootstrap Authors + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */:root,[data-bs-theme="light"]{--bs-blue: #337ab7;--bs-indigo: #6610f2;--bs-purple: #6f42c1;--bs-pink: #d63384;--bs-red: #dc3545;--bs-orange: #fd7e14;--bs-yellow: #ffc107;--bs-green: #198754;--bs-teal: #20c997;--bs-cyan: #0dcaf0;--bs-black: #000;--bs-white: #fff;--bs-gray: #6c757d;--bs-gray-dark: #343a40;--bs-gray-100: #f8f9fa;--bs-gray-200: #e9ecef;--bs-gray-300: #dee2e6;--bs-gray-400: #ced4da;--bs-gray-500: #adb5bd;--bs-gray-600: #6c757d;--bs-gray-700: #495057;--bs-gray-800: #343a40;--bs-gray-900: #212529;--bs-primary: #337ab7;--bs-secondary: #6c757d;--bs-success: #198754;--bs-info: #0dcaf0;--bs-warning: #ffc107;--bs-danger: #dc3545;--bs-light: #f8f9fa;--bs-dark: #161b22;--bs-primary-rgb: 51,122,183;--bs-secondary-rgb: 108,117,125;--bs-success-rgb: 25,135,84;--bs-info-rgb: 13,202,240;--bs-warning-rgb: 255,193,7;--bs-danger-rgb: 220,53,69;--bs-light-rgb: 248,249,250;--bs-dark-rgb: 22,27,34;--bs-primary-text-emphasis: #143149;--bs-secondary-text-emphasis: #2b2f32;--bs-success-text-emphasis: #0a3622;--bs-info-text-emphasis: #055160;--bs-warning-text-emphasis: #664d03;--bs-danger-text-emphasis: #58151c;--bs-light-text-emphasis: #495057;--bs-dark-text-emphasis: #495057;--bs-primary-bg-subtle: #d6e4f1;--bs-secondary-bg-subtle: #e2e3e5;--bs-success-bg-subtle: #d1e7dd;--bs-info-bg-subtle: #cff4fc;--bs-warning-bg-subtle: #fff3cd;--bs-danger-bg-subtle: #f8d7da;--bs-light-bg-subtle: #fcfcfd;--bs-dark-bg-subtle: #ced4da;--bs-primary-border-subtle: #adcae2;--bs-secondary-border-subtle: #c4c8cb;--bs-success-border-subtle: #a3cfbb;--bs-info-border-subtle: #9eeaf9;--bs-warning-border-subtle: #ffe69c;--bs-danger-border-subtle: #f1aeb5;--bs-light-border-subtle: #e9ecef;--bs-dark-border-subtle: #adb5bd;--bs-white-rgb: 255,255,255;--bs-black-rgb: 0,0,0;--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--bs-gradient: linear-gradient(180deg, rgba(255,255,255,0.15), rgba(255,255,255,0));--bs-body-font-family: var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight: 400;--bs-body-line-height: 1.5;--bs-body-color: #212529;--bs-body-color-rgb: 33,37,41;--bs-body-bg: #fff;--bs-body-bg-rgb: 255,255,255;--bs-emphasis-color: #000;--bs-emphasis-color-rgb: 0,0,0;--bs-secondary-color: rgba(33,37,41,0.75);--bs-secondary-color-rgb: 33,37,41;--bs-secondary-bg: #e9ecef;--bs-secondary-bg-rgb: 233,236,239;--bs-tertiary-color: rgba(33,37,41,0.5);--bs-tertiary-color-rgb: 33,37,41;--bs-tertiary-bg: #f8f9fa;--bs-tertiary-bg-rgb: 248,249,250;--bs-heading-color: inherit;--bs-link-color: #337ab7;--bs-link-color-rgb: 51,122,183;--bs-link-decoration: underline;--bs-link-hover-color: #296292;--bs-link-hover-color-rgb: 41,98,146;--bs-code-color: #d63384;--bs-highlight-bg: #fff3cd;--bs-border-width: 1px;--bs-border-style: solid;--bs-border-color: #dee2e6;--bs-border-color-translucent: rgba(0,0,0,0.175);--bs-border-radius: .375rem;--bs-border-radius-sm: .25rem;--bs-border-radius-lg: .5rem;--bs-border-radius-xl: 1rem;--bs-border-radius-xxl: 2rem;--bs-border-radius-2xl: var(--bs-border-radius-xxl);--bs-border-radius-pill: 50rem;--bs-box-shadow: 0 0.5rem 1rem rgba(0,0,0,0.15);--bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0,0,0,0.075);--bs-box-shadow-lg: 0 1rem 3rem rgba(0,0,0,0.175);--bs-box-shadow-inset: inset 0 1px 2px rgba(0,0,0,0.075);--bs-focus-ring-width: .25rem;--bs-focus-ring-opacity: .25;--bs-focus-ring-color: rgba(51,122,183,0.25);--bs-form-valid-color: #198754;--bs-form-valid-border-color: #198754;--bs-form-invalid-color: #dc3545;--bs-form-invalid-border-color: #dc3545}[data-bs-theme="dark"]{color-scheme:dark;--bs-body-color: #c9d1d9;--bs-body-color-rgb: 201,209,217;--bs-body-bg: #0d1117;--bs-body-bg-rgb: 13,17,23;--bs-emphasis-color: #fff;--bs-emphasis-color-rgb: 255,255,255;--bs-secondary-color: rgba(201,209,217,0.75);--bs-secondary-color-rgb: 201,209,217;--bs-secondary-bg: #343a40;--bs-secondary-bg-rgb: 52,58,64;--bs-tertiary-color: rgba(201,209,217,0.5);--bs-tertiary-color-rgb: 201,209,217;--bs-tertiary-bg: #2b3035;--bs-tertiary-bg-rgb: 43,48,53;--bs-primary-text-emphasis: #85afd4;--bs-secondary-text-emphasis: #a7acb1;--bs-success-text-emphasis: #75b798;--bs-info-text-emphasis: #6edff6;--bs-warning-text-emphasis: #ffda6a;--bs-danger-text-emphasis: #ea868f;--bs-light-text-emphasis: #f8f9fa;--bs-dark-text-emphasis: #dee2e6;--bs-primary-bg-subtle: #0a1825;--bs-secondary-bg-subtle: #161719;--bs-success-bg-subtle: #051b11;--bs-info-bg-subtle: #032830;--bs-warning-bg-subtle: #332701;--bs-danger-bg-subtle: #2c0b0e;--bs-light-bg-subtle: #343a40;--bs-dark-bg-subtle: #1a1d20;--bs-primary-border-subtle: #1f496e;--bs-secondary-border-subtle: #41464b;--bs-success-border-subtle: #0f5132;--bs-info-border-subtle: #087990;--bs-warning-border-subtle: #997404;--bs-danger-border-subtle: #842029;--bs-light-border-subtle: #495057;--bs-dark-border-subtle: #343a40;--bs-heading-color: inherit;--bs-link-color: #85afd4;--bs-link-hover-color: #9dbfdd;--bs-link-color-rgb: 133,175,212;--bs-link-hover-color-rgb: 157,191,221;--bs-code-color: #e685b5;--bs-border-color: #495057;--bs-border-color-translucent: rgba(255,255,255,0.15);--bs-form-valid-color: #75b798;--bs-form-valid-border-color: #75b798;--bs-form-invalid-color: #ea868f;--bs-form-invalid-border-color: #ea868f}*,*::before,*::after{box-sizing:border-box}@media (prefers-reduced-motion: no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}hr{margin:1rem 0;color:inherit;border:0;border-top:var(--bs-border-width) solid;opacity:.25}h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color)}h1,.h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width: 1200px){h1,.h1{font-size:2.5rem}}h2,.h2{font-size:calc(1.325rem + .9vw)}@media (min-width: 1200px){h2,.h2{font-size:2rem}}h3,.h3{font-size:calc(1.3rem + .6vw)}@media (min-width: 1200px){h3,.h3{font-size:1.75rem}}h4,.h4{font-size:calc(1.275rem + .3vw)}@media (min-width: 1200px){h4,.h4{font-size:1.5rem}}h5,.h5{font-size:1.25rem}h6,.h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small,.small{font-size:.875em}mark,.mark{padding:.1875em;background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));text-decoration:underline}a:hover{--bs-link-color-rgb: var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:.875em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:.25rem}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-secondary-color);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role="button"]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type="date"]):not([type="datetime-local"]):not([type="month"]):not([type="week"]):not([type="time"])::-webkit-calendar-picker-indicator{display:none !important}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button:not(:disabled),[type="button"]:not(:disabled),[type="reset"]:not(:disabled),[type="submit"]:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width: 1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-text,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type="search"]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none !important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer::before{content:"\2014\00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:var(--bs-body-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:var(--bs-secondary-color)}.container,.container-fluid,.container-xxl,.container-xl,.container-lg,.container-md,.container-sm{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-right:auto;margin-left:auto}@media (min-width: 576px){.container-sm,.container{max-width:540px}}@media (min-width: 768px){.container-md,.container-sm,.container{max-width:720px}}@media (min-width: 992px){.container-lg,.container-md,.container-sm,.container{max-width:960px}}@media (min-width: 1200px){.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1140px}}@media (min-width: 1400px){.container-xxl,.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1320px}}:root{--bs-breakpoint-xs: 0;--bs-breakpoint-sm: 576px;--bs-breakpoint-md: 768px;--bs-breakpoint-lg: 992px;--bs-breakpoint-xl: 1200px;--bs-breakpoint-xxl: 1400px}.row{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-.5 * var(--bs-gutter-x));margin-left:calc(-.5 * var(--bs-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.33333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.66667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333%}.col-2{flex:0 0 auto;width:16.66667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333%}.col-5{flex:0 0 auto;width:41.66667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333%}.col-8{flex:0 0 auto;width:66.66667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333%}.col-11{flex:0 0 auto;width:91.66667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333%}.offset-2{margin-left:16.66667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333%}.offset-5{margin-left:41.66667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333%}.offset-8{margin-left:66.66667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333%}.offset-11{margin-left:91.66667%}.g-0,.gx-0{--bs-gutter-x: 0}.g-0,.gy-0{--bs-gutter-y: 0}.g-1,.gx-1{--bs-gutter-x: .25rem}.g-1,.gy-1{--bs-gutter-y: .25rem}.g-2,.gx-2{--bs-gutter-x: .5rem}.g-2,.gy-2{--bs-gutter-y: .5rem}.g-3,.gx-3{--bs-gutter-x: 1rem}.g-3,.gy-3{--bs-gutter-y: 1rem}.g-4,.gx-4{--bs-gutter-x: 1.5rem}.g-4,.gy-4{--bs-gutter-y: 1.5rem}.g-5,.gx-5{--bs-gutter-x: 3rem}.g-5,.gy-5{--bs-gutter-y: 3rem}@media (min-width: 576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.33333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.66667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333%}.col-sm-2{flex:0 0 auto;width:16.66667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333%}.col-sm-5{flex:0 0 auto;width:41.66667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333%}.col-sm-8{flex:0 0 auto;width:66.66667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333%}.col-sm-11{flex:0 0 auto;width:91.66667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333%}.offset-sm-2{margin-left:16.66667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333%}.offset-sm-5{margin-left:41.66667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333%}.offset-sm-8{margin-left:66.66667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333%}.offset-sm-11{margin-left:91.66667%}.g-sm-0,.gx-sm-0{--bs-gutter-x: 0}.g-sm-0,.gy-sm-0{--bs-gutter-y: 0}.g-sm-1,.gx-sm-1{--bs-gutter-x: .25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y: .25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x: .5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y: .5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x: 1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y: 1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x: 1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y: 1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x: 3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y: 3rem}}@media (min-width: 768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.33333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.66667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333%}.col-md-2{flex:0 0 auto;width:16.66667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333%}.col-md-5{flex:0 0 auto;width:41.66667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333%}.col-md-8{flex:0 0 auto;width:66.66667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333%}.col-md-11{flex:0 0 auto;width:91.66667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333%}.offset-md-2{margin-left:16.66667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333%}.offset-md-5{margin-left:41.66667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333%}.offset-md-8{margin-left:66.66667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333%}.offset-md-11{margin-left:91.66667%}.g-md-0,.gx-md-0{--bs-gutter-x: 0}.g-md-0,.gy-md-0{--bs-gutter-y: 0}.g-md-1,.gx-md-1{--bs-gutter-x: .25rem}.g-md-1,.gy-md-1{--bs-gutter-y: .25rem}.g-md-2,.gx-md-2{--bs-gutter-x: .5rem}.g-md-2,.gy-md-2{--bs-gutter-y: .5rem}.g-md-3,.gx-md-3{--bs-gutter-x: 1rem}.g-md-3,.gy-md-3{--bs-gutter-y: 1rem}.g-md-4,.gx-md-4{--bs-gutter-x: 1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y: 1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x: 3rem}.g-md-5,.gy-md-5{--bs-gutter-y: 3rem}}@media (min-width: 992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.33333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.66667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333%}.col-lg-2{flex:0 0 auto;width:16.66667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333%}.col-lg-5{flex:0 0 auto;width:41.66667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333%}.col-lg-8{flex:0 0 auto;width:66.66667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333%}.col-lg-11{flex:0 0 auto;width:91.66667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333%}.offset-lg-2{margin-left:16.66667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333%}.offset-lg-5{margin-left:41.66667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333%}.offset-lg-8{margin-left:66.66667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333%}.offset-lg-11{margin-left:91.66667%}.g-lg-0,.gx-lg-0{--bs-gutter-x: 0}.g-lg-0,.gy-lg-0{--bs-gutter-y: 0}.g-lg-1,.gx-lg-1{--bs-gutter-x: .25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y: .25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x: .5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y: .5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x: 1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y: 1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x: 1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y: 1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x: 3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y: 3rem}}@media (min-width: 1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.33333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.66667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333%}.col-xl-2{flex:0 0 auto;width:16.66667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333%}.col-xl-5{flex:0 0 auto;width:41.66667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333%}.col-xl-8{flex:0 0 auto;width:66.66667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333%}.col-xl-11{flex:0 0 auto;width:91.66667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333%}.offset-xl-2{margin-left:16.66667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333%}.offset-xl-5{margin-left:41.66667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333%}.offset-xl-8{margin-left:66.66667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333%}.offset-xl-11{margin-left:91.66667%}.g-xl-0,.gx-xl-0{--bs-gutter-x: 0}.g-xl-0,.gy-xl-0{--bs-gutter-y: 0}.g-xl-1,.gx-xl-1{--bs-gutter-x: .25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y: .25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x: .5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y: .5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x: 1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y: 1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x: 1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y: 1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x: 3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y: 3rem}}@media (min-width: 1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.33333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.66667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333%}.col-xxl-2{flex:0 0 auto;width:16.66667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333%}.col-xxl-5{flex:0 0 auto;width:41.66667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333%}.col-xxl-8{flex:0 0 auto;width:66.66667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333%}.col-xxl-11{flex:0 0 auto;width:91.66667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333%}.offset-xxl-2{margin-left:16.66667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333%}.offset-xxl-5{margin-left:41.66667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333%}.offset-xxl-8{margin-left:66.66667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333%}.offset-xxl-11{margin-left:91.66667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x: 0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y: 0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x: .25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y: .25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x: .5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y: .5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x: 1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y: 1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x: 1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y: 1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x: 3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y: 3rem}}.table{--bs-table-color-type: initial;--bs-table-bg-type: initial;--bs-table-color-state: initial;--bs-table-bg-state: initial;--bs-table-color: var(--bs-body-color);--bs-table-bg: var(--bs-body-bg);--bs-table-border-color: var(--bs-border-color);--bs-table-accent-bg: rgba(0,0,0,0);--bs-table-striped-color: var(--bs-body-color);--bs-table-striped-bg: rgba(0,0,0,0.05);--bs-table-active-color: var(--bs-body-color);--bs-table-active-bg: rgba(0,0,0,0.1);--bs-table-hover-color: var(--bs-body-color);--bs-table-hover-bg: rgba(0,0,0,0.075);width:100%;margin-bottom:1rem;vertical-align:top;border-color:var(--bs-table-border-color)}.table>:not(caption)>*>*{padding:.5rem .5rem;color:var(--bs-table-color-state, var(--bs-table-color-type, var(--bs-table-color)));background-color:var(--bs-table-bg);border-bottom-width:var(--bs-border-width);box-shadow:inset 0 0 0 9999px var(--bs-table-bg-state, var(--bs-table-bg-type, var(--bs-table-accent-bg)))}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table-group-divider{border-top:calc(var(--bs-border-width) * 2) solid currentcolor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:var(--bs-border-width) 0}.table-bordered>:not(caption)>*>*{border-width:0 var(--bs-border-width)}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-color-type: var(--bs-table-striped-color);--bs-table-bg-type: var(--bs-table-striped-bg)}.table-striped-columns>:not(caption)>tr>:nth-child(even){--bs-table-color-type: var(--bs-table-striped-color);--bs-table-bg-type: var(--bs-table-striped-bg)}.table-active{--bs-table-color-state: var(--bs-table-active-color);--bs-table-bg-state: var(--bs-table-active-bg)}.table-hover>tbody>tr:hover>*{--bs-table-color-state: var(--bs-table-hover-color);--bs-table-bg-state: var(--bs-table-hover-bg)}.table-primary{--bs-table-color: #000;--bs-table-bg: #d6e4f1;--bs-table-border-color: #c1cdd9;--bs-table-striped-bg: #cbd9e5;--bs-table-striped-color: #000;--bs-table-active-bg: #c1cdd9;--bs-table-active-color: #000;--bs-table-hover-bg: #c6d3df;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-secondary{--bs-table-color: #000;--bs-table-bg: #e2e3e5;--bs-table-border-color: #cbccce;--bs-table-striped-bg: #d7d8da;--bs-table-striped-color: #000;--bs-table-active-bg: #cbccce;--bs-table-active-color: #000;--bs-table-hover-bg: #d1d2d4;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-success{--bs-table-color: #000;--bs-table-bg: #d1e7dd;--bs-table-border-color: #bcd0c7;--bs-table-striped-bg: #c7dbd2;--bs-table-striped-color: #000;--bs-table-active-bg: #bcd0c7;--bs-table-active-color: #000;--bs-table-hover-bg: #c1d6cc;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-info{--bs-table-color: #000;--bs-table-bg: #cff4fc;--bs-table-border-color: #badce3;--bs-table-striped-bg: #c5e8ef;--bs-table-striped-color: #000;--bs-table-active-bg: #badce3;--bs-table-active-color: #000;--bs-table-hover-bg: #bfe2e9;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-warning{--bs-table-color: #000;--bs-table-bg: #fff3cd;--bs-table-border-color: #e6dbb9;--bs-table-striped-bg: #f2e7c3;--bs-table-striped-color: #000;--bs-table-active-bg: #e6dbb9;--bs-table-active-color: #000;--bs-table-hover-bg: #ece1be;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-danger{--bs-table-color: #000;--bs-table-bg: #f8d7da;--bs-table-border-color: #dfc2c4;--bs-table-striped-bg: #eccccf;--bs-table-striped-color: #000;--bs-table-active-bg: #dfc2c4;--bs-table-active-color: #000;--bs-table-hover-bg: #e5c7ca;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-light{--bs-table-color: #000;--bs-table-bg: #f8f9fa;--bs-table-border-color: #dfe0e1;--bs-table-striped-bg: #ecedee;--bs-table-striped-color: #000;--bs-table-active-bg: #dfe0e1;--bs-table-active-color: #000;--bs-table-hover-bg: #e5e6e7;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-dark{--bs-table-color: #fff;--bs-table-bg: #161b22;--bs-table-border-color: #2d3238;--bs-table-striped-bg: #22262d;--bs-table-striped-color: #fff;--bs-table-active-bg: #2d3238;--bs-table-active-color: #fff;--bs-table-hover-bg: #272c33;--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width: 575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(.375rem + var(--bs-border-width));padding-bottom:calc(.375rem + var(--bs-border-width));margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + var(--bs-border-width));padding-bottom:calc(.5rem + var(--bs-border-width));font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + var(--bs-border-width));padding-bottom:calc(.25rem + var(--bs-border-width));font-size:.875rem}.form-text{margin-top:.25rem;font-size:.875em;color:var(--bs-secondary-color)}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);background-color:var(--bs-body-bg);background-clip:padding-box;border:var(--bs-border-width) solid var(--bs-border-color);appearance:none;border-radius:var(--bs-border-radius);transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-control{transition:none}}.form-control[type="file"]{overflow:hidden}.form-control[type="file"]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:var(--bs-body-color);background-color:var(--bs-body-bg);border-color:#99bddb;outline:0;box-shadow:0 0 0 .25rem rgba(51,122,183,0.25)}.form-control::-webkit-date-and-time-value{min-width:85px;height:1.5em;margin:0}.form-control::-webkit-datetime-edit{display:block;padding:0}.form-control::placeholder{color:var(--bs-secondary-color);opacity:1}.form-control:disabled{background-color:var(--bs-secondary-bg);opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;margin-inline-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--bs-secondary-bg)}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:var(--bs-body-color);background-color:transparent;border:solid transparent;border-width:var(--bs-border-width) 0}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2));padding:.25rem .5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));padding:.5rem 1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + .75rem + calc(var(--bs-border-width) * 2))}textarea.form-control-sm{min-height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2))}textarea.form-control-lg{min-height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2))}.form-control-color{width:3rem;height:calc(1.5em + .75rem + calc(var(--bs-border-width) * 2));padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0 !important;border-radius:var(--bs-border-radius)}.form-control-color::-webkit-color-swatch{border:0 !important;border-radius:var(--bs-border-radius)}.form-control-color.form-control-sm{height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2))}.form-control-color.form-control-lg{height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2))}.form-select{--bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);background-color:var(--bs-body-bg);background-image:var(--bs-form-select-bg-img),var(--bs-form-select-bg-icon, none);background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;appearance:none}@media (prefers-reduced-motion: reduce){.form-select{transition:none}}.form-select:focus{border-color:#99bddb;outline:0;box-shadow:0 0 0 .25rem rgba(51,122,183,0.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:var(--bs-secondary-bg)}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 var(--bs-body-color)}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}[data-bs-theme="dark"] .form-select{--bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23c9d1d9' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e")}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-reverse{padding-right:1.5em;padding-left:0;text-align:right}.form-check-reverse .form-check-input{float:right;margin-right:-1.5em;margin-left:0}.form-check-input{--bs-form-check-bg: var(--bs-body-bg);width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:var(--bs-form-check-bg);background-image:var(--bs-form-check-bg-image);background-repeat:no-repeat;background-position:center;background-size:contain;border:var(--bs-border-width) solid var(--bs-border-color);appearance:none;print-color-adjust:exact}.form-check-input[type="checkbox"]{border-radius:.25em}.form-check-input[type="radio"]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#99bddb;outline:0;box-shadow:0 0 0 .25rem rgba(51,122,183,0.25)}.form-check-input:checked{background-color:#337ab7;border-color:#337ab7}.form-check-input:checked[type="checkbox"]{--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type="radio"]{--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type="checkbox"]:indeterminate{background-color:#337ab7;border-color:#337ab7;--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input[disabled]~.form-check-label,.form-check-input:disabled~.form-check-label{cursor:default;opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280,0,0,0.25%29'/%3e%3c/svg%3e");width:2em;margin-left:-2.5em;background-image:var(--bs-form-switch-bg);background-position:left center;border-radius:2em;transition:background-position 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2399bddb'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-switch.form-check-reverse{padding-right:2.5em;padding-left:0}.form-switch.form-check-reverse .form-check-input{margin-right:-2.5em;margin-left:0}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.btn-check[disabled]+.btn,.btn-check:disabled+.btn{pointer-events:none;filter:none;opacity:.65}[data-bs-theme="dark"] .form-switch .form-check-input:not(:checked):not(:focus){--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255,255,255,0.25%29'/%3e%3c/svg%3e")}.form-range{width:100%;height:1.5rem;padding:0;background-color:transparent;appearance:none}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(51,122,183,0.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(51,122,183,0.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#337ab7;border:0;border-radius:1rem;transition:background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;appearance:none}@media (prefers-reduced-motion: reduce){.form-range::-webkit-slider-thumb{transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#c2d7e9}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:var(--bs-tertiary-bg);border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#337ab7;border:0;border-radius:1rem;transition:background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;appearance:none}@media (prefers-reduced-motion: reduce){.form-range::-moz-range-thumb{transition:none}}.form-range::-moz-range-thumb:active{background-color:#c2d7e9}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:var(--bs-tertiary-bg);border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:var(--bs-secondary-color)}.form-range:disabled::-moz-range-thumb{background-color:var(--bs-secondary-color)}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + calc(var(--bs-border-width) * 2));min-height:calc(3.5rem + calc(var(--bs-border-width) * 2));line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;z-index:2;height:100%;padding:1rem .75rem;overflow:hidden;text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:var(--bs-border-width) solid transparent;transform-origin:0 0;transition:opacity 0.1s ease-in-out,transform 0.1s ease-in-out}@media (prefers-reduced-motion: reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .75rem}.form-floating>.form-control::placeholder,.form-floating>.form-control-plaintext::placeholder{color:transparent}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown),.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill,.form-floating>.form-control-plaintext:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-control-plaintext~label,.form-floating>.form-select~label{color:rgba(var(--bs-body-color-rgb), .65);transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.form-floating>.form-control:focus~label::after,.form-floating>.form-control:not(:placeholder-shown)~label::after,.form-floating>.form-control-plaintext~label::after,.form-floating>.form-select~label::after{position:absolute;inset:1rem .375rem;z-index:-1;height:1.5em;content:"";background-color:var(--bs-body-bg);border-radius:var(--bs-border-radius)}.form-floating>.form-control:-webkit-autofill~label{color:rgba(var(--bs-body-color-rgb), .65);transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.form-floating>.form-control-plaintext~label{border-width:var(--bs-border-width) 0}.form-floating>:disabled~label{color:#6c757d}.form-floating>:disabled~label::after{background-color:var(--bs-secondary-bg)}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select,.input-group>.form-floating{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus,.input-group>.form-floating:focus-within{z-index:5}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:5}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);text-align:center;white-space:nowrap;background-color:var(--bs-tertiary-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius)}.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text,.input-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text,.input-group-sm>.btn{padding:.25rem .5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n + 3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select{border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>:nth-last-child(n + 3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group.has-validation>.dropdown-toggle:nth-last-child(n + 4),.input-group.has-validation>.form-floating:nth-last-child(n + 3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n + 3)>.form-select{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:calc(var(--bs-border-width) * -1);border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:var(--bs-form-valid-color)}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-success);border-radius:var(--bs-border-radius)}.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip,.is-valid~.valid-feedback,.is-valid~.valid-tooltip{display:block}.was-validated .form-control:valid,.form-control.is-valid{border-color:var(--bs-form-valid-border-color);padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-control:valid:focus,.form-control.is-valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb), 0.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.was-validated .form-select:valid,.form-select.is-valid{border-color:var(--bs-form-valid-border-color)}.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"],.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"]{--bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-select:valid:focus,.form-select.is-valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb), 0.25)}.was-validated .form-control-color:valid,.form-control-color.is-valid{width:calc(3rem + calc(1.5em + .75rem))}.was-validated .form-check-input:valid,.form-check-input.is-valid{border-color:var(--bs-form-valid-border-color)}.was-validated .form-check-input:valid:checked,.form-check-input.is-valid:checked{background-color:var(--bs-form-valid-color)}.was-validated .form-check-input:valid:focus,.form-check-input.is-valid:focus{box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb), 0.25)}.was-validated .form-check-input:valid~.form-check-label,.form-check-input.is-valid~.form-check-label{color:var(--bs-form-valid-color)}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.was-validated .input-group>.form-control:not(:focus):valid,.input-group>.form-control:not(:focus).is-valid,.was-validated .input-group>.form-select:not(:focus):valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.input-group>.form-floating:not(:focus-within).is-valid{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:var(--bs-form-invalid-color)}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-danger);border-radius:var(--bs-border-radius)}.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip,.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip{display:block}.was-validated .form-control:invalid,.form-control.is-invalid{border-color:var(--bs-form-invalid-border-color);padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb), 0.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.was-validated .form-select:invalid,.form-select.is-invalid{border-color:var(--bs-form-invalid-border-color)}.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"],.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"]{--bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-select:invalid:focus,.form-select.is-invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb), 0.25)}.was-validated .form-control-color:invalid,.form-control-color.is-invalid{width:calc(3rem + calc(1.5em + .75rem))}.was-validated .form-check-input:invalid,.form-check-input.is-invalid{border-color:var(--bs-form-invalid-border-color)}.was-validated .form-check-input:invalid:checked,.form-check-input.is-invalid:checked{background-color:var(--bs-form-invalid-color)}.was-validated .form-check-input:invalid:focus,.form-check-input.is-invalid:focus{box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb), 0.25)}.was-validated .form-check-input:invalid~.form-check-label,.form-check-input.is-invalid~.form-check-label{color:var(--bs-form-invalid-color)}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.was-validated .input-group>.form-control:not(:focus):invalid,.input-group>.form-control:not(:focus).is-invalid,.was-validated .input-group>.form-select:not(:focus):invalid,.input-group>.form-select:not(:focus).is-invalid,.was-validated .input-group>.form-floating:not(:focus-within):invalid,.input-group>.form-floating:not(:focus-within).is-invalid{z-index:4}.btn{--bs-btn-padding-x: .75rem;--bs-btn-padding-y: .375rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight: 400;--bs-btn-line-height: 1.5;--bs-btn-color: var(--bs-body-color);--bs-btn-bg: transparent;--bs-btn-border-width: var(--bs-border-width);--bs-btn-border-color: transparent;--bs-btn-border-radius: var(--bs-border-radius);--bs-btn-hover-border-color: transparent;--bs-btn-box-shadow: inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075);--bs-btn-disabled-opacity: .65;--bs-btn-focus-box-shadow: 0 0 0 .25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.btn{transition:none}}.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn-check+.btn:hover{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color)}.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:focus-visible+.btn{border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked+.btn,:not(.btn-check)+.btn:active,.btn:first-child:active,.btn.active,.btn.show{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn-check:checked+.btn:focus-visible,:not(.btn-check)+.btn:active:focus-visible,.btn:first-child:active:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn:disabled,.btn.disabled,fieldset:disabled .btn{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-primary{--bs-btn-color: #fff;--bs-btn-bg: #337ab7;--bs-btn-border-color: #337ab7;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #2b689c;--bs-btn-hover-border-color: #296292;--bs-btn-focus-shadow-rgb: 82,142,194;--bs-btn-active-color: #fff;--bs-btn-active-bg: #296292;--bs-btn-active-border-color: #265c89;--bs-btn-active-shadow: inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #337ab7;--bs-btn-disabled-border-color: #337ab7}.btn-secondary{--bs-btn-color: #fff;--bs-btn-bg: #6c757d;--bs-btn-border-color: #6c757d;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #5c636a;--bs-btn-hover-border-color: #565e64;--bs-btn-focus-shadow-rgb: 130,138,145;--bs-btn-active-color: #fff;--bs-btn-active-bg: #565e64;--bs-btn-active-border-color: #51585e;--bs-btn-active-shadow: inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #6c757d;--bs-btn-disabled-border-color: #6c757d}.btn-success{--bs-btn-color: #fff;--bs-btn-bg: #198754;--bs-btn-border-color: #198754;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #157347;--bs-btn-hover-border-color: #146c43;--bs-btn-focus-shadow-rgb: 60,153,110;--bs-btn-active-color: #fff;--bs-btn-active-bg: #146c43;--bs-btn-active-border-color: #13653f;--bs-btn-active-shadow: inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #198754;--bs-btn-disabled-border-color: #198754}.btn-info{--bs-btn-color: #000;--bs-btn-bg: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #31d2f2;--bs-btn-hover-border-color: #25cff2;--bs-btn-focus-shadow-rgb: 11,172,204;--bs-btn-active-color: #000;--bs-btn-active-bg: #3dd5f3;--bs-btn-active-border-color: #25cff2;--bs-btn-active-shadow: inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #0dcaf0;--bs-btn-disabled-border-color: #0dcaf0}.btn-warning{--bs-btn-color: #000;--bs-btn-bg: #ffc107;--bs-btn-border-color: #ffc107;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffca2c;--bs-btn-hover-border-color: #ffc720;--bs-btn-focus-shadow-rgb: 217,164,6;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffcd39;--bs-btn-active-border-color: #ffc720;--bs-btn-active-shadow: inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #ffc107;--bs-btn-disabled-border-color: #ffc107}.btn-danger{--bs-btn-color: #fff;--bs-btn-bg: #dc3545;--bs-btn-border-color: #dc3545;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #bb2d3b;--bs-btn-hover-border-color: #b02a37;--bs-btn-focus-shadow-rgb: 225,83,97;--bs-btn-active-color: #fff;--bs-btn-active-bg: #b02a37;--bs-btn-active-border-color: #a52834;--bs-btn-active-shadow: inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #dc3545;--bs-btn-disabled-border-color: #dc3545}.btn-light{--bs-btn-color: #000;--bs-btn-bg: #f8f9fa;--bs-btn-border-color: #f8f9fa;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #d3d4d5;--bs-btn-hover-border-color: #c6c7c8;--bs-btn-focus-shadow-rgb: 211,212,213;--bs-btn-active-color: #000;--bs-btn-active-bg: #c6c7c8;--bs-btn-active-border-color: #babbbc;--bs-btn-active-shadow: inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #f8f9fa;--bs-btn-disabled-border-color: #f8f9fa}.btn-dark{--bs-btn-color: #fff;--bs-btn-bg: #161b22;--bs-btn-border-color: #161b22;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #393d43;--bs-btn-hover-border-color: #2d3238;--bs-btn-focus-shadow-rgb: 57,61,67;--bs-btn-active-color: #fff;--bs-btn-active-bg: #45494e;--bs-btn-active-border-color: #2d3238;--bs-btn-active-shadow: inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #161b22;--bs-btn-disabled-border-color: #161b22}.btn-outline-primary{--bs-btn-color: #337ab7;--bs-btn-border-color: #337ab7;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #337ab7;--bs-btn-hover-border-color: #337ab7;--bs-btn-focus-shadow-rgb: 51,122,183;--bs-btn-active-color: #fff;--bs-btn-active-bg: #337ab7;--bs-btn-active-border-color: #337ab7;--bs-btn-active-shadow: inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color: #337ab7;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #337ab7;--bs-gradient: none}.btn-outline-secondary{--bs-btn-color: #6c757d;--bs-btn-border-color: #6c757d;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6c757d;--bs-btn-hover-border-color: #6c757d;--bs-btn-focus-shadow-rgb: 108,117,125;--bs-btn-active-color: #fff;--bs-btn-active-bg: #6c757d;--bs-btn-active-border-color: #6c757d;--bs-btn-active-shadow: inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color: #6c757d;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #6c757d;--bs-gradient: none}.btn-outline-success{--bs-btn-color: #198754;--bs-btn-border-color: #198754;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #198754;--bs-btn-hover-border-color: #198754;--bs-btn-focus-shadow-rgb: 25,135,84;--bs-btn-active-color: #fff;--bs-btn-active-bg: #198754;--bs-btn-active-border-color: #198754;--bs-btn-active-shadow: inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color: #198754;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #198754;--bs-gradient: none}.btn-outline-info{--bs-btn-color: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #0dcaf0;--bs-btn-hover-border-color: #0dcaf0;--bs-btn-focus-shadow-rgb: 13,202,240;--bs-btn-active-color: #000;--bs-btn-active-bg: #0dcaf0;--bs-btn-active-border-color: #0dcaf0;--bs-btn-active-shadow: inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color: #0dcaf0;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #0dcaf0;--bs-gradient: none}.btn-outline-warning{--bs-btn-color: #ffc107;--bs-btn-border-color: #ffc107;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffc107;--bs-btn-hover-border-color: #ffc107;--bs-btn-focus-shadow-rgb: 255,193,7;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffc107;--bs-btn-active-border-color: #ffc107;--bs-btn-active-shadow: inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color: #ffc107;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #ffc107;--bs-gradient: none}.btn-outline-danger{--bs-btn-color: #dc3545;--bs-btn-border-color: #dc3545;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #dc3545;--bs-btn-hover-border-color: #dc3545;--bs-btn-focus-shadow-rgb: 220,53,69;--bs-btn-active-color: #fff;--bs-btn-active-bg: #dc3545;--bs-btn-active-border-color: #dc3545;--bs-btn-active-shadow: inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color: #dc3545;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #dc3545;--bs-gradient: none}.btn-outline-light{--bs-btn-color: #f8f9fa;--bs-btn-border-color: #f8f9fa;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #f8f9fa;--bs-btn-hover-border-color: #f8f9fa;--bs-btn-focus-shadow-rgb: 248,249,250;--bs-btn-active-color: #000;--bs-btn-active-bg: #f8f9fa;--bs-btn-active-border-color: #f8f9fa;--bs-btn-active-shadow: inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color: #f8f9fa;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #f8f9fa;--bs-gradient: none}.btn-outline-dark{--bs-btn-color: #161b22;--bs-btn-border-color: #161b22;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #161b22;--bs-btn-hover-border-color: #161b22;--bs-btn-focus-shadow-rgb: 22,27,34;--bs-btn-active-color: #fff;--bs-btn-active-bg: #161b22;--bs-btn-active-border-color: #161b22;--bs-btn-active-shadow: inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color: #161b22;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #161b22;--bs-gradient: none}.btn-link{--bs-btn-font-weight: 400;--bs-btn-color: var(--bs-link-color);--bs-btn-bg: transparent;--bs-btn-border-color: transparent;--bs-btn-hover-color: var(--bs-link-hover-color);--bs-btn-hover-border-color: transparent;--bs-btn-active-color: var(--bs-link-hover-color);--bs-btn-active-border-color: transparent;--bs-btn-disabled-color: #6c757d;--bs-btn-disabled-border-color: transparent;--bs-btn-box-shadow: 0 0 0 #000;--bs-btn-focus-shadow-rgb: 82,142,194;text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-lg,.btn-group-lg>.btn{--bs-btn-padding-y: .5rem;--bs-btn-padding-x: 1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius: var(--bs-border-radius-lg)}.btn-sm,.btn-group-sm>.btn{--bs-btn-padding-y: .25rem;--bs-btn-padding-x: .5rem;--bs-btn-font-size:.875rem;--bs-btn-border-radius: var(--bs-border-radius-sm)}.fade{transition:opacity 0.15s linear}@media (prefers-reduced-motion: reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height 0.35s ease}@media (prefers-reduced-motion: reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width 0.35s ease}@media (prefers-reduced-motion: reduce){.collapsing.collapse-horizontal{transition:none}}.dropup,.dropend,.dropdown,.dropstart,.dropup-center,.dropdown-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{--bs-dropdown-zindex: 1000;--bs-dropdown-min-width: 10rem;--bs-dropdown-padding-x: 0;--bs-dropdown-padding-y: .5rem;--bs-dropdown-spacer: .125rem;--bs-dropdown-font-size:1rem;--bs-dropdown-color: var(--bs-body-color);--bs-dropdown-bg: var(--bs-body-bg);--bs-dropdown-border-color: var(--bs-border-color-translucent);--bs-dropdown-border-radius: var(--bs-border-radius);--bs-dropdown-border-width: var(--bs-border-width);--bs-dropdown-inner-border-radius: calc(var(--bs-border-radius) - var(--bs-border-width));--bs-dropdown-divider-bg: var(--bs-border-color-translucent);--bs-dropdown-divider-margin-y: .5rem;--bs-dropdown-box-shadow: 0 0.5rem 1rem rgba(0,0,0,0.15);--bs-dropdown-link-color: var(--bs-body-color);--bs-dropdown-link-hover-color: var(--bs-body-color);--bs-dropdown-link-hover-bg: var(--bs-tertiary-bg);--bs-dropdown-link-active-color: #fff;--bs-dropdown-link-active-bg: #337ab7;--bs-dropdown-link-disabled-color: var(--bs-tertiary-color);--bs-dropdown-item-padding-x: 1rem;--bs-dropdown-item-padding-y: .25rem;--bs-dropdown-header-color: #6c757d;--bs-dropdown-header-padding-x: 1rem;--bs-dropdown-header-padding-y: .5rem;position:absolute;z-index:var(--bs-dropdown-zindex);display:none;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);margin:0;font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:left;list-style:none;background-color:var(--bs-dropdown-bg);background-clip:padding-box;border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--bs-dropdown-spacer)}.dropdown-menu-start{--bs-position: start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position: end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width: 576px){.dropdown-menu-sm-start{--bs-position: start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position: end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 768px){.dropdown-menu-md-start{--bs-position: start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position: end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 992px){.dropdown-menu-lg-start{--bs-position: start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position: end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 1200px){.dropdown-menu-xl-start{--bs-position: start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position: end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 1400px){.dropdown-menu-xxl-start{--bs-position: start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position: end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--bs-dropdown-spacer)}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--bs-dropdown-spacer)}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:var(--bs-dropdown-spacer)}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:var(--bs-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--bs-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--bs-dropdown-link-color);text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0;border-radius:var(--bs-dropdown-item-border-radius, 0)}.dropdown-item:hover,.dropdown-item:focus{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--bs-dropdown-link-active-color);text-decoration:none;background-color:var(--bs-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);margin-bottom:0;font-size:.875rem;color:var(--bs-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);color:var(--bs-dropdown-link-color)}.dropdown-menu-dark{--bs-dropdown-color: #dee2e6;--bs-dropdown-bg: #343a40;--bs-dropdown-border-color: var(--bs-border-color-translucent);--bs-dropdown-box-shadow: ;--bs-dropdown-link-color: #dee2e6;--bs-dropdown-link-hover-color: #fff;--bs-dropdown-divider-bg: var(--bs-border-color-translucent);--bs-dropdown-link-hover-bg: rgba(255,255,255,0.15);--bs-dropdown-link-active-color: #fff;--bs-dropdown-link-active-bg: #337ab7;--bs-dropdown-link-disabled-color: #adb5bd;--bs-dropdown-header-color: #adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:1 1 auto}.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:var(--bs-border-radius)}.btn-group>:not(.btn-check:first-child)+.btn,.btn-group>.btn-group:not(:first-child){margin-left:calc(var(--bs-border-width) * -1)}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn.dropdown-toggle-split:first-child,.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:nth-child(n + 3),.btn-group>:not(.btn-check)+.btn,.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child){margin-top:calc(var(--bs-border-width) * -1)}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn~.btn,.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{--bs-nav-link-padding-x: 1rem;--bs-nav-link-padding-y: .5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: var(--bs-link-color);--bs-nav-link-hover-color: var(--bs-link-hover-color);--bs-nav-link-disabled-color: var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;background:none;border:0;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.nav-link{transition:none}}.nav-link:hover,.nav-link:focus{color:var(--bs-nav-link-hover-color)}.nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem rgba(51,122,183,0.25)}.nav-link.disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--bs-nav-tabs-border-width: var(--bs-border-width);--bs-nav-tabs-border-color: var(--bs-border-color);--bs-nav-tabs-border-radius: var(--bs-border-radius);--bs-nav-tabs-link-hover-border-color: var(--bs-secondary-bg) var(--bs-secondary-bg) var(--bs-border-color);--bs-nav-tabs-link-active-color: var(--bs-emphasis-color);--bs-nav-tabs-link-active-bg: var(--bs-body-bg);--bs-nav-tabs-link-active-border-color: var(--bs-border-color) var(--bs-border-color) var(--bs-body-bg);border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(-1 * var(--bs-nav-tabs-border-width));border:var(--bs-nav-tabs-border-width) solid transparent;border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}.nav-tabs .nav-link.disabled,.nav-tabs .nav-link:disabled{color:var(--bs-nav-link-disabled-color);background-color:transparent;border-color:transparent}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)}.nav-tabs .dropdown-menu{margin-top:calc(-1 * var(--bs-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}.nav-pills{--bs-nav-pills-border-radius: var(--bs-border-radius);--bs-nav-pills-link-active-color: #fff;--bs-nav-pills-link-active-bg: #337ab7}.nav-pills .nav-link{border-radius:var(--bs-nav-pills-border-radius)}.nav-pills .nav-link:disabled{color:var(--bs-nav-link-disabled-color);background-color:transparent;border-color:transparent}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}.nav-underline{--bs-nav-underline-gap: 1rem;--bs-nav-underline-border-width: .125rem;--bs-nav-underline-link-active-color: var(--bs-emphasis-color);gap:var(--bs-nav-underline-gap)}.nav-underline .nav-link{padding-right:0;padding-left:0;border-bottom:var(--bs-nav-underline-border-width) solid transparent}.nav-underline .nav-link:hover,.nav-underline .nav-link:focus{border-bottom-color:currentcolor}.nav-underline .nav-link.active,.nav-underline .show>.nav-link{font-weight:700;color:var(--bs-nav-underline-link-active-color);border-bottom-color:currentcolor}.nav-fill>.nav-link,.nav-fill .nav-item{flex:1 1 auto;text-align:center}.nav-justified>.nav-link,.nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--bs-navbar-padding-x: 0;--bs-navbar-padding-y: .5rem;--bs-navbar-color: rgba(var(--bs-emphasis-color-rgb), 0.65);--bs-navbar-hover-color: rgba(var(--bs-emphasis-color-rgb), 0.8);--bs-navbar-disabled-color: rgba(var(--bs-emphasis-color-rgb), 0.3);--bs-navbar-active-color: rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-padding-y: .3125rem;--bs-navbar-brand-margin-end: 1rem;--bs-navbar-brand-font-size: 1.25rem;--bs-navbar-brand-color: rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-hover-color: rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-nav-link-padding-x: .5rem;--bs-navbar-toggler-padding-y: .25rem;--bs-navbar-toggler-padding-x: .75rem;--bs-navbar-toggler-font-size: 1.25rem;--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2833,37,41,0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--bs-navbar-toggler-border-color: rgba(var(--bs-emphasis-color-rgb), 0.15);--bs-navbar-toggler-border-radius: var(--bs-border-radius);--bs-navbar-toggler-focus-width: .25rem;--bs-navbar-toggler-transition: box-shadow 0.15s ease-in-out;position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid,.navbar>.container-sm,.navbar>.container-md,.navbar>.container-lg,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);margin-right:var(--bs-navbar-brand-margin-end);font-size:var(--bs-navbar-brand-font-size);color:var(--bs-navbar-brand-color);text-decoration:none;white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x: 0;--bs-nav-link-padding-y: .5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: var(--bs-navbar-color);--bs-nav-link-hover-color: var(--bs-navbar-hover-color);--bs-nav-link-disabled-color: var(--bs-navbar-disabled-color);display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link.active,.navbar-nav .nav-link.show{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-navbar-color)}.navbar-text a,.navbar-text a:hover,.navbar-text a:focus{color:var(--bs-navbar-active-color)}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:transparent;border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);transition:var(--bs-navbar-toggler-transition)}@media (prefers-reduced-motion: reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--bs-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height, 75vh);overflow-y:auto}@media (min-width: 576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:transparent !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width: 768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:transparent !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width: 992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:transparent !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width: 1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:transparent !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width: 1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:transparent !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:transparent !important;border:0 !important;transform:none !important;transition:none}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}.navbar-dark,.navbar[data-bs-theme="dark"]{--bs-navbar-color: rgba(255,255,255,0.55);--bs-navbar-hover-color: rgba(255,255,255,0.75);--bs-navbar-disabled-color: rgba(255,255,255,0.25);--bs-navbar-active-color: #fff;--bs-navbar-brand-color: #fff;--bs-navbar-brand-hover-color: #fff;--bs-navbar-toggler-border-color: rgba(255,255,255,0.1);--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255,255,255,0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}[data-bs-theme="dark"] .navbar-toggler-icon{--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255,255,255,0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.card{--bs-card-spacer-y: 1rem;--bs-card-spacer-x: 1rem;--bs-card-title-spacer-y: .5rem;--bs-card-title-color: ;--bs-card-subtitle-color: ;--bs-card-border-width: var(--bs-border-width);--bs-card-border-color: var(--bs-border-color-translucent);--bs-card-border-radius: var(--bs-border-radius);--bs-card-box-shadow: ;--bs-card-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-card-cap-padding-y: .5rem;--bs-card-cap-padding-x: 1rem;--bs-card-cap-bg: rgba(var(--bs-body-color-rgb), 0.03);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg: var(--bs-body-bg);--bs-card-img-overlay-padding: 1rem;--bs-card-group-margin: .75rem;position:relative;display:flex;flex-direction:column;min-width:0;height:var(--bs-card-height);color:var(--bs-body-color);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius)}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-title{margin-bottom:var(--bs-card-title-spacer-y);color:var(--bs-card-title-color)}.card-subtitle{margin-top:calc(-.5 * var(--bs-card-title-spacer-y));margin-bottom:0;color:var(--bs-card-subtitle-color)}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);margin-bottom:0;color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.card-footer{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-top:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-footer:last-child{border-radius:0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius)}.card-header-tabs{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-bottom:calc(-1 * var(--bs-card-cap-padding-y));margin-left:calc(-.5 * var(--bs-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-header-pills{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-left:calc(-.5 * var(--bs-card-cap-padding-x))}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:var(--bs-card-img-overlay-padding);border-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-top,.card-img-bottom{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media (min-width: 576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-img-top,.card-group>.card:not(:last-child) .card-header{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-img-bottom,.card-group>.card:not(:last-child) .card-footer{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-img-top,.card-group>.card:not(:first-child) .card-header{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-img-bottom,.card-group>.card:not(:first-child) .card-footer{border-bottom-left-radius:0}}.accordion{--bs-accordion-color: var(--bs-body-color);--bs-accordion-bg: var(--bs-body-bg);--bs-accordion-transition: color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out,border-radius 0.15s ease;--bs-accordion-border-color: var(--bs-border-color);--bs-accordion-border-width: var(--bs-border-width);--bs-accordion-border-radius: var(--bs-border-radius);--bs-accordion-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-accordion-btn-padding-x: 1.25rem;--bs-accordion-btn-padding-y: 1rem;--bs-accordion-btn-color: var(--bs-body-color);--bs-accordion-btn-bg: var(--bs-accordion-bg);--bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-icon-width: 1.25rem;--bs-accordion-btn-icon-transform: rotate(-180deg);--bs-accordion-btn-icon-transition: transform 0.2s ease-in-out;--bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23143149'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-focus-border-color: #99bddb;--bs-accordion-btn-focus-box-shadow: 0 0 0 .25rem rgba(51,122,183,0.25);--bs-accordion-body-padding-x: 1.25rem;--bs-accordion-body-padding-y: 1rem;--bs-accordion-active-color: var(--bs-primary-text-emphasis);--bs-accordion-active-bg: var(--bs-primary-bg-subtle)}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);font-size:1rem;color:var(--bs-accordion-btn-color);text-align:left;background-color:var(--bs-accordion-btn-bg);border:0;border-radius:0;overflow-anchor:none;transition:var(--bs-accordion-transition)}@media (prefers-reduced-motion: reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:var(--bs-accordion-active-color);background-color:var(--bs-accordion-active-bg);box-shadow:inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed)::after{background-image:var(--bs-accordion-btn-active-icon);transform:var(--bs-accordion-btn-icon-transform)}.accordion-button::after{flex-shrink:0;width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);margin-left:auto;content:"";background-image:var(--bs-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--bs-accordion-btn-icon-width);transition:var(--bs-accordion-btn-icon-transition)}@media (prefers-reduced-motion: reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:var(--bs-accordion-btn-focus-border-color);outline:0;box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.accordion-header{margin-bottom:0}.accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.accordion-item:first-of-type{border-top-left-radius:var(--bs-accordion-border-radius);border-top-right-radius:var(--bs-accordion-border-radius)}.accordion-item:first-of-type .accordion-button{border-top-left-radius:var(--bs-accordion-inner-border-radius);border-top-right-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:var(--bs-accordion-inner-border-radius);border-bottom-left-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-body{padding:var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x)}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button,.accordion-flush .accordion-item .accordion-button.collapsed{border-radius:0}[data-bs-theme="dark"] .accordion-button::after{--bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2385afd4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2385afd4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.breadcrumb{--bs-breadcrumb-padding-x: 0;--bs-breadcrumb-padding-y: 0;--bs-breadcrumb-margin-bottom: 1rem;--bs-breadcrumb-bg: ;--bs-breadcrumb-border-radius: ;--bs-breadcrumb-divider-color: var(--bs-secondary-color);--bs-breadcrumb-item-padding-x: .5rem;--bs-breadcrumb-item-active-color: var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);list-style:none;background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius)}.breadcrumb-item+.breadcrumb-item{padding-left:var(--bs-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:var(--bs-breadcrumb-item-padding-x);color:var(--bs-breadcrumb-divider-color);content:var(--bs-breadcrumb-divider, "/") /* rtl: var(--bs-breadcrumb-divider, "/") */}.breadcrumb-item.active{color:var(--bs-breadcrumb-item-active-color)}.pagination{--bs-pagination-padding-x: .75rem;--bs-pagination-padding-y: .375rem;--bs-pagination-font-size:1rem;--bs-pagination-color: var(--bs-link-color);--bs-pagination-bg: var(--bs-body-bg);--bs-pagination-border-width: var(--bs-border-width);--bs-pagination-border-color: var(--bs-border-color);--bs-pagination-border-radius: var(--bs-border-radius);--bs-pagination-hover-color: var(--bs-link-hover-color);--bs-pagination-hover-bg: var(--bs-tertiary-bg);--bs-pagination-hover-border-color: var(--bs-border-color);--bs-pagination-focus-color: var(--bs-link-hover-color);--bs-pagination-focus-bg: var(--bs-secondary-bg);--bs-pagination-focus-box-shadow: 0 0 0 .25rem rgba(51,122,183,0.25);--bs-pagination-active-color: #fff;--bs-pagination-active-bg: #337ab7;--bs-pagination-active-border-color: #337ab7;--bs-pagination-disabled-color: var(--bs-secondary-color);--bs-pagination-disabled-bg: var(--bs-secondary-bg);--bs-pagination-disabled-border-color: var(--bs-border-color);display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);text-decoration:none;background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--bs-pagination-hover-color);background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:0;box-shadow:var(--bs-pagination-focus-box-shadow)}.page-link.active,.active>.page-link{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.page-link.disabled,.disabled>.page-link{color:var(--bs-pagination-disabled-color);pointer-events:none;background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-left:calc(var(--bs-border-width) * -1)}.page-item:first-child .page-link{border-top-left-radius:var(--bs-pagination-border-radius);border-bottom-left-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--bs-pagination-border-radius);border-bottom-right-radius:var(--bs-pagination-border-radius)}.pagination-lg{--bs-pagination-padding-x: 1.5rem;--bs-pagination-padding-y: .75rem;--bs-pagination-font-size:1.25rem;--bs-pagination-border-radius: var(--bs-border-radius-lg)}.pagination-sm{--bs-pagination-padding-x: .5rem;--bs-pagination-padding-y: .25rem;--bs-pagination-font-size:.875rem;--bs-pagination-border-radius: var(--bs-border-radius-sm)}.badge{--bs-badge-padding-x: .65em;--bs-badge-padding-y: .35em;--bs-badge-font-size:.75em;--bs-badge-font-weight: 700;--bs-badge-color: #fff;--bs-badge-border-radius: var(--bs-border-radius);display:inline-block;padding:var(--bs-badge-padding-y) var(--bs-badge-padding-x);font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);line-height:1;color:var(--bs-badge-color);text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:var(--bs-badge-border-radius)}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{--bs-alert-bg: transparent;--bs-alert-padding-x: 1rem;--bs-alert-padding-y: 1rem;--bs-alert-margin-bottom: 1rem;--bs-alert-color: inherit;--bs-alert-border-color: transparent;--bs-alert-border: var(--bs-border-width) solid var(--bs-alert-border-color);--bs-alert-border-radius: var(--bs-border-radius);--bs-alert-link-color: inherit;position:relative;padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius)}.alert-heading{color:inherit}.alert-link{font-weight:700;color:var(--bs-alert-link-color)}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-primary{--bs-alert-color: var(--bs-primary-text-emphasis);--bs-alert-bg: var(--bs-primary-bg-subtle);--bs-alert-border-color: var(--bs-primary-border-subtle);--bs-alert-link-color: var(--bs-primary-text-emphasis)}.alert-secondary{--bs-alert-color: var(--bs-secondary-text-emphasis);--bs-alert-bg: var(--bs-secondary-bg-subtle);--bs-alert-border-color: var(--bs-secondary-border-subtle);--bs-alert-link-color: var(--bs-secondary-text-emphasis)}.alert-success{--bs-alert-color: var(--bs-success-text-emphasis);--bs-alert-bg: var(--bs-success-bg-subtle);--bs-alert-border-color: var(--bs-success-border-subtle);--bs-alert-link-color: var(--bs-success-text-emphasis)}.alert-info{--bs-alert-color: var(--bs-info-text-emphasis);--bs-alert-bg: var(--bs-info-bg-subtle);--bs-alert-border-color: var(--bs-info-border-subtle);--bs-alert-link-color: var(--bs-info-text-emphasis)}.alert-warning{--bs-alert-color: var(--bs-warning-text-emphasis);--bs-alert-bg: var(--bs-warning-bg-subtle);--bs-alert-border-color: var(--bs-warning-border-subtle);--bs-alert-link-color: var(--bs-warning-text-emphasis)}.alert-danger{--bs-alert-color: var(--bs-danger-text-emphasis);--bs-alert-bg: var(--bs-danger-bg-subtle);--bs-alert-border-color: var(--bs-danger-border-subtle);--bs-alert-link-color: var(--bs-danger-text-emphasis)}.alert-light{--bs-alert-color: var(--bs-light-text-emphasis);--bs-alert-bg: var(--bs-light-bg-subtle);--bs-alert-border-color: var(--bs-light-border-subtle);--bs-alert-link-color: var(--bs-light-text-emphasis)}.alert-dark{--bs-alert-color: var(--bs-dark-text-emphasis);--bs-alert-bg: var(--bs-dark-bg-subtle);--bs-alert-border-color: var(--bs-dark-border-subtle);--bs-alert-link-color: var(--bs-dark-text-emphasis)}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress,.progress-stacked{--bs-progress-height: 1rem;--bs-progress-font-size:.75rem;--bs-progress-bg: var(--bs-secondary-bg);--bs-progress-border-radius: var(--bs-border-radius);--bs-progress-box-shadow: var(--bs-box-shadow-inset);--bs-progress-bar-color: #fff;--bs-progress-bar-bg: #337ab7;--bs-progress-bar-transition: width 0.6s ease;display:flex;height:var(--bs-progress-height);overflow:hidden;font-size:var(--bs-progress-font-size);background-color:var(--bs-progress-bg);border-radius:var(--bs-progress-border-radius)}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:var(--bs-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--bs-progress-bar-bg);transition:var(--bs-progress-bar-transition)}@media (prefers-reduced-motion: reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-size:var(--bs-progress-height) var(--bs-progress-height)}.progress-stacked>.progress{overflow:visible}.progress-stacked>.progress>.progress-bar{width:100%}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion: reduce){.progress-bar-animated{animation:none}}.list-group{--bs-list-group-color: var(--bs-body-color);--bs-list-group-bg: var(--bs-body-bg);--bs-list-group-border-color: var(--bs-border-color);--bs-list-group-border-width: var(--bs-border-width);--bs-list-group-border-radius: var(--bs-border-radius);--bs-list-group-item-padding-x: 1rem;--bs-list-group-item-padding-y: .5rem;--bs-list-group-action-color: var(--bs-secondary-color);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-tertiary-bg);--bs-list-group-action-active-color: var(--bs-body-color);--bs-list-group-action-active-bg: var(--bs-secondary-bg);--bs-list-group-disabled-color: var(--bs-secondary-color);--bs-list-group-disabled-bg: var(--bs-body-bg);--bs-list-group-active-color: #fff;--bs-list-group-active-bg: #337ab7;--bs-list-group-active-border-color: #337ab7;display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--bs-list-group-border-radius)}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:var(--bs-list-group-action-color);text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{z-index:1;color:var(--bs-list-group-action-hover-color);text-decoration:none;background-color:var(--bs-list-group-action-hover-bg)}.list-group-item-action:active{color:var(--bs-list-group-action-active-color);background-color:var(--bs-list-group-action-active-bg)}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1 * var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}@media (min-width: 576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width: 768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width: 992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width: 1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width: 1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{--bs-list-group-color: var(--bs-primary-text-emphasis);--bs-list-group-bg: var(--bs-primary-bg-subtle);--bs-list-group-border-color: var(--bs-primary-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-primary-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-primary-border-subtle);--bs-list-group-active-color: var(--bs-primary-bg-subtle);--bs-list-group-active-bg: var(--bs-primary-text-emphasis);--bs-list-group-active-border-color: var(--bs-primary-text-emphasis)}.list-group-item-secondary{--bs-list-group-color: var(--bs-secondary-text-emphasis);--bs-list-group-bg: var(--bs-secondary-bg-subtle);--bs-list-group-border-color: var(--bs-secondary-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-secondary-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-secondary-border-subtle);--bs-list-group-active-color: var(--bs-secondary-bg-subtle);--bs-list-group-active-bg: var(--bs-secondary-text-emphasis);--bs-list-group-active-border-color: var(--bs-secondary-text-emphasis)}.list-group-item-success{--bs-list-group-color: var(--bs-success-text-emphasis);--bs-list-group-bg: var(--bs-success-bg-subtle);--bs-list-group-border-color: var(--bs-success-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-success-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-success-border-subtle);--bs-list-group-active-color: var(--bs-success-bg-subtle);--bs-list-group-active-bg: var(--bs-success-text-emphasis);--bs-list-group-active-border-color: var(--bs-success-text-emphasis)}.list-group-item-info{--bs-list-group-color: var(--bs-info-text-emphasis);--bs-list-group-bg: var(--bs-info-bg-subtle);--bs-list-group-border-color: var(--bs-info-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-info-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-info-border-subtle);--bs-list-group-active-color: var(--bs-info-bg-subtle);--bs-list-group-active-bg: var(--bs-info-text-emphasis);--bs-list-group-active-border-color: var(--bs-info-text-emphasis)}.list-group-item-warning{--bs-list-group-color: var(--bs-warning-text-emphasis);--bs-list-group-bg: var(--bs-warning-bg-subtle);--bs-list-group-border-color: var(--bs-warning-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-warning-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-warning-border-subtle);--bs-list-group-active-color: var(--bs-warning-bg-subtle);--bs-list-group-active-bg: var(--bs-warning-text-emphasis);--bs-list-group-active-border-color: var(--bs-warning-text-emphasis)}.list-group-item-danger{--bs-list-group-color: var(--bs-danger-text-emphasis);--bs-list-group-bg: var(--bs-danger-bg-subtle);--bs-list-group-border-color: var(--bs-danger-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-danger-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-danger-border-subtle);--bs-list-group-active-color: var(--bs-danger-bg-subtle);--bs-list-group-active-bg: var(--bs-danger-text-emphasis);--bs-list-group-active-border-color: var(--bs-danger-text-emphasis)}.list-group-item-light{--bs-list-group-color: var(--bs-light-text-emphasis);--bs-list-group-bg: var(--bs-light-bg-subtle);--bs-list-group-border-color: var(--bs-light-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-light-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-light-border-subtle);--bs-list-group-active-color: var(--bs-light-bg-subtle);--bs-list-group-active-bg: var(--bs-light-text-emphasis);--bs-list-group-active-border-color: var(--bs-light-text-emphasis)}.list-group-item-dark{--bs-list-group-color: var(--bs-dark-text-emphasis);--bs-list-group-bg: var(--bs-dark-bg-subtle);--bs-list-group-border-color: var(--bs-dark-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-dark-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-dark-border-subtle);--bs-list-group-active-color: var(--bs-dark-bg-subtle);--bs-list-group-active-bg: var(--bs-dark-text-emphasis);--bs-list-group-active-border-color: var(--bs-dark-text-emphasis)}.btn-close{--bs-btn-close-color: #000;--bs-btn-close-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e");--bs-btn-close-opacity: .5;--bs-btn-close-hover-opacity: .75;--bs-btn-close-focus-shadow: 0 0 0 .25rem rgba(51,122,183,0.25);--bs-btn-close-focus-opacity: 1;--bs-btn-close-disabled-opacity: .25;--bs-btn-close-white-filter: invert(1) grayscale(100%) brightness(200%);box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:var(--bs-btn-close-color);background:transparent var(--bs-btn-close-bg) center/1em auto no-repeat;border:0;border-radius:.375rem;opacity:var(--bs-btn-close-opacity)}.btn-close:hover{color:var(--bs-btn-close-color);text-decoration:none;opacity:var(--bs-btn-close-hover-opacity)}.btn-close:focus{outline:0;box-shadow:var(--bs-btn-close-focus-shadow);opacity:var(--bs-btn-close-focus-opacity)}.btn-close:disabled,.btn-close.disabled{pointer-events:none;user-select:none;opacity:var(--bs-btn-close-disabled-opacity)}.btn-close-white{filter:var(--bs-btn-close-white-filter)}[data-bs-theme="dark"] .btn-close{filter:var(--bs-btn-close-white-filter)}.toast{--bs-toast-zindex: 1090;--bs-toast-padding-x: .75rem;--bs-toast-padding-y: .5rem;--bs-toast-spacing: 1.5rem;--bs-toast-max-width: 350px;--bs-toast-font-size:.875rem;--bs-toast-color: ;--bs-toast-bg: rgba(var(--bs-body-bg-rgb), 0.85);--bs-toast-border-width: var(--bs-border-width);--bs-toast-border-color: var(--bs-border-color-translucent);--bs-toast-border-radius: var(--bs-border-radius);--bs-toast-box-shadow: var(--bs-box-shadow);--bs-toast-header-color: var(--bs-secondary-color);--bs-toast-header-bg: rgba(var(--bs-body-bg-rgb), 0.85);--bs-toast-header-border-color: var(--bs-border-color-translucent);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);background-clip:padding-box;border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius)}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--bs-toast-zindex: 1090;position:absolute;z-index:var(--bs-toast-zindex);width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:var(--bs-toast-spacing)}.toast-header{display:flex;align-items:center;padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);background-clip:padding-box;border-bottom:var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);border-top-left-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));border-top-right-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width))}.toast-header .btn-close{margin-right:calc(-.5 * var(--bs-toast-padding-x));margin-left:var(--bs-toast-padding-x)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.modal{--bs-modal-zindex: 1055;--bs-modal-width: 500px;--bs-modal-padding: 1rem;--bs-modal-margin: .5rem;--bs-modal-color: ;--bs-modal-bg: var(--bs-body-bg);--bs-modal-border-color: var(--bs-border-color-translucent);--bs-modal-border-width: var(--bs-border-width);--bs-modal-border-radius: var(--bs-border-radius-lg);--bs-modal-box-shadow: 0 0.125rem 0.25rem rgba(0,0,0,0.075);--bs-modal-inner-border-radius: calc(var(--bs-border-radius-lg) - (var(--bs-border-width)));--bs-modal-header-padding-x: 1rem;--bs-modal-header-padding-y: 1rem;--bs-modal-header-padding: 1rem 1rem;--bs-modal-header-border-color: var(--bs-border-color);--bs-modal-header-border-width: var(--bs-border-width);--bs-modal-title-line-height: 1.5;--bs-modal-footer-gap: .5rem;--bs-modal-footer-bg: ;--bs-modal-footer-border-color: var(--bs-border-color);--bs-modal-footer-border-width: var(--bs-border-width);position:fixed;top:0;left:0;z-index:var(--bs-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--bs-modal-margin);pointer-events:none}.modal.fade .modal-dialog{transition:transform 0.3s ease-out;transform:translate(0, -50px)}@media (prefers-reduced-motion: reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--bs-modal-margin) * 2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - var(--bs-modal-margin) * 2)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;color:var(--bs-modal-color);pointer-events:auto;background-color:var(--bs-modal-bg);background-clip:padding-box;border:var(--bs-modal-border-width) solid var(--bs-modal-border-color);border-radius:var(--bs-modal-border-radius);outline:0}.modal-backdrop{--bs-backdrop-zindex: 1050;--bs-backdrop-bg: #000;--bs-backdrop-opacity: .5;position:fixed;top:0;left:0;z-index:var(--bs-backdrop-zindex);width:100vw;height:100vh;background-color:var(--bs-backdrop-bg)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--bs-backdrop-opacity)}.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:var(--bs-modal-header-padding);border-bottom:var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);border-top-left-radius:var(--bs-modal-inner-border-radius);border-top-right-radius:var(--bs-modal-inner-border-radius)}.modal-header .btn-close{padding:calc(var(--bs-modal-header-padding-y) * .5) calc(var(--bs-modal-header-padding-x) * .5);margin:calc(-.5 * var(--bs-modal-header-padding-y)) calc(-.5 * var(--bs-modal-header-padding-x)) calc(-.5 * var(--bs-modal-header-padding-y)) auto}.modal-title{margin-bottom:0;line-height:var(--bs-modal-title-line-height)}.modal-body{position:relative;flex:1 1 auto;padding:var(--bs-modal-padding)}.modal-footer{display:flex;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * .5);background-color:var(--bs-modal-footer-bg);border-top:var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);border-bottom-right-radius:var(--bs-modal-inner-border-radius);border-bottom-left-radius:var(--bs-modal-inner-border-radius)}.modal-footer>*{margin:calc(var(--bs-modal-footer-gap) * .5)}@media (min-width: 576px){.modal{--bs-modal-margin: 1.75rem;--bs-modal-box-shadow: 0 0.5rem 1rem rgba(0,0,0,0.15)}.modal-dialog{max-width:var(--bs-modal-width);margin-right:auto;margin-left:auto}.modal-sm{--bs-modal-width: 300px}}@media (min-width: 992px){.modal-lg,.modal-xl{--bs-modal-width: 800px}}@media (min-width: 1200px){.modal-xl{--bs-modal-width: 1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header,.modal-fullscreen .modal-footer{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}@media (max-width: 575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header,.modal-fullscreen-sm-down .modal-footer{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media (max-width: 767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header,.modal-fullscreen-md-down .modal-footer{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media (max-width: 991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header,.modal-fullscreen-lg-down .modal-footer{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media (max-width: 1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header,.modal-fullscreen-xl-down .modal-footer{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media (max-width: 1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header,.modal-fullscreen-xxl-down .modal-footer{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{--bs-tooltip-zindex: 1080;--bs-tooltip-max-width: 200px;--bs-tooltip-padding-x: .5rem;--bs-tooltip-padding-y: .25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size:.875rem;--bs-tooltip-color: var(--bs-body-bg);--bs-tooltip-bg: var(--bs-emphasis-color);--bs-tooltip-border-radius: var(--bs-border-radius);--bs-tooltip-opacity: .9;--bs-tooltip-arrow-width: .8rem;--bs-tooltip-arrow-height: .4rem;z-index:var(--bs-tooltip-zindex);display:block;margin:var(--bs-tooltip-margin);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height)}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-top .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^="top"] .tooltip-arrow{bottom:calc(-1 * var(--bs-tooltip-arrow-height))}.bs-tooltip-top .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^="top"] .tooltip-arrow::before{top:-1px;border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-top-color:var(--bs-tooltip-bg)}.bs-tooltip-end .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^="right"] .tooltip-arrow{left:calc(-1 * var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-end .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^="right"] .tooltip-arrow::before{right:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-right-color:var(--bs-tooltip-bg)}.bs-tooltip-bottom .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^="bottom"] .tooltip-arrow{top:calc(-1 * var(--bs-tooltip-arrow-height))}.bs-tooltip-bottom .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^="bottom"] .tooltip-arrow::before{bottom:-1px;border-width:0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg)}.bs-tooltip-start .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^="left"] .tooltip-arrow{right:calc(-1 * var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-start .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^="left"] .tooltip-arrow::before{left:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-left-color:var(--bs-tooltip-bg)}.tooltip-inner{max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-tooltip-color);text-align:center;background-color:var(--bs-tooltip-bg);border-radius:var(--bs-tooltip-border-radius)}.popover{--bs-popover-zindex: 1070;--bs-popover-max-width: 276px;--bs-popover-font-size:.875rem;--bs-popover-bg: var(--bs-body-bg);--bs-popover-border-width: var(--bs-border-width);--bs-popover-border-color: var(--bs-border-color-translucent);--bs-popover-border-radius: var(--bs-border-radius-lg);--bs-popover-inner-border-radius: calc(var(--bs-border-radius-lg) - var(--bs-border-width));--bs-popover-box-shadow: 0 0.5rem 1rem rgba(0,0,0,0.15);--bs-popover-header-padding-x: 1rem;--bs-popover-header-padding-y: .5rem;--bs-popover-header-font-size:1rem;--bs-popover-header-color: inherit;--bs-popover-header-bg: var(--bs-secondary-bg);--bs-popover-body-padding-x: 1rem;--bs-popover-body-padding-y: 1rem;--bs-popover-body-color: var(--bs-body-color);--bs-popover-arrow-width: 1rem;--bs-popover-arrow-height: .5rem;--bs-popover-arrow-border: var(--bs-popover-border-color);z-index:var(--bs-popover-zindex);display:block;max-width:var(--bs-popover-max-width);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-popover-font-size);word-wrap:break-word;background-color:var(--bs-popover-bg);background-clip:padding-box;border:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-radius:var(--bs-popover-border-radius)}.popover .popover-arrow{display:block;width:var(--bs-popover-arrow-width);height:var(--bs-popover-arrow-height)}.popover .popover-arrow::before,.popover .popover-arrow::after{position:absolute;display:block;content:"";border-color:transparent;border-style:solid;border-width:0}.bs-popover-top>.popover-arrow,.bs-popover-auto[data-popper-placement^="top"]>.popover-arrow{bottom:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-top>.popover-arrow::before,.bs-popover-auto[data-popper-placement^="top"]>.popover-arrow::before,.bs-popover-top>.popover-arrow::after,.bs-popover-auto[data-popper-placement^="top"]>.popover-arrow::after{border-width:var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-top>.popover-arrow::before,.bs-popover-auto[data-popper-placement^="top"]>.popover-arrow::before{bottom:0;border-top-color:var(--bs-popover-arrow-border)}.bs-popover-top>.popover-arrow::after,.bs-popover-auto[data-popper-placement^="top"]>.popover-arrow::after{bottom:var(--bs-popover-border-width);border-top-color:var(--bs-popover-bg)}.bs-popover-end>.popover-arrow,.bs-popover-auto[data-popper-placement^="right"]>.popover-arrow{left:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-end>.popover-arrow::before,.bs-popover-auto[data-popper-placement^="right"]>.popover-arrow::before,.bs-popover-end>.popover-arrow::after,.bs-popover-auto[data-popper-placement^="right"]>.popover-arrow::after{border-width:calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-end>.popover-arrow::before,.bs-popover-auto[data-popper-placement^="right"]>.popover-arrow::before{left:0;border-right-color:var(--bs-popover-arrow-border)}.bs-popover-end>.popover-arrow::after,.bs-popover-auto[data-popper-placement^="right"]>.popover-arrow::after{left:var(--bs-popover-border-width);border-right-color:var(--bs-popover-bg)}.bs-popover-bottom>.popover-arrow,.bs-popover-auto[data-popper-placement^="bottom"]>.popover-arrow{top:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-bottom>.popover-arrow::before,.bs-popover-auto[data-popper-placement^="bottom"]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::after,.bs-popover-auto[data-popper-placement^="bottom"]>.popover-arrow::after{border-width:0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-bottom>.popover-arrow::before,.bs-popover-auto[data-popper-placement^="bottom"]>.popover-arrow::before{top:0;border-bottom-color:var(--bs-popover-arrow-border)}.bs-popover-bottom>.popover-arrow::after,.bs-popover-auto[data-popper-placement^="bottom"]>.popover-arrow::after{top:var(--bs-popover-border-width);border-bottom-color:var(--bs-popover-bg)}.bs-popover-bottom .popover-header::before,.bs-popover-auto[data-popper-placement^="bottom"] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:var(--bs-popover-arrow-width);margin-left:calc(-.5 * var(--bs-popover-arrow-width));content:"";border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-header-bg)}.bs-popover-start>.popover-arrow,.bs-popover-auto[data-popper-placement^="left"]>.popover-arrow{right:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-start>.popover-arrow::before,.bs-popover-auto[data-popper-placement^="left"]>.popover-arrow::before,.bs-popover-start>.popover-arrow::after,.bs-popover-auto[data-popper-placement^="left"]>.popover-arrow::after{border-width:calc(var(--bs-popover-arrow-width) * .5) 0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-start>.popover-arrow::before,.bs-popover-auto[data-popper-placement^="left"]>.popover-arrow::before{right:0;border-left-color:var(--bs-popover-arrow-border)}.bs-popover-start>.popover-arrow::after,.bs-popover-auto[data-popper-placement^="left"]>.popover-arrow::after{right:var(--bs-popover-border-width);border-left-color:var(--bs-popover-bg)}.popover-header{padding:var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);margin-bottom:0;font-size:var(--bs-popover-header-font-size);color:var(--bs-popover-header-color);background-color:var(--bs-popover-header-bg);border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-top-left-radius:var(--bs-popover-inner-border-radius);border-top-right-radius:var(--bs-popover-inner-border-radius)}.popover-header:empty{display:none}.popover-body{padding:var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);color:var(--bs-popover-body-color)}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion: reduce){.carousel-item{transition:none}}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next:not(.carousel-item-start),.active.carousel-item-end{transform:translateX(100%)}.carousel-item-prev:not(.carousel-item-end),.active.carousel-item-start{transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end{z-index:1;opacity:1}.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion: reduce){.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{transition:none}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity 0.15s ease}@media (prefers-reduced-motion: reduce){.carousel-control-prev,.carousel-control-next{transition:none}}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity 0.6s ease}@media (prefers-reduced-motion: reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-prev-icon,.carousel-dark .carousel-control-next-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}[data-bs-theme="dark"] .carousel .carousel-control-prev-icon,[data-bs-theme="dark"] .carousel .carousel-control-next-icon,[data-bs-theme="dark"].carousel .carousel-control-prev-icon,[data-bs-theme="dark"].carousel .carousel-control-next-icon{filter:invert(1) grayscale(100)}[data-bs-theme="dark"] .carousel .carousel-indicators [data-bs-target],[data-bs-theme="dark"].carousel .carousel-indicators [data-bs-target]{background-color:#000}[data-bs-theme="dark"] .carousel .carousel-caption,[data-bs-theme="dark"].carousel .carousel-caption{color:#000}.spinner-grow,.spinner-border{display:inline-block;width:var(--bs-spinner-width);height:var(--bs-spinner-height);vertical-align:var(--bs-spinner-vertical-align);border-radius:50%;animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name)}@keyframes spinner-border{to{transform:rotate(360deg) /* rtl:ignore */}}.spinner-border{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -.125em;--bs-spinner-border-width: .25em;--bs-spinner-animation-speed: .75s;--bs-spinner-animation-name: spinner-border;border:var(--bs-spinner-border-width) solid currentcolor;border-right-color:transparent}.spinner-border-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem;--bs-spinner-border-width: .2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -.125em;--bs-spinner-animation-speed: .75s;--bs-spinner-animation-name: spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem}@media (prefers-reduced-motion: reduce){.spinner-border,.spinner-grow{--bs-spinner-animation-speed: 1.5s}}.offcanvas,.offcanvas-xxl,.offcanvas-xl,.offcanvas-lg,.offcanvas-md,.offcanvas-sm{--bs-offcanvas-zindex: 1045;--bs-offcanvas-width: 400px;--bs-offcanvas-height: 30vh;--bs-offcanvas-padding-x: 1rem;--bs-offcanvas-padding-y: 1rem;--bs-offcanvas-color: var(--bs-body-color);--bs-offcanvas-bg: var(--bs-body-bg);--bs-offcanvas-border-width: var(--bs-border-width);--bs-offcanvas-border-color: var(--bs-border-color-translucent);--bs-offcanvas-box-shadow: 0 0.125rem 0.25rem rgba(0,0,0,0.075);--bs-offcanvas-transition: transform .3s ease-in-out;--bs-offcanvas-title-line-height: 1.5}@media (max-width: 575.98px){.offcanvas-sm{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width: 575.98px) and (prefers-reduced-motion: reduce){.offcanvas-sm{transition:none}}@media (max-width: 575.98px){.offcanvas-sm.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-sm.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-sm.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-sm.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-sm.showing,.offcanvas-sm.show:not(.hiding){transform:none}.offcanvas-sm.showing,.offcanvas-sm.hiding,.offcanvas-sm.show{visibility:visible}}@media (min-width: 576px){.offcanvas-sm{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:transparent !important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent !important}}@media (max-width: 767.98px){.offcanvas-md{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width: 767.98px) and (prefers-reduced-motion: reduce){.offcanvas-md{transition:none}}@media (max-width: 767.98px){.offcanvas-md.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-md.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-md.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-md.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-md.showing,.offcanvas-md.show:not(.hiding){transform:none}.offcanvas-md.showing,.offcanvas-md.hiding,.offcanvas-md.show{visibility:visible}}@media (min-width: 768px){.offcanvas-md{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:transparent !important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent !important}}@media (max-width: 991.98px){.offcanvas-lg{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width: 991.98px) and (prefers-reduced-motion: reduce){.offcanvas-lg{transition:none}}@media (max-width: 991.98px){.offcanvas-lg.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-lg.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-lg.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-lg.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-lg.showing,.offcanvas-lg.show:not(.hiding){transform:none}.offcanvas-lg.showing,.offcanvas-lg.hiding,.offcanvas-lg.show{visibility:visible}}@media (min-width: 992px){.offcanvas-lg{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:transparent !important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent !important}}@media (max-width: 1199.98px){.offcanvas-xl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width: 1199.98px) and (prefers-reduced-motion: reduce){.offcanvas-xl{transition:none}}@media (max-width: 1199.98px){.offcanvas-xl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xl.showing,.offcanvas-xl.show:not(.hiding){transform:none}.offcanvas-xl.showing,.offcanvas-xl.hiding,.offcanvas-xl.show{visibility:visible}}@media (min-width: 1200px){.offcanvas-xl{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:transparent !important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent !important}}@media (max-width: 1399.98px){.offcanvas-xxl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width: 1399.98px) and (prefers-reduced-motion: reduce){.offcanvas-xxl{transition:none}}@media (max-width: 1399.98px){.offcanvas-xxl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xxl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xxl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xxl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xxl.showing,.offcanvas-xxl.show:not(.hiding){transform:none}.offcanvas-xxl.showing,.offcanvas-xxl.hiding,.offcanvas-xxl.show{visibility:visible}}@media (min-width: 1400px){.offcanvas-xxl{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:transparent !important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent !important}}.offcanvas{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}@media (prefers-reduced-motion: reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas.showing,.offcanvas.show:not(.hiding){transform:none}.offcanvas.showing,.offcanvas.hiding,.offcanvas.show{visibility:visible}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;align-items:center;justify-content:space-between;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x)}.offcanvas-header .btn-close{padding:calc(var(--bs-offcanvas-padding-y) * .5) calc(var(--bs-offcanvas-padding-x) * .5);margin-top:calc(-.5 * var(--bs-offcanvas-padding-y));margin-right:calc(-.5 * var(--bs-offcanvas-padding-x));margin-bottom:calc(-.5 * var(--bs-offcanvas-padding-y))}.offcanvas-title{margin-bottom:0;line-height:var(--bs-offcanvas-title-line-height)}.offcanvas-body{flex-grow:1;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);overflow-y:auto}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{mask-image:linear-gradient(130deg, #000 55%, rgba(0,0,0,0.8) 75%, #000 95%);mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{100%{mask-position:-200% 0%}}.clearfix::after{display:block;clear:both;content:""}.text-bg-primary{color:#fff !important;background-color:RGBA(51,122,183, var(--bs-bg-opacity, 1)) !important}.text-bg-secondary{color:#fff !important;background-color:RGBA(108,117,125, var(--bs-bg-opacity, 1)) !important}.text-bg-success{color:#fff !important;background-color:RGBA(25,135,84, var(--bs-bg-opacity, 1)) !important}.text-bg-info{color:#000 !important;background-color:RGBA(13,202,240, var(--bs-bg-opacity, 1)) !important}.text-bg-warning{color:#000 !important;background-color:RGBA(255,193,7, var(--bs-bg-opacity, 1)) !important}.text-bg-danger{color:#fff !important;background-color:RGBA(220,53,69, var(--bs-bg-opacity, 1)) !important}.text-bg-light{color:#000 !important;background-color:RGBA(248,249,250, var(--bs-bg-opacity, 1)) !important}.text-bg-dark{color:#fff !important;background-color:RGBA(22,27,34, var(--bs-bg-opacity, 1)) !important}.link-primary{color:RGBA(var(--bs-primary-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-primary-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-primary:hover,.link-primary:focus{color:RGBA(41,98,146, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(41,98,146, var(--bs-link-underline-opacity, 1)) !important}.link-secondary{color:RGBA(var(--bs-secondary-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-secondary-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-secondary:hover,.link-secondary:focus{color:RGBA(86,94,100, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(86,94,100, var(--bs-link-underline-opacity, 1)) !important}.link-success{color:RGBA(var(--bs-success-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-success-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-success:hover,.link-success:focus{color:RGBA(20,108,67, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(20,108,67, var(--bs-link-underline-opacity, 1)) !important}.link-info{color:RGBA(var(--bs-info-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-info-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-info:hover,.link-info:focus{color:RGBA(61,213,243, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(61,213,243, var(--bs-link-underline-opacity, 1)) !important}.link-warning{color:RGBA(var(--bs-warning-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-warning-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-warning:hover,.link-warning:focus{color:RGBA(255,205,57, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(255,205,57, var(--bs-link-underline-opacity, 1)) !important}.link-danger{color:RGBA(var(--bs-danger-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-danger-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-danger:hover,.link-danger:focus{color:RGBA(176,42,55, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(176,42,55, var(--bs-link-underline-opacity, 1)) !important}.link-light{color:RGBA(var(--bs-light-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-light-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-light:hover,.link-light:focus{color:RGBA(249,250,251, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(249,250,251, var(--bs-link-underline-opacity, 1)) !important}.link-dark{color:RGBA(var(--bs-dark-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-dark-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-dark:hover,.link-dark:focus{color:RGBA(18,22,27, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(18,22,27, var(--bs-link-underline-opacity, 1)) !important}.link-body-emphasis{color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-body-emphasis:hover,.link-body-emphasis:focus{color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 0.75)) !important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 0.75)) !important}.focus-ring:focus{outline:0;box-shadow:var(--bs-focus-ring-x, 0) var(--bs-focus-ring-y, 0) var(--bs-focus-ring-blur, 0) var(--bs-focus-ring-width) var(--bs-focus-ring-color)}.icon-link{display:inline-flex;gap:.375rem;align-items:center;text-decoration-color:rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 0.5));text-underline-offset:.25em;backface-visibility:hidden}.icon-link>.bi{flex-shrink:0;width:1em;height:1em;fill:currentcolor;transition:0.2s ease-in-out transform}@media (prefers-reduced-motion: reduce){.icon-link>.bi{transition:none}}.icon-link-hover:hover>.bi,.icon-link-hover:focus-visible>.bi{transform:var(--bs-icon-link-transform, translate3d(0.25em, 0, 0))}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio: 100%}.ratio-4x3{--bs-aspect-ratio: calc(3 / 4 * 100%)}.ratio-16x9{--bs-aspect-ratio: calc(9 / 16 * 100%)}.ratio-21x9{--bs-aspect-ratio: calc(9 / 21 * 100%)}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:sticky;top:0;z-index:1020}.sticky-bottom{position:sticky;bottom:0;z-index:1020}@media (min-width: 576px){.sticky-sm-top{position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width: 768px){.sticky-md-top{position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width: 992px){.sticky-lg-top{position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width: 1200px){.sticky-xl-top{position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width: 1400px){.sticky-xxl-top{position:sticky;top:0;z-index:1020}.sticky-xxl-bottom{position:sticky;bottom:0;z-index:1020}}.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch}.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border:0 !important}.visually-hidden:not(caption),.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption){position:absolute !important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:1px;min-height:1em;background-color:currentcolor;opacity:.25}.align-baseline{vertical-align:baseline !important}.align-top{vertical-align:top !important}.align-middle{vertical-align:middle !important}.align-bottom{vertical-align:bottom !important}.align-text-bottom{vertical-align:text-bottom !important}.align-text-top{vertical-align:text-top !important}.float-start{float:left !important}.float-end{float:right !important}.float-none{float:none !important}.object-fit-contain{object-fit:contain !important}.object-fit-cover{object-fit:cover !important}.object-fit-fill{object-fit:fill !important}.object-fit-scale{object-fit:scale-down !important}.object-fit-none{object-fit:none !important}.opacity-0{opacity:0 !important}.opacity-25{opacity:.25 !important}.opacity-50{opacity:.5 !important}.opacity-75{opacity:.75 !important}.opacity-100{opacity:1 !important}.overflow-auto{overflow:auto !important}.overflow-hidden{overflow:hidden !important}.overflow-visible{overflow:visible !important}.overflow-scroll{overflow:scroll !important}.overflow-x-auto{overflow-x:auto !important}.overflow-x-hidden{overflow-x:hidden !important}.overflow-x-visible{overflow-x:visible !important}.overflow-x-scroll{overflow-x:scroll !important}.overflow-y-auto{overflow-y:auto !important}.overflow-y-hidden{overflow-y:hidden !important}.overflow-y-visible{overflow-y:visible !important}.overflow-y-scroll{overflow-y:scroll !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-block{display:block !important}.d-grid{display:grid !important}.d-inline-grid{display:inline-grid !important}.d-table{display:table !important}.d-table-row{display:table-row !important}.d-table-cell{display:table-cell !important}.d-flex{display:flex !important}.d-inline-flex{display:inline-flex !important}.d-none{display:none !important}.shadow{box-shadow:0 0.5rem 1rem rgba(0,0,0,0.15) !important}.shadow-sm{box-shadow:0 0.125rem 0.25rem rgba(0,0,0,0.075) !important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,0.175) !important}.shadow-none{box-shadow:none !important}.focus-ring-primary{--bs-focus-ring-color: rgba(var(--bs-primary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-secondary{--bs-focus-ring-color: rgba(var(--bs-secondary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-success{--bs-focus-ring-color: rgba(var(--bs-success-rgb), var(--bs-focus-ring-opacity))}.focus-ring-info{--bs-focus-ring-color: rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity))}.focus-ring-warning{--bs-focus-ring-color: rgba(var(--bs-warning-rgb), var(--bs-focus-ring-opacity))}.focus-ring-danger{--bs-focus-ring-color: rgba(var(--bs-danger-rgb), var(--bs-focus-ring-opacity))}.focus-ring-light{--bs-focus-ring-color: rgba(var(--bs-light-rgb), var(--bs-focus-ring-opacity))}.focus-ring-dark{--bs-focus-ring-color: rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity))}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:sticky !important}.top-0{top:0 !important}.top-50{top:50% !important}.top-100{top:100% !important}.bottom-0{bottom:0 !important}.bottom-50{bottom:50% !important}.bottom-100{bottom:100% !important}.start-0{left:0 !important}.start-50{left:50% !important}.start-100{left:100% !important}.end-0{right:0 !important}.end-50{right:50% !important}.end-100{right:100% !important}.translate-middle{transform:translate(-50%, -50%) !important}.translate-middle-x{transform:translateX(-50%) !important}.translate-middle-y{transform:translateY(-50%) !important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-0{border:0 !important}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-top-0{border-top:0 !important}.border-end{border-right:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-end-0{border-right:0 !important}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-bottom-0{border-bottom:0 !important}.border-start{border-left:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-start-0{border-left:0 !important}.border-primary{--bs-border-opacity: 1;border-color:rgba(var(--bs-primary-rgb), var(--bs-border-opacity)) !important}.border-secondary{--bs-border-opacity: 1;border-color:rgba(var(--bs-secondary-rgb), var(--bs-border-opacity)) !important}.border-success{--bs-border-opacity: 1;border-color:rgba(var(--bs-success-rgb), var(--bs-border-opacity)) !important}.border-info{--bs-border-opacity: 1;border-color:rgba(var(--bs-info-rgb), var(--bs-border-opacity)) !important}.border-warning{--bs-border-opacity: 1;border-color:rgba(var(--bs-warning-rgb), var(--bs-border-opacity)) !important}.border-danger{--bs-border-opacity: 1;border-color:rgba(var(--bs-danger-rgb), var(--bs-border-opacity)) !important}.border-light{--bs-border-opacity: 1;border-color:rgba(var(--bs-light-rgb), var(--bs-border-opacity)) !important}.border-dark{--bs-border-opacity: 1;border-color:rgba(var(--bs-dark-rgb), var(--bs-border-opacity)) !important}.border-black{--bs-border-opacity: 1;border-color:rgba(var(--bs-black-rgb), var(--bs-border-opacity)) !important}.border-white{--bs-border-opacity: 1;border-color:rgba(var(--bs-white-rgb), var(--bs-border-opacity)) !important}.border-primary-subtle{border-color:var(--bs-primary-border-subtle) !important}.border-secondary-subtle{border-color:var(--bs-secondary-border-subtle) !important}.border-success-subtle{border-color:var(--bs-success-border-subtle) !important}.border-info-subtle{border-color:var(--bs-info-border-subtle) !important}.border-warning-subtle{border-color:var(--bs-warning-border-subtle) !important}.border-danger-subtle{border-color:var(--bs-danger-border-subtle) !important}.border-light-subtle{border-color:var(--bs-light-border-subtle) !important}.border-dark-subtle{border-color:var(--bs-dark-border-subtle) !important}.border-1{border-width:1px !important}.border-2{border-width:2px !important}.border-3{border-width:3px !important}.border-4{border-width:4px !important}.border-5{border-width:5px !important}.border-opacity-10{--bs-border-opacity: .1}.border-opacity-25{--bs-border-opacity: .25}.border-opacity-50{--bs-border-opacity: .5}.border-opacity-75{--bs-border-opacity: .75}.border-opacity-100{--bs-border-opacity: 1}.w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.w-auto{width:auto !important}.mw-100{max-width:100% !important}.vw-100{width:100vw !important}.min-vw-100{min-width:100vw !important}.h-25{height:25% !important}.h-50{height:50% !important}.h-75{height:75% !important}.h-100{height:100% !important}.h-auto{height:auto !important}.mh-100{max-height:100% !important}.vh-100{height:100vh !important}.min-vh-100{min-height:100vh !important}.flex-fill{flex:1 1 auto !important}.flex-row{flex-direction:row !important}.flex-column{flex-direction:column !important}.flex-row-reverse{flex-direction:row-reverse !important}.flex-column-reverse{flex-direction:column-reverse !important}.flex-grow-0{flex-grow:0 !important}.flex-grow-1{flex-grow:1 !important}.flex-shrink-0{flex-shrink:0 !important}.flex-shrink-1{flex-shrink:1 !important}.flex-wrap{flex-wrap:wrap !important}.flex-nowrap{flex-wrap:nowrap !important}.flex-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.justify-content-between{justify-content:space-between !important}.justify-content-around{justify-content:space-around !important}.justify-content-evenly{justify-content:space-evenly !important}.align-items-start{align-items:flex-start !important}.align-items-end{align-items:flex-end !important}.align-items-center{align-items:center !important}.align-items-baseline{align-items:baseline !important}.align-items-stretch{align-items:stretch !important}.align-content-start{align-content:flex-start !important}.align-content-end{align-content:flex-end !important}.align-content-center{align-content:center !important}.align-content-between{align-content:space-between !important}.align-content-around{align-content:space-around !important}.align-content-stretch{align-content:stretch !important}.align-self-auto{align-self:auto !important}.align-self-start{align-self:flex-start !important}.align-self-end{align-self:flex-end !important}.align-self-center{align-self:center !important}.align-self-baseline{align-self:baseline !important}.align-self-stretch{align-self:stretch !important}.order-first{order:-1 !important}.order-0{order:0 !important}.order-1{order:1 !important}.order-2{order:2 !important}.order-3{order:3 !important}.order-4{order:4 !important}.order-5{order:5 !important}.order-last{order:6 !important}.m-0{margin:0 !important}.m-1{margin:.25rem !important}.m-2{margin:.5rem !important}.m-3{margin:1rem !important}.m-4{margin:1.5rem !important}.m-5{margin:3rem !important}.m-auto{margin:auto !important}.mx-0{margin-right:0 !important;margin-left:0 !important}.mx-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-3{margin-right:1rem !important;margin-left:1rem !important}.mx-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-5{margin-right:3rem !important;margin-left:3rem !important}.mx-auto{margin-right:auto !important;margin-left:auto !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.my-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-0{margin-top:0 !important}.mt-1{margin-top:.25rem !important}.mt-2{margin-top:.5rem !important}.mt-3{margin-top:1rem !important}.mt-4{margin-top:1.5rem !important}.mt-5{margin-top:3rem !important}.mt-auto{margin-top:auto !important}.me-0{margin-right:0 !important}.me-1{margin-right:.25rem !important}.me-2{margin-right:.5rem !important}.me-3{margin-right:1rem !important}.me-4{margin-right:1.5rem !important}.me-5{margin-right:3rem !important}.me-auto{margin-right:auto !important}.mb-0{margin-bottom:0 !important}.mb-1{margin-bottom:.25rem !important}.mb-2{margin-bottom:.5rem !important}.mb-3{margin-bottom:1rem !important}.mb-4{margin-bottom:1.5rem !important}.mb-5{margin-bottom:3rem !important}.mb-auto{margin-bottom:auto !important}.ms-0{margin-left:0 !important}.ms-1{margin-left:.25rem !important}.ms-2{margin-left:.5rem !important}.ms-3{margin-left:1rem !important}.ms-4{margin-left:1.5rem !important}.ms-5{margin-left:3rem !important}.ms-auto{margin-left:auto !important}.p-0{padding:0 !important}.p-1{padding:.25rem !important}.p-2{padding:.5rem !important}.p-3{padding:1rem !important}.p-4{padding:1.5rem !important}.p-5{padding:3rem !important}.px-0{padding-right:0 !important;padding-left:0 !important}.px-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-3{padding-right:1rem !important;padding-left:1rem !important}.px-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-5{padding-right:3rem !important;padding-left:3rem !important}.py-0{padding-top:0 !important;padding-bottom:0 !important}.py-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-0{padding-top:0 !important}.pt-1{padding-top:.25rem !important}.pt-2{padding-top:.5rem !important}.pt-3{padding-top:1rem !important}.pt-4{padding-top:1.5rem !important}.pt-5{padding-top:3rem !important}.pe-0{padding-right:0 !important}.pe-1{padding-right:.25rem !important}.pe-2{padding-right:.5rem !important}.pe-3{padding-right:1rem !important}.pe-4{padding-right:1.5rem !important}.pe-5{padding-right:3rem !important}.pb-0{padding-bottom:0 !important}.pb-1{padding-bottom:.25rem !important}.pb-2{padding-bottom:.5rem !important}.pb-3{padding-bottom:1rem !important}.pb-4{padding-bottom:1.5rem !important}.pb-5{padding-bottom:3rem !important}.ps-0{padding-left:0 !important}.ps-1{padding-left:.25rem !important}.ps-2{padding-left:.5rem !important}.ps-3{padding-left:1rem !important}.ps-4{padding-left:1.5rem !important}.ps-5{padding-left:3rem !important}.gap-0{gap:0 !important}.gap-1{gap:.25rem !important}.gap-2{gap:.5rem !important}.gap-3{gap:1rem !important}.gap-4{gap:1.5rem !important}.gap-5{gap:3rem !important}.row-gap-0{row-gap:0 !important}.row-gap-1{row-gap:.25rem !important}.row-gap-2{row-gap:.5rem !important}.row-gap-3{row-gap:1rem !important}.row-gap-4{row-gap:1.5rem !important}.row-gap-5{row-gap:3rem !important}.column-gap-0{column-gap:0 !important}.column-gap-1{column-gap:.25rem !important}.column-gap-2{column-gap:.5rem !important}.column-gap-3{column-gap:1rem !important}.column-gap-4{column-gap:1.5rem !important}.column-gap-5{column-gap:3rem !important}.font-monospace{font-family:var(--bs-font-monospace) !important}.fs-1{font-size:calc(1.375rem + 1.5vw) !important}.fs-2{font-size:calc(1.325rem + .9vw) !important}.fs-3{font-size:calc(1.3rem + .6vw) !important}.fs-4{font-size:calc(1.275rem + .3vw) !important}.fs-5{font-size:1.25rem !important}.fs-6{font-size:1rem !important}.fst-italic{font-style:italic !important}.fst-normal{font-style:normal !important}.fw-lighter{font-weight:lighter !important}.fw-light{font-weight:300 !important}.fw-normal{font-weight:400 !important}.fw-medium{font-weight:500 !important}.fw-semibold{font-weight:600 !important}.fw-bold{font-weight:700 !important}.fw-bolder{font-weight:bolder !important}.lh-1{line-height:1 !important}.lh-sm{line-height:1.25 !important}.lh-base{line-height:1.5 !important}.lh-lg{line-height:2 !important}.text-start{text-align:left !important}.text-end{text-align:right !important}.text-center{text-align:center !important}.text-decoration-none{text-decoration:none !important}.text-decoration-underline{text-decoration:underline !important}.text-decoration-line-through{text-decoration:line-through !important}.text-lowercase{text-transform:lowercase !important}.text-uppercase{text-transform:uppercase !important}.text-capitalize{text-transform:capitalize !important}.text-wrap{white-space:normal !important}.text-nowrap{white-space:nowrap !important}.text-break{word-wrap:break-word !important;word-break:break-word !important}.text-primary{--bs-text-opacity: 1;color:rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important}.text-secondary{--bs-text-opacity: 1;color:rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important}.text-success{--bs-text-opacity: 1;color:rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important}.text-info{--bs-text-opacity: 1;color:rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important}.text-warning{--bs-text-opacity: 1;color:rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important}.text-danger{--bs-text-opacity: 1;color:rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important}.text-light{--bs-text-opacity: 1;color:rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important}.text-dark{--bs-text-opacity: 1;color:rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important}.text-black{--bs-text-opacity: 1;color:rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important}.text-white{--bs-text-opacity: 1;color:rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important}.text-body{--bs-text-opacity: 1;color:rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important}.text-muted{--bs-text-opacity: 1;color:var(--bs-secondary-color) !important}.text-black-50{--bs-text-opacity: 1;color:rgba(0,0,0,0.5) !important}.text-white-50{--bs-text-opacity: 1;color:rgba(255,255,255,0.5) !important}.text-body-secondary{--bs-text-opacity: 1;color:var(--bs-secondary-color) !important}.text-body-tertiary{--bs-text-opacity: 1;color:var(--bs-tertiary-color) !important}.text-body-emphasis{--bs-text-opacity: 1;color:var(--bs-emphasis-color) !important}.text-reset{--bs-text-opacity: 1;color:inherit !important}.text-opacity-25{--bs-text-opacity: .25}.text-opacity-50{--bs-text-opacity: .5}.text-opacity-75{--bs-text-opacity: .75}.text-opacity-100{--bs-text-opacity: 1}.text-primary-emphasis{color:var(--bs-primary-text-emphasis) !important}.text-secondary-emphasis{color:var(--bs-secondary-text-emphasis) !important}.text-success-emphasis{color:var(--bs-success-text-emphasis) !important}.text-info-emphasis{color:var(--bs-info-text-emphasis) !important}.text-warning-emphasis{color:var(--bs-warning-text-emphasis) !important}.text-danger-emphasis{color:var(--bs-danger-text-emphasis) !important}.text-light-emphasis{color:var(--bs-light-text-emphasis) !important}.text-dark-emphasis{color:var(--bs-dark-text-emphasis) !important}.link-opacity-10{--bs-link-opacity: .1}.link-opacity-10-hover:hover{--bs-link-opacity: .1}.link-opacity-25{--bs-link-opacity: .25}.link-opacity-25-hover:hover{--bs-link-opacity: .25}.link-opacity-50{--bs-link-opacity: .5}.link-opacity-50-hover:hover{--bs-link-opacity: .5}.link-opacity-75{--bs-link-opacity: .75}.link-opacity-75-hover:hover{--bs-link-opacity: .75}.link-opacity-100{--bs-link-opacity: 1}.link-opacity-100-hover:hover{--bs-link-opacity: 1}.link-offset-1{text-underline-offset:.125em !important}.link-offset-1-hover:hover{text-underline-offset:.125em !important}.link-offset-2{text-underline-offset:.25em !important}.link-offset-2-hover:hover{text-underline-offset:.25em !important}.link-offset-3{text-underline-offset:.375em !important}.link-offset-3-hover:hover{text-underline-offset:.375em !important}.link-underline-primary{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-primary-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-secondary{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-secondary-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-success{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-success-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-info{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-info-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-warning{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-warning-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-danger{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-danger-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-light{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-light-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-dark{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-dark-rgb), var(--bs-link-underline-opacity)) !important}.link-underline{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-link-color-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-underline-opacity-0{--bs-link-underline-opacity: 0}.link-underline-opacity-0-hover:hover{--bs-link-underline-opacity: 0}.link-underline-opacity-10{--bs-link-underline-opacity: .1}.link-underline-opacity-10-hover:hover{--bs-link-underline-opacity: .1}.link-underline-opacity-25{--bs-link-underline-opacity: .25}.link-underline-opacity-25-hover:hover{--bs-link-underline-opacity: .25}.link-underline-opacity-50{--bs-link-underline-opacity: .5}.link-underline-opacity-50-hover:hover{--bs-link-underline-opacity: .5}.link-underline-opacity-75{--bs-link-underline-opacity: .75}.link-underline-opacity-75-hover:hover{--bs-link-underline-opacity: .75}.link-underline-opacity-100{--bs-link-underline-opacity: 1}.link-underline-opacity-100-hover:hover{--bs-link-underline-opacity: 1}.bg-primary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important}.bg-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important}.bg-success{--bs-bg-opacity: 1;background-color:rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important}.bg-info{--bs-bg-opacity: 1;background-color:rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important}.bg-warning{--bs-bg-opacity: 1;background-color:rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important}.bg-danger{--bs-bg-opacity: 1;background-color:rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important}.bg-light{--bs-bg-opacity: 1;background-color:rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important}.bg-dark{--bs-bg-opacity: 1;background-color:rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important}.bg-black{--bs-bg-opacity: 1;background-color:rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important}.bg-white{--bs-bg-opacity: 1;background-color:rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important}.bg-body{--bs-bg-opacity: 1;background-color:rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important}.bg-transparent{--bs-bg-opacity: 1;background-color:rgba(0,0,0,0) !important}.bg-body-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-bg-rgb), var(--bs-bg-opacity)) !important}.bg-body-tertiary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-tertiary-bg-rgb), var(--bs-bg-opacity)) !important}.bg-opacity-10{--bs-bg-opacity: .1}.bg-opacity-25{--bs-bg-opacity: .25}.bg-opacity-50{--bs-bg-opacity: .5}.bg-opacity-75{--bs-bg-opacity: .75}.bg-opacity-100{--bs-bg-opacity: 1}.bg-primary-subtle{background-color:var(--bs-primary-bg-subtle) !important}.bg-secondary-subtle{background-color:var(--bs-secondary-bg-subtle) !important}.bg-success-subtle{background-color:var(--bs-success-bg-subtle) !important}.bg-info-subtle{background-color:var(--bs-info-bg-subtle) !important}.bg-warning-subtle{background-color:var(--bs-warning-bg-subtle) !important}.bg-danger-subtle{background-color:var(--bs-danger-bg-subtle) !important}.bg-light-subtle{background-color:var(--bs-light-bg-subtle) !important}.bg-dark-subtle{background-color:var(--bs-dark-bg-subtle) !important}.bg-gradient{background-image:var(--bs-gradient) !important}.user-select-all{user-select:all !important}.user-select-auto{user-select:auto !important}.user-select-none{user-select:none !important}.pe-none{pointer-events:none !important}.pe-auto{pointer-events:auto !important}.rounded{border-radius:var(--bs-border-radius) !important}.rounded-0{border-radius:0 !important}.rounded-1{border-radius:var(--bs-border-radius-sm) !important}.rounded-2{border-radius:var(--bs-border-radius) !important}.rounded-3{border-radius:var(--bs-border-radius-lg) !important}.rounded-4{border-radius:var(--bs-border-radius-xl) !important}.rounded-5{border-radius:var(--bs-border-radius-xxl) !important}.rounded-circle{border-radius:50% !important}.rounded-pill{border-radius:var(--bs-border-radius-pill) !important}.rounded-top{border-top-left-radius:var(--bs-border-radius) !important;border-top-right-radius:var(--bs-border-radius) !important}.rounded-top-0{border-top-left-radius:0 !important;border-top-right-radius:0 !important}.rounded-top-1{border-top-left-radius:var(--bs-border-radius-sm) !important;border-top-right-radius:var(--bs-border-radius-sm) !important}.rounded-top-2{border-top-left-radius:var(--bs-border-radius) !important;border-top-right-radius:var(--bs-border-radius) !important}.rounded-top-3{border-top-left-radius:var(--bs-border-radius-lg) !important;border-top-right-radius:var(--bs-border-radius-lg) !important}.rounded-top-4{border-top-left-radius:var(--bs-border-radius-xl) !important;border-top-right-radius:var(--bs-border-radius-xl) !important}.rounded-top-5{border-top-left-radius:var(--bs-border-radius-xxl) !important;border-top-right-radius:var(--bs-border-radius-xxl) !important}.rounded-top-circle{border-top-left-radius:50% !important;border-top-right-radius:50% !important}.rounded-top-pill{border-top-left-radius:var(--bs-border-radius-pill) !important;border-top-right-radius:var(--bs-border-radius-pill) !important}.rounded-end{border-top-right-radius:var(--bs-border-radius) !important;border-bottom-right-radius:var(--bs-border-radius) !important}.rounded-end-0{border-top-right-radius:0 !important;border-bottom-right-radius:0 !important}.rounded-end-1{border-top-right-radius:var(--bs-border-radius-sm) !important;border-bottom-right-radius:var(--bs-border-radius-sm) !important}.rounded-end-2{border-top-right-radius:var(--bs-border-radius) !important;border-bottom-right-radius:var(--bs-border-radius) !important}.rounded-end-3{border-top-right-radius:var(--bs-border-radius-lg) !important;border-bottom-right-radius:var(--bs-border-radius-lg) !important}.rounded-end-4{border-top-right-radius:var(--bs-border-radius-xl) !important;border-bottom-right-radius:var(--bs-border-radius-xl) !important}.rounded-end-5{border-top-right-radius:var(--bs-border-radius-xxl) !important;border-bottom-right-radius:var(--bs-border-radius-xxl) !important}.rounded-end-circle{border-top-right-radius:50% !important;border-bottom-right-radius:50% !important}.rounded-end-pill{border-top-right-radius:var(--bs-border-radius-pill) !important;border-bottom-right-radius:var(--bs-border-radius-pill) !important}.rounded-bottom{border-bottom-right-radius:var(--bs-border-radius) !important;border-bottom-left-radius:var(--bs-border-radius) !important}.rounded-bottom-0{border-bottom-right-radius:0 !important;border-bottom-left-radius:0 !important}.rounded-bottom-1{border-bottom-right-radius:var(--bs-border-radius-sm) !important;border-bottom-left-radius:var(--bs-border-radius-sm) !important}.rounded-bottom-2{border-bottom-right-radius:var(--bs-border-radius) !important;border-bottom-left-radius:var(--bs-border-radius) !important}.rounded-bottom-3{border-bottom-right-radius:var(--bs-border-radius-lg) !important;border-bottom-left-radius:var(--bs-border-radius-lg) !important}.rounded-bottom-4{border-bottom-right-radius:var(--bs-border-radius-xl) !important;border-bottom-left-radius:var(--bs-border-radius-xl) !important}.rounded-bottom-5{border-bottom-right-radius:var(--bs-border-radius-xxl) !important;border-bottom-left-radius:var(--bs-border-radius-xxl) !important}.rounded-bottom-circle{border-bottom-right-radius:50% !important;border-bottom-left-radius:50% !important}.rounded-bottom-pill{border-bottom-right-radius:var(--bs-border-radius-pill) !important;border-bottom-left-radius:var(--bs-border-radius-pill) !important}.rounded-start{border-bottom-left-radius:var(--bs-border-radius) !important;border-top-left-radius:var(--bs-border-radius) !important}.rounded-start-0{border-bottom-left-radius:0 !important;border-top-left-radius:0 !important}.rounded-start-1{border-bottom-left-radius:var(--bs-border-radius-sm) !important;border-top-left-radius:var(--bs-border-radius-sm) !important}.rounded-start-2{border-bottom-left-radius:var(--bs-border-radius) !important;border-top-left-radius:var(--bs-border-radius) !important}.rounded-start-3{border-bottom-left-radius:var(--bs-border-radius-lg) !important;border-top-left-radius:var(--bs-border-radius-lg) !important}.rounded-start-4{border-bottom-left-radius:var(--bs-border-radius-xl) !important;border-top-left-radius:var(--bs-border-radius-xl) !important}.rounded-start-5{border-bottom-left-radius:var(--bs-border-radius-xxl) !important;border-top-left-radius:var(--bs-border-radius-xxl) !important}.rounded-start-circle{border-bottom-left-radius:50% !important;border-top-left-radius:50% !important}.rounded-start-pill{border-bottom-left-radius:var(--bs-border-radius-pill) !important;border-top-left-radius:var(--bs-border-radius-pill) !important}.visible{visibility:visible !important}.invisible{visibility:hidden !important}.z-n1{z-index:-1 !important}.z-0{z-index:0 !important}.z-1{z-index:1 !important}.z-2{z-index:2 !important}.z-3{z-index:3 !important}@media (min-width: 576px){.float-sm-start{float:left !important}.float-sm-end{float:right !important}.float-sm-none{float:none !important}.object-fit-sm-contain{object-fit:contain !important}.object-fit-sm-cover{object-fit:cover !important}.object-fit-sm-fill{object-fit:fill !important}.object-fit-sm-scale{object-fit:scale-down !important}.object-fit-sm-none{object-fit:none !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-grid{display:grid !important}.d-sm-inline-grid{display:inline-grid !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}.d-sm-flex{display:flex !important}.d-sm-inline-flex{display:inline-flex !important}.d-sm-none{display:none !important}.flex-sm-fill{flex:1 1 auto !important}.flex-sm-row{flex-direction:row !important}.flex-sm-column{flex-direction:column !important}.flex-sm-row-reverse{flex-direction:row-reverse !important}.flex-sm-column-reverse{flex-direction:column-reverse !important}.flex-sm-grow-0{flex-grow:0 !important}.flex-sm-grow-1{flex-grow:1 !important}.flex-sm-shrink-0{flex-shrink:0 !important}.flex-sm-shrink-1{flex-shrink:1 !important}.flex-sm-wrap{flex-wrap:wrap !important}.flex-sm-nowrap{flex-wrap:nowrap !important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-sm-start{justify-content:flex-start !important}.justify-content-sm-end{justify-content:flex-end !important}.justify-content-sm-center{justify-content:center !important}.justify-content-sm-between{justify-content:space-between !important}.justify-content-sm-around{justify-content:space-around !important}.justify-content-sm-evenly{justify-content:space-evenly !important}.align-items-sm-start{align-items:flex-start !important}.align-items-sm-end{align-items:flex-end !important}.align-items-sm-center{align-items:center !important}.align-items-sm-baseline{align-items:baseline !important}.align-items-sm-stretch{align-items:stretch !important}.align-content-sm-start{align-content:flex-start !important}.align-content-sm-end{align-content:flex-end !important}.align-content-sm-center{align-content:center !important}.align-content-sm-between{align-content:space-between !important}.align-content-sm-around{align-content:space-around !important}.align-content-sm-stretch{align-content:stretch !important}.align-self-sm-auto{align-self:auto !important}.align-self-sm-start{align-self:flex-start !important}.align-self-sm-end{align-self:flex-end !important}.align-self-sm-center{align-self:center !important}.align-self-sm-baseline{align-self:baseline !important}.align-self-sm-stretch{align-self:stretch !important}.order-sm-first{order:-1 !important}.order-sm-0{order:0 !important}.order-sm-1{order:1 !important}.order-sm-2{order:2 !important}.order-sm-3{order:3 !important}.order-sm-4{order:4 !important}.order-sm-5{order:5 !important}.order-sm-last{order:6 !important}.m-sm-0{margin:0 !important}.m-sm-1{margin:.25rem !important}.m-sm-2{margin:.5rem !important}.m-sm-3{margin:1rem !important}.m-sm-4{margin:1.5rem !important}.m-sm-5{margin:3rem !important}.m-sm-auto{margin:auto !important}.mx-sm-0{margin-right:0 !important;margin-left:0 !important}.mx-sm-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-sm-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-sm-3{margin-right:1rem !important;margin-left:1rem !important}.mx-sm-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-sm-5{margin-right:3rem !important;margin-left:3rem !important}.mx-sm-auto{margin-right:auto !important;margin-left:auto !important}.my-sm-0{margin-top:0 !important;margin-bottom:0 !important}.my-sm-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-sm-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-sm-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-sm-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-sm-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-sm-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-sm-0{margin-top:0 !important}.mt-sm-1{margin-top:.25rem !important}.mt-sm-2{margin-top:.5rem !important}.mt-sm-3{margin-top:1rem !important}.mt-sm-4{margin-top:1.5rem !important}.mt-sm-5{margin-top:3rem !important}.mt-sm-auto{margin-top:auto !important}.me-sm-0{margin-right:0 !important}.me-sm-1{margin-right:.25rem !important}.me-sm-2{margin-right:.5rem !important}.me-sm-3{margin-right:1rem !important}.me-sm-4{margin-right:1.5rem !important}.me-sm-5{margin-right:3rem !important}.me-sm-auto{margin-right:auto !important}.mb-sm-0{margin-bottom:0 !important}.mb-sm-1{margin-bottom:.25rem !important}.mb-sm-2{margin-bottom:.5rem !important}.mb-sm-3{margin-bottom:1rem !important}.mb-sm-4{margin-bottom:1.5rem !important}.mb-sm-5{margin-bottom:3rem !important}.mb-sm-auto{margin-bottom:auto !important}.ms-sm-0{margin-left:0 !important}.ms-sm-1{margin-left:.25rem !important}.ms-sm-2{margin-left:.5rem !important}.ms-sm-3{margin-left:1rem !important}.ms-sm-4{margin-left:1.5rem !important}.ms-sm-5{margin-left:3rem !important}.ms-sm-auto{margin-left:auto !important}.p-sm-0{padding:0 !important}.p-sm-1{padding:.25rem !important}.p-sm-2{padding:.5rem !important}.p-sm-3{padding:1rem !important}.p-sm-4{padding:1.5rem !important}.p-sm-5{padding:3rem !important}.px-sm-0{padding-right:0 !important;padding-left:0 !important}.px-sm-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-sm-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-sm-3{padding-right:1rem !important;padding-left:1rem !important}.px-sm-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-sm-5{padding-right:3rem !important;padding-left:3rem !important}.py-sm-0{padding-top:0 !important;padding-bottom:0 !important}.py-sm-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-sm-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-sm-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-sm-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-sm-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-sm-0{padding-top:0 !important}.pt-sm-1{padding-top:.25rem !important}.pt-sm-2{padding-top:.5rem !important}.pt-sm-3{padding-top:1rem !important}.pt-sm-4{padding-top:1.5rem !important}.pt-sm-5{padding-top:3rem !important}.pe-sm-0{padding-right:0 !important}.pe-sm-1{padding-right:.25rem !important}.pe-sm-2{padding-right:.5rem !important}.pe-sm-3{padding-right:1rem !important}.pe-sm-4{padding-right:1.5rem !important}.pe-sm-5{padding-right:3rem !important}.pb-sm-0{padding-bottom:0 !important}.pb-sm-1{padding-bottom:.25rem !important}.pb-sm-2{padding-bottom:.5rem !important}.pb-sm-3{padding-bottom:1rem !important}.pb-sm-4{padding-bottom:1.5rem !important}.pb-sm-5{padding-bottom:3rem !important}.ps-sm-0{padding-left:0 !important}.ps-sm-1{padding-left:.25rem !important}.ps-sm-2{padding-left:.5rem !important}.ps-sm-3{padding-left:1rem !important}.ps-sm-4{padding-left:1.5rem !important}.ps-sm-5{padding-left:3rem !important}.gap-sm-0{gap:0 !important}.gap-sm-1{gap:.25rem !important}.gap-sm-2{gap:.5rem !important}.gap-sm-3{gap:1rem !important}.gap-sm-4{gap:1.5rem !important}.gap-sm-5{gap:3rem !important}.row-gap-sm-0{row-gap:0 !important}.row-gap-sm-1{row-gap:.25rem !important}.row-gap-sm-2{row-gap:.5rem !important}.row-gap-sm-3{row-gap:1rem !important}.row-gap-sm-4{row-gap:1.5rem !important}.row-gap-sm-5{row-gap:3rem !important}.column-gap-sm-0{column-gap:0 !important}.column-gap-sm-1{column-gap:.25rem !important}.column-gap-sm-2{column-gap:.5rem !important}.column-gap-sm-3{column-gap:1rem !important}.column-gap-sm-4{column-gap:1.5rem !important}.column-gap-sm-5{column-gap:3rem !important}.text-sm-start{text-align:left !important}.text-sm-end{text-align:right !important}.text-sm-center{text-align:center !important}}@media (min-width: 768px){.float-md-start{float:left !important}.float-md-end{float:right !important}.float-md-none{float:none !important}.object-fit-md-contain{object-fit:contain !important}.object-fit-md-cover{object-fit:cover !important}.object-fit-md-fill{object-fit:fill !important}.object-fit-md-scale{object-fit:scale-down !important}.object-fit-md-none{object-fit:none !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-grid{display:grid !important}.d-md-inline-grid{display:inline-grid !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}.d-md-flex{display:flex !important}.d-md-inline-flex{display:inline-flex !important}.d-md-none{display:none !important}.flex-md-fill{flex:1 1 auto !important}.flex-md-row{flex-direction:row !important}.flex-md-column{flex-direction:column !important}.flex-md-row-reverse{flex-direction:row-reverse !important}.flex-md-column-reverse{flex-direction:column-reverse !important}.flex-md-grow-0{flex-grow:0 !important}.flex-md-grow-1{flex-grow:1 !important}.flex-md-shrink-0{flex-shrink:0 !important}.flex-md-shrink-1{flex-shrink:1 !important}.flex-md-wrap{flex-wrap:wrap !important}.flex-md-nowrap{flex-wrap:nowrap !important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-md-start{justify-content:flex-start !important}.justify-content-md-end{justify-content:flex-end !important}.justify-content-md-center{justify-content:center !important}.justify-content-md-between{justify-content:space-between !important}.justify-content-md-around{justify-content:space-around !important}.justify-content-md-evenly{justify-content:space-evenly !important}.align-items-md-start{align-items:flex-start !important}.align-items-md-end{align-items:flex-end !important}.align-items-md-center{align-items:center !important}.align-items-md-baseline{align-items:baseline !important}.align-items-md-stretch{align-items:stretch !important}.align-content-md-start{align-content:flex-start !important}.align-content-md-end{align-content:flex-end !important}.align-content-md-center{align-content:center !important}.align-content-md-between{align-content:space-between !important}.align-content-md-around{align-content:space-around !important}.align-content-md-stretch{align-content:stretch !important}.align-self-md-auto{align-self:auto !important}.align-self-md-start{align-self:flex-start !important}.align-self-md-end{align-self:flex-end !important}.align-self-md-center{align-self:center !important}.align-self-md-baseline{align-self:baseline !important}.align-self-md-stretch{align-self:stretch !important}.order-md-first{order:-1 !important}.order-md-0{order:0 !important}.order-md-1{order:1 !important}.order-md-2{order:2 !important}.order-md-3{order:3 !important}.order-md-4{order:4 !important}.order-md-5{order:5 !important}.order-md-last{order:6 !important}.m-md-0{margin:0 !important}.m-md-1{margin:.25rem !important}.m-md-2{margin:.5rem !important}.m-md-3{margin:1rem !important}.m-md-4{margin:1.5rem !important}.m-md-5{margin:3rem !important}.m-md-auto{margin:auto !important}.mx-md-0{margin-right:0 !important;margin-left:0 !important}.mx-md-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-md-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-md-3{margin-right:1rem !important;margin-left:1rem !important}.mx-md-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-md-5{margin-right:3rem !important;margin-left:3rem !important}.mx-md-auto{margin-right:auto !important;margin-left:auto !important}.my-md-0{margin-top:0 !important;margin-bottom:0 !important}.my-md-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-md-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-md-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-md-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-md-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-md-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-md-0{margin-top:0 !important}.mt-md-1{margin-top:.25rem !important}.mt-md-2{margin-top:.5rem !important}.mt-md-3{margin-top:1rem !important}.mt-md-4{margin-top:1.5rem !important}.mt-md-5{margin-top:3rem !important}.mt-md-auto{margin-top:auto !important}.me-md-0{margin-right:0 !important}.me-md-1{margin-right:.25rem !important}.me-md-2{margin-right:.5rem !important}.me-md-3{margin-right:1rem !important}.me-md-4{margin-right:1.5rem !important}.me-md-5{margin-right:3rem !important}.me-md-auto{margin-right:auto !important}.mb-md-0{margin-bottom:0 !important}.mb-md-1{margin-bottom:.25rem !important}.mb-md-2{margin-bottom:.5rem !important}.mb-md-3{margin-bottom:1rem !important}.mb-md-4{margin-bottom:1.5rem !important}.mb-md-5{margin-bottom:3rem !important}.mb-md-auto{margin-bottom:auto !important}.ms-md-0{margin-left:0 !important}.ms-md-1{margin-left:.25rem !important}.ms-md-2{margin-left:.5rem !important}.ms-md-3{margin-left:1rem !important}.ms-md-4{margin-left:1.5rem !important}.ms-md-5{margin-left:3rem !important}.ms-md-auto{margin-left:auto !important}.p-md-0{padding:0 !important}.p-md-1{padding:.25rem !important}.p-md-2{padding:.5rem !important}.p-md-3{padding:1rem !important}.p-md-4{padding:1.5rem !important}.p-md-5{padding:3rem !important}.px-md-0{padding-right:0 !important;padding-left:0 !important}.px-md-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-md-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-md-3{padding-right:1rem !important;padding-left:1rem !important}.px-md-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-md-5{padding-right:3rem !important;padding-left:3rem !important}.py-md-0{padding-top:0 !important;padding-bottom:0 !important}.py-md-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-md-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-md-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-md-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-md-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-md-0{padding-top:0 !important}.pt-md-1{padding-top:.25rem !important}.pt-md-2{padding-top:.5rem !important}.pt-md-3{padding-top:1rem !important}.pt-md-4{padding-top:1.5rem !important}.pt-md-5{padding-top:3rem !important}.pe-md-0{padding-right:0 !important}.pe-md-1{padding-right:.25rem !important}.pe-md-2{padding-right:.5rem !important}.pe-md-3{padding-right:1rem !important}.pe-md-4{padding-right:1.5rem !important}.pe-md-5{padding-right:3rem !important}.pb-md-0{padding-bottom:0 !important}.pb-md-1{padding-bottom:.25rem !important}.pb-md-2{padding-bottom:.5rem !important}.pb-md-3{padding-bottom:1rem !important}.pb-md-4{padding-bottom:1.5rem !important}.pb-md-5{padding-bottom:3rem !important}.ps-md-0{padding-left:0 !important}.ps-md-1{padding-left:.25rem !important}.ps-md-2{padding-left:.5rem !important}.ps-md-3{padding-left:1rem !important}.ps-md-4{padding-left:1.5rem !important}.ps-md-5{padding-left:3rem !important}.gap-md-0{gap:0 !important}.gap-md-1{gap:.25rem !important}.gap-md-2{gap:.5rem !important}.gap-md-3{gap:1rem !important}.gap-md-4{gap:1.5rem !important}.gap-md-5{gap:3rem !important}.row-gap-md-0{row-gap:0 !important}.row-gap-md-1{row-gap:.25rem !important}.row-gap-md-2{row-gap:.5rem !important}.row-gap-md-3{row-gap:1rem !important}.row-gap-md-4{row-gap:1.5rem !important}.row-gap-md-5{row-gap:3rem !important}.column-gap-md-0{column-gap:0 !important}.column-gap-md-1{column-gap:.25rem !important}.column-gap-md-2{column-gap:.5rem !important}.column-gap-md-3{column-gap:1rem !important}.column-gap-md-4{column-gap:1.5rem !important}.column-gap-md-5{column-gap:3rem !important}.text-md-start{text-align:left !important}.text-md-end{text-align:right !important}.text-md-center{text-align:center !important}}@media (min-width: 992px){.float-lg-start{float:left !important}.float-lg-end{float:right !important}.float-lg-none{float:none !important}.object-fit-lg-contain{object-fit:contain !important}.object-fit-lg-cover{object-fit:cover !important}.object-fit-lg-fill{object-fit:fill !important}.object-fit-lg-scale{object-fit:scale-down !important}.object-fit-lg-none{object-fit:none !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-grid{display:grid !important}.d-lg-inline-grid{display:inline-grid !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}.d-lg-flex{display:flex !important}.d-lg-inline-flex{display:inline-flex !important}.d-lg-none{display:none !important}.flex-lg-fill{flex:1 1 auto !important}.flex-lg-row{flex-direction:row !important}.flex-lg-column{flex-direction:column !important}.flex-lg-row-reverse{flex-direction:row-reverse !important}.flex-lg-column-reverse{flex-direction:column-reverse !important}.flex-lg-grow-0{flex-grow:0 !important}.flex-lg-grow-1{flex-grow:1 !important}.flex-lg-shrink-0{flex-shrink:0 !important}.flex-lg-shrink-1{flex-shrink:1 !important}.flex-lg-wrap{flex-wrap:wrap !important}.flex-lg-nowrap{flex-wrap:nowrap !important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-lg-start{justify-content:flex-start !important}.justify-content-lg-end{justify-content:flex-end !important}.justify-content-lg-center{justify-content:center !important}.justify-content-lg-between{justify-content:space-between !important}.justify-content-lg-around{justify-content:space-around !important}.justify-content-lg-evenly{justify-content:space-evenly !important}.align-items-lg-start{align-items:flex-start !important}.align-items-lg-end{align-items:flex-end !important}.align-items-lg-center{align-items:center !important}.align-items-lg-baseline{align-items:baseline !important}.align-items-lg-stretch{align-items:stretch !important}.align-content-lg-start{align-content:flex-start !important}.align-content-lg-end{align-content:flex-end !important}.align-content-lg-center{align-content:center !important}.align-content-lg-between{align-content:space-between !important}.align-content-lg-around{align-content:space-around !important}.align-content-lg-stretch{align-content:stretch !important}.align-self-lg-auto{align-self:auto !important}.align-self-lg-start{align-self:flex-start !important}.align-self-lg-end{align-self:flex-end !important}.align-self-lg-center{align-self:center !important}.align-self-lg-baseline{align-self:baseline !important}.align-self-lg-stretch{align-self:stretch !important}.order-lg-first{order:-1 !important}.order-lg-0{order:0 !important}.order-lg-1{order:1 !important}.order-lg-2{order:2 !important}.order-lg-3{order:3 !important}.order-lg-4{order:4 !important}.order-lg-5{order:5 !important}.order-lg-last{order:6 !important}.m-lg-0{margin:0 !important}.m-lg-1{margin:.25rem !important}.m-lg-2{margin:.5rem !important}.m-lg-3{margin:1rem !important}.m-lg-4{margin:1.5rem !important}.m-lg-5{margin:3rem !important}.m-lg-auto{margin:auto !important}.mx-lg-0{margin-right:0 !important;margin-left:0 !important}.mx-lg-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-lg-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-lg-3{margin-right:1rem !important;margin-left:1rem !important}.mx-lg-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-lg-5{margin-right:3rem !important;margin-left:3rem !important}.mx-lg-auto{margin-right:auto !important;margin-left:auto !important}.my-lg-0{margin-top:0 !important;margin-bottom:0 !important}.my-lg-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-lg-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-lg-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-lg-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-lg-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-lg-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-lg-0{margin-top:0 !important}.mt-lg-1{margin-top:.25rem !important}.mt-lg-2{margin-top:.5rem !important}.mt-lg-3{margin-top:1rem !important}.mt-lg-4{margin-top:1.5rem !important}.mt-lg-5{margin-top:3rem !important}.mt-lg-auto{margin-top:auto !important}.me-lg-0{margin-right:0 !important}.me-lg-1{margin-right:.25rem !important}.me-lg-2{margin-right:.5rem !important}.me-lg-3{margin-right:1rem !important}.me-lg-4{margin-right:1.5rem !important}.me-lg-5{margin-right:3rem !important}.me-lg-auto{margin-right:auto !important}.mb-lg-0{margin-bottom:0 !important}.mb-lg-1{margin-bottom:.25rem !important}.mb-lg-2{margin-bottom:.5rem !important}.mb-lg-3{margin-bottom:1rem !important}.mb-lg-4{margin-bottom:1.5rem !important}.mb-lg-5{margin-bottom:3rem !important}.mb-lg-auto{margin-bottom:auto !important}.ms-lg-0{margin-left:0 !important}.ms-lg-1{margin-left:.25rem !important}.ms-lg-2{margin-left:.5rem !important}.ms-lg-3{margin-left:1rem !important}.ms-lg-4{margin-left:1.5rem !important}.ms-lg-5{margin-left:3rem !important}.ms-lg-auto{margin-left:auto !important}.p-lg-0{padding:0 !important}.p-lg-1{padding:.25rem !important}.p-lg-2{padding:.5rem !important}.p-lg-3{padding:1rem !important}.p-lg-4{padding:1.5rem !important}.p-lg-5{padding:3rem !important}.px-lg-0{padding-right:0 !important;padding-left:0 !important}.px-lg-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-lg-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-lg-3{padding-right:1rem !important;padding-left:1rem !important}.px-lg-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-lg-5{padding-right:3rem !important;padding-left:3rem !important}.py-lg-0{padding-top:0 !important;padding-bottom:0 !important}.py-lg-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-lg-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-lg-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-lg-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-lg-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-lg-0{padding-top:0 !important}.pt-lg-1{padding-top:.25rem !important}.pt-lg-2{padding-top:.5rem !important}.pt-lg-3{padding-top:1rem !important}.pt-lg-4{padding-top:1.5rem !important}.pt-lg-5{padding-top:3rem !important}.pe-lg-0{padding-right:0 !important}.pe-lg-1{padding-right:.25rem !important}.pe-lg-2{padding-right:.5rem !important}.pe-lg-3{padding-right:1rem !important}.pe-lg-4{padding-right:1.5rem !important}.pe-lg-5{padding-right:3rem !important}.pb-lg-0{padding-bottom:0 !important}.pb-lg-1{padding-bottom:.25rem !important}.pb-lg-2{padding-bottom:.5rem !important}.pb-lg-3{padding-bottom:1rem !important}.pb-lg-4{padding-bottom:1.5rem !important}.pb-lg-5{padding-bottom:3rem !important}.ps-lg-0{padding-left:0 !important}.ps-lg-1{padding-left:.25rem !important}.ps-lg-2{padding-left:.5rem !important}.ps-lg-3{padding-left:1rem !important}.ps-lg-4{padding-left:1.5rem !important}.ps-lg-5{padding-left:3rem !important}.gap-lg-0{gap:0 !important}.gap-lg-1{gap:.25rem !important}.gap-lg-2{gap:.5rem !important}.gap-lg-3{gap:1rem !important}.gap-lg-4{gap:1.5rem !important}.gap-lg-5{gap:3rem !important}.row-gap-lg-0{row-gap:0 !important}.row-gap-lg-1{row-gap:.25rem !important}.row-gap-lg-2{row-gap:.5rem !important}.row-gap-lg-3{row-gap:1rem !important}.row-gap-lg-4{row-gap:1.5rem !important}.row-gap-lg-5{row-gap:3rem !important}.column-gap-lg-0{column-gap:0 !important}.column-gap-lg-1{column-gap:.25rem !important}.column-gap-lg-2{column-gap:.5rem !important}.column-gap-lg-3{column-gap:1rem !important}.column-gap-lg-4{column-gap:1.5rem !important}.column-gap-lg-5{column-gap:3rem !important}.text-lg-start{text-align:left !important}.text-lg-end{text-align:right !important}.text-lg-center{text-align:center !important}}@media (min-width: 1200px){.float-xl-start{float:left !important}.float-xl-end{float:right !important}.float-xl-none{float:none !important}.object-fit-xl-contain{object-fit:contain !important}.object-fit-xl-cover{object-fit:cover !important}.object-fit-xl-fill{object-fit:fill !important}.object-fit-xl-scale{object-fit:scale-down !important}.object-fit-xl-none{object-fit:none !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-grid{display:grid !important}.d-xl-inline-grid{display:inline-grid !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}.d-xl-flex{display:flex !important}.d-xl-inline-flex{display:inline-flex !important}.d-xl-none{display:none !important}.flex-xl-fill{flex:1 1 auto !important}.flex-xl-row{flex-direction:row !important}.flex-xl-column{flex-direction:column !important}.flex-xl-row-reverse{flex-direction:row-reverse !important}.flex-xl-column-reverse{flex-direction:column-reverse !important}.flex-xl-grow-0{flex-grow:0 !important}.flex-xl-grow-1{flex-grow:1 !important}.flex-xl-shrink-0{flex-shrink:0 !important}.flex-xl-shrink-1{flex-shrink:1 !important}.flex-xl-wrap{flex-wrap:wrap !important}.flex-xl-nowrap{flex-wrap:nowrap !important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-xl-start{justify-content:flex-start !important}.justify-content-xl-end{justify-content:flex-end !important}.justify-content-xl-center{justify-content:center !important}.justify-content-xl-between{justify-content:space-between !important}.justify-content-xl-around{justify-content:space-around !important}.justify-content-xl-evenly{justify-content:space-evenly !important}.align-items-xl-start{align-items:flex-start !important}.align-items-xl-end{align-items:flex-end !important}.align-items-xl-center{align-items:center !important}.align-items-xl-baseline{align-items:baseline !important}.align-items-xl-stretch{align-items:stretch !important}.align-content-xl-start{align-content:flex-start !important}.align-content-xl-end{align-content:flex-end !important}.align-content-xl-center{align-content:center !important}.align-content-xl-between{align-content:space-between !important}.align-content-xl-around{align-content:space-around !important}.align-content-xl-stretch{align-content:stretch !important}.align-self-xl-auto{align-self:auto !important}.align-self-xl-start{align-self:flex-start !important}.align-self-xl-end{align-self:flex-end !important}.align-self-xl-center{align-self:center !important}.align-self-xl-baseline{align-self:baseline !important}.align-self-xl-stretch{align-self:stretch !important}.order-xl-first{order:-1 !important}.order-xl-0{order:0 !important}.order-xl-1{order:1 !important}.order-xl-2{order:2 !important}.order-xl-3{order:3 !important}.order-xl-4{order:4 !important}.order-xl-5{order:5 !important}.order-xl-last{order:6 !important}.m-xl-0{margin:0 !important}.m-xl-1{margin:.25rem !important}.m-xl-2{margin:.5rem !important}.m-xl-3{margin:1rem !important}.m-xl-4{margin:1.5rem !important}.m-xl-5{margin:3rem !important}.m-xl-auto{margin:auto !important}.mx-xl-0{margin-right:0 !important;margin-left:0 !important}.mx-xl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xl-auto{margin-right:auto !important;margin-left:auto !important}.my-xl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xl-0{margin-top:0 !important}.mt-xl-1{margin-top:.25rem !important}.mt-xl-2{margin-top:.5rem !important}.mt-xl-3{margin-top:1rem !important}.mt-xl-4{margin-top:1.5rem !important}.mt-xl-5{margin-top:3rem !important}.mt-xl-auto{margin-top:auto !important}.me-xl-0{margin-right:0 !important}.me-xl-1{margin-right:.25rem !important}.me-xl-2{margin-right:.5rem !important}.me-xl-3{margin-right:1rem !important}.me-xl-4{margin-right:1.5rem !important}.me-xl-5{margin-right:3rem !important}.me-xl-auto{margin-right:auto !important}.mb-xl-0{margin-bottom:0 !important}.mb-xl-1{margin-bottom:.25rem !important}.mb-xl-2{margin-bottom:.5rem !important}.mb-xl-3{margin-bottom:1rem !important}.mb-xl-4{margin-bottom:1.5rem !important}.mb-xl-5{margin-bottom:3rem !important}.mb-xl-auto{margin-bottom:auto !important}.ms-xl-0{margin-left:0 !important}.ms-xl-1{margin-left:.25rem !important}.ms-xl-2{margin-left:.5rem !important}.ms-xl-3{margin-left:1rem !important}.ms-xl-4{margin-left:1.5rem !important}.ms-xl-5{margin-left:3rem !important}.ms-xl-auto{margin-left:auto !important}.p-xl-0{padding:0 !important}.p-xl-1{padding:.25rem !important}.p-xl-2{padding:.5rem !important}.p-xl-3{padding:1rem !important}.p-xl-4{padding:1.5rem !important}.p-xl-5{padding:3rem !important}.px-xl-0{padding-right:0 !important;padding-left:0 !important}.px-xl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xl-0{padding-top:0 !important}.pt-xl-1{padding-top:.25rem !important}.pt-xl-2{padding-top:.5rem !important}.pt-xl-3{padding-top:1rem !important}.pt-xl-4{padding-top:1.5rem !important}.pt-xl-5{padding-top:3rem !important}.pe-xl-0{padding-right:0 !important}.pe-xl-1{padding-right:.25rem !important}.pe-xl-2{padding-right:.5rem !important}.pe-xl-3{padding-right:1rem !important}.pe-xl-4{padding-right:1.5rem !important}.pe-xl-5{padding-right:3rem !important}.pb-xl-0{padding-bottom:0 !important}.pb-xl-1{padding-bottom:.25rem !important}.pb-xl-2{padding-bottom:.5rem !important}.pb-xl-3{padding-bottom:1rem !important}.pb-xl-4{padding-bottom:1.5rem !important}.pb-xl-5{padding-bottom:3rem !important}.ps-xl-0{padding-left:0 !important}.ps-xl-1{padding-left:.25rem !important}.ps-xl-2{padding-left:.5rem !important}.ps-xl-3{padding-left:1rem !important}.ps-xl-4{padding-left:1.5rem !important}.ps-xl-5{padding-left:3rem !important}.gap-xl-0{gap:0 !important}.gap-xl-1{gap:.25rem !important}.gap-xl-2{gap:.5rem !important}.gap-xl-3{gap:1rem !important}.gap-xl-4{gap:1.5rem !important}.gap-xl-5{gap:3rem !important}.row-gap-xl-0{row-gap:0 !important}.row-gap-xl-1{row-gap:.25rem !important}.row-gap-xl-2{row-gap:.5rem !important}.row-gap-xl-3{row-gap:1rem !important}.row-gap-xl-4{row-gap:1.5rem !important}.row-gap-xl-5{row-gap:3rem !important}.column-gap-xl-0{column-gap:0 !important}.column-gap-xl-1{column-gap:.25rem !important}.column-gap-xl-2{column-gap:.5rem !important}.column-gap-xl-3{column-gap:1rem !important}.column-gap-xl-4{column-gap:1.5rem !important}.column-gap-xl-5{column-gap:3rem !important}.text-xl-start{text-align:left !important}.text-xl-end{text-align:right !important}.text-xl-center{text-align:center !important}}@media (min-width: 1400px){.float-xxl-start{float:left !important}.float-xxl-end{float:right !important}.float-xxl-none{float:none !important}.object-fit-xxl-contain{object-fit:contain !important}.object-fit-xxl-cover{object-fit:cover !important}.object-fit-xxl-fill{object-fit:fill !important}.object-fit-xxl-scale{object-fit:scale-down !important}.object-fit-xxl-none{object-fit:none !important}.d-xxl-inline{display:inline !important}.d-xxl-inline-block{display:inline-block !important}.d-xxl-block{display:block !important}.d-xxl-grid{display:grid !important}.d-xxl-inline-grid{display:inline-grid !important}.d-xxl-table{display:table !important}.d-xxl-table-row{display:table-row !important}.d-xxl-table-cell{display:table-cell !important}.d-xxl-flex{display:flex !important}.d-xxl-inline-flex{display:inline-flex !important}.d-xxl-none{display:none !important}.flex-xxl-fill{flex:1 1 auto !important}.flex-xxl-row{flex-direction:row !important}.flex-xxl-column{flex-direction:column !important}.flex-xxl-row-reverse{flex-direction:row-reverse !important}.flex-xxl-column-reverse{flex-direction:column-reverse !important}.flex-xxl-grow-0{flex-grow:0 !important}.flex-xxl-grow-1{flex-grow:1 !important}.flex-xxl-shrink-0{flex-shrink:0 !important}.flex-xxl-shrink-1{flex-shrink:1 !important}.flex-xxl-wrap{flex-wrap:wrap !important}.flex-xxl-nowrap{flex-wrap:nowrap !important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-xxl-start{justify-content:flex-start !important}.justify-content-xxl-end{justify-content:flex-end !important}.justify-content-xxl-center{justify-content:center !important}.justify-content-xxl-between{justify-content:space-between !important}.justify-content-xxl-around{justify-content:space-around !important}.justify-content-xxl-evenly{justify-content:space-evenly !important}.align-items-xxl-start{align-items:flex-start !important}.align-items-xxl-end{align-items:flex-end !important}.align-items-xxl-center{align-items:center !important}.align-items-xxl-baseline{align-items:baseline !important}.align-items-xxl-stretch{align-items:stretch !important}.align-content-xxl-start{align-content:flex-start !important}.align-content-xxl-end{align-content:flex-end !important}.align-content-xxl-center{align-content:center !important}.align-content-xxl-between{align-content:space-between !important}.align-content-xxl-around{align-content:space-around !important}.align-content-xxl-stretch{align-content:stretch !important}.align-self-xxl-auto{align-self:auto !important}.align-self-xxl-start{align-self:flex-start !important}.align-self-xxl-end{align-self:flex-end !important}.align-self-xxl-center{align-self:center !important}.align-self-xxl-baseline{align-self:baseline !important}.align-self-xxl-stretch{align-self:stretch !important}.order-xxl-first{order:-1 !important}.order-xxl-0{order:0 !important}.order-xxl-1{order:1 !important}.order-xxl-2{order:2 !important}.order-xxl-3{order:3 !important}.order-xxl-4{order:4 !important}.order-xxl-5{order:5 !important}.order-xxl-last{order:6 !important}.m-xxl-0{margin:0 !important}.m-xxl-1{margin:.25rem !important}.m-xxl-2{margin:.5rem !important}.m-xxl-3{margin:1rem !important}.m-xxl-4{margin:1.5rem !important}.m-xxl-5{margin:3rem !important}.m-xxl-auto{margin:auto !important}.mx-xxl-0{margin-right:0 !important;margin-left:0 !important}.mx-xxl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xxl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xxl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xxl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xxl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xxl-auto{margin-right:auto !important;margin-left:auto !important}.my-xxl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xxl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xxl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xxl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xxl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xxl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xxl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xxl-0{margin-top:0 !important}.mt-xxl-1{margin-top:.25rem !important}.mt-xxl-2{margin-top:.5rem !important}.mt-xxl-3{margin-top:1rem !important}.mt-xxl-4{margin-top:1.5rem !important}.mt-xxl-5{margin-top:3rem !important}.mt-xxl-auto{margin-top:auto !important}.me-xxl-0{margin-right:0 !important}.me-xxl-1{margin-right:.25rem !important}.me-xxl-2{margin-right:.5rem !important}.me-xxl-3{margin-right:1rem !important}.me-xxl-4{margin-right:1.5rem !important}.me-xxl-5{margin-right:3rem !important}.me-xxl-auto{margin-right:auto !important}.mb-xxl-0{margin-bottom:0 !important}.mb-xxl-1{margin-bottom:.25rem !important}.mb-xxl-2{margin-bottom:.5rem !important}.mb-xxl-3{margin-bottom:1rem !important}.mb-xxl-4{margin-bottom:1.5rem !important}.mb-xxl-5{margin-bottom:3rem !important}.mb-xxl-auto{margin-bottom:auto !important}.ms-xxl-0{margin-left:0 !important}.ms-xxl-1{margin-left:.25rem !important}.ms-xxl-2{margin-left:.5rem !important}.ms-xxl-3{margin-left:1rem !important}.ms-xxl-4{margin-left:1.5rem !important}.ms-xxl-5{margin-left:3rem !important}.ms-xxl-auto{margin-left:auto !important}.p-xxl-0{padding:0 !important}.p-xxl-1{padding:.25rem !important}.p-xxl-2{padding:.5rem !important}.p-xxl-3{padding:1rem !important}.p-xxl-4{padding:1.5rem !important}.p-xxl-5{padding:3rem !important}.px-xxl-0{padding-right:0 !important;padding-left:0 !important}.px-xxl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xxl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xxl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xxl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xxl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xxl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xxl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xxl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xxl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xxl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xxl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xxl-0{padding-top:0 !important}.pt-xxl-1{padding-top:.25rem !important}.pt-xxl-2{padding-top:.5rem !important}.pt-xxl-3{padding-top:1rem !important}.pt-xxl-4{padding-top:1.5rem !important}.pt-xxl-5{padding-top:3rem !important}.pe-xxl-0{padding-right:0 !important}.pe-xxl-1{padding-right:.25rem !important}.pe-xxl-2{padding-right:.5rem !important}.pe-xxl-3{padding-right:1rem !important}.pe-xxl-4{padding-right:1.5rem !important}.pe-xxl-5{padding-right:3rem !important}.pb-xxl-0{padding-bottom:0 !important}.pb-xxl-1{padding-bottom:.25rem !important}.pb-xxl-2{padding-bottom:.5rem !important}.pb-xxl-3{padding-bottom:1rem !important}.pb-xxl-4{padding-bottom:1.5rem !important}.pb-xxl-5{padding-bottom:3rem !important}.ps-xxl-0{padding-left:0 !important}.ps-xxl-1{padding-left:.25rem !important}.ps-xxl-2{padding-left:.5rem !important}.ps-xxl-3{padding-left:1rem !important}.ps-xxl-4{padding-left:1.5rem !important}.ps-xxl-5{padding-left:3rem !important}.gap-xxl-0{gap:0 !important}.gap-xxl-1{gap:.25rem !important}.gap-xxl-2{gap:.5rem !important}.gap-xxl-3{gap:1rem !important}.gap-xxl-4{gap:1.5rem !important}.gap-xxl-5{gap:3rem !important}.row-gap-xxl-0{row-gap:0 !important}.row-gap-xxl-1{row-gap:.25rem !important}.row-gap-xxl-2{row-gap:.5rem !important}.row-gap-xxl-3{row-gap:1rem !important}.row-gap-xxl-4{row-gap:1.5rem !important}.row-gap-xxl-5{row-gap:3rem !important}.column-gap-xxl-0{column-gap:0 !important}.column-gap-xxl-1{column-gap:.25rem !important}.column-gap-xxl-2{column-gap:.5rem !important}.column-gap-xxl-3{column-gap:1rem !important}.column-gap-xxl-4{column-gap:1.5rem !important}.column-gap-xxl-5{column-gap:3rem !important}.text-xxl-start{text-align:left !important}.text-xxl-end{text-align:right !important}.text-xxl-center{text-align:center !important}}@media (min-width: 1200px){.fs-1{font-size:2.5rem !important}.fs-2{font-size:2rem !important}.fs-3{font-size:1.75rem !important}.fs-4{font-size:1.5rem !important}}@media print{.d-print-inline{display:inline !important}.d-print-inline-block{display:inline-block !important}.d-print-block{display:block !important}.d-print-grid{display:grid !important}.d-print-inline-grid{display:inline-grid !important}.d-print-table{display:table !important}.d-print-table-row{display:table-row !important}.d-print-table-cell{display:table-cell !important}.d-print-flex{display:flex !important}.d-print-inline-flex{display:inline-flex !important}.d-print-none{display:none !important}}/*! + * Bootstrap Docs (https://getbootstrap.com/) + * Copyright 2011-2023 The Bootstrap Authors + * Licensed under the Creative Commons Attribution 3.0 Unported License. + * For details, see https://creativecommons.org/licenses/by/3.0/. + */:root{--bs-breakpoint-xs: 0;--bs-breakpoint-sm: 576px;--bs-breakpoint-md: 768px;--bs-breakpoint-lg: 992px;--bs-breakpoint-xl: 1200px;--bs-breakpoint-xxl: 1400px}.grid{display:grid;grid-template-rows:repeat(var(--bs-rows, 1), 1fr);grid-template-columns:repeat(var(--bs-columns, 12), 1fr);gap:var(--bs-gap, 1.5rem)}.grid .g-col-1{grid-column:auto/span 1}.grid .g-col-2{grid-column:auto/span 2}.grid .g-col-3{grid-column:auto/span 3}.grid .g-col-4{grid-column:auto/span 4}.grid .g-col-5{grid-column:auto/span 5}.grid .g-col-6{grid-column:auto/span 6}.grid .g-col-7{grid-column:auto/span 7}.grid .g-col-8{grid-column:auto/span 8}.grid .g-col-9{grid-column:auto/span 9}.grid .g-col-10{grid-column:auto/span 10}.grid .g-col-11{grid-column:auto/span 11}.grid .g-col-12{grid-column:auto/span 12}.grid .g-start-1{grid-column-start:1}.grid .g-start-2{grid-column-start:2}.grid .g-start-3{grid-column-start:3}.grid .g-start-4{grid-column-start:4}.grid .g-start-5{grid-column-start:5}.grid .g-start-6{grid-column-start:6}.grid .g-start-7{grid-column-start:7}.grid .g-start-8{grid-column-start:8}.grid .g-start-9{grid-column-start:9}.grid .g-start-10{grid-column-start:10}.grid .g-start-11{grid-column-start:11}@media (min-width: 576px){.grid .g-col-sm-1{grid-column:auto/span 1}.grid .g-col-sm-2{grid-column:auto/span 2}.grid .g-col-sm-3{grid-column:auto/span 3}.grid .g-col-sm-4{grid-column:auto/span 4}.grid .g-col-sm-5{grid-column:auto/span 5}.grid .g-col-sm-6{grid-column:auto/span 6}.grid .g-col-sm-7{grid-column:auto/span 7}.grid .g-col-sm-8{grid-column:auto/span 8}.grid .g-col-sm-9{grid-column:auto/span 9}.grid .g-col-sm-10{grid-column:auto/span 10}.grid .g-col-sm-11{grid-column:auto/span 11}.grid .g-col-sm-12{grid-column:auto/span 12}.grid .g-start-sm-1{grid-column-start:1}.grid .g-start-sm-2{grid-column-start:2}.grid .g-start-sm-3{grid-column-start:3}.grid .g-start-sm-4{grid-column-start:4}.grid .g-start-sm-5{grid-column-start:5}.grid .g-start-sm-6{grid-column-start:6}.grid .g-start-sm-7{grid-column-start:7}.grid .g-start-sm-8{grid-column-start:8}.grid .g-start-sm-9{grid-column-start:9}.grid .g-start-sm-10{grid-column-start:10}.grid .g-start-sm-11{grid-column-start:11}}@media (min-width: 768px){.grid .g-col-md-1{grid-column:auto/span 1}.grid .g-col-md-2{grid-column:auto/span 2}.grid .g-col-md-3{grid-column:auto/span 3}.grid .g-col-md-4{grid-column:auto/span 4}.grid .g-col-md-5{grid-column:auto/span 5}.grid .g-col-md-6{grid-column:auto/span 6}.grid .g-col-md-7{grid-column:auto/span 7}.grid .g-col-md-8{grid-column:auto/span 8}.grid .g-col-md-9{grid-column:auto/span 9}.grid .g-col-md-10{grid-column:auto/span 10}.grid .g-col-md-11{grid-column:auto/span 11}.grid .g-col-md-12{grid-column:auto/span 12}.grid .g-start-md-1{grid-column-start:1}.grid .g-start-md-2{grid-column-start:2}.grid .g-start-md-3{grid-column-start:3}.grid .g-start-md-4{grid-column-start:4}.grid .g-start-md-5{grid-column-start:5}.grid .g-start-md-6{grid-column-start:6}.grid .g-start-md-7{grid-column-start:7}.grid .g-start-md-8{grid-column-start:8}.grid .g-start-md-9{grid-column-start:9}.grid .g-start-md-10{grid-column-start:10}.grid .g-start-md-11{grid-column-start:11}}@media (min-width: 992px){.grid .g-col-lg-1{grid-column:auto/span 1}.grid .g-col-lg-2{grid-column:auto/span 2}.grid .g-col-lg-3{grid-column:auto/span 3}.grid .g-col-lg-4{grid-column:auto/span 4}.grid .g-col-lg-5{grid-column:auto/span 5}.grid .g-col-lg-6{grid-column:auto/span 6}.grid .g-col-lg-7{grid-column:auto/span 7}.grid .g-col-lg-8{grid-column:auto/span 8}.grid .g-col-lg-9{grid-column:auto/span 9}.grid .g-col-lg-10{grid-column:auto/span 10}.grid .g-col-lg-11{grid-column:auto/span 11}.grid .g-col-lg-12{grid-column:auto/span 12}.grid .g-start-lg-1{grid-column-start:1}.grid .g-start-lg-2{grid-column-start:2}.grid .g-start-lg-3{grid-column-start:3}.grid .g-start-lg-4{grid-column-start:4}.grid .g-start-lg-5{grid-column-start:5}.grid .g-start-lg-6{grid-column-start:6}.grid .g-start-lg-7{grid-column-start:7}.grid .g-start-lg-8{grid-column-start:8}.grid .g-start-lg-9{grid-column-start:9}.grid .g-start-lg-10{grid-column-start:10}.grid .g-start-lg-11{grid-column-start:11}}@media (min-width: 1200px){.grid .g-col-xl-1{grid-column:auto/span 1}.grid .g-col-xl-2{grid-column:auto/span 2}.grid .g-col-xl-3{grid-column:auto/span 3}.grid .g-col-xl-4{grid-column:auto/span 4}.grid .g-col-xl-5{grid-column:auto/span 5}.grid .g-col-xl-6{grid-column:auto/span 6}.grid .g-col-xl-7{grid-column:auto/span 7}.grid .g-col-xl-8{grid-column:auto/span 8}.grid .g-col-xl-9{grid-column:auto/span 9}.grid .g-col-xl-10{grid-column:auto/span 10}.grid .g-col-xl-11{grid-column:auto/span 11}.grid .g-col-xl-12{grid-column:auto/span 12}.grid .g-start-xl-1{grid-column-start:1}.grid .g-start-xl-2{grid-column-start:2}.grid .g-start-xl-3{grid-column-start:3}.grid .g-start-xl-4{grid-column-start:4}.grid .g-start-xl-5{grid-column-start:5}.grid .g-start-xl-6{grid-column-start:6}.grid .g-start-xl-7{grid-column-start:7}.grid .g-start-xl-8{grid-column-start:8}.grid .g-start-xl-9{grid-column-start:9}.grid .g-start-xl-10{grid-column-start:10}.grid .g-start-xl-11{grid-column-start:11}}@media (min-width: 1400px){.grid .g-col-xxl-1{grid-column:auto/span 1}.grid .g-col-xxl-2{grid-column:auto/span 2}.grid .g-col-xxl-3{grid-column:auto/span 3}.grid .g-col-xxl-4{grid-column:auto/span 4}.grid .g-col-xxl-5{grid-column:auto/span 5}.grid .g-col-xxl-6{grid-column:auto/span 6}.grid .g-col-xxl-7{grid-column:auto/span 7}.grid .g-col-xxl-8{grid-column:auto/span 8}.grid .g-col-xxl-9{grid-column:auto/span 9}.grid .g-col-xxl-10{grid-column:auto/span 10}.grid .g-col-xxl-11{grid-column:auto/span 11}.grid .g-col-xxl-12{grid-column:auto/span 12}.grid .g-start-xxl-1{grid-column-start:1}.grid .g-start-xxl-2{grid-column-start:2}.grid .g-start-xxl-3{grid-column-start:3}.grid .g-start-xxl-4{grid-column-start:4}.grid .g-start-xxl-5{grid-column-start:5}.grid .g-start-xxl-6{grid-column-start:6}.grid .g-start-xxl-7{grid-column-start:7}.grid .g-start-xxl-8{grid-column-start:8}.grid .g-start-xxl-9{grid-column-start:9}.grid .g-start-xxl-10{grid-column-start:10}.grid .g-start-xxl-11{grid-column-start:11}}:root,[data-bs-theme="light"]{--bd-purple: #4c0bce;--bd-violet: #712cf9;--bd-accent: #ffe484;--bd-violet-rgb: 112.520718,44.062154,249.437846;--bd-accent-rgb: 255,228,132;--bd-pink-rgb: 214,51,132;--bd-teal-rgb: 32,201,151;--bd-violet-bg: var(--bd-violet);--bd-toc-color: var(--bd-violet);--bd-sidebar-link-bg: rgba(var(--bd-violet-rgb), .1);--bd-callout-link: 10,88,202;--bd-callout-code-color: #ab296a;--bd-pre-bg: var(--bs-tertiary-bg)}[data-bs-theme="dark"]{--bd-violet: #9461fb;--bd-violet-bg: #712cf9;--bd-toc-color: var(--bs-emphasis-color);--bd-sidebar-link-bg: rgba(84,33,187, .5);--bd-callout-link: 110,168,254;--bd-callout-code-color: #e685b5;--bd-pre-bg: #1b1f22}.bd-navbar{padding:.75rem 0;background-color:transparent;box-shadow:0 0.5rem 1rem rgba(0,0,0,0.15),inset 0 -1px 0 rgba(255,255,255,0.15)}.bd-navbar::after{position:absolute;inset:0;z-index:-1;display:block;content:"";background-image:linear-gradient(rgba(var(--bd-violet-rgb), 1), rgba(var(--bd-violet-rgb), 0.95))}@media (max-width: 991.98px){.bd-navbar .bd-navbar-toggle{width:4.25rem}}.bd-navbar .navbar-toggler{padding:0;margin-right:-.5rem;border:0}.bd-navbar .navbar-toggler:first-child{margin-left:-.5rem}.bd-navbar .navbar-toggler .bi{width:1.5rem;height:1.5rem}.bd-navbar .navbar-toggler:focus{box-shadow:none}.bd-navbar .navbar-brand{color:#fff;transition:transform 0.2s ease-in-out}@media (prefers-reduced-motion: reduce){.bd-navbar .navbar-brand{transition:none}}.bd-navbar .navbar-brand:hover{transform:rotate(-5deg) scale(1.1)}.bd-navbar .navbar-toggler,.bd-navbar .nav-link{padding-right:.25rem;padding-left:.25rem;color:rgba(255,255,255,0.85)}.bd-navbar .navbar-toggler:hover,.bd-navbar .navbar-toggler:focus,.bd-navbar .nav-link:hover,.bd-navbar .nav-link:focus{color:#fff}.bd-navbar .navbar-toggler.active,.bd-navbar .nav-link.active{font-weight:600;color:#fff}.bd-navbar .navbar-nav-svg{display:inline-block;vertical-align:-.125rem}.bd-navbar .offcanvas-lg{background-color:var(--bd-violet-bg);border-left:0}@media (max-width: 991.98px){.bd-navbar .offcanvas-lg{box-shadow:0 1rem 3rem rgba(0,0,0,0.175)}}.bd-navbar .dropdown-toggle:focus:not(:focus-visible){outline:0}.bd-navbar .dropdown-menu{--bs-dropdown-min-width: 12rem;--bs-dropdown-padding-x: .25rem;--bs-dropdown-padding-y: .25rem;--bs-dropdown-link-hover-bg: rgba(var(--bd-violet-rgb), .1);--bs-dropdown-link-active-bg: rgba(var(--bd-violet-rgb), 1);--bs-dropdown-font-size:.875rem;font-size:.875rem;border-radius:.5rem;box-shadow:0 0.5rem 1rem rgba(0,0,0,0.15)}.bd-navbar .dropdown-menu li+li{margin-top:.125rem}.bd-navbar .dropdown-menu .dropdown-item{border-radius:.25rem}.bd-navbar .dropdown-menu .dropdown-item:active .bi{color:inherit !important}.bd-navbar .dropdown-menu .active{font-weight:600}.bd-navbar .dropdown-menu .active .bi{display:block !important}.bd-navbar .dropdown-menu-end{--bs-dropdown-min-width: 8rem}[data-bs-theme="dark"] .bd-navbar{box-shadow:0 0.5rem 1rem rgba(0,0,0,0.15),inset 0 -1px 0 rgba(255,255,255,0.15)}:root{--docsearch-primary-color: var(--bd-violet);--docsearch-logo-color: var(--bd-violet)}[data-bs-theme="dark"]{--docsearch-text-color: #f5f6f7;--docsearch-container-background: rgba(9, 10, 17, .8);--docsearch-modal-background: #15172a;--docsearch-modal-shadow: inset 1px 1px 0 0 #2c2e40, 0 3px 8px 0 #000309;--docsearch-searchbox-background: #090a11;--docsearch-searchbox-focus-background: #000;--docsearch-hit-color: #bec3c9;--docsearch-hit-shadow: none;--docsearch-hit-background: #090a11;--docsearch-key-gradient: linear-gradient(-26.5deg, #565872, #31355b);--docsearch-key-shadow: inset 0 -2px 0 0 #282d55, inset 0 0 1px 1px #51577d, 0 2px 2px 0 rgba(3, 4, 9, .3);--docsearch-footer-background: #1e2136;--docsearch-footer-shadow: inset 0 1px 0 0 rgba(73, 76, 106, .5), 0 -4px 8px 0 rgba(0, 0, 0, .2);--docsearch-muted-color: #7f8497}.bd-search{position:relative}@media (min-width: 992px){.bd-search{position:absolute;top:.875rem;left:50%;width:200px;margin-left:-100px}}@media (min-width: 1200px){.bd-search{width:280px;margin-left:-140px}}.DocSearch-Container{--docsearch-muted-color: var(--bs-secondary-color);--docsearch-hit-shadow: none;z-index:2000;cursor:auto}@media (min-width: 992px){.DocSearch-Container{padding-top:4rem}}.DocSearch-Button{--docsearch-searchbox-background: rgba(0,0,0,0.1);--docsearch-searchbox-color: #fff;--docsearch-searchbox-focus-background: rgba(0,0,0,0.25);--docsearch-searchbox-shadow: 0 0 0 0.25rem rgba(255,228,132,0.4);--docsearch-text-color: #fff;--docsearch-muted-color: rgba(255,255,255,0.65);width:100%;height:38px;margin:0;border:1px solid rgba(255,255,255,0.4);border-radius:.375rem}.DocSearch-Button .DocSearch-Search-Icon{opacity:.65}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{border-color:#ffe484}.DocSearch-Button:active .DocSearch-Search-Icon,.DocSearch-Button:focus .DocSearch-Search-Icon,.DocSearch-Button:hover .DocSearch-Search-Icon{opacity:1}@media (max-width: 991.98px){.DocSearch-Button,.DocSearch-Button:hover,.DocSearch-Button:focus{background:transparent;border:0;box-shadow:none}.DocSearch-Button:focus{box-shadow:var(--docsearch-searchbox-shadow)}}@media (max-width: 991.98px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder{display:none}}.DocSearch-Button-Keys{min-width:0;padding:.125rem .25rem;background:rgba(0,0,0,0.25);border-radius:.25rem}.DocSearch-Button-Key{top:0;width:auto;height:1.25rem;padding-right:.125rem;padding-left:.125rem;margin-right:0;font-size:.875rem;background:none;box-shadow:none}.DocSearch-Commands-Key{padding-left:1px;font-size:.875rem;background-color:rgba(0,0,0,0.1);background-image:none;box-shadow:none}.DocSearch-Form{border-radius:var(--bs-border-radius)}.DocSearch-Hits mark,.DocSearch-Hits .mark{padding:0}.DocSearch-Hit{padding-bottom:0;border-radius:0}.DocSearch-Hit a{border-radius:0;border:solid var(--bs-border-color);border-width:0 1px 1px}.DocSearch-Hit:first-child a{border-top-left-radius:var(--bs-border-radius);border-top-right-radius:var(--bs-border-radius);border-top-width:1px}.DocSearch-Hit:last-child a{border-bottom-right-radius:var(--bs-border-radius);border-bottom-left-radius:var(--bs-border-radius)}.DocSearch-Hit-icon{display:flex;align-items:center}.DocSearch-Logo svg .cls-1,.DocSearch-Logo svg .cls-2{fill:var(--docsearch-logo-color)}.bd-masthead{--bd-pink-rgb: 214,51,132;padding:3rem 0;background-image:linear-gradient(180deg, rgba(var(--bs-body-bg-rgb), 0.01), rgba(var(--bs-body-bg-rgb), 1) 85%),radial-gradient(ellipse at top left, rgba(var(--bs-primary-rgb), 0.5), transparent 50%),radial-gradient(ellipse at top right, rgba(var(--bd-accent-rgb), 0.5), transparent 50%),radial-gradient(ellipse at center right, rgba(var(--bd-violet-rgb), 0.5), transparent 50%),radial-gradient(ellipse at center left, rgba(var(--bd-pink-rgb), 0.5), transparent 50%)}.bd-masthead h1,.bd-masthead .h1{--bs-heading-color: var(--bs-emphasis-color);font-size:calc(1.525rem + 3.3vw)}@media (min-width: 1200px){.bd-masthead h1,.bd-masthead .h1{font-size:4rem}}.bd-masthead .lead{font-size:1rem;font-weight:400;color:var(--bs-secondary-color)}.bd-masthead .bd-code-snippet{margin:0;border-radius:.5rem}.bd-masthead .highlight{width:100%;padding:.5rem 1rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background-color:rgba(var(--bs-body-color-rgb), 0.075);border-radius:.5rem}@media (min-width: 992px){.bd-masthead .highlight{padding-right:4rem}}.bd-masthead .highlight pre{padding:0;margin-top:.625rem;margin-right:1.875rem;margin-bottom:.625rem;overflow:hidden}.bd-masthead .btn-clipboard{position:absolute;top:-.625rem;right:0;background-color:transparent}.bd-masthead #carbonads{margin-inline:auto}@media (min-width: 768px){.bd-masthead .lead{font-size:calc(1.275rem + .3vw)}}@media (min-width: 768px) and (min-width: 1200px){.bd-masthead .lead{font-size:1.5rem}}.masthead-followup h2,.masthead-followup .h2,.masthead-followup h3,.masthead-followup .h3,.masthead-followup h4,.masthead-followup .h4{--bs-heading-color: var(--bs-emphasis-color)}.masthead-followup .lead{font-size:1rem}.masthead-followup .highlight{border-radius:.5rem}@media (min-width: 768px){.masthead-followup .lead{font-size:1.25rem}}.masthead-followup-icon{padding:1rem;color:rgba(var(--bg-rgb), 1);background-color:rgba(var(--bg-rgb), 0.1);background-blend-mode:multiple;border-radius:1rem;mix-blend-mode:darken}.masthead-followup-icon svg{filter:drop-shadow(0 1px 1px var(--bs-body-bg))}.masthead-notice{background-color:var(--bd-accent);box-shadow:inset 0 -1px 1px rgba(var(--bs-body-color-rgb), 0.15),0 0.25rem 1.5rem rgba(var(--bs-body-bg-rgb), 0.75)}.animate-img>img{transition:transform 0.2s ease-in-out}@media (prefers-reduced-motion: reduce){.animate-img>img{transition:none}}.animate-img:hover>img{transform:scale(1.1)}[data-bs-theme="dark"] .masthead-followup-icon{mix-blend-mode:lighten}#carbonads{position:static;display:block;max-width:400px;padding:15px 15px 15px 160px;margin:2rem 0;overflow:hidden;font-size:.8125rem;line-height:1.4;text-align:left;background-color:var(--bs-tertiary-bg)}#carbonads a{color:var(--bs-body-color);text-decoration:none}@media (min-width: 576px){#carbonads{border-radius:.5rem}}.carbon-img{float:left;margin-left:-145px}.carbon-poweredby{display:block;margin-top:.75rem;color:var(--bs-body-color) !important}.bd-content>h2,.bd-content>.h2,.bd-content>h3,.bd-content>.h3,.bd-content>h4,.bd-content>.h4{--bs-heading-color: var(--bs-emphasis-color)}.bd-content>h2:not(:first-child),.bd-content>.h2:not(:first-child){margin-top:3rem}.bd-content>h3,.bd-content>.h3{margin-top:2rem}.bd-content>ul li,.bd-content>ol li{margin-bottom:.25rem}.bd-content>ul li>p~ul,.bd-content>ol li>p~ul{margin-top:-.5rem;margin-bottom:1rem}.bd-content>.table,.bd-content>.table-responsive .table{--bs-table-border-color: var(--bs-border-color);max-width:100%;margin-bottom:1.5rem;font-size:.875rem}@media (max-width: 991.98px){.bd-content>.table.table-bordered,.bd-content>.table-responsive .table.table-bordered{border:0}}.bd-content>.table thead,.bd-content>.table-responsive .table thead{border-bottom:2px solid currentcolor}.bd-content>.table tbody:not(:first-child),.bd-content>.table-responsive .table tbody:not(:first-child){border-top:2px solid currentcolor}.bd-content>.table th:first-child,.bd-content>.table td:first-child,.bd-content>.table-responsive .table th:first-child,.bd-content>.table-responsive .table td:first-child{padding-left:0}.bd-content>.table th:not(:last-child),.bd-content>.table td:not(:last-child),.bd-content>.table-responsive .table th:not(:last-child),.bd-content>.table-responsive .table td:not(:last-child){padding-right:1.5rem}.bd-content>.table th,.bd-content>.table-responsive .table th{color:var(--bs-emphasis-color)}.bd-content>.table strong,.bd-content>.table-responsive .table strong{color:var(--bs-emphasis-color)}.bd-content>.table th,.bd-content>.table td:first-child>code,.bd-content>.table-responsive .table th,.bd-content>.table-responsive .table td:first-child>code{white-space:nowrap}.table-options td:nth-child(2){min-width:160px}.table-options td:last-child,.table-utilities td:last-child{min-width:280px}.table-swatches th{color:var(--bs-emphasis-color)}.table-swatches td code{white-space:nowrap}.bd-title{--bs-heading-color: var(--bs-emphasis-color);font-size:calc(1.425rem + 2.1vw)}@media (min-width: 1200px){.bd-title{font-size:3rem}}.bd-lead{font-size:calc(1.275rem + .3vw);font-weight:300}@media (min-width: 1200px){.bd-lead{font-size:1.5rem}}.bi{width:1em;height:1em;vertical-align:-.125em;fill:currentcolor}@media (min-width: 992px){.border-lg-start{border-left:var(--bs-border-width) solid var(--bs-border-color)}}.bd-summary-link{color:var(--bs-link-color)}.bd-summary-link:hover,details[open]>.bd-summary-link{color:var(--bs-link-hover-color)}[data-bs-theme="blue"]{--bs-body-color: var(--bs-white);--bs-body-color-rgb: 255,255,255;--bs-body-bg: var(--bs-blue);--bs-body-bg-rgb: 13,110,253;--bs-tertiary-bg: #0a58ca}[data-bs-theme="blue"] .dropdown-menu{--bs-dropdown-bg: #0c63e4;--bs-dropdown-link-active-bg: #084298}[data-bs-theme="blue"] .btn-secondary{--bs-btn-bg: #3d8bfc;--bs-btn-border-color: rgba(255,255,255,0.25);--bs-btn-hover-bg: #247cfc;--bs-btn-hover-border-color: rgba(255,255,255,0.25);--bs-btn-active-bg: #0b6dfb;--bs-btn-active-border-color: rgba(255,255,255,0.5);--bs-btn-focus-border-color: rgba(255,255,255,0.5);--bs-btn-focus-box-shadow: 0 0 0 .25rem rgba(255, 255, 255, .2)}.skippy{background-color:#4c0bce}.skippy a{color:#fff}@media (min-width: 992px){.bd-sidebar{position:-webkit-sticky;position:sticky;top:5rem;display:block !important;height:calc(100vh - 6rem);padding-left:.25rem;margin-left:-.25rem;overflow-y:auto}}@media (max-width: 991.98px){.bd-sidebar .offcanvas-lg{border-right-color:var(--bs-border-color);box-shadow:0 1rem 3rem rgba(0,0,0,0.175)}}.bd-links-heading{color:var(--bs-emphasis-color)}@media (max-width: 991.98px){.bd-links-nav{font-size:.875rem}}@media (max-width: 991.98px){.bd-links-nav{-moz-column-count:2;column-count:2;-moz-column-gap:1.5rem;column-gap:1.5rem}.bd-links-nav .bd-links-group{-moz-column-break-inside:avoid;break-inside:avoid}.bd-links-nav .bd-links-span-all{-moz-column-span:all;column-span:all}}.bd-links-link{padding:.1875rem .5rem;margin-top:.125rem;margin-left:1.125rem;color:var(--bs-body-color);text-decoration:none}.bd-links-link:hover,.bd-links-link:focus,.bd-links-link.active{color:var(--bs-emphasis-color);background-color:var(--bd-sidebar-link-bg)}.bd-links-link.active{font-weight:600}.bd-gutter{--bs-gutter-x: 3rem}@media (min-width: 992px){.bd-layout{display:grid;grid-template-areas:"sidebar main";grid-template-columns:1fr 5fr;gap:1.5rem}}.bd-sidebar{grid-area:sidebar}.bd-main{grid-area:main}@media (max-width: 991.98px){.bd-main{max-width:760px;margin-inline:auto}}@media (min-width: 768px){.bd-main{display:grid;grid-template-areas:"intro" "toc" "content";grid-template-rows:auto auto 1fr;gap:inherit}}@media (min-width: 992px){.bd-main{grid-template-areas:"intro toc" "content toc";grid-template-rows:auto 1fr;grid-template-columns:4fr 1fr}}.bd-intro{grid-area:intro}.bd-toc{grid-area:toc}.bd-content{grid-area:content;min-width:1px}@media (min-width: 992px){.bd-toc{position:-webkit-sticky;position:sticky;top:5rem;right:0;z-index:2;height:calc(100vh - 7rem);overflow-y:auto}}.bd-toc nav{font-size:.875rem}.bd-toc nav ul{padding-left:0;margin-bottom:0;list-style:none}.bd-toc nav ul ul{padding-left:1rem}.bd-toc nav a{display:block;padding:.125rem 0 .125rem .75rem;color:inherit;text-decoration:none;border-left:.125rem solid transparent}.bd-toc nav a:hover,.bd-toc nav a.active{color:var(--bd-toc-color);border-left-color:var(--bd-toc-color)}.bd-toc nav a.active{font-weight:500}.bd-toc nav a code{font:inherit}.bd-toc-toggle{display:flex;align-items:center}@media (max-width: 575.98px){.bd-toc-toggle{justify-content:space-between;width:100%}}@media (max-width: 767.98px){.bd-toc-toggle{color:var(--bs-body-color);border:1px solid var(--bs-border-color);border-radius:var(--bs-border-radius)}.bd-toc-toggle:hover,.bd-toc-toggle:focus,.bd-toc-toggle:active,.bd-toc-toggle[aria-expanded="true"]{color:var(--bd-violet);background-color:var(--bs-body-bg);border-color:var(--bd-violet)}.bd-toc-toggle:focus,.bd-toc-toggle[aria-expanded="true"]{box-shadow:0 0 0 3px rgba(var(--bd-violet-rgb), 0.25)}}@media (max-width: 767.98px){.bd-toc-collapse nav{padding:1.25rem 1.25rem 1.25rem 1rem;background-color:var(--bs-tertiary-bg);border:1px solid var(--bs-border-color);border-radius:var(--bs-border-radius)}}@media (min-width: 768px){.bd-toc-collapse{display:block !important}}.bd-footer a{color:var(--bs-body-color);text-decoration:none}.bd-footer a:hover,.bd-footer a:focus{color:var(--bs-link-hover-color);text-decoration:underline}.bd-example-snippet{border:solid var(--bs-border-color);border-width:1px 0}@media (min-width: 768px){.bd-example-snippet{border-width:1px}}.bd-example{--bd-example-padding: 1rem;position:relative;padding:var(--bd-example-padding);margin:0 -1.5rem;border:solid var(--bs-border-color);border-width:1px 0}.bd-example::after{display:block;clear:both;content:""}@media (min-width: 768px){.bd-example{--bd-example-padding: 1.5rem;margin-right:0;margin-left:0;border-width:1px;border-top-left-radius:var(--bs-border-radius);border-top-right-radius:var(--bs-border-radius)}}.bd-example+.bd-code-snippet{border-top-left-radius:0;border-top-right-radius:0;border:solid var(--bs-border-color);border-width:0 1px 1px}.bd-example+p{margin-top:2rem}.bd-example>.form-control+.form-control{margin-top:.5rem}.bd-example>.nav+.nav,.bd-example>.alert+.alert,.bd-example>.navbar+.navbar,.bd-example>.progress+.progress{margin-top:1rem}.bd-example>.dropdown-menu{position:static;display:block}.bd-example>:last-child,.bd-example>nav:last-child .breadcrumb{margin-bottom:0}.bd-example>hr:last-child{margin-bottom:1rem}.bd-example>svg+svg,.bd-example>img+img{margin-left:.5rem}.bd-example>.btn,.bd-example>.btn-group{margin:.25rem .125rem}.bd-example>.btn-toolbar+.btn-toolbar{margin-top:.5rem}.bd-example>.list-group{max-width:400px}.bd-example>[class*="list-group-horizontal"]{max-width:100%}.bd-example .fixed-top,.bd-example .sticky-top{position:static;margin:calc(var(--bd-example-padding) * -1) calc(var(--bd-example-padding) * -1) var(--bd-example-padding)}.bd-example .fixed-bottom,.bd-example .sticky-bottom{position:static;margin:var(--bd-example-padding) calc(var(--bd-example-padding) * -1) calc(var(--bd-example-padding) * -1)}.bd-example .pagination{margin-bottom:0}.bd-example-row [class^="col"],.bd-example-cols [class^="col"]>*,.bd-example-cssgrid [class*="grid"]>*{padding-top:.75rem;padding-bottom:.75rem;background-color:rgba(var(--bd-violet-rgb), 0.15);border:1px solid rgba(var(--bd-violet-rgb), 0.3)}.bd-example-row .row+.row,.bd-example-cssgrid .grid+.grid{margin-top:1rem}.bd-example-row-flex-cols .row{min-height:10rem;background-color:rgba(var(--bd-violet-rgb), 0.15)}.bd-example-flex div:not(.vr){background-color:rgba(var(--bd-violet-rgb), 0.15);border:1px solid rgba(var(--bd-violet-rgb), 0.3)}.example-container{width:800px;--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-right:auto;margin-left:auto}.example-row{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-.5 * var(--bs-gutter-x));margin-left:calc(-.5 * var(--bs-gutter-x))}.example-content-main{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}@media (min-width: 576px){.example-content-main{flex:0 0 auto;width:50%}}@media (min-width: 992px){.example-content-main{flex:0 0 auto;width:66.666667%}}.example-content-secondary{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}@media (min-width: 576px){.example-content-secondary{flex:0 0 auto;width:50%}}@media (min-width: 992px){.example-content-secondary{flex:0 0 auto;width:33.333333%}}.bd-example-ratios .ratio{display:inline-block;width:10rem;color:var(--bs-secondary-color);background-color:var(--bs-tertiary-bg);border:var(--bs-border-width) solid var(--bs-border-color)}.bd-example-ratios .ratio>div{display:flex;align-items:center;justify-content:center}.bd-example-ratios-breakpoint .ratio-4x3{width:16rem}@media (min-width: 768px){.bd-example-ratios-breakpoint .ratio-4x3{--bs-aspect-ratio: 50%}}.bd-example-offcanvas .offcanvas{position:static;display:block;height:200px;visibility:visible;transform:translate(0)}.tooltip-demo a{white-space:nowrap}.tooltip-demo .btn{margin:.25rem .125rem}.custom-tooltip{--bs-tooltip-bg: var(--bs-primary)}.custom-popover{--bs-popover-max-width: 200px;--bs-popover-border-color: var(--bs-primary);--bs-popover-header-bg: var(--bs-primary);--bs-popover-header-color: var(--bs-white);--bs-popover-body-padding-x: 1rem;--bs-popover-body-padding-y: .5rem}.scrollspy-example{height:200px;margin-top:.5rem;overflow:auto}.scrollspy-example-2{height:350px;overflow:auto}.simple-list-example-scrollspy .active{background-color:rgba(var(--bd-violet-rgb), 0.15)}.bd-example-border-utils [class^="border"]{display:inline-block;width:5rem;height:5rem;margin:.25rem;background-color:var(--bs-tertiary-bg)}.bd-example-rounded-utils [class*="rounded"]{margin:.25rem}.bd-example-position-utils{position:relative;padding:2rem}.bd-example-position-utils .position-relative{height:200px;background-color:var(--bs-tertiary-bg)}.bd-example-position-utils .position-absolute{width:2rem;height:2rem;background-color:var(--bs-body-color);border-radius:.375rem}.bd-example-position-examples::after{content:none}.bd-example-placeholder-cards::after{display:none}.bd-example-placeholder-cards .card{width:18rem}.bd-example-toasts{min-height:240px}.bd-example-zindex-levels{min-height:15rem}.bd-example-zindex-levels>div{color:var(--bs-body-bg);background-color:var(--bd-violet);border:1px solid var(--bd-purple)}.bd-example-zindex-levels>div>span{position:absolute;right:5px;bottom:0}.bd-example-zindex-levels>:nth-child(2){top:3rem;left:3rem}.bd-example-zindex-levels>:nth-child(3){top:4.5rem;left:4.5rem}.bd-example-zindex-levels>:nth-child(4){top:6rem;left:6rem}.bd-example-zindex-levels>:nth-child(5){top:7.5rem;left:7.5rem}.highlight{position:relative;padding:0.75rem 1.5rem;margin-bottom:1rem;background-color:var(--bd-pre-bg)}@media (min-width: 768px){.highlight{padding:.75rem 1.25rem;border-radius:var(--bs-border-radius)}}.highlight pre{padding:.25rem 0 .875rem;margin-top:.8125rem;margin-right:1.875rem;margin-bottom:0;overflow:overlay;white-space:pre;background-color:transparent;border:0}.highlight pre code{font-size:inherit;color:var(--bs-body-color);word-wrap:normal}.bd-code-snippet{margin:0 -1.5rem 1rem}.bd-code-snippet .highlight{margin-bottom:0;border-top-left-radius:0;border-top-right-radius:0}.bd-code-snippet .bd-example{margin:0;border:0}@media (min-width: 768px){.bd-code-snippet{margin-right:0;margin-left:0;border-radius:.375rem}}.highlight-toolbar{background-color:var(--bd-pre-bg)}.bd-scss-docs .highlight-toolbar{border-top-left-radius:calc(var(--bs-border-radius) + 1px);border-top-right-radius:calc(var(--bs-border-radius) + 1px)}.btn-bd-primary{--bs-btn-font-weight: 600;--bs-btn-color: var(--bs-white);--bs-btn-bg: var(--bd-violet-bg);--bs-btn-border-color: var(--bd-violet-bg);--bs-btn-hover-color: var(--bs-white);--bs-btn-hover-bg: #6528e0;--bs-btn-hover-border-color: #6528e0;--bs-btn-focus-shadow-rgb: var(--bd-violet-rgb);--bs-btn-active-color: var(--bs-btn-hover-color);--bs-btn-active-bg: #5a23c8;--bs-btn-active-border-color: #5a23c8}.btn-bd-accent{--bs-btn-font-weight: 600;--bs-btn-color: var(--bd-accent);--bs-btn-border-color: var(--bd-accent);--bs-btn-hover-color: var(--bd-dark);--bs-btn-hover-bg: var(--bd-accent);--bs-btn-hover-border-color: var(--bd-accent);--bs-btn-focus-shadow-rgb: var(--bd-accent-rgb);--bs-btn-active-color: var(--bs-btn-hover-color);--bs-btn-active-bg: var(--bs-btn-hover-bg);--bs-btn-active-border-color: var(--bs-btn-hover-border-color)}.btn-bd-light{--btn-custom-color: #9461fb;--bs-btn-color: var(--bs-gray-600);--bs-btn-border-color: var(--bs-border-color);--bs-btn-hover-color: var(--btn-custom-color);--bs-btn-hover-border-color: var(--btn-custom-color);--bs-btn-active-color: var(--btn-custom-color);--bs-btn-active-bg: var(--bs-white);--bs-btn-active-border-color: var(--btn-custom-color);--bs-btn-focus-border-color: var(--btn-custom-color);--bs-btn-focus-shadow-rgb: var(--bd-violet-rgb)}.bd-btn-lg{--bs-btn-border-radius: .5rem;padding:.8125rem 2rem}.bd-callout{--bs-link-color-rgb: var(--bd-callout-link);--bs-code-color: var(--bd-callout-code-color);padding:1.25rem;margin-top:1.25rem;margin-bottom:1.25rem;color:var(--bd-callout-color, inherit);background-color:var(--bd-callout-bg, var(--bs-gray-100));border-left:0.25rem solid var(--bd-callout-border, var(--bs-gray-300))}.bd-callout h4,.bd-callout .h4{margin-bottom:.25rem}.bd-callout>:last-child{margin-bottom:0}.bd-callout+.bd-callout{margin-top:-.25rem}.bd-callout .highlight{background-color:rgba(0,0,0,0.05)}.bd-callout-info{--bd-callout-color: var(--bs-info-text-emphasis);--bd-callout-bg: var(--bs-info-bg-subtle);--bd-callout-border: var(--bs-info-border-subtle)}.bd-callout-warning{--bd-callout-color: var(--bs-warning-text-emphasis);--bd-callout-bg: var(--bs-warning-bg-subtle);--bd-callout-border: var(--bs-warning-border-subtle)}.bd-callout-danger{--bd-callout-color: var(--bs-danger-text-emphasis);--bd-callout-bg: var(--bs-danger-bg-subtle);--bd-callout-border: var(--bs-danger-border-subtle)}.bd-brand-logos{color:#712cf9}.bd-brand-logos .inverse{color:#fff;background-color:#712cf9}.bd-brand-item+.bd-brand-item{border-top:1px solid var(--bs-border-color)}@media (min-width: 768px){.bd-brand-item+.bd-brand-item{border-top:0;border-left:1px solid var(--bs-border-color)}}.color-swatches{margin:0 -5px}.color-swatches .bd-purple{background-color:#4c0bce}.color-swatches .bd-purple-light{background-color:#d5c1fd}.color-swatches .bd-purple-lighter{background-color:#e5e1ea}.color-swatches .bd-gray{background-color:#f9f9f9}.color-swatch{width:4rem;height:4rem}@media (min-width: 768px){.color-swatch{width:6rem;height:6rem}}.swatch-blue{color:#fff;background-color:#0d6efd}.swatch-blue::after{position:absolute;top:1rem;right:1rem;padding-left:1rem;font-size:.75rem;line-height:1.35;white-space:pre;content:"4.50" "\a" "4.50" "\a" "4.66";background-color:#0d6efd;background-image:linear-gradient(to bottom, transparent 0.25rem, #fff 0.25rem 0.75rem, transparent 0.75rem 1.25rem, #fff 1.25rem 1.75rem, transparent 1.75rem 2.25rem, #000 2.25rem 2.75rem, transparent 2.75rem);background-repeat:no-repeat;background-size:.5rem 100%}.swatch-indigo{color:#fff;background-color:#6610f2}.swatch-indigo::after{position:absolute;top:1rem;right:1rem;padding-left:1rem;font-size:.75rem;line-height:1.35;white-space:pre;content:"7.18" "\a" "7.18" "\a" "2.92";background-color:#6610f2;background-image:linear-gradient(to bottom, transparent 0.25rem, #fff 0.25rem 0.75rem, transparent 0.75rem 1.25rem, #fff 1.25rem 1.75rem, transparent 1.75rem 2.25rem, #000 2.25rem 2.75rem, transparent 2.75rem);background-repeat:no-repeat;background-size:.5rem 100%}.swatch-purple{color:#fff;background-color:#6f42c1}.swatch-purple::after{position:absolute;top:1rem;right:1rem;padding-left:1rem;font-size:.75rem;line-height:1.35;white-space:pre;content:"6.51" "\a" "6.51" "\a" "3.22";background-color:#6f42c1;background-image:linear-gradient(to bottom, transparent 0.25rem, #fff 0.25rem 0.75rem, transparent 0.75rem 1.25rem, #fff 1.25rem 1.75rem, transparent 1.75rem 2.25rem, #000 2.25rem 2.75rem, transparent 2.75rem);background-repeat:no-repeat;background-size:.5rem 100%}.swatch-pink{color:#fff;background-color:#d63384}.swatch-pink::after{position:absolute;top:1rem;right:1rem;padding-left:1rem;font-size:.75rem;line-height:1.35;white-space:pre;content:"4.50" "\a" "4.50" "\a" "4.66";background-color:#d63384;background-image:linear-gradient(to bottom, transparent 0.25rem, #fff 0.25rem 0.75rem, transparent 0.75rem 1.25rem, #fff 1.25rem 1.75rem, transparent 1.75rem 2.25rem, #000 2.25rem 2.75rem, transparent 2.75rem);background-repeat:no-repeat;background-size:.5rem 100%}.swatch-red{color:#fff;background-color:#dc3545}.swatch-red::after{position:absolute;top:1rem;right:1rem;padding-left:1rem;font-size:.75rem;line-height:1.35;white-space:pre;content:"4.52" "\a" "4.52" "\a" "4.63";background-color:#dc3545;background-image:linear-gradient(to bottom, transparent 0.25rem, #fff 0.25rem 0.75rem, transparent 0.75rem 1.25rem, #fff 1.25rem 1.75rem, transparent 1.75rem 2.25rem, #000 2.25rem 2.75rem, transparent 2.75rem);background-repeat:no-repeat;background-size:.5rem 100%}.swatch-orange{color:#000;background-color:#fd7e14}.swatch-orange::after{position:absolute;top:1rem;right:1rem;padding-left:1rem;font-size:.75rem;line-height:1.35;white-space:pre;content:"8.17" "\a" "2.57" "\a" "8.17";background-color:#fd7e14;background-image:linear-gradient(to bottom, transparent 0.25rem, #000 0.25rem 0.75rem, transparent 0.75rem 1.25rem, #fff 1.25rem 1.75rem, transparent 1.75rem 2.25rem, #000 2.25rem 2.75rem, transparent 2.75rem);background-repeat:no-repeat;background-size:.5rem 100%}.swatch-yellow{color:#000;background-color:#ffc107}.swatch-yellow::after{position:absolute;top:1rem;right:1rem;padding-left:1rem;font-size:.75rem;line-height:1.35;white-space:pre;content:"12.8" "\a" "1.63" "\a" "12.8";background-color:#ffc107;background-image:linear-gradient(to bottom, transparent 0.25rem, #000 0.25rem 0.75rem, transparent 0.75rem 1.25rem, #fff 1.25rem 1.75rem, transparent 1.75rem 2.25rem, #000 2.25rem 2.75rem, transparent 2.75rem);background-repeat:no-repeat;background-size:.5rem 100%}.swatch-green{color:#fff;background-color:#198754}.swatch-green::after{position:absolute;top:1rem;right:1rem;padding-left:1rem;font-size:.75rem;line-height:1.35;white-space:pre;content:"4.53" "\a" "4.53" "\a" "4.63";background-color:#198754;background-image:linear-gradient(to bottom, transparent 0.25rem, #fff 0.25rem 0.75rem, transparent 0.75rem 1.25rem, #fff 1.25rem 1.75rem, transparent 1.75rem 2.25rem, #000 2.25rem 2.75rem, transparent 2.75rem);background-repeat:no-repeat;background-size:.5rem 100%}.swatch-teal{color:#000;background-color:#20c997}.swatch-teal::after{position:absolute;top:1rem;right:1rem;padding-left:1rem;font-size:.75rem;line-height:1.35;white-space:pre;content:"9.86" "\a" "2.12" "\a" "9.86";background-color:#20c997;background-image:linear-gradient(to bottom, transparent 0.25rem, #000 0.25rem 0.75rem, transparent 0.75rem 1.25rem, #fff 1.25rem 1.75rem, transparent 1.75rem 2.25rem, #000 2.25rem 2.75rem, transparent 2.75rem);background-repeat:no-repeat;background-size:.5rem 100%}.swatch-cyan{color:#000;background-color:#0dcaf0}.swatch-cyan::after{position:absolute;top:1rem;right:1rem;padding-left:1rem;font-size:.75rem;line-height:1.35;white-space:pre;content:"10.7" "\a" "1.95" "\a" "10.7";background-color:#0dcaf0;background-image:linear-gradient(to bottom, transparent 0.25rem, #000 0.25rem 0.75rem, transparent 0.75rem 1.25rem, #fff 1.25rem 1.75rem, transparent 1.75rem 2.25rem, #000 2.25rem 2.75rem, transparent 2.75rem);background-repeat:no-repeat;background-size:.5rem 100%}.swatch-black{color:#fff;background-color:#000}.swatch-black::after{position:absolute;top:1rem;right:1rem;padding-left:1rem;font-size:.75rem;line-height:1.35;white-space:pre;content:"21" "\a" "21" "\a" "1";background-color:#000;background-image:linear-gradient(to bottom, transparent 0.25rem, #fff 0.25rem 0.75rem, transparent 0.75rem 1.25rem, #fff 1.25rem 1.75rem, transparent 1.75rem 2.25rem, #000 2.25rem 2.75rem, transparent 2.75rem);background-repeat:no-repeat;background-size:.5rem 100%}.swatch-white{color:#000;background-color:#fff}.swatch-white::after{position:absolute;top:1rem;right:1rem;padding-left:1rem;font-size:.75rem;line-height:1.35;white-space:pre;content:"21" "\a" "1" "\a" "21";background-color:#fff;background-image:linear-gradient(to bottom, transparent 0.25rem, #000 0.25rem 0.75rem, transparent 0.75rem 1.25rem, #fff 1.25rem 1.75rem, transparent 1.75rem 2.25rem, #000 2.25rem 2.75rem, transparent 2.75rem);background-repeat:no-repeat;background-size:.5rem 100%}.swatch-gray{color:#fff;background-color:#6c757d}.swatch-gray::after{position:absolute;top:1rem;right:1rem;padding-left:1rem;font-size:.75rem;line-height:1.35;white-space:pre;content:"4.68" "\a" "4.68" "\a" "4.47";background-color:#6c757d;background-image:linear-gradient(to bottom, transparent 0.25rem, #fff 0.25rem 0.75rem, transparent 0.75rem 1.25rem, #fff 1.25rem 1.75rem, transparent 1.75rem 2.25rem, #000 2.25rem 2.75rem, transparent 2.75rem);background-repeat:no-repeat;background-size:.5rem 100%}.swatch-gray-dark{color:#fff;background-color:#343a40}.swatch-gray-dark::after{position:absolute;top:1rem;right:1rem;padding-left:1rem;font-size:.75rem;line-height:1.35;white-space:pre;content:"11.5" "\a" "11.5" "\a" "1.82";background-color:#343a40;background-image:linear-gradient(to bottom, transparent 0.25rem, #fff 0.25rem 0.75rem, transparent 0.75rem 1.25rem, #fff 1.25rem 1.75rem, transparent 1.75rem 2.25rem, #000 2.25rem 2.75rem, transparent 2.75rem);background-repeat:no-repeat;background-size:.5rem 100%}.swatch-gray-500{color:#000;background-color:#adb5bd}.swatch-gray-500::after{position:absolute;top:1rem;right:1rem;padding-left:1rem;font-size:.75rem;line-height:1.35;white-space:pre;content:"10.1" "\a" "2.07" "\a" "10.1";background-color:#adb5bd;background-image:linear-gradient(to bottom, transparent 0.25rem, #000 0.25rem 0.75rem, transparent 0.75rem 1.25rem, #fff 1.25rem 1.75rem, transparent 1.75rem 2.25rem, #000 2.25rem 2.75rem, transparent 2.75rem);background-repeat:no-repeat;background-size:.5rem 100%}.bd-blue-100{color:#000;background-color:#cfe2ff}.bd-blue-200{color:#000;background-color:#9ec5fe}.bd-blue-300{color:#000;background-color:#6ea8fe}.bd-blue-400{color:#000;background-color:#3d8bfd}.bd-blue-500{color:#fff;background-color:#0d6efd}.bd-blue-600{color:#fff;background-color:#0a58ca}.bd-blue-700{color:#fff;background-color:#084298}.bd-blue-800{color:#fff;background-color:#052c65}.bd-blue-900{color:#fff;background-color:#031633}.bd-indigo-100{color:#000;background-color:#e0cffc}.bd-indigo-200{color:#000;background-color:#c29ffa}.bd-indigo-300{color:#000;background-color:#a370f7}.bd-indigo-400{color:#fff;background-color:#8540f5}.bd-indigo-500{color:#fff;background-color:#6610f2}.bd-indigo-600{color:#fff;background-color:#520dc2}.bd-indigo-700{color:#fff;background-color:#3d0a91}.bd-indigo-800{color:#fff;background-color:#290661}.bd-indigo-900{color:#fff;background-color:#140330}.bd-purple-100{color:#000;background-color:#e2d9f3}.bd-purple-200{color:#000;background-color:#c5b3e6}.bd-purple-300{color:#000;background-color:#a98eda}.bd-purple-400{color:#000;background-color:#8c68cd}.bd-purple-500{color:#fff;background-color:#6f42c1}.bd-purple-600{color:#fff;background-color:#59359a}.bd-purple-700{color:#fff;background-color:#432874}.bd-purple-800{color:#fff;background-color:#2c1a4d}.bd-purple-900{color:#fff;background-color:#160d27}.bd-pink-100{color:#000;background-color:#f7d6e6}.bd-pink-200{color:#000;background-color:#efadce}.bd-pink-300{color:#000;background-color:#e685b5}.bd-pink-400{color:#000;background-color:#de5c9d}.bd-pink-500{color:#fff;background-color:#d63384}.bd-pink-600{color:#fff;background-color:#ab296a}.bd-pink-700{color:#fff;background-color:#801f4f}.bd-pink-800{color:#fff;background-color:#561435}.bd-pink-900{color:#fff;background-color:#2b0a1a}.bd-red-100{color:#000;background-color:#f8d7da}.bd-red-200{color:#000;background-color:#f1aeb5}.bd-red-300{color:#000;background-color:#ea868f}.bd-red-400{color:#000;background-color:#e35d6a}.bd-red-500{color:#fff;background-color:#dc3545}.bd-red-600{color:#fff;background-color:#b02a37}.bd-red-700{color:#fff;background-color:#842029}.bd-red-800{color:#fff;background-color:#58151c}.bd-red-900{color:#fff;background-color:#2c0b0e}.bd-orange-100{color:#000;background-color:#ffe5d0}.bd-orange-200{color:#000;background-color:#fecba1}.bd-orange-300{color:#000;background-color:#feb272}.bd-orange-400{color:#000;background-color:#fd9843}.bd-orange-500{color:#000;background-color:#fd7e14}.bd-orange-600{color:#000;background-color:#ca6510}.bd-orange-700{color:#fff;background-color:#984c0c}.bd-orange-800{color:#fff;background-color:#653208}.bd-orange-900{color:#fff;background-color:#331904}.bd-yellow-100{color:#000;background-color:#fff3cd}.bd-yellow-200{color:#000;background-color:#ffe69c}.bd-yellow-300{color:#000;background-color:#ffda6a}.bd-yellow-400{color:#000;background-color:#ffcd39}.bd-yellow-500{color:#000;background-color:#ffc107}.bd-yellow-600{color:#000;background-color:#cc9a06}.bd-yellow-700{color:#000;background-color:#997404}.bd-yellow-800{color:#fff;background-color:#664d03}.bd-yellow-900{color:#fff;background-color:#332701}.bd-green-100{color:#000;background-color:#d1e7dd}.bd-green-200{color:#000;background-color:#a3cfbb}.bd-green-300{color:#000;background-color:#75b798}.bd-green-400{color:#000;background-color:#479f76}.bd-green-500{color:#fff;background-color:#198754}.bd-green-600{color:#fff;background-color:#146c43}.bd-green-700{color:#fff;background-color:#0f5132}.bd-green-800{color:#fff;background-color:#0a3622}.bd-green-900{color:#fff;background-color:#051b11}.bd-teal-100{color:#000;background-color:#d2f4ea}.bd-teal-200{color:#000;background-color:#a6e9d5}.bd-teal-300{color:#000;background-color:#79dfc1}.bd-teal-400{color:#000;background-color:#4dd4ac}.bd-teal-500{color:#000;background-color:#20c997}.bd-teal-600{color:#000;background-color:#1aa179}.bd-teal-700{color:#fff;background-color:#13795b}.bd-teal-800{color:#fff;background-color:#0d503c}.bd-teal-900{color:#fff;background-color:#06281e}.bd-cyan-100{color:#000;background-color:#cff4fc}.bd-cyan-200{color:#000;background-color:#9eeaf9}.bd-cyan-300{color:#000;background-color:#6edff6}.bd-cyan-400{color:#000;background-color:#3dd5f3}.bd-cyan-500{color:#000;background-color:#0dcaf0}.bd-cyan-600{color:#000;background-color:#0aa2c0}.bd-cyan-700{color:#fff;background-color:#087990}.bd-cyan-800{color:#fff;background-color:#055160}.bd-cyan-900{color:#fff;background-color:#032830}.bd-gray-100{color:#000;background-color:#f8f9fa}.bd-gray-200{color:#000;background-color:#e9ecef}.bd-gray-300{color:#000;background-color:#dee2e6}.bd-gray-400{color:#000;background-color:#ced4da}.bd-gray-500{color:#000;background-color:#adb5bd}.bd-gray-600{color:#fff;background-color:#6c757d}.bd-gray-700{color:#fff;background-color:#495057}.bd-gray-800{color:#fff;background-color:#343a40}.bd-gray-900{color:#fff;background-color:#212529}.bd-white{color:#000;background-color:#fff}.bd-black{color:#fff;background-color:#000}.bd-clipboard,.bd-edit{position:relative;display:none;float:right}.bd-clipboard+.highlight,.bd-edit+.highlight{margin-top:0}@media (min-width: 768px){.bd-clipboard,.bd-edit{display:block}}.btn-clipboard,.btn-edit{display:block;padding:.5em;line-height:1;color:var(--bs-body-color);background-color:var(--bd-pre-bg);border:0;border-radius:.25rem}.btn-clipboard:hover,.btn-edit:hover{color:var(--bs-link-hover-color)}.btn-clipboard:focus,.btn-edit:focus{z-index:3}.btn-clipboard{position:relative;z-index:2;margin-top:1.25rem;margin-right:.75rem}.bd-placeholder-img{font-size:1.125rem;-webkit-user-select:none;-moz-user-select:none;user-select:none;text-anchor:middle}.bd-placeholder-img-lg{font-size:calc(1.475rem + 2.7vw)}@media (min-width: 1200px){.bd-placeholder-img-lg{font-size:3.5rem}}main a,main button,main h2,main .h2,main h3,main .h3,main h4,main .h4,main [tabindex="0"]{scroll-margin-top:80px;scroll-margin-bottom:100px}:root,[data-bs-theme="light"]{--base02: #c8c8fa;--base03: #565c64;--base04: #666;--base05: #333;--base06: #fff;--base07: #13795b;--base08: #c6303e;--base09: #087990;--base0A: #6f42c1;--base0B: #084298;--base0C: #084298;--base0D: #6f42c1;--base0E: #ab296a;--base0F: #333}[data-bs-theme="dark"]{--base02: #3e4451;--base03: #868e96;--base04: #868e96;--base05: #abb2bf;--base06: #b6bdca;--base07: #feb272;--base08: #6edff6;--base09: #feb272;--base0A: #ffe69c;--base0B: #79dfc1;--base0C: #79dfc1;--base0D: #6ea8fe;--base0E: #c29ffa;--base0F: #ea868f}.hl{background-color:var(--base02)}.c{color:var(--base03)}.err{color:var(--base08)}.k{color:var(--base0E)}.l{color:var(----base09)}.n{color:var(--base08)}.o{color:var(--base05)}.p{color:var(--base05)}.cm{color:var(--base04)}.cp{color:var(--base08)}.c1{color:var(--base03)}.cs{color:var(--base04)}.gd{color:var(--base08)}.ge{font-style:italic}.gh{font-weight:600;color:#fff}.gi{color:var(--bs-success)}.gp{font-weight:600;color:var(--base04)}.gs{font-weight:600}.gu{font-weight:600;color:var(--base0C)}.kc{color:var(--base0E)}.kd{color:var(--base0E)}.kn{color:var(--base0C)}.kp{color:var(--base0E)}.kr{color:var(--base0E)}.kt{color:var(--base0A)}.ld{color:var(--base0C)}.m{color:var(--base09)}.s{color:var(--base0C)}.na{color:var(--base0A)}.nb{color:var(--base05)}.nc{color:var(--base07)}.no{color:var(--base08)}.nd{color:var(--base07)}.ni{color:var(--base08)}.ne{color:var(--base08)}.nf{color:var(--base0B)}.nl{color:var(--base05)}.nn{color:var(--base0A)}.nx{color:var(--base0A)}.py{color:var(--base08)}.nt{color:var(--base08)}.nv{color:var(--base08)}.ow{color:var(--base0C)}.w{color:#fff}.mf{color:var(--base09)}.mh{color:var(--base09)}.mi{color:var(--base09)}.mo{color:var(--base09)}.sb{color:var(--base0C)}.sc{color:#fff}.sd{color:var(--base04)}.s2{color:var(--base0C)}.se{color:var(--base09)}.sh{color:var(--base0C)}.si{color:var(--base09)}.sx{color:var(--base0C)}.sr{color:var(--base0C)}.s1{color:var(--base0C)}.ss{color:var(--base0C)}.bp{color:var(--base05)}.vc{color:var(--base08)}.vg{color:var(--base08)}.vi{color:var(--base08)}.il{color:var(--base09)}.m+.o{color:var(--base03)}.language-sh .c{color:var(--base03)}.chroma .language-bash .line::before,.chroma .language-sh .line::before{color:var(--base03);content:"$ ";-webkit-user-select:none;-moz-user-select:none;user-select:none}.chroma .language-powershell::before{color:var(--base0C);content:"PM> ";-webkit-user-select:none;-moz-user-select:none;user-select:none}.anchor-link{padding:0 .175rem;font-weight:400;color:rgba(13,110,253,0.5);text-decoration:none;opacity:0;transition:color 0.15s ease-in-out,opacity 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.anchor-link{transition:none}}.anchor-link::after{content:"#"}.anchor-link:focus,.anchor-link:hover,:hover>.anchor-link,:target>.anchor-link{color:#0d6efd;text-decoration:none;opacity:1}a{text-decoration:none}blockquote{display:block;border-width:2px 0;border-style:solid;border-color:#dee2e6;padding:1.5em 0 0.5em;margin:1.5em 0;position:relative}blockquote:before{content:'\201C';position:absolute;top:1rem;left:50%;transform:translate(-50%, -50%);width:3rem;height:2rem;font-size:x-large;text-align:center}h1,.h1,h2,.h2,h3,.h3,h4,.h4,h5,.h5,h6,.h6{margin:0;padding-top:0.5em;padding-bottom:0.17em;overflow:hidden}h1,.h1,h2,.h2,h3,.h3{margin-bottom:0.6em;border-bottom:1px solid #ced4da}h4,.h4,h5,.h5,h6,.h6{font-weight:bold}h3,.h3,h4,.h4,h5,.h5{margin-bottom:0.3em}h1,.h1{font-size:188%}h2,.h2{font-size:150%}h3,.h3{font-size:128%}h4,.h4{font-size:116%}h5,.h5{font-size:108%}h6,.h6{font-size:100%}img{max-width:100%;height:auto}pre{border-width:2px;border-style:solid;border-radius:0.50rem}article table{width:100%;border-collapse:collapse;margin-bottom:1em}article table thead>tr>th{color:#f8f9fa;background-color:#161b22}article table thead>tr>th,article table tbody>tr>td{text-align:left;padding:5px 10px;border-width:1px;border-style:solid}#scrollButton{display:none;position:fixed;bottom:20px;right:30px;z-index:99;font-size:18px;border:none;outline:none;background-color:rgba(255,255,255,0.5);color:rgba(22,27,34,0.5);cursor:pointer;padding:6px;border-radius:50%}#scrollButton:hover{background-color:rgba(255,255,255,0.8)}.navbar-brand img{height:30px}.youtube-embed__container{margin-bottom:1rem;aspect-ratio:16/9}.youtube-embed__container--rounded{border-radius:1rem;overflow:hidden;z-index:1}.youtube-embed__container iframe{width:100%;height:100%}@supports not (aspect-ratio: 16/9){.youtube-embed__container{position:relative;padding-bottom:56.25%;padding-top:30px;height:0;overflow:hidden}.youtube-embed__container iframe{position:absolute;top:0;left:0;width:100%;height:100%}}[data-bs-theme="light"]{--bs-body-bg: $body-bg;--bs-body-color: $body-color}[data-bs-theme="light"] h1,[data-bs-theme="light"] .h1,[data-bs-theme="light"] h2,[data-bs-theme="light"] .h2,[data-bs-theme="light"] h3,[data-bs-theme="light"] .h3{color:#212529}[data-bs-theme="light"] pre,[data-bs-theme="light"] table,[data-bs-theme="light"] thead,[data-bs-theme="light"] th,[data-bs-theme="light"] td{border-color:#dee2e6}[data-bs-theme="dark"]{--bs-body-bg-dark: $body-bg-dark;--bs-body-color-dark: $body-color-dark}[data-bs-theme="dark"] h1,[data-bs-theme="dark"] .h1,[data-bs-theme="dark"] h2,[data-bs-theme="dark"] .h2,[data-bs-theme="dark"] h3,[data-bs-theme="dark"] .h3{color:#c9d1d9}[data-bs-theme="dark"] pre,[data-bs-theme="dark"] table,[data-bs-theme="dark"] thead,[data-bs-theme="dark"] th,[data-bs-theme="dark"] td{border-color:#343a40} + +/*# sourceMappingURL=style.min.css.map */ \ No newline at end of file diff --git a/assets/css/style.min.css.map b/assets/css/style.min.css.map new file mode 100644 index 00000000..6d13d95e --- /dev/null +++ b/assets/css/style.min.css.map @@ -0,0 +1,98 @@ +{ + "version": 3, + "file": "style.min.css", + "sources": [ + "../../../assets/scss/style.scss", + "../../../assets/scss/_variables.scss", + "../../../.bootstrap/scss/bootstrap.scss", + "../../../.bootstrap/scss/mixins/_banner.scss", + "../../../.bootstrap/scss/_functions.scss", + "../../../.bootstrap/scss/_variables.scss", + "../../../.bootstrap/scss/_variables-dark.scss", + "../../../.bootstrap/scss/_maps.scss", + "../../../.bootstrap/scss/_mixins.scss", + "../../../.bootstrap/scss/vendor/_rfs.scss", + "../../../.bootstrap/scss/mixins/_deprecate.scss", + "../../../.bootstrap/scss/mixins/_breakpoints.scss", + "../../../.bootstrap/scss/mixins/_color-mode.scss", + "../../../.bootstrap/scss/mixins/_color-scheme.scss", + "../../../.bootstrap/scss/mixins/_image.scss", + "../../../.bootstrap/scss/mixins/_resize.scss", + "../../../.bootstrap/scss/mixins/_visually-hidden.scss", + "../../../.bootstrap/scss/mixins/_reset-text.scss", + "../../../.bootstrap/scss/mixins/_text-truncate.scss", + "../../../.bootstrap/scss/mixins/_utilities.scss", + "../../../.bootstrap/scss/mixins/_backdrop.scss", + "../../../.bootstrap/scss/mixins/_buttons.scss", + "../../../.bootstrap/scss/mixins/_caret.scss", + "../../../.bootstrap/scss/mixins/_pagination.scss", + "../../../.bootstrap/scss/mixins/_lists.scss", + "../../../.bootstrap/scss/mixins/_forms.scss", + "../../../.bootstrap/scss/mixins/_table-variants.scss", + "../../../.bootstrap/scss/mixins/_border-radius.scss", + "../../../.bootstrap/scss/mixins/_box-shadow.scss", + "../../../.bootstrap/scss/mixins/_gradients.scss", + "../../../.bootstrap/scss/mixins/_transition.scss", + "../../../.bootstrap/scss/mixins/_clearfix.scss", + "../../../.bootstrap/scss/mixins/_container.scss", + "../../../.bootstrap/scss/mixins/_grid.scss", + "../../../.bootstrap/scss/_utilities.scss", + "../../../.bootstrap/scss/_root.scss", + "../../../.bootstrap/scss/_reboot.scss", + "../../../.bootstrap/scss/_type.scss", + "../../../.bootstrap/scss/_images.scss", + "../../../.bootstrap/scss/_containers.scss", + "../../../.bootstrap/scss/_grid.scss", + "../../../.bootstrap/scss/_tables.scss", + "../../../.bootstrap/scss/_forms.scss", + "../../../.bootstrap/scss/forms/_labels.scss", + "../../../.bootstrap/scss/forms/_form-text.scss", + "../../../.bootstrap/scss/forms/_form-control.scss", + "../../../.bootstrap/scss/forms/_form-select.scss", + "../../../.bootstrap/scss/forms/_form-check.scss", + "../../../.bootstrap/scss/forms/_form-range.scss", + "../../../.bootstrap/scss/forms/_floating-labels.scss", + "../../../.bootstrap/scss/forms/_input-group.scss", + "../../../.bootstrap/scss/forms/_validation.scss", + "../../../.bootstrap/scss/_buttons.scss", + "../../../.bootstrap/scss/_transitions.scss", + "../../../.bootstrap/scss/_dropdown.scss", + "../../../.bootstrap/scss/_button-group.scss", + "../../../.bootstrap/scss/_nav.scss", + "../../../.bootstrap/scss/_navbar.scss", + "../../../.bootstrap/scss/_card.scss", + "../../../.bootstrap/scss/_accordion.scss", + "../../../.bootstrap/scss/_breadcrumb.scss", + "../../../.bootstrap/scss/_pagination.scss", + "../../../.bootstrap/scss/_badge.scss", + "../../../.bootstrap/scss/_alert.scss", + "../../../.bootstrap/scss/_progress.scss", + "../../../.bootstrap/scss/_list-group.scss", + "../../../.bootstrap/scss/_close.scss", + "../../../.bootstrap/scss/_toasts.scss", + "../../../.bootstrap/scss/_modal.scss", + "../../../.bootstrap/scss/_tooltip.scss", + "../../../.bootstrap/scss/_popover.scss", + "../../../.bootstrap/scss/_carousel.scss", + "../../../.bootstrap/scss/_spinners.scss", + "../../../.bootstrap/scss/_offcanvas.scss", + "../../../.bootstrap/scss/_placeholders.scss", + "../../../.bootstrap/scss/_helpers.scss", + "../../../.bootstrap/scss/helpers/_clearfix.scss", + "../../../.bootstrap/scss/helpers/_color-bg.scss", + "../../../.bootstrap/scss/helpers/_colored-links.scss", + "../../../.bootstrap/scss/helpers/_focus-ring.scss", + "../../../.bootstrap/scss/helpers/_icon-link.scss", + "../../../.bootstrap/scss/helpers/_ratio.scss", + "../../../.bootstrap/scss/helpers/_position.scss", + "../../../.bootstrap/scss/helpers/_stacks.scss", + "../../../.bootstrap/scss/helpers/_visually-hidden.scss", + "../../../.bootstrap/scss/helpers/_stretched-link.scss", + "../../../.bootstrap/scss/helpers/_text-truncation.scss", + "../../../.bootstrap/scss/helpers/_vr.scss", + "../../../.bootstrap/scss/utilities/_api.scss", + "../../../assets/scss/_docs.scss" + ], + "names": [], + "mappings": "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AC,OAAO,CAAE,AAAD,AAAA,YAAY,AAAA,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAE,AAAD,AAAA,YAAY,AAAA,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAE,AAAD,AAAA,YAAY,AAAA,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAE,AAAD,AAAA,YAAY,AAAA,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAE,AAAD,AAAA,YAAY,AAAA,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAE,AAAD,AAAA,YAAY,AAAA,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAE,AAAD,AAAA,YAAY,AAAA,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAE,AAAD,AAAA,YAAY,AAAA,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAE,AAAD,AAAA,YAAY,AAAA,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAE,AAAD,AAAA,YAAY,AAAA,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAE,AAAD,AAAA,YAAY,AAAA,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAE,AAAD,AAAA,YAAY,AAAA,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAE,AAAD,AAAA,YAAY,AAAA,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAE,AAAD,AAAA,YAAY,AAAA,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAE,AAAD,AAAA,YAAY,AAAA,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAE,AAAD,AAAA,YAAY,AAAA,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAE,AAAD,AAAA,YAAY,AAAA,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAE,AAAD,AAAA,YAAY,AAAA,CAAC,KAAK,CAAC,IAAI,CAAC,gBA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,CAAC,KAAK,CAAC,aAAa,CAAE,AAAD,AAAA,GAAG,AAAA,CAAC,KAAK,CAAC,aAAa,CAAE,AAAD,AAAA,GAAG,AAAA,CAAC,KAAK,CAAC,aAAa,CAAE,AAAD,AAAA,GAAG,AAAA,CAAC,KAAK,CAAC,aAAa,CAAE,AAAD,AAAA,GAAG,AAAA,CAAC,KAAK,CAAC,aAAa,CAAE,AAAD,AAAA,GAAG,AAAA,CAAC,KAAK,CAAC,aAAa,CAAE,AAAD,AAAA,GAAG,AAAA,CAAC,KAAK,CAAC,aAAa,CAAE,AAAD,AAAA,GAAG,AAAA,CAAC,KAAK,CAAC,aAAa,CAAE,AAAD,AAAA,GAAG,AAAA,CAAC,KAAK,CAAC,aAAa,CAAE,AAAD,AAAA,GAAG,AAAA,CAAC,KAAK,CAAC,aAAa,CAAE,AAAD,AAAA,GAAG,AAAA,CAAC,KAAK,CAAC,aAAa,CAAE,AAAD,AAAA,GAAG,AAAA,CAAC,KAAK,CAAC,aAAa,CAAE,AAAD,AAAA,GAAG,AAAA,CAAC,KAAK,CAAC,aAAa,CAAE,AAAD,AAAA,GAAG,AAAA,CAAC,KAAK,CAAC,aAAa,CAAE,AAAD,AAAA,GAAG,AAAA,CAAC,KAAK,CAAC,aAAa,CAAE,AAAD,AAAA,GAAG,AAAA,CAAC,KAAK,CAAC,aAAa,CAAE,AAAD,AAAA,EAAE,AAAA,CAAC,KAAK,CAAC,IAAI,CAAE,AAAD,AAAA,GAAG,AAAA,CAAC,KAAK,CAAC,aAAa,CAAE,AAAD,AAAA,GAAG,AAAA,CAAC,KAAK,CAAC,aAAa,CAAE,AAAD,AAAA,GAAG,AAAA,CAAC,KAAK,CAAC,aAAa,CAAE,AAAD,AAAA,GAAG,AAAA,CAAC,KAAK,CAAC,aAAa,CAAE,AAAD,AAAA,GAAG,AAAA,CAAC,KAAK,CAAC,aAAa,CAAE,AAAD,AAAA,GAAG,AAAA,CAAC,KAAK,CAAC,IAAI,CAAE,AAAD,AAAA,GAAG,AAAA,CAAC,KAAK,CAAC,aAAa,CAAE,AAAD,AAAA,GAAG,AAAA,CAAC,KAAK,CAAC,aAAa,CAAE,AAAD,AAAA,GAAG,AAAA,CAAC,KAAK,CAAC,aAAa,CAAE,AAAD,AAAA,GAAG,AAAA,CAAC,KAAK,CAAC,aAAa,CAAE,AAAD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" +} \ No newline at end of file diff --git a/assets/css/v4-font-face.min.css b/assets/css/v4-font-face.min.css new file mode 100644 index 00000000..dadd6c56 --- /dev/null +++ b/assets/css/v4-font-face.min.css @@ -0,0 +1,6 @@ +/*! + * Font Awesome Free 6.5.1 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2023 Fonticons, Inc. + */ +@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype");unicode-range:u+f003,u+f006,u+f014,u+f016-f017,u+f01a-f01b,u+f01d,u+f022,u+f03e,u+f044,u+f046,u+f05c-f05d,u+f06e,u+f070,u+f087-f088,u+f08a,u+f094,u+f096-f097,u+f09d,u+f0a0,u+f0a2,u+f0a4-f0a7,u+f0c5,u+f0c7,u+f0e5-f0e6,u+f0eb,u+f0f6-f0f8,u+f10c,u+f114-f115,u+f118-f11a,u+f11c-f11d,u+f133,u+f147,u+f14e,u+f150-f152,u+f185-f186,u+f18e,u+f190-f192,u+f196,u+f1c1-f1c9,u+f1d9,u+f1db,u+f1e3,u+f1ea,u+f1f7,u+f1f9,u+f20a,u+f247-f248,u+f24a,u+f24d,u+f255-f25b,u+f25d,u+f271-f274,u+f278,u+f27b,u+f28c,u+f28e,u+f29c,u+f2b5,u+f2b7,u+f2ba,u+f2bc,u+f2be,u+f2c0-f2c1,u+f2c3,u+f2d0,u+f2d2,u+f2d4,u+f2dc}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-v4compatibility.woff2) format("woff2"),url(../webfonts/fa-v4compatibility.ttf) format("truetype");unicode-range:u+f041,u+f047,u+f065-f066,u+f07d-f07e,u+f080,u+f08b,u+f08e,u+f090,u+f09a,u+f0ac,u+f0ae,u+f0b2,u+f0d0,u+f0d6,u+f0e4,u+f0ec,u+f10a-f10b,u+f123,u+f13e,u+f148-f149,u+f14c,u+f156,u+f15e,u+f160-f161,u+f163,u+f175-f178,u+f195,u+f1f8,u+f219,u+f27a} \ No newline at end of file diff --git a/assets/ico/android-chrome-192x192.png b/assets/ico/android-chrome-192x192.png new file mode 100644 index 00000000..f9eba511 Binary files /dev/null and b/assets/ico/android-chrome-192x192.png differ diff --git a/assets/ico/android-chrome-256x256.png b/assets/ico/android-chrome-256x256.png new file mode 100644 index 00000000..bfad9b31 Binary files /dev/null and b/assets/ico/android-chrome-256x256.png differ diff --git a/assets/ico/apple-touch-icon-114x114-precomposed.png b/assets/ico/apple-touch-icon-114x114-precomposed.png new file mode 100644 index 00000000..5f3809cc Binary files /dev/null and b/assets/ico/apple-touch-icon-114x114-precomposed.png differ diff --git a/assets/ico/apple-touch-icon-114x114.png b/assets/ico/apple-touch-icon-114x114.png new file mode 100644 index 00000000..1ff9abb3 Binary files /dev/null and b/assets/ico/apple-touch-icon-114x114.png differ diff --git a/assets/ico/apple-touch-icon-120x120-precomposed.png b/assets/ico/apple-touch-icon-120x120-precomposed.png new file mode 100644 index 00000000..15351025 Binary files /dev/null and b/assets/ico/apple-touch-icon-120x120-precomposed.png differ diff --git a/assets/ico/apple-touch-icon-120x120.png b/assets/ico/apple-touch-icon-120x120.png new file mode 100644 index 00000000..91da3745 Binary files /dev/null and b/assets/ico/apple-touch-icon-120x120.png differ diff --git a/assets/ico/apple-touch-icon-144x144-precomposed.png b/assets/ico/apple-touch-icon-144x144-precomposed.png new file mode 100644 index 00000000..99e43ece Binary files /dev/null and b/assets/ico/apple-touch-icon-144x144-precomposed.png differ diff --git a/assets/ico/apple-touch-icon-144x144.png b/assets/ico/apple-touch-icon-144x144.png new file mode 100644 index 00000000..16221d5b Binary files /dev/null and b/assets/ico/apple-touch-icon-144x144.png differ diff --git a/assets/ico/apple-touch-icon-152x152-precomposed.png b/assets/ico/apple-touch-icon-152x152-precomposed.png new file mode 100644 index 00000000..a447e365 Binary files /dev/null and b/assets/ico/apple-touch-icon-152x152-precomposed.png differ diff --git a/assets/ico/apple-touch-icon-152x152.png b/assets/ico/apple-touch-icon-152x152.png new file mode 100644 index 00000000..b1296c17 Binary files /dev/null and b/assets/ico/apple-touch-icon-152x152.png differ diff --git a/assets/ico/apple-touch-icon-180x180-precomposed.png b/assets/ico/apple-touch-icon-180x180-precomposed.png new file mode 100644 index 00000000..64456714 Binary files /dev/null and b/assets/ico/apple-touch-icon-180x180-precomposed.png differ diff --git a/assets/ico/apple-touch-icon-180x180.png b/assets/ico/apple-touch-icon-180x180.png new file mode 100644 index 00000000..3265e158 Binary files /dev/null and b/assets/ico/apple-touch-icon-180x180.png differ diff --git a/assets/ico/apple-touch-icon-57x57-precomposed.png b/assets/ico/apple-touch-icon-57x57-precomposed.png new file mode 100644 index 00000000..f0ead00c Binary files /dev/null and b/assets/ico/apple-touch-icon-57x57-precomposed.png differ diff --git a/assets/ico/apple-touch-icon-57x57.png b/assets/ico/apple-touch-icon-57x57.png new file mode 100644 index 00000000..c521bb6f Binary files /dev/null and b/assets/ico/apple-touch-icon-57x57.png differ diff --git a/assets/ico/apple-touch-icon-60x60-precomposed.png b/assets/ico/apple-touch-icon-60x60-precomposed.png new file mode 100644 index 00000000..ab71dd95 Binary files /dev/null and b/assets/ico/apple-touch-icon-60x60-precomposed.png differ diff --git a/assets/ico/apple-touch-icon-60x60.png b/assets/ico/apple-touch-icon-60x60.png new file mode 100644 index 00000000..dcf4800e Binary files /dev/null and b/assets/ico/apple-touch-icon-60x60.png differ diff --git a/assets/ico/apple-touch-icon-72x72-precomposed.png b/assets/ico/apple-touch-icon-72x72-precomposed.png new file mode 100644 index 00000000..c39aaae7 Binary files /dev/null and b/assets/ico/apple-touch-icon-72x72-precomposed.png differ diff --git a/assets/ico/apple-touch-icon-72x72.png b/assets/ico/apple-touch-icon-72x72.png new file mode 100644 index 00000000..42948ec5 Binary files /dev/null and b/assets/ico/apple-touch-icon-72x72.png differ diff --git a/assets/ico/apple-touch-icon-76x76-precomposed.png b/assets/ico/apple-touch-icon-76x76-precomposed.png new file mode 100644 index 00000000..f7f2ec85 Binary files /dev/null and b/assets/ico/apple-touch-icon-76x76-precomposed.png differ diff --git a/assets/ico/apple-touch-icon-76x76.png b/assets/ico/apple-touch-icon-76x76.png new file mode 100644 index 00000000..8c9b9097 Binary files /dev/null and b/assets/ico/apple-touch-icon-76x76.png differ diff --git a/assets/ico/apple-touch-icon-precomposed.png b/assets/ico/apple-touch-icon-precomposed.png new file mode 100644 index 00000000..64456714 Binary files /dev/null and b/assets/ico/apple-touch-icon-precomposed.png differ diff --git a/assets/ico/apple-touch-icon.png b/assets/ico/apple-touch-icon.png new file mode 100644 index 00000000..3265e158 Binary files /dev/null and b/assets/ico/apple-touch-icon.png differ diff --git a/assets/ico/browserconfig.xml b/assets/ico/browserconfig.xml new file mode 100644 index 00000000..216be3ea --- /dev/null +++ b/assets/ico/browserconfig.xml @@ -0,0 +1,9 @@ + + + + + + #ffffff + + + diff --git a/assets/ico/favicon-16x16.png b/assets/ico/favicon-16x16.png new file mode 100644 index 00000000..6f5f2607 Binary files /dev/null and b/assets/ico/favicon-16x16.png differ diff --git a/assets/ico/favicon-32x32.png b/assets/ico/favicon-32x32.png new file mode 100644 index 00000000..ca7da965 Binary files /dev/null and b/assets/ico/favicon-32x32.png differ diff --git a/assets/ico/favicon.ico b/assets/ico/favicon.ico new file mode 100644 index 00000000..9b122bbe Binary files /dev/null and b/assets/ico/favicon.ico differ diff --git a/assets/ico/mstile-150x150.png b/assets/ico/mstile-150x150.png new file mode 100644 index 00000000..d8fe9be7 Binary files /dev/null and b/assets/ico/mstile-150x150.png differ diff --git a/assets/ico/safari-pinned-tab.svg b/assets/ico/safari-pinned-tab.svg new file mode 100644 index 00000000..66d9c2cb --- /dev/null +++ b/assets/ico/safari-pinned-tab.svg @@ -0,0 +1,148 @@ + + + + +Created by potrace 1.11, written by Peter Selinger 2001-2013 + + + + + + + diff --git a/assets/ico/site.webmanifest b/assets/ico/site.webmanifest new file mode 100644 index 00000000..22b6beed --- /dev/null +++ b/assets/ico/site.webmanifest @@ -0,0 +1,20 @@ +{ + "name": "SFZTools", + "short_name": "SFZTools", + "icons": [ + { + "src": "/assets/ico/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/assets/ico/android-chrome-256x256.png", + "sizes": "256x256", + "type": "image/png" + } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "start_url": "https://sfztools.github.io", + "display": "standalone" +} diff --git a/assets/img/construction.png b/assets/img/construction.png new file mode 100644 index 00000000..2dbcb658 Binary files /dev/null and b/assets/img/construction.png differ diff --git a/assets/img/emoji/unicode/1f6a7.png b/assets/img/emoji/unicode/1f6a7.png new file mode 100644 index 00000000..8f1f98cd Binary files /dev/null and b/assets/img/emoji/unicode/1f6a7.png differ diff --git a/assets/img/emoji/unicode/2714.png b/assets/img/emoji/unicode/2714.png new file mode 100644 index 00000000..27a33c35 Binary files /dev/null and b/assets/img/emoji/unicode/2714.png differ diff --git a/assets/img/emoji/unicode/274c.png b/assets/img/emoji/unicode/274c.png new file mode 100644 index 00000000..dba6a779 Binary files /dev/null and b/assets/img/emoji/unicode/274c.png differ diff --git a/assets/img/logo-dark.svg b/assets/img/logo-dark.svg new file mode 100644 index 00000000..f701bfe9 --- /dev/null +++ b/assets/img/logo-dark.svg @@ -0,0 +1,82 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + diff --git a/assets/img/logo.svg b/assets/img/logo.svg new file mode 100644 index 00000000..da6a938c --- /dev/null +++ b/assets/img/logo.svg @@ -0,0 +1,82 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + diff --git a/assets/img/nav_f.png b/assets/img/nav_f.png new file mode 100644 index 00000000..aebf3d03 Binary files /dev/null and b/assets/img/nav_f.png differ diff --git a/assets/img/nav_g.png b/assets/img/nav_g.png new file mode 100644 index 00000000..2093a237 Binary files /dev/null and b/assets/img/nav_g.png differ diff --git a/assets/img/sfizz/badge_aria.svg b/assets/img/sfizz/badge_aria.svg new file mode 100644 index 00000000..607820ea --- /dev/null +++ b/assets/img/sfizz/badge_aria.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + ARIA + + + ARIA + + + + + 45% + + + 45% + + + \ No newline at end of file diff --git a/assets/img/sfizz/badge_sfzv1.svg b/assets/img/sfizz/badge_sfzv1.svg new file mode 100644 index 00000000..083e50ca --- /dev/null +++ b/assets/img/sfizz/badge_sfzv1.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + SFZv1 + + + SFZv1 + + + + + 96% + + + 96% + + + \ No newline at end of file diff --git a/assets/img/sfizz/badge_sfzv2.svg b/assets/img/sfizz/badge_sfzv2.svg new file mode 100644 index 00000000..41922ec1 --- /dev/null +++ b/assets/img/sfizz/badge_sfzv2.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + SFZv2 + + + SFZv2 + + + + + 44% + + + 44% + + + \ No newline at end of file diff --git a/assets/img/sfizz/quickref-detune-osc.svg b/assets/img/sfizz/quickref-detune-osc.svg new file mode 100644 index 00000000..b271a498 --- /dev/null +++ b/assets/img/sfizz/quickref-detune-osc.svg @@ -0,0 +1,327 @@ + + + +Gnuplot +Produced by GNUPLOT 5.4 patchlevel 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -2 + + + + + + + + + + + + + -1.5 + + + + + + + + + + + + + -1 + + + + + + + + + + + + + -0.5 + + + + + + + + + + + + + 0 + + + + + + + + + + + + + 0.5 + + + + + + + + + + + + + 1 + + + + + + + + + + + + + 1.5 + + + + + + + + + + + + + 2 + + + + + + + + + + + + + 5.5 + + + + + + + + + + + + + 6 + + + + + + + + + + + + + 6.5 + + + + + + + + + + + + + 7 + + + + + + + + + + + + + 7.5 + + + + + + + + + Amplitude + + + + + Time + + + + + Detuned saw + + + Detuned saw + + + + + + + + + + + + + + + + + + diff --git a/assets/img/sfizz/quickref-wavetable-osc.svg b/assets/img/sfizz/quickref-wavetable-osc.svg new file mode 100644 index 00000000..0e3d8c55 --- /dev/null +++ b/assets/img/sfizz/quickref-wavetable-osc.svg @@ -0,0 +1,314 @@ + + + +Gnuplot +Produced by GNUPLOT 5.4 patchlevel 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -1.5 + + + + + + + + + + + + + -1 + + + + + + + + + + + + + -0.5 + + + + + + + + + + + + + 0 + + + + + + + + + + + + + 0.5 + + + + + + + + + + + + + 1 + + + + + + + + + + + + + 1.5 + + + + + + + + + + + + + 0 + + + + + + + + + + + + + 0.2 + + + + + + + + + + + + + 0.4 + + + + + + + + + + + + + 0.6 + + + + + + + + + + + + + 0.8 + + + + + + + + + + + + + 1 + + + + + + + + + Amplitude + + + + + Time + + + + + Wavetable + + + Wavetable + + + + + + + + + + + + + + + + + + diff --git a/assets/js/anchor.min.js b/assets/js/anchor.min.js new file mode 100644 index 00000000..1c2b86fa --- /dev/null +++ b/assets/js/anchor.min.js @@ -0,0 +1,9 @@ +// @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt Expat +// +// AnchorJS - v4.3.1 - 2021-04-17 +// https://www.bryanbraun.com/anchorjs/ +// Copyright (c) 2021 Bryan Braun; Licensed MIT +// +// @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt Expat +!function(A,e){"use strict";"function"==typeof define&&define.amd?define([],e):"object"==typeof module&&module.exports?module.exports=e():(A.AnchorJS=e(),A.anchors=new A.AnchorJS)}(this,function(){"use strict";return function(A){function d(A){A.icon=Object.prototype.hasOwnProperty.call(A,"icon")?A.icon:"",A.visible=Object.prototype.hasOwnProperty.call(A,"visible")?A.visible:"hover",A.placement=Object.prototype.hasOwnProperty.call(A,"placement")?A.placement:"right",A.ariaLabel=Object.prototype.hasOwnProperty.call(A,"ariaLabel")?A.ariaLabel:"Anchor",A.class=Object.prototype.hasOwnProperty.call(A,"class")?A.class:"",A.base=Object.prototype.hasOwnProperty.call(A,"base")?A.base:"",A.truncate=Object.prototype.hasOwnProperty.call(A,"truncate")?Math.floor(A.truncate):64,A.titleText=Object.prototype.hasOwnProperty.call(A,"titleText")?A.titleText:""}function w(A){var e;if("string"==typeof A||A instanceof String)e=[].slice.call(document.querySelectorAll(A));else{if(!(Array.isArray(A)||A instanceof NodeList))throw new TypeError("The selector provided to AnchorJS was invalid.");e=[].slice.call(A)}return e}this.options=A||{},this.elements=[],d(this.options),this.isTouchDevice=function(){return Boolean("ontouchstart"in window||window.TouchEvent||window.DocumentTouch&&document instanceof DocumentTouch)},this.add=function(A){var e,t,o,i,n,s,a,c,r,l,h,u,p=[];if(d(this.options),"touch"===(l=this.options.visible)&&(l=this.isTouchDevice()?"always":"hover"),0===(e=w(A=A||"h2, h3, h4, h5, h6")).length)return this;for(null===document.head.querySelector("style.anchorjs")&&((u=document.createElement("style")).className="anchorjs",u.appendChild(document.createTextNode("")),void 0===(A=document.head.querySelector('[rel="stylesheet"],style'))?document.head.appendChild(u):document.head.insertBefore(u,A),u.sheet.insertRule(".anchorjs-link{opacity:0;text-decoration:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}",u.sheet.cssRules.length),u.sheet.insertRule(":hover>.anchorjs-link,.anchorjs-link:focus{opacity:1}",u.sheet.cssRules.length),u.sheet.insertRule("[data-anchorjs-icon]::after{content:attr(data-anchorjs-icon)}",u.sheet.cssRules.length),u.sheet.insertRule('@font-face{font-family:anchorjs-icons;src:url(data:n/a;base64,AAEAAAALAIAAAwAwT1MvMg8yG2cAAAE4AAAAYGNtYXDp3gC3AAABpAAAAExnYXNwAAAAEAAAA9wAAAAIZ2x5ZlQCcfwAAAH4AAABCGhlYWQHFvHyAAAAvAAAADZoaGVhBnACFwAAAPQAAAAkaG10eASAADEAAAGYAAAADGxvY2EACACEAAAB8AAAAAhtYXhwAAYAVwAAARgAAAAgbmFtZQGOH9cAAAMAAAAAunBvc3QAAwAAAAADvAAAACAAAQAAAAEAAHzE2p9fDzz1AAkEAAAAAADRecUWAAAAANQA6R8AAAAAAoACwAAAAAgAAgAAAAAAAAABAAADwP/AAAACgAAA/9MCrQABAAAAAAAAAAAAAAAAAAAAAwABAAAAAwBVAAIAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAMCQAGQAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAQAAg//0DwP/AAEADwABAAAAAAQAAAAAAAAAAAAAAIAAAAAAAAAIAAAACgAAxAAAAAwAAAAMAAAAcAAEAAwAAABwAAwABAAAAHAAEADAAAAAIAAgAAgAAACDpy//9//8AAAAg6cv//f///+EWNwADAAEAAAAAAAAAAAAAAAAACACEAAEAAAAAAAAAAAAAAAAxAAACAAQARAKAAsAAKwBUAAABIiYnJjQ3NzY2MzIWFxYUBwcGIicmNDc3NjQnJiYjIgYHBwYUFxYUBwYGIwciJicmNDc3NjIXFhQHBwYUFxYWMzI2Nzc2NCcmNDc2MhcWFAcHBgYjARQGDAUtLXoWOR8fORYtLTgKGwoKCjgaGg0gEhIgDXoaGgkJBQwHdR85Fi0tOAobCgoKOBoaDSASEiANehoaCQkKGwotLXoWOR8BMwUFLYEuehYXFxYugC44CQkKGwo4GkoaDQ0NDXoaShoKGwoFBe8XFi6ALjgJCQobCjgaShoNDQ0NehpKGgobCgoKLYEuehYXAAAADACWAAEAAAAAAAEACAAAAAEAAAAAAAIAAwAIAAEAAAAAAAMACAAAAAEAAAAAAAQACAAAAAEAAAAAAAUAAQALAAEAAAAAAAYACAAAAAMAAQQJAAEAEAAMAAMAAQQJAAIABgAcAAMAAQQJAAMAEAAMAAMAAQQJAAQAEAAMAAMAAQQJAAUAAgAiAAMAAQQJAAYAEAAMYW5jaG9yanM0MDBAAGEAbgBjAGgAbwByAGoAcwA0ADAAMABAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAH//wAP) format("truetype")}',u.sheet.cssRules.length)),u=document.querySelectorAll("[id]"),t=[].map.call(u,function(A){return A.id}),i=0;i\]./()*\\\n\t\b\v\u00A0]/g,"-").replace(/-{2,}/g,"-").substring(0,this.options.truncate).replace(/^-+|-+$/gm,"").toLowerCase()},this.hasAnchorJSLink=function(A){var e=A.firstChild&&-1<(" "+A.firstChild.className+" ").indexOf(" anchorjs-link "),A=A.lastChild&&-1<(" "+A.lastChild.className+" ").indexOf(" anchorjs-link ");return e||A||!1}}}); +// @license-end \ No newline at end of file diff --git a/assets/js/base.min.js b/assets/js/base.min.js new file mode 100644 index 00000000..5c9d17f3 --- /dev/null +++ b/assets/js/base.min.js @@ -0,0 +1 @@ +function getSearchTerm(){var sPageURL=window.location.search.substring(1);var sURLVariables=sPageURL.split('&');for(var i=0;i{var e=(()=>{"use strict";return e=>{const s=e.regex,t={},n={begin:/\$\{/, +end:/\}/,contains:["self",{begin:/:-/,contains:[t]}]};Object.assign(t,{ +className:"variable",variants:[{ +begin:s.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},n]});const a={ +className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},i={ +begin:/<<-?\s*(?=\w+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/, +end:/(\w+)/,className:"string"})]}},c={className:"string",begin:/"/,end:/"/, +contains:[e.BACKSLASH_ESCAPE,t,a]};a.contains.push(c);const o={begin:/\$?\(\(/, +end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,t] +},r=e.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10 +}),l={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0, +contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0};return{ +name:"Bash",aliases:["sh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/, +keyword:["if","then","else","elif","fi","for","while","until","in","do","done","case","esac","function","select"], +literal:["true","false"], +built_in:["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset","alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","type","typeset","ulimit","unalias","set","shopt","autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp","chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"] +},contains:[r,e.SHEBANG(),l,o,e.HASH_COMMENT_MODE,i,{match:/(\/[a-z._-]+)+/},c,{ +className:"",begin:/\\"/},{className:"string",begin:/'/,end:/'/},t]}}})() +;hljs.registerLanguage("bash",e)})(); \ No newline at end of file diff --git a/assets/js/bootstrap-table-filter-control.min.js b/assets/js/bootstrap-table-filter-control.min.js new file mode 100644 index 00000000..0b7e0aeb --- /dev/null +++ b/assets/js/bootstrap-table-filter-control.min.js @@ -0,0 +1,10 @@ +/** + * bootstrap-table - An extended table to integration with some of the most widely used CSS frameworks. (Supports Bootstrap, Semantic UI, Bulma, Material Design, Foundation) + * + * @version v1.22.1 + * @homepage https://bootstrap-table.com + * @author wenzhixin (http://wenzhixin.net.cn/) + * @license MIT + */ + +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).jQuery)}(this,(function(t){"use strict";function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},e(t)}function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function n(t,e){for(var r=0;rt.length)&&(e=t.length);for(var r=0,n=new Array(e);r0&&j[0]<4?1:+(j[0]+j[1])),!E&&st&&(!(j=st.match(/Edge\/(\d+)/))||j[1]>=74)&&(j=st.match(/Chrome\/(\d+)/))&&(E=+j[1]);var vt=E,gt=vt,yt=g,bt=!!Object.getOwnPropertySymbols&&!yt((function(){var t=Symbol();return!String(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&>&><41})),mt=bt&&!Symbol.sham&&"symbol"==typeof Symbol.iterator,St=at,Ct=Z,wt=ct,Ot=Object,Tt=mt?function(t){return"symbol"==typeof t}:function(t){var e=St("Symbol");return Ct(e)&&wt(e.prototype,Ot(t))},xt=String,jt=function(t){try{return xt(t)}catch(t){return"Object"}},Et=Z,Pt=jt,kt=TypeError,It=function(t){if(Et(t))return t;throw kt(Pt(t)+" is not a function")},At=It,Rt=B,_t=function(t,e){var r=t[e];return Rt(r)?void 0:At(r)},Lt=C,Dt=Z,Ft=rt,Mt=TypeError,Nt={},$t={get exports(){return Nt},set exports(t){Nt=t}},Vt=d,Ht=Object.defineProperty,zt=function(t,e){try{Ht(Vt,t,{value:e,configurable:!0,writable:!0})}catch(r){Vt[t]=e}return e},Bt=zt,Ut="__core-js_shared__",Gt=d[Ut]||Bt(Ut,{}),Wt=Gt;($t.exports=function(t,e){return Wt[t]||(Wt[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.29.0",mode:"global",copyright:"© 2014-2023 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.29.0/LICENSE",source:"https://github.com/zloirock/core-js"});var Kt=W,qt=Object,Yt=function(t){return qt(Kt(t))},Jt=Yt,Xt=_({}.hasOwnProperty),Qt=Object.hasOwn||function(t,e){return Xt(Jt(t),e)},Zt=_,te=0,ee=Math.random(),re=Zt(1..toString),ne=function(t){return"Symbol("+(void 0===t?"":t)+")_"+re(++te+ee,36)},oe=Nt,ie=Qt,ae=ne,ce=bt,le=mt,ue=d.Symbol,se=oe("wks"),fe=le?ue.for||ue:ue&&ue.withoutSetter||ae,pe=function(t){return ie(se,t)||(se[t]=ce&&ie(ue,t)?ue[t]:fe("Symbol."+t)),se[t]},he=C,de=rt,ve=Tt,ge=_t,ye=function(t,e){var r,n;if("string"===e&&Dt(r=t.toString)&&!Ft(n=Lt(r,t)))return n;if(Dt(r=t.valueOf)&&!Ft(n=Lt(r,t)))return n;if("string"!==e&&Dt(r=t.toString)&&!Ft(n=Lt(r,t)))return n;throw Mt("Can't convert object to primitive value")},be=TypeError,me=pe("toPrimitive"),Se=function(t,e){if(!de(t)||ve(t))return t;var r,n=ge(t,me);if(n){if(void 0===e&&(e="default"),r=he(n,t,e),!de(r)||ve(r))return r;throw be("Can't convert object to primitive value")}return void 0===e&&(e="number"),ye(t,e)},Ce=Tt,we=function(t){var e=Se(t,"string");return Ce(e)?e:e+""},Oe=rt,Te=d.document,xe=Oe(Te)&&Oe(Te.createElement),je=function(t){return xe?Te.createElement(t):{}},Ee=je,Pe=!y&&!g((function(){return 7!=Object.defineProperty(Ee("div"),"a",{get:function(){return 7}}).a})),ke=y,Ie=C,Ae=w,Re=P,_e=Y,Le=we,De=Qt,Fe=Pe,Me=Object.getOwnPropertyDescriptor;v.f=ke?Me:function(t,e){if(t=_e(t),e=Le(e),Fe)try{return Me(t,e)}catch(t){}if(De(t,e))return Re(!Ie(Ae.f,t,e),t[e])};var Ne={},$e=y&&g((function(){return 42!=Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype})),Ve=rt,He=String,ze=TypeError,Be=function(t){if(Ve(t))return t;throw ze(He(t)+" is not an object")},Ue=y,Ge=Pe,We=$e,Ke=Be,qe=we,Ye=TypeError,Je=Object.defineProperty,Xe=Object.getOwnPropertyDescriptor,Qe="enumerable",Ze="configurable",tr="writable";Ne.f=Ue?We?function(t,e,r){if(Ke(t),e=qe(e),Ke(r),"function"==typeof t&&"prototype"===e&&"value"in r&&tr in r&&!r.writable){var n=Xe(t,e);n&&n.writable&&(t[e]=r.value,r={configurable:Ze in r?r.configurable:n.configurable,enumerable:Qe in r?r.enumerable:n.enumerable,writable:!1})}return Je(t,e,r)}:Je:function(t,e,r){if(Ke(t),e=qe(e),Ke(r),Ge)try{return Je(t,e,r)}catch(t){}if("get"in r||"set"in r)throw Ye("Accessors not supported");return"value"in r&&(t[e]=r.value),t};var er=Ne,rr=P,nr=y?function(t,e,r){return er.f(t,e,rr(1,r))}:function(t,e,r){return t[e]=r,t},or={},ir={get exports(){return or},set exports(t){or=t}},ar=y,cr=Qt,lr=Function.prototype,ur=ar&&Object.getOwnPropertyDescriptor,sr=cr(lr,"name"),fr={EXISTS:sr,PROPER:sr&&"something"===function(){}.name,CONFIGURABLE:sr&&(!ar||ar&&ur(lr,"name").configurable)},pr=Z,hr=Gt,dr=_(Function.toString);pr(hr.inspectSource)||(hr.inspectSource=function(t){return dr(t)});var vr,gr,yr,br=hr.inspectSource,mr=Z,Sr=d.WeakMap,Cr=mr(Sr)&&/native code/.test(String(Sr)),wr=ne,Or=Nt("keys"),Tr=function(t){return Or[t]||(Or[t]=wr(t))},xr={},jr=Cr,Er=d,Pr=rt,kr=nr,Ir=Qt,Ar=Gt,Rr=Tr,_r=xr,Lr="Object already initialized",Dr=Er.TypeError,Fr=Er.WeakMap;if(jr||Ar.state){var Mr=Ar.state||(Ar.state=new Fr);Mr.get=Mr.get,Mr.has=Mr.has,Mr.set=Mr.set,vr=function(t,e){if(Mr.has(t))throw Dr(Lr);return e.facade=t,Mr.set(t,e),e},gr=function(t){return Mr.get(t)||{}},yr=function(t){return Mr.has(t)}}else{var Nr=Rr("state");_r[Nr]=!0,vr=function(t,e){if(Ir(t,Nr))throw Dr(Lr);return e.facade=t,kr(t,Nr,e),e},gr=function(t){return Ir(t,Nr)?t[Nr]:{}},yr=function(t){return Ir(t,Nr)}}var $r={set:vr,get:gr,has:yr,enforce:function(t){return yr(t)?gr(t):vr(t,{})},getterFor:function(t){return function(e){var r;if(!Pr(e)||(r=gr(e)).type!==t)throw Dr("Incompatible receiver, "+t+" required");return r}}},Vr=_,Hr=g,zr=Z,Br=Qt,Ur=y,Gr=fr.CONFIGURABLE,Wr=br,Kr=$r.enforce,qr=$r.get,Yr=String,Jr=Object.defineProperty,Xr=Vr("".slice),Qr=Vr("".replace),Zr=Vr([].join),tn=Ur&&!Hr((function(){return 8!==Jr((function(){}),"length",{value:8}).length})),en=String(String).split("String"),rn=ir.exports=function(t,e,r){"Symbol("===Xr(Yr(e),0,7)&&(e="["+Qr(Yr(e),/^Symbol\(([^)]*)\)/,"$1")+"]"),r&&r.getter&&(e="get "+e),r&&r.setter&&(e="set "+e),(!Br(t,"name")||Gr&&t.name!==e)&&(Ur?Jr(t,"name",{value:e,configurable:!0}):t.name=e),tn&&r&&Br(r,"arity")&&t.length!==r.arity&&Jr(t,"length",{value:r.arity});try{r&&Br(r,"constructor")&&r.constructor?Ur&&Jr(t,"prototype",{writable:!1}):t.prototype&&(t.prototype=void 0)}catch(t){}var n=Kr(t);return Br(n,"source")||(n.source=Zr(en,"string"==typeof e?e:"")),t};Function.prototype.toString=rn((function(){return zr(this)&&qr(this).source||Wr(this)}),"toString");var nn=Z,on=Ne,an=or,cn=zt,ln=function(t,e,r,n){n||(n={});var o=n.enumerable,i=void 0!==n.name?n.name:e;if(nn(r)&&an(r,i,n),n.global)o?t[e]=r:cn(e,r);else{try{n.unsafe?t[e]&&(o=!0):delete t[e]}catch(t){}o?t[e]=r:on.f(t,e,{value:r,enumerable:!1,configurable:!n.nonConfigurable,writable:!n.nonWritable})}return t},un={},sn=Math.ceil,fn=Math.floor,pn=Math.trunc||function(t){var e=+t;return(e>0?fn:sn)(e)},hn=function(t){var e=+t;return e!=e||0===e?0:pn(e)},dn=hn,vn=Math.max,gn=Math.min,yn=function(t,e){var r=dn(t);return r<0?vn(r+e,0):gn(r,e)},bn=hn,mn=Math.min,Sn=function(t){return t>0?mn(bn(t),9007199254740991):0},Cn=Sn,wn=function(t){return Cn(t.length)},On=Y,Tn=yn,xn=wn,jn=function(t){return function(e,r,n){var o,i=On(e),a=xn(i),c=Tn(n,a);if(t&&r!=r){for(;a>c;)if((o=i[c++])!=o)return!0}else for(;a>c;c++)if((t||c in i)&&i[c]===r)return t||c||0;return!t&&-1}},En={includes:jn(!0),indexOf:jn(!1)},Pn=Qt,kn=Y,In=En.indexOf,An=xr,Rn=_([].push),_n=function(t,e){var r,n=kn(t),o=0,i=[];for(r in n)!Pn(An,r)&&Pn(n,r)&&Rn(i,r);for(;e.length>o;)Pn(n,r=e[o++])&&(~In(i,r)||Rn(i,r));return i},Ln=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],Dn=_n,Fn=Ln.concat("length","prototype");un.f=Object.getOwnPropertyNames||function(t){return Dn(t,Fn)};var Mn={};Mn.f=Object.getOwnPropertySymbols;var Nn=at,$n=un,Vn=Mn,Hn=Be,zn=_([].concat),Bn=Nn("Reflect","ownKeys")||function(t){var e=$n.f(Hn(t)),r=Vn.f;return r?zn(e,r(t)):e},Un=Qt,Gn=Bn,Wn=v,Kn=Ne,qn=g,Yn=Z,Jn=/#|\.prototype\./,Xn=function(t,e){var r=Zn[Qn(t)];return r==eo||r!=to&&(Yn(e)?qn(e):!!e)},Qn=Xn.normalize=function(t){return String(t).replace(Jn,".").toLowerCase()},Zn=Xn.data={},to=Xn.NATIVE="N",eo=Xn.POLYFILL="P",ro=Xn,no=d,oo=v.f,io=nr,ao=ln,co=zt,lo=function(t,e,r){for(var n=Gn(e),o=Kn.f,i=Wn.f,a=0;ao;)for(var c,l=Oo(arguments[o++]),u=i?jo(mo(l),i(l)):mo(l),s=u.length,f=0;s>f;)c=u[f++],vo&&!yo(a,l,c)||(r[c]=l[c]);return r}:To,Po=Eo;so({target:"Object",stat:!0,arity:2,forced:Object.assign!==Po},{assign:Po});var ko=M,Io=_,Ao=function(t){if("Function"===ko(t))return Io(t)},Ro=It,_o=b,Lo=Ao(Ao.bind),Do=function(t,e){return Ro(t),void 0===e?t:_o?Lo(t,e):function(){return t.apply(e,arguments)}},Fo=M,Mo=Array.isArray||function(t){return"Array"==Fo(t)},No={};No[pe("toStringTag")]="z";var $o="[object z]"===String(No),Vo=$o,Ho=Z,zo=M,Bo=pe("toStringTag"),Uo=Object,Go="Arguments"==zo(function(){return arguments}()),Wo=Vo?zo:function(t){var e,r,n;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(r=function(t,e){try{return t[e]}catch(t){}}(e=Uo(t),Bo))?r:Go?zo(e):"Object"==(n=zo(e))&&Ho(e.callee)?"Arguments":n},Ko=_,qo=g,Yo=Z,Jo=Wo,Xo=br,Qo=function(){},Zo=[],ti=at("Reflect","construct"),ei=/^\s*(?:class|function)\b/,ri=Ko(ei.exec),ni=!ei.exec(Qo),oi=function(t){if(!Yo(t))return!1;try{return ti(Qo,Zo,t),!0}catch(t){return!1}},ii=function(t){if(!Yo(t))return!1;switch(Jo(t)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return ni||!!ri(ei,Xo(t))}catch(t){return!0}};ii.sham=!0;var ai=!ti||qo((function(){var t;return oi(oi.call)||!oi(Object)||!oi((function(){t=!0}))||t}))?ii:oi,ci=Mo,li=ai,ui=rt,si=pe("species"),fi=Array,pi=function(t){var e;return ci(t)&&(e=t.constructor,(li(e)&&(e===fi||ci(e.prototype))||ui(e)&&null===(e=e[si]))&&(e=void 0)),void 0===e?fi:e},hi=function(t,e){return new(pi(t))(0===e?0:e)},di=Do,vi=z,gi=Yt,yi=wn,bi=hi,mi=_([].push),Si=function(t){var e=1==t,r=2==t,n=3==t,o=4==t,i=6==t,a=7==t,c=5==t||i;return function(l,u,s,f){for(var p,h,d=gi(l),v=vi(d),g=di(u,s),y=yi(v),b=0,m=f||bi,S=e?m(l,y):r||a?m(l,0):void 0;y>b;b++)if((c||b in v)&&(h=g(p=v[b],b,d),t))if(e)S[b]=h;else if(h)switch(t){case 3:return!0;case 5:return p;case 6:return b;case 2:mi(S,p)}else switch(t){case 4:return!1;case 7:mi(S,p)}return i?-1:n||o?o:S}},Ci={forEach:Si(0),map:Si(1),filter:Si(2),some:Si(3),every:Si(4),find:Si(5),findIndex:Si(6),filterReject:Si(7)},wi=g,Oi=vt,Ti=pe("species"),xi=function(t){return Oi>=51||!wi((function(){var e=[];return(e.constructor={})[Ti]=function(){return{foo:1}},1!==e[t](Boolean).foo}))},ji=Ci.filter;so({target:"Array",proto:!0,forced:!xi("filter")},{filter:function(t){return ji(this,t,arguments.length>1?arguments[1]:void 0)}});var Ei=Wo,Pi=$o?{}.toString:function(){return"[object "+Ei(this)+"]"};$o||ln(Object.prototype,"toString",Pi,{unsafe:!0});var ki=Yt,Ii=ho;so({target:"Object",stat:!0,forced:g((function(){Ii(1)}))},{keys:function(t){return Ii(ki(t))}});var Ai=TypeError,Ri=we,_i=Ne,Li=P,Di=function(t,e,r){var n=Ri(e);n in t?_i.f(t,n,Li(0,r)):t[n]=r},Fi=so,Mi=g,Ni=Mo,$i=rt,Vi=Yt,Hi=wn,zi=function(t){if(t>9007199254740991)throw Ai("Maximum allowed index exceeded");return t},Bi=Di,Ui=hi,Gi=xi,Wi=vt,Ki=pe("isConcatSpreadable"),qi=Wi>=51||!Mi((function(){var t=[];return t[Ki]=!1,t.concat()[0]!==t})),Yi=function(t){if(!$i(t))return!1;var e=t[Ki];return void 0!==e?!!e:Ni(t)};Fi({target:"Array",proto:!0,arity:1,forced:!qi||!Gi("concat")},{concat:function(t){var e,r,n,o,i,a=Vi(this),c=Ui(a,0),l=0;for(e=-1,n=arguments.length;ea;)Zi.f(t,r=o[a++],n[r]);return t};var na,oa=at("document","documentElement"),ia=Be,aa=Ji,ca=Ln,la=xr,ua=oa,sa=je,fa=Tr("IE_PROTO"),pa=function(){},ha=function(t){return" + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+
+
+

Contact and contributions

Feel free to contact me by email +if you need. Any contribution is welcome.

+
+
+
+ +
+

+
+

+ Copyright © 2019-2024 + SFZTools Organization + + This site is open source. + + Improve this page + +

+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/faq/index.html b/faq/index.html new file mode 100644 index 00000000..95a41cae --- /dev/null +++ b/faq/index.html @@ -0,0 +1,686 @@ + + + + + + + + + FAQ - SFZTools + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+
+
+

FAQ

Missing submodules

+

Unfortunately GitHub doesn't include the required git submodules available in +the repository in their zip / tar.gz packages, so you need to download the +related source manually separately. This leads to the same error below also +if you haven't cloned the repository with the --recursive / recurse-submodules +switch, resulting with the error:

+
CMake Error at lib/CMakeLists.txt:NNN (add_subdirectory):
+  The source directory
+    path/to/gitsubmodule
+  does not contain a CMakeLists.txt file.
+-- Configuring incomplete, errors occurred!
+
+

run git submodule update --init --recursive from the project directory.

+
+
+
+ +
+

+
+

+ Copyright © 2019-2024 + SFZTools Organization + + This site is open source. + + Improve this page + +

+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 00000000..e5987ce1 --- /dev/null +++ b/index.html @@ -0,0 +1,681 @@ + + + + + + + + + Home - SFZTools + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+
+
+ +Welcome to SFZTools!

+ +We have created this organization project to involve more people, +with the intention of coding and sharing useful tools that can be used +for creating and using audio sample libraries using the SFZ format. + +
+
+
+
+ +
+

+
+

+ Copyright © 2019-2024 + SFZTools Organization + + This site is open source. + + Improve this page + +

+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/news/index.html b/news/index.html new file mode 100644 index 00000000..d31765cc --- /dev/null +++ b/news/index.html @@ -0,0 +1,1797 @@ + + + + + + + + + Latest News - SFZTools + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+
+
+

Latest News

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

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

sfizz 1.2.2 release

Published by redtide on 2023-08-26 00:00:00 + +

Library

+

Added

+
    +
  • WavPack support (#1129 by @lucianoiam)
  • +
+

Changed

+
    +
  • The project has been split into 2 repositories to separate + the library from the UI/plugins. (#1162)
  • +
  • Unclamp the cutoff and add OSC queries for the cutoff modifiers (#1100 by @PythonBlue)
  • +
  • SIMDe update (#1161 #1163)
  • +
  • Update cpuid, dr_libs and stb_vorbis libraries (#1164)
  • +
  • Various CMake and CI changes/fixes, also because the repository split + Minimum CMake version required is now 3.15 for Windows, 3.13 for other systems
  • +
  • Configurable amount of Control Change messages via CMake' MIDI_CC_COUNT variable, + Config.h is now a generated file
  • +
  • Update Abseil to 20230125.3 (#1169)
  • +
+

Fixed

+
    +
  • Crash fix for reloading SFZ: needed to copy preloadCallCount in FilePool + copy constructors (#1170 by @essej)
  • +
  • Temporary fixes to build benchmarks and tests (see #1148)
  • +
  • Fixed FlexEGs shape (#1176 #1177)
  • +
  • Fixed build on Windows
  • +
  • Fixed modulation matrix when CC modulations are per voice (#1173 #1179 by @PythonBlue)
  • +
  • Fixed and reenabled tests
  • +
  • Modifications to support universal x86_64/ARM builds on macOS (#1183 by @essej)
  • +
+

Removed

+
    +
  • VCPKG and MinGW CI builds
  • +
+

Plugins

+

Added

+
    +
  • New repository for UI/plugins. (sfztools/sfizz#1162)
  • +
  • CI: Restored the macOS universal build that was working in AppVeyor + (sfztools/sfizz@15628e13290e9be4e33ebf74aef286a5e3221579) but sacrifice + WavPack assembly optimizations, see + https://github.com/dbry/WavPack/issues/93
  • +
+

Changed

+
    +
  • Updated VST3 SDK to v3.7.7, including our custom AU wrapper (#25)
  • +
  • Updated VSTGUI to v4.12.3 (patched), this requires Windows 10 or later
  • +
  • Updated stb_image to v2.28
  • +
  • Updated LV2 bundled library to v1.18
  • +
  • Various CMake and CI changes/fixes, also because the repository split + Minimum CMake version required is now 3.15 for Windows, 3.13 for other systems
  • +
  • Using linters for all type of plugins supported in CI
  • +
+

Fixed

+
    +
  • Various code fixes for the newer version of VSTGUI; Windows 10 minimum required
  • +
+

Removed

+
    +
  • macOS: removed DMG resources and Carbon support from VSTGUI
  • +
+

See:

+ + +

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

sfizz 1.2.1 release

Published by github-actions[bot] on 2023-04-15 00:06:30 + +

    +
  • Mac OS Installer (#93 #1087)
  • +
  • Updated bundled dependencies and added more options to use those + preinstalled in system (#1104 #1117 #1143 #1145 #1149)
  • +
  • CI: Various updates and fixes for GitHub Actions; removed Travis and Appveyor
  • +
  • Add LFO frequency as an EG target (#1103)
  • +
  • New image_controls opcode to add a background image on UI' Controls tab (#1156)
  • +
  • Disabled temporarily the embedded sample test
  • +
  • Parse 0-valued note ons as note offs (#1072 #1073)
  • +
  • Correct a bug with dynamic updates on offed EGs (#2 #1088)
  • +
  • jack: Wait for CLI thread to finish on quit (#1097)
  • +
  • Fix libsndfile build and add CI (#1112 #1090)
  • +
  • Last keyswitches don't change the midi state (#1113 #1074)
  • +
  • Add section suffix to man pages (#1124)
  • +
  • HiDPI: Added a Zoom menu in Settings to apply an user' zoom ratio preference + (#1123 #1153)
  • +
  • Colored logo button on mouse hover (#1151)
  • +
  • Centered, full-size background images container (#1152)
  • +
  • XP style tooltips (#1156)
  • +
  • Window size has been changed to be compatible with ARIA banks + (775x335 for image backgrounds) (#1140 #1156)
  • +
  • The CC knobs rotator and title label have a white color + on a semi-transparent background in the controls tab (#1156)
  • +
  • The info tab becomes a dark and semi-transparent overlay dialog above the + Home tab; both will display the same background image when available (#1156)
  • +
  • Handle LV2 scaleFactor supportedOption (#1153)
  • +
  • Added suffix "-multi" to LV2 and VST3. (#1084)
  • +
  • Fix LV2 manifest when using PSA (#1114)
  • +
  • Fix 2 bugs in LV2 and VST3 for loads and stores (#1115 #1098)
  • +
+

See: GitHub release page

+ +

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

sfizz 1.2.0 release

Published by redtide on 2022-01-15 22:59:19 + +

Big stuff:

+
    +
  • The sfizz engine now handles multiple stereo outputs, through the output opcode. The VST3 and LV2 plugins both have a 16-out version (as 8 stereo outs) (#1002)
  • +
  • The emscripten branch allows to run sfizz through WASM for your web-oriented needs. An example with WebMidi is available at https://sfz.tools/sfizz-webaudio/ (requires a Chromium-based browser), with source code at https://github.com/sfztools/sfizz-webaudio.
  • +
  • sfizz can now parse embedded samples in base64 data (#1041)
  • +
+

Smaller things:

+
    +
  • Added support in the plugin GUI/parameters for the "sustain cancels release" behavior of LinuxSampler.
  • +
  • The internal midi state is not reset when loading/reloading. This means in particular that controls changed on an instrument will be kept if you edit the underlying SFZ file (#1002)
  • +
  • Updated dependent libraries (#1018)
  • +
  • Support extended CCs 140 and 141 for "keydelta" (#1003)
  • +
  • Negative values for lokey will not disable the region anymore (#1019)
  • +
  • Updated the GUI option panel for the plugins (#1022) and some hints on the tab buttons (#1057)
  • +
  • Choke groups now act through CC switches (#1024)
  • +
  • Corrected a bug when reloading some files (#1028)
  • +
  • Added better support for files that are fully loaded in memory and not simply preloaded (#1031)
  • +
  • Corrected mistakes in the shelving filters (#1027)
  • +
  • Corrected a crash in some VST3 hosts (#1035)
  • +
  • Properly read exponential notation in floats (#1036)
  • +
  • sfizz is now clamping flex EG levels (#1037)
  • +
  • sw_last is now properly affected by octave_offset and note_offset (#1039)
  • +
  • Corrected a bug where long-tailed effects would be cut off (#1050)
  • +
  • Corrected a bug in the band rejection filters (#1052). The apf_1p filter still misbehaves and is disabled for now.
  • +
  • Numpad input is now properly handled (#1053)
  • +
  • In the LV2 plugin, plugin-side automation is now enabled by default (which means all SFZ control changes are naturally bound to incoming MIDI control changes and not controlled by a plugin parameter). You can disable this at build time and show the relevant parameters using SFIZZ_LV2_PSA. Too many hosts expect their plugins to respond to midi messages for things like pedal and volume. (#1054)
  • +
  • Added support for loprog/hiprog (#1058)
  • +
  • The LV2 plugin now has a string output parameter with the CC used by the instrument (#1060)
  • +
+

API changes: +- sfizz_enable_logging and sfizz_disable_logging (and their C++ counterparts) are deprecated, replaced by sfizz_get_callback_breakdown which needs to be called at the end of a callback by the host (#1034). All file writing is handled by the host for logging. +- Added sfizz_send_program_change and its C++ counterpart. +- Added sfizz_set_sustain_cancels_release and its C++ counterpart.

+

See: GitHub release page

+ +

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

sfizz 1.1.1 release

Published by github-actions[bot] on 2021-11-08 15:13:36 + +

Published by github-actions[bot] at 2021-11-08 15:13:36

+
+
    +
  • Roll back VSTGUI to 4.10.2 to avoid corruption of the UI in some scenarios
  • +
+

See: GitHub release page

+ +

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

sfizz 1.1.0 release

Published by github-actions[bot] on 2021-10-23 21:38:57 + +

Published by github-actions[bot] at 2021-10-23 21:38:57

+
+

New supports and plugins:

+
    +
  • Added a Puredata plugin (#869 #873 #874)
  • +
  • Added support for hint_sustain_cancels_release, which when activated reproduces a LinuxSampler behavior by sustaining already released notes (#898). A GUI option should come later.
  • +
  • Added support for amp_veltrack_oncc, pitch_veltrack_oncc, and fil_veltrack_oncc (#938)
  • +
  • Dynamic EGs are supported for flex EGs (#933 #932 #930)
  • +
  • Support _curvecc for extended CCs (#993)
  • +
  • Support lorand and hirand on CC-triggered regions (#997)
  • +
  • The engine now parses oscillator=auto and only enables oscillators on short samples with wavetable tags in the WAV metadata (#954)
  • +
+

Bug fixes and other improvements:

+
    +
  • Added a GUI volume meter (#859)
  • +
  • Implement support for VST3 keyswitch and midi note names (#877 #876)
  • +
  • Fixed a bug which could prevent parameters to be automated in Ardour (#893)
  • +
  • Fixed a bug where high definition CC, crossfade or aftertouch events could be ignored (#855 #896)
  • +
  • Resetting all controllers will now reset them to their default, instead of 0 (#905)
  • +
  • Filter resonance can now be negative (#919)
  • +
  • Corrected a bug for the LV2 plugin when used in the Ardour DAW (#924)
  • +
  • Respect the editor set for sfz files on MacOS (#925)
  • +
  • The JACK and PureData clients can use custom importers (#926)
  • +
  • Fix off_by behavior with long-releasing notes (#972)
  • +
  • Polyphony groups can have negative indices (#934)
  • +
  • Parse lokey=-1 as hikey=-1 (#941)
  • +
  • Improved the preloading for monolithic wave files (#935)
  • +
  • Since the default build of the LV2 plugin is not statically linked against libsndfile, the distribution license is changed to the ISC license (#943)
  • +
  • The DecentSampler importer now better translates the loop modes (#981)
  • +
  • Even when plugin-side automation is disabled (through SFIZZ_LV2_PSA), sustain and sostenu CC events will still go through to the plugin to improve the user experience on hosts that do not support automatic mapping of control ports to midi events through the LV2 midi:binding extension (#963).
  • +
  • Fixed a bug that could hang the background thread in the VST plugin (#984 #865 #864)
  • +
  • The current keyswitch is properly saved and restored with the plugin state (#961)
  • +
  • It is now possible to enter values for CCs on the plugin GUI by double clicking on the CC knob (#945). A high-resolution input option is also available on a right click.
  • +
  • Added a text interface to sfizz_jack (#973)
  • +
  • CC-triggered voices can be cut off by polyphony groups (#917)
  • +
  • Allow building on MacOS 10.9 (#990)
  • +
  • Improved the X11 runloop (#986)
  • +
  • Added a polyphony option to sfizz_render (#992)
  • +
  • Corrected a bug which prevented VST3 or LV2 plugins to be loaded by the Ardour DAW (#995)
  • +
  • Corrected a bug where octave and note offset were not reset upon loading a new file (#994)
  • +
  • Corrected a bug where CC-triggered voices could generate note-offs when cut by a polyphony group (#998)
  • +
  • Added man pages for sfizz_render and sfizz_jack (#999)
  • +
  • Various build system improvements for different platforms (#957 #958 #964 #967 #968 #989 #978 #942 #921 #920 #902 #849 #850 #856 #1001)
  • +
+

See: GitHub release page

+ +

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

sfizz 1.0.0 release

Published by github-actions[bot] on 2021-04-16 15:31:49 + +

Published by github-actions[bot] at 2021-04-16 15:31:49

+
+

We would like to thank to our contributors at https://opencollective.com/sfztools, as well as everyone who is regularly testing and pushing sfizz to the limits! Your support to this project in any form is much appreciated.

+

You can download builds catered for your Linux distribution over at OBS. The Mac, Windows and MOD packages are below in the release assets, as well as the source packages.

+

Headlines:

+
    +
  • SFZ v1 is virtually supported except for a handful of opcodes ! Please check + https://sfz.tools/sfizz/development/status/ for the up-to-date status of opcode support.
  • +
  • It is now possible to build sfizz without relying on libsndfile, using a set of libraries. This is now the + default build mode. Building with libsndfile can be enabled at configure time.
  • +
  • The library and plugins can now load DecentSampler files, and could accomodate other formats.
  • +
  • CCs, keyswitch range, key ranges and active keyswitch are now displayed in the editor for all plugins. + There has been a lot of UI work to make it more practical to use.
  • +
  • There is an OSC interface in the library, which allows to have introspection into the currently + loaded file, the state of CCs/keyswitches, and also set some parameters for loaded regions.
  • +
+

API/ABI changes for the library:

+
    +
  • The ABI is broken, leading to a major version change.
  • +
  • Thread-safety now has to be handled externally. The API has been updated to provide a concurrency spec.
  • +
  • The current version of the internal oversampling factor was too unstable and has been disabled for the time +being. The API and plugin parameters are staying for compatibility. A more robust implementation should come soon.
  • +
  • Added documentation in the API calls to make clear that sample-accurate triggering of voice requires + messages to be sent in order. The VST plugin in particular did not respect this and has been updated.
  • +
  • A new bpmTempo method has been added to pass tempo as beats-per-minute rather than seconds per beat. + The previous version is deprecated.
  • +
  • There are new HD (float) versions of API calls for note and CC events.
  • +
  • aftertouch is renamed as channel_aftertouch (for C) and channelAftertouch (for C++) throughout the API + to be more consistent with polyAftertouch.
  • +
+

UI:

+
    +
  • UI improvements and tweaks, adding themability in particular (#826 #824 #822 #821 #819 #818 #816 #812 #799 #743 #691 #674 #673 #672 #670 #662 #661 #656)
  • +
  • Added an info panel in the plugin UI (#793 #792 #791 #789 #788 #787 #782 #779 #773)
  • +
  • Improve font handling (#669 #622)
  • +
  • Improve file handling in the UI (#645 #659 #658) and enable the use of a "default user directory" or environment variable. + This also allows the plugin to "find" missing sfz files in a different environment (#644 #581 #572 #532)
  • +
  • Support DecentSampler and a generic importer for other formats (#725 #715 #680)
  • +
  • Show the current keyswitch on the editor and the virtual keybnoard (#665 #657)
  • +
  • Added a button to reset the scala file to default (#660)
  • +
  • The plugins now display an image through the image opcode (#770)
  • +
+

Plugins:

+
    +
  • Remove automation from un-automatable parameters in the VST plugin (#814)
  • +
  • Order VST events (#810 #803)
  • +
  • Added the option to build a VST2 version of sfizz if you have the SDK available (#708)
  • +
  • The C++ standard is set to 14 if you build the UI on LV2, or if you build the VST version. This will likely + increase to 17 shortly due to the dependency on VSTGUI. The ui-less LV2 plugin and the library remain C++11 + compatible. Note that windows builds already use C++17 on all targets. (#795)
  • +
  • Fix corruptions and crashes that happened in the LV2 plugin (#794 #668 #557)
  • +
  • The internal controllers of sfizz are now presented as parameters in the LV2 plugin. Experimental midi binding + is also active on them. By default the "direct" midi input is disabled and you need to map to the parameters. + A compile-time option is available to re-enable the midi input. (#776)
  • +
  • Fix crashes in the VST plugin (#709 #702 #681 #625)
  • +
  • Enable checking if file changed even when the transport is not running (#712 #689)
  • +
  • The Mac builds are now signed (#550 #552)
  • +
  • Update VST to 3.7.2 (#798)
  • +
+

Library:

+
    +
  • Small files with only zeroes are considered as *silence (#831)
  • +
  • The library uses an Hermite interpolation by default (#828 #829)
  • +
  • Fix an error where sample indices could wrap for massive pitch modulations (#825 #751)
  • +
  • Add high-definition versions of the API calls (#820)
  • +
  • Corrected a bug where regions with long release envelopes would not stop on sample ending (#811)
  • +
  • Support polyphonic aftertouch events, triggers and targets (#809 #764)
  • +
  • Support monophonic aftertouch events, triggers and targets (#765 #630 )
  • +
  • Corrected a regression where sfizz would stop loading the SFZ file if some sample files cannot be loaded (#806)
  • +
  • Update abseil and ghc::filesystem (#780), the tunings library from Surge (#785), catch2 (#711)
  • +
  • It is now possible to change some parameters of the regions after loading the file through the OSC interface (#761)
  • +
  • Improve the choking logic to match the spec and other implementations (#778)
  • +
  • Added modulation targets for amplitude, pan, width, position, pitch and volume (#760)
  • +
  • Support CC modifiers for end, loop_start and loop_end (#752)
  • +
  • Support CC modifiers for LFO targets (#753)
  • +
  • Support SFZ v1 extended CCs (#747)
  • +
  • Implement the sostenuto logic (#739)
  • +
  • Refactored opcode reading and storing (#748 #727 #721 #722 #720 #700 #559)
  • +
  • Fix the parser to support sharp (#) symbols in file names (#746)
  • +
  • Improved the ADSR transitions from decay to sustain, and from release to 0 (#734 #373)
  • +
  • Reset the smoothers if the playhead moved (#731 #710 #382)
  • +
  • Corrected a bug where the first sample was ignored on playback (#732 #394)
  • +
  • Added CC modulation for depth targets (#730)
  • +
  • If the sustain level is low enough the envelope is set to free-run (#723, #676)
  • +
  • Fix loop crossfades when the loop starts early in the sample (#718)
  • +
  • Fix random generators to match ARIA's behavior (#719)
  • +
  • Fix corruption appearing in some sample libraries (#717 #695)
  • +
  • Smoothers are now linear (#713 #714 #703)
  • +
  • Filter/EQ parameters are clamped even with modulation (#701 #699)
  • +
  • Implement v1 LFOs (#693)
  • +
  • Support count and loop_count (#654)
  • +
  • Fix a bug where the sample rate was not propagated properly to the flex EGs (#683)
  • +
  • Delay envelope start by the voice delay (#655 #432)
  • +
  • Support delay_oncc (#653)
  • +
  • Support sw_vel (#650)
  • +
  • Fix note_polyphony choking (#634 #529)
  • +
  • Respect the end opcode (#618)
  • +
  • Fix allocations that may happen on the RT thread (#621)
  • +
  • Fix the polyphony manager when the engine polyphony is changed after a file is loaded (#619)
  • +
  • Avoid reloading invalid files (#614)
  • +
  • Allow parsing of some badly formed files files (#600)
  • +
  • Match ARIA's LFOs (#613)
  • +
  • Added windowed sinc interpolation for sample_quality from 3 to 10 (#609)
  • +
  • Improve the Hermite interpolation (#597)
  • +
  • Update AtomicQueue to correct a bug (#583)
  • +
  • Support lfoN_beats (#553)
  • +
  • Add region and voice introspection to the OSC interface (#555)
  • +
  • Enable fast-math on MSVC (#567)
  • +
  • Fix crashes when building with libsndfile (#542 #543)
  • +
  • Properly pad and align the wav files upon reading (#538)
  • +
  • Add an alternative to libsndfile (#482 #534 #535 #536)
  • +
  • Handle gracefully having a different sw_default in a region (#531)
  • +
  • Support disjoint keyswitch ranges, as well as sw_lolast and sw_hilast (#526)
  • +
+

See: GitHub release page

+ +

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

sfizz 0.5.1 release

Published by redtide on 2020-10-25 10:33:35 + +

Published by redtide at 2020-10-25 10:33:35

+
+
    +
  • Corrected race conditions that appeared with the new thread and file pools (#507 #508 #514 #521)
  • +
  • Take the internal oversampling factor into account for loop points, and solve an issue where loop points specified in sfz files were not taken into account (#506)
  • +
  • Fix an implementation error for the internal hash function when applied on a single byte (#512)
  • +
  • Knobs are linear in the AU plugin (#517)
  • +
  • Fix a crash in VSTGUI (#520)
  • +
  • Fix the resource path in the LV2 plugin under windows (#524)
  • +
  • Add MacOS make install rules (#525)
  • +
+

See: GitHub release page

+ +

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

sfizz 0.5.0 release

Published by redtide on 2020-10-15 20:11:56 + +

Big stuff:

+
    +
  • Added basic support for Flex EGs (#388) as modulation sources (targets to come)
  • +
  • Added basic support for LFOs (#338) as modulation sources (targets to come)
  • +
  • EGs and LFOs can now target EQs and filters (#424)
  • +
  • A new GUI has been added and is common to the LV2 and VST plugin (#397 #404 #419 #489 #492 #495 #496 #497); still mostly work in progress, more to come!
  • +
  • Provided build systems to use sfizz with the VCV-Rack SDK and the DISTRHO Plugin Framework
  • +
+

New features:

+
    +
  • Added support for sustain_lo (#327)
  • +
  • Audio files are now read incrementally, improving the availability under load (#294)
  • +
  • A new output port for active voices has been added in the LV2 plugin (#321)
  • +
  • Added support for effect types reverb, disto, gate and comp
  • +
  • The voice stealing is now configurable using hint_stealing, with possible values as first, oldest (default), and envelope_and_age. The latter is the more CPU-consuming version which requires to follow the envelope of each voice to kill low-volume ones preferably. Note that the voice stealing continue to kill all voices started on the same event by default (i.e. all layers of the same note). (#344 #384 #353)
  • +
  • sfizz now internally uses a modulation matrix to link all modulation sources (CC, LFOs, and EGs) and targets (#335 #351 #386)
  • +
  • Added support for off_time and complete support for off_mode. The voice stealing logic was improved to take into account polyphony, note_polyphony and group_polyphony properly (#349 #352 #393 #413 #414 #467). Note that this support is also available for the engine polyphony. In this case, some additional voice will take over for the release duration (#477).
  • +
  • The wavetable quality has been improved (#347)
  • +
  • Support for offset_cc (#385)
  • +
  • sfizz_render now supports a --quality switch, which acts like the sample_quality= opcode (#408)
  • +
  • pitch_keycenter=sample is now taken into account (#362)
  • +
  • Support oscillator_detunecc (#434)
  • +
  • Support basic FM synthesis for oscillator regions (#436)
  • +
  • CC 7, 10 and 11 are now linked by default to pan, volume and expression (#475)
  • +
  • Support hint_ram_based for loading the whole samples in RAM (#353)
  • +
  • Support for loop_crossfade (#464)
  • +
  • All phase-related opcodes in sfizz now use the 0->1 convention, as does ARIA/Sforzando, instead of the 0->360 convention (#499)
  • +
+

Issues:

+
    +
  • Loading probable wavetable files, or wav files containing wavetable metadata now sets oscillator=on on the region (#431)
  • +
  • The default sample_quality was put back to 1 for live playing and 2 for freewheeling (#405)
  • +
  • Fix an unwanted copy in the realtime thread (#334)
  • +
  • Improve the filter shortcut path (#336)
  • +
  • Fix the default ampeg_attack and ampeg_release to avoid clicks (#437)
  • +
  • Corrected a race condition in freewheeling mode (#500)
  • +
  • Fixed a potential non-realtime operation in the realtime thread (#498)
  • +
  • Fix a bug when using a larger internal oversampling for regions with an offset value (#469)
  • +
  • Fix an issue when loops occured more than once in a block (#462)
  • +
  • Increase the range of the clamping on amplitude (#468) and pitch (#474)
  • +
  • Fix CC modulations with their source depth set to 0 (#475)
  • +
  • Fix an overshoot for crazily large cutoff values (#478); cutoffs are now clamped
  • +
  • Improve the file loading logic to keep files in memory for a short while in case they get reused (#425)
  • +
  • Fix the MIDNAM output for the case where extended CCs are used (#420)
  • +
  • Fixed a bug where release voices where not ignored on self-mask search (#348)
  • +
  • Improved the release logic in many cases (#324 #414 #413)
  • +
  • Set the level of the *noise generator to match ARIA's (#429)
  • +
  • Support for atom:Blank atoms in the LV2 plugin (#363)
  • +
  • Fixed amp_veltrack behavior (#371)
  • +
  • Fix the ADSRH envelope release rate (#376)
  • +
  • Fixed an error for files where the loop spans the entire file (#378)
  • +
  • Fixed sustain_cc behavior (#377)
  • +
  • Match the default volumes with ARIA (#381)
  • +
  • Properly set the loop_mode for release regions (#379)
  • +
  • Regions with end=0 are now properly disabled (#380)
  • +
  • Fix fil_random to be bipolar (#452)
  • +
  • The sequence order now properly starts at 1 (#451)
  • +
  • Fix an issue on Flush to Zero on some ARM platforms (#455)
  • +
  • Fix pitch_veltrack (#461)
  • +
  • Opcode values now properly stop at the < character (#439)
  • +
  • Fix various build errors and issues on all platforms (#345 #401 #400 #399 #417 #447 #449 #443 #453 #456 #459 #471 #484 #487 #488 #491)
  • +
  • The file dialog initial directory is now the root of the current loaded file (#428)
  • +
  • Existing and known CC values are now correctly taken into account for modulations (#421)
  • +
  • Fix various performance regressions and improved performance especially on ARM builds (#410 #412 #415 #426)
  • +
+

API changes:

+
    +
  • Added API support for setting the playback state, time position and signature (#354)
  • +
  • The API documentation on the sfizz's website has been streamlined alot !
  • +
+

See: GitHub release page

+ +

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

sfizz 0.4.0 release

Published by paulfd on 2020-07-23 22:04:34 + +

Big stuff:

+
    +
  • Added support for polynomial resamples and sample_quality opcodes (#238 #267). The engine now defaults to a value of 2 for this opcode, which is more intensive than the original linear interpolation resampler but provides a better quality. Added support for better resampling algorithms also in the wavetables via oscillator_quality (#287).
  • +
  • Support _curvecc and _stepcc opcodes (#166 #155 #77) as well as _smoothcc opcodes (#181 #48 #22 #153 #297 #285)
  • +
  • Added support and API for Scala tuning files in the engine and the plugins (#253 #268 #282)
  • +
+

Other new features:

+
    +
  • Added support for unison oscillators (#161)
  • +
  • Support for the polyphony opcode at all levels (#171 #275), as well as note_polyphony. The group= polyphony is also more flexible and can be defined anywhere.
  • +
  • Added support for offset_cc (#170 #159)
  • +
  • Added support for direction=reverse (#185 #179)
  • +
  • Added support to label the keys using a label_key opcode. This is not really standard yet, but it is now integrated in the LV2 plugin to advertise the names in the MIDNAM file and possibly change their labels in hosts that support it. (#174 #154)
  • +
  • Added support for block comments /* */ in the parser (#196 #195)
  • +
  • Added a sfizz_render client in tree; you can build it with the make target sfizz_render if the SFIZZ_RENDER CMake variable is set to ON. (#200 #201 #206)
  • +
  • Add support to integrate sfizz in DPF plugins (#216)
  • +
  • Added an AudioUnit target (#224)
  • +
  • Added support for the set_hdcc opcodes and overall added the ability to support floating-point CCs from the API (#233 #232 #244)
  • +
  • Added support for FLAC loops (#242 #229)
  • +
  • Support the mapPath feature of the LV2 specifications, for tentatively better portability in plugin states (#303)
  • +
  • New instances of the sfizz LV2 plugin will now load a default *sine instrument (#283)
  • +
+

Issues:

+
    +
  • Solved some issues with DSmolken's drumkits related to the ampeg envelope (#172)
  • +
  • An exception problem was thrown if an sfz file was deleted (#182 #184)
  • +
  • Properly bundle the dylib for macOS (#188)
  • +
  • Improved the filter stability (#198 #199 #210)
  • +
  • Handle USE_LIBCPP properly on configure (#203)
  • +
  • Fix the handling of loop markers if sample end= is present (#202 #204)
  • +
  • Handle note on with 0 velocity as note offs in the jack client (#208 #211)
  • +
  • Solved an issue with super short files (#215)
  • +
  • Corrected a stack smashing bug in the LV2 plugin (#226)
  • +
  • Fixed some parsing issues with $variables (#230)
  • +
  • Properly advertise the VST plugin parameters (#241)
  • +
  • Process $ expansions in #include (#247)
  • +
  • Change the default build type to RelWithDebInfo (#249)
  • +
  • Improve the note stealing algorithm (#214); note that this is still very much a work in progress since many heuristics are in play here. Feel free to report misbehavior regarding note stealing as we improve this regularly.
  • +
  • Corrected a bug with SFZ v1 velcurve (#263)
  • +
  • Properly support the off_by=-1 opcode to correctly reset the value. (#235)
  • +
  • Corrected some errors with null-terminated atoms in the LV2 plugin (#269)
  • +
  • Ignore garbage values following e.g. a key number in opcode values (as in key=64Garbage -> key=64) (#263)
  • +
  • ampeg_****_onccXX modifiers now properly consider multiple CC modifiers (#300 #167)
  • +
  • Add headers and group sources in the CMake project for integration with e.g. Qt (#312)
  • +
  • Trigger on CC does not require disabling the key triggering through e.g. key=-1 (#315)
  • +
  • Support flat notes parsed as string values (#291 #289)
  • +
  • Improved handling of release_key (#298); still not perfect, if the region spans multiple key and multiple notes happened with the pedal down, only a single voice will start.
  • +
  • Properly read the LV2 option list until the end (#323, by @atsushieno)
  • +
  • Corrected a parsing issue when $variables were part of an opcode name (#328)
  • +
  • Various other plumbing changes
  • +
+

API additions:

+
    +
  • Added API calls to set $variable define values prior to loading an SFZ file (#168 #119 #130)
  • +
  • Added API calls to get key labels and cc labels defined by label_key and label_cc (#174)
  • +
  • Added an API call to load an sfz file as an std::string or const char* (#217)
  • +
  • Added API calls for Scala files and tunings (#253)
  • +
  • Added high-definition floating point CC API calls (#244)
  • +
  • Added API calls to change the default resampling quality (#267 #238)
  • +
+

See: GitHub release page

+ +

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

sfizz 0.3.2 release

Published by redtide on 2020-04-02 22:57:18 + +

See: GitHub release page

+ +

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

sfizz 0.3.1 release

Published by redtide on 2020-03-14 14:32:44 + +

    +
  • Added a VST3 plug-in front-end to the library. It is still quite experimental and suffers from problems that stem from the VST3 SDK itself. (#99)
  • +
  • Added effect buses and processing. There is a "lofi" effect available for now, as well as the same filters and EQs you can apply on the regions. More will come soon! (#84)
  • +
  • Added a script to parse and render the timings. This can help tracking performance issues and regressions. (#89)
  • +
  • Various fixups, performance improvements, and CI updates
  • +
+

See: GitHub release page

+ +

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

sfizz 0.3.0 release

Published by redtide on 2020-02-29 13:06:08 + +

    +
  • Added filter and EQ handling (the filN_... and eqN_... opcodes). There are also no limits to the amount of filters and EQs you can slap on each region beyond your CPU. Most if not all of the relevant filter types from the SFZ v2 spec are supported.
  • +
  • Added a new command-line option for the JACK client to set the client's name (#75, #76).
  • +
  • Added initial MIDNAM support (#79). The MIDNAM shows the named CCs in the SFZ file for now.
  • +
  • Reworked the parsing code for faster dispatching and better handling of complex opcodes with multiple parameters in their opcode name (#40).
  • +
  • Reworked the panning and stereo image process. The new process uses tabulated functions and avoid expensive calls to compute sine and cosine functions (#47, #56).
  • +
  • Added a crude *noise generator. This generator is a bit expensive for what it does but it's mostly useful to test the filters.
  • +
  • Added fine timings within the callbacks for performance improvements and regression testing (#65).
  • +
  • Corrected a bug with Ardour where saving a session with no file loaded would crash on reopening.
  • +
  • Corrected a bug where voices triggered on key off would never end and fill up the polyphony (#63).
  • +
  • Improved and completed CI on all platforms.
  • +
+

See: GitHub release page

+ +

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

sfizz 0.2.0 release

Published by redtide on 2020-01-30 19:09:22 + +

    +
  • Added an LV2 plugin version.
  • +
  • The parser now falls back to case-insensitive search if it doesn't find the sample file in its current path (#28), so that the behavior of SFZ libraries on case-sensitive filesystems will match Windows and macOS default case-insensitive filesystems.
  • +
  • The file now reload automatically on file change, and you can force a reload if necessary (#17).
  • +
  • Corrected a bug where memory would be read past the end of the file in memory, generating artifacts.
  • +
  • Corrected a bug where the real-time queue handling background loading of the voices would fail spuriously.
  • +
  • Corrected a bug where in the LV2 plugin the unknown opcode list was truncated (#18).
  • +
  • Added dynamic updates for the current modifiers (panning, stereo image, volume and amplitude mainly) (#19, #28)
  • +
  • Added timing for callbacks and file loading times.
  • +
  • Added support for pitch bends (#6) as well as pitch-bend activation for regions (lobend and hibend opcodes).
  • +
  • The JACK client will warn you instead of crashing if you do not give it a file to load (#27).
  • +
  • Added a windows build process for both the shared library and the LV2. sfizz now builds on all major platforms.
  • +
+

See: GitHub release page

+ +

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

Documentation Website

Published by redtide on 2019-06-03 00:00:00 + +

This website is where you will find the sfizz sampler documentation.

+

+ + +
+ +
+ +
+
+ + + + + 1 + + + + + 2 + + + + + 3 + +
+ +
+

+
+
+
+ +
+

+
+

+ Copyright © 2019-2024 + SFZTools Organization + + This site is open source. + + Improve this page + +

+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/news/posts/2019-06-03-documentation-website/index.html b/news/posts/2019-06-03-documentation-website/index.html new file mode 100644 index 00000000..2939010d --- /dev/null +++ b/news/posts/2019-06-03-documentation-website/index.html @@ -0,0 +1,681 @@ + + + + + + + + + Documentation Website - SFZTools + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+
+
+

Documentation Website

This website is where you will find the sfizz sampler documentation.

+ +
+
+
+ +
+

+
+

+ Copyright © 2019-2024 + SFZTools Organization + + This site is open source. + + Improve this page + +

+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/news/posts/2020-01-30-sfizz-0.2.0-release/index.html b/news/posts/2020-01-30-sfizz-0.2.0-release/index.html new file mode 100644 index 00000000..3749f4fc --- /dev/null +++ b/news/posts/2020-01-30-sfizz-0.2.0-release/index.html @@ -0,0 +1,694 @@ + + + + + + + + + sfizz 0.2.0 release - SFZTools + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+
+
+

sfizz 0.2.0 release

    +
  • Added an LV2 plugin version.
  • +
  • The parser now falls back to case-insensitive search if it doesn't find the sample file in its current path (#28), so that the behavior of SFZ libraries on case-sensitive filesystems will match Windows and macOS default case-insensitive filesystems.
  • +
  • The file now reload automatically on file change, and you can force a reload if necessary (#17).
  • +
  • Corrected a bug where memory would be read past the end of the file in memory, generating artifacts.
  • +
  • Corrected a bug where the real-time queue handling background loading of the voices would fail spuriously.
  • +
  • Corrected a bug where in the LV2 plugin the unknown opcode list was truncated (#18).
  • +
  • Added dynamic updates for the current modifiers (panning, stereo image, volume and amplitude mainly) (#19, #28)
  • +
  • Added timing for callbacks and file loading times.
  • +
  • Added support for pitch bends (#6) as well as pitch-bend activation for regions (lobend and hibend opcodes).
  • +
  • The JACK client will warn you instead of crashing if you do not give it a file to load (#27).
  • +
  • Added a windows build process for both the shared library and the LV2. sfizz now builds on all major platforms.
  • +
+

See: GitHub release page

+ + +
+
+
+ +
+

+
+

+ Copyright © 2019-2024 + SFZTools Organization + + This site is open source. + + Improve this page + +

+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/news/posts/2020-02-29-sfizz-0.3.0-release/index.html b/news/posts/2020-02-29-sfizz-0.3.0-release/index.html new file mode 100644 index 00000000..94db2420 --- /dev/null +++ b/news/posts/2020-02-29-sfizz-0.3.0-release/index.html @@ -0,0 +1,703 @@ + + + + + + + + + sfizz 0.3.0 release - SFZTools + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+
+
+

sfizz 0.3.0 release

    +
  • Added filter and EQ handling (the filN_... and eqN_... opcodes). There are also no limits to the amount of filters and EQs you can slap on each region beyond your CPU. Most if not all of the relevant filter types from the SFZ v2 spec are supported.
  • +
  • Added a new command-line option for the JACK client to set the client's name (#75, #76).
  • +
  • Added initial MIDNAM support (#79). The MIDNAM shows the named CCs in the SFZ file for now.
  • +
  • Reworked the parsing code for faster dispatching and better handling of complex opcodes with multiple parameters in their opcode name (#40).
  • +
  • Reworked the panning and stereo image process. The new process uses tabulated functions and avoid expensive calls to compute sine and cosine functions (#47, #56).
  • +
  • Added a crude *noise generator. This generator is a bit expensive for what it does but it's mostly useful to test the filters.
  • +
  • Added fine timings within the callbacks for performance improvements and regression testing (#65).
  • +
  • Corrected a bug with Ardour where saving a session with no file loaded would crash on reopening.
  • +
  • Corrected a bug where voices triggered on key off would never end and fill up the polyphony (#63).
  • +
  • Improved and completed CI on all platforms.
  • +
+

See: GitHub release page

+ + +
+
+
+ +
+

+
+

+ Copyright © 2019-2024 + SFZTools Organization + + This site is open source. + + Improve this page + +

+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/news/posts/2020-03-14-sfizz-0.3.1-release/index.html b/news/posts/2020-03-14-sfizz-0.3.1-release/index.html new file mode 100644 index 00000000..faa8468e --- /dev/null +++ b/news/posts/2020-03-14-sfizz-0.3.1-release/index.html @@ -0,0 +1,699 @@ + + + + + + + + + sfizz 0.3.1 release - SFZTools + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+
+
+

sfizz 0.3.1 release

    +
  • Added a VST3 plug-in front-end to the library. It is still quite experimental and suffers from problems that stem from the VST3 SDK itself. (#99)
  • +
  • Added effect buses and processing. There is a "lofi" effect available for now, as well as the same filters and EQs you can apply on the regions. More will come soon! (#84)
  • +
  • Added a script to parse and render the timings. This can help tracking performance issues and regressions. (#89)
  • +
  • Various fixups, performance improvements, and CI updates
  • +
+

See: GitHub release page

+ + +
+
+
+ +
+

+
+

+ Copyright © 2019-2024 + SFZTools Organization + + This site is open source. + + Improve this page + +

+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/news/posts/2020-04-03-sfizz-0.3.2-release/index.html b/news/posts/2020-04-03-sfizz-0.3.2-release/index.html new file mode 100644 index 00000000..e7e2367e --- /dev/null +++ b/news/posts/2020-04-03-sfizz-0.3.2-release/index.html @@ -0,0 +1,694 @@ + + + + + + + + + sfizz 0.3.2 release - SFZTools + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+
+

+ Copyright © 2019-2024 + SFZTools Organization + + This site is open source. + + Improve this page + +

+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/news/posts/2020-07-24-sfizz-0.4.0-release/index.html b/news/posts/2020-07-24-sfizz-0.4.0-release/index.html new file mode 100644 index 00000000..11704ede --- /dev/null +++ b/news/posts/2020-07-24-sfizz-0.4.0-release/index.html @@ -0,0 +1,754 @@ + + + + + + + + + sfizz 0.4.0 release - SFZTools + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+
+
+

sfizz 0.4.0 release

Big stuff:

+
    +
  • Added support for polynomial resamples and sample_quality opcodes (#238 #267). The engine now defaults to a value of 2 for this opcode, which is more intensive than the original linear interpolation resampler but provides a better quality. Added support for better resampling algorithms also in the wavetables via oscillator_quality (#287).
  • +
  • Support _curvecc and _stepcc opcodes (#166 #155 #77) as well as _smoothcc opcodes (#181 #48 #22 #153 #297 #285)
  • +
  • Added support and API for Scala tuning files in the engine and the plugins (#253 #268 #282)
  • +
+

Other new features:

+
    +
  • Added support for unison oscillators (#161)
  • +
  • Support for the polyphony opcode at all levels (#171 #275), as well as note_polyphony. The group= polyphony is also more flexible and can be defined anywhere.
  • +
  • Added support for offset_cc (#170 #159)
  • +
  • Added support for direction=reverse (#185 #179)
  • +
  • Added support to label the keys using a label_key opcode. This is not really standard yet, but it is now integrated in the LV2 plugin to advertise the names in the MIDNAM file and possibly change their labels in hosts that support it. (#174 #154)
  • +
  • Added support for block comments /* */ in the parser (#196 #195)
  • +
  • Added a sfizz_render client in tree; you can build it with the make target sfizz_render if the SFIZZ_RENDER CMake variable is set to ON. (#200 #201 #206)
  • +
  • Add support to integrate sfizz in DPF plugins (#216)
  • +
  • Added an AudioUnit target (#224)
  • +
  • Added support for the set_hdcc opcodes and overall added the ability to support floating-point CCs from the API (#233 #232 #244)
  • +
  • Added support for FLAC loops (#242 #229)
  • +
  • Support the mapPath feature of the LV2 specifications, for tentatively better portability in plugin states (#303)
  • +
  • New instances of the sfizz LV2 plugin will now load a default *sine instrument (#283)
  • +
+

Issues:

+
    +
  • Solved some issues with DSmolken's drumkits related to the ampeg envelope (#172)
  • +
  • An exception problem was thrown if an sfz file was deleted (#182 #184)
  • +
  • Properly bundle the dylib for macOS (#188)
  • +
  • Improved the filter stability (#198 #199 #210)
  • +
  • Handle USE_LIBCPP properly on configure (#203)
  • +
  • Fix the handling of loop markers if sample end= is present (#202 #204)
  • +
  • Handle note on with 0 velocity as note offs in the jack client (#208 #211)
  • +
  • Solved an issue with super short files (#215)
  • +
  • Corrected a stack smashing bug in the LV2 plugin (#226)
  • +
  • Fixed some parsing issues with $variables (#230)
  • +
  • Properly advertise the VST plugin parameters (#241)
  • +
  • Process $ expansions in #include (#247)
  • +
  • Change the default build type to RelWithDebInfo (#249)
  • +
  • Improve the note stealing algorithm (#214); note that this is still very much a work in progress since many heuristics are in play here. Feel free to report misbehavior regarding note stealing as we improve this regularly.
  • +
  • Corrected a bug with SFZ v1 velcurve (#263)
  • +
  • Properly support the off_by=-1 opcode to correctly reset the value. (#235)
  • +
  • Corrected some errors with null-terminated atoms in the LV2 plugin (#269)
  • +
  • Ignore garbage values following e.g. a key number in opcode values (as in key=64Garbage -> key=64) (#263)
  • +
  • ampeg_****_onccXX modifiers now properly consider multiple CC modifiers (#300 #167)
  • +
  • Add headers and group sources in the CMake project for integration with e.g. Qt (#312)
  • +
  • Trigger on CC does not require disabling the key triggering through e.g. key=-1 (#315)
  • +
  • Support flat notes parsed as string values (#291 #289)
  • +
  • Improved handling of release_key (#298); still not perfect, if the region spans multiple key and multiple notes happened with the pedal down, only a single voice will start.
  • +
  • Properly read the LV2 option list until the end (#323, by @atsushieno)
  • +
  • Corrected a parsing issue when $variables were part of an opcode name (#328)
  • +
  • Various other plumbing changes
  • +
+

API additions:

+
    +
  • Added API calls to set $variable define values prior to loading an SFZ file (#168 #119 #130)
  • +
  • Added API calls to get key labels and cc labels defined by label_key and label_cc (#174)
  • +
  • Added an API call to load an sfz file as an std::string or const char* (#217)
  • +
  • Added API calls for Scala files and tunings (#253)
  • +
  • Added high-definition floating point CC API calls (#244)
  • +
  • Added API calls to change the default resampling quality (#267 #238)
  • +
+

See: GitHub release page

+ + +
+
+
+ +
+

+
+

+ Copyright © 2019-2024 + SFZTools Organization + + This site is open source. + + Improve this page + +

+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/news/posts/2020-10-15-sfizz-0.5.0-release/index.html b/news/posts/2020-10-15-sfizz-0.5.0-release/index.html new file mode 100644 index 00000000..57e6633e --- /dev/null +++ b/news/posts/2020-10-15-sfizz-0.5.0-release/index.html @@ -0,0 +1,764 @@ + + + + + + + + + sfizz 0.5.0 release - SFZTools + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+
+
+

sfizz 0.5.0 release

Big stuff:

+
    +
  • Added basic support for Flex EGs (#388) as modulation sources (targets to come)
  • +
  • Added basic support for LFOs (#338) as modulation sources (targets to come)
  • +
  • EGs and LFOs can now target EQs and filters (#424)
  • +
  • A new GUI has been added and is common to the LV2 and VST plugin (#397 #404 #419 #489 #492 #495 #496 #497); still mostly work in progress, more to come!
  • +
  • Provided build systems to use sfizz with the VCV-Rack SDK and the DISTRHO Plugin Framework
  • +
+

New features:

+
    +
  • Added support for sustain_lo (#327)
  • +
  • Audio files are now read incrementally, improving the availability under load (#294)
  • +
  • A new output port for active voices has been added in the LV2 plugin (#321)
  • +
  • Added support for effect types reverb, disto, gate and comp
  • +
  • The voice stealing is now configurable using hint_stealing, with possible values as first, oldest (default), and envelope_and_age. The latter is the more CPU-consuming version which requires to follow the envelope of each voice to kill low-volume ones preferably. Note that the voice stealing continue to kill all voices started on the same event by default (i.e. all layers of the same note). (#344 #384 #353)
  • +
  • sfizz now internally uses a modulation matrix to link all modulation sources (CC, LFOs, and EGs) and targets (#335 #351 #386)
  • +
  • Added support for off_time and complete support for off_mode. The voice stealing logic was improved to take into account polyphony, note_polyphony and group_polyphony properly (#349 #352 #393 #413 #414 #467). Note that this support is also available for the engine polyphony. In this case, some additional voice will take over for the release duration (#477).
  • +
  • The wavetable quality has been improved (#347)
  • +
  • Support for offset_cc (#385)
  • +
  • sfizz_render now supports a --quality switch, which acts like the sample_quality= opcode (#408)
  • +
  • pitch_keycenter=sample is now taken into account (#362)
  • +
  • Support oscillator_detunecc (#434)
  • +
  • Support basic FM synthesis for oscillator regions (#436)
  • +
  • CC 7, 10 and 11 are now linked by default to pan, volume and expression (#475)
  • +
  • Support hint_ram_based for loading the whole samples in RAM (#353)
  • +
  • Support for loop_crossfade (#464)
  • +
  • All phase-related opcodes in sfizz now use the 0->1 convention, as does ARIA/Sforzando, instead of the 0->360 convention (#499)
  • +
+

Issues:

+
    +
  • Loading probable wavetable files, or wav files containing wavetable metadata now sets oscillator=on on the region (#431)
  • +
  • The default sample_quality was put back to 1 for live playing and 2 for freewheeling (#405)
  • +
  • Fix an unwanted copy in the realtime thread (#334)
  • +
  • Improve the filter shortcut path (#336)
  • +
  • Fix the default ampeg_attack and ampeg_release to avoid clicks (#437)
  • +
  • Corrected a race condition in freewheeling mode (#500)
  • +
  • Fixed a potential non-realtime operation in the realtime thread (#498)
  • +
  • Fix a bug when using a larger internal oversampling for regions with an offset value (#469)
  • +
  • Fix an issue when loops occured more than once in a block (#462)
  • +
  • Increase the range of the clamping on amplitude (#468) and pitch (#474)
  • +
  • Fix CC modulations with their source depth set to 0 (#475)
  • +
  • Fix an overshoot for crazily large cutoff values (#478); cutoffs are now clamped
  • +
  • Improve the file loading logic to keep files in memory for a short while in case they get reused (#425)
  • +
  • Fix the MIDNAM output for the case where extended CCs are used (#420)
  • +
  • Fixed a bug where release voices where not ignored on self-mask search (#348)
  • +
  • Improved the release logic in many cases (#324 #414 #413)
  • +
  • Set the level of the *noise generator to match ARIA's (#429)
  • +
  • Support for atom:Blank atoms in the LV2 plugin (#363)
  • +
  • Fixed amp_veltrack behavior (#371)
  • +
  • Fix the ADSRH envelope release rate (#376)
  • +
  • Fixed an error for files where the loop spans the entire file (#378)
  • +
  • Fixed sustain_cc behavior (#377)
  • +
  • Match the default volumes with ARIA (#381)
  • +
  • Properly set the loop_mode for release regions (#379)
  • +
  • Regions with end=0 are now properly disabled (#380)
  • +
  • Fix fil_random to be bipolar (#452)
  • +
  • The sequence order now properly starts at 1 (#451)
  • +
  • Fix an issue on Flush to Zero on some ARM platforms (#455)
  • +
  • Fix pitch_veltrack (#461)
  • +
  • Opcode values now properly stop at the < character (#439)
  • +
  • Fix various build errors and issues on all platforms (#345 #401 #400 #399 #417 #447 #449 #443 #453 #456 #459 #471 #484 #487 #488 #491)
  • +
  • The file dialog initial directory is now the root of the current loaded file (#428)
  • +
  • Existing and known CC values are now correctly taken into account for modulations (#421)
  • +
  • Fix various performance regressions and improved performance especially on ARM builds (#410 #412 #415 #426)
  • +
+

API changes:

+
    +
  • Added API support for setting the playback state, time position and signature (#354)
  • +
  • The API documentation on the sfizz's website has been streamlined alot !
  • +
+

See: GitHub release page

+ + +
+
+
+ +
+

+
+

+ Copyright © 2019-2024 + SFZTools Organization + + This site is open source. + + Improve this page + +

+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/news/posts/2020-10-25-sfizz-0.5.1-release/index.html b/news/posts/2020-10-25-sfizz-0.5.1-release/index.html new file mode 100644 index 00000000..d28968d0 --- /dev/null +++ b/news/posts/2020-10-25-sfizz-0.5.1-release/index.html @@ -0,0 +1,705 @@ + + + + + + + + + sfizz 0.5.1 release - SFZTools + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+
+
+

sfizz 0.5.1 release

Published by redtide at 2020-10-25 10:33:35

+
+
    +
  • Corrected race conditions that appeared with the new thread and file pools (#507 #508 #514 #521)
  • +
  • Take the internal oversampling factor into account for loop points, and solve an issue where loop points specified in sfz files were not taken into account (#506)
  • +
  • Fix an implementation error for the internal hash function when applied on a single byte (#512)
  • +
  • Knobs are linear in the AU plugin (#517)
  • +
  • Fix a crash in VSTGUI (#520)
  • +
  • Fix the resource path in the LV2 plugin under windows (#524)
  • +
  • Add MacOS make install rules (#525)
  • +
+

See: GitHub release page

+ + +
+
+
+ +
+

+
+

+ Copyright © 2019-2024 + SFZTools Organization + + This site is open source. + + Improve this page + +

+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/news/posts/2021-04-16-sfizz-1.0.0-release/index.html b/news/posts/2021-04-16-sfizz-1.0.0-release/index.html new file mode 100644 index 00000000..95812a6b --- /dev/null +++ b/news/posts/2021-04-16-sfizz-1.0.0-release/index.html @@ -0,0 +1,798 @@ + + + + + + + + + sfizz 1.0.0 release - SFZTools + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+
+
+

sfizz 1.0.0 release

Published by github-actions[bot] at 2021-04-16 15:31:49

+
+

We would like to thank to our contributors at https://opencollective.com/sfztools, as well as everyone who is regularly testing and pushing sfizz to the limits! Your support to this project in any form is much appreciated.

+

You can download builds catered for your Linux distribution over at OBS. The Mac, Windows and MOD packages are below in the release assets, as well as the source packages.

+

Headlines:

+
    +
  • SFZ v1 is virtually supported except for a handful of opcodes ! Please check + https://sfz.tools/sfizz/development/status/ for the up-to-date status of opcode support.
  • +
  • It is now possible to build sfizz without relying on libsndfile, using a set of libraries. This is now the + default build mode. Building with libsndfile can be enabled at configure time.
  • +
  • The library and plugins can now load DecentSampler files, and could accomodate other formats.
  • +
  • CCs, keyswitch range, key ranges and active keyswitch are now displayed in the editor for all plugins. + There has been a lot of UI work to make it more practical to use.
  • +
  • There is an OSC interface in the library, which allows to have introspection into the currently + loaded file, the state of CCs/keyswitches, and also set some parameters for loaded regions.
  • +
+

API/ABI changes for the library:

+
    +
  • The ABI is broken, leading to a major version change.
  • +
  • Thread-safety now has to be handled externally. The API has been updated to provide a concurrency spec.
  • +
  • The current version of the internal oversampling factor was too unstable and has been disabled for the time +being. The API and plugin parameters are staying for compatibility. A more robust implementation should come soon.
  • +
  • Added documentation in the API calls to make clear that sample-accurate triggering of voice requires + messages to be sent in order. The VST plugin in particular did not respect this and has been updated.
  • +
  • A new bpmTempo method has been added to pass tempo as beats-per-minute rather than seconds per beat. + The previous version is deprecated.
  • +
  • There are new HD (float) versions of API calls for note and CC events.
  • +
  • aftertouch is renamed as channel_aftertouch (for C) and channelAftertouch (for C++) throughout the API + to be more consistent with polyAftertouch.
  • +
+

UI:

+
    +
  • UI improvements and tweaks, adding themability in particular (#826 #824 #822 #821 #819 #818 #816 #812 #799 #743 #691 #674 #673 #672 #670 #662 #661 #656)
  • +
  • Added an info panel in the plugin UI (#793 #792 #791 #789 #788 #787 #782 #779 #773)
  • +
  • Improve font handling (#669 #622)
  • +
  • Improve file handling in the UI (#645 #659 #658) and enable the use of a "default user directory" or environment variable. + This also allows the plugin to "find" missing sfz files in a different environment (#644 #581 #572 #532)
  • +
  • Support DecentSampler and a generic importer for other formats (#725 #715 #680)
  • +
  • Show the current keyswitch on the editor and the virtual keybnoard (#665 #657)
  • +
  • Added a button to reset the scala file to default (#660)
  • +
  • The plugins now display an image through the image opcode (#770)
  • +
+

Plugins:

+
    +
  • Remove automation from un-automatable parameters in the VST plugin (#814)
  • +
  • Order VST events (#810 #803)
  • +
  • Added the option to build a VST2 version of sfizz if you have the SDK available (#708)
  • +
  • The C++ standard is set to 14 if you build the UI on LV2, or if you build the VST version. This will likely + increase to 17 shortly due to the dependency on VSTGUI. The ui-less LV2 plugin and the library remain C++11 + compatible. Note that windows builds already use C++17 on all targets. (#795)
  • +
  • Fix corruptions and crashes that happened in the LV2 plugin (#794 #668 #557)
  • +
  • The internal controllers of sfizz are now presented as parameters in the LV2 plugin. Experimental midi binding + is also active on them. By default the "direct" midi input is disabled and you need to map to the parameters. + A compile-time option is available to re-enable the midi input. (#776)
  • +
  • Fix crashes in the VST plugin (#709 #702 #681 #625)
  • +
  • Enable checking if file changed even when the transport is not running (#712 #689)
  • +
  • The Mac builds are now signed (#550 #552)
  • +
  • Update VST to 3.7.2 (#798)
  • +
+

Library:

+
    +
  • Small files with only zeroes are considered as *silence (#831)
  • +
  • The library uses an Hermite interpolation by default (#828 #829)
  • +
  • Fix an error where sample indices could wrap for massive pitch modulations (#825 #751)
  • +
  • Add high-definition versions of the API calls (#820)
  • +
  • Corrected a bug where regions with long release envelopes would not stop on sample ending (#811)
  • +
  • Support polyphonic aftertouch events, triggers and targets (#809 #764)
  • +
  • Support monophonic aftertouch events, triggers and targets (#765 #630 )
  • +
  • Corrected a regression where sfizz would stop loading the SFZ file if some sample files cannot be loaded (#806)
  • +
  • Update abseil and ghc::filesystem (#780), the tunings library from Surge (#785), catch2 (#711)
  • +
  • It is now possible to change some parameters of the regions after loading the file through the OSC interface (#761)
  • +
  • Improve the choking logic to match the spec and other implementations (#778)
  • +
  • Added modulation targets for amplitude, pan, width, position, pitch and volume (#760)
  • +
  • Support CC modifiers for end, loop_start and loop_end (#752)
  • +
  • Support CC modifiers for LFO targets (#753)
  • +
  • Support SFZ v1 extended CCs (#747)
  • +
  • Implement the sostenuto logic (#739)
  • +
  • Refactored opcode reading and storing (#748 #727 #721 #722 #720 #700 #559)
  • +
  • Fix the parser to support sharp (#) symbols in file names (#746)
  • +
  • Improved the ADSR transitions from decay to sustain, and from release to 0 (#734 #373)
  • +
  • Reset the smoothers if the playhead moved (#731 #710 #382)
  • +
  • Corrected a bug where the first sample was ignored on playback (#732 #394)
  • +
  • Added CC modulation for depth targets (#730)
  • +
  • If the sustain level is low enough the envelope is set to free-run (#723, #676)
  • +
  • Fix loop crossfades when the loop starts early in the sample (#718)
  • +
  • Fix random generators to match ARIA's behavior (#719)
  • +
  • Fix corruption appearing in some sample libraries (#717 #695)
  • +
  • Smoothers are now linear (#713 #714 #703)
  • +
  • Filter/EQ parameters are clamped even with modulation (#701 #699)
  • +
  • Implement v1 LFOs (#693)
  • +
  • Support count and loop_count (#654)
  • +
  • Fix a bug where the sample rate was not propagated properly to the flex EGs (#683)
  • +
  • Delay envelope start by the voice delay (#655 #432)
  • +
  • Support delay_oncc (#653)
  • +
  • Support sw_vel (#650)
  • +
  • Fix note_polyphony choking (#634 #529)
  • +
  • Respect the end opcode (#618)
  • +
  • Fix allocations that may happen on the RT thread (#621)
  • +
  • Fix the polyphony manager when the engine polyphony is changed after a file is loaded (#619)
  • +
  • Avoid reloading invalid files (#614)
  • +
  • Allow parsing of some badly formed files files (#600)
  • +
  • Match ARIA's LFOs (#613)
  • +
  • Added windowed sinc interpolation for sample_quality from 3 to 10 (#609)
  • +
  • Improve the Hermite interpolation (#597)
  • +
  • Update AtomicQueue to correct a bug (#583)
  • +
  • Support lfoN_beats (#553)
  • +
  • Add region and voice introspection to the OSC interface (#555)
  • +
  • Enable fast-math on MSVC (#567)
  • +
  • Fix crashes when building with libsndfile (#542 #543)
  • +
  • Properly pad and align the wav files upon reading (#538)
  • +
  • Add an alternative to libsndfile (#482 #534 #535 #536)
  • +
  • Handle gracefully having a different sw_default in a region (#531)
  • +
  • Support disjoint keyswitch ranges, as well as sw_lolast and sw_hilast (#526)
  • +
+

See: GitHub release page

+ + +
+
+
+ +
+

+
+

+ Copyright © 2019-2024 + SFZTools Organization + + This site is open source. + + Improve this page + +

+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/news/posts/2021-10-23-sfizz-1.1.0-release/index.html b/news/posts/2021-10-23-sfizz-1.1.0-release/index.html new file mode 100644 index 00000000..bc11fd0c --- /dev/null +++ b/news/posts/2021-10-23-sfizz-1.1.0-release/index.html @@ -0,0 +1,728 @@ + + + + + + + + + sfizz 1.1.0 release - SFZTools + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+
+
+

sfizz 1.1.0 release

Published by github-actions[bot] at 2021-10-23 21:38:57

+
+

New supports and plugins:

+
    +
  • Added a Puredata plugin (#869 #873 #874)
  • +
  • Added support for hint_sustain_cancels_release, which when activated reproduces a LinuxSampler behavior by sustaining already released notes (#898). A GUI option should come later.
  • +
  • Added support for amp_veltrack_oncc, pitch_veltrack_oncc, and fil_veltrack_oncc (#938)
  • +
  • Dynamic EGs are supported for flex EGs (#933 #932 #930)
  • +
  • Support _curvecc for extended CCs (#993)
  • +
  • Support lorand and hirand on CC-triggered regions (#997)
  • +
  • The engine now parses oscillator=auto and only enables oscillators on short samples with wavetable tags in the WAV metadata (#954)
  • +
+

Bug fixes and other improvements:

+
    +
  • Added a GUI volume meter (#859)
  • +
  • Implement support for VST3 keyswitch and midi note names (#877 #876)
  • +
  • Fixed a bug which could prevent parameters to be automated in Ardour (#893)
  • +
  • Fixed a bug where high definition CC, crossfade or aftertouch events could be ignored (#855 #896)
  • +
  • Resetting all controllers will now reset them to their default, instead of 0 (#905)
  • +
  • Filter resonance can now be negative (#919)
  • +
  • Corrected a bug for the LV2 plugin when used in the Ardour DAW (#924)
  • +
  • Respect the editor set for sfz files on MacOS (#925)
  • +
  • The JACK and PureData clients can use custom importers (#926)
  • +
  • Fix off_by behavior with long-releasing notes (#972)
  • +
  • Polyphony groups can have negative indices (#934)
  • +
  • Parse lokey=-1 as hikey=-1 (#941)
  • +
  • Improved the preloading for monolithic wave files (#935)
  • +
  • Since the default build of the LV2 plugin is not statically linked against libsndfile, the distribution license is changed to the ISC license (#943)
  • +
  • The DecentSampler importer now better translates the loop modes (#981)
  • +
  • Even when plugin-side automation is disabled (through SFIZZ_LV2_PSA), sustain and sostenu CC events will still go through to the plugin to improve the user experience on hosts that do not support automatic mapping of control ports to midi events through the LV2 midi:binding extension (#963).
  • +
  • Fixed a bug that could hang the background thread in the VST plugin (#984 #865 #864)
  • +
  • The current keyswitch is properly saved and restored with the plugin state (#961)
  • +
  • It is now possible to enter values for CCs on the plugin GUI by double clicking on the CC knob (#945). A high-resolution input option is also available on a right click.
  • +
  • Added a text interface to sfizz_jack (#973)
  • +
  • CC-triggered voices can be cut off by polyphony groups (#917)
  • +
  • Allow building on MacOS 10.9 (#990)
  • +
  • Improved the X11 runloop (#986)
  • +
  • Added a polyphony option to sfizz_render (#992)
  • +
  • Corrected a bug which prevented VST3 or LV2 plugins to be loaded by the Ardour DAW (#995)
  • +
  • Corrected a bug where octave and note offset were not reset upon loading a new file (#994)
  • +
  • Corrected a bug where CC-triggered voices could generate note-offs when cut by a polyphony group (#998)
  • +
  • Added man pages for sfizz_render and sfizz_jack (#999)
  • +
  • Various build system improvements for different platforms (#957 #958 #964 #967 #968 #989 #978 #942 #921 #920 #902 #849 #850 #856 #1001)
  • +
+

See: GitHub release page

+ + +
+
+
+ +
+

+
+

+ Copyright © 2019-2024 + SFZTools Organization + + This site is open source. + + Improve this page + +

+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/news/posts/2021-11-08-sfizz-1.1.1-release/index.html b/news/posts/2021-11-08-sfizz-1.1.1-release/index.html new file mode 100644 index 00000000..b3d62d70 --- /dev/null +++ b/news/posts/2021-11-08-sfizz-1.1.1-release/index.html @@ -0,0 +1,689 @@ + + + + + + + + + sfizz 1.1.1 release - SFZTools + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+
+ +
+
+ +
+

+
+

+ Copyright © 2019-2024 + SFZTools Organization + + This site is open source. + + Improve this page + +

+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/news/posts/2022-01-15-sfizz-1.2.0-release/index.html b/news/posts/2022-01-15-sfizz-1.2.0-release/index.html new file mode 100644 index 00000000..92b1b82b --- /dev/null +++ b/news/posts/2022-01-15-sfizz-1.2.0-release/index.html @@ -0,0 +1,715 @@ + + + + + + + + + sfizz 1.2.0 release - SFZTools + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+
+
+

sfizz 1.2.0 release

Big stuff:

+
    +
  • The sfizz engine now handles multiple stereo outputs, through the output opcode. The VST3 and LV2 plugins both have a 16-out version (as 8 stereo outs) (#1002)
  • +
  • The emscripten branch allows to run sfizz through WASM for your web-oriented needs. An example with WebMidi is available at https://sfz.tools/sfizz-webaudio/ (requires a Chromium-based browser), with source code at https://github.com/sfztools/sfizz-webaudio.
  • +
  • sfizz can now parse embedded samples in base64 data (#1041)
  • +
+

Smaller things:

+
    +
  • Added support in the plugin GUI/parameters for the "sustain cancels release" behavior of LinuxSampler.
  • +
  • The internal midi state is not reset when loading/reloading. This means in particular that controls changed on an instrument will be kept if you edit the underlying SFZ file (#1002)
  • +
  • Updated dependent libraries (#1018)
  • +
  • Support extended CCs 140 and 141 for "keydelta" (#1003)
  • +
  • Negative values for lokey will not disable the region anymore (#1019)
  • +
  • Updated the GUI option panel for the plugins (#1022) and some hints on the tab buttons (#1057)
  • +
  • Choke groups now act through CC switches (#1024)
  • +
  • Corrected a bug when reloading some files (#1028)
  • +
  • Added better support for files that are fully loaded in memory and not simply preloaded (#1031)
  • +
  • Corrected mistakes in the shelving filters (#1027)
  • +
  • Corrected a crash in some VST3 hosts (#1035)
  • +
  • Properly read exponential notation in floats (#1036)
  • +
  • sfizz is now clamping flex EG levels (#1037)
  • +
  • sw_last is now properly affected by octave_offset and note_offset (#1039)
  • +
  • Corrected a bug where long-tailed effects would be cut off (#1050)
  • +
  • Corrected a bug in the band rejection filters (#1052). The apf_1p filter still misbehaves and is disabled for now.
  • +
  • Numpad input is now properly handled (#1053)
  • +
  • In the LV2 plugin, plugin-side automation is now enabled by default (which means all SFZ control changes are naturally bound to incoming MIDI control changes and not controlled by a plugin parameter). You can disable this at build time and show the relevant parameters using SFIZZ_LV2_PSA. Too many hosts expect their plugins to respond to midi messages for things like pedal and volume. (#1054)
  • +
  • Added support for loprog/hiprog (#1058)
  • +
  • The LV2 plugin now has a string output parameter with the CC used by the instrument (#1060)
  • +
+

API changes: +- sfizz_enable_logging and sfizz_disable_logging (and their C++ counterparts) are deprecated, replaced by sfizz_get_callback_breakdown which needs to be called at the end of a callback by the host (#1034). All file writing is handled by the host for logging. +- Added sfizz_send_program_change and its C++ counterpart. +- Added sfizz_set_sustain_cancels_release and its C++ counterpart.

+

See: GitHub release page

+ + +
+
+
+ +
+

+
+

+ Copyright © 2019-2024 + SFZTools Organization + + This site is open source. + + Improve this page + +

+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/news/posts/2023-04-15-sfizz-1.2.1-release/index.html b/news/posts/2023-04-15-sfizz-1.2.1-release/index.html new file mode 100644 index 00000000..6ecbafbd --- /dev/null +++ b/news/posts/2023-04-15-sfizz-1.2.1-release/index.html @@ -0,0 +1,712 @@ + + + + + + + + + sfizz 1.2.1 release - SFZTools + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+
+
+

sfizz 1.2.1 release

    +
  • Mac OS Installer (#93 #1087)
  • +
  • Updated bundled dependencies and added more options to use those + preinstalled in system (#1104 #1117 #1143 #1145 #1149)
  • +
  • CI: Various updates and fixes for GitHub Actions; removed Travis and Appveyor
  • +
  • Add LFO frequency as an EG target (#1103)
  • +
  • New image_controls opcode to add a background image on UI' Controls tab (#1156)
  • +
  • Disabled temporarily the embedded sample test
  • +
  • Parse 0-valued note ons as note offs (#1072 #1073)
  • +
  • Correct a bug with dynamic updates on offed EGs (#2 #1088)
  • +
  • jack: Wait for CLI thread to finish on quit (#1097)
  • +
  • Fix libsndfile build and add CI (#1112 #1090)
  • +
  • Last keyswitches don't change the midi state (#1113 #1074)
  • +
  • Add section suffix to man pages (#1124)
  • +
  • HiDPI: Added a Zoom menu in Settings to apply an user' zoom ratio preference + (#1123 #1153)
  • +
  • Colored logo button on mouse hover (#1151)
  • +
  • Centered, full-size background images container (#1152)
  • +
  • XP style tooltips (#1156)
  • +
  • Window size has been changed to be compatible with ARIA banks + (775x335 for image backgrounds) (#1140 #1156)
  • +
  • The CC knobs rotator and title label have a white color + on a semi-transparent background in the controls tab (#1156)
  • +
  • The info tab becomes a dark and semi-transparent overlay dialog above the + Home tab; both will display the same background image when available (#1156)
  • +
  • Handle LV2 scaleFactor supportedOption (#1153)
  • +
  • Added suffix "-multi" to LV2 and VST3. (#1084)
  • +
  • Fix LV2 manifest when using PSA (#1114)
  • +
  • Fix 2 bugs in LV2 and VST3 for loads and stores (#1115 #1098)
  • +
+

See: GitHub release page

+ + +
+
+
+ +
+

+
+

+ Copyright © 2019-2024 + SFZTools Organization + + This site is open source. + + Improve this page + +

+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/news/posts/2023-08-26-sfizz-1.2.2-release/index.html b/news/posts/2023-08-26-sfizz-1.2.2-release/index.html new file mode 100644 index 00000000..9d8fadcf --- /dev/null +++ b/news/posts/2023-08-26-sfizz-1.2.2-release/index.html @@ -0,0 +1,746 @@ + + + + + + + + + sfizz 1.2.2 release - SFZTools + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+
+
+

sfizz 1.2.2 release

Library

+

Added

+
    +
  • WavPack support (#1129 by @lucianoiam)
  • +
+

Changed

+
    +
  • The project has been split into 2 repositories to separate + the library from the UI/plugins. (#1162)
  • +
  • Unclamp the cutoff and add OSC queries for the cutoff modifiers (#1100 by @PythonBlue)
  • +
  • SIMDe update (#1161 #1163)
  • +
  • Update cpuid, dr_libs and stb_vorbis libraries (#1164)
  • +
  • Various CMake and CI changes/fixes, also because the repository split + Minimum CMake version required is now 3.15 for Windows, 3.13 for other systems
  • +
  • Configurable amount of Control Change messages via CMake' MIDI_CC_COUNT variable, + Config.h is now a generated file
  • +
  • Update Abseil to 20230125.3 (#1169)
  • +
+

Fixed

+
    +
  • Crash fix for reloading SFZ: needed to copy preloadCallCount in FilePool + copy constructors (#1170 by @essej)
  • +
  • Temporary fixes to build benchmarks and tests (see #1148)
  • +
  • Fixed FlexEGs shape (#1176 #1177)
  • +
  • Fixed build on Windows
  • +
  • Fixed modulation matrix when CC modulations are per voice (#1173 #1179 by @PythonBlue)
  • +
  • Fixed and reenabled tests
  • +
  • Modifications to support universal x86_64/ARM builds on macOS (#1183 by @essej)
  • +
+

Removed

+
    +
  • VCPKG and MinGW CI builds
  • +
+

Plugins

+

Added

+
    +
  • New repository for UI/plugins. (sfztools/sfizz#1162)
  • +
  • CI: Restored the macOS universal build that was working in AppVeyor + (sfztools/sfizz@15628e13290e9be4e33ebf74aef286a5e3221579) but sacrifice + WavPack assembly optimizations, see + https://github.com/dbry/WavPack/issues/93
  • +
+

Changed

+
    +
  • Updated VST3 SDK to v3.7.7, including our custom AU wrapper (#25)
  • +
  • Updated VSTGUI to v4.12.3 (patched), this requires Windows 10 or later
  • +
  • Updated stb_image to v2.28
  • +
  • Updated LV2 bundled library to v1.18
  • +
  • Various CMake and CI changes/fixes, also because the repository split + Minimum CMake version required is now 3.15 for Windows, 3.13 for other systems
  • +
  • Using linters for all type of plugins supported in CI
  • +
+

Fixed

+
    +
  • Various code fixes for the newer version of VSTGUI; Windows 10 minimum required
  • +
+

Removed

+
    +
  • macOS: removed DMG resources and Carbon support from VSTGUI
  • +
+

See:

+ + + +
+
+
+ +
+

+
+

+ Copyright © 2019-2024 + SFZTools Organization + + This site is open source. + + Improve this page + +

+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/robots.txt b/robots.txt new file mode 100644 index 00000000..87a97c07 --- /dev/null +++ b/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Disallow: /search diff --git a/search/lunr.js b/search/lunr.js new file mode 100644 index 00000000..aca0a167 --- /dev/null +++ b/search/lunr.js @@ -0,0 +1,3475 @@ +/** + * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9 + * Copyright (C) 2020 Oliver Nightingale + * @license MIT + */ + +;(function(){ + +/** + * A convenience function for configuring and constructing + * a new lunr Index. + * + * A lunr.Builder instance is created and the pipeline setup + * with a trimmer, stop word filter and stemmer. + * + * This builder object is yielded to the configuration function + * that is passed as a parameter, allowing the list of fields + * and other builder parameters to be customised. + * + * All documents _must_ be added within the passed config function. + * + * @example + * var idx = lunr(function () { + * this.field('title') + * this.field('body') + * this.ref('id') + * + * documents.forEach(function (doc) { + * this.add(doc) + * }, this) + * }) + * + * @see {@link lunr.Builder} + * @see {@link lunr.Pipeline} + * @see {@link lunr.trimmer} + * @see {@link lunr.stopWordFilter} + * @see {@link lunr.stemmer} + * @namespace {function} lunr + */ +var lunr = function (config) { + var builder = new lunr.Builder + + builder.pipeline.add( + lunr.trimmer, + lunr.stopWordFilter, + lunr.stemmer + ) + + builder.searchPipeline.add( + lunr.stemmer + ) + + config.call(builder, builder) + return builder.build() +} + +lunr.version = "2.3.9" +/*! + * lunr.utils + * Copyright (C) 2020 Oliver Nightingale + */ + +/** + * A namespace containing utils for the rest of the lunr library + * @namespace lunr.utils + */ +lunr.utils = {} + +/** + * Print a warning message to the console. + * + * @param {String} message The message to be printed. + * @memberOf lunr.utils + * @function + */ +lunr.utils.warn = (function (global) { + /* eslint-disable no-console */ + return function (message) { + if (global.console && console.warn) { + console.warn(message) + } + } + /* eslint-enable no-console */ +})(this) + +/** + * Convert an object to a string. + * + * In the case of `null` and `undefined` the function returns + * the empty string, in all other cases the result of calling + * `toString` on the passed object is returned. + * + * @param {Any} obj The object to convert to a string. + * @return {String} string representation of the passed object. + * @memberOf lunr.utils + */ +lunr.utils.asString = function (obj) { + if (obj === void 0 || obj === null) { + return "" + } else { + return obj.toString() + } +} + +/** + * Clones an object. + * + * Will create a copy of an existing object such that any mutations + * on the copy cannot affect the original. + * + * Only shallow objects are supported, passing a nested object to this + * function will cause a TypeError. + * + * Objects with primitives, and arrays of primitives are supported. + * + * @param {Object} obj The object to clone. + * @return {Object} a clone of the passed object. + * @throws {TypeError} when a nested object is passed. + * @memberOf Utils + */ +lunr.utils.clone = function (obj) { + if (obj === null || obj === undefined) { + return obj + } + + var clone = Object.create(null), + keys = Object.keys(obj) + + for (var i = 0; i < keys.length; i++) { + var key = keys[i], + val = obj[key] + + if (Array.isArray(val)) { + clone[key] = val.slice() + continue + } + + if (typeof val === 'string' || + typeof val === 'number' || + typeof val === 'boolean') { + clone[key] = val + continue + } + + throw new TypeError("clone is not deep and does not support nested objects") + } + + return clone +} +lunr.FieldRef = function (docRef, fieldName, stringValue) { + this.docRef = docRef + this.fieldName = fieldName + this._stringValue = stringValue +} + +lunr.FieldRef.joiner = "/" + +lunr.FieldRef.fromString = function (s) { + var n = s.indexOf(lunr.FieldRef.joiner) + + if (n === -1) { + throw "malformed field ref string" + } + + var fieldRef = s.slice(0, n), + docRef = s.slice(n + 1) + + return new lunr.FieldRef (docRef, fieldRef, s) +} + +lunr.FieldRef.prototype.toString = function () { + if (this._stringValue == undefined) { + this._stringValue = this.fieldName + lunr.FieldRef.joiner + this.docRef + } + + return this._stringValue +} +/*! + * lunr.Set + * Copyright (C) 2020 Oliver Nightingale + */ + +/** + * A lunr set. + * + * @constructor + */ +lunr.Set = function (elements) { + this.elements = Object.create(null) + + if (elements) { + this.length = elements.length + + for (var i = 0; i < this.length; i++) { + this.elements[elements[i]] = true + } + } else { + this.length = 0 + } +} + +/** + * A complete set that contains all elements. + * + * @static + * @readonly + * @type {lunr.Set} + */ +lunr.Set.complete = { + intersect: function (other) { + return other + }, + + union: function () { + return this + }, + + contains: function () { + return true + } +} + +/** + * An empty set that contains no elements. + * + * @static + * @readonly + * @type {lunr.Set} + */ +lunr.Set.empty = { + intersect: function () { + return this + }, + + union: function (other) { + return other + }, + + contains: function () { + return false + } +} + +/** + * Returns true if this set contains the specified object. + * + * @param {object} object - Object whose presence in this set is to be tested. + * @returns {boolean} - True if this set contains the specified object. + */ +lunr.Set.prototype.contains = function (object) { + return !!this.elements[object] +} + +/** + * Returns a new set containing only the elements that are present in both + * this set and the specified set. + * + * @param {lunr.Set} other - set to intersect with this set. + * @returns {lunr.Set} a new set that is the intersection of this and the specified set. + */ + +lunr.Set.prototype.intersect = function (other) { + var a, b, elements, intersection = [] + + if (other === lunr.Set.complete) { + return this + } + + if (other === lunr.Set.empty) { + return other + } + + if (this.length < other.length) { + a = this + b = other + } else { + a = other + b = this + } + + elements = Object.keys(a.elements) + + for (var i = 0; i < elements.length; i++) { + var element = elements[i] + if (element in b.elements) { + intersection.push(element) + } + } + + return new lunr.Set (intersection) +} + +/** + * Returns a new set combining the elements of this and the specified set. + * + * @param {lunr.Set} other - set to union with this set. + * @return {lunr.Set} a new set that is the union of this and the specified set. + */ + +lunr.Set.prototype.union = function (other) { + if (other === lunr.Set.complete) { + return lunr.Set.complete + } + + if (other === lunr.Set.empty) { + return this + } + + return new lunr.Set(Object.keys(this.elements).concat(Object.keys(other.elements))) +} +/** + * A function to calculate the inverse document frequency for + * a posting. This is shared between the builder and the index + * + * @private + * @param {object} posting - The posting for a given term + * @param {number} documentCount - The total number of documents. + */ +lunr.idf = function (posting, documentCount) { + var documentsWithTerm = 0 + + for (var fieldName in posting) { + if (fieldName == '_index') continue // Ignore the term index, its not a field + documentsWithTerm += Object.keys(posting[fieldName]).length + } + + var x = (documentCount - documentsWithTerm + 0.5) / (documentsWithTerm + 0.5) + + return Math.log(1 + Math.abs(x)) +} + +/** + * A token wraps a string representation of a token + * as it is passed through the text processing pipeline. + * + * @constructor + * @param {string} [str=''] - The string token being wrapped. + * @param {object} [metadata={}] - Metadata associated with this token. + */ +lunr.Token = function (str, metadata) { + this.str = str || "" + this.metadata = metadata || {} +} + +/** + * Returns the token string that is being wrapped by this object. + * + * @returns {string} + */ +lunr.Token.prototype.toString = function () { + return this.str +} + +/** + * A token update function is used when updating or optionally + * when cloning a token. + * + * @callback lunr.Token~updateFunction + * @param {string} str - The string representation of the token. + * @param {Object} metadata - All metadata associated with this token. + */ + +/** + * Applies the given function to the wrapped string token. + * + * @example + * token.update(function (str, metadata) { + * return str.toUpperCase() + * }) + * + * @param {lunr.Token~updateFunction} fn - A function to apply to the token string. + * @returns {lunr.Token} + */ +lunr.Token.prototype.update = function (fn) { + this.str = fn(this.str, this.metadata) + return this +} + +/** + * Creates a clone of this token. Optionally a function can be + * applied to the cloned token. + * + * @param {lunr.Token~updateFunction} [fn] - An optional function to apply to the cloned token. + * @returns {lunr.Token} + */ +lunr.Token.prototype.clone = function (fn) { + fn = fn || function (s) { return s } + return new lunr.Token (fn(this.str, this.metadata), this.metadata) +} +/*! + * lunr.tokenizer + * Copyright (C) 2020 Oliver Nightingale + */ + +/** + * A function for splitting a string into tokens ready to be inserted into + * the search index. Uses `lunr.tokenizer.separator` to split strings, change + * the value of this property to change how strings are split into tokens. + * + * This tokenizer will convert its parameter to a string by calling `toString` and + * then will split this string on the character in `lunr.tokenizer.separator`. + * Arrays will have their elements converted to strings and wrapped in a lunr.Token. + * + * Optional metadata can be passed to the tokenizer, this metadata will be cloned and + * added as metadata to every token that is created from the object to be tokenized. + * + * @static + * @param {?(string|object|object[])} obj - The object to convert into tokens + * @param {?object} metadata - Optional metadata to associate with every token + * @returns {lunr.Token[]} + * @see {@link lunr.Pipeline} + */ +lunr.tokenizer = function (obj, metadata) { + if (obj == null || obj == undefined) { + return [] + } + + if (Array.isArray(obj)) { + return obj.map(function (t) { + return new lunr.Token( + lunr.utils.asString(t).toLowerCase(), + lunr.utils.clone(metadata) + ) + }) + } + + var str = obj.toString().toLowerCase(), + len = str.length, + tokens = [] + + for (var sliceEnd = 0, sliceStart = 0; sliceEnd <= len; sliceEnd++) { + var char = str.charAt(sliceEnd), + sliceLength = sliceEnd - sliceStart + + if ((char.match(lunr.tokenizer.separator) || sliceEnd == len)) { + + if (sliceLength > 0) { + var tokenMetadata = lunr.utils.clone(metadata) || {} + tokenMetadata["position"] = [sliceStart, sliceLength] + tokenMetadata["index"] = tokens.length + + tokens.push( + new lunr.Token ( + str.slice(sliceStart, sliceEnd), + tokenMetadata + ) + ) + } + + sliceStart = sliceEnd + 1 + } + + } + + return tokens +} + +/** + * The separator used to split a string into tokens. Override this property to change the behaviour of + * `lunr.tokenizer` behaviour when tokenizing strings. By default this splits on whitespace and hyphens. + * + * @static + * @see lunr.tokenizer + */ +lunr.tokenizer.separator = /[\s\-]+/ +/*! + * lunr.Pipeline + * Copyright (C) 2020 Oliver Nightingale + */ + +/** + * lunr.Pipelines maintain an ordered list of functions to be applied to all + * tokens in documents entering the search index and queries being ran against + * the index. + * + * An instance of lunr.Index created with the lunr shortcut will contain a + * pipeline with a stop word filter and an English language stemmer. Extra + * functions can be added before or after either of these functions or these + * default functions can be removed. + * + * When run the pipeline will call each function in turn, passing a token, the + * index of that token in the original list of all tokens and finally a list of + * all the original tokens. + * + * The output of functions in the pipeline will be passed to the next function + * in the pipeline. To exclude a token from entering the index the function + * should return undefined, the rest of the pipeline will not be called with + * this token. + * + * For serialisation of pipelines to work, all functions used in an instance of + * a pipeline should be registered with lunr.Pipeline. Registered functions can + * then be loaded. If trying to load a serialised pipeline that uses functions + * that are not registered an error will be thrown. + * + * If not planning on serialising the pipeline then registering pipeline functions + * is not necessary. + * + * @constructor + */ +lunr.Pipeline = function () { + this._stack = [] +} + +lunr.Pipeline.registeredFunctions = Object.create(null) + +/** + * A pipeline function maps lunr.Token to lunr.Token. A lunr.Token contains the token + * string as well as all known metadata. A pipeline function can mutate the token string + * or mutate (or add) metadata for a given token. + * + * A pipeline function can indicate that the passed token should be discarded by returning + * null, undefined or an empty string. This token will not be passed to any downstream pipeline + * functions and will not be added to the index. + * + * Multiple tokens can be returned by returning an array of tokens. Each token will be passed + * to any downstream pipeline functions and all will returned tokens will be added to the index. + * + * Any number of pipeline functions may be chained together using a lunr.Pipeline. + * + * @interface lunr.PipelineFunction + * @param {lunr.Token} token - A token from the document being processed. + * @param {number} i - The index of this token in the complete list of tokens for this document/field. + * @param {lunr.Token[]} tokens - All tokens for this document/field. + * @returns {(?lunr.Token|lunr.Token[])} + */ + +/** + * Register a function with the pipeline. + * + * Functions that are used in the pipeline should be registered if the pipeline + * needs to be serialised, or a serialised pipeline needs to be loaded. + * + * Registering a function does not add it to a pipeline, functions must still be + * added to instances of the pipeline for them to be used when running a pipeline. + * + * @param {lunr.PipelineFunction} fn - The function to check for. + * @param {String} label - The label to register this function with + */ +lunr.Pipeline.registerFunction = function (fn, label) { + if (label in this.registeredFunctions) { + lunr.utils.warn('Overwriting existing registered function: ' + label) + } + + fn.label = label + lunr.Pipeline.registeredFunctions[fn.label] = fn +} + +/** + * Warns if the function is not registered as a Pipeline function. + * + * @param {lunr.PipelineFunction} fn - The function to check for. + * @private + */ +lunr.Pipeline.warnIfFunctionNotRegistered = function (fn) { + var isRegistered = fn.label && (fn.label in this.registeredFunctions) + + if (!isRegistered) { + lunr.utils.warn('Function is not registered with pipeline. This may cause problems when serialising the index.\n', fn) + } +} + +/** + * Loads a previously serialised pipeline. + * + * All functions to be loaded must already be registered with lunr.Pipeline. + * If any function from the serialised data has not been registered then an + * error will be thrown. + * + * @param {Object} serialised - The serialised pipeline to load. + * @returns {lunr.Pipeline} + */ +lunr.Pipeline.load = function (serialised) { + var pipeline = new lunr.Pipeline + + serialised.forEach(function (fnName) { + var fn = lunr.Pipeline.registeredFunctions[fnName] + + if (fn) { + pipeline.add(fn) + } else { + throw new Error('Cannot load unregistered function: ' + fnName) + } + }) + + return pipeline +} + +/** + * Adds new functions to the end of the pipeline. + * + * Logs a warning if the function has not been registered. + * + * @param {lunr.PipelineFunction[]} functions - Any number of functions to add to the pipeline. + */ +lunr.Pipeline.prototype.add = function () { + var fns = Array.prototype.slice.call(arguments) + + fns.forEach(function (fn) { + lunr.Pipeline.warnIfFunctionNotRegistered(fn) + this._stack.push(fn) + }, this) +} + +/** + * Adds a single function after a function that already exists in the + * pipeline. + * + * Logs a warning if the function has not been registered. + * + * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline. + * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline. + */ +lunr.Pipeline.prototype.after = function (existingFn, newFn) { + lunr.Pipeline.warnIfFunctionNotRegistered(newFn) + + var pos = this._stack.indexOf(existingFn) + if (pos == -1) { + throw new Error('Cannot find existingFn') + } + + pos = pos + 1 + this._stack.splice(pos, 0, newFn) +} + +/** + * Adds a single function before a function that already exists in the + * pipeline. + * + * Logs a warning if the function has not been registered. + * + * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline. + * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline. + */ +lunr.Pipeline.prototype.before = function (existingFn, newFn) { + lunr.Pipeline.warnIfFunctionNotRegistered(newFn) + + var pos = this._stack.indexOf(existingFn) + if (pos == -1) { + throw new Error('Cannot find existingFn') + } + + this._stack.splice(pos, 0, newFn) +} + +/** + * Removes a function from the pipeline. + * + * @param {lunr.PipelineFunction} fn The function to remove from the pipeline. + */ +lunr.Pipeline.prototype.remove = function (fn) { + var pos = this._stack.indexOf(fn) + if (pos == -1) { + return + } + + this._stack.splice(pos, 1) +} + +/** + * Runs the current list of functions that make up the pipeline against the + * passed tokens. + * + * @param {Array} tokens The tokens to run through the pipeline. + * @returns {Array} + */ +lunr.Pipeline.prototype.run = function (tokens) { + var stackLength = this._stack.length + + for (var i = 0; i < stackLength; i++) { + var fn = this._stack[i] + var memo = [] + + for (var j = 0; j < tokens.length; j++) { + var result = fn(tokens[j], j, tokens) + + if (result === null || result === void 0 || result === '') continue + + if (Array.isArray(result)) { + for (var k = 0; k < result.length; k++) { + memo.push(result[k]) + } + } else { + memo.push(result) + } + } + + tokens = memo + } + + return tokens +} + +/** + * Convenience method for passing a string through a pipeline and getting + * strings out. This method takes care of wrapping the passed string in a + * token and mapping the resulting tokens back to strings. + * + * @param {string} str - The string to pass through the pipeline. + * @param {?object} metadata - Optional metadata to associate with the token + * passed to the pipeline. + * @returns {string[]} + */ +lunr.Pipeline.prototype.runString = function (str, metadata) { + var token = new lunr.Token (str, metadata) + + return this.run([token]).map(function (t) { + return t.toString() + }) +} + +/** + * Resets the pipeline by removing any existing processors. + * + */ +lunr.Pipeline.prototype.reset = function () { + this._stack = [] +} + +/** + * Returns a representation of the pipeline ready for serialisation. + * + * Logs a warning if the function has not been registered. + * + * @returns {Array} + */ +lunr.Pipeline.prototype.toJSON = function () { + return this._stack.map(function (fn) { + lunr.Pipeline.warnIfFunctionNotRegistered(fn) + + return fn.label + }) +} +/*! + * lunr.Vector + * Copyright (C) 2020 Oliver Nightingale + */ + +/** + * A vector is used to construct the vector space of documents and queries. These + * vectors support operations to determine the similarity between two documents or + * a document and a query. + * + * Normally no parameters are required for initializing a vector, but in the case of + * loading a previously dumped vector the raw elements can be provided to the constructor. + * + * For performance reasons vectors are implemented with a flat array, where an elements + * index is immediately followed by its value. E.g. [index, value, index, value]. This + * allows the underlying array to be as sparse as possible and still offer decent + * performance when being used for vector calculations. + * + * @constructor + * @param {Number[]} [elements] - The flat list of element index and element value pairs. + */ +lunr.Vector = function (elements) { + this._magnitude = 0 + this.elements = elements || [] +} + + +/** + * Calculates the position within the vector to insert a given index. + * + * This is used internally by insert and upsert. If there are duplicate indexes then + * the position is returned as if the value for that index were to be updated, but it + * is the callers responsibility to check whether there is a duplicate at that index + * + * @param {Number} insertIdx - The index at which the element should be inserted. + * @returns {Number} + */ +lunr.Vector.prototype.positionForIndex = function (index) { + // For an empty vector the tuple can be inserted at the beginning + if (this.elements.length == 0) { + return 0 + } + + var start = 0, + end = this.elements.length / 2, + sliceLength = end - start, + pivotPoint = Math.floor(sliceLength / 2), + pivotIndex = this.elements[pivotPoint * 2] + + while (sliceLength > 1) { + if (pivotIndex < index) { + start = pivotPoint + } + + if (pivotIndex > index) { + end = pivotPoint + } + + if (pivotIndex == index) { + break + } + + sliceLength = end - start + pivotPoint = start + Math.floor(sliceLength / 2) + pivotIndex = this.elements[pivotPoint * 2] + } + + if (pivotIndex == index) { + return pivotPoint * 2 + } + + if (pivotIndex > index) { + return pivotPoint * 2 + } + + if (pivotIndex < index) { + return (pivotPoint + 1) * 2 + } +} + +/** + * Inserts an element at an index within the vector. + * + * Does not allow duplicates, will throw an error if there is already an entry + * for this index. + * + * @param {Number} insertIdx - The index at which the element should be inserted. + * @param {Number} val - The value to be inserted into the vector. + */ +lunr.Vector.prototype.insert = function (insertIdx, val) { + this.upsert(insertIdx, val, function () { + throw "duplicate index" + }) +} + +/** + * Inserts or updates an existing index within the vector. + * + * @param {Number} insertIdx - The index at which the element should be inserted. + * @param {Number} val - The value to be inserted into the vector. + * @param {function} fn - A function that is called for updates, the existing value and the + * requested value are passed as arguments + */ +lunr.Vector.prototype.upsert = function (insertIdx, val, fn) { + this._magnitude = 0 + var position = this.positionForIndex(insertIdx) + + if (this.elements[position] == insertIdx) { + this.elements[position + 1] = fn(this.elements[position + 1], val) + } else { + this.elements.splice(position, 0, insertIdx, val) + } +} + +/** + * Calculates the magnitude of this vector. + * + * @returns {Number} + */ +lunr.Vector.prototype.magnitude = function () { + if (this._magnitude) return this._magnitude + + var sumOfSquares = 0, + elementsLength = this.elements.length + + for (var i = 1; i < elementsLength; i += 2) { + var val = this.elements[i] + sumOfSquares += val * val + } + + return this._magnitude = Math.sqrt(sumOfSquares) +} + +/** + * Calculates the dot product of this vector and another vector. + * + * @param {lunr.Vector} otherVector - The vector to compute the dot product with. + * @returns {Number} + */ +lunr.Vector.prototype.dot = function (otherVector) { + var dotProduct = 0, + a = this.elements, b = otherVector.elements, + aLen = a.length, bLen = b.length, + aVal = 0, bVal = 0, + i = 0, j = 0 + + while (i < aLen && j < bLen) { + aVal = a[i], bVal = b[j] + if (aVal < bVal) { + i += 2 + } else if (aVal > bVal) { + j += 2 + } else if (aVal == bVal) { + dotProduct += a[i + 1] * b[j + 1] + i += 2 + j += 2 + } + } + + return dotProduct +} + +/** + * Calculates the similarity between this vector and another vector. + * + * @param {lunr.Vector} otherVector - The other vector to calculate the + * similarity with. + * @returns {Number} + */ +lunr.Vector.prototype.similarity = function (otherVector) { + return this.dot(otherVector) / this.magnitude() || 0 +} + +/** + * Converts the vector to an array of the elements within the vector. + * + * @returns {Number[]} + */ +lunr.Vector.prototype.toArray = function () { + var output = new Array (this.elements.length / 2) + + for (var i = 1, j = 0; i < this.elements.length; i += 2, j++) { + output[j] = this.elements[i] + } + + return output +} + +/** + * A JSON serializable representation of the vector. + * + * @returns {Number[]} + */ +lunr.Vector.prototype.toJSON = function () { + return this.elements +} +/* eslint-disable */ +/*! + * lunr.stemmer + * Copyright (C) 2020 Oliver Nightingale + * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt + */ + +/** + * lunr.stemmer is an english language stemmer, this is a JavaScript + * implementation of the PorterStemmer taken from http://tartarus.org/~martin + * + * @static + * @implements {lunr.PipelineFunction} + * @param {lunr.Token} token - The string to stem + * @returns {lunr.Token} + * @see {@link lunr.Pipeline} + * @function + */ +lunr.stemmer = (function(){ + var step2list = { + "ational" : "ate", + "tional" : "tion", + "enci" : "ence", + "anci" : "ance", + "izer" : "ize", + "bli" : "ble", + "alli" : "al", + "entli" : "ent", + "eli" : "e", + "ousli" : "ous", + "ization" : "ize", + "ation" : "ate", + "ator" : "ate", + "alism" : "al", + "iveness" : "ive", + "fulness" : "ful", + "ousness" : "ous", + "aliti" : "al", + "iviti" : "ive", + "biliti" : "ble", + "logi" : "log" + }, + + step3list = { + "icate" : "ic", + "ative" : "", + "alize" : "al", + "iciti" : "ic", + "ical" : "ic", + "ful" : "", + "ness" : "" + }, + + c = "[^aeiou]", // consonant + v = "[aeiouy]", // vowel + C = c + "[^aeiouy]*", // consonant sequence + V = v + "[aeiou]*", // vowel sequence + + mgr0 = "^(" + C + ")?" + V + C, // [C]VC... is m>0 + meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$", // [C]VC[V] is m=1 + mgr1 = "^(" + C + ")?" + V + C + V + C, // [C]VCVC... is m>1 + s_v = "^(" + C + ")?" + v; // vowel in stem + + var re_mgr0 = new RegExp(mgr0); + var re_mgr1 = new RegExp(mgr1); + var re_meq1 = new RegExp(meq1); + var re_s_v = new RegExp(s_v); + + var re_1a = /^(.+?)(ss|i)es$/; + var re2_1a = /^(.+?)([^s])s$/; + var re_1b = /^(.+?)eed$/; + var re2_1b = /^(.+?)(ed|ing)$/; + var re_1b_2 = /.$/; + var re2_1b_2 = /(at|bl|iz)$/; + var re3_1b_2 = new RegExp("([^aeiouylsz])\\1$"); + var re4_1b_2 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + + var re_1c = /^(.+?[^aeiou])y$/; + var re_2 = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + + var re_3 = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + + var re_4 = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + var re2_4 = /^(.+?)(s|t)(ion)$/; + + var re_5 = /^(.+?)e$/; + var re_5_1 = /ll$/; + var re3_5 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + + var porterStemmer = function porterStemmer(w) { + var stem, + suffix, + firstch, + re, + re2, + re3, + re4; + + if (w.length < 3) { return w; } + + firstch = w.substr(0,1); + if (firstch == "y") { + w = firstch.toUpperCase() + w.substr(1); + } + + // Step 1a + re = re_1a + re2 = re2_1a; + + if (re.test(w)) { w = w.replace(re,"$1$2"); } + else if (re2.test(w)) { w = w.replace(re2,"$1$2"); } + + // Step 1b + re = re_1b; + re2 = re2_1b; + if (re.test(w)) { + var fp = re.exec(w); + re = re_mgr0; + if (re.test(fp[1])) { + re = re_1b_2; + w = w.replace(re,""); + } + } else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = re_s_v; + if (re2.test(stem)) { + w = stem; + re2 = re2_1b_2; + re3 = re3_1b_2; + re4 = re4_1b_2; + if (re2.test(w)) { w = w + "e"; } + else if (re3.test(w)) { re = re_1b_2; w = w.replace(re,""); } + else if (re4.test(w)) { w = w + "e"; } + } + } + + // Step 1c - replace suffix y or Y by i if preceded by a non-vowel which is not the first letter of the word (so cry -> cri, by -> by, say -> say) + re = re_1c; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + w = stem + "i"; + } + + // Step 2 + re = re_2; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = re_mgr0; + if (re.test(stem)) { + w = stem + step2list[suffix]; + } + } + + // Step 3 + re = re_3; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = re_mgr0; + if (re.test(stem)) { + w = stem + step3list[suffix]; + } + } + + // Step 4 + re = re_4; + re2 = re2_4; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = re_mgr1; + if (re.test(stem)) { + w = stem; + } + } else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = re_mgr1; + if (re2.test(stem)) { + w = stem; + } + } + + // Step 5 + re = re_5; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = re_mgr1; + re2 = re_meq1; + re3 = re3_5; + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) { + w = stem; + } + } + + re = re_5_1; + re2 = re_mgr1; + if (re.test(w) && re2.test(w)) { + re = re_1b_2; + w = w.replace(re,""); + } + + // and turn initial Y back to y + + if (firstch == "y") { + w = firstch.toLowerCase() + w.substr(1); + } + + return w; + }; + + return function (token) { + return token.update(porterStemmer); + } +})(); + +lunr.Pipeline.registerFunction(lunr.stemmer, 'stemmer') +/*! + * lunr.stopWordFilter + * Copyright (C) 2020 Oliver Nightingale + */ + +/** + * lunr.generateStopWordFilter builds a stopWordFilter function from the provided + * list of stop words. + * + * The built in lunr.stopWordFilter is built using this generator and can be used + * to generate custom stopWordFilters for applications or non English languages. + * + * @function + * @param {Array} token The token to pass through the filter + * @returns {lunr.PipelineFunction} + * @see lunr.Pipeline + * @see lunr.stopWordFilter + */ +lunr.generateStopWordFilter = function (stopWords) { + var words = stopWords.reduce(function (memo, stopWord) { + memo[stopWord] = stopWord + return memo + }, {}) + + return function (token) { + if (token && words[token.toString()] !== token.toString()) return token + } +} + +/** + * lunr.stopWordFilter is an English language stop word list filter, any words + * contained in the list will not be passed through the filter. + * + * This is intended to be used in the Pipeline. If the token does not pass the + * filter then undefined will be returned. + * + * @function + * @implements {lunr.PipelineFunction} + * @params {lunr.Token} token - A token to check for being a stop word. + * @returns {lunr.Token} + * @see {@link lunr.Pipeline} + */ +lunr.stopWordFilter = lunr.generateStopWordFilter([ + 'a', + 'able', + 'about', + 'across', + 'after', + 'all', + 'almost', + 'also', + 'am', + 'among', + 'an', + 'and', + 'any', + 'are', + 'as', + 'at', + 'be', + 'because', + 'been', + 'but', + 'by', + 'can', + 'cannot', + 'could', + 'dear', + 'did', + 'do', + 'does', + 'either', + 'else', + 'ever', + 'every', + 'for', + 'from', + 'get', + 'got', + 'had', + 'has', + 'have', + 'he', + 'her', + 'hers', + 'him', + 'his', + 'how', + 'however', + 'i', + 'if', + 'in', + 'into', + 'is', + 'it', + 'its', + 'just', + 'least', + 'let', + 'like', + 'likely', + 'may', + 'me', + 'might', + 'most', + 'must', + 'my', + 'neither', + 'no', + 'nor', + 'not', + 'of', + 'off', + 'often', + 'on', + 'only', + 'or', + 'other', + 'our', + 'own', + 'rather', + 'said', + 'say', + 'says', + 'she', + 'should', + 'since', + 'so', + 'some', + 'than', + 'that', + 'the', + 'their', + 'them', + 'then', + 'there', + 'these', + 'they', + 'this', + 'tis', + 'to', + 'too', + 'twas', + 'us', + 'wants', + 'was', + 'we', + 'were', + 'what', + 'when', + 'where', + 'which', + 'while', + 'who', + 'whom', + 'why', + 'will', + 'with', + 'would', + 'yet', + 'you', + 'your' +]) + +lunr.Pipeline.registerFunction(lunr.stopWordFilter, 'stopWordFilter') +/*! + * lunr.trimmer + * Copyright (C) 2020 Oliver Nightingale + */ + +/** + * lunr.trimmer is a pipeline function for trimming non word + * characters from the beginning and end of tokens before they + * enter the index. + * + * This implementation may not work correctly for non latin + * characters and should either be removed or adapted for use + * with languages with non-latin characters. + * + * @static + * @implements {lunr.PipelineFunction} + * @param {lunr.Token} token The token to pass through the filter + * @returns {lunr.Token} + * @see lunr.Pipeline + */ +lunr.trimmer = function (token) { + return token.update(function (s) { + return s.replace(/^\W+/, '').replace(/\W+$/, '') + }) +} + +lunr.Pipeline.registerFunction(lunr.trimmer, 'trimmer') +/*! + * lunr.TokenSet + * Copyright (C) 2020 Oliver Nightingale + */ + +/** + * A token set is used to store the unique list of all tokens + * within an index. Token sets are also used to represent an + * incoming query to the index, this query token set and index + * token set are then intersected to find which tokens to look + * up in the inverted index. + * + * A token set can hold multiple tokens, as in the case of the + * index token set, or it can hold a single token as in the + * case of a simple query token set. + * + * Additionally token sets are used to perform wildcard matching. + * Leading, contained and trailing wildcards are supported, and + * from this edit distance matching can also be provided. + * + * Token sets are implemented as a minimal finite state automata, + * where both common prefixes and suffixes are shared between tokens. + * This helps to reduce the space used for storing the token set. + * + * @constructor + */ +lunr.TokenSet = function () { + this.final = false + this.edges = {} + this.id = lunr.TokenSet._nextId + lunr.TokenSet._nextId += 1 +} + +/** + * Keeps track of the next, auto increment, identifier to assign + * to a new tokenSet. + * + * TokenSets require a unique identifier to be correctly minimised. + * + * @private + */ +lunr.TokenSet._nextId = 1 + +/** + * Creates a TokenSet instance from the given sorted array of words. + * + * @param {String[]} arr - A sorted array of strings to create the set from. + * @returns {lunr.TokenSet} + * @throws Will throw an error if the input array is not sorted. + */ +lunr.TokenSet.fromArray = function (arr) { + var builder = new lunr.TokenSet.Builder + + for (var i = 0, len = arr.length; i < len; i++) { + builder.insert(arr[i]) + } + + builder.finish() + return builder.root +} + +/** + * Creates a token set from a query clause. + * + * @private + * @param {Object} clause - A single clause from lunr.Query. + * @param {string} clause.term - The query clause term. + * @param {number} [clause.editDistance] - The optional edit distance for the term. + * @returns {lunr.TokenSet} + */ +lunr.TokenSet.fromClause = function (clause) { + if ('editDistance' in clause) { + return lunr.TokenSet.fromFuzzyString(clause.term, clause.editDistance) + } else { + return lunr.TokenSet.fromString(clause.term) + } +} + +/** + * Creates a token set representing a single string with a specified + * edit distance. + * + * Insertions, deletions, substitutions and transpositions are each + * treated as an edit distance of 1. + * + * Increasing the allowed edit distance will have a dramatic impact + * on the performance of both creating and intersecting these TokenSets. + * It is advised to keep the edit distance less than 3. + * + * @param {string} str - The string to create the token set from. + * @param {number} editDistance - The allowed edit distance to match. + * @returns {lunr.Vector} + */ +lunr.TokenSet.fromFuzzyString = function (str, editDistance) { + var root = new lunr.TokenSet + + var stack = [{ + node: root, + editsRemaining: editDistance, + str: str + }] + + while (stack.length) { + var frame = stack.pop() + + // no edit + if (frame.str.length > 0) { + var char = frame.str.charAt(0), + noEditNode + + if (char in frame.node.edges) { + noEditNode = frame.node.edges[char] + } else { + noEditNode = new lunr.TokenSet + frame.node.edges[char] = noEditNode + } + + if (frame.str.length == 1) { + noEditNode.final = true + } + + stack.push({ + node: noEditNode, + editsRemaining: frame.editsRemaining, + str: frame.str.slice(1) + }) + } + + if (frame.editsRemaining == 0) { + continue + } + + // insertion + if ("*" in frame.node.edges) { + var insertionNode = frame.node.edges["*"] + } else { + var insertionNode = new lunr.TokenSet + frame.node.edges["*"] = insertionNode + } + + if (frame.str.length == 0) { + insertionNode.final = true + } + + stack.push({ + node: insertionNode, + editsRemaining: frame.editsRemaining - 1, + str: frame.str + }) + + // deletion + // can only do a deletion if we have enough edits remaining + // and if there are characters left to delete in the string + if (frame.str.length > 1) { + stack.push({ + node: frame.node, + editsRemaining: frame.editsRemaining - 1, + str: frame.str.slice(1) + }) + } + + // deletion + // just removing the last character from the str + if (frame.str.length == 1) { + frame.node.final = true + } + + // substitution + // can only do a substitution if we have enough edits remaining + // and if there are characters left to substitute + if (frame.str.length >= 1) { + if ("*" in frame.node.edges) { + var substitutionNode = frame.node.edges["*"] + } else { + var substitutionNode = new lunr.TokenSet + frame.node.edges["*"] = substitutionNode + } + + if (frame.str.length == 1) { + substitutionNode.final = true + } + + stack.push({ + node: substitutionNode, + editsRemaining: frame.editsRemaining - 1, + str: frame.str.slice(1) + }) + } + + // transposition + // can only do a transposition if there are edits remaining + // and there are enough characters to transpose + if (frame.str.length > 1) { + var charA = frame.str.charAt(0), + charB = frame.str.charAt(1), + transposeNode + + if (charB in frame.node.edges) { + transposeNode = frame.node.edges[charB] + } else { + transposeNode = new lunr.TokenSet + frame.node.edges[charB] = transposeNode + } + + if (frame.str.length == 1) { + transposeNode.final = true + } + + stack.push({ + node: transposeNode, + editsRemaining: frame.editsRemaining - 1, + str: charA + frame.str.slice(2) + }) + } + } + + return root +} + +/** + * Creates a TokenSet from a string. + * + * The string may contain one or more wildcard characters (*) + * that will allow wildcard matching when intersecting with + * another TokenSet. + * + * @param {string} str - The string to create a TokenSet from. + * @returns {lunr.TokenSet} + */ +lunr.TokenSet.fromString = function (str) { + var node = new lunr.TokenSet, + root = node + + /* + * Iterates through all characters within the passed string + * appending a node for each character. + * + * When a wildcard character is found then a self + * referencing edge is introduced to continually match + * any number of any characters. + */ + for (var i = 0, len = str.length; i < len; i++) { + var char = str[i], + final = (i == len - 1) + + if (char == "*") { + node.edges[char] = node + node.final = final + + } else { + var next = new lunr.TokenSet + next.final = final + + node.edges[char] = next + node = next + } + } + + return root +} + +/** + * Converts this TokenSet into an array of strings + * contained within the TokenSet. + * + * This is not intended to be used on a TokenSet that + * contains wildcards, in these cases the results are + * undefined and are likely to cause an infinite loop. + * + * @returns {string[]} + */ +lunr.TokenSet.prototype.toArray = function () { + var words = [] + + var stack = [{ + prefix: "", + node: this + }] + + while (stack.length) { + var frame = stack.pop(), + edges = Object.keys(frame.node.edges), + len = edges.length + + if (frame.node.final) { + /* In Safari, at this point the prefix is sometimes corrupted, see: + * https://github.com/olivernn/lunr.js/issues/279 Calling any + * String.prototype method forces Safari to "cast" this string to what + * it's supposed to be, fixing the bug. */ + frame.prefix.charAt(0) + words.push(frame.prefix) + } + + for (var i = 0; i < len; i++) { + var edge = edges[i] + + stack.push({ + prefix: frame.prefix.concat(edge), + node: frame.node.edges[edge] + }) + } + } + + return words +} + +/** + * Generates a string representation of a TokenSet. + * + * This is intended to allow TokenSets to be used as keys + * in objects, largely to aid the construction and minimisation + * of a TokenSet. As such it is not designed to be a human + * friendly representation of the TokenSet. + * + * @returns {string} + */ +lunr.TokenSet.prototype.toString = function () { + // NOTE: Using Object.keys here as this.edges is very likely + // to enter 'hash-mode' with many keys being added + // + // avoiding a for-in loop here as it leads to the function + // being de-optimised (at least in V8). From some simple + // benchmarks the performance is comparable, but allowing + // V8 to optimize may mean easy performance wins in the future. + + if (this._str) { + return this._str + } + + var str = this.final ? '1' : '0', + labels = Object.keys(this.edges).sort(), + len = labels.length + + for (var i = 0; i < len; i++) { + var label = labels[i], + node = this.edges[label] + + str = str + label + node.id + } + + return str +} + +/** + * Returns a new TokenSet that is the intersection of + * this TokenSet and the passed TokenSet. + * + * This intersection will take into account any wildcards + * contained within the TokenSet. + * + * @param {lunr.TokenSet} b - An other TokenSet to intersect with. + * @returns {lunr.TokenSet} + */ +lunr.TokenSet.prototype.intersect = function (b) { + var output = new lunr.TokenSet, + frame = undefined + + var stack = [{ + qNode: b, + output: output, + node: this + }] + + while (stack.length) { + frame = stack.pop() + + // NOTE: As with the #toString method, we are using + // Object.keys and a for loop instead of a for-in loop + // as both of these objects enter 'hash' mode, causing + // the function to be de-optimised in V8 + var qEdges = Object.keys(frame.qNode.edges), + qLen = qEdges.length, + nEdges = Object.keys(frame.node.edges), + nLen = nEdges.length + + for (var q = 0; q < qLen; q++) { + var qEdge = qEdges[q] + + for (var n = 0; n < nLen; n++) { + var nEdge = nEdges[n] + + if (nEdge == qEdge || qEdge == '*') { + var node = frame.node.edges[nEdge], + qNode = frame.qNode.edges[qEdge], + final = node.final && qNode.final, + next = undefined + + if (nEdge in frame.output.edges) { + // an edge already exists for this character + // no need to create a new node, just set the finality + // bit unless this node is already final + next = frame.output.edges[nEdge] + next.final = next.final || final + + } else { + // no edge exists yet, must create one + // set the finality bit and insert it + // into the output + next = new lunr.TokenSet + next.final = final + frame.output.edges[nEdge] = next + } + + stack.push({ + qNode: qNode, + output: next, + node: node + }) + } + } + } + } + + return output +} +lunr.TokenSet.Builder = function () { + this.previousWord = "" + this.root = new lunr.TokenSet + this.uncheckedNodes = [] + this.minimizedNodes = {} +} + +lunr.TokenSet.Builder.prototype.insert = function (word) { + var node, + commonPrefix = 0 + + if (word < this.previousWord) { + throw new Error ("Out of order word insertion") + } + + for (var i = 0; i < word.length && i < this.previousWord.length; i++) { + if (word[i] != this.previousWord[i]) break + commonPrefix++ + } + + this.minimize(commonPrefix) + + if (this.uncheckedNodes.length == 0) { + node = this.root + } else { + node = this.uncheckedNodes[this.uncheckedNodes.length - 1].child + } + + for (var i = commonPrefix; i < word.length; i++) { + var nextNode = new lunr.TokenSet, + char = word[i] + + node.edges[char] = nextNode + + this.uncheckedNodes.push({ + parent: node, + char: char, + child: nextNode + }) + + node = nextNode + } + + node.final = true + this.previousWord = word +} + +lunr.TokenSet.Builder.prototype.finish = function () { + this.minimize(0) +} + +lunr.TokenSet.Builder.prototype.minimize = function (downTo) { + for (var i = this.uncheckedNodes.length - 1; i >= downTo; i--) { + var node = this.uncheckedNodes[i], + childKey = node.child.toString() + + if (childKey in this.minimizedNodes) { + node.parent.edges[node.char] = this.minimizedNodes[childKey] + } else { + // Cache the key for this node since + // we know it can't change anymore + node.child._str = childKey + + this.minimizedNodes[childKey] = node.child + } + + this.uncheckedNodes.pop() + } +} +/*! + * lunr.Index + * Copyright (C) 2020 Oliver Nightingale + */ + +/** + * An index contains the built index of all documents and provides a query interface + * to the index. + * + * Usually instances of lunr.Index will not be created using this constructor, instead + * lunr.Builder should be used to construct new indexes, or lunr.Index.load should be + * used to load previously built and serialized indexes. + * + * @constructor + * @param {Object} attrs - The attributes of the built search index. + * @param {Object} attrs.invertedIndex - An index of term/field to document reference. + * @param {Object} attrs.fieldVectors - Field vectors + * @param {lunr.TokenSet} attrs.tokenSet - An set of all corpus tokens. + * @param {string[]} attrs.fields - The names of indexed document fields. + * @param {lunr.Pipeline} attrs.pipeline - The pipeline to use for search terms. + */ +lunr.Index = function (attrs) { + this.invertedIndex = attrs.invertedIndex + this.fieldVectors = attrs.fieldVectors + this.tokenSet = attrs.tokenSet + this.fields = attrs.fields + this.pipeline = attrs.pipeline +} + +/** + * A result contains details of a document matching a search query. + * @typedef {Object} lunr.Index~Result + * @property {string} ref - The reference of the document this result represents. + * @property {number} score - A number between 0 and 1 representing how similar this document is to the query. + * @property {lunr.MatchData} matchData - Contains metadata about this match including which term(s) caused the match. + */ + +/** + * Although lunr provides the ability to create queries using lunr.Query, it also provides a simple + * query language which itself is parsed into an instance of lunr.Query. + * + * For programmatically building queries it is advised to directly use lunr.Query, the query language + * is best used for human entered text rather than program generated text. + * + * At its simplest queries can just be a single term, e.g. `hello`, multiple terms are also supported + * and will be combined with OR, e.g `hello world` will match documents that contain either 'hello' + * or 'world', though those that contain both will rank higher in the results. + * + * Wildcards can be included in terms to match one or more unspecified characters, these wildcards can + * be inserted anywhere within the term, and more than one wildcard can exist in a single term. Adding + * wildcards will increase the number of documents that will be found but can also have a negative + * impact on query performance, especially with wildcards at the beginning of a term. + * + * Terms can be restricted to specific fields, e.g. `title:hello`, only documents with the term + * hello in the title field will match this query. Using a field not present in the index will lead + * to an error being thrown. + * + * Modifiers can also be added to terms, lunr supports edit distance and boost modifiers on terms. A term + * boost will make documents matching that term score higher, e.g. `foo^5`. Edit distance is also supported + * to provide fuzzy matching, e.g. 'hello~2' will match documents with hello with an edit distance of 2. + * Avoid large values for edit distance to improve query performance. + * + * Each term also supports a presence modifier. By default a term's presence in document is optional, however + * this can be changed to either required or prohibited. For a term's presence to be required in a document the + * term should be prefixed with a '+', e.g. `+foo bar` is a search for documents that must contain 'foo' and + * optionally contain 'bar'. Conversely a leading '-' sets the terms presence to prohibited, i.e. it must not + * appear in a document, e.g. `-foo bar` is a search for documents that do not contain 'foo' but may contain 'bar'. + * + * To escape special characters the backslash character '\' can be used, this allows searches to include + * characters that would normally be considered modifiers, e.g. `foo\~2` will search for a term "foo~2" instead + * of attempting to apply a boost of 2 to the search term "foo". + * + * @typedef {string} lunr.Index~QueryString + * @example Simple single term query + * hello + * @example Multiple term query + * hello world + * @example term scoped to a field + * title:hello + * @example term with a boost of 10 + * hello^10 + * @example term with an edit distance of 2 + * hello~2 + * @example terms with presence modifiers + * -foo +bar baz + */ + +/** + * Performs a search against the index using lunr query syntax. + * + * Results will be returned sorted by their score, the most relevant results + * will be returned first. For details on how the score is calculated, please see + * the {@link https://lunrjs.com/guides/searching.html#scoring|guide}. + * + * For more programmatic querying use lunr.Index#query. + * + * @param {lunr.Index~QueryString} queryString - A string containing a lunr query. + * @throws {lunr.QueryParseError} If the passed query string cannot be parsed. + * @returns {lunr.Index~Result[]} + */ +lunr.Index.prototype.search = function (queryString) { + return this.query(function (query) { + var parser = new lunr.QueryParser(queryString, query) + parser.parse() + }) +} + +/** + * A query builder callback provides a query object to be used to express + * the query to perform on the index. + * + * @callback lunr.Index~queryBuilder + * @param {lunr.Query} query - The query object to build up. + * @this lunr.Query + */ + +/** + * Performs a query against the index using the yielded lunr.Query object. + * + * If performing programmatic queries against the index, this method is preferred + * over lunr.Index#search so as to avoid the additional query parsing overhead. + * + * A query object is yielded to the supplied function which should be used to + * express the query to be run against the index. + * + * Note that although this function takes a callback parameter it is _not_ an + * asynchronous operation, the callback is just yielded a query object to be + * customized. + * + * @param {lunr.Index~queryBuilder} fn - A function that is used to build the query. + * @returns {lunr.Index~Result[]} + */ +lunr.Index.prototype.query = function (fn) { + // for each query clause + // * process terms + // * expand terms from token set + // * find matching documents and metadata + // * get document vectors + // * score documents + + var query = new lunr.Query(this.fields), + matchingFields = Object.create(null), + queryVectors = Object.create(null), + termFieldCache = Object.create(null), + requiredMatches = Object.create(null), + prohibitedMatches = Object.create(null) + + /* + * To support field level boosts a query vector is created per + * field. An empty vector is eagerly created to support negated + * queries. + */ + for (var i = 0; i < this.fields.length; i++) { + queryVectors[this.fields[i]] = new lunr.Vector + } + + fn.call(query, query) + + for (var i = 0; i < query.clauses.length; i++) { + /* + * Unless the pipeline has been disabled for this term, which is + * the case for terms with wildcards, we need to pass the clause + * term through the search pipeline. A pipeline returns an array + * of processed terms. Pipeline functions may expand the passed + * term, which means we may end up performing multiple index lookups + * for a single query term. + */ + var clause = query.clauses[i], + terms = null, + clauseMatches = lunr.Set.empty + + if (clause.usePipeline) { + terms = this.pipeline.runString(clause.term, { + fields: clause.fields + }) + } else { + terms = [clause.term] + } + + for (var m = 0; m < terms.length; m++) { + var term = terms[m] + + /* + * Each term returned from the pipeline needs to use the same query + * clause object, e.g. the same boost and or edit distance. The + * simplest way to do this is to re-use the clause object but mutate + * its term property. + */ + clause.term = term + + /* + * From the term in the clause we create a token set which will then + * be used to intersect the indexes token set to get a list of terms + * to lookup in the inverted index + */ + var termTokenSet = lunr.TokenSet.fromClause(clause), + expandedTerms = this.tokenSet.intersect(termTokenSet).toArray() + + /* + * If a term marked as required does not exist in the tokenSet it is + * impossible for the search to return any matches. We set all the field + * scoped required matches set to empty and stop examining any further + * clauses. + */ + if (expandedTerms.length === 0 && clause.presence === lunr.Query.presence.REQUIRED) { + for (var k = 0; k < clause.fields.length; k++) { + var field = clause.fields[k] + requiredMatches[field] = lunr.Set.empty + } + + break + } + + for (var j = 0; j < expandedTerms.length; j++) { + /* + * For each term get the posting and termIndex, this is required for + * building the query vector. + */ + var expandedTerm = expandedTerms[j], + posting = this.invertedIndex[expandedTerm], + termIndex = posting._index + + for (var k = 0; k < clause.fields.length; k++) { + /* + * For each field that this query term is scoped by (by default + * all fields are in scope) we need to get all the document refs + * that have this term in that field. + * + * The posting is the entry in the invertedIndex for the matching + * term from above. + */ + var field = clause.fields[k], + fieldPosting = posting[field], + matchingDocumentRefs = Object.keys(fieldPosting), + termField = expandedTerm + "/" + field, + matchingDocumentsSet = new lunr.Set(matchingDocumentRefs) + + /* + * if the presence of this term is required ensure that the matching + * documents are added to the set of required matches for this clause. + * + */ + if (clause.presence == lunr.Query.presence.REQUIRED) { + clauseMatches = clauseMatches.union(matchingDocumentsSet) + + if (requiredMatches[field] === undefined) { + requiredMatches[field] = lunr.Set.complete + } + } + + /* + * if the presence of this term is prohibited ensure that the matching + * documents are added to the set of prohibited matches for this field, + * creating that set if it does not yet exist. + */ + if (clause.presence == lunr.Query.presence.PROHIBITED) { + if (prohibitedMatches[field] === undefined) { + prohibitedMatches[field] = lunr.Set.empty + } + + prohibitedMatches[field] = prohibitedMatches[field].union(matchingDocumentsSet) + + /* + * Prohibited matches should not be part of the query vector used for + * similarity scoring and no metadata should be extracted so we continue + * to the next field + */ + continue + } + + /* + * The query field vector is populated using the termIndex found for + * the term and a unit value with the appropriate boost applied. + * Using upsert because there could already be an entry in the vector + * for the term we are working with. In that case we just add the scores + * together. + */ + queryVectors[field].upsert(termIndex, clause.boost, function (a, b) { return a + b }) + + /** + * If we've already seen this term, field combo then we've already collected + * the matching documents and metadata, no need to go through all that again + */ + if (termFieldCache[termField]) { + continue + } + + for (var l = 0; l < matchingDocumentRefs.length; l++) { + /* + * All metadata for this term/field/document triple + * are then extracted and collected into an instance + * of lunr.MatchData ready to be returned in the query + * results + */ + var matchingDocumentRef = matchingDocumentRefs[l], + matchingFieldRef = new lunr.FieldRef (matchingDocumentRef, field), + metadata = fieldPosting[matchingDocumentRef], + fieldMatch + + if ((fieldMatch = matchingFields[matchingFieldRef]) === undefined) { + matchingFields[matchingFieldRef] = new lunr.MatchData (expandedTerm, field, metadata) + } else { + fieldMatch.add(expandedTerm, field, metadata) + } + + } + + termFieldCache[termField] = true + } + } + } + + /** + * If the presence was required we need to update the requiredMatches field sets. + * We do this after all fields for the term have collected their matches because + * the clause terms presence is required in _any_ of the fields not _all_ of the + * fields. + */ + if (clause.presence === lunr.Query.presence.REQUIRED) { + for (var k = 0; k < clause.fields.length; k++) { + var field = clause.fields[k] + requiredMatches[field] = requiredMatches[field].intersect(clauseMatches) + } + } + } + + /** + * Need to combine the field scoped required and prohibited + * matching documents into a global set of required and prohibited + * matches + */ + var allRequiredMatches = lunr.Set.complete, + allProhibitedMatches = lunr.Set.empty + + for (var i = 0; i < this.fields.length; i++) { + var field = this.fields[i] + + if (requiredMatches[field]) { + allRequiredMatches = allRequiredMatches.intersect(requiredMatches[field]) + } + + if (prohibitedMatches[field]) { + allProhibitedMatches = allProhibitedMatches.union(prohibitedMatches[field]) + } + } + + var matchingFieldRefs = Object.keys(matchingFields), + results = [], + matches = Object.create(null) + + /* + * If the query is negated (contains only prohibited terms) + * we need to get _all_ fieldRefs currently existing in the + * index. This is only done when we know that the query is + * entirely prohibited terms to avoid any cost of getting all + * fieldRefs unnecessarily. + * + * Additionally, blank MatchData must be created to correctly + * populate the results. + */ + if (query.isNegated()) { + matchingFieldRefs = Object.keys(this.fieldVectors) + + for (var i = 0; i < matchingFieldRefs.length; i++) { + var matchingFieldRef = matchingFieldRefs[i] + var fieldRef = lunr.FieldRef.fromString(matchingFieldRef) + matchingFields[matchingFieldRef] = new lunr.MatchData + } + } + + for (var i = 0; i < matchingFieldRefs.length; i++) { + /* + * Currently we have document fields that match the query, but we + * need to return documents. The matchData and scores are combined + * from multiple fields belonging to the same document. + * + * Scores are calculated by field, using the query vectors created + * above, and combined into a final document score using addition. + */ + var fieldRef = lunr.FieldRef.fromString(matchingFieldRefs[i]), + docRef = fieldRef.docRef + + if (!allRequiredMatches.contains(docRef)) { + continue + } + + if (allProhibitedMatches.contains(docRef)) { + continue + } + + var fieldVector = this.fieldVectors[fieldRef], + score = queryVectors[fieldRef.fieldName].similarity(fieldVector), + docMatch + + if ((docMatch = matches[docRef]) !== undefined) { + docMatch.score += score + docMatch.matchData.combine(matchingFields[fieldRef]) + } else { + var match = { + ref: docRef, + score: score, + matchData: matchingFields[fieldRef] + } + matches[docRef] = match + results.push(match) + } + } + + /* + * Sort the results objects by score, highest first. + */ + return results.sort(function (a, b) { + return b.score - a.score + }) +} + +/** + * Prepares the index for JSON serialization. + * + * The schema for this JSON blob will be described in a + * separate JSON schema file. + * + * @returns {Object} + */ +lunr.Index.prototype.toJSON = function () { + var invertedIndex = Object.keys(this.invertedIndex) + .sort() + .map(function (term) { + return [term, this.invertedIndex[term]] + }, this) + + var fieldVectors = Object.keys(this.fieldVectors) + .map(function (ref) { + return [ref, this.fieldVectors[ref].toJSON()] + }, this) + + return { + version: lunr.version, + fields: this.fields, + fieldVectors: fieldVectors, + invertedIndex: invertedIndex, + pipeline: this.pipeline.toJSON() + } +} + +/** + * Loads a previously serialized lunr.Index + * + * @param {Object} serializedIndex - A previously serialized lunr.Index + * @returns {lunr.Index} + */ +lunr.Index.load = function (serializedIndex) { + var attrs = {}, + fieldVectors = {}, + serializedVectors = serializedIndex.fieldVectors, + invertedIndex = Object.create(null), + serializedInvertedIndex = serializedIndex.invertedIndex, + tokenSetBuilder = new lunr.TokenSet.Builder, + pipeline = lunr.Pipeline.load(serializedIndex.pipeline) + + if (serializedIndex.version != lunr.version) { + lunr.utils.warn("Version mismatch when loading serialised index. Current version of lunr '" + lunr.version + "' does not match serialized index '" + serializedIndex.version + "'") + } + + for (var i = 0; i < serializedVectors.length; i++) { + var tuple = serializedVectors[i], + ref = tuple[0], + elements = tuple[1] + + fieldVectors[ref] = new lunr.Vector(elements) + } + + for (var i = 0; i < serializedInvertedIndex.length; i++) { + var tuple = serializedInvertedIndex[i], + term = tuple[0], + posting = tuple[1] + + tokenSetBuilder.insert(term) + invertedIndex[term] = posting + } + + tokenSetBuilder.finish() + + attrs.fields = serializedIndex.fields + + attrs.fieldVectors = fieldVectors + attrs.invertedIndex = invertedIndex + attrs.tokenSet = tokenSetBuilder.root + attrs.pipeline = pipeline + + return new lunr.Index(attrs) +} +/*! + * lunr.Builder + * Copyright (C) 2020 Oliver Nightingale + */ + +/** + * lunr.Builder performs indexing on a set of documents and + * returns instances of lunr.Index ready for querying. + * + * All configuration of the index is done via the builder, the + * fields to index, the document reference, the text processing + * pipeline and document scoring parameters are all set on the + * builder before indexing. + * + * @constructor + * @property {string} _ref - Internal reference to the document reference field. + * @property {string[]} _fields - Internal reference to the document fields to index. + * @property {object} invertedIndex - The inverted index maps terms to document fields. + * @property {object} documentTermFrequencies - Keeps track of document term frequencies. + * @property {object} documentLengths - Keeps track of the length of documents added to the index. + * @property {lunr.tokenizer} tokenizer - Function for splitting strings into tokens for indexing. + * @property {lunr.Pipeline} pipeline - The pipeline performs text processing on tokens before indexing. + * @property {lunr.Pipeline} searchPipeline - A pipeline for processing search terms before querying the index. + * @property {number} documentCount - Keeps track of the total number of documents indexed. + * @property {number} _b - A parameter to control field length normalization, setting this to 0 disabled normalization, 1 fully normalizes field lengths, the default value is 0.75. + * @property {number} _k1 - A parameter to control how quickly an increase in term frequency results in term frequency saturation, the default value is 1.2. + * @property {number} termIndex - A counter incremented for each unique term, used to identify a terms position in the vector space. + * @property {array} metadataWhitelist - A list of metadata keys that have been whitelisted for entry in the index. + */ +lunr.Builder = function () { + this._ref = "id" + this._fields = Object.create(null) + this._documents = Object.create(null) + this.invertedIndex = Object.create(null) + this.fieldTermFrequencies = {} + this.fieldLengths = {} + this.tokenizer = lunr.tokenizer + this.pipeline = new lunr.Pipeline + this.searchPipeline = new lunr.Pipeline + this.documentCount = 0 + this._b = 0.75 + this._k1 = 1.2 + this.termIndex = 0 + this.metadataWhitelist = [] +} + +/** + * Sets the document field used as the document reference. Every document must have this field. + * The type of this field in the document should be a string, if it is not a string it will be + * coerced into a string by calling toString. + * + * The default ref is 'id'. + * + * The ref should _not_ be changed during indexing, it should be set before any documents are + * added to the index. Changing it during indexing can lead to inconsistent results. + * + * @param {string} ref - The name of the reference field in the document. + */ +lunr.Builder.prototype.ref = function (ref) { + this._ref = ref +} + +/** + * A function that is used to extract a field from a document. + * + * Lunr expects a field to be at the top level of a document, if however the field + * is deeply nested within a document an extractor function can be used to extract + * the right field for indexing. + * + * @callback fieldExtractor + * @param {object} doc - The document being added to the index. + * @returns {?(string|object|object[])} obj - The object that will be indexed for this field. + * @example Extracting a nested field + * function (doc) { return doc.nested.field } + */ + +/** + * Adds a field to the list of document fields that will be indexed. Every document being + * indexed should have this field. Null values for this field in indexed documents will + * not cause errors but will limit the chance of that document being retrieved by searches. + * + * All fields should be added before adding documents to the index. Adding fields after + * a document has been indexed will have no effect on already indexed documents. + * + * Fields can be boosted at build time. This allows terms within that field to have more + * importance when ranking search results. Use a field boost to specify that matches within + * one field are more important than other fields. + * + * @param {string} fieldName - The name of a field to index in all documents. + * @param {object} attributes - Optional attributes associated with this field. + * @param {number} [attributes.boost=1] - Boost applied to all terms within this field. + * @param {fieldExtractor} [attributes.extractor] - Function to extract a field from a document. + * @throws {RangeError} fieldName cannot contain unsupported characters '/' + */ +lunr.Builder.prototype.field = function (fieldName, attributes) { + if (/\//.test(fieldName)) { + throw new RangeError ("Field '" + fieldName + "' contains illegal character '/'") + } + + this._fields[fieldName] = attributes || {} +} + +/** + * A parameter to tune the amount of field length normalisation that is applied when + * calculating relevance scores. A value of 0 will completely disable any normalisation + * and a value of 1 will fully normalise field lengths. The default is 0.75. Values of b + * will be clamped to the range 0 - 1. + * + * @param {number} number - The value to set for this tuning parameter. + */ +lunr.Builder.prototype.b = function (number) { + if (number < 0) { + this._b = 0 + } else if (number > 1) { + this._b = 1 + } else { + this._b = number + } +} + +/** + * A parameter that controls the speed at which a rise in term frequency results in term + * frequency saturation. The default value is 1.2. Setting this to a higher value will give + * slower saturation levels, a lower value will result in quicker saturation. + * + * @param {number} number - The value to set for this tuning parameter. + */ +lunr.Builder.prototype.k1 = function (number) { + this._k1 = number +} + +/** + * Adds a document to the index. + * + * Before adding fields to the index the index should have been fully setup, with the document + * ref and all fields to index already having been specified. + * + * The document must have a field name as specified by the ref (by default this is 'id') and + * it should have all fields defined for indexing, though null or undefined values will not + * cause errors. + * + * Entire documents can be boosted at build time. Applying a boost to a document indicates that + * this document should rank higher in search results than other documents. + * + * @param {object} doc - The document to add to the index. + * @param {object} attributes - Optional attributes associated with this document. + * @param {number} [attributes.boost=1] - Boost applied to all terms within this document. + */ +lunr.Builder.prototype.add = function (doc, attributes) { + var docRef = doc[this._ref], + fields = Object.keys(this._fields) + + this._documents[docRef] = attributes || {} + this.documentCount += 1 + + for (var i = 0; i < fields.length; i++) { + var fieldName = fields[i], + extractor = this._fields[fieldName].extractor, + field = extractor ? extractor(doc) : doc[fieldName], + tokens = this.tokenizer(field, { + fields: [fieldName] + }), + terms = this.pipeline.run(tokens), + fieldRef = new lunr.FieldRef (docRef, fieldName), + fieldTerms = Object.create(null) + + this.fieldTermFrequencies[fieldRef] = fieldTerms + this.fieldLengths[fieldRef] = 0 + + // store the length of this field for this document + this.fieldLengths[fieldRef] += terms.length + + // calculate term frequencies for this field + for (var j = 0; j < terms.length; j++) { + var term = terms[j] + + if (fieldTerms[term] == undefined) { + fieldTerms[term] = 0 + } + + fieldTerms[term] += 1 + + // add to inverted index + // create an initial posting if one doesn't exist + if (this.invertedIndex[term] == undefined) { + var posting = Object.create(null) + posting["_index"] = this.termIndex + this.termIndex += 1 + + for (var k = 0; k < fields.length; k++) { + posting[fields[k]] = Object.create(null) + } + + this.invertedIndex[term] = posting + } + + // add an entry for this term/fieldName/docRef to the invertedIndex + if (this.invertedIndex[term][fieldName][docRef] == undefined) { + this.invertedIndex[term][fieldName][docRef] = Object.create(null) + } + + // store all whitelisted metadata about this token in the + // inverted index + for (var l = 0; l < this.metadataWhitelist.length; l++) { + var metadataKey = this.metadataWhitelist[l], + metadata = term.metadata[metadataKey] + + if (this.invertedIndex[term][fieldName][docRef][metadataKey] == undefined) { + this.invertedIndex[term][fieldName][docRef][metadataKey] = [] + } + + this.invertedIndex[term][fieldName][docRef][metadataKey].push(metadata) + } + } + + } +} + +/** + * Calculates the average document length for this index + * + * @private + */ +lunr.Builder.prototype.calculateAverageFieldLengths = function () { + + var fieldRefs = Object.keys(this.fieldLengths), + numberOfFields = fieldRefs.length, + accumulator = {}, + documentsWithField = {} + + for (var i = 0; i < numberOfFields; i++) { + var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]), + field = fieldRef.fieldName + + documentsWithField[field] || (documentsWithField[field] = 0) + documentsWithField[field] += 1 + + accumulator[field] || (accumulator[field] = 0) + accumulator[field] += this.fieldLengths[fieldRef] + } + + var fields = Object.keys(this._fields) + + for (var i = 0; i < fields.length; i++) { + var fieldName = fields[i] + accumulator[fieldName] = accumulator[fieldName] / documentsWithField[fieldName] + } + + this.averageFieldLength = accumulator +} + +/** + * Builds a vector space model of every document using lunr.Vector + * + * @private + */ +lunr.Builder.prototype.createFieldVectors = function () { + var fieldVectors = {}, + fieldRefs = Object.keys(this.fieldTermFrequencies), + fieldRefsLength = fieldRefs.length, + termIdfCache = Object.create(null) + + for (var i = 0; i < fieldRefsLength; i++) { + var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]), + fieldName = fieldRef.fieldName, + fieldLength = this.fieldLengths[fieldRef], + fieldVector = new lunr.Vector, + termFrequencies = this.fieldTermFrequencies[fieldRef], + terms = Object.keys(termFrequencies), + termsLength = terms.length + + + var fieldBoost = this._fields[fieldName].boost || 1, + docBoost = this._documents[fieldRef.docRef].boost || 1 + + for (var j = 0; j < termsLength; j++) { + var term = terms[j], + tf = termFrequencies[term], + termIndex = this.invertedIndex[term]._index, + idf, score, scoreWithPrecision + + if (termIdfCache[term] === undefined) { + idf = lunr.idf(this.invertedIndex[term], this.documentCount) + termIdfCache[term] = idf + } else { + idf = termIdfCache[term] + } + + score = idf * ((this._k1 + 1) * tf) / (this._k1 * (1 - this._b + this._b * (fieldLength / this.averageFieldLength[fieldName])) + tf) + score *= fieldBoost + score *= docBoost + scoreWithPrecision = Math.round(score * 1000) / 1000 + // Converts 1.23456789 to 1.234. + // Reducing the precision so that the vectors take up less + // space when serialised. Doing it now so that they behave + // the same before and after serialisation. Also, this is + // the fastest approach to reducing a number's precision in + // JavaScript. + + fieldVector.insert(termIndex, scoreWithPrecision) + } + + fieldVectors[fieldRef] = fieldVector + } + + this.fieldVectors = fieldVectors +} + +/** + * Creates a token set of all tokens in the index using lunr.TokenSet + * + * @private + */ +lunr.Builder.prototype.createTokenSet = function () { + this.tokenSet = lunr.TokenSet.fromArray( + Object.keys(this.invertedIndex).sort() + ) +} + +/** + * Builds the index, creating an instance of lunr.Index. + * + * This completes the indexing process and should only be called + * once all documents have been added to the index. + * + * @returns {lunr.Index} + */ +lunr.Builder.prototype.build = function () { + this.calculateAverageFieldLengths() + this.createFieldVectors() + this.createTokenSet() + + return new lunr.Index({ + invertedIndex: this.invertedIndex, + fieldVectors: this.fieldVectors, + tokenSet: this.tokenSet, + fields: Object.keys(this._fields), + pipeline: this.searchPipeline + }) +} + +/** + * Applies a plugin to the index builder. + * + * A plugin is a function that is called with the index builder as its context. + * Plugins can be used to customise or extend the behaviour of the index + * in some way. A plugin is just a function, that encapsulated the custom + * behaviour that should be applied when building the index. + * + * The plugin function will be called with the index builder as its argument, additional + * arguments can also be passed when calling use. The function will be called + * with the index builder as its context. + * + * @param {Function} plugin The plugin to apply. + */ +lunr.Builder.prototype.use = function (fn) { + var args = Array.prototype.slice.call(arguments, 1) + args.unshift(this) + fn.apply(this, args) +} +/** + * Contains and collects metadata about a matching document. + * A single instance of lunr.MatchData is returned as part of every + * lunr.Index~Result. + * + * @constructor + * @param {string} term - The term this match data is associated with + * @param {string} field - The field in which the term was found + * @param {object} metadata - The metadata recorded about this term in this field + * @property {object} metadata - A cloned collection of metadata associated with this document. + * @see {@link lunr.Index~Result} + */ +lunr.MatchData = function (term, field, metadata) { + var clonedMetadata = Object.create(null), + metadataKeys = Object.keys(metadata || {}) + + // Cloning the metadata to prevent the original + // being mutated during match data combination. + // Metadata is kept in an array within the inverted + // index so cloning the data can be done with + // Array#slice + for (var i = 0; i < metadataKeys.length; i++) { + var key = metadataKeys[i] + clonedMetadata[key] = metadata[key].slice() + } + + this.metadata = Object.create(null) + + if (term !== undefined) { + this.metadata[term] = Object.create(null) + this.metadata[term][field] = clonedMetadata + } +} + +/** + * An instance of lunr.MatchData will be created for every term that matches a + * document. However only one instance is required in a lunr.Index~Result. This + * method combines metadata from another instance of lunr.MatchData with this + * objects metadata. + * + * @param {lunr.MatchData} otherMatchData - Another instance of match data to merge with this one. + * @see {@link lunr.Index~Result} + */ +lunr.MatchData.prototype.combine = function (otherMatchData) { + var terms = Object.keys(otherMatchData.metadata) + + for (var i = 0; i < terms.length; i++) { + var term = terms[i], + fields = Object.keys(otherMatchData.metadata[term]) + + if (this.metadata[term] == undefined) { + this.metadata[term] = Object.create(null) + } + + for (var j = 0; j < fields.length; j++) { + var field = fields[j], + keys = Object.keys(otherMatchData.metadata[term][field]) + + if (this.metadata[term][field] == undefined) { + this.metadata[term][field] = Object.create(null) + } + + for (var k = 0; k < keys.length; k++) { + var key = keys[k] + + if (this.metadata[term][field][key] == undefined) { + this.metadata[term][field][key] = otherMatchData.metadata[term][field][key] + } else { + this.metadata[term][field][key] = this.metadata[term][field][key].concat(otherMatchData.metadata[term][field][key]) + } + + } + } + } +} + +/** + * Add metadata for a term/field pair to this instance of match data. + * + * @param {string} term - The term this match data is associated with + * @param {string} field - The field in which the term was found + * @param {object} metadata - The metadata recorded about this term in this field + */ +lunr.MatchData.prototype.add = function (term, field, metadata) { + if (!(term in this.metadata)) { + this.metadata[term] = Object.create(null) + this.metadata[term][field] = metadata + return + } + + if (!(field in this.metadata[term])) { + this.metadata[term][field] = metadata + return + } + + var metadataKeys = Object.keys(metadata) + + for (var i = 0; i < metadataKeys.length; i++) { + var key = metadataKeys[i] + + if (key in this.metadata[term][field]) { + this.metadata[term][field][key] = this.metadata[term][field][key].concat(metadata[key]) + } else { + this.metadata[term][field][key] = metadata[key] + } + } +} +/** + * A lunr.Query provides a programmatic way of defining queries to be performed + * against a {@link lunr.Index}. + * + * Prefer constructing a lunr.Query using the {@link lunr.Index#query} method + * so the query object is pre-initialized with the right index fields. + * + * @constructor + * @property {lunr.Query~Clause[]} clauses - An array of query clauses. + * @property {string[]} allFields - An array of all available fields in a lunr.Index. + */ +lunr.Query = function (allFields) { + this.clauses = [] + this.allFields = allFields +} + +/** + * Constants for indicating what kind of automatic wildcard insertion will be used when constructing a query clause. + * + * This allows wildcards to be added to the beginning and end of a term without having to manually do any string + * concatenation. + * + * The wildcard constants can be bitwise combined to select both leading and trailing wildcards. + * + * @constant + * @default + * @property {number} wildcard.NONE - The term will have no wildcards inserted, this is the default behaviour + * @property {number} wildcard.LEADING - Prepend the term with a wildcard, unless a leading wildcard already exists + * @property {number} wildcard.TRAILING - Append a wildcard to the term, unless a trailing wildcard already exists + * @see lunr.Query~Clause + * @see lunr.Query#clause + * @see lunr.Query#term + * @example query term with trailing wildcard + * query.term('foo', { wildcard: lunr.Query.wildcard.TRAILING }) + * @example query term with leading and trailing wildcard + * query.term('foo', { + * wildcard: lunr.Query.wildcard.LEADING | lunr.Query.wildcard.TRAILING + * }) + */ + +lunr.Query.wildcard = new String ("*") +lunr.Query.wildcard.NONE = 0 +lunr.Query.wildcard.LEADING = 1 +lunr.Query.wildcard.TRAILING = 2 + +/** + * Constants for indicating what kind of presence a term must have in matching documents. + * + * @constant + * @enum {number} + * @see lunr.Query~Clause + * @see lunr.Query#clause + * @see lunr.Query#term + * @example query term with required presence + * query.term('foo', { presence: lunr.Query.presence.REQUIRED }) + */ +lunr.Query.presence = { + /** + * Term's presence in a document is optional, this is the default value. + */ + OPTIONAL: 1, + + /** + * Term's presence in a document is required, documents that do not contain + * this term will not be returned. + */ + REQUIRED: 2, + + /** + * Term's presence in a document is prohibited, documents that do contain + * this term will not be returned. + */ + PROHIBITED: 3 +} + +/** + * A single clause in a {@link lunr.Query} contains a term and details on how to + * match that term against a {@link lunr.Index}. + * + * @typedef {Object} lunr.Query~Clause + * @property {string[]} fields - The fields in an index this clause should be matched against. + * @property {number} [boost=1] - Any boost that should be applied when matching this clause. + * @property {number} [editDistance] - Whether the term should have fuzzy matching applied, and how fuzzy the match should be. + * @property {boolean} [usePipeline] - Whether the term should be passed through the search pipeline. + * @property {number} [wildcard=lunr.Query.wildcard.NONE] - Whether the term should have wildcards appended or prepended. + * @property {number} [presence=lunr.Query.presence.OPTIONAL] - The terms presence in any matching documents. + */ + +/** + * Adds a {@link lunr.Query~Clause} to this query. + * + * Unless the clause contains the fields to be matched all fields will be matched. In addition + * a default boost of 1 is applied to the clause. + * + * @param {lunr.Query~Clause} clause - The clause to add to this query. + * @see lunr.Query~Clause + * @returns {lunr.Query} + */ +lunr.Query.prototype.clause = function (clause) { + if (!('fields' in clause)) { + clause.fields = this.allFields + } + + if (!('boost' in clause)) { + clause.boost = 1 + } + + if (!('usePipeline' in clause)) { + clause.usePipeline = true + } + + if (!('wildcard' in clause)) { + clause.wildcard = lunr.Query.wildcard.NONE + } + + if ((clause.wildcard & lunr.Query.wildcard.LEADING) && (clause.term.charAt(0) != lunr.Query.wildcard)) { + clause.term = "*" + clause.term + } + + if ((clause.wildcard & lunr.Query.wildcard.TRAILING) && (clause.term.slice(-1) != lunr.Query.wildcard)) { + clause.term = "" + clause.term + "*" + } + + if (!('presence' in clause)) { + clause.presence = lunr.Query.presence.OPTIONAL + } + + this.clauses.push(clause) + + return this +} + +/** + * A negated query is one in which every clause has a presence of + * prohibited. These queries require some special processing to return + * the expected results. + * + * @returns boolean + */ +lunr.Query.prototype.isNegated = function () { + for (var i = 0; i < this.clauses.length; i++) { + if (this.clauses[i].presence != lunr.Query.presence.PROHIBITED) { + return false + } + } + + return true +} + +/** + * Adds a term to the current query, under the covers this will create a {@link lunr.Query~Clause} + * to the list of clauses that make up this query. + * + * The term is used as is, i.e. no tokenization will be performed by this method. Instead conversion + * to a token or token-like string should be done before calling this method. + * + * The term will be converted to a string by calling `toString`. Multiple terms can be passed as an + * array, each term in the array will share the same options. + * + * @param {object|object[]} term - The term(s) to add to the query. + * @param {object} [options] - Any additional properties to add to the query clause. + * @returns {lunr.Query} + * @see lunr.Query#clause + * @see lunr.Query~Clause + * @example adding a single term to a query + * query.term("foo") + * @example adding a single term to a query and specifying search fields, term boost and automatic trailing wildcard + * query.term("foo", { + * fields: ["title"], + * boost: 10, + * wildcard: lunr.Query.wildcard.TRAILING + * }) + * @example using lunr.tokenizer to convert a string to tokens before using them as terms + * query.term(lunr.tokenizer("foo bar")) + */ +lunr.Query.prototype.term = function (term, options) { + if (Array.isArray(term)) { + term.forEach(function (t) { this.term(t, lunr.utils.clone(options)) }, this) + return this + } + + var clause = options || {} + clause.term = term.toString() + + this.clause(clause) + + return this +} +lunr.QueryParseError = function (message, start, end) { + this.name = "QueryParseError" + this.message = message + this.start = start + this.end = end +} + +lunr.QueryParseError.prototype = new Error +lunr.QueryLexer = function (str) { + this.lexemes = [] + this.str = str + this.length = str.length + this.pos = 0 + this.start = 0 + this.escapeCharPositions = [] +} + +lunr.QueryLexer.prototype.run = function () { + var state = lunr.QueryLexer.lexText + + while (state) { + state = state(this) + } +} + +lunr.QueryLexer.prototype.sliceString = function () { + var subSlices = [], + sliceStart = this.start, + sliceEnd = this.pos + + for (var i = 0; i < this.escapeCharPositions.length; i++) { + sliceEnd = this.escapeCharPositions[i] + subSlices.push(this.str.slice(sliceStart, sliceEnd)) + sliceStart = sliceEnd + 1 + } + + subSlices.push(this.str.slice(sliceStart, this.pos)) + this.escapeCharPositions.length = 0 + + return subSlices.join('') +} + +lunr.QueryLexer.prototype.emit = function (type) { + this.lexemes.push({ + type: type, + str: this.sliceString(), + start: this.start, + end: this.pos + }) + + this.start = this.pos +} + +lunr.QueryLexer.prototype.escapeCharacter = function () { + this.escapeCharPositions.push(this.pos - 1) + this.pos += 1 +} + +lunr.QueryLexer.prototype.next = function () { + if (this.pos >= this.length) { + return lunr.QueryLexer.EOS + } + + var char = this.str.charAt(this.pos) + this.pos += 1 + return char +} + +lunr.QueryLexer.prototype.width = function () { + return this.pos - this.start +} + +lunr.QueryLexer.prototype.ignore = function () { + if (this.start == this.pos) { + this.pos += 1 + } + + this.start = this.pos +} + +lunr.QueryLexer.prototype.backup = function () { + this.pos -= 1 +} + +lunr.QueryLexer.prototype.acceptDigitRun = function () { + var char, charCode + + do { + char = this.next() + charCode = char.charCodeAt(0) + } while (charCode > 47 && charCode < 58) + + if (char != lunr.QueryLexer.EOS) { + this.backup() + } +} + +lunr.QueryLexer.prototype.more = function () { + return this.pos < this.length +} + +lunr.QueryLexer.EOS = 'EOS' +lunr.QueryLexer.FIELD = 'FIELD' +lunr.QueryLexer.TERM = 'TERM' +lunr.QueryLexer.EDIT_DISTANCE = 'EDIT_DISTANCE' +lunr.QueryLexer.BOOST = 'BOOST' +lunr.QueryLexer.PRESENCE = 'PRESENCE' + +lunr.QueryLexer.lexField = function (lexer) { + lexer.backup() + lexer.emit(lunr.QueryLexer.FIELD) + lexer.ignore() + return lunr.QueryLexer.lexText +} + +lunr.QueryLexer.lexTerm = function (lexer) { + if (lexer.width() > 1) { + lexer.backup() + lexer.emit(lunr.QueryLexer.TERM) + } + + lexer.ignore() + + if (lexer.more()) { + return lunr.QueryLexer.lexText + } +} + +lunr.QueryLexer.lexEditDistance = function (lexer) { + lexer.ignore() + lexer.acceptDigitRun() + lexer.emit(lunr.QueryLexer.EDIT_DISTANCE) + return lunr.QueryLexer.lexText +} + +lunr.QueryLexer.lexBoost = function (lexer) { + lexer.ignore() + lexer.acceptDigitRun() + lexer.emit(lunr.QueryLexer.BOOST) + return lunr.QueryLexer.lexText +} + +lunr.QueryLexer.lexEOS = function (lexer) { + if (lexer.width() > 0) { + lexer.emit(lunr.QueryLexer.TERM) + } +} + +// This matches the separator used when tokenising fields +// within a document. These should match otherwise it is +// not possible to search for some tokens within a document. +// +// It is possible for the user to change the separator on the +// tokenizer so it _might_ clash with any other of the special +// characters already used within the search string, e.g. :. +// +// This means that it is possible to change the separator in +// such a way that makes some words unsearchable using a search +// string. +lunr.QueryLexer.termSeparator = lunr.tokenizer.separator + +lunr.QueryLexer.lexText = function (lexer) { + while (true) { + var char = lexer.next() + + if (char == lunr.QueryLexer.EOS) { + return lunr.QueryLexer.lexEOS + } + + // Escape character is '\' + if (char.charCodeAt(0) == 92) { + lexer.escapeCharacter() + continue + } + + if (char == ":") { + return lunr.QueryLexer.lexField + } + + if (char == "~") { + lexer.backup() + if (lexer.width() > 0) { + lexer.emit(lunr.QueryLexer.TERM) + } + return lunr.QueryLexer.lexEditDistance + } + + if (char == "^") { + lexer.backup() + if (lexer.width() > 0) { + lexer.emit(lunr.QueryLexer.TERM) + } + return lunr.QueryLexer.lexBoost + } + + // "+" indicates term presence is required + // checking for length to ensure that only + // leading "+" are considered + if (char == "+" && lexer.width() === 1) { + lexer.emit(lunr.QueryLexer.PRESENCE) + return lunr.QueryLexer.lexText + } + + // "-" indicates term presence is prohibited + // checking for length to ensure that only + // leading "-" are considered + if (char == "-" && lexer.width() === 1) { + lexer.emit(lunr.QueryLexer.PRESENCE) + return lunr.QueryLexer.lexText + } + + if (char.match(lunr.QueryLexer.termSeparator)) { + return lunr.QueryLexer.lexTerm + } + } +} + +lunr.QueryParser = function (str, query) { + this.lexer = new lunr.QueryLexer (str) + this.query = query + this.currentClause = {} + this.lexemeIdx = 0 +} + +lunr.QueryParser.prototype.parse = function () { + this.lexer.run() + this.lexemes = this.lexer.lexemes + + var state = lunr.QueryParser.parseClause + + while (state) { + state = state(this) + } + + return this.query +} + +lunr.QueryParser.prototype.peekLexeme = function () { + return this.lexemes[this.lexemeIdx] +} + +lunr.QueryParser.prototype.consumeLexeme = function () { + var lexeme = this.peekLexeme() + this.lexemeIdx += 1 + return lexeme +} + +lunr.QueryParser.prototype.nextClause = function () { + var completedClause = this.currentClause + this.query.clause(completedClause) + this.currentClause = {} +} + +lunr.QueryParser.parseClause = function (parser) { + var lexeme = parser.peekLexeme() + + if (lexeme == undefined) { + return + } + + switch (lexeme.type) { + case lunr.QueryLexer.PRESENCE: + return lunr.QueryParser.parsePresence + case lunr.QueryLexer.FIELD: + return lunr.QueryParser.parseField + case lunr.QueryLexer.TERM: + return lunr.QueryParser.parseTerm + default: + var errorMessage = "expected either a field or a term, found " + lexeme.type + + if (lexeme.str.length >= 1) { + errorMessage += " with value '" + lexeme.str + "'" + } + + throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) + } +} + +lunr.QueryParser.parsePresence = function (parser) { + var lexeme = parser.consumeLexeme() + + if (lexeme == undefined) { + return + } + + switch (lexeme.str) { + case "-": + parser.currentClause.presence = lunr.Query.presence.PROHIBITED + break + case "+": + parser.currentClause.presence = lunr.Query.presence.REQUIRED + break + default: + var errorMessage = "unrecognised presence operator'" + lexeme.str + "'" + throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) + } + + var nextLexeme = parser.peekLexeme() + + if (nextLexeme == undefined) { + var errorMessage = "expecting term or field, found nothing" + throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) + } + + switch (nextLexeme.type) { + case lunr.QueryLexer.FIELD: + return lunr.QueryParser.parseField + case lunr.QueryLexer.TERM: + return lunr.QueryParser.parseTerm + default: + var errorMessage = "expecting term or field, found '" + nextLexeme.type + "'" + throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) + } +} + +lunr.QueryParser.parseField = function (parser) { + var lexeme = parser.consumeLexeme() + + if (lexeme == undefined) { + return + } + + if (parser.query.allFields.indexOf(lexeme.str) == -1) { + var possibleFields = parser.query.allFields.map(function (f) { return "'" + f + "'" }).join(', '), + errorMessage = "unrecognised field '" + lexeme.str + "', possible fields: " + possibleFields + + throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) + } + + parser.currentClause.fields = [lexeme.str] + + var nextLexeme = parser.peekLexeme() + + if (nextLexeme == undefined) { + var errorMessage = "expecting term, found nothing" + throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) + } + + switch (nextLexeme.type) { + case lunr.QueryLexer.TERM: + return lunr.QueryParser.parseTerm + default: + var errorMessage = "expecting term, found '" + nextLexeme.type + "'" + throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) + } +} + +lunr.QueryParser.parseTerm = function (parser) { + var lexeme = parser.consumeLexeme() + + if (lexeme == undefined) { + return + } + + parser.currentClause.term = lexeme.str.toLowerCase() + + if (lexeme.str.indexOf("*") != -1) { + parser.currentClause.usePipeline = false + } + + var nextLexeme = parser.peekLexeme() + + if (nextLexeme == undefined) { + parser.nextClause() + return + } + + switch (nextLexeme.type) { + case lunr.QueryLexer.TERM: + parser.nextClause() + return lunr.QueryParser.parseTerm + case lunr.QueryLexer.FIELD: + parser.nextClause() + return lunr.QueryParser.parseField + case lunr.QueryLexer.EDIT_DISTANCE: + return lunr.QueryParser.parseEditDistance + case lunr.QueryLexer.BOOST: + return lunr.QueryParser.parseBoost + case lunr.QueryLexer.PRESENCE: + parser.nextClause() + return lunr.QueryParser.parsePresence + default: + var errorMessage = "Unexpected lexeme type '" + nextLexeme.type + "'" + throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) + } +} + +lunr.QueryParser.parseEditDistance = function (parser) { + var lexeme = parser.consumeLexeme() + + if (lexeme == undefined) { + return + } + + var editDistance = parseInt(lexeme.str, 10) + + if (isNaN(editDistance)) { + var errorMessage = "edit distance must be numeric" + throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) + } + + parser.currentClause.editDistance = editDistance + + var nextLexeme = parser.peekLexeme() + + if (nextLexeme == undefined) { + parser.nextClause() + return + } + + switch (nextLexeme.type) { + case lunr.QueryLexer.TERM: + parser.nextClause() + return lunr.QueryParser.parseTerm + case lunr.QueryLexer.FIELD: + parser.nextClause() + return lunr.QueryParser.parseField + case lunr.QueryLexer.EDIT_DISTANCE: + return lunr.QueryParser.parseEditDistance + case lunr.QueryLexer.BOOST: + return lunr.QueryParser.parseBoost + case lunr.QueryLexer.PRESENCE: + parser.nextClause() + return lunr.QueryParser.parsePresence + default: + var errorMessage = "Unexpected lexeme type '" + nextLexeme.type + "'" + throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) + } +} + +lunr.QueryParser.parseBoost = function (parser) { + var lexeme = parser.consumeLexeme() + + if (lexeme == undefined) { + return + } + + var boost = parseInt(lexeme.str, 10) + + if (isNaN(boost)) { + var errorMessage = "boost must be numeric" + throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) + } + + parser.currentClause.boost = boost + + var nextLexeme = parser.peekLexeme() + + if (nextLexeme == undefined) { + parser.nextClause() + return + } + + switch (nextLexeme.type) { + case lunr.QueryLexer.TERM: + parser.nextClause() + return lunr.QueryParser.parseTerm + case lunr.QueryLexer.FIELD: + parser.nextClause() + return lunr.QueryParser.parseField + case lunr.QueryLexer.EDIT_DISTANCE: + return lunr.QueryParser.parseEditDistance + case lunr.QueryLexer.BOOST: + return lunr.QueryParser.parseBoost + case lunr.QueryLexer.PRESENCE: + parser.nextClause() + return lunr.QueryParser.parsePresence + default: + var errorMessage = "Unexpected lexeme type '" + nextLexeme.type + "'" + throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) + } +} + + /** + * export the module via AMD, CommonJS or as a browser global + * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js + */ + ;(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(factory) + } else if (typeof exports === 'object') { + /** + * Node. Does not work with strict CommonJS, but + * only CommonJS-like environments that support module.exports, + * like Node. + */ + module.exports = factory() + } else { + // Browser globals (root is window) + root.lunr = factory() + } + }(this, function () { + /** + * Just return a value to define the module export. + * This example returns an object, but the module + * can return a function as the exported value. + */ + return lunr + })) +})(); diff --git a/search/main.js b/search/main.js new file mode 100644 index 00000000..a5e469d7 --- /dev/null +++ b/search/main.js @@ -0,0 +1,109 @@ +function getSearchTermFromLocation() { + var sPageURL = window.location.search.substring(1); + var sURLVariables = sPageURL.split('&'); + for (var i = 0; i < sURLVariables.length; i++) { + var sParameterName = sURLVariables[i].split('='); + if (sParameterName[0] == 'q') { + return decodeURIComponent(sParameterName[1].replace(/\+/g, '%20')); + } + } +} + +function joinUrl (base, path) { + if (path.substring(0, 1) === "/") { + // path starts with `/`. Thus it is absolute. + return path; + } + if (base.substring(base.length-1) === "/") { + // base ends with `/` + return base + path; + } + return base + "/" + path; +} + +function escapeHtml (value) { + return value.replace(/&/g, '&') + .replace(/"/g, '"') + .replace(//g, '>'); +} + +function formatResult (location, title, summary) { + return ''; +} + +function displayResults (results) { + var search_results = document.getElementById("mkdocs-search-results"); + while (search_results.firstChild) { + search_results.removeChild(search_results.firstChild); + } + if (results.length > 0){ + for (var i=0; i < results.length; i++){ + var result = results[i]; + var html = formatResult(result.location, result.title, result.summary); + search_results.insertAdjacentHTML('beforeend', html); + } + } else { + var noResultsText = search_results.getAttribute('data-no-results-text'); + if (!noResultsText) { + noResultsText = "No results found"; + } + search_results.insertAdjacentHTML('beforeend', '

' + noResultsText + '

'); + } +} + +function doSearch () { + var query = document.getElementById('mkdocs-search-query').value; + if (query.length > min_search_length) { + if (!window.Worker) { + displayResults(search(query)); + } else { + searchWorker.postMessage({query: query}); + } + } else { + // Clear results for short queries + displayResults([]); + } +} + +function initSearch () { + var search_input = document.getElementById('mkdocs-search-query'); + if (search_input) { + search_input.addEventListener("keyup", doSearch); + } + var term = getSearchTermFromLocation(); + if (term) { + search_input.value = term; + doSearch(); + } +} + +function onWorkerMessage (e) { + if (e.data.allowSearch) { + initSearch(); + } else if (e.data.results) { + var results = e.data.results; + displayResults(results); + } else if (e.data.config) { + min_search_length = e.data.config.min_search_length-1; + } +} + +if (!window.Worker) { + console.log('Web Worker API not supported'); + // load index in main thread + $.getScript(joinUrl(base_url, "search/worker.js")).done(function () { + console.log('Loaded worker'); + init(); + window.postMessage = function (msg) { + onWorkerMessage({data: msg}); + }; + }).fail(function (jqxhr, settings, exception) { + console.error('Could not load worker.js'); + }); +} else { + // Wrap search in a web worker + var searchWorker = new Worker(joinUrl(base_url, "search/worker.js")); + searchWorker.postMessage({init: true}); + searchWorker.onmessage = onWorkerMessage; +} diff --git a/search/search_index.json b/search/search_index.json new file mode 100644 index 00000000..2247d9ef --- /dev/null +++ b/search/search_index.json @@ -0,0 +1 @@ +{"config":{"indexing":"full","lang":["en"],"min_search_length":3,"prebuild_index":false,"separator":"[\\s\\-]+"},"docs":[{"location":"","text":"Welcome to SFZTools! We have created this organization project to involve more people, with the intention of coding and sharing useful tools that can be used for creating and using audio sample libraries using the SFZ format.","title":"Home"},{"location":"contacts/","text":"Feel free to contact me by email if you need. Any contribution is welcome.","title":"Contact and contributions"},{"location":"faq/","text":"Missing submodules Unfortunately GitHub doesn't include the required git submodules available in the repository in their zip / tar.gz packages, so you need to download the related source manually separately. This leads to the same error below also if you haven't cloned the repository with the --recursive / recurse-submodules switch, resulting with the error: CMake Error at lib/CMakeLists.txt:NNN (add_subdirectory): The source directory path/to/gitsubmodule does not contain a CMakeLists.txt file. -- Configuring incomplete, errors occurred! run git submodule update --init --recursive from the project directory.","title":"FAQ"},{"location":"faq/#missing-submodules","text":"Unfortunately GitHub doesn't include the required git submodules available in the repository in their zip / tar.gz packages, so you need to download the related source manually separately. This leads to the same error below also if you haven't cloned the repository with the --recursive / recurse-submodules switch, resulting with the error: CMake Error at lib/CMakeLists.txt:NNN (add_subdirectory): The source directory path/to/gitsubmodule does not contain a CMakeLists.txt file. -- Configuring incomplete, errors occurred! run git submodule update --init --recursive from the project directory.","title":"Missing submodules"},{"location":"news/","text":"{{ blog_content }}","title":"Latest News"},{"location":"news/posts/2019-06-03-documentation-website/","text":"This website is where you will find the sfizz sampler documentation. Built on Jekyll . Most content is authored in Markdown format. Utilizes Bootstrap for easy skinning and responsive design, making the website available to mobile devices. Utilizes FontAwesome and Favicon Generator for content and website icons.","title":"Documentation Website"},{"location":"news/posts/2020-01-30-sfizz-0.2.0-release/","text":"Added an LV2 plugin version. The parser now falls back to case-insensitive search if it doesn't find the sample file in its current path (#28), so that the behavior of SFZ libraries on case-sensitive filesystems will match Windows and macOS default case-insensitive filesystems. The file now reload automatically on file change, and you can force a reload if necessary (#17). Corrected a bug where memory would be read past the end of the file in memory, generating artifacts. Corrected a bug where the real-time queue handling background loading of the voices would fail spuriously. Corrected a bug where in the LV2 plugin the unknown opcode list was truncated (#18). Added dynamic updates for the current modifiers (panning, stereo image, volume and amplitude mainly) (#19, #28) Added timing for callbacks and file loading times. Added support for pitch bends (#6) as well as pitch-bend activation for regions ( lobend and hibend opcodes). The JACK client will warn you instead of crashing if you do not give it a file to load (#27). Added a windows build process for both the shared library and the LV2. sfizz now builds on all major platforms. See: GitHub release page Download links: sfizz-v0.2.0-linux-amd64.tar.gz sfizz-v0.2.0-linux-arm64.tar.gz sfizz-v0.2.0-osx-amd64.tar.gz sfizz-v0.2.0-src.tar.gz","title":"sfizz 0.2.0 release"},{"location":"news/posts/2020-01-30-sfizz-0.2.0-release/#download-links","text":"sfizz-v0.2.0-linux-amd64.tar.gz sfizz-v0.2.0-linux-arm64.tar.gz sfizz-v0.2.0-osx-amd64.tar.gz sfizz-v0.2.0-src.tar.gz","title":"Download links:"},{"location":"news/posts/2020-02-29-sfizz-0.3.0-release/","text":"Added filter and EQ handling (the filN_... and eqN_... opcodes). There are also no limits to the amount of filters and EQs you can slap on each region beyond your CPU. Most if not all of the relevant filter types from the SFZ v2 spec are supported. Added a new command-line option for the JACK client to set the client's name (#75, #76). Added initial MIDNAM support (#79). The MIDNAM shows the named CCs in the SFZ file for now. Reworked the parsing code for faster dispatching and better handling of complex opcodes with multiple parameters in their opcode name (#40). Reworked the panning and stereo image process. The new process uses tabulated functions and avoid expensive calls to compute sine and cosine functions (#47, #56). Added a crude *noise generator. This generator is a bit expensive for what it does but it's mostly useful to test the filters. Added fine timings within the callbacks for performance improvements and regression testing (#65). Corrected a bug with Ardour where saving a session with no file loaded would crash on reopening. Corrected a bug where voices triggered on key off would never end and fill up the polyphony (#63). Improved and completed CI on all platforms. See: GitHub release page Download links: sfizz-0.3.0-linux-amd64.tar.gz sfizz-0.3.0-linux-arm64.tar.gz sfizz-0.3.0-mingw32.tar.gz sfizz-0.3.0-mingw64.tar.gz sfizz-0.3.0-osx-amd64.tar.gz sfizz-0.3.0-src.tar.gz sfizz-lib-0.3.0-x64-msvc.zip sfizz-lib-0.3.0-x86-msvc.zip sfizz-lv2-0.3.0-linux-amd64.tar.gz sfizz-lv2-0.3.0-linux-arm64.tar.gz sfizz-lv2-0.3.0-x64-msvc-setup.exe sfizz-lv2-0.3.0-x64-msvc.zip sfizz-lv2-0.3.0-x86-msvc-setup.exe sfizz-lv2-0.3.0-x86-msvc.zip","title":"sfizz 0.3.0 release"},{"location":"news/posts/2020-02-29-sfizz-0.3.0-release/#download-links","text":"sfizz-0.3.0-linux-amd64.tar.gz sfizz-0.3.0-linux-arm64.tar.gz sfizz-0.3.0-mingw32.tar.gz sfizz-0.3.0-mingw64.tar.gz sfizz-0.3.0-osx-amd64.tar.gz sfizz-0.3.0-src.tar.gz sfizz-lib-0.3.0-x64-msvc.zip sfizz-lib-0.3.0-x86-msvc.zip sfizz-lv2-0.3.0-linux-amd64.tar.gz sfizz-lv2-0.3.0-linux-arm64.tar.gz sfizz-lv2-0.3.0-x64-msvc-setup.exe sfizz-lv2-0.3.0-x64-msvc.zip sfizz-lv2-0.3.0-x86-msvc-setup.exe sfizz-lv2-0.3.0-x86-msvc.zip","title":"Download links:"},{"location":"news/posts/2020-03-14-sfizz-0.3.1-release/","text":"Added a VST3 plug-in front-end to the library. It is still quite experimental and suffers from problems that stem from the VST3 SDK itself. (#99) Added effect buses and processing. There is a \"lofi\" effect available for now, as well as the same filters and EQs you can apply on the regions. More will come soon! (#84) Added a script to parse and render the timings. This can help tracking performance issues and regressions. (#89) Various fixups, performance improvements, and CI updates See: GitHub release page Download links: sfizz-0.3.1-linux-amd64.tar.gz sfizz-0.3.1-linux-arm64.tar.gz sfizz-0.3.1-mingw32.tar.gz sfizz-0.3.1-mingw64.tar.gz sfizz-0.3.1-osx-amd64.tar.gz sfizz-0.3.1-src.tar.gz sfizz-0.3.1-x64-msvc-setup.exe sfizz-0.3.1-x86-msvc-setup.exe sfizz-lib-0.3.1-x64-msvc.zip sfizz-lib-0.3.1-x86-msvc.zip sfizz-lv2-0.3.1-x64-msvc.zip sfizz-lv2-0.3.1-x86-msvc.zip sfizz-plugins-0.3.1-linux-amd64.tar.gz sfizz-plugins-0.3.1-linux-arm64.tar.gz sfizz-vst3-0.3.1-x64-msvc.zip sfizz-vst3-0.3.1-x86-msvc.zip","title":"sfizz 0.3.1 release"},{"location":"news/posts/2020-03-14-sfizz-0.3.1-release/#download-links","text":"sfizz-0.3.1-linux-amd64.tar.gz sfizz-0.3.1-linux-arm64.tar.gz sfizz-0.3.1-mingw32.tar.gz sfizz-0.3.1-mingw64.tar.gz sfizz-0.3.1-osx-amd64.tar.gz sfizz-0.3.1-src.tar.gz sfizz-0.3.1-x64-msvc-setup.exe sfizz-0.3.1-x86-msvc-setup.exe sfizz-lib-0.3.1-x64-msvc.zip sfizz-lib-0.3.1-x86-msvc.zip sfizz-lv2-0.3.1-x64-msvc.zip sfizz-lv2-0.3.1-x86-msvc.zip sfizz-plugins-0.3.1-linux-amd64.tar.gz sfizz-plugins-0.3.1-linux-arm64.tar.gz sfizz-vst3-0.3.1-x64-msvc.zip sfizz-vst3-0.3.1-x86-msvc.zip","title":"Download links:"},{"location":"news/posts/2020-04-03-sfizz-0.3.2-release/","text":"See: GitHub release page Download links: sfizz-0.3.2-linux-amd64.tar.gz sfizz-0.3.2-linux-arm64.tar.gz sfizz-0.3.2-mingw32.tar.gz sfizz-0.3.2-mingw64.tar.gz sfizz-0.3.2-moddevices.tar.gz sfizz-0.3.2-osx-amd64.tar.gz sfizz-0.3.2-src.tar.gz sfizz-0.3.2-x64-msvc-setup.exe sfizz-0.3.2-x86-msvc-setup.exe sfizz-lib-0.3.2-x64-msvc.zip sfizz-lib-0.3.2-x86-msvc.zip sfizz-lv2-0.3.2-x64-msvc.zip sfizz-lv2-0.3.2-x86-msvc.zip sfizz-plugins-0.3.2-linux-amd64.tar.gz sfizz-plugins-0.3.2-linux-arm64.tar.gz sfizz-vst3-0.3.2-x64-msvc.zip sfizz-vst3-0.3.2-x86-msvc.zip","title":"sfizz 0.3.2 release"},{"location":"news/posts/2020-04-03-sfizz-0.3.2-release/#download-links","text":"sfizz-0.3.2-linux-amd64.tar.gz sfizz-0.3.2-linux-arm64.tar.gz sfizz-0.3.2-mingw32.tar.gz sfizz-0.3.2-mingw64.tar.gz sfizz-0.3.2-moddevices.tar.gz sfizz-0.3.2-osx-amd64.tar.gz sfizz-0.3.2-src.tar.gz sfizz-0.3.2-x64-msvc-setup.exe sfizz-0.3.2-x86-msvc-setup.exe sfizz-lib-0.3.2-x64-msvc.zip sfizz-lib-0.3.2-x86-msvc.zip sfizz-lv2-0.3.2-x64-msvc.zip sfizz-lv2-0.3.2-x86-msvc.zip sfizz-plugins-0.3.2-linux-amd64.tar.gz sfizz-plugins-0.3.2-linux-arm64.tar.gz sfizz-vst3-0.3.2-x64-msvc.zip sfizz-vst3-0.3.2-x86-msvc.zip","title":"Download links:"},{"location":"news/posts/2020-07-24-sfizz-0.4.0-release/","text":"Big stuff: Added support for polynomial resamples and sample_quality opcodes (#238 #267). The engine now defaults to a value of 2 for this opcode, which is more intensive than the original linear interpolation resampler but provides a better quality. Added support for better resampling algorithms also in the wavetables via oscillator_quality (#287). Support _curvecc and _stepcc opcodes (#166 #155 #77) as well as _smoothcc opcodes (#181 #48 #22 #153 #297 #285) Added support and API for Scala tuning files in the engine and the plugins (#253 #268 #282) Other new features: Added support for unison oscillators (#161) Support for the polyphony opcode at all levels (#171 #275), as well as note_polyphony . The group= polyphony is also more flexible and can be defined anywhere. Added support for offset_cc (#170 #159) Added support for direction=reverse (#185 #179) Added support to label the keys using a label_key opcode. This is not really standard yet, but it is now integrated in the LV2 plugin to advertise the names in the MIDNAM file and possibly change their labels in hosts that support it. (#174 #154) Added support for block comments /* */ in the parser (#196 #195) Added a sfizz_render client in tree; you can build it with the make target sfizz_render if the SFIZZ_RENDER CMake variable is set to ON . (#200 #201 #206) Add support to integrate sfizz in DPF plugins (#216) Added an AudioUnit target (#224) Added support for the set_hdcc opcodes and overall added the ability to support floating-point CCs from the API (#233 #232 #244) Added support for FLAC loops (#242 #229) Support the mapPath feature of the LV2 specifications, for tentatively better portability in plugin states (#303) New instances of the sfizz LV2 plugin will now load a default *sine instrument (#283) Issues: Solved some issues with DSmolken's drumkits related to the ampeg envelope (#172) An exception problem was thrown if an sfz file was deleted (#182 #184) Properly bundle the dylib for macOS (#188) Improved the filter stability (#198 #199 #210) Handle USE_LIBCPP properly on configure (#203) Fix the handling of loop markers if sample end= is present (#202 #204) Handle note on with 0 velocity as note offs in the jack client (#208 #211) Solved an issue with super short files (#215) Corrected a stack smashing bug in the LV2 plugin (#226) Fixed some parsing issues with $variables (#230) Properly advertise the VST plugin parameters (#241) Process $ expansions in #include (#247) Change the default build type to RelWithDebInfo (#249) Improve the note stealing algorithm (#214); note that this is still very much a work in progress since many heuristics are in play here. Feel free to report misbehavior regarding note stealing as we improve this regularly. Corrected a bug with SFZ v1 velcurve (#263) Properly support the off_by=-1 opcode to correctly reset the value. (#235) Corrected some errors with null-terminated atoms in the LV2 plugin (#269) Ignore garbage values following e.g. a key number in opcode values (as in key=64Garbage -> key=64 ) (#263) ampeg_****_onccXX modifiers now properly consider multiple CC modifiers (#300 #167) Add headers and group sources in the CMake project for integration with e.g. Qt (#312) Trigger on CC does not require disabling the key triggering through e.g. key=-1 (#315) Support flat notes parsed as string values (#291 #289) Improved handling of release_key (#298); still not perfect, if the region spans multiple key and multiple notes happened with the pedal down, only a single voice will start. Properly read the LV2 option list until the end (#323, by @atsushieno) Corrected a parsing issue when $variables were part of an opcode name (#328) Various other plumbing changes API additions: Added API calls to set $variable define values prior to loading an SFZ file (#168 #119 #130) Added API calls to get key labels and cc labels defined by label_key and label_cc (#174) Added an API call to load an sfz file as an std::string or const char* (#217) Added API calls for Scala files and tunings (#253) Added high-definition floating point CC API calls (#244) Added API calls to change the default resampling quality (#267 #238) See: GitHub release page Download links: sfizz-0.4.0-linux-amd64.tar.gz sfizz-0.4.0-linux-arm64.tar.gz sfizz-0.4.0-mingw32.tar.gz sfizz-0.4.0-mingw64.tar.gz sfizz-0.4.0-moddevices.tar.gz sfizz-0.4.0-osx-amd64.tar.gz sfizz-0.4.0-src.tar.gz sfizz-0.4.0-x64-msvc-setup.exe sfizz-0.4.0-x86-msvc-setup.exe sfizz-lib-0.4.0-x64-msvc.zip sfizz-lib-0.4.0-x86-msvc.zip sfizz-lv2-0.4.0-x64-msvc.zip sfizz-lv2-0.4.0-x86-msvc.zip sfizz-plugins-0.4.0-linux-amd64.tar.gz sfizz-plugins-0.4.0-linux-arm64.tar.gz sfizz-vst3-0.4.0-x64-msvc.zip sfizz-vst3-0.4.0-x86-msvc.zip","title":"sfizz 0.4.0 release"},{"location":"news/posts/2020-07-24-sfizz-0.4.0-release/#download-links","text":"sfizz-0.4.0-linux-amd64.tar.gz sfizz-0.4.0-linux-arm64.tar.gz sfizz-0.4.0-mingw32.tar.gz sfizz-0.4.0-mingw64.tar.gz sfizz-0.4.0-moddevices.tar.gz sfizz-0.4.0-osx-amd64.tar.gz sfizz-0.4.0-src.tar.gz sfizz-0.4.0-x64-msvc-setup.exe sfizz-0.4.0-x86-msvc-setup.exe sfizz-lib-0.4.0-x64-msvc.zip sfizz-lib-0.4.0-x86-msvc.zip sfizz-lv2-0.4.0-x64-msvc.zip sfizz-lv2-0.4.0-x86-msvc.zip sfizz-plugins-0.4.0-linux-amd64.tar.gz sfizz-plugins-0.4.0-linux-arm64.tar.gz sfizz-vst3-0.4.0-x64-msvc.zip sfizz-vst3-0.4.0-x86-msvc.zip","title":"Download links:"},{"location":"news/posts/2020-10-15-sfizz-0.5.0-release/","text":"Big stuff: Added basic support for Flex EGs (#388) as modulation sources (targets to come) Added basic support for LFOs (#338) as modulation sources (targets to come) EGs and LFOs can now target EQs and filters (#424) A new GUI has been added and is common to the LV2 and VST plugin (#397 #404 #419 #489 #492 #495 #496 #497); still mostly work in progress, more to come! Provided build systems to use sfizz with the VCV-Rack SDK and the DISTRHO Plugin Framework New features: Added support for sustain_lo (#327) Audio files are now read incrementally, improving the availability under load (#294) A new output port for active voices has been added in the LV2 plugin (#321) Added support for effect types reverb , disto , gate and comp The voice stealing is now configurable using hint_stealing , with possible values as first , oldest (default), and envelope_and_age . The latter is the more CPU-consuming version which requires to follow the envelope of each voice to kill low-volume ones preferably. Note that the voice stealing continue to kill all voices started on the same event by default (i.e. all layers of the same note). (#344 #384 #353) sfizz now internally uses a modulation matrix to link all modulation sources (CC, LFOs, and EGs) and targets (#335 #351 #386) Added support for off_time and complete support for off_mode . The voice stealing logic was improved to take into account polyphony , note_polyphony and group_polyphony properly (#349 #352 #393 #413 #414 #467). Note that this support is also available for the engine polyphony. In this case, some additional voice will take over for the release duration (#477). The wavetable quality has been improved (#347) Support for offset_cc (#385) sfizz_render now supports a --quality switch, which acts like the sample_quality= opcode (#408) pitch_keycenter=sample is now taken into account (#362) Support oscillator_detunecc (#434) Support basic FM synthesis for oscillator regions (#436) CC 7, 10 and 11 are now linked by default to pan, volume and expression (#475) Support hint_ram_based for loading the whole samples in RAM (#353) Support for loop_crossfade (#464) All phase-related opcodes in sfizz now use the 0->1 convention, as does ARIA/Sforzando, instead of the 0->360 convention (#499) Issues: Loading probable wavetable files, or wav files containing wavetable metadata now sets oscillator=on on the region (#431) The default sample_quality was put back to 1 for live playing and 2 for freewheeling (#405) Fix an unwanted copy in the realtime thread (#334) Improve the filter shortcut path (#336) Fix the default ampeg_attack and ampeg_release to avoid clicks (#437) Corrected a race condition in freewheeling mode (#500) Fixed a potential non-realtime operation in the realtime thread (#498) Fix a bug when using a larger internal oversampling for regions with an offset value (#469) Fix an issue when loops occured more than once in a block (#462) Increase the range of the clamping on amplitude (#468) and pitch (#474) Fix CC modulations with their source depth set to 0 (#475) Fix an overshoot for crazily large cutoff values (#478); cutoffs are now clamped Improve the file loading logic to keep files in memory for a short while in case they get reused (#425) Fix the MIDNAM output for the case where extended CCs are used (#420) Fixed a bug where release voices where not ignored on self-mask search (#348) Improved the release logic in many cases (#324 #414 #413) Set the level of the *noise generator to match ARIA's (#429) Support for atom:Blank atoms in the LV2 plugin (#363) Fixed amp_veltrack behavior (#371) Fix the ADSRH envelope release rate (#376) Fixed an error for files where the loop spans the entire file (#378) Fixed sustain_cc behavior (#377) Match the default volumes with ARIA (#381) Properly set the loop_mode for release regions (#379) Regions with end=0 are now properly disabled (#380) Fix fil_random to be bipolar (#452) The sequence order now properly starts at 1 (#451) Fix an issue on Flush to Zero on some ARM platforms (#455) Fix pitch_veltrack (#461) Opcode values now properly stop at the < character (#439) Fix various build errors and issues on all platforms (#345 #401 #400 #399 #417 #447 #449 #443 #453 #456 #459 #471 #484 #487 #488 #491) The file dialog initial directory is now the root of the current loaded file (#428) Existing and known CC values are now correctly taken into account for modulations (#421) Fix various performance regressions and improved performance especially on ARM builds (#410 #412 #415 #426) API changes: Added API support for setting the playback state, time position and signature (#354) The API documentation on the sfizz's website has been streamlined alot ! See: GitHub release page Download links: sfizz-0.5.0-linux-amd64.tar.gz sfizz-0.5.0-linux-arm64.tar.gz sfizz-0.5.0-mingw32.tar.gz sfizz-0.5.0-mingw64.tar.gz sfizz-0.5.0-moddevices.tar.gz sfizz-0.5.0-osx-amd64.tar.gz sfizz-0.5.0-src.tar.gz sfizz-0.5.0-x64-msvc-setup.exe sfizz-0.5.0-x86-msvc-setup.exe sfizz-lib-0.5.0-x64-msvc.zip sfizz-lib-0.5.0-x86-msvc.zip sfizz-lv2-0.5.0-x64-msvc.zip sfizz-lv2-0.5.0-x86-msvc.zip sfizz-plugins-0.5.0-linux-amd64.tar.gz sfizz-plugins-0.5.0-linux-arm64.tar.gz sfizz-vst3-0.5.0-x64-msvc.zip sfizz-vst3-0.5.0-x86-msvc.zip","title":"sfizz 0.5.0 release"},{"location":"news/posts/2020-10-15-sfizz-0.5.0-release/#download-links","text":"sfizz-0.5.0-linux-amd64.tar.gz sfizz-0.5.0-linux-arm64.tar.gz sfizz-0.5.0-mingw32.tar.gz sfizz-0.5.0-mingw64.tar.gz sfizz-0.5.0-moddevices.tar.gz sfizz-0.5.0-osx-amd64.tar.gz sfizz-0.5.0-src.tar.gz sfizz-0.5.0-x64-msvc-setup.exe sfizz-0.5.0-x86-msvc-setup.exe sfizz-lib-0.5.0-x64-msvc.zip sfizz-lib-0.5.0-x86-msvc.zip sfizz-lv2-0.5.0-x64-msvc.zip sfizz-lv2-0.5.0-x86-msvc.zip sfizz-plugins-0.5.0-linux-amd64.tar.gz sfizz-plugins-0.5.0-linux-arm64.tar.gz sfizz-vst3-0.5.0-x64-msvc.zip sfizz-vst3-0.5.0-x86-msvc.zip","title":"Download links:"},{"location":"news/posts/2020-10-25-sfizz-0.5.1-release/","text":"Published by redtide at 2020-10-25 10:33:35 Corrected race conditions that appeared with the new thread and file pools (#507 #508 #514 #521) Take the internal oversampling factor into account for loop points, and solve an issue where loop points specified in sfz files were not taken into account (#506) Fix an implementation error for the internal hash function when applied on a single byte (#512) Knobs are linear in the AU plugin (#517) Fix a crash in VSTGUI (#520) Fix the resource path in the LV2 plugin under windows (#524) Add MacOS make install rules (#525) See: GitHub release page Download links: sfizz-0.5.1-linux-amd64.tar.gz sfizz-0.5.1-linux-arm64.tar.gz sfizz-0.5.1-mingw32.tar.gz sfizz-0.5.1-mingw64.tar.gz sfizz-0.5.1-moddevices.tar.gz sfizz-0.5.1-osx-amd64.tar.gz sfizz-0.5.1-src.tar.gz sfizz-0.5.1-x64-msvc-setup.exe sfizz-0.5.1-x86-msvc-setup.exe sfizz-lib-0.5.1-x64-msvc.zip sfizz-lib-0.5.1-x86-msvc.zip sfizz-lv2-0.5.1-x64-msvc.zip sfizz-lv2-0.5.1-x86-msvc.zip sfizz-plugins-0.5.1-linux-amd64.tar.gz sfizz-plugins-0.5.1-linux-arm64.tar.gz sfizz-vst3-0.5.1-x64-msvc.zip sfizz-vst3-0.5.1-x86-msvc.zip","title":"sfizz 0.5.1 release"},{"location":"news/posts/2020-10-25-sfizz-0.5.1-release/#download-links","text":"sfizz-0.5.1-linux-amd64.tar.gz sfizz-0.5.1-linux-arm64.tar.gz sfizz-0.5.1-mingw32.tar.gz sfizz-0.5.1-mingw64.tar.gz sfizz-0.5.1-moddevices.tar.gz sfizz-0.5.1-osx-amd64.tar.gz sfizz-0.5.1-src.tar.gz sfizz-0.5.1-x64-msvc-setup.exe sfizz-0.5.1-x86-msvc-setup.exe sfizz-lib-0.5.1-x64-msvc.zip sfizz-lib-0.5.1-x86-msvc.zip sfizz-lv2-0.5.1-x64-msvc.zip sfizz-lv2-0.5.1-x86-msvc.zip sfizz-plugins-0.5.1-linux-amd64.tar.gz sfizz-plugins-0.5.1-linux-arm64.tar.gz sfizz-vst3-0.5.1-x64-msvc.zip sfizz-vst3-0.5.1-x86-msvc.zip","title":"Download links:"},{"location":"news/posts/2021-04-16-sfizz-1.0.0-release/","text":"Published by github-actions[bot] at 2021-04-16 15:31:49 We would like to thank to our contributors at https://opencollective.com/sfztools, as well as everyone who is regularly testing and pushing sfizz to the limits! Your support to this project in any form is much appreciated. You can download builds catered for your Linux distribution over at OBS . The Mac, Windows and MOD packages are below in the release assets, as well as the source packages. Headlines: SFZ v1 is virtually supported except for a handful of opcodes ! Please check https://sfz.tools/sfizz/development/status/ for the up-to-date status of opcode support. It is now possible to build sfizz without relying on libsndfile, using a set of libraries. This is now the default build mode. Building with libsndfile can be enabled at configure time. The library and plugins can now load DecentSampler files, and could accomodate other formats. CCs, keyswitch range, key ranges and active keyswitch are now displayed in the editor for all plugins. There has been a lot of UI work to make it more practical to use. There is an OSC interface in the library, which allows to have introspection into the currently loaded file, the state of CCs/keyswitches, and also set some parameters for loaded regions. API/ABI changes for the library: The ABI is broken, leading to a major version change. Thread-safety now has to be handled externally. The API has been updated to provide a concurrency spec. The current version of the internal oversampling factor was too unstable and has been disabled for the time being. The API and plugin parameters are staying for compatibility. A more robust implementation should come soon. Added documentation in the API calls to make clear that sample-accurate triggering of voice requires messages to be sent in order. The VST plugin in particular did not respect this and has been updated. A new bpmTempo method has been added to pass tempo as beats-per-minute rather than seconds per beat. The previous version is deprecated. There are new HD (float) versions of API calls for note and CC events. aftertouch is renamed as channel_aftertouch (for C) and channelAftertouch (for C++) throughout the API to be more consistent with polyAftertouch . UI: UI improvements and tweaks, adding themability in particular (#826 #824 #822 #821 #819 #818 #816 #812 #799 #743 #691 #674 #673 #672 #670 #662 #661 #656) Added an info panel in the plugin UI (#793 #792 #791 #789 #788 #787 #782 #779 #773) Improve font handling (#669 #622) Improve file handling in the UI (#645 #659 #658) and enable the use of a \"default user directory\" or environment variable. This also allows the plugin to \"find\" missing sfz files in a different environment (#644 #581 #572 #532) Support DecentSampler and a generic importer for other formats (#725 #715 #680) Show the current keyswitch on the editor and the virtual keybnoard (#665 #657) Added a button to reset the scala file to default (#660) The plugins now display an image through the image opcode (#770) Plugins: Remove automation from un-automatable parameters in the VST plugin (#814) Order VST events (#810 #803) Added the option to build a VST2 version of sfizz if you have the SDK available (#708) The C++ standard is set to 14 if you build the UI on LV2, or if you build the VST version. This will likely increase to 17 shortly due to the dependency on VSTGUI. The ui-less LV2 plugin and the library remain C++11 compatible. Note that windows builds already use C++17 on all targets. (#795) Fix corruptions and crashes that happened in the LV2 plugin (#794 #668 #557) The internal controllers of sfizz are now presented as parameters in the LV2 plugin. Experimental midi binding is also active on them. By default the \"direct\" midi input is disabled and you need to map to the parameters. A compile-time option is available to re-enable the midi input. (#776) Fix crashes in the VST plugin (#709 #702 #681 #625) Enable checking if file changed even when the transport is not running (#712 #689) The Mac builds are now signed (#550 #552) Update VST to 3.7.2 (#798) Library: Small files with only zeroes are considered as *silence (#831) The library uses an Hermite interpolation by default (#828 #829) Fix an error where sample indices could wrap for massive pitch modulations (#825 #751) Add high-definition versions of the API calls (#820) Corrected a bug where regions with long release envelopes would not stop on sample ending (#811) Support polyphonic aftertouch events, triggers and targets (#809 #764) Support monophonic aftertouch events, triggers and targets (#765 #630 ) Corrected a regression where sfizz would stop loading the SFZ file if some sample files cannot be loaded (#806) Update abseil and ghc::filesystem (#780), the tunings library from Surge (#785), catch2 (#711) It is now possible to change some parameters of the regions after loading the file through the OSC interface (#761) Improve the choking logic to match the spec and other implementations (#778) Added modulation targets for amplitude, pan, width, position, pitch and volume (#760) Support CC modifiers for end , loop_start and loop_end (#752) Support CC modifiers for LFO targets (#753) Support SFZ v1 extended CCs (#747) Implement the sostenuto logic (#739) Refactored opcode reading and storing (#748 #727 #721 #722 #720 #700 #559) Fix the parser to support sharp (#) symbols in file names (#746) Improved the ADSR transitions from decay to sustain, and from release to 0 (#734 #373) Reset the smoothers if the playhead moved (#731 #710 #382) Corrected a bug where the first sample was ignored on playback (#732 #394) Added CC modulation for depth targets (#730) If the sustain level is low enough the envelope is set to free-run (#723, #676) Fix loop crossfades when the loop starts early in the sample (#718) Fix random generators to match ARIA's behavior (#719) Fix corruption appearing in some sample libraries (#717 #695) Smoothers are now linear (#713 #714 #703) Filter/EQ parameters are clamped even with modulation (#701 #699) Implement v1 LFOs (#693) Support count and loop_count (#654) Fix a bug where the sample rate was not propagated properly to the flex EGs (#683) Delay envelope start by the voice delay (#655 #432) Support delay_oncc (#653) Support sw_vel (#650) Fix note_polyphony choking (#634 #529) Respect the end opcode (#618) Fix allocations that may happen on the RT thread (#621) Fix the polyphony manager when the engine polyphony is changed after a file is loaded (#619) Avoid reloading invalid files (#614) Allow parsing of some badly formed files files (#600) Match ARIA's LFOs (#613) Added windowed sinc interpolation for sample_quality from 3 to 10 (#609) Improve the Hermite interpolation (#597) Update AtomicQueue to correct a bug (#583) Support lfoN_beats (#553) Add region and voice introspection to the OSC interface (#555) Enable fast-math on MSVC (#567) Fix crashes when building with libsndfile (#542 #543) Properly pad and align the wav files upon reading (#538) Add an alternative to libsndfile (#482 #534 #535 #536) Handle gracefully having a different sw_default in a region (#531) Support disjoint keyswitch ranges, as well as sw_lolast and sw_hilast (#526) See: GitHub release page Download links: sfizz-1.0.0-macos.dmg sfizz-1.0.0-mingw32.tar.gz sfizz-1.0.0-mingw64.tar.gz sfizz-1.0.0-moddevices.tar.gz sfizz-1.0.0-win32.exe sfizz-1.0.0-win64.exe sfizz-1.0.0.tar.gz","title":"sfizz 1.0.0 release"},{"location":"news/posts/2021-04-16-sfizz-1.0.0-release/#download-links","text":"sfizz-1.0.0-macos.dmg sfizz-1.0.0-mingw32.tar.gz sfizz-1.0.0-mingw64.tar.gz sfizz-1.0.0-moddevices.tar.gz sfizz-1.0.0-win32.exe sfizz-1.0.0-win64.exe sfizz-1.0.0.tar.gz","title":"Download links:"},{"location":"news/posts/2021-10-23-sfizz-1.1.0-release/","text":"Published by github-actions[bot] at 2021-10-23 21:38:57 New supports and plugins: Added a Puredata plugin (#869 #873 #874) Added support for hint_sustain_cancels_release , which when activated reproduces a LinuxSampler behavior by sustaining already released notes (#898). A GUI option should come later. Added support for amp_veltrack_oncc , pitch_veltrack_oncc , and fil_veltrack_oncc (#938) Dynamic EGs are supported for flex EGs (#933 #932 #930) Support _curvecc for extended CCs (#993) Support lorand and hirand on CC-triggered regions (#997) The engine now parses oscillator=auto and only enables oscillators on short samples with wavetable tags in the WAV metadata (#954) Bug fixes and other improvements: Added a GUI volume meter (#859) Implement support for VST3 keyswitch and midi note names (#877 #876) Fixed a bug which could prevent parameters to be automated in Ardour (#893) Fixed a bug where high definition CC, crossfade or aftertouch events could be ignored (#855 #896) Resetting all controllers will now reset them to their default, instead of 0 (#905) Filter resonance can now be negative (#919) Corrected a bug for the LV2 plugin when used in the Ardour DAW (#924) Respect the editor set for sfz files on MacOS (#925) The JACK and PureData clients can use custom importers (#926) Fix off_by behavior with long-releasing notes (#972) Polyphony groups can have negative indices (#934) Parse lokey=-1 as hikey=-1 (#941) Improved the preloading for monolithic wave files (#935) Since the default build of the LV2 plugin is not statically linked against libsndfile, the distribution license is changed to the ISC license (#943) The DecentSampler importer now better translates the loop modes (#981) Even when plugin-side automation is disabled (through SFIZZ_LV2_PSA ), sustain and sostenu CC events will still go through to the plugin to improve the user experience on hosts that do not support automatic mapping of control ports to midi events through the LV2 midi:binding extension (#963). Fixed a bug that could hang the background thread in the VST plugin (#984 #865 #864) The current keyswitch is properly saved and restored with the plugin state (#961) It is now possible to enter values for CCs on the plugin GUI by double clicking on the CC knob (#945). A high-resolution input option is also available on a right click. Added a text interface to sfizz_jack (#973) CC-triggered voices can be cut off by polyphony groups (#917) Allow building on MacOS 10.9 (#990) Improved the X11 runloop (#986) Added a polyphony option to sfizz_render (#992) Corrected a bug which prevented VST3 or LV2 plugins to be loaded by the Ardour DAW (#995) Corrected a bug where octave and note offset were not reset upon loading a new file (#994) Corrected a bug where CC-triggered voices could generate note-offs when cut by a polyphony group (#998) Added man pages for sfizz_render and sfizz_jack (#999) Various build system improvements for different platforms (#957 #958 #964 #967 #968 #989 #978 #942 #921 #920 #902 #849 #850 #856 #1001) See: GitHub release page Download links: sfizz-1.1.0-macos.dmg sfizz-1.1.0-mingw32.tar.gz sfizz-1.1.0-mingw64.tar.gz sfizz-1.1.0-moddevices.tar.gz sfizz-1.1.0-win32.exe sfizz-1.1.0-win64.exe sfizz-1.1.0.tar.gz","title":"sfizz 1.1.0 release"},{"location":"news/posts/2021-10-23-sfizz-1.1.0-release/#download-links","text":"sfizz-1.1.0-macos.dmg sfizz-1.1.0-mingw32.tar.gz sfizz-1.1.0-mingw64.tar.gz sfizz-1.1.0-moddevices.tar.gz sfizz-1.1.0-win32.exe sfizz-1.1.0-win64.exe sfizz-1.1.0.tar.gz","title":"Download links:"},{"location":"news/posts/2021-11-08-sfizz-1.1.1-release/","text":"Published by github-actions[bot] at 2021-11-08 15:13:36 Roll back VSTGUI to 4.10.2 to avoid corruption of the UI in some scenarios See: GitHub release page Download links: sfizz-1.1.1-macos.dmg sfizz-1.1.1-mingw32.tar.gz sfizz-1.1.1-mingw64.tar.gz sfizz-1.1.1-moddevices.tar.gz sfizz-1.1.1-win32.exe sfizz-1.1.1-win64.exe sfizz-1.1.1.tar.gz","title":"sfizz 1.1.1 release"},{"location":"news/posts/2021-11-08-sfizz-1.1.1-release/#download-links","text":"sfizz-1.1.1-macos.dmg sfizz-1.1.1-mingw32.tar.gz sfizz-1.1.1-mingw64.tar.gz sfizz-1.1.1-moddevices.tar.gz sfizz-1.1.1-win32.exe sfizz-1.1.1-win64.exe sfizz-1.1.1.tar.gz","title":"Download links:"},{"location":"news/posts/2022-01-15-sfizz-1.2.0-release/","text":"Big stuff: The sfizz engine now handles multiple stereo outputs, through the output opcode. The VST3 and LV2 plugins both have a 16-out version (as 8 stereo outs) (#1002) The emscripten branch allows to run sfizz through WASM for your web-oriented needs. An example with WebMidi is available at https://sfz.tools/sfizz-webaudio/ (requires a Chromium-based browser), with source code at https://github.com/sfztools/sfizz-webaudio. sfizz can now parse embedded samples in base64 data (#1041) Smaller things: Added support in the plugin GUI/parameters for the \"sustain cancels release\" behavior of LinuxSampler. The internal midi state is not reset when loading/reloading. This means in particular that controls changed on an instrument will be kept if you edit the underlying SFZ file (#1002) Updated dependent libraries (#1018) Support extended CCs 140 and 141 for \"keydelta\" (#1003) Negative values for lokey will not disable the region anymore (#1019) Updated the GUI option panel for the plugins (#1022) and some hints on the tab buttons (#1057) Choke groups now act through CC switches (#1024) Corrected a bug when reloading some files (#1028) Added better support for files that are fully loaded in memory and not simply preloaded (#1031) Corrected mistakes in the shelving filters (#1027) Corrected a crash in some VST3 hosts (#1035) Properly read exponential notation in floats (#1036) sfizz is now clamping flex EG levels (#1037) sw_last is now properly affected by octave_offset and note_offset (#1039) Corrected a bug where long-tailed effects would be cut off (#1050) Corrected a bug in the band rejection filters (#1052). The apf_1p filter still misbehaves and is disabled for now. Numpad input is now properly handled (#1053) In the LV2 plugin, plugin-side automation is now enabled by default (which means all SFZ control changes are naturally bound to incoming MIDI control changes and not controlled by a plugin parameter). You can disable this at build time and show the relevant parameters using SFIZZ_LV2_PSA . Too many hosts expect their plugins to respond to midi messages for things like pedal and volume. (#1054) Added support for loprog/hiprog (#1058) The LV2 plugin now has a string output parameter with the CC used by the instrument (#1060) API changes: - sfizz_enable_logging and sfizz_disable_logging (and their C++ counterparts) are deprecated, replaced by sfizz_get_callback_breakdown which needs to be called at the end of a callback by the host (#1034). All file writing is handled by the host for logging. - Added sfizz_send_program_change and its C++ counterpart. - Added sfizz_set_sustain_cancels_release and its C++ counterpart. See: GitHub release page Download links: sfizz-1.2.0-macos.dmg sfizz-1.2.0-moddevices.tar.gz sfizz-1.2.0-win32.exe sfizz-1.2.0-win64.exe sfizz-1.2.0.tar.gz","title":"sfizz 1.2.0 release"},{"location":"news/posts/2022-01-15-sfizz-1.2.0-release/#download-links","text":"sfizz-1.2.0-macos.dmg sfizz-1.2.0-moddevices.tar.gz sfizz-1.2.0-win32.exe sfizz-1.2.0-win64.exe sfizz-1.2.0.tar.gz","title":"Download links:"},{"location":"news/posts/2023-04-15-sfizz-1.2.1-release/","text":"Mac OS Installer (#93 #1087) Updated bundled dependencies and added more options to use those preinstalled in system (#1104 #1117 #1143 #1145 #1149) CI: Various updates and fixes for GitHub Actions; removed Travis and Appveyor Add LFO frequency as an EG target (#1103) New image_controls opcode to add a background image on UI' Controls tab (#1156) Disabled temporarily the embedded sample test Parse 0-valued note ons as note offs (#1072 #1073) Correct a bug with dynamic updates on offed EGs (#2 #1088) jack: Wait for CLI thread to finish on quit (#1097) Fix libsndfile build and add CI (#1112 #1090) Last keyswitches don't change the midi state (#1113 #1074) Add section suffix to man pages (#1124) HiDPI: Added a Zoom menu in Settings to apply an user' zoom ratio preference (#1123 #1153) Colored logo button on mouse hover (#1151) Centered, full-size background images container (#1152) XP style tooltips (#1156) Window size has been changed to be compatible with ARIA banks (775x335 for image backgrounds) (#1140 #1156) The CC knobs rotator and title label have a white color on a semi-transparent background in the controls tab (#1156) The info tab becomes a dark and semi-transparent overlay dialog above the Home tab; both will display the same background image when available (#1156) Handle LV2 scaleFactor supportedOption (#1153) Added suffix \"-multi\" to LV2 and VST3. (#1084) Fix LV2 manifest when using PSA (#1114) Fix 2 bugs in LV2 and VST3 for loads and stores (#1115 #1098) See: GitHub release page Download links: sfizz-1.2.1-macos.pkg sfizz-1.2.1-moddevices.tar.gz sfizz-1.2.1-win32.exe sfizz-1.2.1-win64.exe sfizz-1.2.1.tar.gz","title":"sfizz 1.2.1 release"},{"location":"news/posts/2023-04-15-sfizz-1.2.1-release/#download-links","text":"sfizz-1.2.1-macos.pkg sfizz-1.2.1-moddevices.tar.gz sfizz-1.2.1-win32.exe sfizz-1.2.1-win64.exe sfizz-1.2.1.tar.gz","title":"Download links:"},{"location":"news/posts/2023-08-26-sfizz-1.2.2-release/","text":"Library Added WavPack support (#1129 by @lucianoiam) Changed The project has been split into 2 repositories to separate the library from the UI/plugins. (#1162) Unclamp the cutoff and add OSC queries for the cutoff modifiers (#1100 by @PythonBlue) SIMDe update (#1161 #1163) Update cpuid, dr_libs and stb_vorbis libraries (#1164) Various CMake and CI changes/fixes, also because the repository split Minimum CMake version required is now 3.15 for Windows, 3.13 for other systems Configurable amount of Control Change messages via CMake' MIDI_CC_COUNT variable, Config.h is now a generated file Update Abseil to 20230125.3 (#1169) Fixed Crash fix for reloading SFZ: needed to copy preloadCallCount in FilePool copy constructors (#1170 by @essej) Temporary fixes to build benchmarks and tests (see #1148) Fixed FlexEGs shape (#1176 #1177) Fixed build on Windows Fixed modulation matrix when CC modulations are per voice (#1173 #1179 by @PythonBlue) Fixed and reenabled tests Modifications to support universal x86_64/ARM builds on macOS (#1183 by @essej) Removed VCPKG and MinGW CI builds Plugins Added New repository for UI/plugins. (sfztools/sfizz#1162) CI: Restored the macOS universal build that was working in AppVeyor (sfztools/sfizz@15628e13290e9be4e33ebf74aef286a5e3221579) but sacrifice WavPack assembly optimizations, see https://github.com/dbry/WavPack/issues/93 Changed Updated VST3 SDK to v3.7.7, including our custom AU wrapper (#25) Updated VSTGUI to v4.12.3 (patched), this requires Windows 10 or later Updated stb_image to v2.28 Updated LV2 bundled library to v1.18 Various CMake and CI changes/fixes, also because the repository split Minimum CMake version required is now 3.15 for Windows, 3.13 for other systems Using linters for all type of plugins supported in CI Fixed Various code fixes for the newer version of VSTGUI; Windows 10 minimum required Removed macOS: removed DMG resources and Carbon support from VSTGUI See: GitHub library release page GitHub plugins release page Download links: sfizz-1.2.2-macos.pkg sfizz-1.2.2-win32.exe sfizz-1.2.2-win64.exe Library source archive Plugins + library source archive","title":"sfizz 1.2.2 release"},{"location":"news/posts/2023-08-26-sfizz-1.2.2-release/#library","text":"","title":"Library"},{"location":"news/posts/2023-08-26-sfizz-1.2.2-release/#added","text":"WavPack support (#1129 by @lucianoiam)","title":"Added"},{"location":"news/posts/2023-08-26-sfizz-1.2.2-release/#changed","text":"The project has been split into 2 repositories to separate the library from the UI/plugins. (#1162) Unclamp the cutoff and add OSC queries for the cutoff modifiers (#1100 by @PythonBlue) SIMDe update (#1161 #1163) Update cpuid, dr_libs and stb_vorbis libraries (#1164) Various CMake and CI changes/fixes, also because the repository split Minimum CMake version required is now 3.15 for Windows, 3.13 for other systems Configurable amount of Control Change messages via CMake' MIDI_CC_COUNT variable, Config.h is now a generated file Update Abseil to 20230125.3 (#1169)","title":"Changed"},{"location":"news/posts/2023-08-26-sfizz-1.2.2-release/#fixed","text":"Crash fix for reloading SFZ: needed to copy preloadCallCount in FilePool copy constructors (#1170 by @essej) Temporary fixes to build benchmarks and tests (see #1148) Fixed FlexEGs shape (#1176 #1177) Fixed build on Windows Fixed modulation matrix when CC modulations are per voice (#1173 #1179 by @PythonBlue) Fixed and reenabled tests Modifications to support universal x86_64/ARM builds on macOS (#1183 by @essej)","title":"Fixed"},{"location":"news/posts/2023-08-26-sfizz-1.2.2-release/#removed","text":"VCPKG and MinGW CI builds","title":"Removed"},{"location":"news/posts/2023-08-26-sfizz-1.2.2-release/#plugins","text":"","title":"Plugins"},{"location":"news/posts/2023-08-26-sfizz-1.2.2-release/#added_1","text":"New repository for UI/plugins. (sfztools/sfizz#1162) CI: Restored the macOS universal build that was working in AppVeyor (sfztools/sfizz@15628e13290e9be4e33ebf74aef286a5e3221579) but sacrifice WavPack assembly optimizations, see https://github.com/dbry/WavPack/issues/93","title":"Added"},{"location":"news/posts/2023-08-26-sfizz-1.2.2-release/#changed_1","text":"Updated VST3 SDK to v3.7.7, including our custom AU wrapper (#25) Updated VSTGUI to v4.12.3 (patched), this requires Windows 10 or later Updated stb_image to v2.28 Updated LV2 bundled library to v1.18 Various CMake and CI changes/fixes, also because the repository split Minimum CMake version required is now 3.15 for Windows, 3.13 for other systems Using linters for all type of plugins supported in CI","title":"Changed"},{"location":"news/posts/2023-08-26-sfizz-1.2.2-release/#fixed_1","text":"Various code fixes for the newer version of VSTGUI; Windows 10 minimum required","title":"Fixed"},{"location":"news/posts/2023-08-26-sfizz-1.2.2-release/#removed_1","text":"macOS: removed DMG resources and Carbon support from VSTGUI See: GitHub library release page GitHub plugins release page","title":"Removed"},{"location":"news/posts/2023-08-26-sfizz-1.2.2-release/#download-links","text":"sfizz-1.2.2-macos.pkg sfizz-1.2.2-win32.exe sfizz-1.2.2-win64.exe Library source archive Plugins + library source archive","title":"Download links:"},{"location":"sfizz/","text":"sfizz is a sample-based musical synthesizer. It features the well-established SFZ instrument format at its core, which permits to use existing instrument libraries, or create personal instruments with ease. Not only is sfizz ready-to-use as an instrument plugin of its own, the library allows developers to create instruments of their own, taking advantage of the abilities of SFZ. Get sfizz Features SFZ compatible sfizz supports SFZv1, and is partially compatible with SFZv2, the current revision of the instrument specification. The objective is to achieve a high level of SFZ compatibility, and the quality improves with every release. Ready-to-use The synthesizer is available as audio workstation plugins, in VST3i , Audio Unit and LV2 formats. The more advanced users may also use a standalone JACK client. For instrument makers The hot reload ability helps you to design intruments. You are able to edit your custom instrument and test the change on the fly, without having to interact with the software manually. Low memory footprint The streaming system loads the sounds on demand, and dynamically reclaims the memory of sounds which are no longer used. This keeps the RAM memory requirement at minimum. See in action Some artists have demonstrated music creation using sfizz, independently of this project. You are welcome to watch the media and support their work. How to use Virtual Playing Orchestra in Ardour by unfa","title":"Home"},{"location":"sfizz/#features","text":"SFZ compatible sfizz supports SFZv1, and is partially compatible with SFZv2, the current revision of the instrument specification. The objective is to achieve a high level of SFZ compatibility, and the quality improves with every release. Ready-to-use The synthesizer is available as audio workstation plugins, in VST3i , Audio Unit and LV2 formats. The more advanced users may also use a standalone JACK client. For instrument makers The hot reload ability helps you to design intruments. You are able to edit your custom instrument and test the change on the fly, without having to interact with the software manually. Low memory footprint The streaming system loads the sounds on demand, and dynamically reclaims the memory of sounds which are no longer used. This keeps the RAM memory requirement at minimum.","title":"Features"},{"location":"sfizz/#see-in-action","text":"Some artists have demonstrated music creation using sfizz, independently of this project. You are welcome to watch the media and support their work. How to use Virtual Playing Orchestra in Ardour by unfa","title":"See in action"},{"location":"sfizz/downloads/","text":"sfizz 1.2.2 - released on August 26, 2023 Linux Packages for a wide variety of Linux distributions. 64-bit Stable 64-bit Current Windows Installers for Microsoft Windows 7 and up, all 64-bit and 32-bit editions. 64-bit 32-bit macOS Universal macOS package, for 64-bit Intel and Apple Silicon. Universal Source code Archive of the source code, available under a free software license. Library source archive Plugins source archive (library included)","title":"Downloads"},{"location":"sfizz/engine_description/","text":"Global view The sfizz engine is basically a \"Synth\" object that takes an SFZ file in, receives MIDI-type events and is able to render audio through successive calls to a callback function. This is in line with the way most audio applications and plugins are working. A high-level overview is presented in the following diagram. graph TD A[C and C++ API entry point] B[Synth] C[1. Region list] D[2. Common resources and state File pool Envelope pool LFO pool Buffer pool Midi state ...] E[3. Voice pool] A --> B B --> C B --> D B --> E Built from the SFZ file Each region is a semi-passive description object that can decide whether it is \"active\" or not depending on the chain of MIDI events it receives. Once activated, a voice is chosen to play the region until it ends naturally or through note-offs or off-groups. There are a number of common resources that are needed for all the regions and in particular the voices. This includes all the (preloaded) files for the SFZ instrument, but will include in the future the EG and LFOs that are needed to achieve compliance with the SFZ v2 specification. This will also include a temporary buffer holder that voices may share. A common resource of importance is the MIDI state: note durations are needed for some opcodes -- for example rt_decay -- and triggering velocities too. The voices are the polyphony of the synth. They are idle and they get activated by the synth to play a region on a specific event. They are then \"linked\" to the region while it is played, and reset to their idle state when they are done playing the region. The Synth, Voices and Regions form the bulk of the code complexity. The rest of the engine is dedicated of mostly helper classes to enable easy management of floating-point buffers in which the audio data is held, signal processing and accelerated (SIMD) computations, and abstractions that are specific to the SFZ format such as envelope generators, curves or LFOs. Parsing the SFZ files The sfz file logic is pretty simple and well defined. The https://sfzformat.com website contains an extensive documentation on it. At its core, an SFZ file describes a list of region objects on which a certain number of \"opcodes\" will apply. Opcodes can determine the sample played, the event conditions that will trigger the sample such as the range of notes, channels, velocities, the processing to apply on the sample while playing, and many more things. It is also possible to describe a group of regions, as well as exclusive groups that will shut off other regions that may already be playing. There are also master groups, and global opcodes and some other types. All the opcodes are declared within a header, in a pseudo-xml markup language that looks like this: volume=6 set_cc4=5 key=36 sample=kick.wav Here we have 3 headers ( global , control and region ) and each header holds some opcodes. All of these opcodes have a value --- for example the volume is equal to 6 in the global header. Some opcodes also have parameters. The control header holds an opcode set_cc with the parameter 4 and value 5 . The parameter here is the CC to set, and the value at which to set it is 5. The parsing logic of sfizz is handled through a base class called Parser --- a very original choice. This parser has a virtual callback that gets called whenever a header description is \"complete\", along with a list of opcodes that apply to the header. Subclassing the Parser then allows to build different SFZ handlers, from full-blown synths as with sfizz to simpler things such as printers (see in particular https://github.com/sfztools/sfz-flat/ ). If we look at the core of the latter example, it will look something like the following: class PrintingParser: public sfz::Parser { protected: void callback(absl::string_view header, const std::vector& members) final { switch (hash(header)) // The hash(...) function transforms strings to large integers { case hash(\"global\"): // It is also compile-time defined, which allows to do switch-case // statements on strings, something that is usually not possible globalMembers = members; // We save the global headers since they apply to the next // region (and groups and masters) masterMembers.clear(); groupMembers.clear(); break; case hash(\"master\"): masterMembers = members; // So on groupMembers.clear(); break; case hash(\"group\"): groupMembers = members; // .. and so forth break; case hash(\"region\"): std::cout << \"<\" << header << \">\" << ' '; // Now we print the region along with all the opcodes // we memorized from earlier headers. printMembers(globalMembers); printMembers(masterMembers); printMembers(groupMembers); printMembers(members); std::cout << '\\n'; break; default: std::cout << \"<\" << header << \">\" << ' '; printMembers(members); std::cout << '\\n'; break; } } private: std::vector globalMembers; std::vector masterMembers; std::vector groupMembers; void printMembers(const std::vector& members) { for (auto& member: members) { std::cout << member.opcode; if (member.parameter) std::cout << +*member.parameter; std::cout << \"=\" << member.value; std::cout << ' '; } } }; The main function is then quite straightforward and we call a function from the Parser class that loads a file PrintingParser parser; parser.loadSfzFile(\"my_sfz_file.sfz\"); If you circle back to the parser you will see that opcodes are stored in an Opcode class. This class does some parsing itself and separates the opcode name itself, parameters if any, and the value. Opcodes are very cheap to copy and pass around because they only refer to characters in the file that are stored inside the Parser class, so feel free to create vectors of them and move them around. Note that you may also derive the loadSfzFile() method if you have any processing you need to do before the actual parsing happens. Building the region list in sfizz The callback method from sfizz is actually quite similar to the one shown above, except that instead of printing the region we actually fill a big structure from it.","title":"The Engine"},{"location":"sfizz/engine_description/#global-view","text":"The sfizz engine is basically a \"Synth\" object that takes an SFZ file in, receives MIDI-type events and is able to render audio through successive calls to a callback function. This is in line with the way most audio applications and plugins are working. A high-level overview is presented in the following diagram. graph TD A[C and C++ API entry point] B[Synth] C[1. Region list] D[2. Common resources and state File pool Envelope pool LFO pool Buffer pool Midi state ...] E[3. Voice pool] A --> B B --> C B --> D B --> E Built from the SFZ file Each region is a semi-passive description object that can decide whether it is \"active\" or not depending on the chain of MIDI events it receives. Once activated, a voice is chosen to play the region until it ends naturally or through note-offs or off-groups. There are a number of common resources that are needed for all the regions and in particular the voices. This includes all the (preloaded) files for the SFZ instrument, but will include in the future the EG and LFOs that are needed to achieve compliance with the SFZ v2 specification. This will also include a temporary buffer holder that voices may share. A common resource of importance is the MIDI state: note durations are needed for some opcodes -- for example rt_decay -- and triggering velocities too. The voices are the polyphony of the synth. They are idle and they get activated by the synth to play a region on a specific event. They are then \"linked\" to the region while it is played, and reset to their idle state when they are done playing the region. The Synth, Voices and Regions form the bulk of the code complexity. The rest of the engine is dedicated of mostly helper classes to enable easy management of floating-point buffers in which the audio data is held, signal processing and accelerated (SIMD) computations, and abstractions that are specific to the SFZ format such as envelope generators, curves or LFOs.","title":"Global view"},{"location":"sfizz/engine_description/#parsing-the-sfz-files","text":"The sfz file logic is pretty simple and well defined. The https://sfzformat.com website contains an extensive documentation on it. At its core, an SFZ file describes a list of region objects on which a certain number of \"opcodes\" will apply. Opcodes can determine the sample played, the event conditions that will trigger the sample such as the range of notes, channels, velocities, the processing to apply on the sample while playing, and many more things. It is also possible to describe a group of regions, as well as exclusive groups that will shut off other regions that may already be playing. There are also master groups, and global opcodes and some other types. All the opcodes are declared within a header, in a pseudo-xml markup language that looks like this: volume=6 set_cc4=5 key=36 sample=kick.wav Here we have 3 headers ( global , control and region ) and each header holds some opcodes. All of these opcodes have a value --- for example the volume is equal to 6 in the global header. Some opcodes also have parameters. The control header holds an opcode set_cc with the parameter 4 and value 5 . The parameter here is the CC to set, and the value at which to set it is 5. The parsing logic of sfizz is handled through a base class called Parser --- a very original choice. This parser has a virtual callback that gets called whenever a header description is \"complete\", along with a list of opcodes that apply to the header. Subclassing the Parser then allows to build different SFZ handlers, from full-blown synths as with sfizz to simpler things such as printers (see in particular https://github.com/sfztools/sfz-flat/ ). If we look at the core of the latter example, it will look something like the following: class PrintingParser: public sfz::Parser { protected: void callback(absl::string_view header, const std::vector& members) final { switch (hash(header)) // The hash(...) function transforms strings to large integers { case hash(\"global\"): // It is also compile-time defined, which allows to do switch-case // statements on strings, something that is usually not possible globalMembers = members; // We save the global headers since they apply to the next // region (and groups and masters) masterMembers.clear(); groupMembers.clear(); break; case hash(\"master\"): masterMembers = members; // So on groupMembers.clear(); break; case hash(\"group\"): groupMembers = members; // .. and so forth break; case hash(\"region\"): std::cout << \"<\" << header << \">\" << ' '; // Now we print the region along with all the opcodes // we memorized from earlier headers. printMembers(globalMembers); printMembers(masterMembers); printMembers(groupMembers); printMembers(members); std::cout << '\\n'; break; default: std::cout << \"<\" << header << \">\" << ' '; printMembers(members); std::cout << '\\n'; break; } } private: std::vector globalMembers; std::vector masterMembers; std::vector groupMembers; void printMembers(const std::vector& members) { for (auto& member: members) { std::cout << member.opcode; if (member.parameter) std::cout << +*member.parameter; std::cout << \"=\" << member.value; std::cout << ' '; } } }; The main function is then quite straightforward and we call a function from the Parser class that loads a file PrintingParser parser; parser.loadSfzFile(\"my_sfz_file.sfz\"); If you circle back to the parser you will see that opcodes are stored in an Opcode class. This class does some parsing itself and separates the opcode name itself, parameters if any, and the value. Opcodes are very cheap to copy and pass around because they only refer to characters in the file that are stored inside the Parser class, so feel free to create vectors of them and move them around. Note that you may also derive the loadSfzFile() method if you have any processing you need to do before the actual parsing happens.","title":"Parsing the SFZ files"},{"location":"sfizz/engine_description/#building-the-region-list-in-sfizz","text":"The callback method from sfizz is actually quite similar to the one shown above, except that instead of printing the region we actually fill a big structure from it.","title":"Building the region list in sfizz"},{"location":"sfizz/faq/","text":"SFZ What is it, where and how to Q: What is SFZ? Where I can find some documentation? I would like to make my own instrument. A : You can find the documentation and tutorials on the sfzformat website. Q: Are there some instruments that I can test with sfizz? A : There are various websites where to get free and commercial instruments, some of the free ones are linked from here, like sfzinstruments and freepats . Supported by sfizz Q: Which opcodes are supported by sfizz? A : The opcode support table can be found here . It has also some search filters : - by query string - by version - by status (supported, unsupported and work in progress) - by categories Plugins Linux Q: I can't load any sfz or scala file, selecting the menu / clicking the button does nothing. A : The file requester depends on the zenity package, which probably is missing in your system.","title":"FAQ"},{"location":"sfizz/faq/#sfz","text":"","title":"SFZ"},{"location":"sfizz/faq/#what-is-it-where-and-how-to","text":"Q: What is SFZ? Where I can find some documentation? I would like to make my own instrument. A : You can find the documentation and tutorials on the sfzformat website. Q: Are there some instruments that I can test with sfizz? A : There are various websites where to get free and commercial instruments, some of the free ones are linked from here, like sfzinstruments and freepats .","title":"What is it, where and how to"},{"location":"sfizz/faq/#supported-by-sfizz","text":"Q: Which opcodes are supported by sfizz? A : The opcode support table can be found here . It has also some search filters : - by query string - by version - by status (supported, unsupported and work in progress) - by categories","title":"Supported by sfizz"},{"location":"sfizz/faq/#plugins","text":"","title":"Plugins"},{"location":"sfizz/faq/#linux","text":"Q: I can't load any sfz or scala file, selecting the menu / clicking the button does nothing. A : The file requester depends on the zenity package, which probably is missing in your system.","title":"Linux"},{"location":"sfizz/quick_reference/","text":"How to do X in sfizz SFZ? This section describes basic use of some SFZ features, illustrated with examples. Some of these features may be not very widely implemented in SFZ players, or specific to sfizz. Oscillators Basic oscillator The most basic form of oscillator is obtained by using one of the predefined waveforms. The name *saw provides the sawtooth oscillator. sample=*saw Detuned oscillator This creates a pair of sawtooth waves. The second sawtooth is detuned by 50 cents, making the pair create together the impression of a fuller sound. sample=*saw sample=*saw pitch=50 Wavetable oscillator This creates an oscillator with a custom waveform, which is loaded from an audio file. This file contains exactly one period of signal, and its sample rate is disregarded. One way to create wavetables is to use the WCreate utility. - Documentation, and Windows software: futur3soundz - macOS and Linux software: WaveTableTools The example refers to a wave composed of the 6 first harmonics: WCreate 1024 \"x<6\" sine_hrm_06.wav The oscillator opcode indicates that we are dealing with a file which is a wavetable. Starting with sfizz 0.5.0, oscillator is optional: an audio file with less than 3000 frames is considered to be a wavetable. sample=sine_hrm_06.wav oscillator=on Unison oscillator This creates an array of oscillators which are spread out in gain and frequency relative to the fundamental, and arranged in opposite fashion in left and right channels to create a stereo effect. The unison mode is enabled when oscillator_multi is 3 or more, and oscillator_mode is default or 0. The example creates an array of 5 sawtooth waves, spread using a detuning interval set to 50 cents. (a \"supersaw\") sample=*saw oscillator=on oscillator_multi=5 oscillator_detune=50 Ring modulation oscillator (experimental) When the opcodes are set to oscillator_mode=0 and oscillator_multi=2 , this configures a pair of oscillators for ring modulation. The modulator, whose frequency is determined by oscillator_detune in cents, modulates the amplitude of the carrier oscillator, with a depth determined by oscillator_mod_depth expressed as a percentage. set_hdcc21=0.5 sample=*saw oscillator=on oscillator_mode=0 oscillator_multi=2 oscillator_detune=25 oscillator_mod_depth=100 oscillator_mod_depth_oncc21=100 FM oscillator (experimental) A 2-operator FM arrangement can be constructed by setting oscillator_mode=2 . The frequency of the modulator is determined by oscillator_detune in cents, and the FM index by oscillator_mod_depth . The depth is expressed as a percentage, which means that the value 100 represents the FM index 1.0 . set_cc21=100 volume=-3.0 sample=*sine oscillator=on oscillator_mode=2 oscillator_detune=5 oscillator_mod_depth=100 oscillator_mod_depth_oncc21=1000 Filters Modulation Effects","title":"Quick Reference"},{"location":"sfizz/quick_reference/#how-to-do-x-in-sfizz-sfz","text":"This section describes basic use of some SFZ features, illustrated with examples. Some of these features may be not very widely implemented in SFZ players, or specific to sfizz.","title":"How to do X in sfizz SFZ?"},{"location":"sfizz/quick_reference/#oscillators","text":"","title":"Oscillators"},{"location":"sfizz/quick_reference/#basic-oscillator","text":"The most basic form of oscillator is obtained by using one of the predefined waveforms. The name *saw provides the sawtooth oscillator. sample=*saw","title":"Basic oscillator"},{"location":"sfizz/quick_reference/#detuned-oscillator","text":"This creates a pair of sawtooth waves. The second sawtooth is detuned by 50 cents, making the pair create together the impression of a fuller sound. sample=*saw sample=*saw pitch=50","title":"Detuned oscillator"},{"location":"sfizz/quick_reference/#wavetable-oscillator","text":"This creates an oscillator with a custom waveform, which is loaded from an audio file. This file contains exactly one period of signal, and its sample rate is disregarded. One way to create wavetables is to use the WCreate utility. - Documentation, and Windows software: futur3soundz - macOS and Linux software: WaveTableTools The example refers to a wave composed of the 6 first harmonics: WCreate 1024 \"x<6\" sine_hrm_06.wav The oscillator opcode indicates that we are dealing with a file which is a wavetable. Starting with sfizz 0.5.0, oscillator is optional: an audio file with less than 3000 frames is considered to be a wavetable. sample=sine_hrm_06.wav oscillator=on","title":"Wavetable oscillator"},{"location":"sfizz/quick_reference/#unison-oscillator","text":"This creates an array of oscillators which are spread out in gain and frequency relative to the fundamental, and arranged in opposite fashion in left and right channels to create a stereo effect. The unison mode is enabled when oscillator_multi is 3 or more, and oscillator_mode is default or 0. The example creates an array of 5 sawtooth waves, spread using a detuning interval set to 50 cents. (a \"supersaw\") sample=*saw oscillator=on oscillator_multi=5 oscillator_detune=50","title":"Unison oscillator"},{"location":"sfizz/quick_reference/#ring-modulation-oscillator-experimental","text":"When the opcodes are set to oscillator_mode=0 and oscillator_multi=2 , this configures a pair of oscillators for ring modulation. The modulator, whose frequency is determined by oscillator_detune in cents, modulates the amplitude of the carrier oscillator, with a depth determined by oscillator_mod_depth expressed as a percentage. set_hdcc21=0.5 sample=*saw oscillator=on oscillator_mode=0 oscillator_multi=2 oscillator_detune=25 oscillator_mod_depth=100 oscillator_mod_depth_oncc21=100","title":"Ring modulation oscillator (experimental)"},{"location":"sfizz/quick_reference/#fm-oscillator-experimental","text":"A 2-operator FM arrangement can be constructed by setting oscillator_mode=2 . The frequency of the modulator is determined by oscillator_detune in cents, and the FM index by oscillator_mod_depth . The depth is expressed as a percentage, which means that the value 100 represents the FM index 1.0 . set_cc21=100 volume=-3.0 sample=*sine oscillator=on oscillator_mode=2 oscillator_detune=5 oscillator_mod_depth=100 oscillator_mod_depth_oncc21=1000","title":"FM oscillator (experimental)"},{"location":"sfizz/quick_reference/#filters","text":"","title":"Filters"},{"location":"sfizz/quick_reference/#modulation","text":"","title":"Modulation"},{"location":"sfizz/quick_reference/#effects","text":"","title":"Effects"},{"location":"sfizz/api/","text":"C sfizz.h sfizz_message.h C++ sfizz.hpp","title":"API"},{"location":"sfizz/api/#c","text":"sfizz.h sfizz_message.h","title":"C"},{"location":"sfizz/api/#c_1","text":"sfizz.hpp","title":"C++"},{"location":"sfizz/api/sfizz.h/","text":"","title":"Sfizz.h"},{"location":"sfizz/api/sfizz.hpp/","text":"","title":"sfz::Sfizz"},{"location":"sfizz/api/sfizz_message.h/","text":"","title":"Sfizz message.h"},{"location":"sfizz/development/build/","text":"Git Ensure to have git installed to be able to download the sfizz source files, then run: git clone --recursive https://github.com/sfztools/sfizz-ui.git This will also download recursively all the submodules required to build the project. Use sfizz.git repository if you are only interested on the library. If you already downloaded the project without the recursive (or recurse-submodules ) option, you can run: git submodule update --init --recursive See also the main FAQ page. Dependencies On macOS and Windows we build most of bundled dependencies statically. However you can use a package manager to install the required libraries, like [Homebrew] on macOS and specifying the related SFIZZ_USE_SYSTEM_* CMake options (see below). This will also speed up the build process. Check the Linux page for details on how to install the required libraries on various distributions. CMake Build System We use CMake as build system. The basic process is to configure and build the project. On macOS using brew : brew update brew upgrade cmake Configuration Some of the following options might be added / changed / removed, so please check the main CMakeLists.txt on the root directory of the repository. If using the sfizz-ui repository check also in the library subdirectory / submodule. Current configuration options for sfizz are: ENABLE_LTO Enable Link Time Optimization [default: ON] SFIZZ_JACK Enable JACK stand-alone build [default: ON only on Linux] SFIZZ_RENDER Enable renderer of SMF files [default: ON] SFIZZ_SHARED Enable shared library build [default: ON] PLUGIN_AU Enable AU plug-in build [default: ON only on macOS] PLUGIN_LV2 Enable LV2 plug-in build [default: ON] PLUGIN_LV2_UI Enable LV2 GUI build [default: ON] PLUGIN_PUREDATA Enable Puredata plug-in build [default: OFF] PLUGIN_VST2 Enable VST2 plug-in build (unsupported) [default: OFF] PLUGIN_VST3 Enable VST3 plug-in build [default: ON] SFIZZ_BENCHMARKS Enable benchmarks build [default: OFF] SFIZZ_DEMOS Enable feature demos build [default: OFF] SFIZZ_DEVTOOLS Enable developer tools build [default: OFF] SFIZZ_TESTS Enable tests build [default: OFF] SFIZZ_USE_SNDFILE Build with libsndfile [default: OFF] SFIZZ_SNDFILE_STATIC Link the sndfile library statically [default: OFF] SFIZZ_USE_SYSTEM_ABSEIL Use Abseil libraries preinstalled on system [default: OFF] SFIZZ_USE_SYSTEM_CATCH Use Catch libraries preinstalled on system [default: OFF] SFIZZ_USE_SYSTEM_CXXOPTS Use CXXOPTS libraries preinstalled on system [default: OFF] SFIZZ_USE_SYSTEM_GHC_FS Use GHC Filesystem libraries preinstalled on system [default: OFF] SFIZZ_USE_SYSTEM_LV2 Use LV2 headers preinstalled on system [default: OFF] SFIZZ_USE_SYSTEM_SIMDE Use SIMDe libraries preinstalled on system [default: OFF] SFIZZ_USE_SYSTEM_KISS_FFT Use KISS libraries preinstalled on system [default: OFF] SFIZZ_USE_SYSTEM_PUGIXML Use pugixml libraries preinstalled on system [default: OFF] SFIZZ_USE_SYSTEM_VST3SDK Use VST3SDK source files preinstalled on system [default: OFF] SFIZZ_PROFILE_BUILD Profile the build time [default: OFF] SFIZZ_RELEASE_ASSERTS Forced assertions in release builds [default: OFF] On macOS it's possible to enable universal builds by adding -D CMAKE_OSX_ARCHITECTURES=\"arm64;x86_64\" . Build The 3 basic steps are: - create a build directory and cd into it - create the configuration - run the build command (the following example uses make , default build tool on Unix based systems) mkdir build && cd build cmake .. make From (at least) CMake v3.13 this can be done in 2 steps in a crossplatform way: cmake -B build -S . cmake --build build For further details check the CMake configuration options manual . For reference check also our CI build workflow file. You can build with clang , although in that case the CMakeFile defaults to using libc++ instead of libstdc++ . By default this builds: - The shared library version of sfizz with both C and C++ interfaces - The JACK client on Linux - The offline rendering client - The AU plugin on macOS - The LV2 plugin and its UI - The VST3 plugin Examples All targets but the GUI-less LV2 plugin can be disabled using: cmake .. \\ -DSFIZZ_JACK=OFF \\ -DSFIZZ_SHARED=OFF \\ -DSFIZZ_RENDER=OFF \\ -DPLUGIN_LV2_UI=OFF \\ -DPLUGIN_VST3=OFF and process as before. All targets but sfizz_render can be disabled using: cmake .. \\ -DSFIZZ_JACK=OFF \\ -DSFIZZ_SHARED=OFF \\ -DPLUGIN_LV2=OFF \\ -DPLUGIN_LV2_UI=OFF \\ -DPLUGIN_VST3=OFF and process as before. Rendering MIDI files You can find sfizz_render in clients/sfizz_render . From your build directory, type clients/sfizz_render --help for more information.","title":"Build"},{"location":"sfizz/development/build/#git","text":"Ensure to have git installed to be able to download the sfizz source files, then run: git clone --recursive https://github.com/sfztools/sfizz-ui.git This will also download recursively all the submodules required to build the project. Use sfizz.git repository if you are only interested on the library. If you already downloaded the project without the recursive (or recurse-submodules ) option, you can run: git submodule update --init --recursive See also the main FAQ page.","title":"Git"},{"location":"sfizz/development/build/#dependencies","text":"On macOS and Windows we build most of bundled dependencies statically. However you can use a package manager to install the required libraries, like [Homebrew] on macOS and specifying the related SFIZZ_USE_SYSTEM_* CMake options (see below). This will also speed up the build process. Check the Linux page for details on how to install the required libraries on various distributions.","title":"Dependencies"},{"location":"sfizz/development/build/#cmake-build-system","text":"We use CMake as build system. The basic process is to configure and build the project. On macOS using brew : brew update brew upgrade cmake","title":"CMake Build System"},{"location":"sfizz/development/build/#configuration","text":"Some of the following options might be added / changed / removed, so please check the main CMakeLists.txt on the root directory of the repository. If using the sfizz-ui repository check also in the library subdirectory / submodule. Current configuration options for sfizz are: ENABLE_LTO Enable Link Time Optimization [default: ON] SFIZZ_JACK Enable JACK stand-alone build [default: ON only on Linux] SFIZZ_RENDER Enable renderer of SMF files [default: ON] SFIZZ_SHARED Enable shared library build [default: ON] PLUGIN_AU Enable AU plug-in build [default: ON only on macOS] PLUGIN_LV2 Enable LV2 plug-in build [default: ON] PLUGIN_LV2_UI Enable LV2 GUI build [default: ON] PLUGIN_PUREDATA Enable Puredata plug-in build [default: OFF] PLUGIN_VST2 Enable VST2 plug-in build (unsupported) [default: OFF] PLUGIN_VST3 Enable VST3 plug-in build [default: ON] SFIZZ_BENCHMARKS Enable benchmarks build [default: OFF] SFIZZ_DEMOS Enable feature demos build [default: OFF] SFIZZ_DEVTOOLS Enable developer tools build [default: OFF] SFIZZ_TESTS Enable tests build [default: OFF] SFIZZ_USE_SNDFILE Build with libsndfile [default: OFF] SFIZZ_SNDFILE_STATIC Link the sndfile library statically [default: OFF] SFIZZ_USE_SYSTEM_ABSEIL Use Abseil libraries preinstalled on system [default: OFF] SFIZZ_USE_SYSTEM_CATCH Use Catch libraries preinstalled on system [default: OFF] SFIZZ_USE_SYSTEM_CXXOPTS Use CXXOPTS libraries preinstalled on system [default: OFF] SFIZZ_USE_SYSTEM_GHC_FS Use GHC Filesystem libraries preinstalled on system [default: OFF] SFIZZ_USE_SYSTEM_LV2 Use LV2 headers preinstalled on system [default: OFF] SFIZZ_USE_SYSTEM_SIMDE Use SIMDe libraries preinstalled on system [default: OFF] SFIZZ_USE_SYSTEM_KISS_FFT Use KISS libraries preinstalled on system [default: OFF] SFIZZ_USE_SYSTEM_PUGIXML Use pugixml libraries preinstalled on system [default: OFF] SFIZZ_USE_SYSTEM_VST3SDK Use VST3SDK source files preinstalled on system [default: OFF] SFIZZ_PROFILE_BUILD Profile the build time [default: OFF] SFIZZ_RELEASE_ASSERTS Forced assertions in release builds [default: OFF] On macOS it's possible to enable universal builds by adding -D CMAKE_OSX_ARCHITECTURES=\"arm64;x86_64\" .","title":"Configuration"},{"location":"sfizz/development/build/#build","text":"The 3 basic steps are: - create a build directory and cd into it - create the configuration - run the build command (the following example uses make , default build tool on Unix based systems) mkdir build && cd build cmake .. make From (at least) CMake v3.13 this can be done in 2 steps in a crossplatform way: cmake -B build -S . cmake --build build For further details check the CMake configuration options manual . For reference check also our CI build workflow file. You can build with clang , although in that case the CMakeFile defaults to using libc++ instead of libstdc++ . By default this builds: - The shared library version of sfizz with both C and C++ interfaces - The JACK client on Linux - The offline rendering client - The AU plugin on macOS - The LV2 plugin and its UI - The VST3 plugin","title":"Build"},{"location":"sfizz/development/build/#examples","text":"All targets but the GUI-less LV2 plugin can be disabled using: cmake .. \\ -DSFIZZ_JACK=OFF \\ -DSFIZZ_SHARED=OFF \\ -DSFIZZ_RENDER=OFF \\ -DPLUGIN_LV2_UI=OFF \\ -DPLUGIN_VST3=OFF and process as before. All targets but sfizz_render can be disabled using: cmake .. \\ -DSFIZZ_JACK=OFF \\ -DSFIZZ_SHARED=OFF \\ -DPLUGIN_LV2=OFF \\ -DPLUGIN_LV2_UI=OFF \\ -DPLUGIN_VST3=OFF and process as before.","title":"Examples"},{"location":"sfizz/development/build/#rendering-midi-files","text":"You can find sfizz_render in clients/sfizz_render . From your build directory, type clients/sfizz_render --help for more information.","title":"Rendering MIDI files"},{"location":"sfizz/development/build/linux/","text":"On this page we specify the required packages on Debian / Ubuntu and Fedora (based) distributions for reference, but unfortunately we can't cover all systems. For Archlinux based systems you can check their official PKGBUILD ; we also provide one for the current development source tree on AUR . Dependencies In order to build the plugins with the GUI, you need to install the following dependencies. For the standalone client and other demos, you need to install also the JACK Audio Connection Kit library. Ubuntu / Debian sudo apt install \\ libcairo2-dev \\ libfontconfig1-dev \\ libfreetype6-dev \\ libglib2.0-dev \\ libpango1.0-dev \\ libx11-dev \\ libx11-xcb-dev \\ libxcb-cursor-dev \\ libxcb-keysyms1-dev \\ libxcb-util-dev \\ libxcb-xkb-dev \\ libxkbcommon-dev \\ libxkbcommon-x11-dev \\ zenity \\ libjack-jackd2-dev Fedora sudo dnf install \\ cairo-devel \\ fontconfig-devel \\ freetype-devel \\ glib2-devel \\ libX11-devel \\ libxcb-devel \\ libxkbcommon-devel \\ libxkbcommon-x11-devel \\ pango-devel \\ xcb-util-cursor-devel \\ xcb-util-devel \\ xcb-util-keysyms-devel \\ zenity \\ jack-audio-connection-kit-devel The default build uses the bundled dr_libs library for audio samples management. If building with libsndfile , Debian and Ubuntu provide a libsndfile1-dev package, libsndfile-devel for Fedora. Benchmarks The benchmarks depend on the benchmark library. If you wish to build the benchmarks you should either build the static library from source, or use the library from your distribution. Debian and Ubuntu provide a libbenchmark-dev package, google-benchmark-devel for Fedora. JACK Standalone Client You can find the JACK client in clients/sfizz_jack . The JACK client client will forcefully connect to the system output, and open an event input in JACK for you to connect a midi capable software or hardware (e.g. jack-keyboard ). If no JACK server is already started it will start one with basic options.","title":"Linux Build"},{"location":"sfizz/development/build/linux/#dependencies","text":"In order to build the plugins with the GUI, you need to install the following dependencies. For the standalone client and other demos, you need to install also the JACK Audio Connection Kit library.","title":"Dependencies"},{"location":"sfizz/development/build/linux/#ubuntu-debian","text":"sudo apt install \\ libcairo2-dev \\ libfontconfig1-dev \\ libfreetype6-dev \\ libglib2.0-dev \\ libpango1.0-dev \\ libx11-dev \\ libx11-xcb-dev \\ libxcb-cursor-dev \\ libxcb-keysyms1-dev \\ libxcb-util-dev \\ libxcb-xkb-dev \\ libxkbcommon-dev \\ libxkbcommon-x11-dev \\ zenity \\ libjack-jackd2-dev","title":"Ubuntu / Debian"},{"location":"sfizz/development/build/linux/#fedora","text":"sudo dnf install \\ cairo-devel \\ fontconfig-devel \\ freetype-devel \\ glib2-devel \\ libX11-devel \\ libxcb-devel \\ libxkbcommon-devel \\ libxkbcommon-x11-devel \\ pango-devel \\ xcb-util-cursor-devel \\ xcb-util-devel \\ xcb-util-keysyms-devel \\ zenity \\ jack-audio-connection-kit-devel The default build uses the bundled dr_libs library for audio samples management. If building with libsndfile , Debian and Ubuntu provide a libsndfile1-dev package, libsndfile-devel for Fedora.","title":"Fedora"},{"location":"sfizz/development/build/linux/#benchmarks","text":"The benchmarks depend on the benchmark library. If you wish to build the benchmarks you should either build the static library from source, or use the library from your distribution. Debian and Ubuntu provide a libbenchmark-dev package, google-benchmark-devel for Fedora.","title":"Benchmarks"},{"location":"sfizz/development/build/linux/#jack-standalone-client","text":"You can find the JACK client in clients/sfizz_jack . The JACK client client will forcefully connect to the system output, and open an event input in JACK for you to connect a midi capable software or hardware (e.g. jack-keyboard ). If no JACK server is already started it will start one with basic options.","title":"JACK Standalone Client"},{"location":"sfizz/development/status/","text":"View detailed list The classification of opcodes follows the list over at sfzformat.com . Version Status SFZ v1 96% 1% SFZ v2 44% ARIA 45% Complete Work In Progress Supported Headers All headers, including < sample > are currently supported. Supported Operating Systems Linux macOS X Windows","title":"Opcodes Support Status"},{"location":"sfizz/development/status/#supported-headers","text":"All headers, including < sample > are currently supported.","title":"Supported Headers"},{"location":"sfizz/development/status/#supported-operating-systems","text":"Linux macOS X Windows","title":"Supported Operating Systems"},{"location":"sfizz/development/status/opcodes/","text":"","title":"Opcodes Support Table"}]} \ No newline at end of file diff --git a/search/worker.js b/search/worker.js new file mode 100644 index 00000000..8628dbce --- /dev/null +++ b/search/worker.js @@ -0,0 +1,133 @@ +var base_path = 'function' === typeof importScripts ? '.' : '/search/'; +var allowSearch = false; +var index; +var documents = {}; +var lang = ['en']; +var data; + +function getScript(script, callback) { + console.log('Loading script: ' + script); + $.getScript(base_path + script).done(function () { + callback(); + }).fail(function (jqxhr, settings, exception) { + console.log('Error: ' + exception); + }); +} + +function getScriptsInOrder(scripts, callback) { + if (scripts.length === 0) { + callback(); + return; + } + getScript(scripts[0], function() { + getScriptsInOrder(scripts.slice(1), callback); + }); +} + +function loadScripts(urls, callback) { + if( 'function' === typeof importScripts ) { + importScripts.apply(null, urls); + callback(); + } else { + getScriptsInOrder(urls, callback); + } +} + +function onJSONLoaded () { + data = JSON.parse(this.responseText); + var scriptsToLoad = ['lunr.js']; + if (data.config && data.config.lang && data.config.lang.length) { + lang = data.config.lang; + } + if (lang.length > 1 || lang[0] !== "en") { + scriptsToLoad.push('lunr.stemmer.support.js'); + if (lang.length > 1) { + scriptsToLoad.push('lunr.multi.js'); + } + if (lang.includes("ja") || lang.includes("jp")) { + scriptsToLoad.push('tinyseg.js'); + } + for (var i=0; i < lang.length; i++) { + if (lang[i] != 'en') { + scriptsToLoad.push(['lunr', lang[i], 'js'].join('.')); + } + } + } + loadScripts(scriptsToLoad, onScriptsLoaded); +} + +function onScriptsLoaded () { + console.log('All search scripts loaded, building Lunr index...'); + if (data.config && data.config.separator && data.config.separator.length) { + lunr.tokenizer.separator = new RegExp(data.config.separator); + } + + if (data.index) { + index = lunr.Index.load(data.index); + data.docs.forEach(function (doc) { + documents[doc.location] = doc; + }); + console.log('Lunr pre-built index loaded, search ready'); + } else { + index = lunr(function () { + if (lang.length === 1 && lang[0] !== "en" && lunr[lang[0]]) { + this.use(lunr[lang[0]]); + } else if (lang.length > 1) { + this.use(lunr.multiLanguage.apply(null, lang)); // spread operator not supported in all browsers: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator#Browser_compatibility + } + this.field('title'); + this.field('text'); + this.ref('location'); + + for (var i=0; i < data.docs.length; i++) { + var doc = data.docs[i]; + this.add(doc); + documents[doc.location] = doc; + } + }); + console.log('Lunr index built, search ready'); + } + allowSearch = true; + postMessage({config: data.config}); + postMessage({allowSearch: allowSearch}); +} + +function init () { + var oReq = new XMLHttpRequest(); + oReq.addEventListener("load", onJSONLoaded); + var index_path = base_path + '/search_index.json'; + if( 'function' === typeof importScripts ){ + index_path = 'search_index.json'; + } + oReq.open("GET", index_path); + oReq.send(); +} + +function search (query) { + if (!allowSearch) { + console.error('Assets for search still loading'); + return; + } + + var resultDocuments = []; + var results = index.search(query); + for (var i=0; i < results.length; i++){ + var result = results[i]; + doc = documents[result.ref]; + doc.summary = doc.text.substring(0, 200); + resultDocuments.push(doc); + } + return resultDocuments; +} + +if( 'function' === typeof importScripts ) { + onmessage = function (e) { + if (e.data.init) { + init(); + } else if (e.data.query) { + postMessage({ results: search(e.data.query) }); + } else { + console.error("Worker - Unrecognized message: " + e); + } + }; +} diff --git a/sfizz/api/index.html b/sfizz/api/index.html new file mode 100644 index 00000000..5fd54959 --- /dev/null +++ b/sfizz/api/index.html @@ -0,0 +1,682 @@ + + + + + + + + + API - SFZTools + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+
+ +
+
+ +
+

+
+

+ Copyright © 2019-2024 + SFZTools Organization + + This site is open source. + + Improve this page + +

+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfizz/api/sfizz.h/index.html b/sfizz/api/sfizz.h/index.html new file mode 100644 index 00000000..9bb78f12 --- /dev/null +++ b/sfizz/api/sfizz.h/index.html @@ -0,0 +1,3627 @@ + + + + + + + + + sfizz.h - SFZTools + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ sfizz.h - SFZTools + + +

sfizz.h File Reference

+sfizz public C API.

Macros

+

SFIZZ_OUT_OF_BOUNDS_LABEL_INDEX

+
+
+ + + + +
#define SFIZZ_OUT_OF_BOUNDS_LABEL_INDEX (-1) +
+
+
+

Index out of bound error for the requested CC/key label.

+
+
Since
+
0.4.0
+
+
+
+

Enumerations

+

sfizz_oversampling_factor_t

+
+
+ enum sfizz_oversampling_factor_t {
+ SFIZZ_OVERSAMPLING_X1 + = 1
+ SFIZZ_OVERSAMPLING_X2 + = 2
+ SFIZZ_OVERSAMPLING_X4 + = 4
+ SFIZZ_OVERSAMPLING_X8 + = 8
+} +

Oversampling factor.

+
+
Since
+
0.2.0
+
+
+
+

sfizz_process_mode_t

+
+
+ enum sfizz_process_mode_t {
+ SFIZZ_PROCESS_LIVE +
+ SFIZZ_PROCESS_FREEWHEELING +
+} +

Processing mode.

+
+
Since
+
0.5.0
+
+
+
+

Typedefs

+

sfizz_synth_t

+
+
+ + + + +
typedef struct sfizz_synth_t sfizz_synth_t +
+
+
+

Synth handle.

+
+
Since
+
0.2.0
+
+
+
+

sfizz_client_t

+
+
+ + + + +
typedef struct sfizz_client_t sfizz_client_t +
+
+
+

Client for communicating with the synth engine in either direction.

+
+
Since
+
1.0.0
+
+
+
+

Functions

+ +

sfizz_create_synth

+
+
+ + + + + + + +
SFIZZ_EXPORTED_API sfizz_synth_t * + sfizz_create_synth + ()
+
+

Creates a sfizz synth.

This object has to be freed by the caller using sfizz_free(). The synth by default is set at 48 kHz and a maximum block size of 1024. You should change these values if they are not correct for your application. +
+
Since
+
0.2.0
+
+
+
+ +

sfizz_free

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_free + (sfizz_synth_t *synth)
+
+

Frees an existing sfizz synth.

+
+
Parameters
+
+ + +
synthThe synth to destroy.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_add_ref

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_add_ref + (sfizz_synth_t *synth)
+
+

Adds a reference to an existing sfizz synth.

+
+
Parameters
+
+ + +
synthThe synth to reference.
+
+
+
+
Since
+
1.0.0
+
+
+
+ +

sfizz_load_file

+
+
+ + + + + + + + + + + + +
SFIZZ_EXPORTED_API bool + sfizz_load_file + (sfizz_synth_t *synth,const char *path)
+
+

Loads an SFZ file.

The file path can be absolute or relative. All file operations for this SFZ file will be relative to the parent directory of the SFZ file. +
+
Parameters
+
+ + + +
synthThe synth.
pathA null-terminated string representing a path to an SFZ file.
+
+
+
+
Returns
+
true when file loading went OK, false if some error occured while loading.
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_load_string

+
+
+ + + + + + + + + + + + + + + +
SFIZZ_EXPORTED_API bool + sfizz_load_string + (sfizz_synth_t *synth,const char *path,const char *text)
+
+

Loads an SFZ file from textual data.

This accepts a virtual path name for the imaginary sfz file, which is not required to exist on disk. The purpose of the virtual path is to locate samples with relative paths. +
+
Parameters
+
+ + + + +
synthThe synth.
pathThe virtual path of the SFZ file.
textThe contents of the virtual SFZ file.
+
+
+
+
Returns
+
true when file loading went OK, false if some error occured while loading.
+
+
+
Since
+
0.4.0
+
+
+
+ +

sfizz_load_scala_file

+
+
+ + + + + + + + + + + + +
SFIZZ_EXPORTED_API bool + sfizz_load_scala_file + (sfizz_synth_t *synth,const char *path)
+
+

Sets the tuning from a Scala file loaded from the file system.

+
+
Parameters
+
+ + + +
synthThe synth.
pathThe path to the file in Scala format.
+
+
+
+
Returns
+
true when tuning scale loaded OK, false if some error occurred.
+
+
+
Since
+
0.4.0
+
+
+
+ +

sfizz_load_scala_string

+
+
+ + + + + + + + + + + + +
SFIZZ_EXPORTED_API bool + sfizz_load_scala_string + (sfizz_synth_t *synth,const char *text)
+
+

Sets the tuning from a Scala file loaded from memory.

+
+
Parameters
+
+ + + +
synthThe synth.
textThe contents of the file in Scala format.
+
+
+
+
Returns
+
true when tuning scale loaded OK, false if some error occurred.
+
+
+
Since
+
0.4.0
+
+
+
+ +

sfizz_set_scala_root_key

+
+
+ + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_set_scala_root_key + (sfizz_synth_t *synth,introot_key)
+
+

Sets the scala root key.

+
+
Parameters
+
+ + + +
synthThe synth.
root_keyThe MIDI number of the Scala root key (default 60 for C4).
+
+
+
+
Since
+
0.4.0
+
+
+
+ +

sfizz_get_scala_root_key

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API int + sfizz_get_scala_root_key + (sfizz_synth_t *synth)
+
+

Gets the scala root key.

+
+
Parameters
+
+ + +
synthThe synth.
+
+
+
+
Returns
+
The MIDI number of the Scala root key (default 60 for C4).
+
+
+
Since
+
0.4.0
+
+
+
+ +

sfizz_set_tuning_frequency

+
+
+ + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_set_tuning_frequency + (sfizz_synth_t *synth,floatfrequency)
+
+

Sets the reference tuning frequency.

+
+
Parameters
+
+ + + +
synthThe synth.
frequencyThe frequency which indicates where standard tuning A4 is (default 440 Hz).
+
+
+
+
Since
+
0.4.0
+
+
+
+ +

sfizz_get_tuning_frequency

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API float + sfizz_get_tuning_frequency + (sfizz_synth_t *synth)
+
+

Gets the reference tuning frequency.

+
+
Parameters
+
+ + +
synthThe synth.
+
+
+
+
Returns
+
The frequency which indicates where standard tuning A4 is (default 440 Hz).
+
+
+
Since
+
0.4.0
+
+
+
+ +

sfizz_load_stretch_tuning_by_ratio

+
+
+ + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_load_stretch_tuning_by_ratio + (sfizz_synth_t *synth,floatratio)
+
+

Configure stretch tuning using a predefined parametric Railsback curve.

A ratio 1/2 is supposed to match the average piano; 0 disables (the default). +
+
Parameters
+
+ + + +
synthThe synth.
ratioThe parameter in domain 0-1.
+
+
+
+
Since
+
0.4.0
+
+
+
+ +

sfizz_get_num_regions

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API int + sfizz_get_num_regions + (sfizz_synth_t *synth)
+
+

Return the number of regions in the currently loaded SFZ file.

+
+
Parameters
+
+ + +
synthThe synth.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_get_num_groups

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API int + sfizz_get_num_groups + (sfizz_synth_t *synth)
+
+

Return the number of groups in the currently loaded SFZ file.

+
+
Parameters
+
+ + +
synthThe synth.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_get_num_masters

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API int + sfizz_get_num_masters + (sfizz_synth_t *synth)
+
+

Return the number of masters in the currently loaded SFZ file.

+
+
Parameters
+
+ + +
synthThe synth.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_get_num_curves

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API int + sfizz_get_num_curves + (sfizz_synth_t *synth)
+
+

Return the number of curves in the currently loaded SFZ file.

+
+
Parameters
+
+ + +
synthThe synth.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_export_midnam

+
+
+ + + + + + + + + + + + +
SFIZZ_EXPORTED_API char * + sfizz_export_midnam + (sfizz_synth_t *synth,const char *model)
+
+

Export a MIDI Name document describing the currently loaded SFZ file.

+
+
Parameters
+
+ + + +
synthThe synth.
modelThe model name used if a non-empty string, otherwise generated.
+
+
+
+
Returns
+
A newly allocated XML string, which must be freed after use using sfizz_free_memory().
+
+
+
Since
+
0.3.1
+
+
+
+ +

sfizz_get_num_preloaded_samples

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API size_t + sfizz_get_num_preloaded_samples + (sfizz_synth_t *synth)
+
+

Return the number of preloaded samples for the current SFZ file.

+
+
Parameters
+
+ + +
synthThe synth.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_get_num_active_voices

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API int + sfizz_get_num_active_voices + (sfizz_synth_t *synth)
+
+

Return the number of active voices.

Note that this function is a basic indicator and does not aim to be perfect. In particular, it runs on the calling thread so voices may well start or stop while the function is checking which voice is active. +
+
Parameters
+
+ + +
synthThe synth.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_set_samples_per_block

+
+
+ + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_set_samples_per_block + (sfizz_synth_t *synth,intsamples_per_block)
+
+

Set the expected number of samples per block.

If unsure, give an upper bound since right now ugly things may happen if you go over this number. +
+
Parameters
+
+ + + +
synthThe synth.
samples_per_blockThe number of samples per block.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_set_sample_rate

+
+
+ + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_set_sample_rate + (sfizz_synth_t *synth,floatsample_rate)
+
+

Set the sample rate for the synth.

This is the output sample rate. This setting does not affect the internal processing. +
+
Parameters
+
+ + + +
synthThe synth
sample_rateThe sample rate.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_send_note_on

+
+
+ + + + + + + + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_send_note_on + (sfizz_synth_t *synth,intdelay,intnote_number,intvelocity)
+
+

Send a note on event to the synth.

This command should be delay-ordered with all other midi-type events (notes, CCs, aftertouch and pitch-wheel), otherwise the behavior of the synth is undefined. +
+
Parameters
+
+ + + + + +
synthThe synth.
delayThe delay of the event in the block, in samples.
note_numberThe MIDI note number, in domain 0 to 127.
velocityThe MIDI velocity, in domain 0 to 127.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_send_hd_note_on

+
+
+ + + + + + + + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_send_hd_note_on + (sfizz_synth_t *synth,intdelay,intnote_number,floatvelocity)
+
+

Send a high-precision on event to the synth.

This command should be delay-ordered with all other midi-type events (notes, CCs, aftertouch and pitch-wheel), otherwise the behavior of the synth is undefined. +
+
Parameters
+
+ + + + + +
synthThe synth.
delayThe delay of the event in the block, in samples.
note_numberThe MIDI note number, in domain 0 to 127.
velocityThe normalized MIDI velocity, in domain 0 to 1.
+
+
+
+
Since
+
1.0.0
+
+
+
+ +

sfizz_send_note_off

+
+
+ + + + + + + + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_send_note_off + (sfizz_synth_t *synth,intdelay,intnote_number,intvelocity)
+
+

Send a note off event to the synth.

This command should be delay-ordered with all other midi-type events (notes, CCs, aftertouch and pitch-wheel), otherwise the behavior of the synth is undefined. +
+
Parameters
+
+ + + + + +
synthThe synth.
delayThe delay of the event in the block, in samples.
note_numberThe MIDI note number, in domain 0 to 127.
velocityThe MIDI velocity, in domain 0 to 127.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_send_hd_note_off

+
+
+ + + + + + + + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_send_hd_note_off + (sfizz_synth_t *synth,intdelay,intnote_number,floatvelocity)
+
+

Send a high-precision note off event to the synth.

This command should be delay-ordered with all other midi-type events (notes, CCs, aftertouch and pitch-wheel), otherwise the behavior of the synth is undefined. +
+
Parameters
+
+ + + + + +
synthThe synth.
delayThe delay of the event in the block, in samples.
note_numberThe MIDI note number, in domain 0 to 127.
velocityThe normalized MIDI velocity, in domain 0 to 1.
+
+
+
+
Since
+
1.0.0
+
+
+
+ +

sfizz_send_cc

+
+
+ + + + + + + + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_send_cc + (sfizz_synth_t *synth,intdelay,intcc_number,intcc_value)
+
+

Send a CC event to the synth.

This command should be delay-ordered with all other midi-type events (notes, CCs, aftertouch and pitch-wheel), otherwise the behavior of the synth is undefined. +
+
Parameters
+
+ + + + + +
synthThe synth.
delayThe delay of the event in the block, in samples.
cc_numberThe MIDI CC number, in domain 0 to 127.
cc_valueThe MIDI CC value, in domain 0 to 127.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_send_hdcc

+
+
+ + + + + + + + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_send_hdcc + (sfizz_synth_t *synth,intdelay,intcc_number,floatnorm_value)
+
+

Send a high precision CC event to the synth.

This command should be delay-ordered with all other midi-type events (notes, CCs, aftertouch and pitch-wheel), otherwise the behavior of the synth is undefined. +
+
Parameters
+
+ + + + + +
synthThe synth.
delayThe delay of the event in the block, in samples.
cc_numberThe MIDI CC number, in domain 0 to 127.
norm_valueThe normalized CC value, in domain 0 to 1.
+
+
+
+
Since
+
0.4.0
+
+
+
+ +

sfizz_automate_hdcc

+
+
+ + + + + + + + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_automate_hdcc + (sfizz_synth_t *synth,intdelay,intcc_number,floatnorm_value)
+
+

Send a high precision CC automation to the synth.

This updates the CC value known to the synth, but without performing additional MIDI-specific interpretations. (eg. the CC 120 and up) +
+
Parameters
+
+ + + + + +
synthThe synth.
delayThe delay of the event in the block, in samples.
cc_numberThe MIDI CC number, in domain 0 to 127.
norm_valueThe normalized CC value, in domain 0 to 1.
+
+
+
+
Since
+
1.0.0
+
+
+
+ +

sfizz_send_pitch_wheel

+
+
+ + + + + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_send_pitch_wheel + (sfizz_synth_t *synth,intdelay,intpitch)
+
+

Send a pitch wheel event.

This command should be delay-ordered with all other midi-type events (notes, CCs, aftertouch and pitch-wheel), otherwise the behavior of the synth is undefined. +
+
Parameters
+
+ + + + +
synthThe synth.
delayThe delay.
pitchThe pitch.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_send_hd_pitch_wheel

+
+
+ + + + + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_send_hd_pitch_wheel + (sfizz_synth_t *synth,intdelay,floatpitch)
+
+

Send a high-precision pitch wheel event.

This command should be delay-ordered with all other midi-type events (notes, CCs, aftertouch and pitch-wheel), otherwise the behavior of the synth is undefined. +
+
Parameters
+
+ + + + +
synthThe synth.
delayThe delay.
pitchThe normalized pitch, in domain -1 to 1.
+
+
+
+
Since
+
1.0.0
+
+
+
+ +

sfizz_send_aftertouch

+
+
+ + + + + + + + + + + + + + + +
SFIZZ_EXPORTED_API SFIZZ_DEPRECATED_API void + sfizz_send_aftertouch + (sfizz_synth_t *synth,intdelay,intaftertouch)
+
+

Send an aftertouch event.

This command should be delay-ordered with all other midi-type events (notes, CCs, aftertouch and pitch-wheel), otherwise the behavior of the synth is undefined. +
+
Parameters
+
+ + + + +
synthThe synth.
delayThe delay at which the event occurs; this should be lower than the size of the block in the next call to sfizz_render_block().
aftertouchThe aftertouch value, in domain 0 to 127.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_send_channel_aftertouch

+
+
+ + + + + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_send_channel_aftertouch + (sfizz_synth_t *synth,intdelay,intaftertouch)
+
+

Send a channel aftertouch (channel pressure) event.

This command should be delay-ordered with all other midi-type events (notes, CCs, aftertouch and pitch-wheel), otherwise the behavior of the synth is undefined. +
+
Parameters
+
+ + + + +
synthThe synth.
delayThe delay at which the event occurs; this should be lower than the size of the block in the next call to sfizz_render_block().
aftertouchThe aftertouch value, in domain 0 to 127.
+
+
+
+
Since
+
1.0.0
+
+
+
+ +

sfizz_send_hd_channel_aftertouch

+
+
+ + + + + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_send_hd_channel_aftertouch + (sfizz_synth_t *synth,intdelay,floataftertouch)
+
+

Send a high-precision aftertouch event.

This command should be delay-ordered with all other midi-type events (notes, CCs, aftertouch and pitch-wheel), otherwise the behavior of the synth is undefined. +
+
Parameters
+
+ + + + +
synthThe synth.
delayThe delay at which the event occurs; this should be lower than the size of the block in the next call to sfizz_render_block().
aftertouchThe normalized aftertouch value, in domain 0 to 1.
+
+
+
+
Since
+
1.0.0
+
+
+
+ +

sfizz_send_poly_aftertouch

+
+
+ + + + + + + + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_send_poly_aftertouch + (sfizz_synth_t *synth,intdelay,intnote_number,intaftertouch)
+
+

Send a polyphonic aftertouch event.

This feature is experimental and needs more testing in the internal engine. +This command should be delay-ordered with all other midi-type events (notes, CCs, aftertouch and pitch-wheel), otherwise the behavior of the synth is undefined. +
+
Parameters
+
+ + + + + +
synthThe synth.
delayThe delay at which the event occurs; this should be lower than the size of the block in the next call to sfizz_render_block().
note_numberThe note number, in domain 0 to 127.
aftertouchThe aftertouch value, in domain 0 to 127.
+
+
+
+
Since
+
1.0.0
+
+
+
+ +

sfizz_send_hd_poly_aftertouch

+
+
+ + + + + + + + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_send_hd_poly_aftertouch + (sfizz_synth_t *synth,intdelay,intnote_number,floataftertouch)
+
+

Send a high-precision polyphonic aftertouch event.

This feature is experimental and needs more testing in the internal engine. +This command should be delay-ordered with all other midi-type events (notes, CCs, aftertouch and pitch-wheel), otherwise the behavior of the synth is undefined. +
+
Parameters
+
+ + + + + +
synthThe synth.
delayThe delay at which the event occurs; this should be lower than the size of the block in the next call to sfizz_render_block().
note_numberThe note number, in domain 0 to 127.
aftertouchThe normalized aftertouch value, in domain 0 to 1.
+
+
+
+
Since
+
1.0.0
+
+
+
+ +

sfizz_send_tempo

+
+
+ + + + + + + + + + + + + + + +
SFIZZ_EXPORTED_API SFIZZ_DEPRECATED_API void + sfizz_send_tempo + (sfizz_synth_t *synth,intdelay,floatseconds_per_beat)
+
+

Send a tempo event.

This command should be delay-ordered with all other time/signature commands, namely sfizz_send_tempo(), sfizz_send_time_signature(), sfizz_send_time_position(), and sfizz_send_playback_state(), otherwise the behavior of the synth is undefined. +
+
Parameters
+
+ + + + +
synthThe synth.
delayThe delay.
seconds_per_beatThe seconds per beat.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_send_bpm_tempo

+
+
+ + + + + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_send_bpm_tempo + (sfizz_synth_t *synth,intdelay,floatbeats_per_minute)
+
+

Send a tempo event.

This command should be delay-ordered with all other time/signature commands, namely sfizz_send_tempo(), sfizz_send_time_signature(), sfizz_send_time_position(), and sfizz_send_playback_state(), otherwise the behavior of the synth is undefined. +
+
Parameters
+
+ + + + +
synthThe synth.
delayThe delay.
beats_per_minuteThe new tempo, in beats per minute.
+
+
+
+
Since
+
1.0.0
+
+
+
+ +

sfizz_send_time_signature

+
+
+ + + + + + + + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_send_time_signature + (sfizz_synth_t *synth,intdelay,intbeats_per_bar,intbeat_unit)
+
+

Send the time signature.

This command should be delay-ordered with all other time/signature commands, namely sfizz_send_tempo(), sfizz_send_time_signature(), sfizz_send_time_position(), and sfizz_send_playback_state(), otherwise the behavior of the synth is undefined. +
+
Parameters
+
+ + + + + +
synthThe synth.
delayThe delay.
beats_per_barThe number of beats per bar, or time signature numerator.
beat_unitThe note corresponding to one beat, or time signature denominator.
+
+
+
+
Since
+
0.5.0
+
+
+
+ +

sfizz_send_time_position

+
+
+ + + + + + + + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_send_time_position + (sfizz_synth_t *synth,intdelay,intbar,doublebar_beat)
+
+

Send the time position.

This command should be delay-ordered with all other time/signature commands, namely sfizz_send_tempo(), sfizz_send_time_signature(), sfizz_send_time_position(), and sfizz_send_playback_state(), otherwise the behavior of the synth is undefined. +
+
Parameters
+
+ + + + + +
synthThe synth.
delayThe delay.
barThe current bar.
bar_beatThe fractional position of the current beat within the bar.
+
+
+
+
Since
+
0.5.0
+
+
+
+ +

sfizz_send_playback_state

+
+
+ + + + + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_send_playback_state + (sfizz_synth_t *synth,intdelay,intplayback_state)
+
+

Send the playback state.

This command should be delay-ordered with all other time/signature commands, namely sfizz_send_tempo(), sfizz_send_time_signature(), sfizz_send_time_position(), and sfizz_send_playback_state(), otherwise the behavior of the synth is undefined. +
+
Parameters
+
+ + + + +
synthThe synth.
delayThe delay.
playback_stateThe playback state, 1 if playing, 0 if stopped.
+
+
+
+
Since
+
0.5.0
+
+
+
+ +

sfizz_render_block

+
+
+ + + + + + + + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_render_block + (sfizz_synth_t *synth,float **channels,intnum_channels,intnum_frames)
+
+

Render a block audio data into a stereo channel.

No other channel configuration is supported. The synth will gracefully ignore your request if you provide a value. You should pass all the relevant events for the block (midi notes, CCs, ...) before rendering each block. The synth will memorize the inputs and render sample accurates envelopes depending on the input events passed to it. +
+
Parameters
+
+ + + + + +
synthThe synth.
channelsPointers to the left and right channel of the output.
num_channelsShould be equal to 2 for the time being.
num_framesNumber of frames to fill. This should be less than or equal to the expected samples_per_block.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_get_preload_size

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API unsigned int + sfizz_get_preload_size + (sfizz_synth_t *synth)
+
+

Get the size of the preloaded data.

This returns the number of floats used in the preloading buffers. +
+
Parameters
+
+ + +
synthThe synth.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_set_preload_size

+
+
+ + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_set_preload_size + (sfizz_synth_t *synth,unsigned intpreload_size)
+
+

Set the size of the preloaded data in number of floats (not bytes).

This will disable the callbacks for the duration of the load. This function takes a lock ; prefer calling it out of the RT thread. It can also take a long time to return. If the new preload size is the same as the current one, it will release the lock immediately and exit. +
+
Parameters
+
+ + + +
synthThe synth.
preload_sizeThe preload size.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_get_oversampling_factor

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API sfizz_oversampling_factor_t + sfizz_get_oversampling_factor + (sfizz_synth_t *synth)
+
+

Get the internal oversampling rate.

As of 1.0, This is an inactive stub for future work on oversampling in the engine. +
+
Parameters
+
+ + +
synthThe synth.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_set_oversampling_factor

+
+
+ + + + + + + + + + + + +
SFIZZ_EXPORTED_API bool + sfizz_set_oversampling_factor + (sfizz_synth_t *synth,sfizz_oversampling_factor_toversampling)
+
+

Set the internal oversampling rate.

As of 1.0, This is an inactive stub for future work on oversampling in the engine. +
+
Parameters
+
+ + + +
synthThe synth.
oversamplingThe oversampling factor.
+
+
+
+
Returns
+
true if the oversampling factor was correct, false otherwise.
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_get_sample_quality

+
+
+ + + + + + + + + + + + +
SFIZZ_EXPORTED_API int + sfizz_get_sample_quality + (sfizz_synth_t *synth,sfizz_process_mode_tmode)
+
+

Get the default resampling quality.

This is the quality setting which the engine uses when the instrument does not use the opcode sample_quality. The engine uses distinct default quality settings for live mode and freewheeling mode, which both can be accessed by the means of this function. +
+
Parameters
+
+ + + +
synthThe synth.
modeThe processing mode.
+
+
+
+
Returns
+
The sample quality for the given mode, in the range 0 to 10.
+
+
+
Since
+
0.4.0
+
+
+
+ +

sfizz_set_sample_quality

+
+
+ + + + + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_set_sample_quality + (sfizz_synth_t *synth,sfizz_process_mode_tmode,intquality)
+
+

Set the default resampling quality.

This is the quality setting which the engine uses when the instrument does not use the opcode sample_quality. The engine uses distinct default quality settings for live mode and freewheeling mode, which both can be accessed by the means of this function. +
+
Parameters
+
+ + + + +
synthThe synth.
modeThe processing mode.
qualityThe desired sample quality, in the range 0 to 10.
+
+
+
+
Since
+
0.4.0
+
+
+
+ +

sfizz_get_oscillator_quality

+
+
+ + + + + + + + + + + + +
SFIZZ_EXPORTED_API int + sfizz_get_oscillator_quality + (sfizz_synth_t *synth,sfizz_process_mode_tmode)
+
+

Get the default oscillator quality.

This is the quality setting which the engine uses when the instrument does not use the opcode oscillator_quality. The engine uses distinct default quality settings for live mode and freewheeling mode, which both can be accessed by the means of this function. +
+
Parameters
+
+ + + +
synthThe synth.
modeThe processing mode.
+
+
+
+
Returns
+
The oscillator quality for the given mode, in the range 0 to 10.
+
+
+
Since
+
1.0.0
+
+
+
+ +

sfizz_set_oscillator_quality

+
+
+ + + + + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_set_oscillator_quality + (sfizz_synth_t *synth,sfizz_process_mode_tmode,intquality)
+
+

Set the default oscillator quality.

This is the quality setting which the engine uses when the instrument does not use the opcode oscillator_quality. The engine uses distinct default quality settings for live mode and freewheeling mode, which both can be accessed by the means of this function. +
+
Parameters
+
+ + + + +
synthThe synth.
modeThe processing mode.
qualityThe desired oscillator quality, in the range 0 to 10.
+
+
+
+
Since
+
1.0.0
+
+
+
+ +

sfizz_set_volume

+
+
+ + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_set_volume + (sfizz_synth_t *synth,floatvolume)
+
+

Set the global instrument volume.

+
+
Parameters
+
+ + + +
synthThe synth.
volumeThe new volume.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_get_volume

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API float + sfizz_get_volume + (sfizz_synth_t *synth)
+
+

Return the global instrument volume.

+
+
Parameters
+
+ + +
synthThe synth.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_set_num_voices

+
+
+ + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_set_num_voices + (sfizz_synth_t *synth,intnum_voices)
+
+

Set the number of voices used by the synth.

+
+
Parameters
+
+ + + +
synthThe synth.
num_voicesThe number of voices.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_get_num_voices

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API int + sfizz_get_num_voices + (sfizz_synth_t *synth)
+
+

Return the number of voices.

+
+
Parameters
+
+ + +
synthThe synth.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_get_num_buffers

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API int + sfizz_get_num_buffers + (sfizz_synth_t *synth)
+
+

Return the number of allocated buffers from the synth.

+
+
Parameters
+
+ + +
synthThe synth.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_get_num_bytes

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API int + sfizz_get_num_bytes + (sfizz_synth_t *synth)
+
+

Get the number of bytes allocated from the synth.

Note that this value can be less than the actual memory usage since it only counts the buffer objects managed by sfizz. +
+
Parameters
+
+ + +
synthThe synth.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_enable_freewheeling

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_enable_freewheeling + (sfizz_synth_t *synth)
+
+

Enable freewheeling on the synth.

+
+
Parameters
+
+ + +
synthThe synth.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_disable_freewheeling

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_disable_freewheeling + (sfizz_synth_t *synth)
+
+

Disable freewheeling on the synth.

+
+
Parameters
+
+ + +
synthThe synth.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_get_unknown_opcodes

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API char * + sfizz_get_unknown_opcodes + (sfizz_synth_t *synth)
+
+

Return a comma separated list of unknown opcodes.

The caller has to free() the string returned. This function allocates memory, do not call on the audio thread. +
+
Parameters
+
+ + +
synthThe synth.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_should_reload_file

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API bool + sfizz_should_reload_file + (sfizz_synth_t *synth)
+
+

Check if the SFZ should be reloaded.

Depending on the platform this can create file descriptors. +
+
Parameters
+
+ + +
synthThe synth.
+
+
+
+
Returns
+
true if any included files (including the root file) have been modified since the sfz file was loaded, false otherwise.
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_should_reload_scala

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API bool + sfizz_should_reload_scala + (sfizz_synth_t *synth)
+
+

Check if the scala file should be reloaded.

Depending on the platform this can create file descriptors. +
+
Parameters
+
+ + +
synthThe synth.
+
+
+
+
Returns
+
true if the scala file has been modified since loading.
+
+
+
Since
+
0.4.0
+
+
+
+ +

sfizz_enable_logging

+
+
+ + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_enable_logging + (sfizz_synth_t *synth,const char *prefix)
+
+

Enable logging of timings to sidecar CSV files.

+
+
Parameters
+
+ + + +
synthThe synth.
prefixThe prefix.
+
+
+
+
Since
+
0.3.0
+
+
+
Note
+
This can produce many outputs so use with caution.
+
+
+
+ +

sfizz_disable_logging

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_disable_logging + (sfizz_synth_t *synth)
+
+

Disable logging.

+
+
Parameters
+
+ + +
synthThe synth.
+
+
+
+
Since
+
0.3.0
+
+
+
+ +

sfizz_set_logging_prefix

+
+
+ + + + + + + + + + + + +
SFIZZ_EXPORTED_API SFIZZ_DEPRECATED_API void + sfizz_set_logging_prefix + (sfizz_synth_t *synth,const char *prefix)
+
+

Enable logging of timings to sidecar CSV files.

+
+
Parameters
+
+ + + +
synthThe synth.
prefixThe prefix.
+
+
+
+
Since
+
0.3.2
+
+
+
Note
+
This can produce many outputs so use with caution.
+
+
+
+ +

sfizz_all_sound_off

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_all_sound_off + (sfizz_synth_t *synth)
+
+

Shuts down the current processing, clear buffers and reset the voices.

+
+
Parameters
+
+ + +
synthThe synth.
+
+
+
+
Since
+
0.3.2
+
+
+
+ +

sfizz_add_external_definitions

+
+
+ + + + + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_add_external_definitions + (sfizz_synth_t *synth,const char *id,const char *value)
+
+

Add external definitions prior to loading.

+
+
Parameters
+
+ + + + +
synthThe synth.
idThe definition variable name.
valueThe definition value.
+
+
+
+
Since
+
0.4.0
+
+
+
Note
+
These do not get reset by loading or resetting the synth. You need to call sfizz_clear_external_definitions() to erase them.
+
+
+
+ +

sfizz_clear_external_definitions

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_clear_external_definitions + (sfizz_synth_t *synth)
+
+

Clears external definitions for the next file loading.

+
+
Parameters
+
+ + +
synthThe synth.
+
+
+
+
Since
+
0.4.0
+
+
+
+ +

sfizz_get_num_key_labels

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API unsigned int + sfizz_get_num_key_labels + (sfizz_synth_t *synth)
+
+

Get the number of key labels registered in the current sfz file.

+
+
Parameters
+
+ + +
synthThe synth.
+
+
+
+
Since
+
0.4.0
+
+
+
+ +

sfizz_get_key_label_number

+
+
+ + + + + + + + + + + + +
SFIZZ_EXPORTED_API int + sfizz_get_key_label_number + (sfizz_synth_t *synth,intlabel_index)
+
+

Get the key number for the label registered at index label_index.

+
+
Parameters
+
+ + + +
synthThe synth.
label_indexThe label index.
+
+
+
+
Returns
+
the number or SFIZZ_OUT_OF_BOUNDS_LABEL_INDEX if the index is out of bounds.
+
+
+
Since
+
0.4.0
+
+
+
+ +

sfizz_get_key_label_text

+
+
+ + + + + + + + + + + + +
SFIZZ_EXPORTED_API const char * + sfizz_get_key_label_text + (sfizz_synth_t *synth,intlabel_index)
+
+

Get the key text for the label registered at index label_index.

+
+
Parameters
+
+ + + +
synthThe synth.
label_indexThe label index.
+
+
+
+
Returns
+
the label or nullptr if the index is out of bounds.
+
+
+
Since
+
0.4.0
+
+
+
+ +

sfizz_get_num_cc_labels

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API unsigned int + sfizz_get_num_cc_labels + (sfizz_synth_t *synth)
+
+

Get the number of CC labels registered in the current sfz file.

+
+
Parameters
+
+ + +
synthThe synth.
+
+
+
+
Since
+
0.4.0
+
+
+
+ +

sfizz_get_cc_label_number

+
+
+ + + + + + + + + + + + +
SFIZZ_EXPORTED_API int + sfizz_get_cc_label_number + (sfizz_synth_t *synth,intlabel_index)
+
+

Get the CC number for the label registered at index label_index.

+
+
Parameters
+
+ + + +
synthThe synth.
label_indexThe label index.
+
+
+
+
Returns
+
the number or SFIZZ_OUT_OF_BOUNDS_LABEL_INDEX if the index is out of bounds.
+
+
+
Since
+
0.4.0
+
+
+
+ +

sfizz_get_cc_label_text

+
+
+ + + + + + + + + + + + +
SFIZZ_EXPORTED_API const char * + sfizz_get_cc_label_text + (sfizz_synth_t *synth,intlabel_index)
+
+

Get the CC text for the label registered at index label_index.

+
+
Parameters
+
+ + + +
synthThe synth.
label_indexThe label index.
+
+
+
+
Returns
+
the label or nullptr if the index is out of bounds.
+
+
+
Since
+
0.4.0
+
+
+
+ +

sfizz_free_memory

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_free_memory + (void *ptr)
+
+

Free a block of memory allocated by the library.

1.0.0 +
+
Parameters
+
+ + +
ptrThe address of the memory to free.
+
+
+
+
+ +

sfizz_create_client

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API sfizz_client_t * + sfizz_create_client + (void *data)
+
+

Create a new messaging client.

+
+
Parameters
+
+ + +
dataThe opaque data pointer which is passed to the receiver.
+
+
+
+
Returns
+
The new client.
+
+
+
Since
+
1.0.0
+
+
+
+ +

sfizz_delete_client

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_delete_client + (sfizz_client_t *client)
+
+

Destroy a messaging client.

+
+
Parameters
+
+ + +
clientThe client.
+
+
+
+
Since
+
1.0.0
+
+
+
+ +

sfizz_get_client_data

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API void * + sfizz_get_client_data + (sfizz_client_t *client)
+
+

Get the client data.

+
+
Parameters
+
+ + +
clientThe client.
+
+
+
+
Returns
+
The client data.
+
+
+
Since
+
1.0.0
+
+
+
+ +

sfizz_set_receive_callback

+
+
+ + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_set_receive_callback + (sfizz_client_t *client,sfizz_receive_t *receive)
+
+

Set the function which receives reply messages from the synth engine.

+
+
Parameters
+
+ + + +
clientThe client.
receiveThe pointer to the receiving function.
+
+
+
+
Since
+
1.0.0
+
+
+
+ +

sfizz_send_message

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_send_message + (sfizz_synth_t *synth,sfizz_client_t *client,intdelay,const char *path,const char *sig,const sfizz_arg_t *args)
+
+

Send a message to the synth engine.

+
+
Parameters
+
+ + + + + + + +
synthThe synth.
clientThe client sending the message.
delayThe delay of the message in the block, in samples.
pathThe OSC address pattern.
sigThe OSC type tag string.
argsThe OSC arguments, whose number and format is determined the type tag string.
+
+
+
+
Since
+
1.0.0
+
+
+
+ +

sfizz_set_broadcast_callback

+
+
+ + + + + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_set_broadcast_callback + (sfizz_synth_t *synth,sfizz_receive_t *broadcast,void *data)
+
+

Set the function which receives broadcast messages from the synth engine.

+
+
Parameters
+
+ + + + +
synthThe synth.
broadcastThe pointer to the receiving function.
dataThe opaque data pointer which is passed to the receiver.
+
+
+
+
Since
+
1.0.0
+
+
+
+

+
+

+ Copyright © 2019-2024 + SFZTools Organization + + This site is open source. + + Improve this page + +

+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfizz/api/sfizz.hpp/index.html b/sfizz/api/sfizz.hpp/index.html new file mode 100644 index 00000000..e1538196 --- /dev/null +++ b/sfizz/api/sfizz.hpp/index.html @@ -0,0 +1,3627 @@ + + + + + + + + + sfz::Sfizz - SFZTools + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ sfz::Sfizz - SFZTools + + +

sfizz.h File Reference

+sfizz public C API.

Macros

+

SFIZZ_OUT_OF_BOUNDS_LABEL_INDEX

+
+
+ + + + +
#define SFIZZ_OUT_OF_BOUNDS_LABEL_INDEX (-1) +
+
+
+

Index out of bound error for the requested CC/key label.

+
+
Since
+
0.4.0
+
+
+
+

Enumerations

+

sfizz_oversampling_factor_t

+
+
+ enum sfizz_oversampling_factor_t {
+ SFIZZ_OVERSAMPLING_X1 + = 1
+ SFIZZ_OVERSAMPLING_X2 + = 2
+ SFIZZ_OVERSAMPLING_X4 + = 4
+ SFIZZ_OVERSAMPLING_X8 + = 8
+} +

Oversampling factor.

+
+
Since
+
0.2.0
+
+
+
+

sfizz_process_mode_t

+
+
+ enum sfizz_process_mode_t {
+ SFIZZ_PROCESS_LIVE +
+ SFIZZ_PROCESS_FREEWHEELING +
+} +

Processing mode.

+
+
Since
+
0.5.0
+
+
+
+

Typedefs

+

sfizz_synth_t

+
+
+ + + + +
typedef struct sfizz_synth_t sfizz_synth_t +
+
+
+

Synth handle.

+
+
Since
+
0.2.0
+
+
+
+

sfizz_client_t

+
+
+ + + + +
typedef struct sfizz_client_t sfizz_client_t +
+
+
+

Client for communicating with the synth engine in either direction.

+
+
Since
+
1.0.0
+
+
+
+

Functions

+ +

sfizz_create_synth

+
+
+ + + + + + + +
SFIZZ_EXPORTED_API sfizz_synth_t * + sfizz_create_synth + ()
+
+

Creates a sfizz synth.

This object has to be freed by the caller using sfizz_free(). The synth by default is set at 48 kHz and a maximum block size of 1024. You should change these values if they are not correct for your application. +
+
Since
+
0.2.0
+
+
+
+ +

sfizz_free

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_free + (sfizz_synth_t *synth)
+
+

Frees an existing sfizz synth.

+
+
Parameters
+
+ + +
synthThe synth to destroy.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_add_ref

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_add_ref + (sfizz_synth_t *synth)
+
+

Adds a reference to an existing sfizz synth.

+
+
Parameters
+
+ + +
synthThe synth to reference.
+
+
+
+
Since
+
1.0.0
+
+
+
+ +

sfizz_load_file

+
+
+ + + + + + + + + + + + +
SFIZZ_EXPORTED_API bool + sfizz_load_file + (sfizz_synth_t *synth,const char *path)
+
+

Loads an SFZ file.

The file path can be absolute or relative. All file operations for this SFZ file will be relative to the parent directory of the SFZ file. +
+
Parameters
+
+ + + +
synthThe synth.
pathA null-terminated string representing a path to an SFZ file.
+
+
+
+
Returns
+
true when file loading went OK, false if some error occured while loading.
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_load_string

+
+
+ + + + + + + + + + + + + + + +
SFIZZ_EXPORTED_API bool + sfizz_load_string + (sfizz_synth_t *synth,const char *path,const char *text)
+
+

Loads an SFZ file from textual data.

This accepts a virtual path name for the imaginary sfz file, which is not required to exist on disk. The purpose of the virtual path is to locate samples with relative paths. +
+
Parameters
+
+ + + + +
synthThe synth.
pathThe virtual path of the SFZ file.
textThe contents of the virtual SFZ file.
+
+
+
+
Returns
+
true when file loading went OK, false if some error occured while loading.
+
+
+
Since
+
0.4.0
+
+
+
+ +

sfizz_load_scala_file

+
+
+ + + + + + + + + + + + +
SFIZZ_EXPORTED_API bool + sfizz_load_scala_file + (sfizz_synth_t *synth,const char *path)
+
+

Sets the tuning from a Scala file loaded from the file system.

+
+
Parameters
+
+ + + +
synthThe synth.
pathThe path to the file in Scala format.
+
+
+
+
Returns
+
true when tuning scale loaded OK, false if some error occurred.
+
+
+
Since
+
0.4.0
+
+
+
+ +

sfizz_load_scala_string

+
+
+ + + + + + + + + + + + +
SFIZZ_EXPORTED_API bool + sfizz_load_scala_string + (sfizz_synth_t *synth,const char *text)
+
+

Sets the tuning from a Scala file loaded from memory.

+
+
Parameters
+
+ + + +
synthThe synth.
textThe contents of the file in Scala format.
+
+
+
+
Returns
+
true when tuning scale loaded OK, false if some error occurred.
+
+
+
Since
+
0.4.0
+
+
+
+ +

sfizz_set_scala_root_key

+
+
+ + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_set_scala_root_key + (sfizz_synth_t *synth,introot_key)
+
+

Sets the scala root key.

+
+
Parameters
+
+ + + +
synthThe synth.
root_keyThe MIDI number of the Scala root key (default 60 for C4).
+
+
+
+
Since
+
0.4.0
+
+
+
+ +

sfizz_get_scala_root_key

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API int + sfizz_get_scala_root_key + (sfizz_synth_t *synth)
+
+

Gets the scala root key.

+
+
Parameters
+
+ + +
synthThe synth.
+
+
+
+
Returns
+
The MIDI number of the Scala root key (default 60 for C4).
+
+
+
Since
+
0.4.0
+
+
+
+ +

sfizz_set_tuning_frequency

+
+
+ + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_set_tuning_frequency + (sfizz_synth_t *synth,floatfrequency)
+
+

Sets the reference tuning frequency.

+
+
Parameters
+
+ + + +
synthThe synth.
frequencyThe frequency which indicates where standard tuning A4 is (default 440 Hz).
+
+
+
+
Since
+
0.4.0
+
+
+
+ +

sfizz_get_tuning_frequency

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API float + sfizz_get_tuning_frequency + (sfizz_synth_t *synth)
+
+

Gets the reference tuning frequency.

+
+
Parameters
+
+ + +
synthThe synth.
+
+
+
+
Returns
+
The frequency which indicates where standard tuning A4 is (default 440 Hz).
+
+
+
Since
+
0.4.0
+
+
+
+ +

sfizz_load_stretch_tuning_by_ratio

+
+
+ + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_load_stretch_tuning_by_ratio + (sfizz_synth_t *synth,floatratio)
+
+

Configure stretch tuning using a predefined parametric Railsback curve.

A ratio 1/2 is supposed to match the average piano; 0 disables (the default). +
+
Parameters
+
+ + + +
synthThe synth.
ratioThe parameter in domain 0-1.
+
+
+
+
Since
+
0.4.0
+
+
+
+ +

sfizz_get_num_regions

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API int + sfizz_get_num_regions + (sfizz_synth_t *synth)
+
+

Return the number of regions in the currently loaded SFZ file.

+
+
Parameters
+
+ + +
synthThe synth.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_get_num_groups

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API int + sfizz_get_num_groups + (sfizz_synth_t *synth)
+
+

Return the number of groups in the currently loaded SFZ file.

+
+
Parameters
+
+ + +
synthThe synth.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_get_num_masters

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API int + sfizz_get_num_masters + (sfizz_synth_t *synth)
+
+

Return the number of masters in the currently loaded SFZ file.

+
+
Parameters
+
+ + +
synthThe synth.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_get_num_curves

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API int + sfizz_get_num_curves + (sfizz_synth_t *synth)
+
+

Return the number of curves in the currently loaded SFZ file.

+
+
Parameters
+
+ + +
synthThe synth.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_export_midnam

+
+
+ + + + + + + + + + + + +
SFIZZ_EXPORTED_API char * + sfizz_export_midnam + (sfizz_synth_t *synth,const char *model)
+
+

Export a MIDI Name document describing the currently loaded SFZ file.

+
+
Parameters
+
+ + + +
synthThe synth.
modelThe model name used if a non-empty string, otherwise generated.
+
+
+
+
Returns
+
A newly allocated XML string, which must be freed after use using sfizz_free_memory().
+
+
+
Since
+
0.3.1
+
+
+
+ +

sfizz_get_num_preloaded_samples

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API size_t + sfizz_get_num_preloaded_samples + (sfizz_synth_t *synth)
+
+

Return the number of preloaded samples for the current SFZ file.

+
+
Parameters
+
+ + +
synthThe synth.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_get_num_active_voices

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API int + sfizz_get_num_active_voices + (sfizz_synth_t *synth)
+
+

Return the number of active voices.

Note that this function is a basic indicator and does not aim to be perfect. In particular, it runs on the calling thread so voices may well start or stop while the function is checking which voice is active. +
+
Parameters
+
+ + +
synthThe synth.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_set_samples_per_block

+
+
+ + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_set_samples_per_block + (sfizz_synth_t *synth,intsamples_per_block)
+
+

Set the expected number of samples per block.

If unsure, give an upper bound since right now ugly things may happen if you go over this number. +
+
Parameters
+
+ + + +
synthThe synth.
samples_per_blockThe number of samples per block.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_set_sample_rate

+
+
+ + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_set_sample_rate + (sfizz_synth_t *synth,floatsample_rate)
+
+

Set the sample rate for the synth.

This is the output sample rate. This setting does not affect the internal processing. +
+
Parameters
+
+ + + +
synthThe synth
sample_rateThe sample rate.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_send_note_on

+
+
+ + + + + + + + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_send_note_on + (sfizz_synth_t *synth,intdelay,intnote_number,intvelocity)
+
+

Send a note on event to the synth.

This command should be delay-ordered with all other midi-type events (notes, CCs, aftertouch and pitch-wheel), otherwise the behavior of the synth is undefined. +
+
Parameters
+
+ + + + + +
synthThe synth.
delayThe delay of the event in the block, in samples.
note_numberThe MIDI note number, in domain 0 to 127.
velocityThe MIDI velocity, in domain 0 to 127.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_send_hd_note_on

+
+
+ + + + + + + + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_send_hd_note_on + (sfizz_synth_t *synth,intdelay,intnote_number,floatvelocity)
+
+

Send a high-precision on event to the synth.

This command should be delay-ordered with all other midi-type events (notes, CCs, aftertouch and pitch-wheel), otherwise the behavior of the synth is undefined. +
+
Parameters
+
+ + + + + +
synthThe synth.
delayThe delay of the event in the block, in samples.
note_numberThe MIDI note number, in domain 0 to 127.
velocityThe normalized MIDI velocity, in domain 0 to 1.
+
+
+
+
Since
+
1.0.0
+
+
+
+ +

sfizz_send_note_off

+
+
+ + + + + + + + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_send_note_off + (sfizz_synth_t *synth,intdelay,intnote_number,intvelocity)
+
+

Send a note off event to the synth.

This command should be delay-ordered with all other midi-type events (notes, CCs, aftertouch and pitch-wheel), otherwise the behavior of the synth is undefined. +
+
Parameters
+
+ + + + + +
synthThe synth.
delayThe delay of the event in the block, in samples.
note_numberThe MIDI note number, in domain 0 to 127.
velocityThe MIDI velocity, in domain 0 to 127.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_send_hd_note_off

+
+
+ + + + + + + + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_send_hd_note_off + (sfizz_synth_t *synth,intdelay,intnote_number,floatvelocity)
+
+

Send a high-precision note off event to the synth.

This command should be delay-ordered with all other midi-type events (notes, CCs, aftertouch and pitch-wheel), otherwise the behavior of the synth is undefined. +
+
Parameters
+
+ + + + + +
synthThe synth.
delayThe delay of the event in the block, in samples.
note_numberThe MIDI note number, in domain 0 to 127.
velocityThe normalized MIDI velocity, in domain 0 to 1.
+
+
+
+
Since
+
1.0.0
+
+
+
+ +

sfizz_send_cc

+
+
+ + + + + + + + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_send_cc + (sfizz_synth_t *synth,intdelay,intcc_number,intcc_value)
+
+

Send a CC event to the synth.

This command should be delay-ordered with all other midi-type events (notes, CCs, aftertouch and pitch-wheel), otherwise the behavior of the synth is undefined. +
+
Parameters
+
+ + + + + +
synthThe synth.
delayThe delay of the event in the block, in samples.
cc_numberThe MIDI CC number, in domain 0 to 127.
cc_valueThe MIDI CC value, in domain 0 to 127.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_send_hdcc

+
+
+ + + + + + + + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_send_hdcc + (sfizz_synth_t *synth,intdelay,intcc_number,floatnorm_value)
+
+

Send a high precision CC event to the synth.

This command should be delay-ordered with all other midi-type events (notes, CCs, aftertouch and pitch-wheel), otherwise the behavior of the synth is undefined. +
+
Parameters
+
+ + + + + +
synthThe synth.
delayThe delay of the event in the block, in samples.
cc_numberThe MIDI CC number, in domain 0 to 127.
norm_valueThe normalized CC value, in domain 0 to 1.
+
+
+
+
Since
+
0.4.0
+
+
+
+ +

sfizz_automate_hdcc

+
+
+ + + + + + + + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_automate_hdcc + (sfizz_synth_t *synth,intdelay,intcc_number,floatnorm_value)
+
+

Send a high precision CC automation to the synth.

This updates the CC value known to the synth, but without performing additional MIDI-specific interpretations. (eg. the CC 120 and up) +
+
Parameters
+
+ + + + + +
synthThe synth.
delayThe delay of the event in the block, in samples.
cc_numberThe MIDI CC number, in domain 0 to 127.
norm_valueThe normalized CC value, in domain 0 to 1.
+
+
+
+
Since
+
1.0.0
+
+
+
+ +

sfizz_send_pitch_wheel

+
+
+ + + + + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_send_pitch_wheel + (sfizz_synth_t *synth,intdelay,intpitch)
+
+

Send a pitch wheel event.

This command should be delay-ordered with all other midi-type events (notes, CCs, aftertouch and pitch-wheel), otherwise the behavior of the synth is undefined. +
+
Parameters
+
+ + + + +
synthThe synth.
delayThe delay.
pitchThe pitch.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_send_hd_pitch_wheel

+
+
+ + + + + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_send_hd_pitch_wheel + (sfizz_synth_t *synth,intdelay,floatpitch)
+
+

Send a high-precision pitch wheel event.

This command should be delay-ordered with all other midi-type events (notes, CCs, aftertouch and pitch-wheel), otherwise the behavior of the synth is undefined. +
+
Parameters
+
+ + + + +
synthThe synth.
delayThe delay.
pitchThe normalized pitch, in domain -1 to 1.
+
+
+
+
Since
+
1.0.0
+
+
+
+ +

sfizz_send_aftertouch

+
+
+ + + + + + + + + + + + + + + +
SFIZZ_EXPORTED_API SFIZZ_DEPRECATED_API void + sfizz_send_aftertouch + (sfizz_synth_t *synth,intdelay,intaftertouch)
+
+

Send an aftertouch event.

This command should be delay-ordered with all other midi-type events (notes, CCs, aftertouch and pitch-wheel), otherwise the behavior of the synth is undefined. +
+
Parameters
+
+ + + + +
synthThe synth.
delayThe delay at which the event occurs; this should be lower than the size of the block in the next call to sfizz_render_block().
aftertouchThe aftertouch value, in domain 0 to 127.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_send_channel_aftertouch

+
+
+ + + + + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_send_channel_aftertouch + (sfizz_synth_t *synth,intdelay,intaftertouch)
+
+

Send a channel aftertouch (channel pressure) event.

This command should be delay-ordered with all other midi-type events (notes, CCs, aftertouch and pitch-wheel), otherwise the behavior of the synth is undefined. +
+
Parameters
+
+ + + + +
synthThe synth.
delayThe delay at which the event occurs; this should be lower than the size of the block in the next call to sfizz_render_block().
aftertouchThe aftertouch value, in domain 0 to 127.
+
+
+
+
Since
+
1.0.0
+
+
+
+ +

sfizz_send_hd_channel_aftertouch

+
+
+ + + + + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_send_hd_channel_aftertouch + (sfizz_synth_t *synth,intdelay,floataftertouch)
+
+

Send a high-precision aftertouch event.

This command should be delay-ordered with all other midi-type events (notes, CCs, aftertouch and pitch-wheel), otherwise the behavior of the synth is undefined. +
+
Parameters
+
+ + + + +
synthThe synth.
delayThe delay at which the event occurs; this should be lower than the size of the block in the next call to sfizz_render_block().
aftertouchThe normalized aftertouch value, in domain 0 to 1.
+
+
+
+
Since
+
1.0.0
+
+
+
+ +

sfizz_send_poly_aftertouch

+
+
+ + + + + + + + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_send_poly_aftertouch + (sfizz_synth_t *synth,intdelay,intnote_number,intaftertouch)
+
+

Send a polyphonic aftertouch event.

This feature is experimental and needs more testing in the internal engine. +This command should be delay-ordered with all other midi-type events (notes, CCs, aftertouch and pitch-wheel), otherwise the behavior of the synth is undefined. +
+
Parameters
+
+ + + + + +
synthThe synth.
delayThe delay at which the event occurs; this should be lower than the size of the block in the next call to sfizz_render_block().
note_numberThe note number, in domain 0 to 127.
aftertouchThe aftertouch value, in domain 0 to 127.
+
+
+
+
Since
+
1.0.0
+
+
+
+ +

sfizz_send_hd_poly_aftertouch

+
+
+ + + + + + + + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_send_hd_poly_aftertouch + (sfizz_synth_t *synth,intdelay,intnote_number,floataftertouch)
+
+

Send a high-precision polyphonic aftertouch event.

This feature is experimental and needs more testing in the internal engine. +This command should be delay-ordered with all other midi-type events (notes, CCs, aftertouch and pitch-wheel), otherwise the behavior of the synth is undefined. +
+
Parameters
+
+ + + + + +
synthThe synth.
delayThe delay at which the event occurs; this should be lower than the size of the block in the next call to sfizz_render_block().
note_numberThe note number, in domain 0 to 127.
aftertouchThe normalized aftertouch value, in domain 0 to 1.
+
+
+
+
Since
+
1.0.0
+
+
+
+ +

sfizz_send_tempo

+
+
+ + + + + + + + + + + + + + + +
SFIZZ_EXPORTED_API SFIZZ_DEPRECATED_API void + sfizz_send_tempo + (sfizz_synth_t *synth,intdelay,floatseconds_per_beat)
+
+

Send a tempo event.

This command should be delay-ordered with all other time/signature commands, namely sfizz_send_tempo(), sfizz_send_time_signature(), sfizz_send_time_position(), and sfizz_send_playback_state(), otherwise the behavior of the synth is undefined. +
+
Parameters
+
+ + + + +
synthThe synth.
delayThe delay.
seconds_per_beatThe seconds per beat.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_send_bpm_tempo

+
+
+ + + + + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_send_bpm_tempo + (sfizz_synth_t *synth,intdelay,floatbeats_per_minute)
+
+

Send a tempo event.

This command should be delay-ordered with all other time/signature commands, namely sfizz_send_tempo(), sfizz_send_time_signature(), sfizz_send_time_position(), and sfizz_send_playback_state(), otherwise the behavior of the synth is undefined. +
+
Parameters
+
+ + + + +
synthThe synth.
delayThe delay.
beats_per_minuteThe new tempo, in beats per minute.
+
+
+
+
Since
+
1.0.0
+
+
+
+ +

sfizz_send_time_signature

+
+
+ + + + + + + + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_send_time_signature + (sfizz_synth_t *synth,intdelay,intbeats_per_bar,intbeat_unit)
+
+

Send the time signature.

This command should be delay-ordered with all other time/signature commands, namely sfizz_send_tempo(), sfizz_send_time_signature(), sfizz_send_time_position(), and sfizz_send_playback_state(), otherwise the behavior of the synth is undefined. +
+
Parameters
+
+ + + + + +
synthThe synth.
delayThe delay.
beats_per_barThe number of beats per bar, or time signature numerator.
beat_unitThe note corresponding to one beat, or time signature denominator.
+
+
+
+
Since
+
0.5.0
+
+
+
+ +

sfizz_send_time_position

+
+
+ + + + + + + + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_send_time_position + (sfizz_synth_t *synth,intdelay,intbar,doublebar_beat)
+
+

Send the time position.

This command should be delay-ordered with all other time/signature commands, namely sfizz_send_tempo(), sfizz_send_time_signature(), sfizz_send_time_position(), and sfizz_send_playback_state(), otherwise the behavior of the synth is undefined. +
+
Parameters
+
+ + + + + +
synthThe synth.
delayThe delay.
barThe current bar.
bar_beatThe fractional position of the current beat within the bar.
+
+
+
+
Since
+
0.5.0
+
+
+
+ +

sfizz_send_playback_state

+
+
+ + + + + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_send_playback_state + (sfizz_synth_t *synth,intdelay,intplayback_state)
+
+

Send the playback state.

This command should be delay-ordered with all other time/signature commands, namely sfizz_send_tempo(), sfizz_send_time_signature(), sfizz_send_time_position(), and sfizz_send_playback_state(), otherwise the behavior of the synth is undefined. +
+
Parameters
+
+ + + + +
synthThe synth.
delayThe delay.
playback_stateThe playback state, 1 if playing, 0 if stopped.
+
+
+
+
Since
+
0.5.0
+
+
+
+ +

sfizz_render_block

+
+
+ + + + + + + + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_render_block + (sfizz_synth_t *synth,float **channels,intnum_channels,intnum_frames)
+
+

Render a block audio data into a stereo channel.

No other channel configuration is supported. The synth will gracefully ignore your request if you provide a value. You should pass all the relevant events for the block (midi notes, CCs, ...) before rendering each block. The synth will memorize the inputs and render sample accurates envelopes depending on the input events passed to it. +
+
Parameters
+
+ + + + + +
synthThe synth.
channelsPointers to the left and right channel of the output.
num_channelsShould be equal to 2 for the time being.
num_framesNumber of frames to fill. This should be less than or equal to the expected samples_per_block.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_get_preload_size

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API unsigned int + sfizz_get_preload_size + (sfizz_synth_t *synth)
+
+

Get the size of the preloaded data.

This returns the number of floats used in the preloading buffers. +
+
Parameters
+
+ + +
synthThe synth.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_set_preload_size

+
+
+ + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_set_preload_size + (sfizz_synth_t *synth,unsigned intpreload_size)
+
+

Set the size of the preloaded data in number of floats (not bytes).

This will disable the callbacks for the duration of the load. This function takes a lock ; prefer calling it out of the RT thread. It can also take a long time to return. If the new preload size is the same as the current one, it will release the lock immediately and exit. +
+
Parameters
+
+ + + +
synthThe synth.
preload_sizeThe preload size.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_get_oversampling_factor

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API sfizz_oversampling_factor_t + sfizz_get_oversampling_factor + (sfizz_synth_t *synth)
+
+

Get the internal oversampling rate.

As of 1.0, This is an inactive stub for future work on oversampling in the engine. +
+
Parameters
+
+ + +
synthThe synth.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_set_oversampling_factor

+
+
+ + + + + + + + + + + + +
SFIZZ_EXPORTED_API bool + sfizz_set_oversampling_factor + (sfizz_synth_t *synth,sfizz_oversampling_factor_toversampling)
+
+

Set the internal oversampling rate.

As of 1.0, This is an inactive stub for future work on oversampling in the engine. +
+
Parameters
+
+ + + +
synthThe synth.
oversamplingThe oversampling factor.
+
+
+
+
Returns
+
true if the oversampling factor was correct, false otherwise.
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_get_sample_quality

+
+
+ + + + + + + + + + + + +
SFIZZ_EXPORTED_API int + sfizz_get_sample_quality + (sfizz_synth_t *synth,sfizz_process_mode_tmode)
+
+

Get the default resampling quality.

This is the quality setting which the engine uses when the instrument does not use the opcode sample_quality. The engine uses distinct default quality settings for live mode and freewheeling mode, which both can be accessed by the means of this function. +
+
Parameters
+
+ + + +
synthThe synth.
modeThe processing mode.
+
+
+
+
Returns
+
The sample quality for the given mode, in the range 0 to 10.
+
+
+
Since
+
0.4.0
+
+
+
+ +

sfizz_set_sample_quality

+
+
+ + + + + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_set_sample_quality + (sfizz_synth_t *synth,sfizz_process_mode_tmode,intquality)
+
+

Set the default resampling quality.

This is the quality setting which the engine uses when the instrument does not use the opcode sample_quality. The engine uses distinct default quality settings for live mode and freewheeling mode, which both can be accessed by the means of this function. +
+
Parameters
+
+ + + + +
synthThe synth.
modeThe processing mode.
qualityThe desired sample quality, in the range 0 to 10.
+
+
+
+
Since
+
0.4.0
+
+
+
+ +

sfizz_get_oscillator_quality

+
+
+ + + + + + + + + + + + +
SFIZZ_EXPORTED_API int + sfizz_get_oscillator_quality + (sfizz_synth_t *synth,sfizz_process_mode_tmode)
+
+

Get the default oscillator quality.

This is the quality setting which the engine uses when the instrument does not use the opcode oscillator_quality. The engine uses distinct default quality settings for live mode and freewheeling mode, which both can be accessed by the means of this function. +
+
Parameters
+
+ + + +
synthThe synth.
modeThe processing mode.
+
+
+
+
Returns
+
The oscillator quality for the given mode, in the range 0 to 10.
+
+
+
Since
+
1.0.0
+
+
+
+ +

sfizz_set_oscillator_quality

+
+
+ + + + + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_set_oscillator_quality + (sfizz_synth_t *synth,sfizz_process_mode_tmode,intquality)
+
+

Set the default oscillator quality.

This is the quality setting which the engine uses when the instrument does not use the opcode oscillator_quality. The engine uses distinct default quality settings for live mode and freewheeling mode, which both can be accessed by the means of this function. +
+
Parameters
+
+ + + + +
synthThe synth.
modeThe processing mode.
qualityThe desired oscillator quality, in the range 0 to 10.
+
+
+
+
Since
+
1.0.0
+
+
+
+ +

sfizz_set_volume

+
+
+ + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_set_volume + (sfizz_synth_t *synth,floatvolume)
+
+

Set the global instrument volume.

+
+
Parameters
+
+ + + +
synthThe synth.
volumeThe new volume.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_get_volume

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API float + sfizz_get_volume + (sfizz_synth_t *synth)
+
+

Return the global instrument volume.

+
+
Parameters
+
+ + +
synthThe synth.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_set_num_voices

+
+
+ + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_set_num_voices + (sfizz_synth_t *synth,intnum_voices)
+
+

Set the number of voices used by the synth.

+
+
Parameters
+
+ + + +
synthThe synth.
num_voicesThe number of voices.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_get_num_voices

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API int + sfizz_get_num_voices + (sfizz_synth_t *synth)
+
+

Return the number of voices.

+
+
Parameters
+
+ + +
synthThe synth.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_get_num_buffers

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API int + sfizz_get_num_buffers + (sfizz_synth_t *synth)
+
+

Return the number of allocated buffers from the synth.

+
+
Parameters
+
+ + +
synthThe synth.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_get_num_bytes

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API int + sfizz_get_num_bytes + (sfizz_synth_t *synth)
+
+

Get the number of bytes allocated from the synth.

Note that this value can be less than the actual memory usage since it only counts the buffer objects managed by sfizz. +
+
Parameters
+
+ + +
synthThe synth.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_enable_freewheeling

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_enable_freewheeling + (sfizz_synth_t *synth)
+
+

Enable freewheeling on the synth.

+
+
Parameters
+
+ + +
synthThe synth.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_disable_freewheeling

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_disable_freewheeling + (sfizz_synth_t *synth)
+
+

Disable freewheeling on the synth.

+
+
Parameters
+
+ + +
synthThe synth.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_get_unknown_opcodes

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API char * + sfizz_get_unknown_opcodes + (sfizz_synth_t *synth)
+
+

Return a comma separated list of unknown opcodes.

The caller has to free() the string returned. This function allocates memory, do not call on the audio thread. +
+
Parameters
+
+ + +
synthThe synth.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_should_reload_file

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API bool + sfizz_should_reload_file + (sfizz_synth_t *synth)
+
+

Check if the SFZ should be reloaded.

Depending on the platform this can create file descriptors. +
+
Parameters
+
+ + +
synthThe synth.
+
+
+
+
Returns
+
true if any included files (including the root file) have been modified since the sfz file was loaded, false otherwise.
+
+
+
Since
+
0.2.0
+
+
+
+ +

sfizz_should_reload_scala

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API bool + sfizz_should_reload_scala + (sfizz_synth_t *synth)
+
+

Check if the scala file should be reloaded.

Depending on the platform this can create file descriptors. +
+
Parameters
+
+ + +
synthThe synth.
+
+
+
+
Returns
+
true if the scala file has been modified since loading.
+
+
+
Since
+
0.4.0
+
+
+
+ +

sfizz_enable_logging

+
+
+ + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_enable_logging + (sfizz_synth_t *synth,const char *prefix)
+
+

Enable logging of timings to sidecar CSV files.

+
+
Parameters
+
+ + + +
synthThe synth.
prefixThe prefix.
+
+
+
+
Since
+
0.3.0
+
+
+
Note
+
This can produce many outputs so use with caution.
+
+
+
+ +

sfizz_disable_logging

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_disable_logging + (sfizz_synth_t *synth)
+
+

Disable logging.

+
+
Parameters
+
+ + +
synthThe synth.
+
+
+
+
Since
+
0.3.0
+
+
+
+ +

sfizz_set_logging_prefix

+
+
+ + + + + + + + + + + + +
SFIZZ_EXPORTED_API SFIZZ_DEPRECATED_API void + sfizz_set_logging_prefix + (sfizz_synth_t *synth,const char *prefix)
+
+

Enable logging of timings to sidecar CSV files.

+
+
Parameters
+
+ + + +
synthThe synth.
prefixThe prefix.
+
+
+
+
Since
+
0.3.2
+
+
+
Note
+
This can produce many outputs so use with caution.
+
+
+
+ +

sfizz_all_sound_off

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_all_sound_off + (sfizz_synth_t *synth)
+
+

Shuts down the current processing, clear buffers and reset the voices.

+
+
Parameters
+
+ + +
synthThe synth.
+
+
+
+
Since
+
0.3.2
+
+
+
+ +

sfizz_add_external_definitions

+
+
+ + + + + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_add_external_definitions + (sfizz_synth_t *synth,const char *id,const char *value)
+
+

Add external definitions prior to loading.

+
+
Parameters
+
+ + + + +
synthThe synth.
idThe definition variable name.
valueThe definition value.
+
+
+
+
Since
+
0.4.0
+
+
+
Note
+
These do not get reset by loading or resetting the synth. You need to call sfizz_clear_external_definitions() to erase them.
+
+
+
+ +

sfizz_clear_external_definitions

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_clear_external_definitions + (sfizz_synth_t *synth)
+
+

Clears external definitions for the next file loading.

+
+
Parameters
+
+ + +
synthThe synth.
+
+
+
+
Since
+
0.4.0
+
+
+
+ +

sfizz_get_num_key_labels

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API unsigned int + sfizz_get_num_key_labels + (sfizz_synth_t *synth)
+
+

Get the number of key labels registered in the current sfz file.

+
+
Parameters
+
+ + +
synthThe synth.
+
+
+
+
Since
+
0.4.0
+
+
+
+ +

sfizz_get_key_label_number

+
+
+ + + + + + + + + + + + +
SFIZZ_EXPORTED_API int + sfizz_get_key_label_number + (sfizz_synth_t *synth,intlabel_index)
+
+

Get the key number for the label registered at index label_index.

+
+
Parameters
+
+ + + +
synthThe synth.
label_indexThe label index.
+
+
+
+
Returns
+
the number or SFIZZ_OUT_OF_BOUNDS_LABEL_INDEX if the index is out of bounds.
+
+
+
Since
+
0.4.0
+
+
+
+ +

sfizz_get_key_label_text

+
+
+ + + + + + + + + + + + +
SFIZZ_EXPORTED_API const char * + sfizz_get_key_label_text + (sfizz_synth_t *synth,intlabel_index)
+
+

Get the key text for the label registered at index label_index.

+
+
Parameters
+
+ + + +
synthThe synth.
label_indexThe label index.
+
+
+
+
Returns
+
the label or nullptr if the index is out of bounds.
+
+
+
Since
+
0.4.0
+
+
+
+ +

sfizz_get_num_cc_labels

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API unsigned int + sfizz_get_num_cc_labels + (sfizz_synth_t *synth)
+
+

Get the number of CC labels registered in the current sfz file.

+
+
Parameters
+
+ + +
synthThe synth.
+
+
+
+
Since
+
0.4.0
+
+
+
+ +

sfizz_get_cc_label_number

+
+
+ + + + + + + + + + + + +
SFIZZ_EXPORTED_API int + sfizz_get_cc_label_number + (sfizz_synth_t *synth,intlabel_index)
+
+

Get the CC number for the label registered at index label_index.

+
+
Parameters
+
+ + + +
synthThe synth.
label_indexThe label index.
+
+
+
+
Returns
+
the number or SFIZZ_OUT_OF_BOUNDS_LABEL_INDEX if the index is out of bounds.
+
+
+
Since
+
0.4.0
+
+
+
+ +

sfizz_get_cc_label_text

+
+
+ + + + + + + + + + + + +
SFIZZ_EXPORTED_API const char * + sfizz_get_cc_label_text + (sfizz_synth_t *synth,intlabel_index)
+
+

Get the CC text for the label registered at index label_index.

+
+
Parameters
+
+ + + +
synthThe synth.
label_indexThe label index.
+
+
+
+
Returns
+
the label or nullptr if the index is out of bounds.
+
+
+
Since
+
0.4.0
+
+
+
+ +

sfizz_free_memory

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_free_memory + (void *ptr)
+
+

Free a block of memory allocated by the library.

1.0.0 +
+
Parameters
+
+ + +
ptrThe address of the memory to free.
+
+
+
+
+ +

sfizz_create_client

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API sfizz_client_t * + sfizz_create_client + (void *data)
+
+

Create a new messaging client.

+
+
Parameters
+
+ + +
dataThe opaque data pointer which is passed to the receiver.
+
+
+
+
Returns
+
The new client.
+
+
+
Since
+
1.0.0
+
+
+
+ +

sfizz_delete_client

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_delete_client + (sfizz_client_t *client)
+
+

Destroy a messaging client.

+
+
Parameters
+
+ + +
clientThe client.
+
+
+
+
Since
+
1.0.0
+
+
+
+ +

sfizz_get_client_data

+
+
+ + + + + + + + + +
SFIZZ_EXPORTED_API void * + sfizz_get_client_data + (sfizz_client_t *client)
+
+

Get the client data.

+
+
Parameters
+
+ + +
clientThe client.
+
+
+
+
Returns
+
The client data.
+
+
+
Since
+
1.0.0
+
+
+
+ +

sfizz_set_receive_callback

+
+
+ + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_set_receive_callback + (sfizz_client_t *client,sfizz_receive_t *receive)
+
+

Set the function which receives reply messages from the synth engine.

+
+
Parameters
+
+ + + +
clientThe client.
receiveThe pointer to the receiving function.
+
+
+
+
Since
+
1.0.0
+
+
+
+ +

sfizz_send_message

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_send_message + (sfizz_synth_t *synth,sfizz_client_t *client,intdelay,const char *path,const char *sig,const sfizz_arg_t *args)
+
+

Send a message to the synth engine.

+
+
Parameters
+
+ + + + + + + +
synthThe synth.
clientThe client sending the message.
delayThe delay of the message in the block, in samples.
pathThe OSC address pattern.
sigThe OSC type tag string.
argsThe OSC arguments, whose number and format is determined the type tag string.
+
+
+
+
Since
+
1.0.0
+
+
+
+ +

sfizz_set_broadcast_callback

+
+
+ + + + + + + + + + + + + + + +
SFIZZ_EXPORTED_API void + sfizz_set_broadcast_callback + (sfizz_synth_t *synth,sfizz_receive_t *broadcast,void *data)
+
+

Set the function which receives broadcast messages from the synth engine.

+
+
Parameters
+
+ + + + +
synthThe synth.
broadcastThe pointer to the receiving function.
dataThe opaque data pointer which is passed to the receiver.
+
+
+
+
Since
+
1.0.0
+
+
+
+

+
+

+ Copyright © 2019-2024 + SFZTools Organization + + This site is open source. + + Improve this page + +

+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfizz/api/sfizz_message.h/index.html b/sfizz/api/sfizz_message.h/index.html new file mode 100644 index 00000000..bdc6208d --- /dev/null +++ b/sfizz/api/sfizz_message.h/index.html @@ -0,0 +1,708 @@ + + + + + + + + + sfizz_message.h - SFZTools + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ sfizz_message.h - SFZTools + + +

sfizz_message.h File Reference

Typedefs

+

sfizz_receive_t

+
+
+ + + + +
typedef void() sfizz_receive_t +
+
+
+

Generic message receiving function.

+
+
Since
+
1.0.0
+
+
+
+

Functions

+ +

sfizz_prepare_message

+
+
+ + + + + + + + + + + + + + + + + + + + + +
SFIZZ_EXPORTED_API uint32_t + sfizz_prepare_message + (void *buffer,uint32_tcapacity,const char *path,const char *sig,const sfizz_arg_t *args)
+
+

Convert the message to OSC using the provided output buffer.

+
+
Parameters
+
+ + + + + + +
bufferThe output buffer
capacityThe capacity of the buffer
pathThe path
sigThe signature
argsThe arguments
+
+
+
+
Returns
+
The size necessary to store the converted message in entirety, <= capacity if the written message is valid.
+
+
+
Since
+
1.0.0
+
+
+
+ +

sfizz_extract_message

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
SFIZZ_EXPORTED_API int32_t + sfizz_extract_message + (const void *srcBuffer,uint32_tsrcCapacity,void *argsBuffer,uint32_targsCapacity,const char **outPath,const char **outSig,const sfizz_arg_t **outArgs)
+
+

Extract the contents of an OSC message.

+
+
Parameters
+
+ + + + + + + + +
srcBufferThe data of the OSC message
srcCapacityThe size of the OSC message
argsBufferA buffer where the function can allocate the arguments
argsCapacityThe capacity of the argument buffer
outPathA pointer to the variable which receives the path
outSigA pointer to the variable which receives the signature
outArgsA pointer to the variable which receives the arguments
+
+
+
+
Returns
+
On success, this is the number of bytes read. On failure, it is 0 if the OSC message is invalid, -1 if there was not enough buffer for the arguments.
+
+
+
Since
+
1.0.0
+
+
+
+

+
+

+ Copyright © 2019-2024 + SFZTools Organization + + This site is open source. + + Improve this page + +

+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfizz/development/build/index.html b/sfizz/development/build/index.html new file mode 100644 index 00000000..b617d0a3 --- /dev/null +++ b/sfizz/development/build/index.html @@ -0,0 +1,785 @@ + + + + + + + + + Build - SFZTools + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+
+
+

Build

Git

+

Ensure to have git installed to be able to download the sfizz source files, +then run:

+
git clone --recursive https://github.com/sfztools/sfizz-ui.git
+
+

This will also download recursively all the submodules required to build the project.

+

Use sfizz.git repository if you are only interested on the library.

+

If you already downloaded the project without the recursive (or recurse-submodules) +option, you can run:

+
git submodule update --init --recursive
+
+

See also the main FAQ page.

+

Dependencies

+

On macOS and Windows we build most of bundled dependencies statically. +However you can use a package manager to install the required libraries, +like [Homebrew] on macOS and specifying the related SFIZZ_USE_SYSTEM_* +CMake options (see below). This will also speed up the build process.

+

Check the Linux page for details on how to install the required libraries +on various distributions.

+

CMake Build System

+

We use CMake as build system. +The basic process is to configure and build the project.

+

On macOS using brew:

+
brew update
+brew upgrade cmake
+
+

Configuration

+ + +

Current configuration options for sfizz are:

+
ENABLE_LTO                Enable Link Time Optimization                       [default: ON]
+SFIZZ_JACK                Enable JACK stand-alone build                       [default: ON only on Linux]
+SFIZZ_RENDER              Enable renderer of SMF files                        [default: ON]
+SFIZZ_SHARED              Enable shared library build                         [default: ON]
+PLUGIN_AU                 Enable AU plug-in build                             [default: ON only on macOS]
+PLUGIN_LV2                Enable LV2 plug-in build                            [default: ON]
+PLUGIN_LV2_UI             Enable LV2 GUI build                                [default: ON]
+PLUGIN_PUREDATA           Enable Puredata plug-in build                       [default: OFF]
+PLUGIN_VST2               Enable VST2 plug-in build (unsupported)             [default: OFF]
+PLUGIN_VST3               Enable VST3 plug-in build                           [default: ON]
+SFIZZ_BENCHMARKS          Enable benchmarks build                             [default: OFF]
+SFIZZ_DEMOS               Enable feature demos build                          [default: OFF]
+SFIZZ_DEVTOOLS            Enable developer tools build                        [default: OFF]
+SFIZZ_TESTS               Enable tests build                                  [default: OFF]
+SFIZZ_USE_SNDFILE         Build with libsndfile                               [default: OFF]
+SFIZZ_SNDFILE_STATIC      Link the sndfile library statically                 [default: OFF]
+SFIZZ_USE_SYSTEM_ABSEIL   Use Abseil libraries preinstalled on system         [default: OFF]
+SFIZZ_USE_SYSTEM_CATCH    Use Catch libraries preinstalled on system          [default: OFF]
+SFIZZ_USE_SYSTEM_CXXOPTS  Use CXXOPTS libraries preinstalled on system        [default: OFF]
+SFIZZ_USE_SYSTEM_GHC_FS   Use GHC Filesystem libraries preinstalled on system [default: OFF]
+SFIZZ_USE_SYSTEM_LV2      Use LV2 headers preinstalled on system              [default: OFF]
+SFIZZ_USE_SYSTEM_SIMDE    Use SIMDe libraries preinstalled on system          [default: OFF]
+SFIZZ_USE_SYSTEM_KISS_FFT Use KISS libraries preinstalled on system           [default: OFF]
+SFIZZ_USE_SYSTEM_PUGIXML  Use pugixml libraries preinstalled on system        [default: OFF]
+SFIZZ_USE_SYSTEM_VST3SDK  Use VST3SDK source files preinstalled on system     [default: OFF]
+SFIZZ_PROFILE_BUILD       Profile the build time                              [default: OFF]
+SFIZZ_RELEASE_ASSERTS     Forced assertions in release builds                 [default: OFF]
+
+

On macOS it's possible to enable universal builds by adding +-D CMAKE_OSX_ARCHITECTURES="arm64;x86_64".

+

Build

+

The 3 basic steps are: +- create a build directory and cd into it +- create the configuration +- run the build command + (the following example uses make, default build tool on Unix based systems)

+
mkdir build && cd build
+cmake ..
+make
+
+

From (at least) CMake v3.13 this can be done in 2 steps in a crossplatform way:

+
cmake -B build -S .
+cmake --build build
+
+

For further details check the CMake configuration options manual. +For reference check also our CI build workflow file.

+

You can build with clang, although in that case the CMakeFile +defaults to using libc++ instead of libstdc++.

+

By default this builds: +- The shared library version of sfizz with both C and C++ interfaces +- The JACK client on Linux +- The offline rendering client +- The AU plugin on macOS +- The LV2 plugin and its UI +- The VST3 plugin

+

Examples

+

All targets but the GUI-less LV2 plugin can be disabled using:

+
cmake .. \
+-DSFIZZ_JACK=OFF \
+-DSFIZZ_SHARED=OFF \
+-DSFIZZ_RENDER=OFF \
+-DPLUGIN_LV2_UI=OFF \
+-DPLUGIN_VST3=OFF
+
+

and process as before.

+

All targets but sfizz_render can be disabled using:

+
cmake .. \
+-DSFIZZ_JACK=OFF \
+-DSFIZZ_SHARED=OFF \
+-DPLUGIN_LV2=OFF \
+-DPLUGIN_LV2_UI=OFF \
+-DPLUGIN_VST3=OFF
+
+

and process as before.

+

Rendering MIDI files

+

You can find sfizz_render in clients/sfizz_render. +From your build directory, type clients/sfizz_render --help for more information.

+
+
+
+ +
+

+
+

+ Copyright © 2019-2024 + SFZTools Organization + + This site is open source. + + Improve this page + +

+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfizz/development/build/linux/index.html b/sfizz/development/build/linux/index.html new file mode 100644 index 00000000..43ad1e16 --- /dev/null +++ b/sfizz/development/build/linux/index.html @@ -0,0 +1,732 @@ + + + + + + + + + Linux Build - SFZTools + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+
+
+

Linux Build

On this page we specify the required packages on Debian / Ubuntu and Fedora +(based) distributions for reference, but unfortunately we can't cover all systems.

+

For Archlinux based systems you can check their official PKGBUILD; +we also provide one for the current development source tree on AUR.

+

Dependencies

+

In order to build the plugins with the GUI, +you need to install the following dependencies.

+

For the standalone client and other demos, +you need to install also the JACK Audio Connection Kit library.

+

Ubuntu / Debian

+
sudo apt install \
+libcairo2-dev \
+libfontconfig1-dev \
+libfreetype6-dev \
+libglib2.0-dev \
+libpango1.0-dev \
+libx11-dev \
+libx11-xcb-dev \
+libxcb-cursor-dev \
+libxcb-keysyms1-dev \
+libxcb-util-dev \
+libxcb-xkb-dev \
+libxkbcommon-dev \
+libxkbcommon-x11-dev \
+zenity \
+libjack-jackd2-dev
+
+

Fedora

+
sudo dnf install \
+cairo-devel \
+fontconfig-devel \
+freetype-devel \
+glib2-devel \
+libX11-devel \
+libxcb-devel \
+libxkbcommon-devel \
+libxkbcommon-x11-devel \
+pango-devel \
+xcb-util-cursor-devel \
+xcb-util-devel \
+xcb-util-keysyms-devel \
+zenity \
+jack-audio-connection-kit-devel
+
+

The default build uses the bundled dr_libs library for audio samples management.

+

If building with libsndfile, Debian and Ubuntu provide a libsndfile1-dev +package, libsndfile-devel for Fedora.

+

Benchmarks

+

The benchmarks depend on the benchmark library. +If you wish to build the benchmarks you should either build the static library +from source, or use the library from your distribution. +Debian and Ubuntu provide a libbenchmark-dev package, google-benchmark-devel +for Fedora.

+

JACK Standalone Client

+

You can find the JACK client in clients/sfizz_jack. +The JACK client client will forcefully connect to the system output, +and open an event input in JACK for you to connect a midi capable software +or hardware (e.g. jack-keyboard). +If no JACK server is already started it will start one with basic options.

+
+
+
+ +
+

+
+

+ Copyright © 2019-2024 + SFZTools Organization + + This site is open source. + + Improve this page + +

+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfizz/development/status/index.html b/sfizz/development/status/index.html new file mode 100644 index 00000000..d7c88519 --- /dev/null +++ b/sfizz/development/status/index.html @@ -0,0 +1,765 @@ + + + + + + + + + Opcodes Support Status - SFZTools + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+
+
+

Opcodes Support Status

+ View detailed list +
The classification of opcodes follows the list over at + sfzformat.com. +
+
+ +

+ + + + + + + + + + + + + + + + + + + + +
VersionStatus
SFZ v1 +
+
96%
+
1%
+
+
SFZ v2 +
+
44%
+
+
ARIA +
+
45%
+
+
+

+
+ Complete + Work In Progress +
+ +

Supported Headers

+

All headers, including <sample> +are currently supported.

+

Supported Operating Systems

+
    + +
  • Linux
  • + +
  • macOS X
  • + +
  • Windows
  • + +
+
+
+
+ +
+

+
+

+ Copyright © 2019-2024 + SFZTools Organization + + This site is open source. + + Improve this page + +

+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfizz/development/status/opcodes/index.html b/sfizz/development/status/opcodes/index.html new file mode 100644 index 00000000..1e4d20df --- /dev/null +++ b/sfizz/development/status/opcodes/index.html @@ -0,0 +1,15987 @@ + + + + + + + + + Opcodes Support Table - SFZTools + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
OpcodeVersionSupportedComment
Real-Time Instrument ScriptscriptLinuxSampler +:x: + +
Sample PlaybackcountSFZ v1 +:heavy_check_mark: + +
Sample PlaybackdelaySFZ v1 +:heavy_check_mark: + +
Sample Playbackdelay_ccNSFZ v1 +:heavy_check_mark: + +
Sample Playbackdelay_onccNSFZ v2 +:heavy_check_mark: + + delay_ccN alias.
Sample Playbackdelay_curveccNARIA +:x: + +
Sample Playbackdelay_randomSFZ v1 +:heavy_check_mark: + +
Sample Playbackdelay_samplesSFZ v2 +:x: + +
Sample Playbackdelay_samples_onccNSFZ v2 +:x: + +
Sample PlaybackendSFZ v1 +:heavy_check_mark: + +
Sample Playbackloop_countSFZ v2 +:heavy_check_mark: + +
Sample PlaybackloopcountARIA +:x: + + loop_count alias.
Sample Playbackloop_crossfadeSFZ v2 +:heavy_check_mark: + +
Sample Playbackloop_endSFZ v1 +:heavy_check_mark: + +
Sample PlaybackloopendSFZ v1 +:heavy_check_mark: + + loop_end alias.
Sample Playbackloop_lengthccNSFZ v2 +:heavy_check_mark: + +
Sample Playbackloop_length_onccNSFZ v2 +:heavy_check_mark: + + loop_lengthccN alias.
Sample Playbackloop_modeSFZ v1 +:heavy_check_mark: + +
Sample PlaybackloopmodeSFZ v1 +:heavy_check_mark: + + loop_mode alias.
Sample Playbackloop_startSFZ v1 +:heavy_check_mark: + +
Sample PlaybackloopstartSFZ v1 +:heavy_check_mark: + + loop_start alias.
Sample Playbackloop_startccNSFZ v2 +:heavy_check_mark: + +
Sample Playbackloop_start_onccNSFZ v2 +:heavy_check_mark: + + loop_startccN alias.
Sample Playbackloop_tuneSFZ v2 +:x: + +
Sample PlaybacklooptuneARIA +:x: + + loop_tune alias.
Sample Playbackloop_typeSFZ v2 +:x: + +
Sample PlaybacklooptypeARIA +:x: + + loop_type alias.
Sample PlaybackoffsetSFZ v1 +:heavy_check_mark: + +
Sample Playbackoffset_ccNSFZ v1 +:heavy_check_mark: + +
Sample Playbackoffset_onccNSFZ v2 +:heavy_check_mark: + + offset_ccN alias.
Sample Playbackoffset_randomSFZ v1 +:heavy_check_mark: + +
Sample Playbackoffset_modeARIA +:x: + +
Sample PlaybacksampleSFZ v1 +:heavy_check_mark: + +
Sample Playbacksample_fadeoutSFZ v2 +:x: + +
Sample Playbacksample_dyn_paramNARIA +:x: + +
Sample Playbacksample_dyn_paramN_onccXARIA +:x: + +
Sample Playbacksync_beatsSFZ v1 +:x: + +
Sample Playbacksync_offsetSFZ v1 +:x: + +
Sample Playbackdelay_beatsSFZ v2 +:x: + +
Sample Playbackdelay_beats_onccNARIA +:x: + +
Sample Playbackdelay_beats_curveccNARIA +:x: + +
Sample Playbackdelay_beats_randomARIA +:x: + +
Sample Playbackstop_beatsSFZ v2 +:x: + +
Sample PlaybackdirectionSFZ v2 +:heavy_check_mark: + +
Sample Playbackmd5SFZ v2 +:x: + +
Sample Playbackreverse_loccNSFZ v2 +:x: + +
Sample Playbackreverse_hiccNSFZ v2 +:x: + +
Sample PlaybackwaveguideSFZ v2 +:x: + +
Instrument Settings#defineSFZ v2 +:heavy_check_mark: + +
Instrument Settingsdefault_pathSFZ v2 +:heavy_check_mark: + +
Instrument Settingsnote_offsetSFZ v2 +:heavy_check_mark: + +
Instrument Settingsoctave_offsetSFZ v2 +:heavy_check_mark: + +
Instrument Settingslabel_ccNARIA +:heavy_check_mark: + +
Instrument Settingslabel_keyNsfizz +:heavy_check_mark: + +
Instrument Settingslabel_outputNCalfbox +:x: + +
Instrument Settingsset_ccNSFZ v2 +:heavy_check_mark: + +
Instrument Settings#includeARIA +:heavy_check_mark: + +
Instrument Settingsset_hdccNARIA +:heavy_check_mark: + +
Instrument Settingsset_realccNARIA +:heavy_check_mark: + + set_hdccN alias.
Instrument Settingssw_note_offsetARIA +:x: + +
Instrument Settingssw_octave_offsetARIA +:x: + +
Instrument Settingsglobal_labelARIA +:x: + +
Instrument Settingsmaster_labelARIA +:x: + +
Instrument Settingsgroup_labelARIA +:x: + +
Instrument Settingsregion_labelARIA +:x: + +
Voice LifecyclegroupSFZ v1 +:heavy_check_mark: + +
Voice Lifecyclepolyphony_groupARIA +:heavy_check_mark: + + group alias.
Voice Lifecycleoff_bySFZ v1 +:heavy_check_mark: + +
Voice LifecycleoffbySFZ v1 +:heavy_check_mark: + + off_by alias.
Voice Lifecycleoff_modeSFZ v1 +:heavy_check_mark: + +
Voice LifecycleoutputSFZ v1 +:heavy_check_mark: + +
Voice LifecyclepolyphonySFZ v2 +:heavy_check_mark: + +
Voice Lifecyclenote_polyphonySFZ v2 +:heavy_check_mark: + +
Voice Lifecyclepolyphony_stealingARIA +:x: + +
Voice Lifecyclenote_selfmaskSFZ v2 +:heavy_check_mark: + +
Voice Lifecyclert_deadSFZ v2 +:heavy_check_mark: + +
Voice Lifecycleoff_curveARIA +:x: + +
Voice Lifecycleoff_shapeARIA +:x: + +
Voice Lifecycleoff_timeARIA +:heavy_check_mark: + +
Key MappingkeySFZ v1 +:heavy_check_mark: + +
Key MappinglokeySFZ v1 +:heavy_check_mark: + +
Key MappinghikeySFZ v1 +:heavy_check_mark: + +
Key MappinglovelSFZ v1 +:heavy_check_mark: + +
Key MappinghivelSFZ v1 +:heavy_check_mark: + +
MIDI ConditionslochanSFZ v1 +:x: + + Not supported by design
MIDI ConditionshichanSFZ v1 +:x: + + Not supported by design
MIDI ConditionsloccNSFZ v1 +:heavy_check_mark: + +
MIDI ConditionshiccNSFZ v1 +:heavy_check_mark: + +
MIDI ConditionslobendSFZ v1 +:heavy_check_mark: + +
MIDI ConditionshibendSFZ v1 +:heavy_check_mark: + +
MIDI Conditionssostenuto_ccARIA +:heavy_check_mark: + +
MIDI Conditionssostenuto_loARIA +:heavy_check_mark: + +
MIDI Conditionssostenuto_swSFZ v2 +:x: + +
MIDI Conditionssustain_ccARIA +:heavy_check_mark: + +
MIDI Conditionssustain_loARIA +:heavy_check_mark: + +
MIDI Conditionssustain_swSFZ v2 +:heavy_check_mark: + +
MIDI Conditionssw_lokeySFZ v1 +:heavy_check_mark: + +
MIDI Conditionssw_hikeySFZ v1 +:heavy_check_mark: + +
MIDI Conditionssw_lastSFZ v1 +:heavy_check_mark: + +
MIDI Conditionssw_downSFZ v1 +:heavy_check_mark: + +
MIDI Conditionssw_upSFZ v1 +:heavy_check_mark: + +
MIDI Conditionssw_previousSFZ v1 +:heavy_check_mark: + +
MIDI Conditionssw_velSFZ v1 +:heavy_check_mark: + +
MIDI ConditionsloprogSFZ v2 +:x: + + Not supported by design
MIDI ConditionshiprogSFZ v2 +:x: + + Not supported by design
MIDI ConditionslohdccNARIA +:heavy_check_mark: + +
MIDI ConditionshihdccNARIA +:heavy_check_mark: + +
MIDI Conditionssw_defaultSFZ v2 +:heavy_check_mark: + +
MIDI Conditionssw_labelARIA +:heavy_check_mark: + +
MIDI Conditionssw_lolastARIA +:heavy_check_mark: + +
MIDI Conditionssw_hilastARIA +:heavy_check_mark: + +
MIDI ConditionsvarNN_modARIA +:x: + +
MIDI ConditionsvarNN_onccXARIA +:x: + +
MIDI ConditionsvarNN_curveccXARIA +:x: + +
MIDI ConditionsvarNN_*ARIA +:x: + +
Internal ConditionslobpmSFZ v1 +:construction: + +
Internal ConditionshibpmSFZ v1 +:construction: + +
Internal ConditionslochanaftSFZ v1 +:heavy_check_mark: + +
Internal ConditionshichanaftSFZ v1 +:heavy_check_mark: + +
Internal ConditionslopolyaftSFZ v1 +:heavy_check_mark: + +
Internal ConditionshipolyaftSFZ v1 +:heavy_check_mark: + +
Internal ConditionslorandSFZ v1 +:heavy_check_mark: + +
Internal ConditionshirandSFZ v1 +:heavy_check_mark: + +
Internal Conditionsseq_lengthSFZ v1 +:heavy_check_mark: + +
Internal Conditionsseq_positionSFZ v1 +:heavy_check_mark: + +
Internal ConditionslotimerSFZ v2 +:x: + +
Internal ConditionshitimerSFZ v2 +:x: + +
TriggerstriggerSFZ v1 +:heavy_check_mark: + +
Triggerson_loccNSFZ v1 +:heavy_check_mark: + +
Triggersstart_loccNSFZ v2 +:heavy_check_mark: + + on_loccN alias.
Triggerson_hiccNSFZ v1 +:heavy_check_mark: + +
Triggersstart_hiccNSFZ v2 +:heavy_check_mark: + + on_hiccN alias.
Triggerson_lohdccNARIA +:heavy_check_mark: + +
Triggersstart_lohdccNARIA +:heavy_check_mark: + + on_lohdccN alias.
Triggerson_hihdccNARIA +:heavy_check_mark: + +
Triggersstart_hihdccNARIA +:heavy_check_mark: + + on_hihdccN alias.
Triggersstop_loccNSFZ v2 +:x: + +
Triggersstop_hiccNSFZ v2 +:x: + +
Triggersstop_lohdccNARIA +:x: + +
Triggersstop_hihdccNARIA +:x: + +
AmplifierpanSFZ v1 +:heavy_check_mark: + +
Amplifierpan_onccNSFZ v2 +:heavy_check_mark: + +
Amplifierpan_ccNARIA +:heavy_check_mark: + + pan_onccN alias.
Amplifierpan_curveccNSFZ v2 +:heavy_check_mark: + +
Amplifierpan_smoothccNSFZ v2 +:heavy_check_mark: + +
Amplifierpan_stepccNSFZ v2 +:heavy_check_mark: + +
Amplifierpan_randomARIA +:x: + +
AmplifierpositionSFZ v1 +:heavy_check_mark: + +
Amplifierposition_onccNARIA +:heavy_check_mark: + +
Amplifierposition_curveccNARIA +:heavy_check_mark: + +
Amplifierposition_smoothccNARIA +:heavy_check_mark: + +
Amplifierposition_stepccNARIA +:heavy_check_mark: + +
Amplifierposition_randomARIA +:x: + +
Amplifierposition_keycenterARIA +:x: + +
Amplifierposition_keytrackARIA +:x: + +
Amplifierposition_veltrackARIA +:x: + +
AmplifiervolumeSFZ v1 +:heavy_check_mark: + +
Amplifiergain_ccNSFZ v1 +:heavy_check_mark: + +
Amplifiergain_onccNSFZ v2 +:heavy_check_mark: + + gain_ccN alias.
Amplifiervolume_onccNSFZ v2 +:heavy_check_mark: + + gain_ccN alias.
Amplifiervolume_curveccNSFZ v2 +:heavy_check_mark: + +
Amplifiervolume_smoothccNSFZ v2 +:heavy_check_mark: + +
Amplifiervolume_stepccNSFZ v2 +:heavy_check_mark: + +
AmplifierwidthSFZ v1 +:heavy_check_mark: + + Disambiguation needed: homonymous opcode used also under <effect> header
Amplifierwidth_onccNSFZ v2 +:heavy_check_mark: + + Disambiguation needed: homonymous opcode used also under <effect> header (not supported yet there)
Amplifierwidth_curveccNSFZ v2 +:heavy_check_mark: + +
Amplifierwidth_smoothccNSFZ v2 +:heavy_check_mark: + +
Amplifierwidth_stepccNSFZ v2 +:heavy_check_mark: + +
Amplifieramp_keycenterSFZ v1 +:heavy_check_mark: + +
Amplifieramp_keytrackSFZ v1 +:heavy_check_mark: + +
Amplifieramp_veltrackSFZ v1 +:heavy_check_mark: + +
Amplifieramp_veltrack_onccNARIA +:x: + +
Amplifieramp_veltrack_ccNARIA +:x: + + amp_veltrack_onccN alias.
Amplifieramp_veltrack_curveccNARIA +:x: + +
Amplifieramp_veltrack_randomARIA +:x: + +
Amplifieramp_velcurve_NSFZ v1 +:heavy_check_mark: + +
Amplifieramp_randomSFZ v1 +:heavy_check_mark: + +
Amplifiergain_randomSFZ v2 +:x: + + amp_random alias.
Amplifierrt_decaySFZ v1 +:heavy_check_mark: + +
Amplifierrt_decayNARIA +:x: + +
Amplifierrt_decayN_timeARIA +:x: + +
Amplifierxf_cccurveSFZ v1 +:heavy_check_mark: + +
Amplifierxf_keycurveSFZ v1 +:heavy_check_mark: + +
Amplifierxf_velcurveSFZ v1 +:heavy_check_mark: + +
Amplifierxfin_loccNSFZ v1 +:heavy_check_mark: + +
Amplifierxfin_hiccNSFZ v1 +:heavy_check_mark: + +
Amplifierxfout_loccNSFZ v1 +:heavy_check_mark: + +
Amplifierxfout_hiccNSFZ v1 +:heavy_check_mark: + +
Amplifierxfin_lokeySFZ v1 +:heavy_check_mark: + +
Amplifierxfin_hikeySFZ v1 +:heavy_check_mark: + +
Amplifierxfout_lokeySFZ v1 +:heavy_check_mark: + +
Amplifierxfout_hikeySFZ v1 +:heavy_check_mark: + +
Amplifierxfin_lovelSFZ v1 +:heavy_check_mark: + +
Amplifierxfin_hivelSFZ v1 +:heavy_check_mark: + +
Amplifierxfout_lovelSFZ v1 +:heavy_check_mark: + +
Amplifierxfout_hivelSFZ v1 +:heavy_check_mark: + +
AmplifierphaseSFZ v2 +:x: + +
AmplifieramplitudeARIA +:heavy_check_mark: + +
Amplifieramplitude_onccNARIA +:heavy_check_mark: + +
Amplifieramplitude_ccN +:heavy_check_mark: + + amplitude_onccN alias.
Amplifieramplitude_curveccNARIA +:heavy_check_mark: + +
Amplifieramplitude_smoothccNARIA +:heavy_check_mark: + +
Amplifierglobal_amplitudeARIA +:heavy_check_mark: + +
Amplifiermaster_amplitudeARIA +:heavy_check_mark: + +
Amplifiergroup_amplitudeARIA +:heavy_check_mark: + +
Amplifierpan_lawARIA +:x: + +
Amplifierpan_keycenterSFZ v2 +:x: + +
Amplifierpan_keytrackSFZ v2 +:x: + +
Amplifierpan_veltrackSFZ v2 +:x: + +
Amplifierglobal_volumeARIA +:heavy_check_mark: + +
Amplifiermaster_volumeARIA +:heavy_check_mark: + +
Amplifiergroup_volumeARIA +:heavy_check_mark: + +
EQeqN_bwSFZ v1 +:heavy_check_mark: + +
EQeqN_bwccXSFZ v1 +:heavy_check_mark: + +
EQeqN_bw_onccXSFZ v2 +:heavy_check_mark: + + eqN_bwccX alias.
EQeqN_freqSFZ v1 +:heavy_check_mark: + +
EQeqN_freqccXSFZ v1 +:heavy_check_mark: + +
EQeqN_freq_onccXSFZ v2 +:heavy_check_mark: + + eqN_freqccX alias.
EQeqN_vel2freqSFZ v1 +:heavy_check_mark: + +
EQeqN_gainSFZ v1 +:heavy_check_mark: + +
EQeqN_gainccXSFZ v1 +:heavy_check_mark: + +
EQeqN_gain_onccXSFZ v2 +:heavy_check_mark: + + eqN_gainccX alias.
EQeqN_vel2gainSFZ v1 +:heavy_check_mark: + +
EQeqN_dynamicARIA +:x: + +
EQeqN_typeSFZ v2 +:heavy_check_mark: + +
FiltercutoffSFZ v1 +:heavy_check_mark: + +
Filtercutoff2SFZ v2 +:heavy_check_mark: + + cutoff alias.
Filtercutoff2_ccNSFZ v2 +:x: + +
Filtercutoff2_onccNSFZ v2 +:heavy_check_mark: + +
Filtercutoff2_curveccNSFZ v2 +:x: + +
Filtercutoff2_smoothccNSFZ v2 +:x: + +
Filtercutoff2_stepccNSFZ v2 +:x: + +
Filtercutoff2_chanaftSFZ v2 +:heavy_check_mark: + +
Filtercutoff2_polyaftSFZ v2 +:heavy_check_mark: + +
Filtercutoff_ccNSFZ v1 +:heavy_check_mark: + +
Filtercutoff_onccNSFZ v2 +:heavy_check_mark: + + cutoff_ccN alias.
Filtercutoff_curveccNSFZ v2 +:x: + +
Filtercutoff_smoothccNSFZ v2 +:x: + +
Filtercutoff_stepccNSFZ v2 +:x: + +
Filtercutoff_chanaftSFZ v1 +:heavy_check_mark: + +
Filtercutoff_polyaftSFZ v1 +:heavy_check_mark: + +
Filterfil_gainARIA +:heavy_check_mark: + +
Filterfil2_gainARIA +:heavy_check_mark: + + fil_gain alias.
Filterfil2_gain_onccN +:heavy_check_mark: + +
Filterfil_gain_onccNARIA +:heavy_check_mark: + +
Filterfil_keycenterSFZ v1 +:heavy_check_mark: + +
Filterfil2_keycenterSFZ v2 +:heavy_check_mark: + + fil_keycenter alias.
Filterfil_keytrackSFZ v1 +:heavy_check_mark: + +
Filterfil2_keytrackSFZ v2 +:heavy_check_mark: + + fil_keytrack alias.
Filterfil_randomSFZ v1 +:heavy_check_mark: + +
Filtercutoff_randomSFZ v2 +:heavy_check_mark: + + fil_random alias.
Filtercutoff2_randomARIA +:x: + + fil_random alias.
Filterfil_typeSFZ v1 +:heavy_check_mark: + +
FilterfiltypeSFZ v1 +:heavy_check_mark: + + fil_type alias.
Filterfil2_typeSFZ v2 +:heavy_check_mark: + + fil_type alias.
Filterfil_veltrackSFZ v1 +:heavy_check_mark: + +
Filterfil2_veltrackSFZ v2 +:heavy_check_mark: + + fil_veltrack alias.
FilterresonanceSFZ v1 +:heavy_check_mark: + +
Filterresonance2SFZ v2 +:heavy_check_mark: + + resonance alias.
Filterresonance2_onccNSFZ v2 +:heavy_check_mark: + +
Filterresonance2_ccNSFZ v2 +:heavy_check_mark: + + resonance2_onccN alias.
Filterresonance2_curveccNSFZ v2 +:x: + +
Filterresonance2_smoothccNSFZ v2 +:x: + +
Filterresonance2_stepccNSFZ v2 +:x: + +
Filterresonance_onccNSFZ v2 +:heavy_check_mark: + +
Filterresonance_ccNSFZ v2 +:heavy_check_mark: + + resonance_onccN alias.
Filterresonance_curveccNSFZ v2 +:x: + +
Filterresonance_smoothccNSFZ v2 +:x: + +
Filterresonance_stepccNSFZ v2 +:x: + +
Filterresonance_randomARIA +:x: + +
Filterresonance2_randomARIA +:x: + +
Filternoise_filterSFZ v2 +:x: + +
Filternoise_stereoSFZ v2 +:x: + +
Filternoise_levelSFZ v2 +:x: + +
Filternoise_level_onccNSFZ v2 +:x: + +
Filternoise_level_smoothccNSFZ v2 +:x: + +
Filternoise_stepSFZ v2 +:x: + +
Filternoise_step_onccNSFZ v2 +:x: + +
Filternoise_toneSFZ v2 +:x: + +
Filternoise_tone_onccNSFZ v2 +:x: + +
Pitchbend_upSFZ v1 +:heavy_check_mark: + +
PitchbendupSFZ v1 +:heavy_check_mark: + + bend_up alias.
Pitchbend_downSFZ v1 +:heavy_check_mark: + +
PitchbenddownSFZ v1 +:heavy_check_mark: + + bend_down alias.
Pitchbend_smoothSFZ v2 +:heavy_check_mark: + +
Pitchbend_stepSFZ v1 +:heavy_check_mark: + +
PitchbendstepSFZ v1 +:heavy_check_mark: + + bend_step alias.
PitchtuneSFZ v1 +:heavy_check_mark: + +
PitchpitchARIA +:heavy_check_mark: + + tune alias.
Pitchpitch_onccNSFZ v2 +:heavy_check_mark: + +
Pitchtune_ccNARIA +:heavy_check_mark: + + pitch_onccN alias.
Pitchtune_onccNARIA +:heavy_check_mark: + + pitch_onccN alias.
Pitchpitch_curveccNSFZ v2 +:heavy_check_mark: + +
Pitchtune_curveccNARIA +:heavy_check_mark: + + pitch_curveccN alias.
Pitchpitch_smoothccNSFZ v2 +:heavy_check_mark: + +
Pitchtune_smoothccNARIA +:heavy_check_mark: + + pitch_smoothccN alias.
Pitchpitch_stepccNSFZ v2 +:heavy_check_mark: + +
Pitchtune_stepccNARIA +:heavy_check_mark: + + pitch_stepccN alias.
Pitchgroup_tuneARIA +:x: + +
Pitchmaster_tuneARIA +:x: + +
Pitchglobal_tuneARIA +:x: + +
Pitchpitch_keycenterSFZ v1 +:heavy_check_mark: + + Plus sample as value
Pitchpitch_keytrackSFZ v1 +:heavy_check_mark: + +
Pitchtune_keytrackARIA +:heavy_check_mark: + + pitch_keytrack alias.
Pitchpitch_randomSFZ v1 +:heavy_check_mark: + +
Pitchtune_randomARIA +:heavy_check_mark: + + pitch_random alias.
Pitchpitch_veltrackSFZ v1 +:heavy_check_mark: + +
Pitchtune_veltrackARIA +:heavy_check_mark: + + pitch_veltrack alias.
PitchtransposeSFZ v1 +:heavy_check_mark: + +
Pitchbend_stepupSFZ v2 +:x: + +
Pitchbend_stepdownSFZ v2 +:x: + +
Envelope Generatorsampeg_attackSFZ v1 +:heavy_check_mark: + +
Envelope Generatorsampeg_attackccNSFZ v1 +:heavy_check_mark: + +
Envelope Generatorsampeg_attack_onccNSFZ v2 +:heavy_check_mark: + + ampeg_attackccN alias.
Envelope Generatorsampeg_attack_curveccNARIA +:x: + +
Envelope Generatorsampeg_vel2attackSFZ v1 +:heavy_check_mark: + +
Envelope Generatorsampeg_decaySFZ v1 +:heavy_check_mark: + +
Envelope Generatorsampeg_decayccNSFZ v1 +:heavy_check_mark: + +
Envelope Generatorsampeg_decay_onccNSFZ v2 +:heavy_check_mark: + + ampeg_decayccN alias.
Envelope Generatorsampeg_decay_curveccNARIA +:x: + +
Envelope Generatorsampeg_vel2decaySFZ v1 +:heavy_check_mark: + +
Envelope Generatorsampeg_delaySFZ v1 +:heavy_check_mark: + +
Envelope Generatorsampeg_delayccNSFZ v1 +:heavy_check_mark: + +
Envelope Generatorsampeg_delay_onccNSFZ v2 +:heavy_check_mark: + + ampeg_delayccN alias.
Envelope Generatorsampeg_delay_curveccNARIA +:x: + +
Envelope Generatorsampeg_vel2delaySFZ v1 +:heavy_check_mark: + +
Envelope Generatorsampeg_holdSFZ v1 +:heavy_check_mark: + +
Envelope Generatorsampeg_holdccNSFZ v1 +:heavy_check_mark: + +
Envelope Generatorsampeg_hold_onccNSFZ v2 +:heavy_check_mark: + + ampeg_holdccN alias.
Envelope Generatorsampeg_hold_curveccNARIA +:x: + +
Envelope Generatorsampeg_vel2holdSFZ v1 +:heavy_check_mark: + +
Envelope Generatorsampeg_releaseSFZ v1 +:heavy_check_mark: + +
Envelope Generatorsampeg_releaseccNSFZ v1 +:heavy_check_mark: + +
Envelope Generatorsampeg_release_onccNSFZ v2 +:heavy_check_mark: + + ampeg_releaseccN alias.
Envelope Generatorsampeg_release_curveccNARIA +:x: + +
Envelope Generatorsampeg_vel2releaseSFZ v1 +:heavy_check_mark: + +
Envelope Generatorsampeg_sustainSFZ v1 +:heavy_check_mark: + +
Envelope Generatorsampeg_sustainccNSFZ v1 +:heavy_check_mark: + +
Envelope Generatorsampeg_sustain_onccNSFZ v2 +:heavy_check_mark: + + ampeg_sustainccN alias.
Envelope Generatorsampeg_sustain_curveccNARIA +:x: + +
Envelope Generatorsampeg_vel2sustainSFZ v1 +:heavy_check_mark: + +
Envelope Generatorsampeg_startSFZ v1 +:heavy_check_mark: + +
Envelope Generatorsampeg_startccNSFZ v1 +:heavy_check_mark: + +
Envelope Generatorsampeg_start_onccNSFZ v2 +:heavy_check_mark: + + ampeg_startccN alias.
Envelope Generatorsampeg_start_curveccNARIA +:x: + +
Envelope Generatorsampeg_attack_shapeARIA +:x: + +
Envelope Generatorsampeg_decay_shapeARIA +:x: + +
Envelope Generatorsampeg_decay_zeroARIA +:x: + +
Envelope Generatorsampeg_dynamicARIA +:x: + +
Envelope Generatorsampeg_release_shapeARIA +:x: + +
Envelope Generatorsampeg_release_zeroARIA +:x: + +
Envelope Generatorsfileg_attack_shapeARIA +:x: + +
Envelope Generatorsfileg_decay_shapeARIA +:x: + +
Envelope Generatorsfileg_decay_zeroARIA +:x: + +
Envelope Generatorsfileg_release_shapeARIA +:x: + +
Envelope Generatorsfileg_release_zeroARIA +:x: + +
Envelope Generatorsfileg_dynamicARIA +:x: + +
Envelope Generatorspitcheg_attack_shapeARIA +:x: + +
Envelope Generatorspitcheg_decay_shapeARIA +:x: + +
Envelope Generatorspitcheg_decay_zeroARIA +:x: + +
Envelope Generatorspitcheg_release_shapeARIA +:x: + +
Envelope Generatorspitcheg_release_zeroARIA +:x: + +
Envelope Generatorspitcheg_dynamicARIA +:x: + +
Envelope Generatorsfileg_attackSFZ v1 +:heavy_check_mark: + +
Envelope Generatorsfileg_attack_onccNARIA +:heavy_check_mark: + +
Envelope Generatorsfileg_attackccNARIA +:heavy_check_mark: + + fileg_attack_onccN alias.
Envelope Generatorsfileg_attack_curveccNARIA +:x: + +
Envelope Generatorsfileg_vel2attackSFZ v1 +:heavy_check_mark: + +
Envelope Generatorsfileg_decaySFZ v1 +:heavy_check_mark: + +
Envelope Generatorsfileg_decay_onccNARIA +:heavy_check_mark: + +
Envelope Generatorsfileg_decayccNARIA +:heavy_check_mark: + + fileg_decay_onccN alias.
Envelope Generatorsfileg_decay_curveccNARIA +:x: + +
Envelope Generatorsfileg_vel2decaySFZ v1 +:heavy_check_mark: + +
Envelope Generatorsfileg_delaySFZ v1 +:heavy_check_mark: + +
Envelope Generatorsfileg_delay_onccNARIA +:heavy_check_mark: + +
Envelope Generatorsfileg_delayccNARIA +:heavy_check_mark: + + fileg_delay_onccN alias.
Envelope Generatorsfileg_delay_curveccNARIA +:x: + +
Envelope Generatorsfileg_vel2delaySFZ v1 +:heavy_check_mark: + +
Envelope Generatorsfileg_depthSFZ v1 +:heavy_check_mark: + +
Envelope Generatorsfileg_depth_onccNARIA +:heavy_check_mark: + +
Envelope Generatorsfileg_depthccNARIA +:heavy_check_mark: + + fileg_depth_onccN alias.
Envelope Generatorsfileg_depth_curveccNARIA +:x: + +
Envelope Generatorsfileg_vel2depthSFZ v1 +:heavy_check_mark: + +
Envelope Generatorsfileg_holdSFZ v1 +:heavy_check_mark: + +
Envelope Generatorsfileg_hold_onccNARIA +:heavy_check_mark: + +
Envelope Generatorsfileg_holdccNARIA +:heavy_check_mark: + + fileg_hold_onccN alias.
Envelope Generatorsfileg_hold_curveccNARIA +:x: + +
Envelope Generatorsfileg_vel2holdSFZ v1 +:heavy_check_mark: + +
Envelope Generatorsfileg_releaseSFZ v1 +:heavy_check_mark: + +
Envelope Generatorsfileg_release_onccNARIA +:heavy_check_mark: + +
Envelope Generatorsfileg_releaseccNARIA +:heavy_check_mark: + + fileg_release_onccN alias.
Envelope Generatorsfileg_release_curveccNARIA +:x: + +
Envelope Generatorsfileg_vel2releaseSFZ v1 +:heavy_check_mark: + +
Envelope Generatorsfileg_startSFZ v1 +:heavy_check_mark: + +
Envelope Generatorsfileg_start_onccNARIA +:heavy_check_mark: + +
Envelope Generatorsfileg_startccNARIA +:heavy_check_mark: + + fileg_start_onccN alias.
Envelope Generatorsfileg_start_curveccNARIA +:x: + +
Envelope Generatorsfileg_sustainSFZ v1 +:heavy_check_mark: + +
Envelope Generatorsfileg_sustain_onccNARIA +:heavy_check_mark: + +
Envelope Generatorsfileg_sustainccNARIA +:heavy_check_mark: + + fileg_sustain_onccN alias.
Envelope Generatorsfileg_sustain_curveccNARIA +:x: + +
Envelope Generatorsfileg_vel2sustainSFZ v1 +:heavy_check_mark: + +
Envelope Generatorspitcheg_attackSFZ v1 +:heavy_check_mark: + +
Envelope Generatorspitcheg_attack_onccNARIA +:heavy_check_mark: + +
Envelope Generatorspitcheg_attack_curveccNARIA +:x: + +
Envelope Generatorspitcheg_vel2attackSFZ v1 +:heavy_check_mark: + +
Envelope Generatorspitcheg_decaySFZ v1 +:heavy_check_mark: + +
Envelope Generatorspitcheg_decay_onccNARIA +:heavy_check_mark: + +
Envelope Generatorspitcheg_decay_curveccNARIA +:x: + +
Envelope Generatorspitcheg_vel2decaySFZ v1 +:heavy_check_mark: + +
Envelope Generatorspitcheg_delaySFZ v1 +:heavy_check_mark: + +
Envelope Generatorspitcheg_delay_onccNARIA +:heavy_check_mark: + +
Envelope Generatorspitcheg_delay_curveccNARIA +:x: + +
Envelope Generatorspitcheg_vel2delaySFZ v1 +:heavy_check_mark: + +
Envelope Generatorspitcheg_depthSFZ v1 +:heavy_check_mark: + +
Envelope Generatorspitcheg_depth_onccNARIA +:heavy_check_mark: + +
Envelope Generatorspitcheg_depthccNARIA +:heavy_check_mark: + + pitcheg_depth_onccN alias.
Envelope Generatorspitcheg_depth_curveccNARIA +:x: + +
Envelope Generatorspitcheg_vel2depthSFZ v1 +:heavy_check_mark: + +
Envelope Generatorspitcheg_holdSFZ v1 +:heavy_check_mark: + +
Envelope Generatorspitcheg_hold_onccNARIA +:heavy_check_mark: + +
Envelope Generatorspitcheg_hold_curveccNARIA +:x: + +
Envelope Generatorspitcheg_vel2holdSFZ v1 +:heavy_check_mark: + +
Envelope Generatorspitcheg_releaseSFZ v1 +:heavy_check_mark: + +
Envelope Generatorspitcheg_release_onccNARIA +:heavy_check_mark: + +
Envelope Generatorspitcheg_release_curveccNARIA +:x: + +
Envelope Generatorspitcheg_vel2releaseSFZ v1 +:heavy_check_mark: + +
Envelope Generatorspitcheg_startSFZ v1 +:heavy_check_mark: + +
Envelope Generatorspitcheg_start_onccNARIA +:heavy_check_mark: + +
Envelope Generatorspitcheg_start_curveccNARIA +:x: + +
Envelope Generatorspitcheg_sustainSFZ v1 +:heavy_check_mark: + +
Envelope Generatorspitcheg_sustain_onccNARIA +:heavy_check_mark: + +
Envelope Generatorspitcheg_sustain_curveccNARIA +:x: + +
Envelope Generatorspitcheg_vel2sustainSFZ v1 +:heavy_check_mark: + +
Envelope GeneratorsegN_pointsSFZ v2 +:x: + + Ignored
Envelope GeneratorsegN_timeXSFZ v2 +:heavy_check_mark: + +
Envelope GeneratorsegN_timeX_onccYSFZ v2 +:construction: + +
Envelope GeneratorsegN_levelXSFZ v2 +:heavy_check_mark: + +
Envelope GeneratorsegN_levelX_onccYSFZ v2 +:construction: + +
Envelope GeneratorsegN_ampegARIA +:heavy_check_mark: + +
Envelope GeneratorsegN_dynamicARIA +:x: + +
Envelope GeneratorsegN_shapeXSFZ v2 +:heavy_check_mark: + +
Envelope GeneratorsegN_curveXSFZ v2 +:x: + +
Envelope GeneratorsegN_sustainSFZ v2 +:heavy_check_mark: + +
Envelope GeneratorsegN_loopSFZ v2 +:x: + +
Envelope GeneratorsegN_loop_countSFZ v2 +:x: + +
Envelope GeneratorsegN_volumeSFZ v2 +:heavy_check_mark: + +
Envelope GeneratorsegN_volume_onccXSFZ v2 +:heavy_check_mark: + +
Envelope GeneratorsegN_amplitudeSFZ v2 +:heavy_check_mark: + +
Envelope GeneratorsegN_amplitude_onccXSFZ v2 +:heavy_check_mark: + +
Envelope GeneratorsegN_panSFZ v2 +:heavy_check_mark: + +
Envelope GeneratorsegN_pan_onccXSFZ v2 +:heavy_check_mark: + +
Envelope GeneratorsegN_widthSFZ v2 +:heavy_check_mark: + +
Envelope GeneratorsegN_width_onccXSFZ v2 +:heavy_check_mark: + +
Envelope GeneratorsegN_pan_curveSFZ v2 +:x: + +
Envelope GeneratorsegN_pan_curveccXSFZ v2 +:heavy_check_mark: + +
Envelope GeneratorsegN_freq_lfoXSFZ v2 +:x: + +
Envelope GeneratorsegN_depth_lfoXSFZ v2 +:x: + +
Envelope GeneratorsegN_depthadd_lfoXSFZ v2 +:x: + +
Envelope GeneratorsegN_pitchSFZ v2 +:heavy_check_mark: + +
Envelope GeneratorsegN_pitch_onccXSFZ v2 +:heavy_check_mark: + +
Envelope GeneratorsegN_cutoffSFZ v2 +:heavy_check_mark: + +
Envelope GeneratorsegN_cutoff_onccXSFZ v2 +:heavy_check_mark: + +
Envelope GeneratorsegN_cutoff2SFZ v2 +:heavy_check_mark: + +
Envelope GeneratorsegN_cutoff2_onccXSFZ v2 +:heavy_check_mark: + +
Envelope GeneratorsegN_resonanceSFZ v2 +:heavy_check_mark: + +
Envelope GeneratorsegN_resonance_onccXSFZ v2 +:heavy_check_mark: + +
Envelope GeneratorsegN_resonance2SFZ v2 +:heavy_check_mark: + +
Envelope GeneratorsegN_resonance2_onccXSFZ v2 +:heavy_check_mark: + +
Envelope GeneratorsegN_eqXfreqSFZ v2 +:heavy_check_mark: + +
Envelope GeneratorsegN_eqXfreq_onccYSFZ v2 +:heavy_check_mark: + +
Envelope GeneratorsegN_eqXbwSFZ v2 +:heavy_check_mark: + +
Envelope GeneratorsegN_eqXbw_onccYSFZ v2 +:heavy_check_mark: + +
Envelope GeneratorsegN_eqXgainSFZ v2 +:heavy_check_mark: + +
Envelope GeneratorsegN_eqXgain_onccYSFZ v2 +:heavy_check_mark: + +
Envelope GeneratorsegN_decimSFZ v2 +:x: + +
Envelope GeneratorsegN_decim_onccXSFZ v2 +:x: + +
Envelope GeneratorsegN_bitredSFZ v2 +:x: + +
Envelope GeneratorsegN_bitred_onccXSFZ v2 +:x: + +
Envelope GeneratorsegN_rectifySFZ v2 +:x: + +
Envelope GeneratorsegN_rectify_onccXSFZ v2 +:x: + +
Envelope GeneratorsegN_ringmodSFZ v2 +:x: + +
Envelope GeneratorsegN_ringmod_onccXSFZ v2 +:x: + +
Envelope GeneratorsegN_noiselevelSFZ v2 +:x: + +
Envelope GeneratorsegN_noiselevel_onccXSFZ v2 +:x: + +
Envelope GeneratorsegN_noisestepSFZ v2 +:x: + +
Envelope GeneratorsegN_noisestep_onccXSFZ v2 +:x: + +
Envelope GeneratorsegN_noisetoneSFZ v2 +:x: + +
Envelope GeneratorsegN_noisetone_onccXSFZ v2 +:x: + +
Envelope GeneratorsegN_driveshapeSFZ v2 +:x: + +
Envelope GeneratorsegN_driveshape_onccXSFZ v2 +:x: + +
LFOamplfo_delaySFZ v1 +:heavy_check_mark: + +
LFOamplfo_depthSFZ v1 +:heavy_check_mark: + +
LFOamplfo_depthccNSFZ v1 +:heavy_check_mark: + +
LFOamplfo_depth_onccNSFZ v2 +:heavy_check_mark: + + amplfo_depthccN alias.
LFOamplfo_depthchanaftSFZ v1 +:heavy_check_mark: + +
LFOamplfo_depthpolyaftSFZ v1 +:heavy_check_mark: + +
LFOamplfo_fadeSFZ v1 +:heavy_check_mark: + +
LFOamplfo_freqSFZ v1 +:heavy_check_mark: + +
LFOamplfo_freqccNSFZ v1 +:heavy_check_mark: + +
LFOamplfo_freqchanaftSFZ v1 +:heavy_check_mark: + +
LFOamplfo_freqpolyaftSFZ v1 +:heavy_check_mark: + +
LFOfillfo_delaySFZ v1 +:heavy_check_mark: + +
LFOfillfo_depthSFZ v1 +:heavy_check_mark: + +
LFOfillfo_depthccNSFZ v1 +:heavy_check_mark: + +
LFOfillfo_depth_onccNSFZ v2 +:heavy_check_mark: + + fillfo_depthccN alias.
LFOfillfo_depthchanaftSFZ v1 +:heavy_check_mark: + +
LFOfillfo_depthpolyaftSFZ v1 +:heavy_check_mark: + +
LFOfillfo_fadeSFZ v1 +:heavy_check_mark: + +
LFOfillfo_freqSFZ v1 +:heavy_check_mark: + +
LFOfillfo_freqccNSFZ v1 +:heavy_check_mark: + +
LFOfillfo_freqchanaftSFZ v1 +:heavy_check_mark: + +
LFOfillfo_freqpolyaftSFZ v1 +:heavy_check_mark: + +
LFOpitchlfo_delaySFZ v1 +:heavy_check_mark: + +
LFOpitchlfo_depthSFZ v1 +:heavy_check_mark: + +
LFOpitchlfo_depthccNSFZ v1 +:heavy_check_mark: + +
LFOpitchlfo_depth_onccNSFZ v2 +:heavy_check_mark: + + pitchlfo_depthccN alias.
LFOpitchlfo_depthchanaftSFZ v1 +:heavy_check_mark: + +
LFOpitchlfo_depthpolyaftSFZ v1 +:heavy_check_mark: + +
LFOpitchlfo_fadeSFZ v1 +:heavy_check_mark: + +
LFOpitchlfo_freqSFZ v1 +:heavy_check_mark: + +
LFOpitchlfo_freqccNSFZ v1 +:heavy_check_mark: + +
LFOpitchlfo_freqchanaftSFZ v1 +:heavy_check_mark: + +
LFOpitchlfo_freqpolyaftSFZ v1 +:heavy_check_mark: + +
LFOlfoN_freqSFZ v2 +:heavy_check_mark: + +
LFOlfoN_freq_onccXSFZ v2 +:heavy_check_mark: + +
LFOlfoN_freq_smoothccXSFZ v2 +:heavy_check_mark: + +
LFOlfoN_freq_stepccXSFZ v2 +:heavy_check_mark: + +
LFOlfoN_delaySFZ v2 +:heavy_check_mark: + +
LFOlfoN_delay_onccXSFZ v2 +:heavy_check_mark: + +
LFOlfoN_fadeSFZ v2 +:heavy_check_mark: + +
LFOlfoN_fade_onccXSFZ v2 +:heavy_check_mark: + +
LFOlfoN_phaseSFZ v2 +:heavy_check_mark: + +
LFOlfoN_phase_onccXSFZ v2 +:heavy_check_mark: + +
LFOlfoN_countSFZ v2 +:x: + +
LFOlfoN_waveSFZ v2 +:heavy_check_mark: + +
LFOlfoN_waveXARIA +:heavy_check_mark: + + lfoN_wave alias.
LFOlfoN_wave_onccXARIA +:x: + +
LFOlfoN_stepsSFZ v2 +:heavy_check_mark: + +
LFOlfoN_stepXSFZ v2 +:heavy_check_mark: + +
LFOlfoN_stepX_onccYSFZ v2 +:x: + +
LFOlfoN_smoothSFZ v2 +:x: + +
LFOlfoN_smooth_onccXSFZ v2 +:x: + +
LFOlfoN_volumeSFZ v2 +:heavy_check_mark: + +
LFOlfoN_volume_onccXSFZ v2 +:heavy_check_mark: + +
LFOlfoN_volume_smoothccXSFZ v2 +:heavy_check_mark: + +
LFOlfoN_volume_stepccXSFZ v2 +:heavy_check_mark: + +
LFOlfoN_amplitudeSFZ v2 +:heavy_check_mark: + +
LFOlfoN_amplitude_onccXSFZ v2 +:heavy_check_mark: + +
LFOlfoN_amplitude_smoothccXSFZ v2 +:heavy_check_mark: + +
LFOlfoN_amplitude_stepccXSFZ v2 +:heavy_check_mark: + +
LFOlfoN_panSFZ v2 +:heavy_check_mark: + +
LFOlfoN_pan_onccXSFZ v2 +:heavy_check_mark: + +
LFOlfoN_pan_smoothccXSFZ v2 +:heavy_check_mark: + +
LFOlfoN_pan_stepccXSFZ v2 +:heavy_check_mark: + +
LFOlfoN_widthSFZ v2 +:heavy_check_mark: + +
LFOlfoN_width_onccXSFZ v2 +:heavy_check_mark: + +
LFOlfoN_width_smoothccXSFZ v2 +:heavy_check_mark: + +
LFOlfoN_width_stepccXSFZ v2 +:heavy_check_mark: + +
LFOlfoN_freq_lfoXSFZ v2 +:x: + +
LFOlfoN_freq_lfoX_onccYARIA +:x: + +
LFOlfoN_depth_lfoXSFZ v2 +:x: + +
LFOlfoN_depthadd_lfoXSFZ v2 +:x: + +
LFOlfoN_pitchSFZ v2 +:heavy_check_mark: + +
LFOlfoN_pitch_curveccXSFZ v2 +:heavy_check_mark: + +
LFOlfoN_pitch_onccXSFZ v2 +:heavy_check_mark: + +
LFOlfoN_pitch_smoothccXSFZ v2 +:heavy_check_mark: + +
LFOlfoN_pitch_stepccXSFZ v2 +:heavy_check_mark: + +
LFOlfoN_cutoffSFZ v2 +:heavy_check_mark: + +
LFOlfoN_cutoff2SFZ v2 +:heavy_check_mark: + + lfoN_cutoff alias.
LFOlfoN_cutoff2_onccXSFZ v2 +:heavy_check_mark: + +
LFOlfoN_cutoff2_smoothccXSFZ v2 +:heavy_check_mark: + +
LFOlfoN_cutoff2_stepccXSFZ v2 +:heavy_check_mark: + +
LFOlfoN_cutoff_onccXSFZ v2 +:heavy_check_mark: + +
LFOlfoN_cutoff_smoothccXSFZ v2 +:heavy_check_mark: + +
LFOlfoN_cutoff_stepccXSFZ v2 +:heavy_check_mark: + +
LFOlfoN_resonanceSFZ v2 +:heavy_check_mark: + +
LFOlfoN_resonance2SFZ v2 +:heavy_check_mark: + + lfoN_resonance alias.
LFOlfoN_resonance2_onccXSFZ v2 +:heavy_check_mark: + +
LFOlfoN_resonance2_smoothccXSFZ v2 +:heavy_check_mark: + +
LFOlfoN_resonance2_stepccXSFZ v2 +:heavy_check_mark: + +
LFOlfoN_resonance_onccXSFZ v2 +:heavy_check_mark: + +
LFOlfoN_resonance_smoothccXSFZ v2 +:heavy_check_mark: + +
LFOlfoN_resonance_stepccXSFZ v2 +:heavy_check_mark: + +
LFOlfoN_eqXfreqSFZ v2 +:heavy_check_mark: + +
LFOlfoN_eqXfreq_onccYSFZ v2 +:heavy_check_mark: + +
LFOlfoN_eqXfreq_smoothccYSFZ v2 +:heavy_check_mark: + +
LFOlfoN_eqXfreq_stepccYSFZ v2 +:heavy_check_mark: + +
LFOlfoN_eqXbwSFZ v2 +:heavy_check_mark: + +
LFOlfoN_eqXbw_onccYSFZ v2 +:heavy_check_mark: + +
LFOlfoN_eqXbw_smoothccYSFZ v2 +:heavy_check_mark: + +
LFOlfoN_eqXbw_stepccYSFZ v2 +:heavy_check_mark: + +
LFOlfoN_eqXgainSFZ v2 +:heavy_check_mark: + +
LFOlfoN_eqXgain_onccYSFZ v2 +:heavy_check_mark: + +
LFOlfoN_eqXgain_smoothccYSFZ v2 +:heavy_check_mark: + +
LFOlfoN_eqXgain_stepccYSFZ v2 +:heavy_check_mark: + +
LFOlfoN_decimSFZ v2 +:x: + +
LFOlfoN_decim_onccXSFZ v2 +:x: + +
LFOlfoN_decim_smoothccXSFZ v2 +:x: + +
LFOlfoN_decim_stepccXSFZ v2 +:x: + +
LFOlfoN_bitredSFZ v2 +:x: + +
LFOlfoN_bitred_onccXSFZ v2 +:x: + +
LFOlfoN_bitred_smoothccXSFZ v2 +:x: + +
LFOlfoN_bitred_stepccXSFZ v2 +:x: + +
LFOlfoN_noiselevelSFZ v2 +:x: + +
LFOlfoN_noiselevel_onccXSFZ v2 +:x: + +
LFOlfoN_noiselevel_smoothccXSFZ v2 +:x: + +
LFOlfoN_noiselevel_stepccXSFZ v2 +:x: + +
LFOlfoN_noisestepSFZ v2 +:x: + +
LFOlfoN_noisestep_onccXSFZ v2 +:x: + +
LFOlfoN_noisestep_smoothccXSFZ v2 +:x: + +
LFOlfoN_noisestep_stepccXSFZ v2 +:x: + +
LFOlfoN_noisetoneSFZ v2 +:x: + +
LFOlfoN_noisetone_onccXSFZ v2 +:x: + +
LFOlfoN_noisetone_smoothccXSFZ v2 +:x: + +
LFOlfoN_noisetone_stepccXSFZ v2 +:x: + +
LFOlfoN_driveSFZ v2 +:x: + +
LFOlfoN_drive_onccXSFZ v2 +:x: + +
LFOlfoN_drive_smoothccXSFZ v2 +:x: + +
LFOlfoN_drive_stepccXSFZ v2 +:x: + +
LFOlfoN_offsetARIA +:heavy_check_mark: + +
LFOlfoN_offsetXARIA +:heavy_check_mark: + + lfoN_offset alias.
LFOlfoN_ratioARIA +:heavy_check_mark: + +
LFOlfoN_ratioXARIA +:heavy_check_mark: + + lfoN_ratio alias.
LFOlfoN_scaleARIA +:heavy_check_mark: + +
LFOlfoN_scaleXARIA +:heavy_check_mark: + + lfoN_scale alias.
LFOlfoN_sample_dyn_paramXARIA +:x: + +
LFOlfoN_sample_dyn_paramX_onccYARIA +:x: + +
Curvescurve_indexARIA +:heavy_check_mark: + +
CurvesvNNNSFZ v2 +:x: + +
Effectsapan_depthSFZ v2 +:heavy_check_mark: + +
Effectsapan_depth_onccNSFZ v2 +:x: + +
Effectsapan_drySFZ v2 +:heavy_check_mark: + +
Effectsapan_dry_onccNSFZ v2 +:x: + +
Effectsapan_freqSFZ v2 +:heavy_check_mark: + +
Effectsapan_freq_onccNSFZ v2 +:x: + +
Effectsapan_phaseSFZ v2 +:heavy_check_mark: + +
Effectsapan_phase_onccNSFZ v2 +:x: + +
Effectsapan_waveformSFZ v2 +:x: + +
Effectsapan_wetSFZ v2 +:heavy_check_mark: + +
Effectsapan_wet_onccNSFZ v2 +:x: + +
EffectsbitredSFZ v2 +:heavy_check_mark: + +
Effectsbitred_onccNSFZ v2 +:x: + +
Effectsbitred_curveccNSFZ v2 +:x: + +
Effectsbitred_smoothccNSFZ v2 +:x: + +
Effectsbitred_stepccNSFZ v2 +:x: + +
EffectsbusSFZ v2 +:heavy_check_mark: + +
Effectsbypass_onccNSFZ v2 +:x: + +
Effectscomp_attackSFZ v2 +:heavy_check_mark: + +
Effectscomp_gainSFZ v2 +:heavy_check_mark: + +
Effectscomp_ratioSFZ v2 +:heavy_check_mark: + +
Effectscomp_releaseSFZ v2 +:heavy_check_mark: + +
Effectscomp_stlinkSFZ v2 +:heavy_check_mark: + +
Effectscomp_thresholdSFZ v2 +:heavy_check_mark: + +
EffectsdecimSFZ v2 +:heavy_check_mark: + +
Effectsdecim_onccNSFZ v2 +:x: + +
Effectsdecim_curveccNSFZ v2 +:x: + +
Effectsdecim_smoothccNSFZ v2 +:x: + +
Effectsdecim_stepccNSFZ v2 +:x: + +
Effectsdelay_cutoffSFZ v2 +:x: + +
Effectsdelay_cutoff_onccNSFZ v2 +:x: + +
Effectsdelay_damphiSFZ v2 +:x: + +
Effectsdelay_damphi_onccNSFZ v2 +:x: + +
Effectsdelay_damploSFZ v2 +:x: + +
Effectsdelay_damplo_onccNSFZ v2 +:x: + +
Effectsdelay_drySFZ v2 +:x: + +
Effectsdelay_dry_onccNSFZ v2 +:x: + +
Effectsdelay_feedbackSFZ v2 +:x: + +
Effectsdelay_feedback_onccNSFZ v2 +:x: + +
Effectsdelay_filterSFZ v2 +:x: + +
Effectsdelay_inputSFZ v2 +:x: + +
Effectsdelay_input_onccNSFZ v2 +:x: + +
Effectsdelay_levelcSFZ v2 +:x: + +
Effectsdelay_levellSFZ v2 +:x: + +
Effectsdelay_levelrSFZ v2 +:x: + +
Effectsdelay_lfofreqSFZ v2 +:x: + +
Effectsdelay_lfofreq_onccNSFZ v2 +:x: + +
Effectsdelay_moddepthSFZ v2 +:x: + +
Effectsdelay_moddepth_onccNSFZ v2 +:x: + +
Effectsdelay_modeSFZ v2 +:x: + +
Effectsdelay_pancSFZ v2 +:x: + +
Effectsdelay_panc_onccNSFZ v2 +:x: + +
Effectsdelay_panlSFZ v2 +:x: + +
Effectsdelay_panl_onccNSFZ v2 +:x: + +
Effectsdelay_panrSFZ v2 +:x: + +
Effectsdelay_panr_onccNSFZ v2 +:x: + +
Effectsdelay_resonanceSFZ v2 +:x: + +
Effectsdelay_resonance_onccNSFZ v2 +:x: + +
Effectsdelay_spreadSFZ v2 +:x: + +
Effectsdelay_spread_onccNSFZ v2 +:x: + +
Effectsdelay_syncc_onccNSFZ v2 +:x: + +
Effectsdelay_syncl_onccNSFZ v2 +:x: + +
Effectsdelay_syncr_onccNSFZ v2 +:x: + +
Effectsdelay_time_tapSFZ v2 +:x: + +
Effectsdelay_timecSFZ v2 +:x: + +
Effectsdelay_timec_onccNSFZ v2 +:x: + +
Effectsdelay_timelSFZ v2 +:x: + +
Effectsdelay_timel_onccNSFZ v2 +:x: + +
Effectsdelay_timerSFZ v2 +:x: + +
Effectsdelay_timer_onccNSFZ v2 +:x: + +
Effectsdelay_wetSFZ v2 +:x: + +
Effectsdelay_wet_onccNSFZ v2 +:x: + +
EffectsdirecttomainSFZ v2 +:heavy_check_mark: + +
Effectsdisto_depthSFZ v2 +:x: + +
Effectsdisto_depth_onccNSFZ v2 +:x: + +
Effectsdisto_drySFZ v2 +:x: + +
Effectsdisto_dry_onccNSFZ v2 +:x: + +
Effectsdisto_stagesSFZ v2 +:x: + +
Effectsdisto_toneSFZ v2 +:x: + +
Effectsdisto_tone_onccNSFZ v2 +:x: + +
Effectsdisto_wetSFZ v2 +:x: + +
Effectsdisto_wet_onccNSFZ v2 +:x: + +
Effectsdsp_orderSFZ v2 +:x: + +
Effectseffect1SFZ v1 +:heavy_check_mark: + +
Effectseffect2SFZ v1 +:heavy_check_mark: + +
Effectseffect3SFZ v2 +:heavy_check_mark: + +
Effectseffect4SFZ v2 +:heavy_check_mark: + +
Effectseq_bwSFZ v2 +:heavy_check_mark: + +
Effectseq_bw_onccNSFZ v2 +:x: + +
Effectseq_freqSFZ v2 +:heavy_check_mark: + +
Effectseq_freq_onccNSFZ v2 +:x: + +
Effectseq_gainSFZ v2 +:heavy_check_mark: + +
Effectseq_gain_onccNSFZ v2 +:x: + +
Effectseq_typeSFZ v2 +:x: + +
Effectsfilter_cutoffSFZ v2 +:heavy_check_mark: + +
Effectsfilter_cutoff_onccNSFZ v2 +:x: + +
Effectsfilter_resonanceSFZ v2 +:heavy_check_mark: + +
Effectsfilter_resonance_onccNSFZ v2 +:x: + +
Effectsfilter_typeSFZ v2 +:heavy_check_mark: + +
EffectsfxNtomainSFZ v2 +:heavy_check_mark: + +
EffectsfxNtomixSFZ v2 +:x: + +
Effectsgate_onccNSFZ v2 +:x: + +
Effectsgate_attackSFZ v2 +:heavy_check_mark: + +
Effectsgate_releaseSFZ v2 +:heavy_check_mark: + +
Effectsgate_stlinkSFZ v2 +:heavy_check_mark: + +
Effectsgate_thresholdSFZ v2 +:heavy_check_mark: + +
EffectsinternalSFZ v2 +:x: + +
Effectsparam_offsetARIA +:x: + +
Effectsphaser_depthSFZ v2 +:x: + +
Effectsphaser_depth_onccNSFZ v2 +:x: + +
Effectsphaser_feedbackSFZ v2 +:x: + +
Effectsphaser_feedback_onccNSFZ v2 +:x: + +
Effectsphaser_freqSFZ v2 +:x: + +
Effectsphaser_freq_onccNSFZ v2 +:x: + +
Effectsphaser_phase_onccNSFZ v2 +:x: + +
Effectsphaser_stagesSFZ v2 +:x: + +
Effectsphaser_waveformSFZ v2 +:x: + +
Effectsphaser_wetSFZ v2 +:x: + +
Effectsphaser_wet_onccNSFZ v2 +:x: + +
Effectsreverb_dampSFZ v2 +:heavy_check_mark: + +
Effectsreverb_damp_onccNSFZ v2 +:x: + +
Effectsreverb_drySFZ v2 +:heavy_check_mark: + +
Effectsreverb_dry_onccNSFZ v2 +:x: + +
Effectsreverb_inputSFZ v2 +:heavy_check_mark: + +
Effectsreverb_input_onccNSFZ v2 +:x: + +
Effectsreverb_predelaySFZ v2 +:heavy_check_mark: + +
Effectsreverb_predelay_onccNSFZ v2 +:x: + +
Effectsreverb_sizeSFZ v2 +:heavy_check_mark: + +
Effectsreverb_size_onccNSFZ v2 +:x: + +
Effectsreverb_toneSFZ v2 +:heavy_check_mark: + +
Effectsreverb_tone_onccNSFZ v2 +:x: + +
Effectsreverb_typeSFZ v2 +:heavy_check_mark: + +
Effectsreverb_wetSFZ v2 +:heavy_check_mark: + +
Effectsreverb_wet_onccNSFZ v2 +:x: + +
Effectsstatic_cyclic_levelSFZ v2 +:x: + +
Effectsstatic_cyclic_timeSFZ v2 +:x: + +
Effectsstatic_filterSFZ v2 +:x: + +
Effectsstatic_levelSFZ v2 +:x: + +
Effectsstatic_level_onccNSFZ v2 +:x: + +
Effectsstatic_random_levelSFZ v2 +:x: + +
Effectsstatic_random_maxtimeSFZ v2 +:x: + +
Effectsstatic_random_mintimeSFZ v2 +:x: + +
Effectsstatic_stereoSFZ v2 +:x: + +
Effectsstatic_toneSFZ v2 +:x: + +
Effectsstrings_numberSFZ v2 +:heavy_check_mark: + + Difference of behavior
Effectsstrings_wet_onccNSFZ v2 +:x: + +
Effectstdfir_drySFZ v2 +:x: + +
Effectstdfir_dry_onccNSFZ v2 +:x: + +
Effectstdfir_gainSFZ v2 +:x: + +
Effectstdfir_impulseSFZ v2 +:x: + +
Effectstdfir_wetSFZ v2 +:x: + +
Effectstdfir_wet_onccNSFZ v2 +:x: + +
EffectstypeSFZ v2 +:heavy_check_mark: + +
Effectsvendor_specificARIA +:x: + +
Loadingload_modeSFZ v2 +:x: + +
Loadingload_startSFZ v2 +:x: + +
Loadingload_endSFZ v2 +:x: + +
Loadingsample_qualitySFZ v2 +:heavy_check_mark: + +
LoadingimageSFZ v2 +:heavy_check_mark: + +
Wavetable OscillatoroscillatorSFZ v2 +:heavy_check_mark: + +
Wavetable Oscillatoroscillator_detuneSFZ v2 +:heavy_check_mark: + +
Wavetable Oscillatoroscillator_detune_onccNSFZ v2 +:heavy_check_mark: + +
Wavetable Oscillatoroscillator_modeSFZ v2 +:heavy_check_mark: + + PM and FM same behavior, for now
Wavetable Oscillatoroscillator_mod_depthSFZ v2 +:heavy_check_mark: + +
Wavetable Oscillatoroscillator_mod_depth_onccNSFZ v2 +:heavy_check_mark: + +
Wavetable Oscillatoroscillator_mod_smoothccNSFZ v2 +:x: + +
Wavetable Oscillatoroscillator_multiSFZ v2 +:heavy_check_mark: + +
Wavetable Oscillatoroscillator_phaseSFZ v2 +:heavy_check_mark: + +
Wavetable Oscillatoroscillator_qualitySFZ v2 +:heavy_check_mark: + +
Wavetable Oscillatoroscillator_table_sizeSFZ v2 +:x: + +
Instrument Settingshint_stealingsfizz +:heavy_check_mark: + + Values:
first: steals the first voice found in the arbitrarily sorted list of active voices
envelope_and_age: balances between voice age and their recent envelope level
oldest: returns the oldest voice (default)
Instrument Settingshint_ram_basedsfizz +:heavy_check_mark: + + Values:
1: enabled
0: disabled
Instrument Settingshint_sustain_cancels_releasesfizz +:heavy_check_mark: + + Values:
1: enabled
0: disabled
Recreates a Linuxsampler behavior where pressing the sustain pedal puts the envelopes from release states back to their sustain states
Envelope GeneratorsegN_filXgainsfizz +:heavy_check_mark: + +
Envelope GeneratorsegN_filXgain_onccXsfizz +:heavy_check_mark: + +
Envelope GeneratorsegN_positionsfizz +:heavy_check_mark: + +
Envelope GeneratorsegN_position_onccXsfizz +:heavy_check_mark: + +
LFOamplfo_wavesfizz +:heavy_check_mark: + +
LFOpitchlfo_wavesfizz +:heavy_check_mark: + +
LFOfillfo_wavesfizz +:heavy_check_mark: + +
LFOlfoN_filXgainsfizz +:heavy_check_mark: + +
LFOlfoN_filXgain_onccYsfizz +:heavy_check_mark: + +
LFOlfoN_filXgain_smoothccYsfizz +:heavy_check_mark: + +
LFOlfoN_filXgain_stepccYsfizz +:heavy_check_mark: + +
LFOlfoN_positionsfizz +:heavy_check_mark: + +
LFOlfoN_position_onccXsfizz +:heavy_check_mark: + +
LFOlfoN_position_smoothccXsfizz +:heavy_check_mark: + +
LFOlfoN_position_stepccXsfizz +:heavy_check_mark: + +
Effectsfilter_gainsfizz +:heavy_check_mark: + +
Effectsfilter_gain_onccNsfizz +:x: + +
Effectsstrings_wetsfizz +:heavy_check_mark: + +
Effectsrectify_modesfizz +:heavy_check_mark: + +
Effectsrectifysfizz +:heavy_check_mark: + +
Effectsrectify_onccNsfizz +:x: + +
Effectsgainsfizz +:heavy_check_mark: + +
Effectsgain_onccNsfizz +:x: + +
Effectswidthsfizz +:heavy_check_mark: + +
Effectswidth_onccNsfizz +:x: + +
Effectsgate_holdsfizz +:heavy_check_mark: + +
+
+
+
+ +
+

+
+

+ Copyright © 2019-2024 + SFZTools Organization + + This site is open source. + + Improve this page + +

+
+
+ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfizz/downloads/index.html b/sfizz/downloads/index.html new file mode 100644 index 00000000..ce288ed4 --- /dev/null +++ b/sfizz/downloads/index.html @@ -0,0 +1,728 @@ + + + + + + + + + Downloads - SFZTools + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+
+
+

Downloads

sfizz 1.2.2 - released on August 26, 2023

+

Linux

+ +

Packages for a wide variety of Linux distributions.

+

+ 64-bit Stable + + + 64-bit Current +

+

Windows

+ +

Installers for Microsoft Windows 7 and up, all 64-bit and 32-bit editions.

+

+ 64-bit + + + 32-bit +

+

macOS

+ +

Universal macOS package, for 64-bit Intel and Apple Silicon.

+

+ Universal +

+

Source code

+ +

Archive of the source code, available under a free software license.

+

+ Library source archive +

+

+ Plugins source archive (library included) +

+
+
+
+ +
+

+
+

+ Copyright © 2019-2024 + SFZTools Organization + + This site is open source. + + Improve this page + +

+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfizz/engine_description/index.html b/sfizz/engine_description/index.html new file mode 100644 index 00000000..6129c656 --- /dev/null +++ b/sfizz/engine_description/index.html @@ -0,0 +1,823 @@ + + + + + + + + + The Engine - SFZTools + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+
+
+

The Engine

Global view

+

The sfizz engine is basically a "Synth" object that takes an SFZ file in, +receives MIDI-type events and is able to render audio through successive calls +to a callback function. This is in line with the way most audio applications and +plugins are working. A high-level overview is presented in the following diagram.

+
+graph TD
+A[C and C++ API entry point]
+B[Synth]
+C[1. Region list]
+D[2. Common resources and state

File pool
Envelope pool
LFO pool
Buffer pool
Midi state
...] +E[3. Voice pool] +A --> B +B --> C +B --> D +B --> E +
+ +
    +
  1. +

    Built from the SFZ file

    +Each region is a semi-passive description object that can decide +whether it is "active" or not depending on the chain +of MIDI events it receives. +Once activated, a voice is +chosen to play the region until +it ends naturally or through +note-offs or off-groups.

    +
  2. +
  3. +

    There are a number of common resources that are needed for all the regions +and in particular the voices. +This includes all the (preloaded) files for the SFZ instrument, but will include +in the future the EG and LFOs that are needed to achieve compliance +with the SFZ v2 specification. This will also include a temporary buffer holder +that voices may share. +A common resource of importance is the MIDI state: note durations are needed +for some opcodes -- for example rt_decay -- and triggering velocities too.

    +
  4. +
  5. +

    The voices are the polyphony of the synth. They are idle +and they get activated by the synth to play a region on a specific event. +They are then "linked" to the region while it is played, +and reset to their idle state when they are done playing the region.

    +
  6. +
+

The Synth, Voices and Regions form the bulk of the code complexity. The rest of +the engine is dedicated of mostly helper classes to enable easy management of +floating-point buffers in which the audio data is held, signal processing and +accelerated (SIMD) computations, and abstractions that are specific to the SFZ +format such as envelope generators, curves or LFOs.

+

Parsing the SFZ files

+

The sfz file logic is pretty simple and well defined. +The https://sfzformat.com website contains an extensive documentation on it. +At its core, an SFZ file describes a list of region objects on which a certain +number of "opcodes" will apply. Opcodes can determine the sample played, +the event conditions that will trigger the sample such as the range of notes, +channels, velocities, the processing to apply on the sample while playing, +and many more things. It is also possible to describe a group of regions, +as well as exclusive groups that will shut off other regions that may already +be playing. There are also master groups, and global opcodes +and some other types.

+

All the opcodes are declared within a header, in a pseudo-xml markup language +that looks like this:

+
<global> volume=6
+<control> set_cc4=5
+<region> key=36 sample=kick.wav
+
+

Here we have 3 headers (global, control and region) and each header holds +some opcodes. All of these opcodes have a value --- for example the volume +is equal to 6 in the global header. Some opcodes also have parameters. +The control header holds an opcode set_cc with the parameter 4 and value 5. +The parameter here is the CC to set, and the value at which to set it is 5.

+

The parsing logic of sfizz is handled through a base class called Parser --- a +very original choice. This parser has a virtual callback that gets called +whenever a header description is "complete", along with a list of opcodes that +apply to the header. Subclassing the Parser then allows to build different +SFZ handlers, from full-blown synths as with sfizz to simpler things such as +printers (see in particular https://github.com/sfztools/sfz-flat/). If we look +at the core of the latter example, it will look something like the following:

+
class PrintingParser: public sfz::Parser
+{
+protected:
+    void callback(absl::string_view header, const std::vector<sfz::Opcode>& members) final
+    {
+        switch (hash(header)) // The hash(...) function transforms strings to large integers
+        {
+        case hash("global"): // It is also compile-time defined, which allows to do switch-case
+                             // statements on strings, something that is usually not possible
+            globalMembers = members; // We save the global headers since they apply to the next
+                                     // region (and groups and masters)
+            masterMembers.clear();
+            groupMembers.clear();
+            break;
+        case hash("master"):
+            masterMembers = members; // So on
+            groupMembers.clear();
+            break;
+        case hash("group"):
+            groupMembers = members; // .. and so forth
+            break;
+        case hash("region"):
+            std::cout << "<" << header << ">" << ' '; // Now we print the region along with all the opcodes
+                                                      // we memorized from earlier headers.
+            printMembers(globalMembers);
+            printMembers(masterMembers);
+            printMembers(groupMembers);
+            printMembers(members);
+            std::cout << '\n';
+            break;
+        default:
+            std::cout << "<" << header << ">" << ' ';
+            printMembers(members);
+            std::cout << '\n';
+            break;
+        }
+    }
+private:
+    std::vector<sfz::Opcode> globalMembers;
+    std::vector<sfz::Opcode> masterMembers;
+    std::vector<sfz::Opcode> groupMembers;
+    void printMembers(const std::vector<sfz::Opcode>& members)
+    {
+        for (auto& member: members)
+        {
+            std::cout << member.opcode;
+            if (member.parameter)
+                std::cout << +*member.parameter;
+            std::cout << "=" << member.value;
+            std::cout << ' ';
+        }
+    }
+};
+
+

The main function is then quite straightforward and we call a function +from the Parser class that loads a file

+
PrintingParser parser;
+parser.loadSfzFile("my_sfz_file.sfz");
+
+

If you circle back to the parser you will see that opcodes are stored in an +Opcode class. This class does some parsing itself and separates the opcode +name itself, parameters if any, and the value. Opcodes are very cheap to copy +and pass around because they only refer to characters in the file that are stored +inside the Parser class, so feel free to create vectors of them and move them +around.

+

Note that you may also derive the loadSfzFile() method if you have +any processing you need to do before the actual parsing happens.

+

Building the region list in sfizz

+

The callback method from sfizz is actually quite similar to the one shown above, +except that instead of printing the region we actually fill a big structure from it.

+
+
+
+ +
+

+
+

+ Copyright © 2019-2024 + SFZTools Organization + + This site is open source. + + Improve this page + +

+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfizz/faq/index.html b/sfizz/faq/index.html new file mode 100644 index 00000000..2d0b1ec2 --- /dev/null +++ b/sfizz/faq/index.html @@ -0,0 +1,694 @@ + + + + + + + + + FAQ - SFZTools + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+
+
+

FAQ

SFZ

+

What is it, where and how to

+

Q: What is SFZ? Where I can find some documentation? I would like to make my own instrument.

+

A: You can find the documentation and tutorials on the sfzformat website.

+

Q: Are there some instruments that I can test with sfizz?

+

A: There are various websites where to get free and commercial instruments, +some of the free ones are linked from here, like sfzinstruments and freepats.

+

Supported by sfizz

+

Q: Which opcodes are supported by sfizz?

+

A: The opcode support table can be found here. +It has also some search filters: +- by query string +- by version +- by status (supported, unsupported and work in progress) +- by categories

+

Plugins

+

Linux

+

Q: I can't load any sfz or scala file, selecting the menu / clicking the +button does nothing.

+

A: The file requester depends on the zenity package, which probably is +missing in your system.

+
+
+
+ +
+

+
+

+ Copyright © 2019-2024 + SFZTools Organization + + This site is open source. + + Improve this page + +

+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfizz/index.html b/sfizz/index.html new file mode 100644 index 00000000..b0c5b0d9 --- /dev/null +++ b/sfizz/index.html @@ -0,0 +1,714 @@ + + + + + + + + + Home - SFZTools + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+
+

sfizz is a sample-based musical synthesizer.

+

It features the well-established SFZ instrument format at its core, which permits to use +existing instrument libraries, or create personal instruments with ease.

+

Not only is sfizz ready-to-use as an instrument plugin of its own, the library allows +developers to create instruments of their own, taking advantage of the abilities of SFZ.

+

+ Get sfizz

+ +

Features

+
    +
  • SFZ compatible
  • +
+

sfizz supports SFZv1, and is partially compatible with SFZv2, the current revision of the +instrument specification. The objective is to achieve a high level of SFZ compatibility, +and the quality improves with every release.

+
    +
  • Ready-to-use
  • +
+

The synthesizer is available as audio workstation plugins, +in VST3i, Audio Unit and LV2 formats. +The more advanced users may also use a standalone JACK client.

+
    +
  • For instrument makers
  • +
+

The hot reload ability helps you to design intruments. You are able to edit your custom +instrument and test the change on the fly, without having to interact with the software +manually.

+
    +
  • Low memory footprint
  • +
+

The streaming system loads the sounds on demand, and dynamically reclaims the memory of +sounds which are no longer used. This keeps the RAM memory requirement at minimum.

+

See in action

+

Some artists have demonstrated music creation using sfizz, independently of this project. +You are welcome to watch the media and support their work.

+ +
+
+
+ +
+

+
+

+ Copyright © 2019-2024 + SFZTools Organization + + This site is open source. + + Improve this page + +

+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sfizz/quick_reference/index.html b/sfizz/quick_reference/index.html new file mode 100644 index 00000000..c11ed891 --- /dev/null +++ b/sfizz/quick_reference/index.html @@ -0,0 +1,766 @@ + + + + + + + + + Quick Reference - SFZTools + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+
+
+

Quick Reference

How to do X in sfizz SFZ?

+

This section describes basic use of some SFZ features, illustrated with examples. +Some of these features may be not very widely implemented in SFZ players, or specific to sfizz.

+

Oscillators

+

Basic oscillator

+

The most basic form of oscillator is obtained by using one of the predefined waveforms. +The name *saw provides the sawtooth oscillator.

+
<region>
+sample=*saw
+
+

Detuned oscillator

+

This creates a pair of sawtooth waves. The second sawtooth is detuned by 50 +cents, making the pair create together the impression of a fuller sound.

+
<region>
+sample=*saw
+
+<region>
+sample=*saw
+pitch=50
+
+

quickref-detune-osc

+

Wavetable oscillator

+

This creates an oscillator with a custom waveform, which is loaded from an +audio file. This file contains exactly one period of signal, and its +sample rate is disregarded.

+

One way to create wavetables is to use the WCreate utility. +- Documentation, and Windows software: futur3soundz +- macOS and Linux software: WaveTableTools

+

The example refers to a wave composed of the 6 first harmonics: +WCreate 1024 "x<6" sine_hrm_06.wav

+

The oscillator opcode indicates that we are dealing with a file which is a +wavetable. +Starting with sfizz 0.5.0, oscillator is optional: an audio file with less +than 3000 frames is considered to be a wavetable.

+
<region>
+sample=sine_hrm_06.wav
+oscillator=on
+
+

quickref-wavetable-osc

+

Unison oscillator

+

This creates an array of oscillators which are spread out in gain and frequency +relative to the fundamental, and arranged in opposite fashion in left and right +channels to create a stereo effect.

+

The unison mode is enabled when oscillator_multi is 3 or more, and +oscillator_mode is default or 0.

+

The example creates an array of 5 sawtooth waves, spread using a detuning interval +set to 50 cents. (a "supersaw")

+
<region>
+sample=*saw
+oscillator=on
+oscillator_multi=5
+oscillator_detune=50
+
+

Ring modulation oscillator (experimental)

+

When the opcodes are set to oscillator_mode=0 and oscillator_multi=2, +this configures a pair of oscillators for ring modulation.

+

The modulator, whose frequency is determined by oscillator_detune in cents, +modulates the amplitude of the carrier oscillator, with a depth determined by +oscillator_mod_depth expressed as a percentage.

+
<control>
+set_hdcc21=0.5
+
+<region>
+sample=*saw
+oscillator=on
+oscillator_mode=0
+oscillator_multi=2
+oscillator_detune=25
+oscillator_mod_depth=100
+oscillator_mod_depth_oncc21=100
+
+

FM oscillator (experimental)

+

A 2-operator FM arrangement can be constructed by setting oscillator_mode=2.

+

The frequency of the modulator is determined by oscillator_detune in cents, +and the FM index by oscillator_mod_depth. The depth is expressed as a +percentage, which means that the value 100 represents the FM index 1.0.

+
<control>
+set_cc21=100
+
+<global>
+volume=-3.0
+
+<region>
+sample=*sine
+oscillator=on
+oscillator_mode=2
+oscillator_detune=5
+oscillator_mod_depth=100
+oscillator_mod_depth_oncc21=1000
+
+

Filters

+

Modulation

+

Effects

+
+
+
+ +
+

+
+

+ Copyright © 2019-2024 + SFZTools Organization + + This site is open source. + + Improve this page + +

+
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 00000000..2117c885 --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,158 @@ + + + + https://sfz.tools/ + 2024-01-11 + daily + + + https://sfz.tools/contacts/ + 2024-01-11 + daily + + + https://sfz.tools/faq/ + 2024-01-11 + daily + + + https://sfz.tools/news/ + 2024-01-11 + daily + + + https://sfz.tools/news/posts/2019-06-03-documentation-website/ + 2024-01-11 + daily + + + https://sfz.tools/news/posts/2020-01-30-sfizz-0.2.0-release/ + 2024-01-11 + daily + + + https://sfz.tools/news/posts/2020-02-29-sfizz-0.3.0-release/ + 2024-01-11 + daily + + + https://sfz.tools/news/posts/2020-03-14-sfizz-0.3.1-release/ + 2024-01-11 + daily + + + https://sfz.tools/news/posts/2020-04-03-sfizz-0.3.2-release/ + 2024-01-11 + daily + + + https://sfz.tools/news/posts/2020-07-24-sfizz-0.4.0-release/ + 2024-01-11 + daily + + + https://sfz.tools/news/posts/2020-10-15-sfizz-0.5.0-release/ + 2024-01-11 + daily + + + https://sfz.tools/news/posts/2020-10-25-sfizz-0.5.1-release/ + 2024-01-11 + daily + + + https://sfz.tools/news/posts/2021-04-16-sfizz-1.0.0-release/ + 2024-01-11 + daily + + + https://sfz.tools/news/posts/2021-10-23-sfizz-1.1.0-release/ + 2024-01-11 + daily + + + https://sfz.tools/news/posts/2021-11-08-sfizz-1.1.1-release/ + 2024-01-11 + daily + + + https://sfz.tools/news/posts/2022-01-15-sfizz-1.2.0-release/ + 2024-01-11 + daily + + + https://sfz.tools/news/posts/2023-04-15-sfizz-1.2.1-release/ + 2024-01-11 + daily + + + https://sfz.tools/news/posts/2023-08-26-sfizz-1.2.2-release/ + 2024-01-11 + daily + + + https://sfz.tools/sfizz/ + 2024-01-11 + daily + + + https://sfz.tools/sfizz/downloads/ + 2024-01-11 + daily + + + https://sfz.tools/sfizz/engine_description/ + 2024-01-11 + daily + + + https://sfz.tools/sfizz/faq/ + 2024-01-11 + daily + + + https://sfz.tools/sfizz/quick_reference/ + 2024-01-11 + daily + + + https://sfz.tools/sfizz/api/ + 2024-01-11 + daily + + + https://sfz.tools/sfizz/api/sfizz.h/ + 2024-01-11 + daily + + + https://sfz.tools/sfizz/api/sfizz.hpp/ + 2024-01-11 + daily + + + https://sfz.tools/sfizz/api/sfizz_message.h/ + 2024-01-11 + daily + + + https://sfz.tools/sfizz/development/build/ + 2024-01-11 + daily + + + https://sfz.tools/sfizz/development/build/linux/ + 2024-01-11 + daily + + + https://sfz.tools/sfizz/development/status/ + 2024-01-11 + daily + + + https://sfz.tools/sfizz/development/status/opcodes/ + 2024-01-11 + daily + + \ No newline at end of file diff --git a/sitemap.xml.gz b/sitemap.xml.gz new file mode 100644 index 00000000..6b7cba68 Binary files /dev/null and b/sitemap.xml.gz differ