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..7f7af962 --- /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/fork-awesome.min.css b/assets/css/fork-awesome.min.css new file mode 100644 index 00000000..fd154dc3 --- /dev/null +++ b/assets/css/fork-awesome.min.css @@ -0,0 +1,12 @@ +/*! +Fork Awesome 1.2.0 +License - https://forkaweso.me/Fork-Awesome/license + +Copyright 2018 Dave Gandy & Fork Awesome + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */@font-face{font-family:ForkAwesome;src:url(../fonts/forkawesome-webfont.eot?v=1.2.0);src:url(../fonts/forkawesome-webfont.eot?#iefix&v=1.2.0) format('embedded-opentype'),url(../fonts/forkawesome-webfont.woff2?v=1.2.0) format('woff2'),url(../fonts/forkawesome-webfont.woff?v=1.2.0) format('woff'),url(../fonts/forkawesome-webfont.ttf?v=1.2.0) format('truetype'),url(../fonts/forkawesome-webfont.svg?v=1.2.0#forkawesomeregular) format('svg');font-weight:400;font-style:normal;font-display:block}.fa{display:inline-block;font:normal normal normal 14px/1 ForkAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1,-1);-ms-transform:scale(1,-1);transform:scale(1,-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-close:before,.fa-remove:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-repeat:before,.fa-rotate-right:before{content:"\f01e"}.fa-refresh:before,.fa-sync:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before,.fa-video:before{content:"\f03d"}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-exclamation-triangle:before,.fa-warning:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell-o:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-globe-e:before{content:"\f304"}.fa-globe-w:before{content:"\f305"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-community:before,.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-floppy-o:before,.fa-save:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus-g:before,.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-bolt:before,.fa-flash:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-clipboard:before,.fa-paste:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before,.fa-utensils:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-chain-broken:before,.fa-unlink:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:"\f150"}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:"\f151"}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:"\f152"}.fa-eur:before,.fa-euro:before{content:"\f153"}.fa-gbp:before,.fa-pound:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-inr:before,.fa-rupee:before{content:"\f156"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:"\f157"}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:"\f158"}.fa-krw:before,.fa-won:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before,.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-desc:before,.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-amount-asc:before,.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-desc:before,.fa-sort-amount-up:before{content:"\f161"}.fa-sort-numeric-asc:before,.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-desc:before,.fa-sort-numeric-up:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-try:before,.fa-turkish-lira:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-bank:before,.fa-institution:before,.fa-university:before{content:"\f19c"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before,.fa-utensil-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:"\f1c5"}.fa-file-archive-o:before,.fa-file-zip-o:before{content:"\f1c6"}.fa-file-audio-o:before,.fa-file-sound-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before,.fa-resistance:before{content:"\f1d0"}.fa-empire:before,.fa-ge:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-paper-plane:before,.fa-send:before{content:"\f1d8"}.fa-paper-plane-o:before,.fa-send-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before,.fa-heading:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before,.fa-closed-captioning:before{content:"\f20a"}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before,.fa-gem:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-bed:before,.fa-hotel:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-medium-square:before{content:"\f2f8"}.fa-y-combinator:before,.fa-yc:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery-full:before,.fa-battery:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-paper-o:before,.fa-hand-stop-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-television:before,.fa-tv:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo-v:before,.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-phone-volume:before,.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before{content:"\f2a3"}.fa-deaf:before,.fa-deafness:before,.fa-hard-of-hearing:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-sign-language:before,.fa-signing:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-address-card:before,.fa-vcard:before{content:"\f2bb"}.fa-address-card-o:before,.fa-vcard-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer-full:before,.fa-thermometer:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bath:before,.fa-bathtub:before,.fa-s15:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.fa-mastodon:before{content:"\f2e1"}.fa-mastodon-alt:before{content:"\f2e2"}.fa-fork-awesome:before,.fa-fork-circle:before{content:"\f2e3"}.fa-peertube:before{content:"\f2e4"}.fa-diaspora:before{content:"\f2e5"}.fa-friendica:before{content:"\f2e6"}.fa-gnu-social:before{content:"\f2e7"}.fa-liberapay-square:before{content:"\f2e8"}.fa-liberapay:before{content:"\f2e9"}.fa-scuttlebutt:before,.fa-ssb:before{content:"\f2ea"}.fa-hubzilla:before{content:"\f2eb"}.fa-social-home:before{content:"\f2ec"}.fa-artstation:before{content:"\f2ed"}.fa-discord:before{content:"\f2ee"}.fa-discord-alt:before{content:"\f2ef"}.fa-patreon:before{content:"\f2f0"}.fa-snowdrift:before{content:"\f2f1"}.fa-activitypub:before{content:"\f2f2"}.fa-ethereum:before{content:"\f2f3"}.fa-keybase:before{content:"\f2f4"}.fa-shaarli:before{content:"\f2f5"}.fa-shaarli-o:before{content:"\f2f6"}.fa-cut-key:before,.fa-key-modern:before{content:"\f2f7"}.fa-xmpp:before{content:"\f2f9"}.fa-archive-org:before{content:"\f2fc"}.fa-freedombox:before{content:"\f2fd"}.fa-facebook-messenger:before{content:"\f2fe"}.fa-debian:before{content:"\f2ff"}.fa-mastodon-square:before{content:"\f300"}.fa-tipeee:before{content:"\f301"}.fa-react:before{content:"\f302"}.fa-dogmazic:before{content:"\f303"}.fa-zotero:before{content:"\f309"}.fa-nodejs:before{content:"\f308"}.fa-nextcloud:before{content:"\f306"}.fa-nextcloud-square:before{content:"\f307"}.fa-hackaday:before{content:"\f30a"}.fa-laravel:before{content:"\f30b"}.fa-signalapp:before{content:"\f30c"}.fa-gnupg:before{content:"\f30d"}.fa-php:before{content:"\f30e"}.fa-ffmpeg:before{content:"\f30f"}.fa-joplin:before{content:"\f310"}.fa-syncthing:before{content:"\f311"}.fa-inkscape:before{content:"\f312"}.fa-matrix-org:before{content:"\f313"}.fa-pixelfed:before{content:"\f314"}.fa-bootstrap:before{content:"\f315"}.fa-dev-to:before{content:"\f316"}.fa-hashnode:before{content:"\f317"}.fa-jirafeau:before{content:"\f318"}.fa-emby:before{content:"\f319"}.fa-wikidata:before{content:"\f31a"}.fa-gimp:before{content:"\f31b"}.fa-c:before{content:"\f31c"}.fa-digitalocean:before{content:"\f31d"}.fa-att:before{content:"\f31e"}.fa-gitea:before{content:"\f31f"}.fa-file-epub:before{content:"\f321"}.fa-python:before{content:"\f322"}.fa-archlinux:before{content:"\f323"}.fa-pleroma:before{content:"\f324"}.fa-unsplash:before{content:"\f325"}.fa-hackster:before{content:"\f326"}.fa-spell-check:before{content:"\f327"}.fa-moon:before{content:"\f328"}.fa-sun:before{content:"\f329"}.fa-f-droid:before{content:"\f32a"}.fa-biometric:before{content:"\f32b"}.fa-wire:before{content:"\f32c"}.fa-tor-onion:before{content:"\f32e"}.fa-volume-mute:before{content:"\f32f"}.fa-bell-ringing:before{content:"\f32d"}.fa-bell-ringing-o:before{content:"\f330"}.fa-hal:before{content:"\f333"}.fa-jupyter:before{content:"\f335"}.fa-julia:before{content:"\f334"}.fa-classicpress:before{content:"\f331"}.fa-classicpress-circle:before{content:"\f332"}.fa-open-collective:before{content:"\f336"}.fa-orcid:before{content:"\f337"}.fa-researchgate:before{content:"\f338"}.fa-funkwhale:before{content:"\f339"}.fa-askfm:before{content:"\f33a"}.fa-blockstack:before{content:"\f33b"}.fa-boardgamegeek:before{content:"\f33c"}.fa-bunny:before{content:"\f35f"}.fa-buymeacoffee:before{content:"\f33d"}.fa-cc-by:before{content:"\f33e"}.fa-cc-cc:before,.fa-creative-commons-alt:before{content:"\f33f"}.fa-cc-nc-eu:before{content:"\f341"}.fa-cc-nc-jp:before{content:"\f342"}.fa-cc-nc:before{content:"\f340"}.fa-cc-nd:before{content:"\f343"}.fa-cc-pd:before{content:"\f344"}.fa-cc-remix:before{content:"\f345"}.fa-cc-sa:before{content:"\f346"}.fa-cc-share:before{content:"\f347"}.fa-cc-zero:before{content:"\f348"}.fa-conway-glider:before,.fa-conway-hacker:before{content:"\f349"}.fa-csharp:before{content:"\f34a"}.fa-email-bulk:before{content:"\f34b"}.fa-email-bulk-o:before{content:"\f34c"}.fa-gnu:before{content:"\f34d"}.fa-google-play:before{content:"\f34e"}.fa-heroku:before{content:"\f34f"}.fa-hassio:before,.fa-home-assistant:before{content:"\f350"}.fa-java:before{content:"\f351"}.fa-mariadb:before{content:"\f352"}.fa-markdown:before{content:"\f353"}.fa-mysql:before{content:"\f354"}.fa-nordcast:before{content:"\f355"}.fa-plume:before{content:"\f356"}.fa-postgresql:before{content:"\f357"}.fa-sass-alt:before{content:"\f359"}.fa-sass:before{content:"\f358"}.fa-skate:before{content:"\f35a"}.fa-sketchfab:before{content:"\f35b"}.fa-tex:before{content:"\f35c"}.fa-textpattern:before{content:"\f35d"}.fa-unity:before{content:"\f35e"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}/*# sourceMappingURL=fork-awesome.min.css.map */ \ No newline at end of file diff --git a/assets/css/fork-awesome.min.css.map b/assets/css/fork-awesome.min.css.map new file mode 100644 index 00000000..6aa141d4 --- /dev/null +++ b/assets/css/fork-awesome.min.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["fork-awesome.css"],"names":[],"mappings":"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"} \ 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..0dae8f39 --- /dev/null +++ b/assets/css/github-dark-dimmed.min.css @@ -0,0 +1,15 @@ +/** + * Skipped minification because the original files appears to be already minified. + * Original file: /npm/highlight.js@11.8.0/styles/github-dark-dimmed.css + * + * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files + */ +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..f13f3fab --- /dev/null +++ b/assets/css/github.min.css @@ -0,0 +1,16 @@ +/** + * Skipped minification because the original files appears to be already minified. + * Original file: /npm/highlight.js@11.8.0/styles/github.css + * + * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files + */ +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..540a144e --- /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}pre{border:2px solid rgba(0,0,0,0.2);border-radius:0.50rem}#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)}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}[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="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}.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%}} + +/*# 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..ebb906f7 --- /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,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,SAAS,AAAA,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAE,AAAD,AAAA,SAAS,AAAA,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAE,AAAD,AAAA,aAAa,CAAC,QAAQ,AAAA,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAE,AAAD,AAAA,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,AAAA,CAAC,UAAU,CAAC,CAAC,CAAE,AAAD,MAAM,mBAAoB,CAAA,AAAA,aAAa,CAAC,QAAQ,AAAA,CAAC,OAAO,CAAC,KAAK,CAAE,CAAD,AAAC,AAAA,cAAc,CAAC,SAAS,AAAA,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAE,AAAD,AAAA,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,AAAA,CAAC,KAAK,CAAC,0BAA0B,CAAE,AAAD,AAAA,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,AAAA,CAAC,OAAO,CAAC,CAAC,CAAE,AAAD,AAAA,cAAc,AAAA,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAE,AAAD,AAAA,mBAAmB,AAAA,CAAC,SAAS,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAE,AAAD,AAAA,sBAAsB,AAAA,CAAC,SAAS,CAAC,sBAAsB,CAAE,AAAD,MAAM,oBAAqB,CAAA,AAAA,sBAAsB,AAAA,CAAC,SAAS,CAAC,MAAM,CAAE,CAAD,AAAC,AAAA,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAP,IAAI,CpDEll3C,GAAG,CoDFml3C,IAAI,CAAC,EAAE,CAAP,IAAI,CpDM1l3C,GAAG,CoDN2l3C,IAAI,CAAC,EAAE,CAAP,IAAI,CpDUlm3C,GAAG,CoDVmm3C,IAAI,EAAC,AAAA,QAAC,CAAS,GAAG,AAAZ,CAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAE,CAAA,AAAD,IAAK,EAAC,AAAA,aAAC,CAAc,OAAO,AAArB,CAAsB,CAAC,QAAQ,CAAA,QAAC,CAAS,QAAQ,CAAA,QAAC,CAAS,QAAQ,CAAA,KAAC,CAAM,QAAQ,CAAA,KAAC,CAAM,QAAQ,CAAA,KAAC,CAAM,QAAQ,CAAA,QAAC,CAAS,QAAQ,CAAA,QAAC,CAAS,QAAQ,CAAA,QAAC,CAAS,QAAQ,CAAA,QAAC,CAAS,QAAQ,CAAA,QAAC,CAAS,QAAQ,CAAA,QAAC,CAAS,QAAQ,CAAA,QAAC,CAAS,QAAQ,CAAA,QAAC,CAAS,QAAQ,CAAA,KAAC,CAAO,CAAD,AAAA,AAAA,aAAC,CAAc,MAAM,AAApB,CAAqB,CAAC,QAAQ,CAAA,QAAC,CAAS,QAAQ,CAAA,QAAC,CAAS,QAAQ,CAAA,QAAC,CAAS,QAAQ,CAAA,QAAC,CAAS,QAAQ,CAAA,QAAC,CAAS,QAAQ,CAAA,QAAC,CAAS,QAAQ,CAAA,QAAC,CAAS,QAAQ,CAAA,QAAC,CAAS,QAAQ,CAAA,QAAC,CAAS,QAAQ,CAAA,QAAC,CAAS,QAAQ,CAAA,QAAC,CAAS,QAAQ,CAAA,QAAC,CAAS,QAAQ,CAAA,QAAC,CAAS,QAAQ,CAAA,QAAC,CAAU,AAAD,AAAA,GAAG,AAAA,CAAC,gBAAgB,CAAC,aAAa,CAAE,AAAD,AAAA,EAAE,AAAA,CAAC,KAAK,CAAC,aAAa,CAAE,AAAD,AAAA,IAAI,AAAA,CAAC,KAAK,CAAC,aAAa,CAAE,AAAD,AAAA,EAAE,AAAA,CAAC,KAAK,CAAC,aAAa,CAAE,AAAD,AAAA,EAAE,AAAA,CAAC,KAAK,CAAC,eAAe,CAAE,AAAD,AAAA,EAAE,AAAA,CAAC,KAAK,CAAC,aAAa,CAAE,AAAD,AAAA,EAAE,AAAA,CAAC,KAAK,CAAC,aAAa,CAAE,AAAD,AAAA,EAAE,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,UAAU,CAAC,MAAM,CAAE,AAAD,AAAA,GAAG,AAAA,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAE,AAAD,AAAA,GAAG,AAAA,CAAC,KAAK,CAAC,iBAAiB,CAAE,AAAD,AAAA,GAAG,AAAA,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAE,AAAD,AAAA,GAAG,AAAA,CAAC,WAAW,CAAC,GAAG,CAAE,AAAD,AAAA,GAAG,AAAA,CAAC,WAAW,CAAC,GAAG,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,aAAa,CAAE,AAAD,AAAA,EAAE,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,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/logo-white.svg b/assets/img/logo-white.svg new file mode 100644 index 00000000..da6a938c --- /dev/null +++ b/assets/img/logo-white.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..f701bfe9 --- /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-2023 + 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..a9623aae --- /dev/null +++ b/faq/index.html @@ -0,0 +1,672 @@ + + + + + + + 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-2023 + 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..1e3d85d2 --- /dev/null +++ b/index.html @@ -0,0 +1,666 @@ + + + + + + + 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-2023 + 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..f40396d2 --- /dev/null +++ b/news/index.html @@ -0,0 +1,1783 @@ + + + + + + + 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-2023 + 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..e3ecb387 --- /dev/null +++ b/news/posts/2019-06-03-documentation-website/index.html @@ -0,0 +1,667 @@ + + + + + + + Documentation Website - + + SFZTools + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+
+

Documentation Website

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

+ +
+
+ +

+
+

+ Copyright © 2019-2023 + 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..6167a29e --- /dev/null +++ b/news/posts/2020-01-30-sfizz-0.2.0-release/index.html @@ -0,0 +1,680 @@ + + + + + + + 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-2023 + 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..38e36534 --- /dev/null +++ b/news/posts/2020-02-29-sfizz-0.3.0-release/index.html @@ -0,0 +1,689 @@ + + + + + + + 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-2023 + 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..56b9c905 --- /dev/null +++ b/news/posts/2020-03-14-sfizz-0.3.1-release/index.html @@ -0,0 +1,685 @@ + + + + + + + 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-2023 + 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..a809b46a --- /dev/null +++ b/news/posts/2020-04-03-sfizz-0.3.2-release/index.html @@ -0,0 +1,680 @@ + + + + + + + sfizz 0.3.2 release - + + SFZTools + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+
+

+ Copyright © 2019-2023 + 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..80784b5c --- /dev/null +++ b/news/posts/2020-07-24-sfizz-0.4.0-release/index.html @@ -0,0 +1,740 @@ + + + + + + + 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-2023 + 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..9b4f7e17 --- /dev/null +++ b/news/posts/2020-10-15-sfizz-0.5.0-release/index.html @@ -0,0 +1,750 @@ + + + + + + + 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-2023 + 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..25bd638e --- /dev/null +++ b/news/posts/2020-10-25-sfizz-0.5.1-release/index.html @@ -0,0 +1,691 @@ + + + + + + + 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-2023 + 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..d3381206 --- /dev/null +++ b/news/posts/2021-04-16-sfizz-1.0.0-release/index.html @@ -0,0 +1,784 @@ + + + + + + + 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-2023 + 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..dfbeb7d1 --- /dev/null +++ b/news/posts/2021-10-23-sfizz-1.1.0-release/index.html @@ -0,0 +1,714 @@ + + + + + + + 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-2023 + 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..f208eaa8 --- /dev/null +++ b/news/posts/2021-11-08-sfizz-1.1.1-release/index.html @@ -0,0 +1,675 @@ + + + + + + + sfizz 1.1.1 release - + + SFZTools + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+
+ +
+ +

+
+

+ Copyright © 2019-2023 + 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..7f6c6cae --- /dev/null +++ b/news/posts/2022-01-15-sfizz-1.2.0-release/index.html @@ -0,0 +1,701 @@ + + + + + + + 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-2023 + 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..2a9e845e --- /dev/null +++ b/news/posts/2023-04-15-sfizz-1.2.1-release/index.html @@ -0,0 +1,698 @@ + + + + + + + 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-2023 + 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..21ba5289 --- /dev/null +++ b/news/posts/2023-08-26-sfizz-1.2.2-release/index.html @@ -0,0 +1,732 @@ + + + + + + + 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-2023 + 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..0f84b553 --- /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":"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 { } Oversampling factor. Since 0.2.0 sfizz_process_mode_t enum sfizz_process_mode_t { } 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 synth The 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 synth The 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 synth The synth. path A 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 synth The synth. path The virtual path of the SFZ file. text The 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 synth The synth. path The 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 synth The synth. text The 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 , int root_key ) Sets the scala root key. Parameters synth The synth. root_key The 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 synth The 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 , float frequency ) Sets the reference tuning frequency. Parameters synth The synth. frequency The 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 synth The 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 , float ratio ) 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 synth The synth. ratio The 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 synth The 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 synth The 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 synth The 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 synth The 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 synth The synth. model The 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 synth The 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 synth The synth. Since 0.2.0 sfizz_set_samples_per_block SFIZZ_EXPORTED_API void sfizz_set_samples_per_block ( sfizz_synth_t * synth , int samples_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 synth The synth. samples_per_block The 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 , float sample_rate ) Set the sample rate for the synth. This is the output sample rate. This setting does not affect the internal processing. Parameters synth The synth sample_rate The sample rate. Since 0.2.0 sfizz_send_note_on SFIZZ_EXPORTED_API void sfizz_send_note_on ( sfizz_synth_t * synth , int delay , int note_number , int velocity ) 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 synth The synth. delay The delay of the event in the block, in samples. note_number The MIDI note number, in domain 0 to 127. velocity The 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 , int delay , int note_number , float velocity ) 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 synth The synth. delay The delay of the event in the block, in samples. note_number The MIDI note number, in domain 0 to 127. velocity The 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 , int delay , int note_number , int velocity ) 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 synth The synth. delay The delay of the event in the block, in samples. note_number The MIDI note number, in domain 0 to 127. velocity The 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 , int delay , int note_number , float velocity ) 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 synth The synth. delay The delay of the event in the block, in samples. note_number The MIDI note number, in domain 0 to 127. velocity The 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 , int delay , int cc_number , int cc_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 synth The synth. delay The delay of the event in the block, in samples. cc_number The MIDI CC number, in domain 0 to 127. cc_value The 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 , int delay , int cc_number , float norm_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 synth The synth. delay The delay of the event in the block, in samples. cc_number The MIDI CC number, in domain 0 to 127. norm_value The 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 , int delay , int cc_number , float norm_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 synth The synth. delay The delay of the event in the block, in samples. cc_number The MIDI CC number, in domain 0 to 127. norm_value The 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 , int delay , int pitch ) 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 synth The synth. delay The delay. pitch The pitch. Since 0.2.0 sfizz_send_hd_pitch_wheel SFIZZ_EXPORTED_API void sfizz_send_hd_pitch_wheel ( sfizz_synth_t * synth , int delay , float pitch ) 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 synth The synth. delay The delay. pitch The 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 , int delay , int aftertouch ) 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 synth The synth. delay The delay at which the event occurs; this should be lower than the size of the block in the next call to sfizz_render_block() . aftertouch The 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 , int delay , int aftertouch ) 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 synth The synth. delay The delay at which the event occurs; this should be lower than the size of the block in the next call to sfizz_render_block() . aftertouch The 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 , int delay , float aftertouch ) 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 synth The synth. delay The delay at which the event occurs; this should be lower than the size of the block in the next call to sfizz_render_block() . aftertouch The 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 , int delay , int note_number , int aftertouch ) 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 synth The synth. delay The 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_number The note number, in domain 0 to 127. aftertouch The 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 , int delay , int note_number , float aftertouch ) 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 synth The synth. delay The 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_number The note number, in domain 0 to 127. aftertouch The 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 , int delay , float seconds_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 synth The synth. delay The delay. seconds_per_beat The seconds per beat. Since 0.2.0 sfizz_send_bpm_tempo SFIZZ_EXPORTED_API void sfizz_send_bpm_tempo ( sfizz_synth_t * synth , int delay , float beats_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 synth The synth. delay The delay. beats_per_minute The 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 , int delay , int beats_per_bar , int beat_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 synth The synth. delay The delay. beats_per_bar The number of beats per bar, or time signature numerator. beat_unit The 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 , int delay , int bar , double bar_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 synth The synth. delay The delay. bar The current bar. bar_beat The 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 , int delay , int playback_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 synth The synth. delay The delay. playback_state The 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 , int num_channels , int num_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 synth The synth. channels Pointers to the left and right channel of the output. num_channels Should be equal to 2 for the time being. num_frames Number 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 synth The synth. Since 0.2.0 sfizz_set_preload_size SFIZZ_EXPORTED_API void sfizz_set_preload_size ( sfizz_synth_t * synth , unsigned int preload_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 synth The synth. preload_size The 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 synth The synth. Since 0.2.0 sfizz_set_oversampling_factor SFIZZ_EXPORTED_API bool sfizz_set_oversampling_factor ( sfizz_synth_t * synth , sfizz_oversampling_factor_t oversampling ) Set the internal oversampling rate. As of 1.0, This is an inactive stub for future work on oversampling in the engine. Parameters synth The synth. oversampling The 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_t mode ) 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 synth The synth. mode The 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_t mode , int quality ) 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 synth The synth. mode The processing mode. quality The 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_t mode ) 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 synth The synth. mode The 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_t mode , int quality ) 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 synth The synth. mode The processing mode. quality The 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 , float volume ) Set the global instrument volume. Parameters synth The synth. volume The 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 synth The synth. Since 0.2.0 sfizz_set_num_voices SFIZZ_EXPORTED_API void sfizz_set_num_voices ( sfizz_synth_t * synth , int num_voices ) Set the number of voices used by the synth. Parameters synth The synth. num_voices The 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 synth The 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 synth The 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 synth The 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 synth The 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 synth The 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 synth The 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 synth The 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 synth The 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 synth The synth. prefix The 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 synth The 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 synth The synth. prefix The 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 synth The 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 synth The synth. id The definition variable name. value The 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 synth The 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 synth The synth. Since 0.4.0 sfizz_get_key_label_number SFIZZ_EXPORTED_API int sfizz_get_key_label_number ( sfizz_synth_t * synth , int label_index ) Get the key number for the label registered at index label_index. Parameters synth The synth. label_index The 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 , int label_index ) Get the key text for the label registered at index label_index. Parameters synth The synth. label_index The 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 synth The synth. Since 0.4.0 sfizz_get_cc_label_number SFIZZ_EXPORTED_API int sfizz_get_cc_label_number ( sfizz_synth_t * synth , int label_index ) Get the CC number for the label registered at index label_index. Parameters synth The synth. label_index The 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 , int label_index ) Get the CC text for the label registered at index label_index. Parameters synth The synth. label_index The 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 ptr The 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 data The 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 client The 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 client The 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 client The client. receive The 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 , int delay , const char * path , const char * sig , const sfizz_arg_t * args ) Send a message to the synth engine. Parameters synth The synth. client The client sending the message. delay The delay of the message in the block, in samples. path The OSC address pattern. sig The OSC type tag string. args The 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 synth The synth. broadcast The pointer to the receiving function. data The opaque data pointer which is passed to the receiver. Since 1.0.0","title":"sfizz.h"},{"location":"sfizz/api/sfizz.hpp/","text":"sfz::Sfizz Class Reference #include Synthesizer for SFZ instruments. Public Types ProcessMode enum ProcessMode { } Processing mode. Since 0.4.0 Public Member Functions Sfizz Sfizz ( ) Construct a new Sfizz object. The synth by default is set at 48 kHz and a block size of 1024. You should change these values if they are not suited to your application. ~Sfizz ~Sfizz ( ) Sfizz Sfizz ( Sfizz && other ) Move constructor. Parameters other operator= Sfizz & operator= ( Sfizz && other ) Move assignment operator. Parameters other Sfizz Sfizz ( const Sfizz & other ) Parameters other operator= Sfizz & operator= ( const Sfizz & other ) Parameters other Sfizz Sfizz ( sfizz_synth_t * synth ) Reference an existing synth handle. Parameters synth handle sfizz_synth_t * handle ( ) Get the synth handle. loadSfzFile bool loadSfzFile ( const std::string & path ) Empties the current regions and load a new SFZ file into the synth. Parameters path The path to the file to load, as string. Returns false if the file was not found or no regions were loaded, true otherwise. Since 0.2.0 loadSfzString bool loadSfzString ( const std::string & path , const std::string & text ) Empties the current regions and load a new SFZ document from memory. This is similar to loadSfzFile() in functionality. 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 path The virtual path of the SFZ file, as string. text The contents of the virtual SFZ file. Returns false if no regions were loaded, true otherwise. Since 0.4.0 loadScalaFile bool loadScalaFile ( const std::string & path ) Sets the tuning from a Scala file loaded from the file system. Parameters path The path to the file in Scala format. Returns true when tuning scale loaded OK, false if some error occurred. Since 0.4.0 loadScalaString bool loadScalaString ( const std::string & text ) Sets the tuning from a Scala file loaded from memory. Parameters text The contents of the file in Scala format. Returns true when tuning scale loaded OK, false if some error occurred. Since 0.4.0 setScalaRootKey void setScalaRootKey ( int rootKey ) Sets the scala root key. Parameters rootKey The MIDI number of the Scala root key (default 60 for C4). Since 0.4.0 getScalaRootKey int getScalaRootKey ( ) Gets the scala root key. Returns The MIDI number of the Scala root key (default 60 for C4). Since 0.4.0 setTuningFrequency void setTuningFrequency ( float frequency ) Sets the reference tuning frequency. Parameters frequency The frequency which indicates where standard tuning A4 is (default 440 Hz). Since 0.4.0 getTuningFrequency float getTuningFrequency ( ) Gets the reference tuning frequency. Returns The frequency which indicates where standard tuning A4 is (default 440 Hz). Since 0.4.0 loadStretchTuningByRatio void loadStretchTuningByRatio ( float ratio ) 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 ratio The parameter in domain 0-1. Since 0.4.0 getNumRegions int getNumRegions ( ) Return the current number of regions loaded. Since 0.2.0 getNumGroups int getNumGroups ( ) Return the current number of groups loaded. Since 0.2.0 getNumMasters int getNumMasters ( ) Return the current number of masters loaded. Since 0.2.0 getNumCurves int getNumCurves ( ) Return the current number of curves loaded. Since 0.2.0 getUnknownOpcodes const std::vector < std::string > & getUnknownOpcodes ( ) Return a list of unsupported opcodes, if any. Since 0.2.0 getNumPreloadedSamples size_t getNumPreloadedSamples ( ) Return the number of preloaded samples in the synth. Since 0.2.0 setSamplesPerBlock void setSamplesPerBlock ( int samplesPerBlock ) Set the maximum size of the blocks for the callback. The actual size can be lower in each callback but should not be larger than this value. Parameters samplesPerBlock The number of samples per block. Since 0.2.0 setSampleRate void setSampleRate ( float sampleRate ) Set the sample rate. If you do not call it it is initialized to sfz::config::defaultSampleRate . Parameters sampleRate The sample rate. Since 0.2.0 getSampleQuality int getSampleQuality ( ProcessMode mode ) 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 mode The processing mode. Returns The sample quality for the given mode, in the range 0 to 10. Since 0.4.0 setSampleQuality void setSampleQuality ( ProcessMode mode , int quality ) 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 mode The processing mode. quality The desired sample quality, in the range 0 to 10. Since 0.4.0 getOscillatorQuality int getOscillatorQuality ( ProcessMode mode ) 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 mode The processing mode. Returns The oscillator quality for the given mode, in the range 0 to 3. Since 1.0.0 setOscillatorQuality void setOscillatorQuality ( ProcessMode mode , int quality ) 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 mode The processing mode. quality The desired oscillator quality, in the range 0 to 3. Since 1.0.0 getVolume float getVolume ( ) Return the current value for the volume, in dB. Since 0.2.0 setVolume void setVolume ( float volume ) Set the value for the volume. This value will be clamped within sfz::default::volumeRange . Parameters volume The new volume. Since 0.2.0 noteOn void noteOn ( int delay , int noteNumber , int velocity ) 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 delay the delay at which the event occurs; this should be lower than the size of the block in the next call to renderBlock() . noteNumber the midi note number, in domain 0 to 127. velocity the midi note velocity, in domain 0 to 127. Since 0.2.0 hdNoteOn void hdNoteOn ( int delay , int noteNumber , float velocity ) Send a high-precision 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 delay the delay at which the event occurs; this should be lower than the size of the block in the next call to renderBlock() . noteNumber the midi note number, in domain 0 to 127. velocity the normalized midi note velocity, in domain 0 to 1. Since 1.0.0 noteOff void noteOff ( int delay , int noteNumber , int velocity ) 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 delay the delay at which the event occurs; this should be lower than the size of the block in the next call to renderBlock() . noteNumber the midi note number, in domain 0 to 127. velocity the midi note velocity, in domain 0 to 127. Since 0.2.0 hdNoteOff void hdNoteOff ( int delay , int noteNumber , float velocity ) 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 delay the delay at which the event occurs; this should be lower than the size of the block in the next call to renderBlock() . noteNumber the midi note number, in domain 0 to 127. velocity the normalized midi note velocity, in domain 0 to 1. Since 1.0.0 cc void cc ( int delay , int ccNumber , int ccValue ) 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 delay the delay at which the event occurs; this should be lower than the size of the block in the next call to renderBlock() . ccNumber the cc number, in domain 0 to 127. ccValue the cc value, in domain 0 to 127. Since 0.2.0 hdcc void hdcc ( int delay , int ccNumber , float normValue ) 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 delay the delay at which the event occurs; this should be lower than the size of the block in the next call to renderBlock() . ccNumber the cc number, in domain 0 to 127. normValue the normalized cc value, in domain 0 to 1. Since 0.4.0 automateHdcc void automateHdcc ( int delay , int ccNumber , float normValue ) 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 delay the delay at which the event occurs; this should be lower than the size of the block in the next call to renderBlock() . ccNumber the cc number, in domain 0 to 127. normValue the normalized cc value, in domain 0 to 1. Since 1.0.0 pitchWheel void pitchWheel ( int delay , int pitch ) Send a pitch bend 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 delay the delay at which the event occurs; this should be lower than the size of the block in the next call to renderBlock() . pitch the pitch value centered between -8192 and 8192. Since 0.2.0 hdPitchWheel void hdPitchWheel ( int delay , float pitch ) Send a high-precision pitch bend 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 delay the delay at which the event occurs; this should be lower than the size of the block in the next call to renderBlock() . pitch the normalized pitch, in domain -1 to 1. Since 1.0.0 aftertouch SFIZZ_DEPRECATED_API void aftertouch ( int delay , int aftertouch ) Send an aftertouch 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 delay the delay at which the event occurs; this should be lower than the size of the block in the next call to renderBlock() . aftertouch the aftertouch value, in domain 0 to 127. Since 0.2.0 channelAftertouch void channelAftertouch ( int delay , int aftertouch ) Send a channel aftertouch (channel pressure) 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 delay the delay at which the event occurs; this should be lower than the size of the block in the next call to renderBlock() . aftertouch the aftertouch value, in domain 0 to 127. Since 0.2.0 hdChannelAftertouch void hdChannelAftertouch ( int delay , float aftertouch ) Send a high-precision aftertouch 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 delay the delay at which the event occurs; this should be lower than the size of the block in the next call to renderBlock() . aftertouch the normalized aftertouch value, in domain 0 to 1. Since 1.0.0 polyAftertouch void polyAftertouch ( int delay , int noteNumber , int aftertouch ) Send a polyphonic aftertouch event to the synth. This feature is experimental and needs more testing in the internal engine. Parameters delay the delay at which the event occurs; this should be lower than the size of the block in the next call to renderBlock() . noteNumber the note number, in domain 0 to 127. aftertouch the aftertouch value, in domain 0 to 127. Since 1.0.0 hdPolyAftertouch void hdPolyAftertouch ( int delay , int noteNumber , float aftertouch ) Send a high-precision polyphonic aftertouch event to the synth. This feature is experimental and needs more testing in the internal engine. Parameters delay the delay at which the event occurs; this should be lower than the size of the block in the next call to renderBlock() . noteNumber the note number, in domain 0 to 127. aftertouch the normalized aftertouch value, in domain 0 to 1. Since 1.0.0 tempo SFIZZ_DEPRECATED_API void tempo ( int delay , float secondsPerBeat ) Send a tempo event to the synth. This command should be delay-ordered with all other time/signature commands, namely tempo() , timeSignature() , timePosition() , and playbackState() , otherwise the behavior of the synth is undefined. Parameters delay the delay at which the event occurs; this should be lower than the size of the block in the next call to renderBlock() . secondsPerBeat the new period of the beat. Since 0.2.0 bpmTempo void bpmTempo ( int delay , float beatsPerMinute ) Send a tempo event to the synth. This command should be delay-ordered with all other time/signature commands, namely tempo() , timeSignature() , timePosition() , and playbackState() , otherwise the behavior of the synth is undefined. Parameters delay the delay at which the event occurs; this should be lower than the size of the block in the next call to renderBlock() . beatsPerMinute the new tempo, in beats per minute. Since 1.0.0 timeSignature void timeSignature ( int delay , int beatsPerBar , int beatUnit ) Send the time signature. This command should be delay-ordered with all other time/signature commands, namely tempo() , timeSignature() , timePosition() , and playbackState() , otherwise the behavior of the synth is undefined. Parameters delay The delay. beatsPerBar The number of beats per bar, or time signature numerator. beatUnit The note corresponding to one beat, or time signature denominator. Since 0.5.0 timePosition void timePosition ( int delay , int bar , double barBeat ) Send the time position. This command should be delay-ordered with all other time/signature commands, namely tempo() , timeSignature() , timePosition() , and playbackState() , otherwise the behavior of the synth is undefined. Parameters delay The delay. bar The current bar. barBeat The fractional position of the current beat within the bar. Since 0.5.0 playbackState void playbackState ( int delay , int playbackState ) Send the playback state. This command should be delay-ordered with all other time/signature commands, namely tempo() , timeSignature() , timePosition() , and playbackState() , otherwise the behavior of the synth is undefined. Parameters delay The delay. playbackState The playback state, 1 if playing, 0 if stopped. Since 0.5.0 renderBlock void renderBlock ( float ** buffers , size_t numFrames , int numOutputs ) Render an block of audio data in the buffer. This call will reset the synth in its waiting state for the next batch of events. The buffers must be float[numSamples][numOutputs * 2]. Parameters buffers the buffers to write the next block into. numFrames the number of stereo frames in the block. numOutputs the number of stereo outputs. Since 0.2.0 getNumActiveVoices int getNumActiveVoices ( ) Return the number of active voices. Since 0.2.0 getNumVoices int getNumVoices ( ) Return the total number of voices in the synth (the polyphony). Since 0.2.0 setNumVoices void setNumVoices ( int numVoices ) Change the number of voices (the polyphony). Parameters numVoices The number of voices. Since 0.2.0 setOversamplingFactor bool setOversamplingFactor ( int factor ) Set the oversampling factor to a new value. As of 1.0, This is an inactive stub for future work on oversampling in the engine. Parameters factor The oversampling factor. Returns true if the factor did indeed change, false otherwise. Since 0.2.0 getOversamplingFactor int getOversamplingFactor ( ) Return the current oversampling factor. As of 1.0, This is an inactive stub for future work on oversampling in the engine. Since 0.2.0 setPreloadSize void setPreloadSize ( uint32_t preloadSize ) Set the preloaded file size. Parameters preloadSize The preload size. Since 0.2.0 getPreloadSize uint32_t getPreloadSize ( ) Return the current preloaded file size. Since 0.2.0 getAllocatedBuffers int getAllocatedBuffers ( ) Return the number of allocated buffers. Since 0.2.0 getAllocatedBytes int getAllocatedBytes ( ) Return the number of bytes allocated through the buffers. Since 0.2.0 enableFreeWheeling void enableFreeWheeling ( ) Enable freewheeling on the synth. This will wait for background loaded files to finish loading before each render callback to ensure that there will be no dropouts. Since 0.2.0 disableFreeWheeling void disableFreeWheeling ( ) Disable freewheeling on the synth. You should disable freewheeling before live use of the plugin otherwise the audio thread will lock. Since 0.2.0 shouldReloadFile bool shouldReloadFile ( ) Check if the SFZ should be reloaded. Depending on the platform this can create file descriptors. 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 shouldReloadScala bool shouldReloadScala ( ) Check if the tuning (scala) file should be reloaded. Depending on the platform this can create file descriptors. Returns true if a scala file has been loaded and has changed, false otherwise. Since 0.4.0 enableLogging SFIZZ_DEPRECATED_API void enableLogging ( ) Enable logging of timings to sidecar CSV files. Since 0.3.0 Note This can produce many outputs so use with caution. enableLogging void enableLogging ( const std::string & prefix ) Enable logging of timings to sidecar CSV files. Parameters prefix the file prefix to use for logging. Since 0.3.2 Note This can produce many outputs so use with caution. setLoggingPrefix SFIZZ_DEPRECATED_API void setLoggingPrefix ( const std::string & prefix ) Set the logging prefix. Parameters prefix Since 0.3.2 disableLogging void disableLogging ( ) Disable logging of timings to sidecar CSV files. Since 0.3.0 allSoundOff void allSoundOff ( ) Shuts down the current processing, clear buffers and reset the voices. Since 0.3.2 addExternalDefinition void addExternalDefinition ( const std::string & id , const std::string & value ) Add external definitions prior to loading. Parameters id The definition variable name. value The definition value. Since 0.4.0 Note These do not get reset by loading or resetting the synth. You need to call clearExternalDefintions() to erase them. clearExternalDefinitions void clearExternalDefinitions ( ) Clears external definitions for the next file loading. Since 0.4.0 getKeyLabels const std::vector < std::pair < uint8_t, std::string > > & getKeyLabels ( ) Get the key labels, if any. Since 0.4.0 getCCLabels const std::vector < std::pair < uint16_t, std::string > > & getCCLabels ( ) Get the CC labels, if any. Since 0.4.0 exportMidnam std::string exportMidnam ( const std::string & model ) Export a MIDI Name document describing the currently loaded SFZ file. Parameters model The model name used if a non-empty string, otherwise generated. Returns A XML string. Since 1.0.0 sendMessage void sendMessage ( Client & client , int delay , const char * path , const char * sig , const sfizz_arg_t * args ) Send a message to the synth engine. Parameters client The client sending the message. delay The delay of the message in the block, in samples. path The OSC address pattern. sig The OSC type tag string. args The OSC arguments, whose number and format is determined the type tag string. Since 1.0.0 setBroadcastCallback void setBroadcastCallback ( sfizz_receive_t * broadcast , void * data ) Set the function which receives broadcast messages from the synth engine. Parameters broadcast The pointer to the receiving function. data The opaque data pointer which is passed to the receiver. Since 1.0.0 createClient Create a new messaging client. Since 1.0.0 getClientData Get the client data. Since 1.0.0 setReceiveCallback Set the function which receives reply messages from the synth engine. Since 1.0.0","title":"sfz::Sfizz"},{"location":"sfizz/api/sfizz_message.h/","text":"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_t capacity , const char * path , const char * sig , const sfizz_arg_t * args ) Convert the message to OSC using the provided output buffer. Parameters buffer The output buffer capacity The capacity of the buffer path The path sig The signature args The 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_t srcCapacity , void * argsBuffer , uint32_t argsCapacity , const char ** outPath , const char ** outSig , const sfizz_arg_t ** outArgs ) Extract the contents of an OSC message. Parameters srcBuffer The data of the OSC message srcCapacity The size of the OSC message argsBuffer A buffer where the function can allocate the arguments argsCapacity The capacity of the argument buffer outPath A pointer to the variable which receives the path outSig A pointer to the variable which receives the signature outArgs A 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","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":"div.checkbox-filter { border-left: 10px solid; padding-left: 5px; margin: 1px 0 1px 0 } div.scr {border-color:hsl(20,100%,50%)} td.scr {background-color:hsl(20,100%,50%)} div.spl {border-color:hsl(40,100%,50%)} td.spl {background-color:hsl(40,100%,50%)} div.ins {border-color:hsl(60,100%,50%)} td.ins {background-color:hsl(60,100%,50%)} div.vlc {border-color:hsl(80,100%,50%)} td.vlc {background-color:hsl(80,100%,50%)} div.map {border-color:hsl(100,100%,50%)} td.map {background-color:hsl(100,100%,50%)} div.mid {border-color:hsl(120,100%,50%)} td.mid {background-color:hsl(120,100%,50%)} div.int {border-color:hsl(140,100%,50%)} td.int {background-color:hsl(140,100%,50%)} div.trg {border-color:hsl(160,100%,50%)} td.trg {background-color:hsl(160,100%,50%)} div.amp {border-color:hsl(180,100%,50%)} td.amp {background-color:hsl(180,100%,50%)} div.eq {border-color:hsl(200,100%,50%)} td.eq {background-color:hsl(200,100%,50%)} div.flt {border-color:hsl(220,100%,50%)} td.flt {background-color:hsl(220,100%,50%)} div.ptc {border-color:hsl(240,100%,50%)} td.ptc {background-color:hsl(240,100%,50%)} div.eg {border-color:hsl(260,100%,50%)} td.eg {background-color:hsl(260,100%,50%)} div.lfo {border-color:hsl(280,100%,50%)} td.lfo {background-color:hsl(280,100%,50%)} div.crv {border-color:hsl(300,100%,50%)} td.crv {background-color:hsl(300,100%,50%)} div.efx {border-color:hsl(320,100%,50%)} td.efx {background-color:hsl(320,100%,50%)} div.ldg {border-color:hsl(340,100%,50%)} td.ldg {background-color:hsl(340,100%,50%)} div.wos {border-color:hsl(360,100%,50%)} td.wos {background-color:hsl(360,100%,50%)} Opcode Version Supported Comment Real-Time Instrument Script script LinuxSampler Sample Playback count SFZ v1 Sample Playback delay SFZ v1 Sample Playback delay_ccN SFZ v1 Sample Playback delay_onccN SFZ v2 delay_ccN alias. Sample Playback delay_curveccN ARIA Sample Playback delay_random SFZ v1 Sample Playback delay_samples SFZ v2 Sample Playback delay_samples_onccN SFZ v2 Sample Playback end SFZ v1 Sample Playback loop_count SFZ v2 Sample Playback loopcount ARIA loop_count alias. Sample Playback loop_crossfade SFZ v2 Sample Playback loop_end SFZ v1 Sample Playback loopend SFZ v1 loop_end alias. Sample Playback loop_lengthccN SFZ v2 Sample Playback loop_length_onccN SFZ v2 loop_lengthccN alias. Sample Playback loop_mode SFZ v1 Sample Playback loopmode SFZ v1 loop_mode alias. Sample Playback loop_start SFZ v1 Sample Playback loopstart SFZ v1 loop_start alias. Sample Playback loop_startccN SFZ v2 Sample Playback loop_start_onccN SFZ v2 loop_startccN alias. Sample Playback loop_tune SFZ v2 Sample Playback looptune ARIA loop_tune alias. Sample Playback loop_type SFZ v2 Sample Playback looptype ARIA loop_type alias. Sample Playback offset SFZ v1 Sample Playback offset_ccN SFZ v1 Sample Playback offset_onccN SFZ v2 offset_ccN alias. Sample Playback offset_random SFZ v1 Sample Playback offset_mode ARIA Sample Playback sample SFZ v1 Sample Playback sample_fadeout SFZ v2 Sample Playback sample_dyn_paramN ARIA Sample Playback sample_dyn_paramN_onccX ARIA Sample Playback sync_beats SFZ v1 Sample Playback sync_offset SFZ v1 Sample Playback delay_beats SFZ v2 Sample Playback delay_beats_onccN ARIA Sample Playback delay_beats_curveccN ARIA Sample Playback delay_beats_random ARIA Sample Playback stop_beats SFZ v2 Sample Playback direction SFZ v2 Sample Playback md5 SFZ v2 Sample Playback reverse_loccN SFZ v2 Sample Playback reverse_hiccN SFZ v2 Sample Playback waveguide SFZ v2 Instrument Settings #define SFZ v2 Instrument Settings default_path SFZ v2 Instrument Settings note_offset SFZ v2 Instrument Settings octave_offset SFZ v2 Instrument Settings label_ccN ARIA Instrument Settings label_keyN sfizz Instrument Settings label_outputN Calfbox Instrument Settings set_ccN SFZ v2 Instrument Settings #include ARIA Instrument Settings set_hdccN ARIA Instrument Settings set_realccN ARIA set_hdccN alias. Instrument Settings sw_note_offset ARIA Instrument Settings sw_octave_offset ARIA Instrument Settings global_label ARIA Instrument Settings master_label ARIA Instrument Settings group_label ARIA Instrument Settings region_label ARIA Voice Lifecycle group SFZ v1 Voice Lifecycle polyphony_group ARIA group alias. Voice Lifecycle off_by SFZ v1 Voice Lifecycle offby SFZ v1 off_by alias. Voice Lifecycle off_mode SFZ v1 Voice Lifecycle output SFZ v1 Voice Lifecycle polyphony SFZ v2 Voice Lifecycle note_polyphony SFZ v2 Voice Lifecycle polyphony_stealing ARIA Voice Lifecycle note_selfmask SFZ v2 Voice Lifecycle rt_dead SFZ v2 Voice Lifecycle off_curve ARIA Voice Lifecycle off_shape ARIA Voice Lifecycle off_time ARIA Key Mapping key SFZ v1 Key Mapping lokey SFZ v1 Key Mapping hikey SFZ v1 Key Mapping lovel SFZ v1 Key Mapping hivel SFZ v1 MIDI Conditions lochan SFZ v1 Not supported by design MIDI Conditions hichan SFZ v1 Not supported by design MIDI Conditions loccN SFZ v1 MIDI Conditions hiccN SFZ v1 MIDI Conditions lobend SFZ v1 MIDI Conditions hibend SFZ v1 MIDI Conditions sostenuto_cc ARIA MIDI Conditions sostenuto_lo ARIA MIDI Conditions sostenuto_sw SFZ v2 MIDI Conditions sustain_cc ARIA MIDI Conditions sustain_lo ARIA MIDI Conditions sustain_sw SFZ v2 MIDI Conditions sw_lokey SFZ v1 MIDI Conditions sw_hikey SFZ v1 MIDI Conditions sw_last SFZ v1 MIDI Conditions sw_down SFZ v1 MIDI Conditions sw_up SFZ v1 MIDI Conditions sw_previous SFZ v1 MIDI Conditions sw_vel SFZ v1 MIDI Conditions loprog SFZ v2 Not supported by design MIDI Conditions hiprog SFZ v2 Not supported by design MIDI Conditions lohdccN ARIA MIDI Conditions hihdccN ARIA MIDI Conditions sw_default SFZ v2 MIDI Conditions sw_label ARIA MIDI Conditions sw_lolast ARIA MIDI Conditions sw_hilast ARIA MIDI Conditions varNN_mod ARIA MIDI Conditions varNN_onccX ARIA MIDI Conditions varNN_curveccX ARIA MIDI Conditions varNN_* ARIA Internal Conditions lobpm SFZ v1 Internal Conditions hibpm SFZ v1 Internal Conditions lochanaft SFZ v1 Internal Conditions hichanaft SFZ v1 Internal Conditions lopolyaft SFZ v1 Internal Conditions hipolyaft SFZ v1 Internal Conditions lorand SFZ v1 Internal Conditions hirand SFZ v1 Internal Conditions seq_length SFZ v1 Internal Conditions seq_position SFZ v1 Internal Conditions lotimer SFZ v2 Internal Conditions hitimer SFZ v2 Triggers trigger SFZ v1 Triggers on_loccN SFZ v1 Triggers start_loccN SFZ v2 on_loccN alias. Triggers on_hiccN SFZ v1 Triggers start_hiccN SFZ v2 on_hiccN alias. Triggers on_lohdccN ARIA Triggers start_lohdccN ARIA on_lohdccN alias. Triggers on_hihdccN ARIA Triggers start_hihdccN ARIA on_hihdccN alias. Triggers stop_loccN SFZ v2 Triggers stop_hiccN SFZ v2 Triggers stop_lohdccN ARIA Triggers stop_hihdccN ARIA Amplifier pan SFZ v1 Amplifier pan_onccN SFZ v2 Amplifier pan_ccN ARIA pan_onccN alias. Amplifier pan_curveccN SFZ v2 Amplifier pan_smoothccN SFZ v2 Amplifier pan_stepccN SFZ v2 Amplifier pan_random ARIA Amplifier position SFZ v1 Amplifier position_onccN ARIA Amplifier position_curveccN ARIA Amplifier position_smoothccN ARIA Amplifier position_stepccN ARIA Amplifier position_random ARIA Amplifier position_keycenter ARIA Amplifier position_keytrack ARIA Amplifier position_veltrack ARIA Amplifier volume SFZ v1 Amplifier gain_ccN SFZ v1 Amplifier gain_onccN SFZ v2 gain_ccN alias. Amplifier volume_onccN SFZ v2 gain_ccN alias. Amplifier volume_curveccN SFZ v2 Amplifier volume_smoothccN SFZ v2 Amplifier volume_stepccN SFZ v2 Amplifier width SFZ v1 Disambiguation needed: homonymous opcode used also under header Amplifier width_onccN SFZ v2 Disambiguation needed: homonymous opcode used also under header (not supported yet there) Amplifier width_curveccN SFZ v2 Amplifier width_smoothccN SFZ v2 Amplifier width_stepccN SFZ v2 Amplifier amp_keycenter SFZ v1 Amplifier amp_keytrack SFZ v1 Amplifier amp_veltrack SFZ v1 Amplifier amp_veltrack_onccN ARIA Amplifier amp_veltrack_ccN ARIA amp_veltrack_onccN alias. Amplifier amp_veltrack_curveccN ARIA Amplifier amp_veltrack_random ARIA Amplifier amp_velcurve_N SFZ v1 Amplifier amp_random SFZ v1 Amplifier gain_random SFZ v2 amp_random alias. Amplifier rt_decay SFZ v1 Amplifier rt_decayN ARIA Amplifier rt_decayN_time ARIA Amplifier xf_cccurve SFZ v1 Amplifier xf_keycurve SFZ v1 Amplifier xf_velcurve SFZ v1 Amplifier xfin_loccN SFZ v1 Amplifier xfin_hiccN SFZ v1 Amplifier xfout_loccN SFZ v1 Amplifier xfout_hiccN SFZ v1 Amplifier xfin_lokey SFZ v1 Amplifier xfin_hikey SFZ v1 Amplifier xfout_lokey SFZ v1 Amplifier xfout_hikey SFZ v1 Amplifier xfin_lovel SFZ v1 Amplifier xfin_hivel SFZ v1 Amplifier xfout_lovel SFZ v1 Amplifier xfout_hivel SFZ v1 Amplifier phase SFZ v2 Amplifier amplitude ARIA Amplifier amplitude_onccN ARIA Amplifier amplitude_ccN amplitude_onccN alias. Amplifier amplitude_curveccN ARIA Amplifier amplitude_smoothccN ARIA Amplifier global_amplitude ARIA Amplifier master_amplitude ARIA Amplifier group_amplitude ARIA Amplifier pan_law ARIA Amplifier pan_keycenter SFZ v2 Amplifier pan_keytrack SFZ v2 Amplifier pan_veltrack SFZ v2 Amplifier global_volume ARIA Amplifier master_volume ARIA Amplifier group_volume ARIA EQ eqN_bw SFZ v1 EQ eqN_bwccX SFZ v1 EQ eqN_bw_onccX SFZ v2 eqN_bwccX alias. EQ eqN_freq SFZ v1 EQ eqN_freqccX SFZ v1 EQ eqN_freq_onccX SFZ v2 eqN_freqccX alias. EQ eqN_vel2freq SFZ v1 EQ eqN_gain SFZ v1 EQ eqN_gainccX SFZ v1 EQ eqN_gain_onccX SFZ v2 eqN_gainccX alias. EQ eqN_vel2gain SFZ v1 EQ eqN_dynamic ARIA EQ eqN_type SFZ v2 Filter cutoff SFZ v1 Filter cutoff2 SFZ v2 cutoff alias. Filter cutoff2_ccN SFZ v2 Filter cutoff2_onccN SFZ v2 Filter cutoff2_curveccN SFZ v2 Filter cutoff2_smoothccN SFZ v2 Filter cutoff2_stepccN SFZ v2 Filter cutoff2_chanaft SFZ v2 Filter cutoff2_polyaft SFZ v2 Filter cutoff_ccN SFZ v1 Filter cutoff_onccN SFZ v2 cutoff_ccN alias. Filter cutoff_curveccN SFZ v2 Filter cutoff_smoothccN SFZ v2 Filter cutoff_stepccN SFZ v2 Filter cutoff_chanaft SFZ v1 Filter cutoff_polyaft SFZ v1 Filter fil_gain ARIA Filter fil2_gain ARIA fil_gain alias. Filter fil2_gain_onccN Filter fil_gain_onccN ARIA Filter fil_keycenter SFZ v1 Filter fil2_keycenter SFZ v2 fil_keycenter alias. Filter fil_keytrack SFZ v1 Filter fil2_keytrack SFZ v2 fil_keytrack alias. Filter fil_random SFZ v1 Filter cutoff_random SFZ v2 fil_random alias. Filter cutoff2_random ARIA fil_random alias. Filter fil_type SFZ v1 Filter filtype SFZ v1 fil_type alias. Filter fil2_type SFZ v2 fil_type alias. Filter fil_veltrack SFZ v1 Filter fil2_veltrack SFZ v2 fil_veltrack alias. Filter resonance SFZ v1 Filter resonance2 SFZ v2 resonance alias. Filter resonance2_onccN SFZ v2 Filter resonance2_ccN SFZ v2 resonance2_onccN alias. Filter resonance2_curveccN SFZ v2 Filter resonance2_smoothccN SFZ v2 Filter resonance2_stepccN SFZ v2 Filter resonance_onccN SFZ v2 Filter resonance_ccN SFZ v2 resonance_onccN alias. Filter resonance_curveccN SFZ v2 Filter resonance_smoothccN SFZ v2 Filter resonance_stepccN SFZ v2 Filter resonance_random ARIA Filter resonance2_random ARIA Filter noise_filter SFZ v2 Filter noise_stereo SFZ v2 Filter noise_level SFZ v2 Filter noise_level_onccN SFZ v2 Filter noise_level_smoothccN SFZ v2 Filter noise_step SFZ v2 Filter noise_step_onccN SFZ v2 Filter noise_tone SFZ v2 Filter noise_tone_onccN SFZ v2 Pitch bend_up SFZ v1 Pitch bendup SFZ v1 bend_up alias. Pitch bend_down SFZ v1 Pitch benddown SFZ v1 bend_down alias. Pitch bend_smooth SFZ v2 Pitch bend_step SFZ v1 Pitch bendstep SFZ v1 bend_step alias. Pitch tune SFZ v1 Pitch pitch ARIA tune alias. Pitch pitch_onccN SFZ v2 Pitch tune_ccN ARIA pitch_onccN alias. Pitch tune_onccN ARIA pitch_onccN alias. Pitch pitch_curveccN SFZ v2 Pitch tune_curveccN ARIA pitch_curveccN alias. Pitch pitch_smoothccN SFZ v2 Pitch tune_smoothccN ARIA pitch_smoothccN alias. Pitch pitch_stepccN SFZ v2 Pitch tune_stepccN ARIA pitch_stepccN alias. Pitch group_tune ARIA Pitch master_tune ARIA Pitch global_tune ARIA Pitch pitch_keycenter SFZ v1 Plus sample as value Pitch pitch_keytrack SFZ v1 Pitch tune_keytrack ARIA pitch_keytrack alias. Pitch pitch_random SFZ v1 Pitch tune_random ARIA pitch_random alias. Pitch pitch_veltrack SFZ v1 Pitch tune_veltrack ARIA pitch_veltrack alias. Pitch transpose SFZ v1 Pitch bend_stepup SFZ v2 Pitch bend_stepdown SFZ v2 Envelope Generators ampeg_attack SFZ v1 Envelope Generators ampeg_attackccN SFZ v1 Envelope Generators ampeg_attack_onccN SFZ v2 ampeg_attackccN alias. Envelope Generators ampeg_attack_curveccN ARIA Envelope Generators ampeg_vel2attack SFZ v1 Envelope Generators ampeg_decay SFZ v1 Envelope Generators ampeg_decayccN SFZ v1 Envelope Generators ampeg_decay_onccN SFZ v2 ampeg_decayccN alias. Envelope Generators ampeg_decay_curveccN ARIA Envelope Generators ampeg_vel2decay SFZ v1 Envelope Generators ampeg_delay SFZ v1 Envelope Generators ampeg_delayccN SFZ v1 Envelope Generators ampeg_delay_onccN SFZ v2 ampeg_delayccN alias. Envelope Generators ampeg_delay_curveccN ARIA Envelope Generators ampeg_vel2delay SFZ v1 Envelope Generators ampeg_hold SFZ v1 Envelope Generators ampeg_holdccN SFZ v1 Envelope Generators ampeg_hold_onccN SFZ v2 ampeg_holdccN alias. Envelope Generators ampeg_hold_curveccN ARIA Envelope Generators ampeg_vel2hold SFZ v1 Envelope Generators ampeg_release SFZ v1 Envelope Generators ampeg_releaseccN SFZ v1 Envelope Generators ampeg_release_onccN SFZ v2 ampeg_releaseccN alias. Envelope Generators ampeg_release_curveccN ARIA Envelope Generators ampeg_vel2release SFZ v1 Envelope Generators ampeg_sustain SFZ v1 Envelope Generators ampeg_sustainccN SFZ v1 Envelope Generators ampeg_sustain_onccN SFZ v2 ampeg_sustainccN alias. Envelope Generators ampeg_sustain_curveccN ARIA Envelope Generators ampeg_vel2sustain SFZ v1 Envelope Generators ampeg_start SFZ v1 Envelope Generators ampeg_startccN SFZ v1 Envelope Generators ampeg_start_onccN SFZ v2 ampeg_startccN alias. Envelope Generators ampeg_start_curveccN ARIA Envelope Generators ampeg_attack_shape ARIA Envelope Generators ampeg_decay_shape ARIA Envelope Generators ampeg_decay_zero ARIA Envelope Generators ampeg_dynamic ARIA Envelope Generators ampeg_release_shape ARIA Envelope Generators ampeg_release_zero ARIA Envelope Generators fileg_attack_shape ARIA Envelope Generators fileg_decay_shape ARIA Envelope Generators fileg_decay_zero ARIA Envelope Generators fileg_release_shape ARIA Envelope Generators fileg_release_zero ARIA Envelope Generators fileg_dynamic ARIA Envelope Generators pitcheg_attack_shape ARIA Envelope Generators pitcheg_decay_shape ARIA Envelope Generators pitcheg_decay_zero ARIA Envelope Generators pitcheg_release_shape ARIA Envelope Generators pitcheg_release_zero ARIA Envelope Generators pitcheg_dynamic ARIA Envelope Generators fileg_attack SFZ v1 Envelope Generators fileg_attack_onccN ARIA Envelope Generators fileg_attackccN ARIA fileg_attack_onccN alias. Envelope Generators fileg_attack_curveccN ARIA Envelope Generators fileg_vel2attack SFZ v1 Envelope Generators fileg_decay SFZ v1 Envelope Generators fileg_decay_onccN ARIA Envelope Generators fileg_decayccN ARIA fileg_decay_onccN alias. Envelope Generators fileg_decay_curveccN ARIA Envelope Generators fileg_vel2decay SFZ v1 Envelope Generators fileg_delay SFZ v1 Envelope Generators fileg_delay_onccN ARIA Envelope Generators fileg_delayccN ARIA fileg_delay_onccN alias. Envelope Generators fileg_delay_curveccN ARIA Envelope Generators fileg_vel2delay SFZ v1 Envelope Generators fileg_depth SFZ v1 Envelope Generators fileg_depth_onccN ARIA Envelope Generators fileg_depthccN ARIA fileg_depth_onccN alias. Envelope Generators fileg_depth_curveccN ARIA Envelope Generators fileg_vel2depth SFZ v1 Envelope Generators fileg_hold SFZ v1 Envelope Generators fileg_hold_onccN ARIA Envelope Generators fileg_holdccN ARIA fileg_hold_onccN alias. Envelope Generators fileg_hold_curveccN ARIA Envelope Generators fileg_vel2hold SFZ v1 Envelope Generators fileg_release SFZ v1 Envelope Generators fileg_release_onccN ARIA Envelope Generators fileg_releaseccN ARIA fileg_release_onccN alias. Envelope Generators fileg_release_curveccN ARIA Envelope Generators fileg_vel2release SFZ v1 Envelope Generators fileg_start SFZ v1 Envelope Generators fileg_start_onccN ARIA Envelope Generators fileg_startccN ARIA fileg_start_onccN alias. Envelope Generators fileg_start_curveccN ARIA Envelope Generators fileg_sustain SFZ v1 Envelope Generators fileg_sustain_onccN ARIA Envelope Generators fileg_sustainccN ARIA fileg_sustain_onccN alias. Envelope Generators fileg_sustain_curveccN ARIA Envelope Generators fileg_vel2sustain SFZ v1 Envelope Generators pitcheg_attack SFZ v1 Envelope Generators pitcheg_attack_onccN ARIA Envelope Generators pitcheg_attack_curveccN ARIA Envelope Generators pitcheg_vel2attack SFZ v1 Envelope Generators pitcheg_decay SFZ v1 Envelope Generators pitcheg_decay_onccN ARIA Envelope Generators pitcheg_decay_curveccN ARIA Envelope Generators pitcheg_vel2decay SFZ v1 Envelope Generators pitcheg_delay SFZ v1 Envelope Generators pitcheg_delay_onccN ARIA Envelope Generators pitcheg_delay_curveccN ARIA Envelope Generators pitcheg_vel2delay SFZ v1 Envelope Generators pitcheg_depth SFZ v1 Envelope Generators pitcheg_depth_onccN ARIA Envelope Generators pitcheg_depthccN ARIA pitcheg_depth_onccN alias. Envelope Generators pitcheg_depth_curveccN ARIA Envelope Generators pitcheg_vel2depth SFZ v1 Envelope Generators pitcheg_hold SFZ v1 Envelope Generators pitcheg_hold_onccN ARIA Envelope Generators pitcheg_hold_curveccN ARIA Envelope Generators pitcheg_vel2hold SFZ v1 Envelope Generators pitcheg_release SFZ v1 Envelope Generators pitcheg_release_onccN ARIA Envelope Generators pitcheg_release_curveccN ARIA Envelope Generators pitcheg_vel2release SFZ v1 Envelope Generators pitcheg_start SFZ v1 Envelope Generators pitcheg_start_onccN ARIA Envelope Generators pitcheg_start_curveccN ARIA Envelope Generators pitcheg_sustain SFZ v1 Envelope Generators pitcheg_sustain_onccN ARIA Envelope Generators pitcheg_sustain_curveccN ARIA Envelope Generators pitcheg_vel2sustain SFZ v1 Envelope Generators egN_points SFZ v2 Ignored Envelope Generators egN_timeX SFZ v2 Envelope Generators egN_timeX_onccY SFZ v2 Envelope Generators egN_levelX SFZ v2 Envelope Generators egN_levelX_onccY SFZ v2 Envelope Generators egN_ampeg ARIA Envelope Generators egN_dynamic ARIA Envelope Generators egN_shapeX SFZ v2 Envelope Generators egN_curveX SFZ v2 Envelope Generators egN_sustain SFZ v2 Envelope Generators egN_loop SFZ v2 Envelope Generators egN_loop_count SFZ v2 Envelope Generators egN_volume SFZ v2 Envelope Generators egN_volume_onccX SFZ v2 Envelope Generators egN_amplitude SFZ v2 Envelope Generators egN_amplitude_onccX SFZ v2 Envelope Generators egN_pan SFZ v2 Envelope Generators egN_pan_onccX SFZ v2 Envelope Generators egN_width SFZ v2 Envelope Generators egN_width_onccX SFZ v2 Envelope Generators egN_pan_curve SFZ v2 Envelope Generators egN_pan_curveccX SFZ v2 Envelope Generators egN_freq_lfoX SFZ v2 Envelope Generators egN_depth_lfoX SFZ v2 Envelope Generators egN_depthadd_lfoX SFZ v2 Envelope Generators egN_pitch SFZ v2 Envelope Generators egN_pitch_onccX SFZ v2 Envelope Generators egN_cutoff SFZ v2 Envelope Generators egN_cutoff_onccX SFZ v2 Envelope Generators egN_cutoff2 SFZ v2 Envelope Generators egN_cutoff2_onccX SFZ v2 Envelope Generators egN_resonance SFZ v2 Envelope Generators egN_resonance_onccX SFZ v2 Envelope Generators egN_resonance2 SFZ v2 Envelope Generators egN_resonance2_onccX SFZ v2 Envelope Generators egN_eqXfreq SFZ v2 Envelope Generators egN_eqXfreq_onccY SFZ v2 Envelope Generators egN_eqXbw SFZ v2 Envelope Generators egN_eqXbw_onccY SFZ v2 Envelope Generators egN_eqXgain SFZ v2 Envelope Generators egN_eqXgain_onccY SFZ v2 Envelope Generators egN_decim SFZ v2 Envelope Generators egN_decim_onccX SFZ v2 Envelope Generators egN_bitred SFZ v2 Envelope Generators egN_bitred_onccX SFZ v2 Envelope Generators egN_rectify SFZ v2 Envelope Generators egN_rectify_onccX SFZ v2 Envelope Generators egN_ringmod SFZ v2 Envelope Generators egN_ringmod_onccX SFZ v2 Envelope Generators egN_noiselevel SFZ v2 Envelope Generators egN_noiselevel_onccX SFZ v2 Envelope Generators egN_noisestep SFZ v2 Envelope Generators egN_noisestep_onccX SFZ v2 Envelope Generators egN_noisetone SFZ v2 Envelope Generators egN_noisetone_onccX SFZ v2 Envelope Generators egN_driveshape SFZ v2 Envelope Generators egN_driveshape_onccX SFZ v2 LFO amplfo_delay SFZ v1 LFO amplfo_depth SFZ v1 LFO amplfo_depthccN SFZ v1 LFO amplfo_depth_onccN SFZ v2 amplfo_depthccN alias. LFO amplfo_depthchanaft SFZ v1 LFO amplfo_depthpolyaft SFZ v1 LFO amplfo_fade SFZ v1 LFO amplfo_freq SFZ v1 LFO amplfo_freqccN SFZ v1 LFO amplfo_freqchanaft SFZ v1 LFO amplfo_freqpolyaft SFZ v1 LFO fillfo_delay SFZ v1 LFO fillfo_depth SFZ v1 LFO fillfo_depthccN SFZ v1 LFO fillfo_depth_onccN SFZ v2 fillfo_depthccN alias. LFO fillfo_depthchanaft SFZ v1 LFO fillfo_depthpolyaft SFZ v1 LFO fillfo_fade SFZ v1 LFO fillfo_freq SFZ v1 LFO fillfo_freqccN SFZ v1 LFO fillfo_freqchanaft SFZ v1 LFO fillfo_freqpolyaft SFZ v1 LFO pitchlfo_delay SFZ v1 LFO pitchlfo_depth SFZ v1 LFO pitchlfo_depthccN SFZ v1 LFO pitchlfo_depth_onccN SFZ v2 pitchlfo_depthccN alias. LFO pitchlfo_depthchanaft SFZ v1 LFO pitchlfo_depthpolyaft SFZ v1 LFO pitchlfo_fade SFZ v1 LFO pitchlfo_freq SFZ v1 LFO pitchlfo_freqccN SFZ v1 LFO pitchlfo_freqchanaft SFZ v1 LFO pitchlfo_freqpolyaft SFZ v1 LFO lfoN_freq SFZ v2 LFO lfoN_freq_onccX SFZ v2 LFO lfoN_freq_smoothccX SFZ v2 LFO lfoN_freq_stepccX SFZ v2 LFO lfoN_delay SFZ v2 LFO lfoN_delay_onccX SFZ v2 LFO lfoN_fade SFZ v2 LFO lfoN_fade_onccX SFZ v2 LFO lfoN_phase SFZ v2 LFO lfoN_phase_onccX SFZ v2 LFO lfoN_count SFZ v2 LFO lfoN_wave SFZ v2 LFO lfoN_waveX ARIA lfoN_wave alias. LFO lfoN_wave_onccX ARIA LFO lfoN_steps SFZ v2 LFO lfoN_stepX SFZ v2 LFO lfoN_stepX_onccY SFZ v2 LFO lfoN_smooth SFZ v2 LFO lfoN_smooth_onccX SFZ v2 LFO lfoN_volume SFZ v2 LFO lfoN_volume_onccX SFZ v2 LFO lfoN_volume_smoothccX SFZ v2 LFO lfoN_volume_stepccX SFZ v2 LFO lfoN_amplitude SFZ v2 LFO lfoN_amplitude_onccX SFZ v2 LFO lfoN_amplitude_smoothccX SFZ v2 LFO lfoN_amplitude_stepccX SFZ v2 LFO lfoN_pan SFZ v2 LFO lfoN_pan_onccX SFZ v2 LFO lfoN_pan_smoothccX SFZ v2 LFO lfoN_pan_stepccX SFZ v2 LFO lfoN_width SFZ v2 LFO lfoN_width_onccX SFZ v2 LFO lfoN_width_smoothccX SFZ v2 LFO lfoN_width_stepccX SFZ v2 LFO lfoN_freq_lfoX SFZ v2 LFO lfoN_freq_lfoX_onccY ARIA LFO lfoN_depth_lfoX SFZ v2 LFO lfoN_depthadd_lfoX SFZ v2 LFO lfoN_pitch SFZ v2 LFO lfoN_pitch_curveccX SFZ v2 LFO lfoN_pitch_onccX SFZ v2 LFO lfoN_pitch_smoothccX SFZ v2 LFO lfoN_pitch_stepccX SFZ v2 LFO lfoN_cutoff SFZ v2 LFO lfoN_cutoff2 SFZ v2 lfoN_cutoff alias. LFO lfoN_cutoff2_onccX SFZ v2 LFO lfoN_cutoff2_smoothccX SFZ v2 LFO lfoN_cutoff2_stepccX SFZ v2 LFO lfoN_cutoff_onccX SFZ v2 LFO lfoN_cutoff_smoothccX SFZ v2 LFO lfoN_cutoff_stepccX SFZ v2 LFO lfoN_resonance SFZ v2 LFO lfoN_resonance2 SFZ v2 lfoN_resonance alias. LFO lfoN_resonance2_onccX SFZ v2 LFO lfoN_resonance2_smoothccX SFZ v2 LFO lfoN_resonance2_stepccX SFZ v2 LFO lfoN_resonance_onccX SFZ v2 LFO lfoN_resonance_smoothccX SFZ v2 LFO lfoN_resonance_stepccX SFZ v2 LFO lfoN_eqXfreq SFZ v2 LFO lfoN_eqXfreq_onccY SFZ v2 LFO lfoN_eqXfreq_smoothccY SFZ v2 LFO lfoN_eqXfreq_stepccY SFZ v2 LFO lfoN_eqXbw SFZ v2 LFO lfoN_eqXbw_onccY SFZ v2 LFO lfoN_eqXbw_smoothccY SFZ v2 LFO lfoN_eqXbw_stepccY SFZ v2 LFO lfoN_eqXgain SFZ v2 LFO lfoN_eqXgain_onccY SFZ v2 LFO lfoN_eqXgain_smoothccY SFZ v2 LFO lfoN_eqXgain_stepccY SFZ v2 LFO lfoN_decim SFZ v2 LFO lfoN_decim_onccX SFZ v2 LFO lfoN_decim_smoothccX SFZ v2 LFO lfoN_decim_stepccX SFZ v2 LFO lfoN_bitred SFZ v2 LFO lfoN_bitred_onccX SFZ v2 LFO lfoN_bitred_smoothccX SFZ v2 LFO lfoN_bitred_stepccX SFZ v2 LFO lfoN_noiselevel SFZ v2 LFO lfoN_noiselevel_onccX SFZ v2 LFO lfoN_noiselevel_smoothccX SFZ v2 LFO lfoN_noiselevel_stepccX SFZ v2 LFO lfoN_noisestep SFZ v2 LFO lfoN_noisestep_onccX SFZ v2 LFO lfoN_noisestep_smoothccX SFZ v2 LFO lfoN_noisestep_stepccX SFZ v2 LFO lfoN_noisetone SFZ v2 LFO lfoN_noisetone_onccX SFZ v2 LFO lfoN_noisetone_smoothccX SFZ v2 LFO lfoN_noisetone_stepccX SFZ v2 LFO lfoN_drive SFZ v2 LFO lfoN_drive_onccX SFZ v2 LFO lfoN_drive_smoothccX SFZ v2 LFO lfoN_drive_stepccX SFZ v2 LFO lfoN_offset ARIA LFO lfoN_offsetX ARIA lfoN_offset alias. LFO lfoN_ratio ARIA LFO lfoN_ratioX ARIA lfoN_ratio alias. LFO lfoN_scale ARIA LFO lfoN_scaleX ARIA lfoN_scale alias. LFO lfoN_sample_dyn_paramX ARIA LFO lfoN_sample_dyn_paramX_onccY ARIA Curves curve_index ARIA Curves vNNN SFZ v2 Effects apan_depth SFZ v2 Effects apan_depth_onccN SFZ v2 Effects apan_dry SFZ v2 Effects apan_dry_onccN SFZ v2 Effects apan_freq SFZ v2 Effects apan_freq_onccN SFZ v2 Effects apan_phase SFZ v2 Effects apan_phase_onccN SFZ v2 Effects apan_waveform SFZ v2 Effects apan_wet SFZ v2 Effects apan_wet_onccN SFZ v2 Effects bitred SFZ v2 Effects bitred_onccN SFZ v2 Effects bitred_curveccN SFZ v2 Effects bitred_smoothccN SFZ v2 Effects bitred_stepccN SFZ v2 Effects bus SFZ v2 Effects bypass_onccN SFZ v2 Effects comp_attack SFZ v2 Effects comp_gain SFZ v2 Effects comp_ratio SFZ v2 Effects comp_release SFZ v2 Effects comp_stlink SFZ v2 Effects comp_threshold SFZ v2 Effects decim SFZ v2 Effects decim_onccN SFZ v2 Effects decim_curveccN SFZ v2 Effects decim_smoothccN SFZ v2 Effects decim_stepccN SFZ v2 Effects delay_cutoff SFZ v2 Effects delay_cutoff_onccN SFZ v2 Effects delay_damphi SFZ v2 Effects delay_damphi_onccN SFZ v2 Effects delay_damplo SFZ v2 Effects delay_damplo_onccN SFZ v2 Effects delay_dry SFZ v2 Effects delay_dry_onccN SFZ v2 Effects delay_feedback SFZ v2 Effects delay_feedback_onccN SFZ v2 Effects delay_filter SFZ v2 Effects delay_input SFZ v2 Effects delay_input_onccN SFZ v2 Effects delay_levelc SFZ v2 Effects delay_levell SFZ v2 Effects delay_levelr SFZ v2 Effects delay_lfofreq SFZ v2 Effects delay_lfofreq_onccN SFZ v2 Effects delay_moddepth SFZ v2 Effects delay_moddepth_onccN SFZ v2 Effects delay_mode SFZ v2 Effects delay_panc SFZ v2 Effects delay_panc_onccN SFZ v2 Effects delay_panl SFZ v2 Effects delay_panl_onccN SFZ v2 Effects delay_panr SFZ v2 Effects delay_panr_onccN SFZ v2 Effects delay_resonance SFZ v2 Effects delay_resonance_onccN SFZ v2 Effects delay_spread SFZ v2 Effects delay_spread_onccN SFZ v2 Effects delay_syncc_onccN SFZ v2 Effects delay_syncl_onccN SFZ v2 Effects delay_syncr_onccN SFZ v2 Effects delay_time_tap SFZ v2 Effects delay_timec SFZ v2 Effects delay_timec_onccN SFZ v2 Effects delay_timel SFZ v2 Effects delay_timel_onccN SFZ v2 Effects delay_timer SFZ v2 Effects delay_timer_onccN SFZ v2 Effects delay_wet SFZ v2 Effects delay_wet_onccN SFZ v2 Effects directtomain SFZ v2 Effects disto_depth SFZ v2 Effects disto_depth_onccN SFZ v2 Effects disto_dry SFZ v2 Effects disto_dry_onccN SFZ v2 Effects disto_stages SFZ v2 Effects disto_tone SFZ v2 Effects disto_tone_onccN SFZ v2 Effects disto_wet SFZ v2 Effects disto_wet_onccN SFZ v2 Effects dsp_order SFZ v2 Effects effect1 SFZ v1 Effects effect2 SFZ v1 Effects effect3 SFZ v2 Effects effect4 SFZ v2 Effects eq_bw SFZ v2 Effects eq_bw_onccN SFZ v2 Effects eq_freq SFZ v2 Effects eq_freq_onccN SFZ v2 Effects eq_gain SFZ v2 Effects eq_gain_onccN SFZ v2 Effects eq_type SFZ v2 Effects filter_cutoff SFZ v2 Effects filter_cutoff_onccN SFZ v2 Effects filter_resonance SFZ v2 Effects filter_resonance_onccN SFZ v2 Effects filter_type SFZ v2 Effects fxNtomain SFZ v2 Effects fxNtomix SFZ v2 Effects gate_onccN SFZ v2 Effects gate_attack SFZ v2 Effects gate_release SFZ v2 Effects gate_stlink SFZ v2 Effects gate_threshold SFZ v2 Effects internal SFZ v2 Effects param_offset ARIA Effects phaser_depth SFZ v2 Effects phaser_depth_onccN SFZ v2 Effects phaser_feedback SFZ v2 Effects phaser_feedback_onccN SFZ v2 Effects phaser_freq SFZ v2 Effects phaser_freq_onccN SFZ v2 Effects phaser_phase_onccN SFZ v2 Effects phaser_stages SFZ v2 Effects phaser_waveform SFZ v2 Effects phaser_wet SFZ v2 Effects phaser_wet_onccN SFZ v2 Effects reverb_damp SFZ v2 Effects reverb_damp_onccN SFZ v2 Effects reverb_dry SFZ v2 Effects reverb_dry_onccN SFZ v2 Effects reverb_input SFZ v2 Effects reverb_input_onccN SFZ v2 Effects reverb_predelay SFZ v2 Effects reverb_predelay_onccN SFZ v2 Effects reverb_size SFZ v2 Effects reverb_size_onccN SFZ v2 Effects reverb_tone SFZ v2 Effects reverb_tone_onccN SFZ v2 Effects reverb_type SFZ v2 Effects reverb_wet SFZ v2 Effects reverb_wet_onccN SFZ v2 Effects static_cyclic_level SFZ v2 Effects static_cyclic_time SFZ v2 Effects static_filter SFZ v2 Effects static_level SFZ v2 Effects static_level_onccN SFZ v2 Effects static_random_level SFZ v2 Effects static_random_maxtime SFZ v2 Effects static_random_mintime SFZ v2 Effects static_stereo SFZ v2 Effects static_tone SFZ v2 Effects strings_number SFZ v2 Difference of behavior Effects strings_wet_onccN SFZ v2 Effects tdfir_dry SFZ v2 Effects tdfir_dry_onccN SFZ v2 Effects tdfir_gain SFZ v2 Effects tdfir_impulse SFZ v2 Effects tdfir_wet SFZ v2 Effects tdfir_wet_onccN SFZ v2 Effects type SFZ v2 Effects vendor_specific ARIA Loading load_mode SFZ v2 Loading load_start SFZ v2 Loading load_end SFZ v2 Loading sample_quality SFZ v2 Loading image SFZ v2 Wavetable Oscillator oscillator SFZ v2 Wavetable Oscillator oscillator_detune SFZ v2 Wavetable Oscillator oscillator_detune_onccN SFZ v2 Wavetable Oscillator oscillator_mode SFZ v2 PM and FM same behavior, for now Wavetable Oscillator oscillator_mod_depth SFZ v2 Wavetable Oscillator oscillator_mod_depth_onccN SFZ v2 Wavetable Oscillator oscillator_mod_smoothccN SFZ v2 Wavetable Oscillator oscillator_multi SFZ v2 Wavetable Oscillator oscillator_phase SFZ v2 Wavetable Oscillator oscillator_quality SFZ v2 Wavetable Oscillator oscillator_table_size SFZ v2 Instrument Settings hint_stealing sfizz 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 Settings hint_ram_based sfizz Values: 1 : enabled 0 : disabled Instrument Settings hint_sustain_cancels_release sfizz 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 Generators egN_filXgain sfizz Envelope Generators egN_filXgain_onccX sfizz Envelope Generators egN_position sfizz Envelope Generators egN_position_onccX sfizz LFO amplfo_wave sfizz LFO pitchlfo_wave sfizz LFO fillfo_wave sfizz LFO lfoN_filXgain sfizz LFO lfoN_filXgain_onccY sfizz LFO lfoN_filXgain_smoothccY sfizz LFO lfoN_filXgain_stepccY sfizz LFO lfoN_position sfizz LFO lfoN_position_onccX sfizz LFO lfoN_position_smoothccX sfizz LFO lfoN_position_stepccX sfizz Effects filter_gain sfizz Effects filter_gain_onccN sfizz Effects strings_wet sfizz Effects rectify_mode sfizz Effects rectify sfizz Effects rectify_onccN sfizz Effects gain sfizz Effects gain_onccN sfizz Effects width sfizz Effects width_onccN sfizz Effects gate_hold sfizz","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..7e5d8b68 --- /dev/null +++ b/sfizz/api/index.html @@ -0,0 +1,668 @@ + + + + + + + API - + + SFZTools + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+
+ +
+ +

+
+

+ Copyright © 2019-2023 + 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..14f3d978 --- /dev/null +++ b/sfizz/api/sfizz.h/index.html @@ -0,0 +1,3702 @@ + + + + + + + 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 {
+ +} +

Oversampling factor.

+
+
Since
+
0.2.0
+
+
+
+

sfizz_process_mode_t

+
+
+ enum sfizz_process_mode_t {
+ +} +

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-2023 + 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..96473495 --- /dev/null +++ b/sfizz/api/sfizz.hpp/index.html @@ -0,0 +1,3077 @@ + + + + + + + sfz::Sfizz - + + SFZTools + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+
+

sfz::Sfizz Class Reference

+

#include <sfizz.hpp>

+

Synthesizer for SFZ instruments.

+

Public Types

+

ProcessMode

+
+
+ enum ProcessMode {
+ +} +

Processing mode.

+
+
Since
+
0.4.0
+
+
+
+
+

Public Member Functions

+ +

Sfizz

+
+
+ + + + + + + +
+ Sfizz + ()
+
+

Construct a new Sfizz object.

The synth by default is set at 48 kHz and a block size of 1024. You should change these values if they are not suited to your application. +
+
+ +

~Sfizz

+
+
+ + + + + + + +
+ ~Sfizz + ()
+
+
+
+
+ +

Sfizz

+
+
+ + + + + + + + + +
+ Sfizz + (Sfizz &&other)
+
+

Move constructor.

+
+
Parameters
+
+ + +
other
+
+
+
+
+ +

operator=

+
+
+ + + + + + + + + +
Sfizz & + operator= + (Sfizz &&other)
+
+

Move assignment operator.

+
+
Parameters
+
+ + +
other
+
+
+
+
+ +

Sfizz

+
+
+ + + + + + + + + +
+ Sfizz + (const Sfizz &other)
+
+
+
+
Parameters
+
+ + +
other
+
+
+
+
+ +

operator=

+
+
+ + + + + + + + + +
Sfizz & + operator= + (const Sfizz &other)
+
+
+
+
Parameters
+
+ + +
other
+
+
+
+
+ +

Sfizz

+
+
+ + + + + + + + + +
+ Sfizz + (sfizz_synth_t *synth)
+
+

Reference an existing synth handle.

+
+
Parameters
+
+ + +
synth
+
+
+
+
+ +

handle

+
+
+ + + + + + + +
sfizz_synth_t * + handle + ()
+
+

Get the synth handle.

+
+
+ +

loadSfzFile

+
+
+ + + + + + + + + +
bool + loadSfzFile + (const std::string &path)
+
+

Empties the current regions and load a new SFZ file into the synth.

+
+
Parameters
+
+ + +
pathThe path to the file to load, as string.
+
+
+
+
Returns
+
false if the file was not found or no regions were loaded, true otherwise.
+
+
+
Since
+
0.2.0
+
+
+
+ +

loadSfzString

+
+
+ + + + + + + + + + + + +
bool + loadSfzString + (const std::string &path,const std::string &text)
+
+

Empties the current regions and load a new SFZ document from memory.

This is similar to loadSfzFile() in functionality. 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
+
+ + + +
pathThe virtual path of the SFZ file, as string.
textThe contents of the virtual SFZ file.
+
+
+
+
Returns
+
false if no regions were loaded, true otherwise.
+
+
+
Since
+
0.4.0
+
+
+
+ +

loadScalaFile

+
+
+ + + + + + + + + +
bool + loadScalaFile + (const std::string &path)
+
+

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

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

loadScalaString

+
+
+ + + + + + + + + +
bool + loadScalaString + (const std::string &text)
+
+

Sets the tuning from a Scala file loaded from memory.

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

setScalaRootKey

+
+
+ + + + + + + + + +
void + setScalaRootKey + (introotKey)
+
+

Sets the scala root key.

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

getScalaRootKey

+
+
+ + + + + + + +
int + getScalaRootKey + ()
+
+

Gets the scala root key.

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

setTuningFrequency

+
+
+ + + + + + + + + +
void + setTuningFrequency + (floatfrequency)
+
+

Sets the reference tuning frequency.

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

getTuningFrequency

+
+
+ + + + + + + +
float + getTuningFrequency + ()
+
+

Gets the reference tuning frequency.

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

loadStretchTuningByRatio

+
+
+ + + + + + + + + +
void + loadStretchTuningByRatio + (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
+
+ + +
ratioThe parameter in domain 0-1.
+
+
+
+
Since
+
0.4.0
+
+
+
+ +

getNumRegions

+
+
+ + + + + + + +
int + getNumRegions + ()
+
+

Return the current number of regions loaded.

+
+
Since
+
0.2.0
+
+
+
+ +

getNumGroups

+
+
+ + + + + + + +
int + getNumGroups + ()
+
+

Return the current number of groups loaded.

+
+
Since
+
0.2.0
+
+
+
+ +

getNumMasters

+
+
+ + + + + + + +
int + getNumMasters + ()
+
+

Return the current number of masters loaded.

+
+
Since
+
0.2.0
+
+
+
+ +

getNumCurves

+
+
+ + + + + + + +
int + getNumCurves + ()
+
+

Return the current number of curves loaded.

+
+
Since
+
0.2.0
+
+
+
+ +

getUnknownOpcodes

+
+
+ + + + + + + +
const std::vector< std::string > & + getUnknownOpcodes + ()
+
+

Return a list of unsupported opcodes, if any.

+
+
Since
+
0.2.0
+
+
+
+ +

getNumPreloadedSamples

+
+
+ + + + + + + +
size_t + getNumPreloadedSamples + ()
+
+

Return the number of preloaded samples in the synth.

+
+
Since
+
0.2.0
+
+
+
+ +

setSamplesPerBlock

+
+
+ + + + + + + + + +
void + setSamplesPerBlock + (intsamplesPerBlock)
+
+

Set the maximum size of the blocks for the callback.

The actual size can be lower in each callback but should not be larger than this value. +
+
Parameters
+
+ + +
samplesPerBlockThe number of samples per block.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

setSampleRate

+
+
+ + + + + + + + + +
void + setSampleRate + (floatsampleRate)
+
+

Set the sample rate.

If you do not call it it is initialized to sfz::config::defaultSampleRate. +
+
Parameters
+
+ + +
sampleRateThe sample rate.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

getSampleQuality

+
+
+ + + + + + + + + +
int + getSampleQuality + (ProcessModemode)
+
+

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
+
+ + +
modeThe processing mode.
+
+
+
+
Returns
+
The sample quality for the given mode, in the range 0 to 10.
+
+
+
Since
+
0.4.0
+
+
+
+ +

setSampleQuality

+
+
+ + + + + + + + + + + + +
void + setSampleQuality + (ProcessModemode,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
+
+ + + +
modeThe processing mode.
qualityThe desired sample quality, in the range 0 to 10.
+
+
+
+
Since
+
0.4.0
+
+
+
+ +

getOscillatorQuality

+
+
+ + + + + + + + + +
int + getOscillatorQuality + (ProcessModemode)
+
+

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
+
+ + +
modeThe processing mode.
+
+
+
+
Returns
+
The oscillator quality for the given mode, in the range 0 to 3.
+
+
+
Since
+
1.0.0
+
+
+
+ +

setOscillatorQuality

+
+
+ + + + + + + + + + + + +
void + setOscillatorQuality + (ProcessModemode,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
+
+ + + +
modeThe processing mode.
qualityThe desired oscillator quality, in the range 0 to 3.
+
+
+
+
Since
+
1.0.0
+
+
+
+ +

getVolume

+
+
+ + + + + + + +
float + getVolume + ()
+
+

Return the current value for the volume, in dB.

+
+
Since
+
0.2.0
+
+
+
+ +

setVolume

+
+
+ + + + + + + + + +
void + setVolume + (floatvolume)
+
+

Set the value for the volume.

This value will be clamped within sfz::default::volumeRange. +
+
Parameters
+
+ + +
volumeThe new volume.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

noteOn

+
+
+ + + + + + + + + + + + + + + +
void + noteOn + (intdelay,intnoteNumber,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
+
+ + + + +
delaythe delay at which the event occurs; this should be lower than the size of the block in the next call to renderBlock().
noteNumberthe midi note number, in domain 0 to 127.
velocitythe midi note velocity, in domain 0 to 127.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

hdNoteOn

+
+
+ + + + + + + + + + + + + + + +
void + hdNoteOn + (intdelay,intnoteNumber,floatvelocity)
+
+

Send a high-precision 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
+
+ + + + +
delaythe delay at which the event occurs; this should be lower than the size of the block in the next call to renderBlock().
noteNumberthe midi note number, in domain 0 to 127.
velocitythe normalized midi note velocity, in domain 0 to 1.
+
+
+
+
Since
+
1.0.0
+
+
+
+ +

noteOff

+
+
+ + + + + + + + + + + + + + + +
void + noteOff + (intdelay,intnoteNumber,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
+
+ + + + +
delaythe delay at which the event occurs; this should be lower than the size of the block in the next call to renderBlock().
noteNumberthe midi note number, in domain 0 to 127.
velocitythe midi note velocity, in domain 0 to 127.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

hdNoteOff

+
+
+ + + + + + + + + + + + + + + +
void + hdNoteOff + (intdelay,intnoteNumber,floatvelocity)
+
+

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
+
+ + + + +
delaythe delay at which the event occurs; this should be lower than the size of the block in the next call to renderBlock().
noteNumberthe midi note number, in domain 0 to 127.
velocitythe normalized midi note velocity, in domain 0 to 1.
+
+
+
+
Since
+
1.0.0
+
+
+
+ +

cc

+
+
+ + + + + + + + + + + + + + + +
void + cc + (intdelay,intccNumber,intccValue)
+
+

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
+
+ + + + +
delaythe delay at which the event occurs; this should be lower than the size of the block in the next call to renderBlock().
ccNumberthe cc number, in domain 0 to 127.
ccValuethe cc value, in domain 0 to 127.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

hdcc

+
+
+ + + + + + + + + + + + + + + +
void + hdcc + (intdelay,intccNumber,floatnormValue)
+
+

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
+
+ + + + +
delaythe delay at which the event occurs; this should be lower than the size of the block in the next call to renderBlock().
ccNumberthe cc number, in domain 0 to 127.
normValuethe normalized cc value, in domain 0 to 1.
+
+
+
+
Since
+
0.4.0
+
+
+
+ +

automateHdcc

+
+
+ + + + + + + + + + + + + + + +
void + automateHdcc + (intdelay,intccNumber,floatnormValue)
+
+

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
+
+ + + + +
delaythe delay at which the event occurs; this should be lower than the size of the block in the next call to renderBlock().
ccNumberthe cc number, in domain 0 to 127.
normValuethe normalized cc value, in domain 0 to 1.
+
+
+
+
Since
+
1.0.0
+
+
+
+ +

pitchWheel

+
+
+ + + + + + + + + + + + +
void + pitchWheel + (intdelay,intpitch)
+
+

Send a pitch bend 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
+
+ + + +
delaythe delay at which the event occurs; this should be lower than the size of the block in the next call to renderBlock().
pitchthe pitch value centered between -8192 and 8192.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

hdPitchWheel

+
+
+ + + + + + + + + + + + +
void + hdPitchWheel + (intdelay,floatpitch)
+
+

Send a high-precision pitch bend 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
+
+ + + +
delaythe delay at which the event occurs; this should be lower than the size of the block in the next call to renderBlock().
pitchthe normalized pitch, in domain -1 to 1.
+
+
+
+
Since
+
1.0.0
+
+
+
+ +

aftertouch

+
+
+ + + + + + + + + + + + +
SFIZZ_DEPRECATED_API void + aftertouch + (intdelay,intaftertouch)
+
+

Send an aftertouch 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
+
+ + + +
delaythe delay at which the event occurs; this should be lower than the size of the block in the next call to renderBlock().
aftertouchthe aftertouch value, in domain 0 to 127.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

channelAftertouch

+
+
+ + + + + + + + + + + + +
void + channelAftertouch + (intdelay,intaftertouch)
+
+

Send a channel aftertouch (channel pressure) 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
+
+ + + +
delaythe delay at which the event occurs; this should be lower than the size of the block in the next call to renderBlock().
aftertouchthe aftertouch value, in domain 0 to 127.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

hdChannelAftertouch

+
+
+ + + + + + + + + + + + +
void + hdChannelAftertouch + (intdelay,floataftertouch)
+
+

Send a high-precision aftertouch 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
+
+ + + +
delaythe delay at which the event occurs; this should be lower than the size of the block in the next call to renderBlock().
aftertouchthe normalized aftertouch value, in domain 0 to 1.
+
+
+
+
Since
+
1.0.0
+
+
+
+ +

polyAftertouch

+
+
+ + + + + + + + + + + + + + + +
void + polyAftertouch + (intdelay,intnoteNumber,intaftertouch)
+
+

Send a polyphonic aftertouch event to the synth.

This feature is experimental and needs more testing in the internal engine. +
+
Parameters
+
+ + + + +
delaythe delay at which the event occurs; this should be lower than the size of the block in the next call to renderBlock().
noteNumberthe note number, in domain 0 to 127.
aftertouchthe aftertouch value, in domain 0 to 127.
+
+
+
+
Since
+
1.0.0
+
+
+
+ +

hdPolyAftertouch

+
+
+ + + + + + + + + + + + + + + +
void + hdPolyAftertouch + (intdelay,intnoteNumber,floataftertouch)
+
+

Send a high-precision polyphonic aftertouch event to the synth.

This feature is experimental and needs more testing in the internal engine. +
+
Parameters
+
+ + + + +
delaythe delay at which the event occurs; this should be lower than the size of the block in the next call to renderBlock().
noteNumberthe note number, in domain 0 to 127.
aftertouchthe normalized aftertouch value, in domain 0 to 1.
+
+
+
+
Since
+
1.0.0
+
+
+
+ +

tempo

+
+
+ + + + + + + + + + + + +
SFIZZ_DEPRECATED_API void + tempo + (intdelay,floatsecondsPerBeat)
+
+

Send a tempo event to the synth.

This command should be delay-ordered with all other time/signature commands, namely tempo(), timeSignature(), timePosition(), and playbackState(), otherwise the behavior of the synth is undefined. +
+
Parameters
+
+ + + +
delaythe delay at which the event occurs; this should be lower than the size of the block in the next call to renderBlock().
secondsPerBeatthe new period of the beat.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

bpmTempo

+
+
+ + + + + + + + + + + + +
void + bpmTempo + (intdelay,floatbeatsPerMinute)
+
+

Send a tempo event to the synth.

This command should be delay-ordered with all other time/signature commands, namely tempo(), timeSignature(), timePosition(), and playbackState(), otherwise the behavior of the synth is undefined. +
+
Parameters
+
+ + + +
delaythe delay at which the event occurs; this should be lower than the size of the block in the next call to renderBlock().
beatsPerMinutethe new tempo, in beats per minute.
+
+
+
+
Since
+
1.0.0
+
+
+
+ +

timeSignature

+
+
+ + + + + + + + + + + + + + + +
void + timeSignature + (intdelay,intbeatsPerBar,intbeatUnit)
+
+

Send the time signature.

This command should be delay-ordered with all other time/signature commands, namely tempo(), timeSignature(), timePosition(), and playbackState(), otherwise the behavior of the synth is undefined. +
+
Parameters
+
+ + + + +
delayThe delay.
beatsPerBarThe number of beats per bar, or time signature numerator.
beatUnitThe note corresponding to one beat, or time signature denominator.
+
+
+
+
Since
+
0.5.0
+
+
+
+ +

timePosition

+
+
+ + + + + + + + + + + + + + + +
void + timePosition + (intdelay,intbar,doublebarBeat)
+
+

Send the time position.

This command should be delay-ordered with all other time/signature commands, namely tempo(), timeSignature(), timePosition(), and playbackState(), otherwise the behavior of the synth is undefined. +
+
Parameters
+
+ + + + +
delayThe delay.
barThe current bar.
barBeatThe fractional position of the current beat within the bar.
+
+
+
+
Since
+
0.5.0
+
+
+
+ +

playbackState

+
+
+ + + + + + + + + + + + +
void + playbackState + (intdelay,intplaybackState)
+
+

Send the playback state.

This command should be delay-ordered with all other time/signature commands, namely tempo(), timeSignature(), timePosition(), and playbackState(), otherwise the behavior of the synth is undefined. +
+
Parameters
+
+ + + +
delayThe delay.
playbackStateThe playback state, 1 if playing, 0 if stopped.
+
+
+
+
Since
+
0.5.0
+
+
+
+ +

renderBlock

+
+
+ + + + + + + + + + + + + + + +
void + renderBlock + (float **buffers,size_tnumFrames,intnumOutputs)
+
+

Render an block of audio data in the buffer.

This call will reset the synth in its waiting state for the next batch of events. The buffers must be float[numSamples][numOutputs * 2]. +
+
Parameters
+
+ + + + +
buffersthe buffers to write the next block into.
numFramesthe number of stereo frames in the block.
numOutputsthe number of stereo outputs.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

getNumActiveVoices

+
+
+ + + + + + + +
int + getNumActiveVoices + ()
+
+

Return the number of active voices.

+
+
Since
+
0.2.0
+
+
+
+ +

getNumVoices

+
+
+ + + + + + + +
int + getNumVoices + ()
+
+

Return the total number of voices in the synth (the polyphony).

+
+
Since
+
0.2.0
+
+
+
+ +

setNumVoices

+
+
+ + + + + + + + + +
void + setNumVoices + (intnumVoices)
+
+

Change the number of voices (the polyphony).

+
+
Parameters
+
+ + +
numVoicesThe number of voices.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

setOversamplingFactor

+
+
+ + + + + + + + + +
bool + setOversamplingFactor + (intfactor)
+
+

Set the oversampling factor to a new value.

As of 1.0, This is an inactive stub for future work on oversampling in the engine. +
+
Parameters
+
+ + +
factorThe oversampling factor.
+
+
+
+
Returns
+
true if the factor did indeed change, false otherwise.
+
+
+
Since
+
0.2.0
+
+
+
+ +

getOversamplingFactor

+
+
+ + + + + + + +
int + getOversamplingFactor + ()
+
+

Return the current oversampling factor.

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

setPreloadSize

+
+
+ + + + + + + + + +
void + setPreloadSize + (uint32_tpreloadSize)
+
+

Set the preloaded file size.

+
+
Parameters
+
+ + +
preloadSizeThe preload size.
+
+
+
+
Since
+
0.2.0
+
+
+
+ +

getPreloadSize

+
+
+ + + + + + + +
uint32_t + getPreloadSize + ()
+
+

Return the current preloaded file size.

+
+
Since
+
0.2.0
+
+
+
+ +

getAllocatedBuffers

+
+
+ + + + + + + +
int + getAllocatedBuffers + ()
+
+

Return the number of allocated buffers.

+
+
Since
+
0.2.0
+
+
+
+ +

getAllocatedBytes

+
+
+ + + + + + + +
int + getAllocatedBytes + ()
+
+

Return the number of bytes allocated through the buffers.

+
+
Since
+
0.2.0
+
+
+
+ +

enableFreeWheeling

+
+
+ + + + + + + +
void + enableFreeWheeling + ()
+
+

Enable freewheeling on the synth.

This will wait for background loaded files to finish loading before each render callback to ensure that there will be no dropouts. +
+
Since
+
0.2.0
+
+
+
+ +

disableFreeWheeling

+
+
+ + + + + + + +
void + disableFreeWheeling + ()
+
+

Disable freewheeling on the synth.

You should disable freewheeling before live use of the plugin otherwise the audio thread will lock. +
+
Since
+
0.2.0
+
+
+
+ +

shouldReloadFile

+
+
+ + + + + + + +
bool + shouldReloadFile + ()
+
+

Check if the SFZ should be reloaded.

Depending on the platform this can create file descriptors. +
+
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
+
+
+
+ +

shouldReloadScala

+
+
+ + + + + + + +
bool + shouldReloadScala + ()
+
+

Check if the tuning (scala) file should be reloaded.

Depending on the platform this can create file descriptors. +
+
Returns
+
true if a scala file has been loaded and has changed, false otherwise.
+
+
+
Since
+
0.4.0
+
+
+
+ +

enableLogging

+
+
+ + + + + + + +
SFIZZ_DEPRECATED_API void + enableLogging + ()
+
+

Enable logging of timings to sidecar CSV files.

+
+
Since
+
0.3.0
+
+
+
Note
+
This can produce many outputs so use with caution.
+
+
+
+ +

enableLogging

+
+
+ + + + + + + + + +
void + enableLogging + (const std::string &prefix)
+
+

Enable logging of timings to sidecar CSV files.

+
+
Parameters
+
+ + +
prefixthe file prefix to use for logging.
+
+
+
+
Since
+
0.3.2
+
+
+
Note
+
This can produce many outputs so use with caution.
+
+
+
+ +

setLoggingPrefix

+
+
+ + + + + + + + + +
SFIZZ_DEPRECATED_API void + setLoggingPrefix + (const std::string &prefix)
+
+

Set the logging prefix.

+
+
Parameters
+
+ + +
prefix
+
+
+
+
Since
+
0.3.2
+
+
+
+ +

disableLogging

+
+
+ + + + + + + +
void + disableLogging + ()
+
+

Disable logging of timings to sidecar CSV files.

+
+
Since
+
0.3.0
+
+
+
+ +

allSoundOff

+
+
+ + + + + + + +
void + allSoundOff + ()
+
+

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

+
+
Since
+
0.3.2
+
+
+
+ +

addExternalDefinition

+
+
+ + + + + + + + + + + + +
void + addExternalDefinition + (const std::string &id,const std::string &value)
+
+

Add external definitions prior to loading.

+
+
Parameters
+
+ + + +
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 clearExternalDefintions() to erase them.
+
+
+
+ +

clearExternalDefinitions

+
+
+ + + + + + + +
void + clearExternalDefinitions + ()
+
+

Clears external definitions for the next file loading.

+
+
Since
+
0.4.0
+
+
+
+ +

getKeyLabels

+
+
+ + + + + + + +
const std::vector< std::pair< uint8_t, std::string > > & + getKeyLabels + ()
+
+

Get the key labels, if any.

+
+
Since
+
0.4.0
+
+
+
+ +

getCCLabels

+
+
+ + + + + + + +
const std::vector< std::pair< uint16_t, std::string > > & + getCCLabels + ()
+
+

Get the CC labels, if any.

+
+
Since
+
0.4.0
+
+
+
+ +

exportMidnam

+
+
+ + + + + + + + + +
std::string + exportMidnam + (const std::string &model)
+
+

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

+
+
Parameters
+
+ + +
modelThe model name used if a non-empty string, otherwise generated.
+
+
+
+
Returns
+
A XML string.
+
+
+
Since
+
1.0.0
+
+
+
+ +

sendMessage

+
+
+ + + + + + + + + + + + + + + + + + + + + +
void + sendMessage + (Client &client,intdelay,const char *path,const char *sig,const sfizz_arg_t *args)
+
+

Send a message to the synth engine.

+
+
Parameters
+
+ + + + + + +
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
+
+
+
+ +

setBroadcastCallback

+
+
+ + + + + + + + + + + + +
void + setBroadcastCallback + (sfizz_receive_t *broadcast,void *data)
+
+

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

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

createClient

+
+
+ + + + +
+
+
+
+

Create a new messaging client.

+
+
Since
+
1.0.0
+
+
+
+

getClientData

+
+
+ + + + +
+
+
+
+

Get the client data.

+
+
Since
+
1.0.0
+
+
+
+

setReceiveCallback

+
+
+ + + + +
+
+
+
+

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

+
+
Since
+
1.0.0
+
+
+
+
+
+ +

+
+

+ Copyright © 2019-2023 + 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..76465a9e --- /dev/null +++ b/sfizz/api/sfizz_message.h/index.html @@ -0,0 +1,793 @@ + + + + + + + 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-2023 + 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..675008c4 --- /dev/null +++ b/sfizz/development/build/index.html @@ -0,0 +1,771 @@ + + + + + + + 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-2023 + 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..5c271f1d --- /dev/null +++ b/sfizz/development/build/linux/index.html @@ -0,0 +1,718 @@ + + + + + + + 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-2023 + 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..a6286216 --- /dev/null +++ b/sfizz/development/status/index.html @@ -0,0 +1,751 @@ + + + + + + + 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-2023 + 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..3498f3c8 --- /dev/null +++ b/sfizz/development/status/opcodes/index.html @@ -0,0 +1,16868 @@ + + + + + + + Opcodes Support Table - + + SFZTools + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
OpcodeVersionSupportedComment
Real-Time Instrument Script + scriptLinuxSampler +:x: +
Sample Playback + countSFZ v1 +:heavy_check_mark: +
Sample Playback + delaySFZ v1 +:heavy_check_mark: +
Sample Playback + delay_ccNSFZ v1 +:heavy_check_mark: +
Sample Playback + delay_onccNSFZ v2 +:heavy_check_mark: + + delay_ccN alias.
Sample Playback + delay_curveccNARIA +:x: +
Sample Playback + delay_randomSFZ v1 +:heavy_check_mark: +
Sample Playback + delay_samplesSFZ v2 +:x: +
Sample Playback + delay_samples_onccNSFZ v2 +:x: +
Sample Playback + endSFZ v1 +:heavy_check_mark: +
Sample Playback + loop_countSFZ v2 +:heavy_check_mark: +
Sample Playback + loopcountARIA +:x: + + loop_count alias.
Sample Playback + loop_crossfadeSFZ v2 +:heavy_check_mark: +
Sample Playback + loop_endSFZ v1 +:heavy_check_mark: +
Sample Playback + loopendSFZ v1 +:heavy_check_mark: + + loop_end alias.
Sample Playback + loop_lengthccNSFZ v2 +:heavy_check_mark: +
Sample Playback + loop_length_onccNSFZ v2 +:heavy_check_mark: + + loop_lengthccN alias.
Sample Playback + loop_modeSFZ v1 +:heavy_check_mark: +
Sample Playback + loopmodeSFZ v1 +:heavy_check_mark: + + loop_mode alias.
Sample Playback + loop_startSFZ v1 +:heavy_check_mark: +
Sample Playback + loopstartSFZ v1 +:heavy_check_mark: + + loop_start alias.
Sample Playback + loop_startccNSFZ v2 +:heavy_check_mark: +
Sample Playback + loop_start_onccNSFZ v2 +:heavy_check_mark: + + loop_startccN alias.
Sample Playback + loop_tuneSFZ v2 +:x: +
Sample Playback + looptuneARIA +:x: + + loop_tune alias.
Sample Playback + loop_typeSFZ v2 +:x: +
Sample Playback + looptypeARIA +:x: + + loop_type alias.
Sample Playback + offsetSFZ v1 +:heavy_check_mark: +
Sample Playback + offset_ccNSFZ v1 +:heavy_check_mark: +
Sample Playback + offset_onccNSFZ v2 +:heavy_check_mark: + + offset_ccN alias.
Sample Playback + offset_randomSFZ v1 +:heavy_check_mark: +
Sample Playback + offset_modeARIA +:x: +
Sample Playback + sampleSFZ v1 +:heavy_check_mark: +
Sample Playback + sample_fadeoutSFZ v2 +:x: +
Sample Playback + sample_dyn_paramNARIA +:x: +
Sample Playback + sample_dyn_paramN_onccXARIA +:x: +
Sample Playback + sync_beatsSFZ v1 +:x: +
Sample Playback + sync_offsetSFZ v1 +:x: +
Sample Playback + delay_beatsSFZ v2 +:x: +
Sample Playback + delay_beats_onccNARIA +:x: +
Sample Playback + delay_beats_curveccNARIA +:x: +
Sample Playback + delay_beats_randomARIA +:x: +
Sample Playback + stop_beatsSFZ v2 +:x: +
Sample Playback + directionSFZ v2 +:heavy_check_mark: +
Sample Playback + md5SFZ v2 +:x: +
Sample Playback + reverse_loccNSFZ v2 +:x: +
Sample Playback + reverse_hiccNSFZ v2 +:x: +
Sample Playback + waveguideSFZ v2 +:x: +
Instrument Settings + #defineSFZ v2 +:heavy_check_mark: +
Instrument Settings + default_pathSFZ v2 +:heavy_check_mark: +
Instrument Settings + note_offsetSFZ v2 +:heavy_check_mark: +
Instrument Settings + octave_offsetSFZ v2 +:heavy_check_mark: +
Instrument Settings + label_ccNARIA +:heavy_check_mark: +
Instrument Settings + label_keyNsfizz +:heavy_check_mark: +
Instrument Settings + label_outputNCalfbox +:x: +
Instrument Settings + set_ccNSFZ v2 +:heavy_check_mark: +
Instrument Settings + #includeARIA +:heavy_check_mark: +
Instrument Settings + set_hdccNARIA +:heavy_check_mark: +
Instrument Settings + set_realccNARIA +:heavy_check_mark: + + set_hdccN alias.
Instrument Settings + sw_note_offsetARIA +:x: +
Instrument Settings + sw_octave_offsetARIA +:x: +
Instrument Settings + global_labelARIA +:x: +
Instrument Settings + master_labelARIA +:x: +
Instrument Settings + group_labelARIA +:x: +
Instrument Settings + region_labelARIA +:x: +
Voice Lifecycle + groupSFZ v1 +:heavy_check_mark: +
Voice Lifecycle + polyphony_groupARIA +:heavy_check_mark: + + group alias.
Voice Lifecycle + off_bySFZ v1 +:heavy_check_mark: +
Voice Lifecycle + offbySFZ v1 +:heavy_check_mark: + + off_by alias.
Voice Lifecycle + off_modeSFZ v1 +:heavy_check_mark: +
Voice Lifecycle + outputSFZ v1 +:heavy_check_mark: +
Voice Lifecycle + polyphonySFZ v2 +:heavy_check_mark: +
Voice Lifecycle + note_polyphonySFZ v2 +:heavy_check_mark: +
Voice Lifecycle + polyphony_stealingARIA +:x: +
Voice Lifecycle + note_selfmaskSFZ v2 +:heavy_check_mark: +
Voice Lifecycle + rt_deadSFZ v2 +:heavy_check_mark: +
Voice Lifecycle + off_curveARIA +:x: +
Voice Lifecycle + off_shapeARIA +:x: +
Voice Lifecycle + off_timeARIA +:heavy_check_mark: +
Key Mapping + keySFZ v1 +:heavy_check_mark: +
Key Mapping + lokeySFZ v1 +:heavy_check_mark: +
Key Mapping + hikeySFZ v1 +:heavy_check_mark: +
Key Mapping + lovelSFZ v1 +:heavy_check_mark: +
Key Mapping + hivelSFZ v1 +:heavy_check_mark: +
MIDI Conditions + lochanSFZ v1 +:x: + Not supported by design
MIDI Conditions + hichanSFZ v1 +:x: + Not supported by design
MIDI Conditions + loccNSFZ v1 +:heavy_check_mark: +
MIDI Conditions + hiccNSFZ v1 +:heavy_check_mark: +
MIDI Conditions + lobendSFZ v1 +:heavy_check_mark: +
MIDI Conditions + hibendSFZ v1 +:heavy_check_mark: +
MIDI Conditions + sostenuto_ccARIA +:heavy_check_mark: +
MIDI Conditions + sostenuto_loARIA +:heavy_check_mark: +
MIDI Conditions + sostenuto_swSFZ v2 +:x: +
MIDI Conditions + sustain_ccARIA +:heavy_check_mark: +
MIDI Conditions + sustain_loARIA +:heavy_check_mark: +
MIDI Conditions + sustain_swSFZ v2 +:heavy_check_mark: +
MIDI Conditions + sw_lokeySFZ v1 +:heavy_check_mark: +
MIDI Conditions + sw_hikeySFZ v1 +:heavy_check_mark: +
MIDI Conditions + sw_lastSFZ v1 +:heavy_check_mark: +
MIDI Conditions + sw_downSFZ v1 +:heavy_check_mark: +
MIDI Conditions + sw_upSFZ v1 +:heavy_check_mark: +
MIDI Conditions + sw_previousSFZ v1 +:heavy_check_mark: +
MIDI Conditions + sw_velSFZ v1 +:heavy_check_mark: +
MIDI Conditions + loprogSFZ v2 +:x: + Not supported by design
MIDI Conditions + hiprogSFZ v2 +:x: + Not supported by design
MIDI Conditions + lohdccNARIA +:heavy_check_mark: +
MIDI Conditions + hihdccNARIA +:heavy_check_mark: +
MIDI Conditions + sw_defaultSFZ v2 +:heavy_check_mark: +
MIDI Conditions + sw_labelARIA +:heavy_check_mark: +
MIDI Conditions + sw_lolastARIA +:heavy_check_mark: +
MIDI Conditions + sw_hilastARIA +:heavy_check_mark: +
MIDI Conditions + varNN_modARIA +:x: +
MIDI Conditions + varNN_onccXARIA +:x: +
MIDI Conditions + varNN_curveccXARIA +:x: +
MIDI Conditions + varNN_*ARIA +:x: +
Internal Conditions + lobpmSFZ v1 +:construction: +
Internal Conditions + hibpmSFZ v1 +:construction: +
Internal Conditions + lochanaftSFZ v1 +:heavy_check_mark: +
Internal Conditions + hichanaftSFZ v1 +:heavy_check_mark: +
Internal Conditions + lopolyaftSFZ v1 +:heavy_check_mark: +
Internal Conditions + hipolyaftSFZ v1 +:heavy_check_mark: +
Internal Conditions + lorandSFZ v1 +:heavy_check_mark: +
Internal Conditions + hirandSFZ v1 +:heavy_check_mark: +
Internal Conditions + seq_lengthSFZ v1 +:heavy_check_mark: +
Internal Conditions + seq_positionSFZ v1 +:heavy_check_mark: +
Internal Conditions + lotimerSFZ v2 +:x: +
Internal Conditions + hitimerSFZ v2 +:x: +
Triggers + triggerSFZ v1 +:heavy_check_mark: +
Triggers + on_loccNSFZ v1 +:heavy_check_mark: +
Triggers + start_loccNSFZ v2 +:heavy_check_mark: + + on_loccN alias.
Triggers + on_hiccNSFZ v1 +:heavy_check_mark: +
Triggers + start_hiccNSFZ v2 +:heavy_check_mark: + + on_hiccN alias.
Triggers + on_lohdccNARIA +:heavy_check_mark: +
Triggers + start_lohdccNARIA +:heavy_check_mark: + + on_lohdccN alias.
Triggers + on_hihdccNARIA +:heavy_check_mark: +
Triggers + start_hihdccNARIA +:heavy_check_mark: + + on_hihdccN alias.
Triggers + stop_loccNSFZ v2 +:x: +
Triggers + stop_hiccNSFZ v2 +:x: +
Triggers + stop_lohdccNARIA +:x: +
Triggers + stop_hihdccNARIA +:x: +
Amplifier + panSFZ v1 +:heavy_check_mark: +
Amplifier + pan_onccNSFZ v2 +:heavy_check_mark: +
Amplifier + pan_ccNARIA +:heavy_check_mark: + + pan_onccN alias.
Amplifier + pan_curveccNSFZ v2 +:heavy_check_mark: +
Amplifier + pan_smoothccNSFZ v2 +:heavy_check_mark: +
Amplifier + pan_stepccNSFZ v2 +:heavy_check_mark: +
Amplifier + pan_randomARIA +:x: +
Amplifier + positionSFZ v1 +:heavy_check_mark: +
Amplifier + position_onccNARIA +:heavy_check_mark: +
Amplifier + position_curveccNARIA +:heavy_check_mark: +
Amplifier + position_smoothccNARIA +:heavy_check_mark: +
Amplifier + position_stepccNARIA +:heavy_check_mark: +
Amplifier + position_randomARIA +:x: +
Amplifier + position_keycenterARIA +:x: +
Amplifier + position_keytrackARIA +:x: +
Amplifier + position_veltrackARIA +:x: +
Amplifier + volumeSFZ v1 +:heavy_check_mark: +
Amplifier + gain_ccNSFZ v1 +:heavy_check_mark: +
Amplifier + gain_onccNSFZ v2 +:heavy_check_mark: + + gain_ccN alias.
Amplifier + volume_onccNSFZ v2 +:heavy_check_mark: + + gain_ccN alias.
Amplifier + volume_curveccNSFZ v2 +:heavy_check_mark: +
Amplifier + volume_smoothccNSFZ v2 +:heavy_check_mark: +
Amplifier + volume_stepccNSFZ v2 +:heavy_check_mark: +
Amplifier + widthSFZ v1 +:heavy_check_mark: + Disambiguation needed: homonymous opcode used also under <effect> header
Amplifier + width_onccNSFZ v2 +:heavy_check_mark: + Disambiguation needed: homonymous opcode used also under <effect> header (not supported yet there)
Amplifier + width_curveccNSFZ v2 +:heavy_check_mark: +
Amplifier + width_smoothccNSFZ v2 +:heavy_check_mark: +
Amplifier + width_stepccNSFZ v2 +:heavy_check_mark: +
Amplifier + amp_keycenterSFZ v1 +:heavy_check_mark: +
Amplifier + amp_keytrackSFZ v1 +:heavy_check_mark: +
Amplifier + amp_veltrackSFZ v1 +:heavy_check_mark: +
Amplifier + amp_veltrack_onccNARIA +:x: +
Amplifier + amp_veltrack_ccNARIA +:x: + + amp_veltrack_onccN alias.
Amplifier + amp_veltrack_curveccNARIA +:x: +
Amplifier + amp_veltrack_randomARIA +:x: +
Amplifier + amp_velcurve_NSFZ v1 +:heavy_check_mark: +
Amplifier + amp_randomSFZ v1 +:heavy_check_mark: +
Amplifier + gain_randomSFZ v2 +:x: + + amp_random alias.
Amplifier + rt_decaySFZ v1 +:heavy_check_mark: +
Amplifier + rt_decayNARIA +:x: +
Amplifier + rt_decayN_timeARIA +:x: +
Amplifier + xf_cccurveSFZ v1 +:heavy_check_mark: +
Amplifier + xf_keycurveSFZ v1 +:heavy_check_mark: +
Amplifier + xf_velcurveSFZ v1 +:heavy_check_mark: +
Amplifier + xfin_loccNSFZ v1 +:heavy_check_mark: +
Amplifier + xfin_hiccNSFZ v1 +:heavy_check_mark: +
Amplifier + xfout_loccNSFZ v1 +:heavy_check_mark: +
Amplifier + xfout_hiccNSFZ v1 +:heavy_check_mark: +
Amplifier + xfin_lokeySFZ v1 +:heavy_check_mark: +
Amplifier + xfin_hikeySFZ v1 +:heavy_check_mark: +
Amplifier + xfout_lokeySFZ v1 +:heavy_check_mark: +
Amplifier + xfout_hikeySFZ v1 +:heavy_check_mark: +
Amplifier + xfin_lovelSFZ v1 +:heavy_check_mark: +
Amplifier + xfin_hivelSFZ v1 +:heavy_check_mark: +
Amplifier + xfout_lovelSFZ v1 +:heavy_check_mark: +
Amplifier + xfout_hivelSFZ v1 +:heavy_check_mark: +
Amplifier + phaseSFZ v2 +:x: +
Amplifier + amplitudeARIA +:heavy_check_mark: +
Amplifier + amplitude_onccNARIA +:heavy_check_mark: +
Amplifier + amplitude_ccN +:heavy_check_mark: + + amplitude_onccN alias.
Amplifier + amplitude_curveccNARIA +:heavy_check_mark: +
Amplifier + amplitude_smoothccNARIA +:heavy_check_mark: +
Amplifier + global_amplitudeARIA +:heavy_check_mark: +
Amplifier + master_amplitudeARIA +:heavy_check_mark: +
Amplifier + group_amplitudeARIA +:heavy_check_mark: +
Amplifier + pan_lawARIA +:x: +
Amplifier + pan_keycenterSFZ v2 +:x: +
Amplifier + pan_keytrackSFZ v2 +:x: +
Amplifier + pan_veltrackSFZ v2 +:x: +
Amplifier + global_volumeARIA +:heavy_check_mark: +
Amplifier + master_volumeARIA +:heavy_check_mark: +
Amplifier + group_volumeARIA +:heavy_check_mark: +
EQ + eqN_bwSFZ v1 +:heavy_check_mark: +
EQ + eqN_bwccXSFZ v1 +:heavy_check_mark: +
EQ + eqN_bw_onccXSFZ v2 +:heavy_check_mark: + + eqN_bwccX alias.
EQ + eqN_freqSFZ v1 +:heavy_check_mark: +
EQ + eqN_freqccXSFZ v1 +:heavy_check_mark: +
EQ + eqN_freq_onccXSFZ v2 +:heavy_check_mark: + + eqN_freqccX alias.
EQ + eqN_vel2freqSFZ v1 +:heavy_check_mark: +
EQ + eqN_gainSFZ v1 +:heavy_check_mark: +
EQ + eqN_gainccXSFZ v1 +:heavy_check_mark: +
EQ + eqN_gain_onccXSFZ v2 +:heavy_check_mark: + + eqN_gainccX alias.
EQ + eqN_vel2gainSFZ v1 +:heavy_check_mark: +
EQ + eqN_dynamicARIA +:x: +
EQ + eqN_typeSFZ v2 +:heavy_check_mark: +
Filter + cutoffSFZ v1 +:heavy_check_mark: +
Filter + cutoff2SFZ v2 +:heavy_check_mark: + + cutoff alias.
Filter + cutoff2_ccNSFZ v2 +:x: +
Filter + cutoff2_onccNSFZ v2 +:heavy_check_mark: +
Filter + cutoff2_curveccNSFZ v2 +:x: +
Filter + cutoff2_smoothccNSFZ v2 +:x: +
Filter + cutoff2_stepccNSFZ v2 +:x: +
Filter + cutoff2_chanaftSFZ v2 +:heavy_check_mark: +
Filter + cutoff2_polyaftSFZ v2 +:heavy_check_mark: +
Filter + cutoff_ccNSFZ v1 +:heavy_check_mark: +
Filter + cutoff_onccNSFZ v2 +:heavy_check_mark: + + cutoff_ccN alias.
Filter + cutoff_curveccNSFZ v2 +:x: +
Filter + cutoff_smoothccNSFZ v2 +:x: +
Filter + cutoff_stepccNSFZ v2 +:x: +
Filter + cutoff_chanaftSFZ v1 +:heavy_check_mark: +
Filter + cutoff_polyaftSFZ v1 +:heavy_check_mark: +
Filter + fil_gainARIA +:heavy_check_mark: +
Filter + fil2_gainARIA +:heavy_check_mark: + + fil_gain alias.
Filter + fil2_gain_onccN +:heavy_check_mark: +
Filter + fil_gain_onccNARIA +:heavy_check_mark: +
Filter + fil_keycenterSFZ v1 +:heavy_check_mark: +
Filter + fil2_keycenterSFZ v2 +:heavy_check_mark: + + fil_keycenter alias.
Filter + fil_keytrackSFZ v1 +:heavy_check_mark: +
Filter + fil2_keytrackSFZ v2 +:heavy_check_mark: + + fil_keytrack alias.
Filter + fil_randomSFZ v1 +:heavy_check_mark: +
Filter + cutoff_randomSFZ v2 +:heavy_check_mark: + + fil_random alias.
Filter + cutoff2_randomARIA +:x: + + fil_random alias.
Filter + fil_typeSFZ v1 +:heavy_check_mark: +
Filter + filtypeSFZ v1 +:heavy_check_mark: + + fil_type alias.
Filter + fil2_typeSFZ v2 +:heavy_check_mark: + + fil_type alias.
Filter + fil_veltrackSFZ v1 +:heavy_check_mark: +
Filter + fil2_veltrackSFZ v2 +:heavy_check_mark: + + fil_veltrack alias.
Filter + resonanceSFZ v1 +:heavy_check_mark: +
Filter + resonance2SFZ v2 +:heavy_check_mark: + + resonance alias.
Filter + resonance2_onccNSFZ v2 +:heavy_check_mark: +
Filter + resonance2_ccNSFZ v2 +:heavy_check_mark: + + resonance2_onccN alias.
Filter + resonance2_curveccNSFZ v2 +:x: +
Filter + resonance2_smoothccNSFZ v2 +:x: +
Filter + resonance2_stepccNSFZ v2 +:x: +
Filter + resonance_onccNSFZ v2 +:heavy_check_mark: +
Filter + resonance_ccNSFZ v2 +:heavy_check_mark: + + resonance_onccN alias.
Filter + resonance_curveccNSFZ v2 +:x: +
Filter + resonance_smoothccNSFZ v2 +:x: +
Filter + resonance_stepccNSFZ v2 +:x: +
Filter + resonance_randomARIA +:x: +
Filter + resonance2_randomARIA +:x: +
Filter + noise_filterSFZ v2 +:x: +
Filter + noise_stereoSFZ v2 +:x: +
Filter + noise_levelSFZ v2 +:x: +
Filter + noise_level_onccNSFZ v2 +:x: +
Filter + noise_level_smoothccNSFZ v2 +:x: +
Filter + noise_stepSFZ v2 +:x: +
Filter + noise_step_onccNSFZ v2 +:x: +
Filter + noise_toneSFZ v2 +:x: +
Filter + noise_tone_onccNSFZ v2 +:x: +
Pitch + bend_upSFZ v1 +:heavy_check_mark: +
Pitch + bendupSFZ v1 +:heavy_check_mark: + + bend_up alias.
Pitch + bend_downSFZ v1 +:heavy_check_mark: +
Pitch + benddownSFZ v1 +:heavy_check_mark: + + bend_down alias.
Pitch + bend_smoothSFZ v2 +:heavy_check_mark: +
Pitch + bend_stepSFZ v1 +:heavy_check_mark: +
Pitch + bendstepSFZ v1 +:heavy_check_mark: + + bend_step alias.
Pitch + tuneSFZ v1 +:heavy_check_mark: +
Pitch + pitchARIA +:heavy_check_mark: + + tune alias.
Pitch + pitch_onccNSFZ v2 +:heavy_check_mark: +
Pitch + tune_ccNARIA +:heavy_check_mark: + + pitch_onccN alias.
Pitch + tune_onccNARIA +:heavy_check_mark: + + pitch_onccN alias.
Pitch + pitch_curveccNSFZ v2 +:heavy_check_mark: +
Pitch + tune_curveccNARIA +:heavy_check_mark: + + pitch_curveccN alias.
Pitch + pitch_smoothccNSFZ v2 +:heavy_check_mark: +
Pitch + tune_smoothccNARIA +:heavy_check_mark: + + pitch_smoothccN alias.
Pitch + pitch_stepccNSFZ v2 +:heavy_check_mark: +
Pitch + tune_stepccNARIA +:heavy_check_mark: + + pitch_stepccN alias.
Pitch + group_tuneARIA +:x: +
Pitch + master_tuneARIA +:x: +
Pitch + global_tuneARIA +:x: +
Pitch + pitch_keycenterSFZ v1 +:heavy_check_mark: + Plus sample as value
Pitch + pitch_keytrackSFZ v1 +:heavy_check_mark: +
Pitch + tune_keytrackARIA +:heavy_check_mark: + + pitch_keytrack alias.
Pitch + pitch_randomSFZ v1 +:heavy_check_mark: +
Pitch + tune_randomARIA +:heavy_check_mark: + + pitch_random alias.
Pitch + pitch_veltrackSFZ v1 +:heavy_check_mark: +
Pitch + tune_veltrackARIA +:heavy_check_mark: + + pitch_veltrack alias.
Pitch + transposeSFZ v1 +:heavy_check_mark: +
Pitch + bend_stepupSFZ v2 +:x: +
Pitch + bend_stepdownSFZ v2 +:x: +
Envelope Generators + ampeg_attackSFZ v1 +:heavy_check_mark: +
Envelope Generators + ampeg_attackccNSFZ v1 +:heavy_check_mark: +
Envelope Generators + ampeg_attack_onccNSFZ v2 +:heavy_check_mark: + + ampeg_attackccN alias.
Envelope Generators + ampeg_attack_curveccNARIA +:x: +
Envelope Generators + ampeg_vel2attackSFZ v1 +:heavy_check_mark: +
Envelope Generators + ampeg_decaySFZ v1 +:heavy_check_mark: +
Envelope Generators + ampeg_decayccNSFZ v1 +:heavy_check_mark: +
Envelope Generators + ampeg_decay_onccNSFZ v2 +:heavy_check_mark: + + ampeg_decayccN alias.
Envelope Generators + ampeg_decay_curveccNARIA +:x: +
Envelope Generators + ampeg_vel2decaySFZ v1 +:heavy_check_mark: +
Envelope Generators + ampeg_delaySFZ v1 +:heavy_check_mark: +
Envelope Generators + ampeg_delayccNSFZ v1 +:heavy_check_mark: +
Envelope Generators + ampeg_delay_onccNSFZ v2 +:heavy_check_mark: + + ampeg_delayccN alias.
Envelope Generators + ampeg_delay_curveccNARIA +:x: +
Envelope Generators + ampeg_vel2delaySFZ v1 +:heavy_check_mark: +
Envelope Generators + ampeg_holdSFZ v1 +:heavy_check_mark: +
Envelope Generators + ampeg_holdccNSFZ v1 +:heavy_check_mark: +
Envelope Generators + ampeg_hold_onccNSFZ v2 +:heavy_check_mark: + + ampeg_holdccN alias.
Envelope Generators + ampeg_hold_curveccNARIA +:x: +
Envelope Generators + ampeg_vel2holdSFZ v1 +:heavy_check_mark: +
Envelope Generators + ampeg_releaseSFZ v1 +:heavy_check_mark: +
Envelope Generators + ampeg_releaseccNSFZ v1 +:heavy_check_mark: +
Envelope Generators + ampeg_release_onccNSFZ v2 +:heavy_check_mark: + + ampeg_releaseccN alias.
Envelope Generators + ampeg_release_curveccNARIA +:x: +
Envelope Generators + ampeg_vel2releaseSFZ v1 +:heavy_check_mark: +
Envelope Generators + ampeg_sustainSFZ v1 +:heavy_check_mark: +
Envelope Generators + ampeg_sustainccNSFZ v1 +:heavy_check_mark: +
Envelope Generators + ampeg_sustain_onccNSFZ v2 +:heavy_check_mark: + + ampeg_sustainccN alias.
Envelope Generators + ampeg_sustain_curveccNARIA +:x: +
Envelope Generators + ampeg_vel2sustainSFZ v1 +:heavy_check_mark: +
Envelope Generators + ampeg_startSFZ v1 +:heavy_check_mark: +
Envelope Generators + ampeg_startccNSFZ v1 +:heavy_check_mark: +
Envelope Generators + ampeg_start_onccNSFZ v2 +:heavy_check_mark: + + ampeg_startccN alias.
Envelope Generators + ampeg_start_curveccNARIA +:x: +
Envelope Generators + ampeg_attack_shapeARIA +:x: +
Envelope Generators + ampeg_decay_shapeARIA +:x: +
Envelope Generators + ampeg_decay_zeroARIA +:x: +
Envelope Generators + ampeg_dynamicARIA +:x: +
Envelope Generators + ampeg_release_shapeARIA +:x: +
Envelope Generators + ampeg_release_zeroARIA +:x: +
Envelope Generators + fileg_attack_shapeARIA +:x: +
Envelope Generators + fileg_decay_shapeARIA +:x: +
Envelope Generators + fileg_decay_zeroARIA +:x: +
Envelope Generators + fileg_release_shapeARIA +:x: +
Envelope Generators + fileg_release_zeroARIA +:x: +
Envelope Generators + fileg_dynamicARIA +:x: +
Envelope Generators + pitcheg_attack_shapeARIA +:x: +
Envelope Generators + pitcheg_decay_shapeARIA +:x: +
Envelope Generators + pitcheg_decay_zeroARIA +:x: +
Envelope Generators + pitcheg_release_shapeARIA +:x: +
Envelope Generators + pitcheg_release_zeroARIA +:x: +
Envelope Generators + pitcheg_dynamicARIA +:x: +
Envelope Generators + fileg_attackSFZ v1 +:heavy_check_mark: +
Envelope Generators + fileg_attack_onccNARIA +:heavy_check_mark: +
Envelope Generators + fileg_attackccNARIA +:heavy_check_mark: + + fileg_attack_onccN alias.
Envelope Generators + fileg_attack_curveccNARIA +:x: +
Envelope Generators + fileg_vel2attackSFZ v1 +:heavy_check_mark: +
Envelope Generators + fileg_decaySFZ v1 +:heavy_check_mark: +
Envelope Generators + fileg_decay_onccNARIA +:heavy_check_mark: +
Envelope Generators + fileg_decayccNARIA +:heavy_check_mark: + + fileg_decay_onccN alias.
Envelope Generators + fileg_decay_curveccNARIA +:x: +
Envelope Generators + fileg_vel2decaySFZ v1 +:heavy_check_mark: +
Envelope Generators + fileg_delaySFZ v1 +:heavy_check_mark: +
Envelope Generators + fileg_delay_onccNARIA +:heavy_check_mark: +
Envelope Generators + fileg_delayccNARIA +:heavy_check_mark: + + fileg_delay_onccN alias.
Envelope Generators + fileg_delay_curveccNARIA +:x: +
Envelope Generators + fileg_vel2delaySFZ v1 +:heavy_check_mark: +
Envelope Generators + fileg_depthSFZ v1 +:heavy_check_mark: +
Envelope Generators + fileg_depth_onccNARIA +:heavy_check_mark: +
Envelope Generators + fileg_depthccNARIA +:heavy_check_mark: + + fileg_depth_onccN alias.
Envelope Generators + fileg_depth_curveccNARIA +:x: +
Envelope Generators + fileg_vel2depthSFZ v1 +:heavy_check_mark: +
Envelope Generators + fileg_holdSFZ v1 +:heavy_check_mark: +
Envelope Generators + fileg_hold_onccNARIA +:heavy_check_mark: +
Envelope Generators + fileg_holdccNARIA +:heavy_check_mark: + + fileg_hold_onccN alias.
Envelope Generators + fileg_hold_curveccNARIA +:x: +
Envelope Generators + fileg_vel2holdSFZ v1 +:heavy_check_mark: +
Envelope Generators + fileg_releaseSFZ v1 +:heavy_check_mark: +
Envelope Generators + fileg_release_onccNARIA +:heavy_check_mark: +
Envelope Generators + fileg_releaseccNARIA +:heavy_check_mark: + + fileg_release_onccN alias.
Envelope Generators + fileg_release_curveccNARIA +:x: +
Envelope Generators + fileg_vel2releaseSFZ v1 +:heavy_check_mark: +
Envelope Generators + fileg_startSFZ v1 +:heavy_check_mark: +
Envelope Generators + fileg_start_onccNARIA +:heavy_check_mark: +
Envelope Generators + fileg_startccNARIA +:heavy_check_mark: + + fileg_start_onccN alias.
Envelope Generators + fileg_start_curveccNARIA +:x: +
Envelope Generators + fileg_sustainSFZ v1 +:heavy_check_mark: +
Envelope Generators + fileg_sustain_onccNARIA +:heavy_check_mark: +
Envelope Generators + fileg_sustainccNARIA +:heavy_check_mark: + + fileg_sustain_onccN alias.
Envelope Generators + fileg_sustain_curveccNARIA +:x: +
Envelope Generators + fileg_vel2sustainSFZ v1 +:heavy_check_mark: +
Envelope Generators + pitcheg_attackSFZ v1 +:heavy_check_mark: +
Envelope Generators + pitcheg_attack_onccNARIA +:heavy_check_mark: +
Envelope Generators + pitcheg_attack_curveccNARIA +:x: +
Envelope Generators + pitcheg_vel2attackSFZ v1 +:heavy_check_mark: +
Envelope Generators + pitcheg_decaySFZ v1 +:heavy_check_mark: +
Envelope Generators + pitcheg_decay_onccNARIA +:heavy_check_mark: +
Envelope Generators + pitcheg_decay_curveccNARIA +:x: +
Envelope Generators + pitcheg_vel2decaySFZ v1 +:heavy_check_mark: +
Envelope Generators + pitcheg_delaySFZ v1 +:heavy_check_mark: +
Envelope Generators + pitcheg_delay_onccNARIA +:heavy_check_mark: +
Envelope Generators + pitcheg_delay_curveccNARIA +:x: +
Envelope Generators + pitcheg_vel2delaySFZ v1 +:heavy_check_mark: +
Envelope Generators + pitcheg_depthSFZ v1 +:heavy_check_mark: +
Envelope Generators + pitcheg_depth_onccNARIA +:heavy_check_mark: +
Envelope Generators + pitcheg_depthccNARIA +:heavy_check_mark: + + pitcheg_depth_onccN alias.
Envelope Generators + pitcheg_depth_curveccNARIA +:x: +
Envelope Generators + pitcheg_vel2depthSFZ v1 +:heavy_check_mark: +
Envelope Generators + pitcheg_holdSFZ v1 +:heavy_check_mark: +
Envelope Generators + pitcheg_hold_onccNARIA +:heavy_check_mark: +
Envelope Generators + pitcheg_hold_curveccNARIA +:x: +
Envelope Generators + pitcheg_vel2holdSFZ v1 +:heavy_check_mark: +
Envelope Generators + pitcheg_releaseSFZ v1 +:heavy_check_mark: +
Envelope Generators + pitcheg_release_onccNARIA +:heavy_check_mark: +
Envelope Generators + pitcheg_release_curveccNARIA +:x: +
Envelope Generators + pitcheg_vel2releaseSFZ v1 +:heavy_check_mark: +
Envelope Generators + pitcheg_startSFZ v1 +:heavy_check_mark: +
Envelope Generators + pitcheg_start_onccNARIA +:heavy_check_mark: +
Envelope Generators + pitcheg_start_curveccNARIA +:x: +
Envelope Generators + pitcheg_sustainSFZ v1 +:heavy_check_mark: +
Envelope Generators + pitcheg_sustain_onccNARIA +:heavy_check_mark: +
Envelope Generators + pitcheg_sustain_curveccNARIA +:x: +
Envelope Generators + pitcheg_vel2sustainSFZ v1 +:heavy_check_mark: +
Envelope Generators + egN_pointsSFZ v2 +:x: + Ignored
Envelope Generators + egN_timeXSFZ v2 +:heavy_check_mark: +
Envelope Generators + egN_timeX_onccYSFZ v2 +:construction: +
Envelope Generators + egN_levelXSFZ v2 +:heavy_check_mark: +
Envelope Generators + egN_levelX_onccYSFZ v2 +:construction: +
Envelope Generators + egN_ampegARIA +:heavy_check_mark: +
Envelope Generators + egN_dynamicARIA +:x: +
Envelope Generators + egN_shapeXSFZ v2 +:heavy_check_mark: +
Envelope Generators + egN_curveXSFZ v2 +:x: +
Envelope Generators + egN_sustainSFZ v2 +:heavy_check_mark: +
Envelope Generators + egN_loopSFZ v2 +:x: +
Envelope Generators + egN_loop_countSFZ v2 +:x: +
Envelope Generators + egN_volumeSFZ v2 +:heavy_check_mark: +
Envelope Generators + egN_volume_onccXSFZ v2 +:heavy_check_mark: +
Envelope Generators + egN_amplitudeSFZ v2 +:heavy_check_mark: +
Envelope Generators + egN_amplitude_onccXSFZ v2 +:heavy_check_mark: +
Envelope Generators + egN_panSFZ v2 +:heavy_check_mark: +
Envelope Generators + egN_pan_onccXSFZ v2 +:heavy_check_mark: +
Envelope Generators + egN_widthSFZ v2 +:heavy_check_mark: +
Envelope Generators + egN_width_onccXSFZ v2 +:heavy_check_mark: +
Envelope Generators + egN_pan_curveSFZ v2 +:x: +
Envelope Generators + egN_pan_curveccXSFZ v2 +:heavy_check_mark: +
Envelope Generators + egN_freq_lfoXSFZ v2 +:x: +
Envelope Generators + egN_depth_lfoXSFZ v2 +:x: +
Envelope Generators + egN_depthadd_lfoXSFZ v2 +:x: +
Envelope Generators + egN_pitchSFZ v2 +:heavy_check_mark: +
Envelope Generators + egN_pitch_onccXSFZ v2 +:heavy_check_mark: +
Envelope Generators + egN_cutoffSFZ v2 +:heavy_check_mark: +
Envelope Generators + egN_cutoff_onccXSFZ v2 +:heavy_check_mark: +
Envelope Generators + egN_cutoff2SFZ v2 +:heavy_check_mark: +
Envelope Generators + egN_cutoff2_onccXSFZ v2 +:heavy_check_mark: +
Envelope Generators + egN_resonanceSFZ v2 +:heavy_check_mark: +
Envelope Generators + egN_resonance_onccXSFZ v2 +:heavy_check_mark: +
Envelope Generators + egN_resonance2SFZ v2 +:heavy_check_mark: +
Envelope Generators + egN_resonance2_onccXSFZ v2 +:heavy_check_mark: +
Envelope Generators + egN_eqXfreqSFZ v2 +:heavy_check_mark: +
Envelope Generators + egN_eqXfreq_onccYSFZ v2 +:heavy_check_mark: +
Envelope Generators + egN_eqXbwSFZ v2 +:heavy_check_mark: +
Envelope Generators + egN_eqXbw_onccYSFZ v2 +:heavy_check_mark: +
Envelope Generators + egN_eqXgainSFZ v2 +:heavy_check_mark: +
Envelope Generators + egN_eqXgain_onccYSFZ v2 +:heavy_check_mark: +
Envelope Generators + egN_decimSFZ v2 +:x: +
Envelope Generators + egN_decim_onccXSFZ v2 +:x: +
Envelope Generators + egN_bitredSFZ v2 +:x: +
Envelope Generators + egN_bitred_onccXSFZ v2 +:x: +
Envelope Generators + egN_rectifySFZ v2 +:x: +
Envelope Generators + egN_rectify_onccXSFZ v2 +:x: +
Envelope Generators + egN_ringmodSFZ v2 +:x: +
Envelope Generators + egN_ringmod_onccXSFZ v2 +:x: +
Envelope Generators + egN_noiselevelSFZ v2 +:x: +
Envelope Generators + egN_noiselevel_onccXSFZ v2 +:x: +
Envelope Generators + egN_noisestepSFZ v2 +:x: +
Envelope Generators + egN_noisestep_onccXSFZ v2 +:x: +
Envelope Generators + egN_noisetoneSFZ v2 +:x: +
Envelope Generators + egN_noisetone_onccXSFZ v2 +:x: +
Envelope Generators + egN_driveshapeSFZ v2 +:x: +
Envelope Generators + egN_driveshape_onccXSFZ v2 +:x: +
LFO + amplfo_delaySFZ v1 +:heavy_check_mark: +
LFO + amplfo_depthSFZ v1 +:heavy_check_mark: +
LFO + amplfo_depthccNSFZ v1 +:heavy_check_mark: +
LFO + amplfo_depth_onccNSFZ v2 +:heavy_check_mark: + + amplfo_depthccN alias.
LFO + amplfo_depthchanaftSFZ v1 +:heavy_check_mark: +
LFO + amplfo_depthpolyaftSFZ v1 +:heavy_check_mark: +
LFO + amplfo_fadeSFZ v1 +:heavy_check_mark: +
LFO + amplfo_freqSFZ v1 +:heavy_check_mark: +
LFO + amplfo_freqccNSFZ v1 +:heavy_check_mark: +
LFO + amplfo_freqchanaftSFZ v1 +:heavy_check_mark: +
LFO + amplfo_freqpolyaftSFZ v1 +:heavy_check_mark: +
LFO + fillfo_delaySFZ v1 +:heavy_check_mark: +
LFO + fillfo_depthSFZ v1 +:heavy_check_mark: +
LFO + fillfo_depthccNSFZ v1 +:heavy_check_mark: +
LFO + fillfo_depth_onccNSFZ v2 +:heavy_check_mark: + + fillfo_depthccN alias.
LFO + fillfo_depthchanaftSFZ v1 +:heavy_check_mark: +
LFO + fillfo_depthpolyaftSFZ v1 +:heavy_check_mark: +
LFO + fillfo_fadeSFZ v1 +:heavy_check_mark: +
LFO + fillfo_freqSFZ v1 +:heavy_check_mark: +
LFO + fillfo_freqccNSFZ v1 +:heavy_check_mark: +
LFO + fillfo_freqchanaftSFZ v1 +:heavy_check_mark: +
LFO + fillfo_freqpolyaftSFZ v1 +:heavy_check_mark: +
LFO + pitchlfo_delaySFZ v1 +:heavy_check_mark: +
LFO + pitchlfo_depthSFZ v1 +:heavy_check_mark: +
LFO + pitchlfo_depthccNSFZ v1 +:heavy_check_mark: +
LFO + pitchlfo_depth_onccNSFZ v2 +:heavy_check_mark: + + pitchlfo_depthccN alias.
LFO + pitchlfo_depthchanaftSFZ v1 +:heavy_check_mark: +
LFO + pitchlfo_depthpolyaftSFZ v1 +:heavy_check_mark: +
LFO + pitchlfo_fadeSFZ v1 +:heavy_check_mark: +
LFO + pitchlfo_freqSFZ v1 +:heavy_check_mark: +
LFO + pitchlfo_freqccNSFZ v1 +:heavy_check_mark: +
LFO + pitchlfo_freqchanaftSFZ v1 +:heavy_check_mark: +
LFO + pitchlfo_freqpolyaftSFZ v1 +:heavy_check_mark: +
LFO + lfoN_freqSFZ v2 +:heavy_check_mark: +
LFO + lfoN_freq_onccXSFZ v2 +:heavy_check_mark: +
LFO + lfoN_freq_smoothccXSFZ v2 +:heavy_check_mark: +
LFO + lfoN_freq_stepccXSFZ v2 +:heavy_check_mark: +
LFO + lfoN_delaySFZ v2 +:heavy_check_mark: +
LFO + lfoN_delay_onccXSFZ v2 +:heavy_check_mark: +
LFO + lfoN_fadeSFZ v2 +:heavy_check_mark: +
LFO + lfoN_fade_onccXSFZ v2 +:heavy_check_mark: +
LFO + lfoN_phaseSFZ v2 +:heavy_check_mark: +
LFO + lfoN_phase_onccXSFZ v2 +:heavy_check_mark: +
LFO + lfoN_countSFZ v2 +:x: +
LFO + lfoN_waveSFZ v2 +:heavy_check_mark: +
LFO + lfoN_waveXARIA +:heavy_check_mark: + + lfoN_wave alias.
LFO + lfoN_wave_onccXARIA +:x: +
LFO + lfoN_stepsSFZ v2 +:heavy_check_mark: +
LFO + lfoN_stepXSFZ v2 +:heavy_check_mark: +
LFO + lfoN_stepX_onccYSFZ v2 +:x: +
LFO + lfoN_smoothSFZ v2 +:x: +
LFO + lfoN_smooth_onccXSFZ v2 +:x: +
LFO + lfoN_volumeSFZ v2 +:heavy_check_mark: +
LFO + lfoN_volume_onccXSFZ v2 +:heavy_check_mark: +
LFO + lfoN_volume_smoothccXSFZ v2 +:heavy_check_mark: +
LFO + lfoN_volume_stepccXSFZ v2 +:heavy_check_mark: +
LFO + lfoN_amplitudeSFZ v2 +:heavy_check_mark: +
LFO + lfoN_amplitude_onccXSFZ v2 +:heavy_check_mark: +
LFO + lfoN_amplitude_smoothccXSFZ v2 +:heavy_check_mark: +
LFO + lfoN_amplitude_stepccXSFZ v2 +:heavy_check_mark: +
LFO + lfoN_panSFZ v2 +:heavy_check_mark: +
LFO + lfoN_pan_onccXSFZ v2 +:heavy_check_mark: +
LFO + lfoN_pan_smoothccXSFZ v2 +:heavy_check_mark: +
LFO + lfoN_pan_stepccXSFZ v2 +:heavy_check_mark: +
LFO + lfoN_widthSFZ v2 +:heavy_check_mark: +
LFO + lfoN_width_onccXSFZ v2 +:heavy_check_mark: +
LFO + lfoN_width_smoothccXSFZ v2 +:heavy_check_mark: +
LFO + lfoN_width_stepccXSFZ v2 +:heavy_check_mark: +
LFO + lfoN_freq_lfoXSFZ v2 +:x: +
LFO + lfoN_freq_lfoX_onccYARIA +:x: +
LFO + lfoN_depth_lfoXSFZ v2 +:x: +
LFO + lfoN_depthadd_lfoXSFZ v2 +:x: +
LFO + lfoN_pitchSFZ v2 +:heavy_check_mark: +
LFO + lfoN_pitch_curveccXSFZ v2 +:heavy_check_mark: +
LFO + lfoN_pitch_onccXSFZ v2 +:heavy_check_mark: +
LFO + lfoN_pitch_smoothccXSFZ v2 +:heavy_check_mark: +
LFO + lfoN_pitch_stepccXSFZ v2 +:heavy_check_mark: +
LFO + lfoN_cutoffSFZ v2 +:heavy_check_mark: +
LFO + lfoN_cutoff2SFZ v2 +:heavy_check_mark: + + lfoN_cutoff alias.
LFO + lfoN_cutoff2_onccXSFZ v2 +:heavy_check_mark: +
LFO + lfoN_cutoff2_smoothccXSFZ v2 +:heavy_check_mark: +
LFO + lfoN_cutoff2_stepccXSFZ v2 +:heavy_check_mark: +
LFO + lfoN_cutoff_onccXSFZ v2 +:heavy_check_mark: +
LFO + lfoN_cutoff_smoothccXSFZ v2 +:heavy_check_mark: +
LFO + lfoN_cutoff_stepccXSFZ v2 +:heavy_check_mark: +
LFO + lfoN_resonanceSFZ v2 +:heavy_check_mark: +
LFO + lfoN_resonance2SFZ v2 +:heavy_check_mark: + + lfoN_resonance alias.
LFO + lfoN_resonance2_onccXSFZ v2 +:heavy_check_mark: +
LFO + lfoN_resonance2_smoothccXSFZ v2 +:heavy_check_mark: +
LFO + lfoN_resonance2_stepccXSFZ v2 +:heavy_check_mark: +
LFO + lfoN_resonance_onccXSFZ v2 +:heavy_check_mark: +
LFO + lfoN_resonance_smoothccXSFZ v2 +:heavy_check_mark: +
LFO + lfoN_resonance_stepccXSFZ v2 +:heavy_check_mark: +
LFO + lfoN_eqXfreqSFZ v2 +:heavy_check_mark: +
LFO + lfoN_eqXfreq_onccYSFZ v2 +:heavy_check_mark: +
LFO + lfoN_eqXfreq_smoothccYSFZ v2 +:heavy_check_mark: +
LFO + lfoN_eqXfreq_stepccYSFZ v2 +:heavy_check_mark: +
LFO + lfoN_eqXbwSFZ v2 +:heavy_check_mark: +
LFO + lfoN_eqXbw_onccYSFZ v2 +:heavy_check_mark: +
LFO + lfoN_eqXbw_smoothccYSFZ v2 +:heavy_check_mark: +
LFO + lfoN_eqXbw_stepccYSFZ v2 +:heavy_check_mark: +
LFO + lfoN_eqXgainSFZ v2 +:heavy_check_mark: +
LFO + lfoN_eqXgain_onccYSFZ v2 +:heavy_check_mark: +
LFO + lfoN_eqXgain_smoothccYSFZ v2 +:heavy_check_mark: +
LFO + lfoN_eqXgain_stepccYSFZ v2 +:heavy_check_mark: +
LFO + lfoN_decimSFZ v2 +:x: +
LFO + lfoN_decim_onccXSFZ v2 +:x: +
LFO + lfoN_decim_smoothccXSFZ v2 +:x: +
LFO + lfoN_decim_stepccXSFZ v2 +:x: +
LFO + lfoN_bitredSFZ v2 +:x: +
LFO + lfoN_bitred_onccXSFZ v2 +:x: +
LFO + lfoN_bitred_smoothccXSFZ v2 +:x: +
LFO + lfoN_bitred_stepccXSFZ v2 +:x: +
LFO + lfoN_noiselevelSFZ v2 +:x: +
LFO + lfoN_noiselevel_onccXSFZ v2 +:x: +
LFO + lfoN_noiselevel_smoothccXSFZ v2 +:x: +
LFO + lfoN_noiselevel_stepccXSFZ v2 +:x: +
LFO + lfoN_noisestepSFZ v2 +:x: +
LFO + lfoN_noisestep_onccXSFZ v2 +:x: +
LFO + lfoN_noisestep_smoothccXSFZ v2 +:x: +
LFO + lfoN_noisestep_stepccXSFZ v2 +:x: +
LFO + lfoN_noisetoneSFZ v2 +:x: +
LFO + lfoN_noisetone_onccXSFZ v2 +:x: +
LFO + lfoN_noisetone_smoothccXSFZ v2 +:x: +
LFO + lfoN_noisetone_stepccXSFZ v2 +:x: +
LFO + lfoN_driveSFZ v2 +:x: +
LFO + lfoN_drive_onccXSFZ v2 +:x: +
LFO + lfoN_drive_smoothccXSFZ v2 +:x: +
LFO + lfoN_drive_stepccXSFZ v2 +:x: +
LFO + lfoN_offsetARIA +:heavy_check_mark: +
LFO + lfoN_offsetXARIA +:heavy_check_mark: + + lfoN_offset alias.
LFO + lfoN_ratioARIA +:heavy_check_mark: +
LFO + lfoN_ratioXARIA +:heavy_check_mark: + + lfoN_ratio alias.
LFO + lfoN_scaleARIA +:heavy_check_mark: +
LFO + lfoN_scaleXARIA +:heavy_check_mark: + + lfoN_scale alias.
LFO + lfoN_sample_dyn_paramXARIA +:x: +
LFO + lfoN_sample_dyn_paramX_onccYARIA +:x: +
Curves + curve_indexARIA +:heavy_check_mark: +
Curves + vNNNSFZ v2 +:x: +
Effects + apan_depthSFZ v2 +:heavy_check_mark: +
Effects + apan_depth_onccNSFZ v2 +:x: +
Effects + apan_drySFZ v2 +:heavy_check_mark: +
Effects + apan_dry_onccNSFZ v2 +:x: +
Effects + apan_freqSFZ v2 +:heavy_check_mark: +
Effects + apan_freq_onccNSFZ v2 +:x: +
Effects + apan_phaseSFZ v2 +:heavy_check_mark: +
Effects + apan_phase_onccNSFZ v2 +:x: +
Effects + apan_waveformSFZ v2 +:x: +
Effects + apan_wetSFZ v2 +:heavy_check_mark: +
Effects + apan_wet_onccNSFZ v2 +:x: +
Effects + bitredSFZ v2 +:heavy_check_mark: +
Effects + bitred_onccNSFZ v2 +:x: +
Effects + bitred_curveccNSFZ v2 +:x: +
Effects + bitred_smoothccNSFZ v2 +:x: +
Effects + bitred_stepccNSFZ v2 +:x: +
Effects + busSFZ v2 +:heavy_check_mark: +
Effects + bypass_onccNSFZ v2 +:x: +
Effects + comp_attackSFZ v2 +:heavy_check_mark: +
Effects + comp_gainSFZ v2 +:heavy_check_mark: +
Effects + comp_ratioSFZ v2 +:heavy_check_mark: +
Effects + comp_releaseSFZ v2 +:heavy_check_mark: +
Effects + comp_stlinkSFZ v2 +:heavy_check_mark: +
Effects + comp_thresholdSFZ v2 +:heavy_check_mark: +
Effects + decimSFZ v2 +:heavy_check_mark: +
Effects + decim_onccNSFZ v2 +:x: +
Effects + decim_curveccNSFZ v2 +:x: +
Effects + decim_smoothccNSFZ v2 +:x: +
Effects + decim_stepccNSFZ v2 +:x: +
Effects + delay_cutoffSFZ v2 +:x: +
Effects + delay_cutoff_onccNSFZ v2 +:x: +
Effects + delay_damphiSFZ v2 +:x: +
Effects + delay_damphi_onccNSFZ v2 +:x: +
Effects + delay_damploSFZ v2 +:x: +
Effects + delay_damplo_onccNSFZ v2 +:x: +
Effects + delay_drySFZ v2 +:x: +
Effects + delay_dry_onccNSFZ v2 +:x: +
Effects + delay_feedbackSFZ v2 +:x: +
Effects + delay_feedback_onccNSFZ v2 +:x: +
Effects + delay_filterSFZ v2 +:x: +
Effects + delay_inputSFZ v2 +:x: +
Effects + delay_input_onccNSFZ v2 +:x: +
Effects + delay_levelcSFZ v2 +:x: +
Effects + delay_levellSFZ v2 +:x: +
Effects + delay_levelrSFZ v2 +:x: +
Effects + delay_lfofreqSFZ v2 +:x: +
Effects + delay_lfofreq_onccNSFZ v2 +:x: +
Effects + delay_moddepthSFZ v2 +:x: +
Effects + delay_moddepth_onccNSFZ v2 +:x: +
Effects + delay_modeSFZ v2 +:x: +
Effects + delay_pancSFZ v2 +:x: +
Effects + delay_panc_onccNSFZ v2 +:x: +
Effects + delay_panlSFZ v2 +:x: +
Effects + delay_panl_onccNSFZ v2 +:x: +
Effects + delay_panrSFZ v2 +:x: +
Effects + delay_panr_onccNSFZ v2 +:x: +
Effects + delay_resonanceSFZ v2 +:x: +
Effects + delay_resonance_onccNSFZ v2 +:x: +
Effects + delay_spreadSFZ v2 +:x: +
Effects + delay_spread_onccNSFZ v2 +:x: +
Effects + delay_syncc_onccNSFZ v2 +:x: +
Effects + delay_syncl_onccNSFZ v2 +:x: +
Effects + delay_syncr_onccNSFZ v2 +:x: +
Effects + delay_time_tapSFZ v2 +:x: +
Effects + delay_timecSFZ v2 +:x: +
Effects + delay_timec_onccNSFZ v2 +:x: +
Effects + delay_timelSFZ v2 +:x: +
Effects + delay_timel_onccNSFZ v2 +:x: +
Effects + delay_timerSFZ v2 +:x: +
Effects + delay_timer_onccNSFZ v2 +:x: +
Effects + delay_wetSFZ v2 +:x: +
Effects + delay_wet_onccNSFZ v2 +:x: +
Effects + directtomainSFZ v2 +:heavy_check_mark: +
Effects + disto_depthSFZ v2 +:x: +
Effects + disto_depth_onccNSFZ v2 +:x: +
Effects + disto_drySFZ v2 +:x: +
Effects + disto_dry_onccNSFZ v2 +:x: +
Effects + disto_stagesSFZ v2 +:x: +
Effects + disto_toneSFZ v2 +:x: +
Effects + disto_tone_onccNSFZ v2 +:x: +
Effects + disto_wetSFZ v2 +:x: +
Effects + disto_wet_onccNSFZ v2 +:x: +
Effects + dsp_orderSFZ v2 +:x: +
Effects + effect1SFZ v1 +:heavy_check_mark: +
Effects + effect2SFZ v1 +:heavy_check_mark: +
Effects + effect3SFZ v2 +:heavy_check_mark: +
Effects + effect4SFZ v2 +:heavy_check_mark: +
Effects + eq_bwSFZ v2 +:heavy_check_mark: +
Effects + eq_bw_onccNSFZ v2 +:x: +
Effects + eq_freqSFZ v2 +:heavy_check_mark: +
Effects + eq_freq_onccNSFZ v2 +:x: +
Effects + eq_gainSFZ v2 +:heavy_check_mark: +
Effects + eq_gain_onccNSFZ v2 +:x: +
Effects + eq_typeSFZ v2 +:x: +
Effects + filter_cutoffSFZ v2 +:heavy_check_mark: +
Effects + filter_cutoff_onccNSFZ v2 +:x: +
Effects + filter_resonanceSFZ v2 +:heavy_check_mark: +
Effects + filter_resonance_onccNSFZ v2 +:x: +
Effects + filter_typeSFZ v2 +:heavy_check_mark: +
Effects + fxNtomainSFZ v2 +:heavy_check_mark: +
Effects + fxNtomixSFZ v2 +:x: +
Effects + gate_onccNSFZ v2 +:x: +
Effects + gate_attackSFZ v2 +:heavy_check_mark: +
Effects + gate_releaseSFZ v2 +:heavy_check_mark: +
Effects + gate_stlinkSFZ v2 +:heavy_check_mark: +
Effects + gate_thresholdSFZ v2 +:heavy_check_mark: +
Effects + internalSFZ v2 +:x: +
Effects + param_offsetARIA +:x: +
Effects + phaser_depthSFZ v2 +:x: +
Effects + phaser_depth_onccNSFZ v2 +:x: +
Effects + phaser_feedbackSFZ v2 +:x: +
Effects + phaser_feedback_onccNSFZ v2 +:x: +
Effects + phaser_freqSFZ v2 +:x: +
Effects + phaser_freq_onccNSFZ v2 +:x: +
Effects + phaser_phase_onccNSFZ v2 +:x: +
Effects + phaser_stagesSFZ v2 +:x: +
Effects + phaser_waveformSFZ v2 +:x: +
Effects + phaser_wetSFZ v2 +:x: +
Effects + phaser_wet_onccNSFZ v2 +:x: +
Effects + reverb_dampSFZ v2 +:heavy_check_mark: +
Effects + reverb_damp_onccNSFZ v2 +:x: +
Effects + reverb_drySFZ v2 +:heavy_check_mark: +
Effects + reverb_dry_onccNSFZ v2 +:x: +
Effects + reverb_inputSFZ v2 +:heavy_check_mark: +
Effects + reverb_input_onccNSFZ v2 +:x: +
Effects + reverb_predelaySFZ v2 +:heavy_check_mark: +
Effects + reverb_predelay_onccNSFZ v2 +:x: +
Effects + reverb_sizeSFZ v2 +:heavy_check_mark: +
Effects + reverb_size_onccNSFZ v2 +:x: +
Effects + reverb_toneSFZ v2 +:heavy_check_mark: +
Effects + reverb_tone_onccNSFZ v2 +:x: +
Effects + reverb_typeSFZ v2 +:heavy_check_mark: +
Effects + reverb_wetSFZ v2 +:heavy_check_mark: +
Effects + reverb_wet_onccNSFZ v2 +:x: +
Effects + static_cyclic_levelSFZ v2 +:x: +
Effects + static_cyclic_timeSFZ v2 +:x: +
Effects + static_filterSFZ v2 +:x: +
Effects + static_levelSFZ v2 +:x: +
Effects + static_level_onccNSFZ v2 +:x: +
Effects + static_random_levelSFZ v2 +:x: +
Effects + static_random_maxtimeSFZ v2 +:x: +
Effects + static_random_mintimeSFZ v2 +:x: +
Effects + static_stereoSFZ v2 +:x: +
Effects + static_toneSFZ v2 +:x: +
Effects + strings_numberSFZ v2 +:heavy_check_mark: + Difference of behavior
Effects + strings_wet_onccNSFZ v2 +:x: +
Effects + tdfir_drySFZ v2 +:x: +
Effects + tdfir_dry_onccNSFZ v2 +:x: +
Effects + tdfir_gainSFZ v2 +:x: +
Effects + tdfir_impulseSFZ v2 +:x: +
Effects + tdfir_wetSFZ v2 +:x: +
Effects + tdfir_wet_onccNSFZ v2 +:x: +
Effects + typeSFZ v2 +:heavy_check_mark: +
Effects + vendor_specificARIA +:x: +
Loading + load_modeSFZ v2 +:x: +
Loading + load_startSFZ v2 +:x: +
Loading + load_endSFZ v2 +:x: +
Loading + sample_qualitySFZ v2 +:heavy_check_mark: +
Loading + imageSFZ v2 +:heavy_check_mark: +
Wavetable Oscillator + oscillatorSFZ v2 +:heavy_check_mark: +
Wavetable Oscillator + oscillator_detuneSFZ v2 +:heavy_check_mark: +
Wavetable Oscillator + oscillator_detune_onccNSFZ v2 +:heavy_check_mark: +
Wavetable Oscillator + oscillator_modeSFZ v2 +:heavy_check_mark: + PM and FM same behavior, for now
Wavetable Oscillator + oscillator_mod_depthSFZ v2 +:heavy_check_mark: +
Wavetable Oscillator + oscillator_mod_depth_onccNSFZ v2 +:heavy_check_mark: +
Wavetable Oscillator + oscillator_mod_smoothccNSFZ v2 +:x: +
Wavetable Oscillator + oscillator_multiSFZ v2 +:heavy_check_mark: +
Wavetable Oscillator + oscillator_phaseSFZ v2 +:heavy_check_mark: +
Wavetable Oscillator + oscillator_qualitySFZ v2 +:heavy_check_mark: +
Wavetable Oscillator + oscillator_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-2023 + 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..de6223a4 --- /dev/null +++ b/sfizz/downloads/index.html @@ -0,0 +1,714 @@ + + + + + + + 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-2023 + 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..5cfb0fd6 --- /dev/null +++ b/sfizz/engine_description/index.html @@ -0,0 +1,809 @@ + + + + + + + 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-2023 + 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..ee01dea1 --- /dev/null +++ b/sfizz/faq/index.html @@ -0,0 +1,680 @@ + + + + + + + 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-2023 + 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..6f6f8d44 --- /dev/null +++ b/sfizz/index.html @@ -0,0 +1,701 @@ + + + + + + + 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-2023 + 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..5d58b8fd --- /dev/null +++ b/sfizz/quick_reference/index.html @@ -0,0 +1,752 @@ + + + + + + + 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-2023 + 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..06eeacbc --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,158 @@ + + + + https://sfz.tools/ + 2023-12-27 + daily + + + https://sfz.tools/contacts/ + 2023-12-27 + daily + + + https://sfz.tools/faq/ + 2023-12-27 + daily + + + https://sfz.tools/news/ + 2023-12-27 + daily + + + https://sfz.tools/news/posts/2019-06-03-documentation-website/ + 2023-12-27 + daily + + + https://sfz.tools/news/posts/2020-01-30-sfizz-0.2.0-release/ + 2023-12-27 + daily + + + https://sfz.tools/news/posts/2020-02-29-sfizz-0.3.0-release/ + 2023-12-27 + daily + + + https://sfz.tools/news/posts/2020-03-14-sfizz-0.3.1-release/ + 2023-12-27 + daily + + + https://sfz.tools/news/posts/2020-04-03-sfizz-0.3.2-release/ + 2023-12-27 + daily + + + https://sfz.tools/news/posts/2020-07-24-sfizz-0.4.0-release/ + 2023-12-27 + daily + + + https://sfz.tools/news/posts/2020-10-15-sfizz-0.5.0-release/ + 2023-12-27 + daily + + + https://sfz.tools/news/posts/2020-10-25-sfizz-0.5.1-release/ + 2023-12-27 + daily + + + https://sfz.tools/news/posts/2021-04-16-sfizz-1.0.0-release/ + 2023-12-27 + daily + + + https://sfz.tools/news/posts/2021-10-23-sfizz-1.1.0-release/ + 2023-12-27 + daily + + + https://sfz.tools/news/posts/2021-11-08-sfizz-1.1.1-release/ + 2023-12-27 + daily + + + https://sfz.tools/news/posts/2022-01-15-sfizz-1.2.0-release/ + 2023-12-27 + daily + + + https://sfz.tools/news/posts/2023-04-15-sfizz-1.2.1-release/ + 2023-12-27 + daily + + + https://sfz.tools/news/posts/2023-08-26-sfizz-1.2.2-release/ + 2023-12-27 + daily + + + https://sfz.tools/sfizz/ + 2023-12-27 + daily + + + https://sfz.tools/sfizz/downloads/ + 2023-12-27 + daily + + + https://sfz.tools/sfizz/engine_description/ + 2023-12-27 + daily + + + https://sfz.tools/sfizz/faq/ + 2023-12-27 + daily + + + https://sfz.tools/sfizz/quick_reference/ + 2023-12-27 + daily + + + https://sfz.tools/sfizz/api/ + 2023-12-27 + daily + + + https://sfz.tools/sfizz/api/sfizz.h/ + 2023-12-27 + daily + + + https://sfz.tools/sfizz/api/sfizz.hpp/ + 2023-12-27 + daily + + + https://sfz.tools/sfizz/api/sfizz_message.h/ + 2023-12-27 + daily + + + https://sfz.tools/sfizz/development/build/ + 2023-12-27 + daily + + + https://sfz.tools/sfizz/development/build/linux/ + 2023-12-27 + daily + + + https://sfz.tools/sfizz/development/status/ + 2023-12-27 + daily + + + https://sfz.tools/sfizz/development/status/opcodes/ + 2023-12-27 + daily + + \ No newline at end of file diff --git a/sitemap.xml.gz b/sitemap.xml.gz new file mode 100644 index 00000000..ad540f60 Binary files /dev/null and b/sitemap.xml.gz differ