-
Convert HTML to Markdown
-web developer and programmer tools
-Need to convert Markdown to HTML instead?
-Use the Markdown to HTML Converter!
-Looking for more programming tools? Try these!
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Text Columns to Rows Converter
-Text Rows to Columns Converter
- - - - - - - - - - - -Text to HTML Entities Converter
-UNIX time to UTC time Converter
-UTC time to UNIX time Converter
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Seconds to Human Readable Time
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Binary Bitwise NAND Calculator
- - - -Binary Bitwise XNOR Calculator
- - - - -Binary Bit Rotator to the Left
-Binary Bit Rotator to the Right
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Text Character Rotator to the Left
-Text Character Rotator to the Right
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Number of Letters in Text Counter
-Number of Words in Text Counter
-Number of Lines in Text Counter
-Number of Paragraphs in Text Counter
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Decimal to Scientific Converter
-Scientific to Decimal Converter
- - - - - - - - - - - - - - - - - - - - -Celsius to Fahrenheit Converter
-Fahrenheit to Celsius Converter
- - - - - - +Convert HTML to Markdown
+web developer and programmer tools
+Need to convert Markdown to HTML instead?
+Use the Markdown to HTML Converter!
+Looking for more programming tools? Try these!
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Text Columns to Rows Converter
+Text Rows to Columns Converter
+ + + + + + + + + + + +Text to HTML Entities Converter
+UNIX time to UTC time Converter
+UTC time to UNIX time Converter
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Seconds to Human Readable Time
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Binary Bitwise NAND Calculator
+ + + +Binary Bitwise XNOR Calculator
+ + + + +Binary Bit Rotator to the Left
+Binary Bit Rotator to the Right
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Text Character Rotator to the Left
+Text Character Rotator to the Right
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Number of Letters in Text Counter
+Number of Words in Text Counter
+Number of Lines in Text Counter
+Number of Paragraphs in Text Counter
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Decimal to Scientific Converter
+Scientific to Decimal Converter
+ + + + + + + + + + + + + + + + + + + + +Celsius to Fahrenheit Converter
+ + + + + + + +web developer and programmer tools
}); } -web developer and programmer tools
web developer and programmer tools
web developer and programmer tools
BizSpark program for startups.
- `, or to a parent if there are multiple elements to show. */ +.message { margin-bottom: 1rem; padding: 1rem; color: #717171; background-color: #f9f9f9; } + +/* Container Center the page content. */ +.container { max-width: 38rem; padding-left: 1rem; padding-right: 1rem; margin-left: auto; margin-right: auto; } + +/* Masthead Super small header above the content for site name and short description. */ +.masthead { padding-top: 1rem; padding-bottom: 1rem; margin-bottom: 3rem; } + +.masthead-title { margin-top: 0; margin-bottom: 0; color: #505050; } + +.masthead-title a { color: #505050; } + +.masthead-title small { font-size: 75%; font-weight: 400; color: #c0c0c0; letter-spacing: 0; } + +/* Posts and pages Each post is wrapped in `.post` and is used on default and post layouts. Each page is wrapped in `.page` and is only used on the page layout. */ +.page, .post { /* margin-bottom: 4em; */ } + +/* Blog post or page title */ +.page-title, .post-title, .post-title a { color: #303030; } + +.page-title, .post-title { margin-top: 0; } + +/* Meta data line below post title */ +.post-date { display: block; margin-top: -.5rem; margin-bottom: 1rem; color: #9a9a9a; } + +/* Related posts */ +.related { padding-top: 2rem; padding-bottom: 2rem; border-top: 1px solid #eee; } + +.related-posts { padding-left: 0; list-style: none; } + +.related-posts h3 { margin-top: 0; } + +.related-posts li small { font-size: 75%; color: #999; } + +.related-posts li a:hover { color: #268bd2; text-decoration: none; } + +.related-posts li a:hover small { color: inherit; } + +/* Pagination Super lightweight (HTML-wise) blog pagination. `span`s are provide for when there are no more previous or next posts to show. */ +.pagination { overflow: hidden; /* clearfix */ margin-left: -1rem; margin-right: -1rem; font-family: "PT Sans", Helvetica, Arial, sans-serif; color: #ccc; text-align: center; } + +/* Pagination items can be `span`s or `a`s */ +.pagination-item { display: block; padding: 1rem; border: 1px solid #eee; } + +.pagination-item:first-child { margin-bottom: -1px; } + +/* Only provide a hover state for linked pagination items */ +a.pagination-item:hover { background-color: #f5f5f5; } + +@media (min-width: 30em) { .pagination { margin: 3rem 0; } .pagination-item { float: left; width: 50%; } .pagination-item:first-child { margin-bottom: 0; border-top-left-radius: 4px; border-bottom-left-radius: 4px; } .pagination-item:last-child { margin-left: -1px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; } } + +/* ___ /\_ \ \//\ \ __ ___ __ __ ___ ___ \ \ \ /'__`\ /' _ `\/\ \/\ \ / __`\ /' _ `\ \_\ \_/\ \_\.\_/\ \/\ \ \ \_\ \/\ \_\ \/\ \/\ \ /\____\ \__/.\_\ \_\ \_\/`____ \ \____/\ \_\ \_\ \/____/\/__/\/_/\/_/\/_/`/___/> \/___/ \/_/\/_/ /\___/ \/__/ Designed, built, and released under MIT license by @mdo. Learn more at https://github.com/poole/lanyon. */ +/* Contents Global resets Masthead Sidebar Slide effect Posts and pages Pagination Reverse layout Themes */ +/* Global resets Update the foundational and global aspects of the page. */ +/* Prevent scroll on narrow devices */ +html, body { overflow-x: hidden; color: #444; } + +html { font-family: 'Montserrat', sans-serif; } + +h1 { font-family: 'Montserrat', sans-serif; font-weight: 300; color: #313131; letter-spacing: -2px; } + +h2, h3, h4, h5, h6 { font-family: 'Raleway', sans-serif; font-weight: 100; color: #313131; letter-spacing: -1.5px; margin-top: -10px; margin-bottom: 32px; } + +a:hover { text-decoration: none !important; color: #0e6e90 !important; } + +#nav-items a::after { content: ''; display: block; width: 0; height: 2px; background: #0e6e90; transition: width .3s; } + +#nav-items a:hover::after { width: 100%; /* line-height: .85; */ } + +#home-body h2 { font-family: 'Montserrat', sans-serif; margin-top: 30px; font-weight: 300; color: #313131; letter-spacing: -1px; } + +#home-body .bottom-left { background-color: #fff0; } + +p { font-family: 'Raleway', sans-serif; font-weight: 100; font-size: 16px; } + +#home-research-list li { font-family: 'Raleway', sans-serif; font-weight: 100; font-size: 16px; margin-bottom: 10px; } + +li { font-family: 'Raleway', sans-serif; font-weight: 100; font-size: 16px; } + +table { font-family: 'Raleway', sans-serif; font-size: 16px; } + +b { font-weight: 500; } + +.omr-ocr-page { list-style-type: none; } + +/* Wrapper The wrapper is used to position site content when the sidebar is toggled. We use an outter wrap to position the sidebar without interferring with the regular page content. */ +.wrap { position: relative; width: 100%; } + +.content { padding-top: 95px; } + +/* Container Center the page content. */ +/* Masthead Super small header above the content for site name and short description. */ +.masthead { padding-top: 1rem; padding-bottom: 1rem; margin-bottom: 3rem; border-bottom: 1px solid #eee; position: fixed; width: 100%; background-color: #ffffff; box-shadow: 1px 1px 10px #a8a6a6; } + +.masthead-title { margin-top: 0; margin-bottom: 0; color: #505050; } + +.masthead-title a { color: #505050; } + +/* .masthead-title small { font-size: 75%; font-weight: 400; color: #c0c0c0; letter-spacing: 0; } */ +.masthead-container { display: flex; padding: 0 6%; } + +.nav-wrap { margin: auto 0 auto auto; } + +@media (max-width: 48em) { .masthead-title { text-align: center; } /* .masthead-title small { display: none; } */ } + +/* Posts and pages Each post is wrapped in `.post` and is used on default and post layouts. Each page is wrapped in `.page` and is only used on the page layout. */ +.page, .post { /* margin-bottom: 4em; */ } + +/* Blog post or page title */ +.page-title, .post-title, .post-title a { color: #303030; } + +.page-title, .post-title { margin-top: 0; text-align: left; } + +.home-title { margin-top: 0; } + +/* Meta data line below post title */ +.post-date { display: block; margin-top: -.5rem; margin-bottom: 1rem; color: #9a9a9a; } + +/* Related posts */ +.related { padding-top: 2rem; padding-bottom: 2rem; border-top: 1px solid #eee; } + +.related-posts { padding-left: 0; list-style: none; } + +.related-posts h3 { margin-top: 0; } + +.related-posts li small { font-size: 75%; color: #999; } + +.related-posts li a:hover { color: #268bd2; text-decoration: none; } + +.related-posts li a:hover small { color: inherit; } + +/* Pagination Super lightweight (HTML-wise) blog pagination. `span`s are provide for when there are no more previous or next posts to show. */ +.pagination { overflow: hidden; /* clearfix */ margin-left: -1rem; margin-right: -1rem; font-family: 'Montserrat', sans-serif; color: #ccc; text-align: center; } + +/* Pagination items can be `span`s or `a`s */ +.pagination-item { display: block; padding: 1rem; border: 1px solid #eee; } + +.pagination-item:first-child { margin-bottom: -1px; } + +/* Only provide a hover state for linked pagination items */ +a.pagination-item:hover { background-color: #f5f5f5; } + +@media (min-width: 30em) { .pagination { margin: 3rem 0; } .pagination-item { float: left; width: 50%; } .pagination-item:first-child { margin-bottom: 0; border-top-left-radius: 4px; border-bottom-left-radius: 4px; } .pagination-item:last-child { margin-left: -1px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; } } + +/* RESPONSIVE NAVBAR */ +/* Add a black background color to the top navigation */ +.topnav { overflow: hidden; box-sizing: border-box; /* width: 45%; */ /* display: inline-flex; */ } + +#nav-items .active a { color: #0e6e90; border-bottom: 2px solid currentColor; } + +/* Style the links inside the navigation bar */ +#nav-items a { /* float: left; */ display: block; /* color: black; font-family: 'Raleway', sans-serif; text-align: center; */ padding: 0 16px; /* font-size: 14px; */ border-top: 2px solid transparent; border-bottom: 2px solid transparent; color: #1bb3e9; } + +/* Add an active class to highlight the current page */ +/* Hide the link that should open and close the topnav on small screens */ +.topnav .icon { display: none; } + +/* Themes Apply custom color schemes by adding the appropriate class to the `body`. Based on colors from Base16: http://chriskempson.github.io/base16/#default. */ +/* Red */ +.theme-base-08 .sidebar, .theme-base-08 .sidebar-toggle:active, .theme-base-08 #sidebar-checkbox:checked ~ .sidebar-toggle { background-color: #ac4142; } + +.theme-basecointa-08 .container a, .theme-base-08 .sidebar-toggle, .theme-base-08 .related-posts li a:hover { color: #ac4142; } + +/* Orange */ +.theme-base-09 .sidebar, .theme-base-09 .sidebar-toggle:active, .theme-base-09 #sidebar-checkbox:checked ~ .sidebar-toggle { background-color: #d28445; } + +.theme-base-09 .container a, .theme-base-09 .sidebar-toggle, .theme-base-09 .related-posts li a:hover { color: #d28445; } + +/* Yellow */ +.theme-base-0a .sidebar, .theme-base-0a .sidebar-toggle:active, .theme-base-0a #sidebar-checkbox:checked ~ .sidebar-toggle { background-color: #f4bf75; } + +.theme-base-0a .container a, .theme-base-0a .sidebar-toggle, .theme-base-0a .related-posts li a:hover { color: #f4bf75; } + +/* Green */ +.theme-base-0b .sidebar, .theme-base-0b .sidebar-toggle:active, .theme-base-0b #sidebar-checkbox:checked ~ .sidebar-toggle { background-color: #90a959; } + +.theme-base-0b .container a, .theme-base-0b .sidebar-toggle, .theme-base-0b .related-posts li a:hover { color: #90a959; } + +/* Cyan */ +.theme-base-0c .sidebar, .theme-base-0c .sidebar-toggle:active, .theme-base-0c #sidebar-checkbox:checked ~ .sidebar-toggle { background-color: #75b5aa; } + +.theme-base-0c .container a, .theme-base-0c .sidebar-toggle, .theme-base-0c .related-posts li a:hover { color: #75b5aa; } + +/* Blue */ +.theme-base-0d .sidebar, .theme-base-0d .sidebar-toggle:active, .theme-base-0d #sidebar-checkbox:checked ~ .sidebar-toggle { background-color: #6a9fb5; } + +.theme-base-0d .container a, .theme-base-0d .sidebar-toggle, .theme-base-0d .related-posts li a:hover { color: #6a9fb5; } + +/* Magenta */ +.theme-base-0e .sidebar, .theme-base-0e .sidebar-toggle:active, .theme-base-0e #sidebar-checkbox:checked ~ .sidebar-toggle { background-color: #aa759f; } + +.theme-base-0e .container a, .theme-base-0e .sidebar-toggle, .theme-base-0e .related-posts li a:hover { color: #aa759f; } + +/* Brown */ +.theme-base-0f .sidebar, .theme-base-0f .sidebar-toggle:active, .theme-base-0f #sidebar-checkbox:checked ~ .sidebar-toggle { background-color: #8f5536; } + +.theme-base-0f .container a, .theme-base-0f .sidebar-toggle, .theme-base-0f .related-posts li a:hover { color: #8f5536; } + +/* Savage Custom - McGill Red */ +.theme-base-mr .sidebar, .theme-base-mr .sidebar-toggle:active, .theme-base-mr #sidebar-checkbox:checked ~ .sidebar-toggle { background-color: #ed1b2f; } + +.theme-base-mr .container a, .theme-base-mr .sidebar-toggle, .theme-base-mr .related-posts li a:hover { color: #ed1b2f; } + +/* Savage Custom - Original DDMAL Blue */ +.theme-base-db .sidebar, .theme-base-db .sidebar-toggle:active, .theme-base-db #sidebar-checkbox:checked ~ .sidebar-toggle { background-color: #1bb3e9; } + +.theme-base-db .container a, .theme-base-db .masthead-container a, .theme-base-db .sidebar-toggle, .theme-base-db .related-posts li a:hover { color: #1bb3e9; } + +/* Image container */ +.pic-container { position: relative; color: white; z-index: -1; display: table; margin: auto; } + +.center-img { display: block; margin-left: auto; margin-right: auto; } + +.bottom-left { position: absolute; bottom: 12px; right: 12px; background-color: #1bb3e9bd; padding: 5px 8px; border-radius: 5px; } + +/* Added Savage */ +.body-content { z-index: -1; } + +hr { z-index: -1; } + +.ulist-html { font-family: "Raleway", Helvetica, Arial, sans-serif; } + +.top-nav-space { padding-top: 72.05px; } + +.wrap { min-height: calc(100vh - 109px); } + +#sticky { width: 100%; height: 89px; background-color: #c7cfdb; /* margin-top: -89px; */ } + +.footer-content { color: white; text-align: center; } + +.mcgill-img-footer { width: calc(936px / 2.5); height: calc(134px / 2.5); margin-left: 0; } + +.ddmal-img-footer { margin: auto 0 auto auto; } + +.footer-img-wrap { padding-top: calc((89px - 134px / 2.5)/2); padding-left: 4%; padding-right: 4%; padding-bottom: 0; margin-top: -10px; margin-bottom: 0; display: flex; } + +img { margin-bottom: 0; } + +/* #home-body img { max-height: 400px; } */ +.post-container { margin: 15px 0; /* border: 2px solid black; */ /* border-radius: 5px; */ } + +.post-title { display: flex; padding: 8px; justify-content: space-between; } + +.post-excerpt { margin: auto; padding: 15px; } + +.subtitle { margin-bottom: 20px; } + +/* Savage responsive params */ +/* When the screen is less than 600 pixels wide, hide all links, except for the first one ("Home"). Show the link that contains should open and close the topnav (.icon) */ +@media screen and (max-width: 850px) { .topnav .btn { display: none; } .topnav a.icon { float: right; display: block; } } + +/* The "responsive" class is added to the topnav with JavaScript when the user clicks on the icon. This class makes the topnav look good on small screens (display the links vertically instead of horizontally) */ +@media screen and (max-width: 850px) { #nav-items a { width: 185px; } #nav-items a:hover::after { width: 100px; /* line-height: .85; */ } .topnav.responsive { position: relative; } .topnav.responsive a.icon { position: absolute; right: 0; top: 0; } .topnav.responsive .btn { float: none; display: block; text-align: right; margin-right: 60px; margin-bottom: 8px; padding: auto; /* margin-top: 8px; */ text-decoration: none; letter-spacing: .7px; } .topnav.responsive .btn:hover { border-bottom: 2px solid transparent !important; } .active a { border-top: 2px solid transparent !important; border-bottom: 2px solid transparent !important; /* background-color: #0e6e9066; */ /* border-radius: 4px; */ color: #0e6e90; border-left: 3px solid #0e6e90; } .nav-item { padding: 3.5px 0; } .title-wrap { margin-top: 2.7px; } } + +@media (max-width: 650px) { .mcgill-img-footer { width: calc(936px / 4); height: calc(134px / 4); } .footer-img-wrap { padding-top: calc((89px - 134px / 4)/2); } } + +.container { max-width: 28rem; } + +@media (min-width: 38em) { .container { max-width: 32rem; } } + +@media (min-width: 896px) { .container { max-width: 750px; } /* .bottom-left { right: 25px; } */ } + +@media (min-width: 1200px) { .container { max-width: 1170px; } /* .bottom-left { right: 100px; } */ } + +@media (max-width: 420px) { p, body li, #home-research-list li { font-size: 14px; } } + +@media (min-width: 608px) { .page-title, .home-title { margin-top: 20px; } } + +@media (max-width: 608px) { .bottom-left { bottom: 6px; right: 6px; padding: 2px 5px; } .wrap { min-height: calc(100vh - 99px); } } + +.logo_header { display: flex; align-items: center; } + +/* .social-links { margin-left: 60px; } */ +.current-focus p:first-child { margin-left: 10px; font-size: 24px; margin-bottom: 0; } + +.current-focus .focus { font-size: 18px; margin-left: 15px; } + +.people-title { font-weight: normal; margin-bottom: 25px; } + +.lab_member { min-height: 500px; } + +.lab_member_subtitles { font-weight: normal; /* margin-left: 5px; */ letter-spacing: -0.3px; margin-bottom: 15px; } + +.research-interests { width: 55%; } + +.research-interests ul { list-style: none; display: inline-flex; flex-wrap: wrap; padding-left: 10px; } + +.research-interests ul li { margin-bottom: 10px; margin-right: 10px; padding: 3px 10px; border-radius: 4px; } + +.member_photo_list { max-width: 80px; margin-bottom: 0; } + +.member-list { list-style: none; padding-left: 10px; } + +.member-list li { border-radius: 4px; /* padding: 10px 20px; */ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08); display: flex; align-items: center; justify-content: space-between; width: 450px; } + +.member-list li:last-child { margin-bottom: 50px; } + +.member-list li a:first-child { display: block; padding: 36px 20px; flex: 1; font-size: 18px; } + +.member-list li a:nth-child(2) { padding: 10px 10px 10px 0px; } + +.research-interests ul li:nth-child(n+1) { background-color: #ADBDFF; } + +.research-interests ul li:nth-child(2n) { background-color: #D8D8F6; } + +.research-interests ul li:nth-child(3n) { background-color: #FFC0BF; } + +.research-interests ul li:nth-child(4n) { background-color: #C4E7D4; } + +.lab_member_flex { margin-bottom: 20px; } + +.lab_member .img-wrap .profile-photo { box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08); } + +.cv-icon { /* position: absolute; */ width: 30px; /* margin-left: 30px; */ /* right: -20px; */ padding-top: 10px; margin: 0; margin-left: 30px; } + +.social-links { position: relative; display: flex; flex-direction: column; margin-top: 20px; } + +.social__link:first-child { /* margin-left: 10px; */ } + +.social__link { margin-bottom: 5px; } + +.social-links .social__link { margin-right: 10px; } + +.publications ul { list-style: none; padding-left: 10px; } + +.publications ul li { margin-bottom: 15px; } + +.member-page { display: grid; grid-template-columns: 50% 50%; grid-template-rows: auto min-content auto; } + +.member-page .logo_header { grid-column: 1 / 3; } + +.member-page .lab_member_flex { grid-row: 2; grid-column: 1; } + +.member-page .img-wrap { position: relative; display: flex; grid-row: 2 / 4; grid-column: 2; justify-self: center; margin-bottom: 40px; max-width: 100%; } + +.member-page .img-wrap .profile-photo { max-width: 350px; max-height: 350px; margin-right: 10px; } + +.member-page .lab_member_bio { text-align: justify; grid-row: 3; grid-column: 1; } + +.member-page .flex-wrap { display: flex; grid-row: 4; grid-column: 1 / 3; } + +@media (max-width: 1200px) { .member-page .flex-wrap .research-interests { width: auto; } .member-page .img-wrap { justify-self: end; } } + +@media (max-width: 992px) { .member-page { grid-template-columns: 60% 40%; grid-template-rows: auto; grid-column-gap: 20px; } .member-page .img-wrap .profile-photo { max-width: 250px; max-height: 250px; margin-right: 10px; } } + +@media (max-width: 776px) { .member-page { grid-template-columns: 100%; grid-template-rows: auto; grid-column-gap: 0; } .member-page .img-wrap { grid-row: 3; grid-column: 1; max-width: 70%; flex-direction: column; align-items: center; justify-self: center; margin-bottom: 20px; } .member-page .img-wrap .profile-photo { max-width: 350px; max-height: 350px; margin-right: 0; } .member-page .img-wrap .social-links { flex-direction: row; } .member-page .lab_member_bio { text-align: justify; grid-row: 4; grid-column: 1; } .member-page .flex-wrap { display: flex; grid-row: 5; grid-column: 1; } } + +@media (max-width: 608px) { .member-page .logo_header { align-items: baseline; } } + +@media (max-width: 400px) { .member-page .logo_header { align-items: baseline; } .member-page .img-wrap .profile-photo { max-width: 250px; max-height: 250px; } } + +@media (max-width: 776px) { .member-list li { width: auto; } } + +/*! Bootstrap v4.2.1 (https://getbootstrap.com/) Copyright 2011-2018 The Bootstrap Authors Copyright 2011-2018 Twitter, Inc. Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) */ +:root { --blue: #007bff; --indigo: #6610f2; --purple: #6f42c1; --pink: #e83e8c; --red: #dc3545; --orange: #fd7e14; --yellow: #ffc107; --green: #28a745; --teal: #20c997; --cyan: #17a2b8; --white: #fff; --gray: #6c757d; --gray-dark: #343a40; --primary: #007bff; --secondary: #6c757d; --success: #28a745; --info: #17a2b8; --warning: #ffc107; --danger: #dc3545; --light: #f8f9fa; --dark: #343a40; --breakpoint-xs: 0; --breakpoint-sm: 576px; --breakpoint-md: 768px; --breakpoint-lg: 992px; --breakpoint-xl: 1200px; /* --font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; */ /* --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; */ } + +*, *::before, *::after { box-sizing: border-box; } + +html { /* font-family: sans-serif; */ line-height: 1.15; -webkit-text-size-adjust: 100%; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } + +article, aside, figcaption, figure, footer, header, hgroup, main, nav, section { display: block; } + +body { margin: 0; /* font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; */ font-size: 1rem; font-weight: 400; line-height: 1.5; color: #212529; text-align: left; background-color: #fff; } + +[tabindex="-1"]:focus { outline: 0 !important; } + +hr { box-sizing: content-box; height: 0; overflow: visible; } + +h1, h2, h3, h4, h5, h6 { margin-top: 0; margin-bottom: 0.5rem; } + +p { margin-top: 0; margin-bottom: 1rem; } + +abbr[title], abbr[data-original-title] { text-decoration: underline; -webkit-text-decoration: underline dotted; text-decoration: underline dotted; cursor: help; border-bottom: 0; text-decoration-skip-ink: none; } + +address { margin-bottom: 1rem; font-style: normal; line-height: inherit; } + +ol, ul, dl { margin-top: 0; margin-bottom: 1rem; } + +ol ol, ul ul, ol ul, ul ol { margin-bottom: 0; } + +dt { font-weight: 700; } + +dd { margin-bottom: .5rem; margin-left: 0; } + +blockquote { margin: 0 0 1rem; } + +/* b, strong { font-weight: bolder; } */ +small { font-size: 80%; } + +sub, sup { position: relative; font-size: 75%; line-height: 0; vertical-align: baseline; } + +sub { bottom: -.25em; } + +sup { top: -.5em; } + +a { color: #007bff; text-decoration: none; background-color: transparent; } + +a:hover { color: #0056b3; text-decoration: underline; } + +a:not([href]):not([tabindex]) { color: inherit; text-decoration: none; } + +a:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus { color: inherit; text-decoration: none; } + +a:not([href]):not([tabindex]):focus { outline: 0; } + +pre, code, kbd, samp { /* font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; */ font-size: 1em; } + +pre { margin-top: 0; margin-bottom: 1rem; overflow: auto; } + +figure { margin: 0 0 1rem; } + +img { vertical-align: middle; border-style: none; } + +svg { overflow: hidden; vertical-align: middle; } + +table { border-collapse: collapse; } + +caption { padding-top: 0.75rem; padding-bottom: 0.75rem; color: #6c757d; text-align: left; caption-side: bottom; } + +th { text-align: inherit; } + +label { display: inline-block; margin-bottom: 0.5rem; } + +button { border-radius: 0; } + +button:focus { outline: 1px dotted; outline: 5px auto -webkit-focus-ring-color; } + +input, button, select, optgroup, textarea { margin: 0; /* font-family: inherit; */ font-size: inherit; line-height: inherit; } + +button, input { overflow: visible; } + +button, select { text-transform: none; } + +button, [type="button"], [type="reset"], [type="submit"] { -webkit-appearance: button; } + +button::-moz-focus-inner, [type="button"]::-moz-focus-inner, [type="reset"]::-moz-focus-inner, [type="submit"]::-moz-focus-inner { padding: 0; border-style: none; } + +input[type="radio"], input[type="checkbox"] { box-sizing: border-box; padding: 0; } + +input[type="date"], input[type="time"], input[type="datetime-local"], input[type="month"] { -webkit-appearance: listbox; } + +textarea { overflow: auto; resize: vertical; } + +fieldset { min-width: 0; padding: 0; margin: 0; border: 0; } + +legend { display: block; width: 100%; max-width: 100%; padding: 0; margin-bottom: .5rem; font-size: 1.5rem; line-height: inherit; color: inherit; white-space: normal; } + +progress { vertical-align: baseline; } + +[type="number"]::-webkit-inner-spin-button, [type="number"]::-webkit-outer-spin-button { height: auto; } + +[type="search"] { outline-offset: -2px; -webkit-appearance: none; } + +[type="search"]::-webkit-search-decoration { -webkit-appearance: none; } + +::-webkit-file-upload-button { font: inherit; -webkit-appearance: button; } + +output { display: inline-block; } + +summary { display: list-item; cursor: pointer; } + +template { display: none; } + +[hidden] { display: none !important; } + +h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 { margin-bottom: 0.5rem; /* font-family: inherit; */ font-weight: 500; line-height: 1.2; color: inherit; } + +h1, .h1 { font-size: 2.5rem; } + +h2, .h2 { font-size: 2rem; } + +h3, .h3 { font-size: 1.75rem; } + +h4, .h4 { font-size: 1.5rem; } + +h5, .h5 { font-size: 1.25rem; } + +h6, .h6 { font-size: 1rem; } + +.lead { font-size: 1.25rem; font-weight: 300; } + +.display-1 { font-size: 6rem; font-weight: 300; line-height: 1.2; } + +.display-2 { font-size: 5.5rem; font-weight: 300; line-height: 1.2; } + +.display-3 { font-size: 4.5rem; font-weight: 300; line-height: 1.2; } + +.display-4 { font-size: 3.5rem; font-weight: 300; line-height: 1.2; } + +hr { margin-top: 1rem; margin-bottom: 1rem; border: 0; border-top: 1px solid rgba(0, 0, 0, 0.1); } + +small, .small { font-size: 80%; font-weight: 400; } + +mark, .mark { padding: 0.2em; background-color: #fcf8e3; } + +.list-unstyled { padding-left: 0; list-style: none; } + +.list-inline { padding-left: 0; list-style: none; } + +.list-inline-item { display: inline-block; } + +.list-inline-item:not(:last-child) { margin-right: 0.5rem; } + +.initialism { font-size: 90%; text-transform: uppercase; } + +.blockquote { margin-bottom: 1rem; font-size: 1.25rem; } + +.blockquote-footer { display: block; font-size: 80%; color: #6c757d; } + +.blockquote-footer::before { content: "\2014\00A0"; } + +.img-fluid { max-width: 100%; height: auto; } + +.img-thumbnail { padding: 0.25rem; background-color: #fff; border: 1px solid #dee2e6; border-radius: 0.25rem; max-width: 100%; height: auto; } + +.figure { display: inline-block; } + +.figure-img { margin-bottom: 0.5rem; line-height: 1; } + +.figure-caption { font-size: 90%; color: #6c757d; } + +code { font-size: 87.5%; color: #e83e8c; word-break: break-word; } + +a > code { color: inherit; } + +kbd { padding: 0.2rem 0.4rem; font-size: 87.5%; color: #fff; background-color: #212529; border-radius: 0.2rem; } + +kbd kbd { padding: 0; font-size: 100%; font-weight: 700; } + +pre { display: block; font-size: 87.5%; color: #212529; } + +pre code { font-size: inherit; color: inherit; word-break: normal; } + +.pre-scrollable { max-height: 340px; overflow-y: scroll; } + +.container { position: relative; width: 100%; padding-right: 15px; padding-left: 15px; margin-right: auto; margin-left: auto; } + +@media (min-width: 576px) { .container { max-width: 540px; } } + +@media (min-width: 768px) { .container { max-width: 720px; } } + +@media (min-width: 992px) { .container { max-width: 960px; } } + +@media (min-width: 1200px) { .container { max-width: 1140px; } } + +.container-fluid { width: 100%; padding-right: 15px; padding-left: 15px; margin-right: auto; margin-left: auto; } + +.row { display: -ms-flexbox; display: flex; -ms-flex-wrap: wrap; flex-wrap: wrap; margin-right: -15px; margin-left: -15px; } + +.no-gutters { margin-right: 0; margin-left: 0; } + +.no-gutters > .col, .no-gutters > [class*="col-"] { padding-right: 0; padding-left: 0; } + +.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, .col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, .col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, .col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, .col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl, .col-xl-auto { position: relative; width: 100%; padding-right: 15px; padding-left: 15px; } + +.col { -ms-flex-preferred-size: 0; flex-basis: 0; -ms-flex-positive: 1; flex-grow: 1; max-width: 100%; } + +.col-auto { -ms-flex: 0 0 auto; flex: 0 0 auto; width: auto; max-width: 100%; } + +.col-1 { -ms-flex: 0 0 8.333333%; flex: 0 0 8.333333%; max-width: 8.333333%; } + +.col-2 { -ms-flex: 0 0 16.666667%; flex: 0 0 16.666667%; max-width: 16.666667%; } + +.col-3 { -ms-flex: 0 0 25%; flex: 0 0 25%; max-width: 25%; } + +.col-4 { -ms-flex: 0 0 33.333333%; flex: 0 0 33.333333%; max-width: 33.333333%; } + +.col-5 { -ms-flex: 0 0 41.666667%; flex: 0 0 41.666667%; max-width: 41.666667%; } + +.col-6 { -ms-flex: 0 0 50%; flex: 0 0 50%; max-width: 50%; } + +.col-7 { -ms-flex: 0 0 58.333333%; flex: 0 0 58.333333%; max-width: 58.333333%; } + +.col-8 { -ms-flex: 0 0 66.666667%; flex: 0 0 66.666667%; max-width: 66.666667%; } + +.col-9 { -ms-flex: 0 0 75%; flex: 0 0 75%; max-width: 75%; } + +.col-10 { -ms-flex: 0 0 83.333333%; flex: 0 0 83.333333%; max-width: 83.333333%; } + +.col-11 { -ms-flex: 0 0 91.666667%; flex: 0 0 91.666667%; max-width: 91.666667%; } + +.col-12 { -ms-flex: 0 0 100%; flex: 0 0 100%; max-width: 100%; } + +.order-first { -ms-flex-order: -1; order: -1; } + +.order-last { -ms-flex-order: 13; order: 13; } + +.order-0 { -ms-flex-order: 0; order: 0; } + +.order-1 { -ms-flex-order: 1; order: 1; } + +.order-2 { -ms-flex-order: 2; order: 2; } + +.order-3 { -ms-flex-order: 3; order: 3; } + +.order-4 { -ms-flex-order: 4; order: 4; } + +.order-5 { -ms-flex-order: 5; order: 5; } + +.order-6 { -ms-flex-order: 6; order: 6; } + +.order-7 { -ms-flex-order: 7; order: 7; } + +.order-8 { -ms-flex-order: 8; order: 8; } + +.order-9 { -ms-flex-order: 9; order: 9; } + +.order-10 { -ms-flex-order: 10; order: 10; } + +.order-11 { -ms-flex-order: 11; order: 11; } + +.order-12 { -ms-flex-order: 12; order: 12; } + +.offset-1 { margin-left: 8.333333%; } + +.offset-2 { margin-left: 16.666667%; } + +.offset-3 { margin-left: 25%; } + +.offset-4 { margin-left: 33.333333%; } + +.offset-5 { margin-left: 41.666667%; } + +.offset-6 { margin-left: 50%; } + +.offset-7 { margin-left: 58.333333%; } + +.offset-8 { margin-left: 66.666667%; } + +.offset-9 { margin-left: 75%; } + +.offset-10 { margin-left: 83.333333%; } + +.offset-11 { margin-left: 91.666667%; } + +@media (min-width: 576px) { .col-sm { -ms-flex-preferred-size: 0; flex-basis: 0; -ms-flex-positive: 1; flex-grow: 1; max-width: 100%; } .col-sm-auto { -ms-flex: 0 0 auto; flex: 0 0 auto; width: auto; max-width: 100%; } .col-sm-1 { -ms-flex: 0 0 8.333333%; flex: 0 0 8.333333%; max-width: 8.333333%; } .col-sm-2 { -ms-flex: 0 0 16.666667%; flex: 0 0 16.666667%; max-width: 16.666667%; } .col-sm-3 { -ms-flex: 0 0 25%; flex: 0 0 25%; max-width: 25%; } .col-sm-4 { -ms-flex: 0 0 33.333333%; flex: 0 0 33.333333%; max-width: 33.333333%; } .col-sm-5 { -ms-flex: 0 0 41.666667%; flex: 0 0 41.666667%; max-width: 41.666667%; } .col-sm-6 { -ms-flex: 0 0 50%; flex: 0 0 50%; max-width: 50%; } .col-sm-7 { -ms-flex: 0 0 58.333333%; flex: 0 0 58.333333%; max-width: 58.333333%; } .col-sm-8 { -ms-flex: 0 0 66.666667%; flex: 0 0 66.666667%; max-width: 66.666667%; } .col-sm-9 { -ms-flex: 0 0 75%; flex: 0 0 75%; max-width: 75%; } .col-sm-10 { -ms-flex: 0 0 83.333333%; flex: 0 0 83.333333%; max-width: 83.333333%; } .col-sm-11 { -ms-flex: 0 0 91.666667%; flex: 0 0 91.666667%; max-width: 91.666667%; } .col-sm-12 { -ms-flex: 0 0 100%; flex: 0 0 100%; max-width: 100%; } .order-sm-first { -ms-flex-order: -1; order: -1; } .order-sm-last { -ms-flex-order: 13; order: 13; } .order-sm-0 { -ms-flex-order: 0; order: 0; } .order-sm-1 { -ms-flex-order: 1; order: 1; } .order-sm-2 { -ms-flex-order: 2; order: 2; } .order-sm-3 { -ms-flex-order: 3; order: 3; } .order-sm-4 { -ms-flex-order: 4; order: 4; } .order-sm-5 { -ms-flex-order: 5; order: 5; } .order-sm-6 { -ms-flex-order: 6; order: 6; } .order-sm-7 { -ms-flex-order: 7; order: 7; } .order-sm-8 { -ms-flex-order: 8; order: 8; } .order-sm-9 { -ms-flex-order: 9; order: 9; } .order-sm-10 { -ms-flex-order: 10; order: 10; } .order-sm-11 { -ms-flex-order: 11; order: 11; } .order-sm-12 { -ms-flex-order: 12; order: 12; } .offset-sm-0 { margin-left: 0; } .offset-sm-1 { margin-left: 8.333333%; } .offset-sm-2 { margin-left: 16.666667%; } .offset-sm-3 { margin-left: 25%; } .offset-sm-4 { margin-left: 33.333333%; } .offset-sm-5 { margin-left: 41.666667%; } .offset-sm-6 { margin-left: 50%; } .offset-sm-7 { margin-left: 58.333333%; } .offset-sm-8 { margin-left: 66.666667%; } .offset-sm-9 { margin-left: 75%; } .offset-sm-10 { margin-left: 83.333333%; } .offset-sm-11 { margin-left: 91.666667%; } } + +@media (min-width: 768px) { .col-md { -ms-flex-preferred-size: 0; flex-basis: 0; -ms-flex-positive: 1; flex-grow: 1; max-width: 100%; } .col-md-auto { -ms-flex: 0 0 auto; flex: 0 0 auto; width: auto; max-width: 100%; } .col-md-1 { -ms-flex: 0 0 8.333333%; flex: 0 0 8.333333%; max-width: 8.333333%; } .col-md-2 { -ms-flex: 0 0 16.666667%; flex: 0 0 16.666667%; max-width: 16.666667%; } .col-md-3 { -ms-flex: 0 0 25%; flex: 0 0 25%; max-width: 25%; } .col-md-4 { -ms-flex: 0 0 33.333333%; flex: 0 0 33.333333%; max-width: 33.333333%; } .col-md-5 { -ms-flex: 0 0 41.666667%; flex: 0 0 41.666667%; max-width: 41.666667%; } .col-md-6 { -ms-flex: 0 0 50%; flex: 0 0 50%; max-width: 50%; } .col-md-7 { -ms-flex: 0 0 58.333333%; flex: 0 0 58.333333%; max-width: 58.333333%; } .col-md-8 { -ms-flex: 0 0 66.666667%; flex: 0 0 66.666667%; max-width: 66.666667%; } .col-md-9 { -ms-flex: 0 0 75%; flex: 0 0 75%; max-width: 75%; } .col-md-10 { -ms-flex: 0 0 83.333333%; flex: 0 0 83.333333%; max-width: 83.333333%; } .col-md-11 { -ms-flex: 0 0 91.666667%; flex: 0 0 91.666667%; max-width: 91.666667%; } .col-md-12 { -ms-flex: 0 0 100%; flex: 0 0 100%; max-width: 100%; } .order-md-first { -ms-flex-order: -1; order: -1; } .order-md-last { -ms-flex-order: 13; order: 13; } .order-md-0 { -ms-flex-order: 0; order: 0; } .order-md-1 { -ms-flex-order: 1; order: 1; } .order-md-2 { -ms-flex-order: 2; order: 2; } .order-md-3 { -ms-flex-order: 3; order: 3; } .order-md-4 { -ms-flex-order: 4; order: 4; } .order-md-5 { -ms-flex-order: 5; order: 5; } .order-md-6 { -ms-flex-order: 6; order: 6; } .order-md-7 { -ms-flex-order: 7; order: 7; } .order-md-8 { -ms-flex-order: 8; order: 8; } .order-md-9 { -ms-flex-order: 9; order: 9; } .order-md-10 { -ms-flex-order: 10; order: 10; } .order-md-11 { -ms-flex-order: 11; order: 11; } .order-md-12 { -ms-flex-order: 12; order: 12; } .offset-md-0 { margin-left: 0; } .offset-md-1 { margin-left: 8.333333%; } .offset-md-2 { margin-left: 16.666667%; } .offset-md-3 { margin-left: 25%; } .offset-md-4 { margin-left: 33.333333%; } .offset-md-5 { margin-left: 41.666667%; } .offset-md-6 { margin-left: 50%; } .offset-md-7 { margin-left: 58.333333%; } .offset-md-8 { margin-left: 66.666667%; } .offset-md-9 { margin-left: 75%; } .offset-md-10 { margin-left: 83.333333%; } .offset-md-11 { margin-left: 91.666667%; } } + +@media (min-width: 992px) { .col-lg { -ms-flex-preferred-size: 0; flex-basis: 0; -ms-flex-positive: 1; flex-grow: 1; max-width: 100%; } .col-lg-auto { -ms-flex: 0 0 auto; flex: 0 0 auto; width: auto; max-width: 100%; } .col-lg-1 { -ms-flex: 0 0 8.333333%; flex: 0 0 8.333333%; max-width: 8.333333%; } .col-lg-2 { -ms-flex: 0 0 16.666667%; flex: 0 0 16.666667%; max-width: 16.666667%; } .col-lg-3 { -ms-flex: 0 0 25%; flex: 0 0 25%; max-width: 25%; } .col-lg-4 { -ms-flex: 0 0 33.333333%; flex: 0 0 33.333333%; max-width: 33.333333%; } .col-lg-5 { -ms-flex: 0 0 41.666667%; flex: 0 0 41.666667%; max-width: 41.666667%; } .col-lg-6 { -ms-flex: 0 0 50%; flex: 0 0 50%; max-width: 50%; } .col-lg-7 { -ms-flex: 0 0 58.333333%; flex: 0 0 58.333333%; max-width: 58.333333%; } .col-lg-8 { -ms-flex: 0 0 66.666667%; flex: 0 0 66.666667%; max-width: 66.666667%; } .col-lg-9 { -ms-flex: 0 0 75%; flex: 0 0 75%; max-width: 75%; } .col-lg-10 { -ms-flex: 0 0 83.333333%; flex: 0 0 83.333333%; max-width: 83.333333%; } .col-lg-11 { -ms-flex: 0 0 91.666667%; flex: 0 0 91.666667%; max-width: 91.666667%; } .col-lg-12 { -ms-flex: 0 0 100%; flex: 0 0 100%; max-width: 100%; } .order-lg-first { -ms-flex-order: -1; order: -1; } .order-lg-last { -ms-flex-order: 13; order: 13; } .order-lg-0 { -ms-flex-order: 0; order: 0; } .order-lg-1 { -ms-flex-order: 1; order: 1; } .order-lg-2 { -ms-flex-order: 2; order: 2; } .order-lg-3 { -ms-flex-order: 3; order: 3; } .order-lg-4 { -ms-flex-order: 4; order: 4; } .order-lg-5 { -ms-flex-order: 5; order: 5; } .order-lg-6 { -ms-flex-order: 6; order: 6; } .order-lg-7 { -ms-flex-order: 7; order: 7; } .order-lg-8 { -ms-flex-order: 8; order: 8; } .order-lg-9 { -ms-flex-order: 9; order: 9; } .order-lg-10 { -ms-flex-order: 10; order: 10; } .order-lg-11 { -ms-flex-order: 11; order: 11; } .order-lg-12 { -ms-flex-order: 12; order: 12; } .offset-lg-0 { margin-left: 0; } .offset-lg-1 { margin-left: 8.333333%; } .offset-lg-2 { margin-left: 16.666667%; } .offset-lg-3 { margin-left: 25%; } .offset-lg-4 { margin-left: 33.333333%; } .offset-lg-5 { margin-left: 41.666667%; } .offset-lg-6 { margin-left: 50%; } .offset-lg-7 { margin-left: 58.333333%; } .offset-lg-8 { margin-left: 66.666667%; } .offset-lg-9 { margin-left: 75%; } .offset-lg-10 { margin-left: 83.333333%; } .offset-lg-11 { margin-left: 91.666667%; } } + +@media (min-width: 1200px) { .col-xl { -ms-flex-preferred-size: 0; flex-basis: 0; -ms-flex-positive: 1; flex-grow: 1; max-width: 100%; } .col-xl-auto { -ms-flex: 0 0 auto; flex: 0 0 auto; width: auto; max-width: 100%; } .col-xl-1 { -ms-flex: 0 0 8.333333%; flex: 0 0 8.333333%; max-width: 8.333333%; } .col-xl-2 { -ms-flex: 0 0 16.666667%; flex: 0 0 16.666667%; max-width: 16.666667%; } .col-xl-3 { -ms-flex: 0 0 25%; flex: 0 0 25%; max-width: 25%; } .col-xl-4 { -ms-flex: 0 0 33.333333%; flex: 0 0 33.333333%; max-width: 33.333333%; } .col-xl-5 { -ms-flex: 0 0 41.666667%; flex: 0 0 41.666667%; max-width: 41.666667%; } .col-xl-6 { -ms-flex: 0 0 50%; flex: 0 0 50%; max-width: 50%; } .col-xl-7 { -ms-flex: 0 0 58.333333%; flex: 0 0 58.333333%; max-width: 58.333333%; } .col-xl-8 { -ms-flex: 0 0 66.666667%; flex: 0 0 66.666667%; max-width: 66.666667%; } .col-xl-9 { -ms-flex: 0 0 75%; flex: 0 0 75%; max-width: 75%; } .col-xl-10 { -ms-flex: 0 0 83.333333%; flex: 0 0 83.333333%; max-width: 83.333333%; } .col-xl-11 { -ms-flex: 0 0 91.666667%; flex: 0 0 91.666667%; max-width: 91.666667%; } .col-xl-12 { -ms-flex: 0 0 100%; flex: 0 0 100%; max-width: 100%; } .order-xl-first { -ms-flex-order: -1; order: -1; } .order-xl-last { -ms-flex-order: 13; order: 13; } .order-xl-0 { -ms-flex-order: 0; order: 0; } .order-xl-1 { -ms-flex-order: 1; order: 1; } .order-xl-2 { -ms-flex-order: 2; order: 2; } .order-xl-3 { -ms-flex-order: 3; order: 3; } .order-xl-4 { -ms-flex-order: 4; order: 4; } .order-xl-5 { -ms-flex-order: 5; order: 5; } .order-xl-6 { -ms-flex-order: 6; order: 6; } .order-xl-7 { -ms-flex-order: 7; order: 7; } .order-xl-8 { -ms-flex-order: 8; order: 8; } .order-xl-9 { -ms-flex-order: 9; order: 9; } .order-xl-10 { -ms-flex-order: 10; order: 10; } .order-xl-11 { -ms-flex-order: 11; order: 11; } .order-xl-12 { -ms-flex-order: 12; order: 12; } .offset-xl-0 { margin-left: 0; } .offset-xl-1 { margin-left: 8.333333%; } .offset-xl-2 { margin-left: 16.666667%; } .offset-xl-3 { margin-left: 25%; } .offset-xl-4 { margin-left: 33.333333%; } .offset-xl-5 { margin-left: 41.666667%; } .offset-xl-6 { margin-left: 50%; } .offset-xl-7 { margin-left: 58.333333%; } .offset-xl-8 { margin-left: 66.666667%; } .offset-xl-9 { margin-left: 75%; } .offset-xl-10 { margin-left: 83.333333%; } .offset-xl-11 { margin-left: 91.666667%; } } + +.table { width: 100%; margin-bottom: 1rem; background-color: transparent; } + +.table th, .table td { padding: 0.75rem; vertical-align: top; border-top: 1px solid #dee2e6; } + +.table thead th { vertical-align: bottom; border-bottom: 2px solid #dee2e6; } + +.table tbody + tbody { border-top: 2px solid #dee2e6; } + +.table .table { background-color: #fff; } + +.table-sm th, .table-sm td { padding: 0.3rem; } + +.table-bordered { border: 1px solid #dee2e6; } + +.table-bordered th, .table-bordered td { border: 1px solid #dee2e6; } + +.table-bordered thead th, .table-bordered thead td { border-bottom-width: 2px; } + +.table-borderless th, .table-borderless td, .table-borderless thead th, .table-borderless tbody + tbody { border: 0; } + +.table-striped tbody tr:nth-of-type(odd) { background-color: rgba(0, 0, 0, 0.05); } + +.table-hover tbody tr:hover { background-color: rgba(0, 0, 0, 0.075); } + +.table-primary, .table-primary > th, .table-primary > td { background-color: #b8daff; } + +.table-primary th, .table-primary td, .table-primary thead th, .table-primary tbody + tbody { border-color: #7abaff; } + +.table-hover .table-primary:hover { background-color: #9fcdff; } + +.table-hover .table-primary:hover > td, .table-hover .table-primary:hover > th { background-color: #9fcdff; } + +.table-secondary, .table-secondary > th, .table-secondary > td { background-color: #d6d8db; } + +.table-secondary th, .table-secondary td, .table-secondary thead th, .table-secondary tbody + tbody { border-color: #b3b7bb; } + +.table-hover .table-secondary:hover { background-color: #c8cbcf; } + +.table-hover .table-secondary:hover > td, .table-hover .table-secondary:hover > th { background-color: #c8cbcf; } + +.table-success, .table-success > th, .table-success > td { background-color: #c3e6cb; } + +.table-success th, .table-success td, .table-success thead th, .table-success tbody + tbody { border-color: #8fd19e; } + +.table-hover .table-success:hover { background-color: #b1dfbb; } + +.table-hover .table-success:hover > td, .table-hover .table-success:hover > th { background-color: #b1dfbb; } + +.table-info, .table-info > th, .table-info > td { background-color: #bee5eb; } + +.table-info th, .table-info td, .table-info thead th, .table-info tbody + tbody { border-color: #86cfda; } + +.table-hover .table-info:hover { background-color: #abdde5; } + +.table-hover .table-info:hover > td, .table-hover .table-info:hover > th { background-color: #abdde5; } + +.table-warning, .table-warning > th, .table-warning > td { background-color: #ffeeba; } + +.table-warning th, .table-warning td, .table-warning thead th, .table-warning tbody + tbody { border-color: #ffdf7e; } + +.table-hover .table-warning:hover { background-color: #ffe8a1; } + +.table-hover .table-warning:hover > td, .table-hover .table-warning:hover > th { background-color: #ffe8a1; } + +.table-danger, .table-danger > th, .table-danger > td { background-color: #f5c6cb; } + +.table-danger th, .table-danger td, .table-danger thead th, .table-danger tbody + tbody { border-color: #ed969e; } + +.table-hover .table-danger:hover { background-color: #f1b0b7; } + +.table-hover .table-danger:hover > td, .table-hover .table-danger:hover > th { background-color: #f1b0b7; } + +.table-light, .table-light > th, .table-light > td { background-color: #fdfdfe; } + +.table-light th, .table-light td, .table-light thead th, .table-light tbody + tbody { border-color: #fbfcfc; } + +.table-hover .table-light:hover { background-color: #ececf6; } + +.table-hover .table-light:hover > td, .table-hover .table-light:hover > th { background-color: #ececf6; } + +.table-dark, .table-dark > th, .table-dark > td { background-color: #c6c8ca; } + +.table-dark th, .table-dark td, .table-dark thead th, .table-dark tbody + tbody { border-color: #95999c; } + +.table-hover .table-dark:hover { background-color: #b9bbbe; } + +.table-hover .table-dark:hover > td, .table-hover .table-dark:hover > th { background-color: #b9bbbe; } + +.table-active, .table-active > th, .table-active > td { background-color: rgba(0, 0, 0, 0.075); } + +.table-hover .table-active:hover { background-color: rgba(0, 0, 0, 0.075); } + +.table-hover .table-active:hover > td, .table-hover .table-active:hover > th { background-color: rgba(0, 0, 0, 0.075); } + +.table .thead-dark th { color: #fff; background-color: #212529; border-color: #32383e; } + +.table .thead-light th { color: #495057; background-color: #e9ecef; border-color: #dee2e6; } + +.table-dark { color: #fff; background-color: #212529; } + +.table-dark th, .table-dark td, .table-dark thead th { border-color: #32383e; } + +.table-dark.table-bordered { border: 0; } + +.table-dark.table-striped tbody tr:nth-of-type(odd) { background-color: rgba(255, 255, 255, 0.05); } + +.table-dark.table-hover tbody tr:hover { background-color: rgba(255, 255, 255, 0.075); } + +@media (max-width: 575.98px) { .table-responsive-sm { display: block; width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; -ms-overflow-style: -ms-autohiding-scrollbar; } .table-responsive-sm > .table-bordered { border: 0; } } + +@media (max-width: 767.98px) { .table-responsive-md { display: block; width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; -ms-overflow-style: -ms-autohiding-scrollbar; } .table-responsive-md > .table-bordered { border: 0; } } + +@media (max-width: 991.98px) { .table-responsive-lg { display: block; width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; -ms-overflow-style: -ms-autohiding-scrollbar; } .table-responsive-lg > .table-bordered { border: 0; } } + +@media (max-width: 1199.98px) { .table-responsive-xl { display: block; width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; -ms-overflow-style: -ms-autohiding-scrollbar; } .table-responsive-xl > .table-bordered { border: 0; } } + +.table-responsive { display: block; width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; -ms-overflow-style: -ms-autohiding-scrollbar; } + +.table-responsive > .table-bordered { border: 0; } + +.form-control { display: block; width: 100%; height: calc(2.25rem + 2px); padding: 0.375rem 0.75rem; font-size: 1rem; font-weight: 400; line-height: 1.5; color: #495057; background-color: #fff; background-clip: padding-box; border: 1px solid #ced4da; border-radius: 0.25rem; transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } + +@media screen and (prefers-reduced-motion: reduce) { .form-control { transition: none; } } + +.form-control::-ms-expand { background-color: transparent; border: 0; } + +.form-control:focus { color: #495057; background-color: #fff; border-color: #80bdff; outline: 0; box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); } + +.form-control::-webkit-input-placeholder { color: #6c757d; opacity: 1; } + +.form-control::-moz-placeholder { color: #6c757d; opacity: 1; } + +.form-control:-ms-input-placeholder { color: #6c757d; opacity: 1; } + +.form-control::-ms-input-placeholder { color: #6c757d; opacity: 1; } + +.form-control::placeholder { color: #6c757d; opacity: 1; } + +.form-control:disabled, .form-control[readonly] { background-color: #e9ecef; opacity: 1; } + +select.form-control:focus::-ms-value { color: #495057; background-color: #fff; } + +.form-control-file, .form-control-range { display: block; width: 100%; } + +.col-form-label { padding-top: calc(0.375rem + 1px); padding-bottom: calc(0.375rem + 1px); margin-bottom: 0; font-size: inherit; line-height: 1.5; } + +.col-form-label-lg { padding-top: calc(0.5rem + 1px); padding-bottom: calc(0.5rem + 1px); font-size: 1.25rem; line-height: 1.5; } + +.col-form-label-sm { padding-top: calc(0.25rem + 1px); padding-bottom: calc(0.25rem + 1px); font-size: 0.875rem; line-height: 1.5; } + +.form-control-plaintext { display: block; width: 100%; padding-top: 0.375rem; padding-bottom: 0.375rem; margin-bottom: 0; line-height: 1.5; color: #212529; background-color: transparent; border: solid transparent; border-width: 1px 0; } + +.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg { padding-right: 0; padding-left: 0; } + +.form-control-sm { height: calc(1.8125rem + 2px); padding: 0.25rem 0.5rem; font-size: 0.875rem; line-height: 1.5; border-radius: 0.2rem; } + +.form-control-lg { height: calc(2.875rem + 2px); padding: 0.5rem 1rem; font-size: 1.25rem; line-height: 1.5; border-radius: 0.3rem; } + +select.form-control[size], select.form-control[multiple] { height: auto; } + +textarea.form-control { height: auto; } + +.form-group { margin-bottom: 1rem; } + +.form-text { display: block; margin-top: 0.25rem; } + +.form-row { display: -ms-flexbox; display: flex; -ms-flex-wrap: wrap; flex-wrap: wrap; margin-right: -5px; margin-left: -5px; } + +.form-row > .col, .form-row > [class*="col-"] { padding-right: 5px; padding-left: 5px; } + +.form-check { position: relative; display: block; padding-left: 1.25rem; } + +.form-check-input { position: absolute; margin-top: 0.3rem; margin-left: -1.25rem; } + +.form-check-input:disabled ~ .form-check-label { color: #6c757d; } + +.form-check-label { margin-bottom: 0; } + +.form-check-inline { display: -ms-inline-flexbox; display: inline-flex; -ms-flex-align: center; align-items: center; padding-left: 0; margin-right: 0.75rem; } + +.form-check-inline .form-check-input { position: static; margin-top: 0; margin-right: 0.3125rem; margin-left: 0; } + +.valid-feedback { display: none; width: 100%; margin-top: 0.25rem; font-size: 80%; color: #28a745; } + +.valid-tooltip { position: absolute; top: 100%; z-index: 5; display: none; max-width: 100%; padding: 0.25rem 0.5rem; margin-top: .1rem; font-size: 0.875rem; line-height: 1.5; color: #fff; background-color: rgba(40, 167, 69, 0.9); border-radius: 0.25rem; } + +.was-validated .form-control:valid, .form-control.is-valid { border-color: #28a745; padding-right: 2.25rem; background-repeat: no-repeat; background-position: center right calc(2.25rem / 4); background-size: calc(2.25rem / 2) calc(2.25rem / 2); background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"); } + +.was-validated .form-control:valid:focus, .form-control.is-valid:focus { border-color: #28a745; box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25); } + +.was-validated .form-control:valid ~ .valid-feedback, .was-validated .form-control:valid ~ .valid-tooltip, .form-control.is-valid ~ .valid-feedback, .form-control.is-valid ~ .valid-tooltip { display: block; } + +.was-validated textarea.form-control:valid, textarea.form-control.is-valid { padding-right: 2.25rem; background-position: top calc(2.25rem / 4) right calc(2.25rem / 4); } + +.was-validated .custom-select:valid, .custom-select.is-valid { border-color: #28a745; padding-right: 3.4375rem; background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") no-repeat center right 1.75rem/1.125rem 1.125rem; } + +.was-validated .custom-select:valid:focus, .custom-select.is-valid:focus { border-color: #28a745; box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25); } + +.was-validated .custom-select:valid ~ .valid-feedback, .was-validated .custom-select:valid ~ .valid-tooltip, .custom-select.is-valid ~ .valid-feedback, .custom-select.is-valid ~ .valid-tooltip { display: block; } + +.was-validated .form-control-file:valid ~ .valid-feedback, .was-validated .form-control-file:valid ~ .valid-tooltip, .form-control-file.is-valid ~ .valid-feedback, .form-control-file.is-valid ~ .valid-tooltip { display: block; } + +.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label { color: #28a745; } + +.was-validated .form-check-input:valid ~ .valid-feedback, .was-validated .form-check-input:valid ~ .valid-tooltip, .form-check-input.is-valid ~ .valid-feedback, .form-check-input.is-valid ~ .valid-tooltip { display: block; } + +.was-validated .custom-control-input:valid ~ .custom-control-label, .custom-control-input.is-valid ~ .custom-control-label { color: #28a745; } + +.was-validated .custom-control-input:valid ~ .custom-control-label::before, .custom-control-input.is-valid ~ .custom-control-label::before { border-color: #28a745; } + +.was-validated .custom-control-input:valid ~ .valid-feedback, .was-validated .custom-control-input:valid ~ .valid-tooltip, .custom-control-input.is-valid ~ .valid-feedback, .custom-control-input.is-valid ~ .valid-tooltip { display: block; } + +.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, .custom-control-input.is-valid:checked ~ .custom-control-label::before { border-color: #34ce57; background-color: #34ce57; } + +.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before, .custom-control-input.is-valid:focus ~ .custom-control-label::before { box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25); } + +.was-validated .custom-control-input:valid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-valid:focus:not(:checked) ~ .custom-control-label::before { border-color: #28a745; } + +.was-validated .custom-file-input:valid ~ .custom-file-label, .custom-file-input.is-valid ~ .custom-file-label { border-color: #28a745; } + +.was-validated .custom-file-input:valid ~ .valid-feedback, .was-validated .custom-file-input:valid ~ .valid-tooltip, .custom-file-input.is-valid ~ .valid-feedback, .custom-file-input.is-valid ~ .valid-tooltip { display: block; } + +.was-validated .custom-file-input:valid:focus ~ .custom-file-label, .custom-file-input.is-valid:focus ~ .custom-file-label { border-color: #28a745; box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25); } + +.invalid-feedback { display: none; width: 100%; margin-top: 0.25rem; font-size: 80%; color: #dc3545; } + +.invalid-tooltip { position: absolute; top: 100%; z-index: 5; display: none; max-width: 100%; padding: 0.25rem 0.5rem; margin-top: .1rem; font-size: 0.875rem; line-height: 1.5; color: #fff; background-color: rgba(220, 53, 69, 0.9); border-radius: 0.25rem; } + +.was-validated .form-control:invalid, .form-control.is-invalid { border-color: #dc3545; padding-right: 2.25rem; background-repeat: no-repeat; background-position: center right calc(2.25rem / 4); background-size: calc(2.25rem / 2) calc(2.25rem / 2); background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23d9534f' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E"); } + +.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus { border-color: #dc3545; box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25); } + +.was-validated .form-control:invalid ~ .invalid-feedback, .was-validated .form-control:invalid ~ .invalid-tooltip, .form-control.is-invalid ~ .invalid-feedback, .form-control.is-invalid ~ .invalid-tooltip { display: block; } + +.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid { padding-right: 2.25rem; background-position: top calc(2.25rem / 4) right calc(2.25rem / 4); } + +.was-validated .custom-select:invalid, .custom-select.is-invalid { border-color: #dc3545; padding-right: 3.4375rem; background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23d9534f' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E") no-repeat center right 1.75rem/1.125rem 1.125rem; } + +.was-validated .custom-select:invalid:focus, .custom-select.is-invalid:focus { border-color: #dc3545; box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25); } + +.was-validated .custom-select:invalid ~ .invalid-feedback, .was-validated .custom-select:invalid ~ .invalid-tooltip, .custom-select.is-invalid ~ .invalid-feedback, .custom-select.is-invalid ~ .invalid-tooltip { display: block; } + +.was-validated .form-control-file:invalid ~ .invalid-feedback, .was-validated .form-control-file:invalid ~ .invalid-tooltip, .form-control-file.is-invalid ~ .invalid-feedback, .form-control-file.is-invalid ~ .invalid-tooltip { display: block; } + +.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label { color: #dc3545; } + +.was-validated .form-check-input:invalid ~ .invalid-feedback, .was-validated .form-check-input:invalid ~ .invalid-tooltip, .form-check-input.is-invalid ~ .invalid-feedback, .form-check-input.is-invalid ~ .invalid-tooltip { display: block; } + +.was-validated .custom-control-input:invalid ~ .custom-control-label, .custom-control-input.is-invalid ~ .custom-control-label { color: #dc3545; } + +.was-validated .custom-control-input:invalid ~ .custom-control-label::before, .custom-control-input.is-invalid ~ .custom-control-label::before { border-color: #dc3545; } + +.was-validated .custom-control-input:invalid ~ .invalid-feedback, .was-validated .custom-control-input:invalid ~ .invalid-tooltip, .custom-control-input.is-invalid ~ .invalid-feedback, .custom-control-input.is-invalid ~ .invalid-tooltip { display: block; } + +.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before, .custom-control-input.is-invalid:checked ~ .custom-control-label::before { border-color: #e4606d; background-color: #e4606d; } + +.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before, .custom-control-input.is-invalid:focus ~ .custom-control-label::before { box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25); } + +.was-validated .custom-control-input:invalid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-invalid:focus:not(:checked) ~ .custom-control-label::before { border-color: #dc3545; } + +.was-validated .custom-file-input:invalid ~ .custom-file-label, .custom-file-input.is-invalid ~ .custom-file-label { border-color: #dc3545; } + +.was-validated .custom-file-input:invalid ~ .invalid-feedback, .was-validated .custom-file-input:invalid ~ .invalid-tooltip, .custom-file-input.is-invalid ~ .invalid-feedback, .custom-file-input.is-invalid ~ .invalid-tooltip { display: block; } + +.was-validated .custom-file-input:invalid:focus ~ .custom-file-label, .custom-file-input.is-invalid:focus ~ .custom-file-label { border-color: #dc3545; box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25); } + +.form-inline { display: -ms-flexbox; display: flex; -ms-flex-flow: row wrap; flex-flow: row wrap; -ms-flex-align: center; align-items: center; } + +.form-inline .form-check { width: 100%; } + +@media (min-width: 576px) { .form-inline label { display: -ms-flexbox; display: flex; -ms-flex-align: center; align-items: center; -ms-flex-pack: center; justify-content: center; margin-bottom: 0; } .form-inline .form-group { display: -ms-flexbox; display: flex; -ms-flex: 0 0 auto; flex: 0 0 auto; -ms-flex-flow: row wrap; flex-flow: row wrap; -ms-flex-align: center; align-items: center; margin-bottom: 0; } .form-inline .form-control { display: inline-block; width: auto; vertical-align: middle; } .form-inline .form-control-plaintext { display: inline-block; } .form-inline .input-group, .form-inline .custom-select { width: auto; } .form-inline .form-check { display: -ms-flexbox; display: flex; -ms-flex-align: center; align-items: center; -ms-flex-pack: center; justify-content: center; width: auto; padding-left: 0; } .form-inline .form-check-input { position: relative; margin-top: 0; margin-right: 0.25rem; margin-left: 0; } .form-inline .custom-control { -ms-flex-align: center; align-items: center; -ms-flex-pack: center; justify-content: center; } .form-inline .custom-control-label { margin-bottom: 0; } } + +.btn { display: inline-block; font-weight: 400; color: #212529; text-align: center; vertical-align: middle; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; background-color: transparent; border: 1px solid transparent; padding: 0.375rem 0.75rem; font-size: 1rem; line-height: 1.5; border-radius: 0.25rem; transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } + +@media screen and (prefers-reduced-motion: reduce) { .btn { transition: none; } } + +.btn:hover { color: #212529; text-decoration: none; } + +.btn:focus, .btn.focus { outline: 0; box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); } + +.btn.disabled, .btn:disabled { opacity: 0.65; } + +.btn:not(:disabled):not(.disabled) { cursor: pointer; } + +a.btn.disabled, fieldset:disabled a.btn { pointer-events: none; } + +.btn-primary { color: #fff; background-color: #007bff; border-color: #007bff; } + +.btn-primary:hover { color: #fff; background-color: #0069d9; border-color: #0062cc; } + +.btn-primary:focus, .btn-primary.focus { box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5); } + +.btn-primary.disabled, .btn-primary:disabled { color: #fff; background-color: #007bff; border-color: #007bff; } + +.btn-primary:not(:disabled):not(.disabled):active, .btn-primary.active:not(:disabled):not(.disabled), .show > .btn-primary.dropdown-toggle { color: #fff; background-color: #0062cc; border-color: #005cbf; } + +.btn-primary:not(:disabled):not(.disabled):active:focus, .btn-primary.active:not(:disabled):not(.disabled):focus, .show > .btn-primary.dropdown-toggle:focus { box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5); } + +.btn-secondary { color: #fff; background-color: #6c757d; border-color: #6c757d; } + +.btn-secondary:hover { color: #fff; background-color: #5a6268; border-color: #545b62; } + +.btn-secondary:focus, .btn-secondary.focus { box-shadow: 0 0 0 0.2rem rgba(130, 138, 145, 0.5); } + +.btn-secondary.disabled, .btn-secondary:disabled { color: #fff; background-color: #6c757d; border-color: #6c757d; } + +.btn-secondary:not(:disabled):not(.disabled):active, .btn-secondary.active:not(:disabled):not(.disabled), .show > .btn-secondary.dropdown-toggle { color: #fff; background-color: #545b62; border-color: #4e555b; } + +.btn-secondary:not(:disabled):not(.disabled):active:focus, .btn-secondary.active:not(:disabled):not(.disabled):focus, .show > .btn-secondary.dropdown-toggle:focus { box-shadow: 0 0 0 0.2rem rgba(130, 138, 145, 0.5); } + +.btn-success { color: #fff; background-color: #28a745; border-color: #28a745; } + +.btn-success:hover { color: #fff; background-color: #218838; border-color: #1e7e34; } + +.btn-success:focus, .btn-success.focus { box-shadow: 0 0 0 0.2rem rgba(72, 180, 97, 0.5); } + +.btn-success.disabled, .btn-success:disabled { color: #fff; background-color: #28a745; border-color: #28a745; } + +.btn-success:not(:disabled):not(.disabled):active, .btn-success.active:not(:disabled):not(.disabled), .show > .btn-success.dropdown-toggle { color: #fff; background-color: #1e7e34; border-color: #1c7430; } + +.btn-success:not(:disabled):not(.disabled):active:focus, .btn-success.active:not(:disabled):not(.disabled):focus, .show > .btn-success.dropdown-toggle:focus { box-shadow: 0 0 0 0.2rem rgba(72, 180, 97, 0.5); } + +.btn-info { color: #fff; background-color: #17a2b8; border-color: #17a2b8; } + +.btn-info:hover { color: #fff; background-color: #138496; border-color: #117a8b; } + +.btn-info:focus, .btn-info.focus { box-shadow: 0 0 0 0.2rem rgba(58, 176, 195, 0.5); } + +.btn-info.disabled, .btn-info:disabled { color: #fff; background-color: #17a2b8; border-color: #17a2b8; } + +.btn-info:not(:disabled):not(.disabled):active, .btn-info.active:not(:disabled):not(.disabled), .show > .btn-info.dropdown-toggle { color: #fff; background-color: #117a8b; border-color: #10707f; } + +.btn-info:not(:disabled):not(.disabled):active:focus, .btn-info.active:not(:disabled):not(.disabled):focus, .show > .btn-info.dropdown-toggle:focus { box-shadow: 0 0 0 0.2rem rgba(58, 176, 195, 0.5); } + +.btn-warning { color: #212529; background-color: #ffc107; border-color: #ffc107; } + +.btn-warning:hover { color: #212529; background-color: #e0a800; border-color: #d39e00; } + +.btn-warning:focus, .btn-warning.focus { box-shadow: 0 0 0 0.2rem rgba(222, 170, 12, 0.5); } + +.btn-warning.disabled, .btn-warning:disabled { color: #212529; background-color: #ffc107; border-color: #ffc107; } + +.btn-warning:not(:disabled):not(.disabled):active, .btn-warning.active:not(:disabled):not(.disabled), .show > .btn-warning.dropdown-toggle { color: #212529; background-color: #d39e00; border-color: #c69500; } + +.btn-warning:not(:disabled):not(.disabled):active:focus, .btn-warning.active:not(:disabled):not(.disabled):focus, .show > .btn-warning.dropdown-toggle:focus { box-shadow: 0 0 0 0.2rem rgba(222, 170, 12, 0.5); } + +.btn-danger { color: #fff; background-color: #dc3545; border-color: #dc3545; } + +.btn-danger:hover { color: #fff; background-color: #c82333; border-color: #bd2130; } + +.btn-danger:focus, .btn-danger.focus { box-shadow: 0 0 0 0.2rem rgba(225, 83, 97, 0.5); } + +.btn-danger.disabled, .btn-danger:disabled { color: #fff; background-color: #dc3545; border-color: #dc3545; } + +.btn-danger:not(:disabled):not(.disabled):active, .btn-danger.active:not(:disabled):not(.disabled), .show > .btn-danger.dropdown-toggle { color: #fff; background-color: #bd2130; border-color: #b21f2d; } + +.btn-danger:not(:disabled):not(.disabled):active:focus, .btn-danger.active:not(:disabled):not(.disabled):focus, .show > .btn-danger.dropdown-toggle:focus { box-shadow: 0 0 0 0.2rem rgba(225, 83, 97, 0.5); } + +.btn-light { color: #212529; background-color: #f8f9fa; border-color: #f8f9fa; } + +.btn-light:hover { color: #212529; background-color: #e2e6ea; border-color: #dae0e5; } + +.btn-light:focus, .btn-light.focus { box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5); } + +.btn-light.disabled, .btn-light:disabled { color: #212529; background-color: #f8f9fa; border-color: #f8f9fa; } + +.btn-light:not(:disabled):not(.disabled):active, .btn-light.active:not(:disabled):not(.disabled), .show > .btn-light.dropdown-toggle { color: #212529; background-color: #dae0e5; border-color: #d3d9df; } + +.btn-light:not(:disabled):not(.disabled):active:focus, .btn-light.active:not(:disabled):not(.disabled):focus, .show > .btn-light.dropdown-toggle:focus { box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5); } + +.btn-dark { color: #fff; background-color: #343a40; border-color: #343a40; } + +.btn-dark:hover { color: #fff; background-color: #23272b; border-color: #1d2124; } + +.btn-dark:focus, .btn-dark.focus { box-shadow: 0 0 0 0.2rem rgba(82, 88, 93, 0.5); } + +.btn-dark.disabled, .btn-dark:disabled { color: #fff; background-color: #343a40; border-color: #343a40; } + +.btn-dark:not(:disabled):not(.disabled):active, .btn-dark.active:not(:disabled):not(.disabled), .show > .btn-dark.dropdown-toggle { color: #fff; background-color: #1d2124; border-color: #171a1d; } + +.btn-dark:not(:disabled):not(.disabled):active:focus, .btn-dark.active:not(:disabled):not(.disabled):focus, .show > .btn-dark.dropdown-toggle:focus { box-shadow: 0 0 0 0.2rem rgba(82, 88, 93, 0.5); } + +.btn-outline-primary { color: #007bff; border-color: #007bff; } + +.btn-outline-primary:hover { color: #fff; background-color: #007bff; border-color: #007bff; } + +.btn-outline-primary:focus, .btn-outline-primary.focus { box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5); } + +.btn-outline-primary.disabled, .btn-outline-primary:disabled { color: #007bff; background-color: transparent; } + +.btn-outline-primary:not(:disabled):not(.disabled):active, .btn-outline-primary.active:not(:disabled):not(.disabled), .show > .btn-outline-primary.dropdown-toggle { color: #fff; background-color: #007bff; border-color: #007bff; } + +.btn-outline-primary:not(:disabled):not(.disabled):active:focus, .btn-outline-primary.active:not(:disabled):not(.disabled):focus, .show > .btn-outline-primary.dropdown-toggle:focus { box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5); } + +.btn-outline-secondary { color: #6c757d; border-color: #6c757d; } + +.btn-outline-secondary:hover { color: #fff; background-color: #6c757d; border-color: #6c757d; } + +.btn-outline-secondary:focus, .btn-outline-secondary.focus { box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5); } + +.btn-outline-secondary.disabled, .btn-outline-secondary:disabled { color: #6c757d; background-color: transparent; } + +.btn-outline-secondary:not(:disabled):not(.disabled):active, .btn-outline-secondary.active:not(:disabled):not(.disabled), .show > .btn-outline-secondary.dropdown-toggle { color: #fff; background-color: #6c757d; border-color: #6c757d; } + +.btn-outline-secondary:not(:disabled):not(.disabled):active:focus, .btn-outline-secondary.active:not(:disabled):not(.disabled):focus, .show > .btn-outline-secondary.dropdown-toggle:focus { box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5); } + +.btn-outline-success { color: #28a745; border-color: #28a745; } + +.btn-outline-success:hover { color: #fff; background-color: #28a745; border-color: #28a745; } + +.btn-outline-success:focus, .btn-outline-success.focus { box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5); } + +.btn-outline-success.disabled, .btn-outline-success:disabled { color: #28a745; background-color: transparent; } + +.btn-outline-success:not(:disabled):not(.disabled):active, .btn-outline-success.active:not(:disabled):not(.disabled), .show > .btn-outline-success.dropdown-toggle { color: #fff; background-color: #28a745; border-color: #28a745; } + +.btn-outline-success:not(:disabled):not(.disabled):active:focus, .btn-outline-success.active:not(:disabled):not(.disabled):focus, .show > .btn-outline-success.dropdown-toggle:focus { box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5); } + +.btn-outline-info { color: #17a2b8; border-color: #17a2b8; } + +.btn-outline-info:hover { color: #fff; background-color: #17a2b8; border-color: #17a2b8; } + +.btn-outline-info:focus, .btn-outline-info.focus { box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); } + +.btn-outline-info.disabled, .btn-outline-info:disabled { color: #17a2b8; background-color: transparent; } + +.btn-outline-info:not(:disabled):not(.disabled):active, .btn-outline-info.active:not(:disabled):not(.disabled), .show > .btn-outline-info.dropdown-toggle { color: #fff; background-color: #17a2b8; border-color: #17a2b8; } + +.btn-outline-info:not(:disabled):not(.disabled):active:focus, .btn-outline-info.active:not(:disabled):not(.disabled):focus, .show > .btn-outline-info.dropdown-toggle:focus { box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); } + +.btn-outline-warning { color: #ffc107; border-color: #ffc107; } + +.btn-outline-warning:hover { color: #212529; background-color: #ffc107; border-color: #ffc107; } + +.btn-outline-warning:focus, .btn-outline-warning.focus { box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5); } + +.btn-outline-warning.disabled, .btn-outline-warning:disabled { color: #ffc107; background-color: transparent; } + +.btn-outline-warning:not(:disabled):not(.disabled):active, .btn-outline-warning.active:not(:disabled):not(.disabled), .show > .btn-outline-warning.dropdown-toggle { color: #212529; background-color: #ffc107; border-color: #ffc107; } + +.btn-outline-warning:not(:disabled):not(.disabled):active:focus, .btn-outline-warning.active:not(:disabled):not(.disabled):focus, .show > .btn-outline-warning.dropdown-toggle:focus { box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5); } + +.btn-outline-danger { color: #dc3545; border-color: #dc3545; } + +.btn-outline-danger:hover { color: #fff; background-color: #dc3545; border-color: #dc3545; } + +.btn-outline-danger:focus, .btn-outline-danger.focus { box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5); } + +.btn-outline-danger.disabled, .btn-outline-danger:disabled { color: #dc3545; background-color: transparent; } + +.btn-outline-danger:not(:disabled):not(.disabled):active, .btn-outline-danger.active:not(:disabled):not(.disabled), .show > .btn-outline-danger.dropdown-toggle { color: #fff; background-color: #dc3545; border-color: #dc3545; } + +.btn-outline-danger:not(:disabled):not(.disabled):active:focus, .btn-outline-danger.active:not(:disabled):not(.disabled):focus, .show > .btn-outline-danger.dropdown-toggle:focus { box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5); } + +.btn-outline-light { color: #f8f9fa; border-color: #f8f9fa; } + +.btn-outline-light:hover { color: #212529; background-color: #f8f9fa; border-color: #f8f9fa; } + +.btn-outline-light:focus, .btn-outline-light.focus { box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); } + +.btn-outline-light.disabled, .btn-outline-light:disabled { color: #f8f9fa; background-color: transparent; } + +.btn-outline-light:not(:disabled):not(.disabled):active, .btn-outline-light.active:not(:disabled):not(.disabled), .show > .btn-outline-light.dropdown-toggle { color: #212529; background-color: #f8f9fa; border-color: #f8f9fa; } + +.btn-outline-light:not(:disabled):not(.disabled):active:focus, .btn-outline-light.active:not(:disabled):not(.disabled):focus, .show > .btn-outline-light.dropdown-toggle:focus { box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); } + +.btn-outline-dark { color: #343a40; border-color: #343a40; } + +.btn-outline-dark:hover { color: #fff; background-color: #343a40; border-color: #343a40; } + +.btn-outline-dark:focus, .btn-outline-dark.focus { box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); } + +.btn-outline-dark.disabled, .btn-outline-dark:disabled { color: #343a40; background-color: transparent; } + +.btn-outline-dark:not(:disabled):not(.disabled):active, .btn-outline-dark.active:not(:disabled):not(.disabled), .show > .btn-outline-dark.dropdown-toggle { color: #fff; background-color: #343a40; border-color: #343a40; } + +.btn-outline-dark:not(:disabled):not(.disabled):active:focus, .btn-outline-dark.active:not(:disabled):not(.disabled):focus, .show > .btn-outline-dark.dropdown-toggle:focus { box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); } + +.btn-link { font-weight: 400; color: #007bff; } + +.btn-link:hover { color: #0056b3; text-decoration: underline; } + +.btn-link:focus, .btn-link.focus { text-decoration: underline; box-shadow: none; } + +.btn-link:disabled, .btn-link.disabled { color: #6c757d; pointer-events: none; } + +.btn-lg, .btn-group-lg > .btn { padding: 0.5rem 1rem; font-size: 1.25rem; line-height: 1.5; border-radius: 0.3rem; } + +.btn-sm, .btn-group-sm > .btn { padding: 0.25rem 0.5rem; font-size: 0.875rem; line-height: 1.5; border-radius: 0.2rem; } + +.btn-block { display: block; width: 100%; } + +.btn-block + .btn-block { margin-top: 0.5rem; } + +input.btn-block[type="submit"], input.btn-block[type="reset"], input.btn-block[type="button"] { width: 100%; } + +.fade { transition: opacity 0.15s linear; } + +@media screen and (prefers-reduced-motion: reduce) { .fade { transition: none; } } + +.fade:not(.show) { opacity: 0; } + +.collapse:not(.show) { display: none; } + +.collapsing { position: relative; height: 0; overflow: hidden; transition: height 0.35s ease; } + +@media screen and (prefers-reduced-motion: reduce) { .collapsing { transition: none; } } + +.dropup, .dropright, .dropdown, .dropleft { position: relative; } + +.dropdown-toggle::after { display: inline-block; margin-left: 0.255em; vertical-align: 0.255em; content: ""; border-top: 0.3em solid; border-right: 0.3em solid transparent; border-bottom: 0; border-left: 0.3em solid transparent; } + +.dropdown-toggle:empty::after { margin-left: 0; } + +.dropdown-menu { position: absolute; top: 100%; left: 0; z-index: 1000; display: none; float: left; min-width: 10rem; padding: 0.5rem 0; margin: 0.125rem 0 0; font-size: 1rem; color: #212529; text-align: left; list-style: none; background-color: #fff; background-clip: padding-box; border: 1px solid rgba(0, 0, 0, 0.15); border-radius: 0.25rem; } + +.dropdown-menu-right { right: 0; left: auto; } + +@media (min-width: 576px) { .dropdown-menu-sm-right { right: 0; left: auto; } } + +@media (min-width: 768px) { .dropdown-menu-md-right { right: 0; left: auto; } .dropdown:hover .dropdown-menu { display: block; } } + +@media (min-width: 992px) { .dropdown-menu-lg-right { right: 0; left: auto; } } + +@media (min-width: 1200px) { .dropdown-menu-xl-right { right: 0; left: auto; } } + +.dropdown-menu-left { right: auto; left: 0; } + +@media (min-width: 576px) { .dropdown-menu-sm-left { right: auto; left: 0; } } + +@media (min-width: 768px) { .dropdown-menu-md-left { right: auto; left: 0; } } + +@media (min-width: 992px) { .dropdown-menu-lg-left { right: auto; left: 0; } } + +@media (min-width: 1200px) { .dropdown-menu-xl-left { right: auto; left: 0; } } + +.dropup .dropdown-menu { top: auto; bottom: 100%; margin-top: 0; margin-bottom: 0.125rem; } + +.dropup .dropdown-toggle::after { display: inline-block; margin-left: 0.255em; vertical-align: 0.255em; content: ""; border-top: 0; border-right: 0.3em solid transparent; border-bottom: 0.3em solid; border-left: 0.3em solid transparent; } + +.dropup .dropdown-toggle:empty::after { margin-left: 0; } + +.dropright .dropdown-menu { top: 0; right: auto; left: 100%; margin-top: 0; margin-left: 0.125rem; } + +.dropright .dropdown-toggle::after { display: inline-block; margin-left: 0.255em; vertical-align: 0.255em; content: ""; border-top: 0.3em solid transparent; border-right: 0; border-bottom: 0.3em solid transparent; border-left: 0.3em solid; } + +.dropright .dropdown-toggle:empty::after { margin-left: 0; } + +.dropright .dropdown-toggle::after { vertical-align: 0; } + +.dropleft .dropdown-menu { top: 0; right: 100%; left: auto; margin-top: 0; margin-right: 0.125rem; } + +.dropleft .dropdown-toggle::after { display: inline-block; margin-left: 0.255em; vertical-align: 0.255em; content: ""; } + +.dropleft .dropdown-toggle::after { display: none; } + +.dropleft .dropdown-toggle::before { display: inline-block; margin-right: 0.255em; vertical-align: 0.255em; content: ""; border-top: 0.3em solid transparent; border-right: 0.3em solid; border-bottom: 0.3em solid transparent; } + +.dropleft .dropdown-toggle:empty::after { margin-left: 0; } + +.dropleft .dropdown-toggle::before { vertical-align: 0; } + +.dropdown-menu[x-placement^="top"], .dropdown-menu[x-placement^="right"], .dropdown-menu[x-placement^="bottom"], .dropdown-menu[x-placement^="left"] { right: auto; bottom: auto; } + +.dropdown-divider { height: 0; margin: 0.5rem 0; overflow: hidden; border-top: 1px solid #e9ecef; } + +.dropdown-item { display: block; width: 100%; padding: 0.25rem 1.5rem; clear: both; font-weight: 400; color: #212529; text-align: inherit; white-space: nowrap; background-color: transparent; border: 0; } + +.dropdown-item:first-child { border-top-left-radius: calc(0.25rem - 1px); border-top-right-radius: calc(0.25rem - 1px); } + +.dropdown-item:last-child { border-bottom-right-radius: calc(0.25rem - 1px); border-bottom-left-radius: calc(0.25rem - 1px); } + +.dropdown-item:hover, .dropdown-item:focus { color: #16181b; text-decoration: none; background-color: #f8f9fa; } + +.dropdown-item.active, .dropdown-item:active { color: #fff; text-decoration: none; background-color: #007bff; } + +.dropdown-item.disabled, .dropdown-item:disabled { color: #6c757d; pointer-events: none; background-color: transparent; } + +.dropdown-menu.show { display: block; } + +.dropdown-header { display: block; padding: 0.5rem 1.5rem; margin-bottom: 0; font-size: 0.875rem; color: #6c757d; white-space: nowrap; } + +.dropdown-item-text { display: block; padding: 0.25rem 1.5rem; color: #212529; } + +.btn-group, .btn-group-vertical { position: relative; display: -ms-inline-flexbox; display: inline-flex; vertical-align: middle; } + +.btn-group > .btn, .btn-group-vertical > .btn { position: relative; -ms-flex: 1 1 auto; flex: 1 1 auto; } + +.btn-group > .btn:hover, .btn-group-vertical > .btn:hover { z-index: 1; } + +.btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active, .btn-group-vertical > .btn:focus, .btn-group-vertical > .btn:active, .btn-group-vertical > .btn.active { z-index: 1; } + +.btn-toolbar { display: -ms-flexbox; display: flex; -ms-flex-wrap: wrap; flex-wrap: wrap; -ms-flex-pack: start; justify-content: flex-start; } + +.btn-toolbar .input-group { width: auto; } + +.btn-group > .btn:not(:first-child), .btn-group > .btn-group:not(:first-child) { margin-left: -1px; } + +.btn-group > .btn:not(:last-child):not(.dropdown-toggle), .btn-group > .btn-group:not(:last-child) > .btn { border-top-right-radius: 0; border-bottom-right-radius: 0; } + +.btn-group > .btn:not(:first-child), .btn-group > .btn-group:not(:first-child) > .btn { border-top-left-radius: 0; border-bottom-left-radius: 0; } + +.dropdown-toggle-split { padding-right: 0.5625rem; padding-left: 0.5625rem; } + +.dropdown-toggle-split::after, .dropup .dropdown-toggle-split::after, .dropright .dropdown-toggle-split::after { margin-left: 0; } + +.dropleft .dropdown-toggle-split::before { margin-right: 0; } + +.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split { padding-right: 0.375rem; padding-left: 0.375rem; } + +.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split { padding-right: 0.75rem; padding-left: 0.75rem; } + +.btn-group-vertical { -ms-flex-direction: column; flex-direction: column; -ms-flex-align: start; align-items: flex-start; -ms-flex-pack: center; justify-content: center; } + +.btn-group-vertical > .btn, .btn-group-vertical > .btn-group { width: 100%; } + +.btn-group-vertical > .btn:not(:first-child), .btn-group-vertical > .btn-group:not(:first-child) { margin-top: -1px; } + +.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle), .btn-group-vertical > .btn-group:not(:last-child) > .btn { border-bottom-right-radius: 0; border-bottom-left-radius: 0; } + +.btn-group-vertical > .btn:not(:first-child), .btn-group-vertical > .btn-group:not(:first-child) > .btn { border-top-left-radius: 0; border-top-right-radius: 0; } + +.btn-group-toggle > .btn, .btn-group-toggle > .btn-group > .btn { margin-bottom: 0; } + +.btn-group-toggle > .btn input[type="radio"], .btn-group-toggle > .btn input[type="checkbox"], .btn-group-toggle > .btn-group > .btn input[type="radio"], .btn-group-toggle > .btn-group > .btn input[type="checkbox"] { position: absolute; clip: rect(0, 0, 0, 0); pointer-events: none; } + +.input-group { position: relative; display: -ms-flexbox; display: flex; -ms-flex-wrap: wrap; flex-wrap: wrap; -ms-flex-align: stretch; align-items: stretch; width: 100%; } + +.input-group > .form-control, .input-group > .form-control-plaintext, .input-group > .custom-select, .input-group > .custom-file { position: relative; -ms-flex: 1 1 auto; flex: 1 1 auto; width: 1%; margin-bottom: 0; } + +.input-group > .form-control + .form-control, .input-group > .form-control + .custom-select, .input-group > .form-control + .custom-file, .input-group > .form-control-plaintext + .form-control, .input-group > .form-control-plaintext + .custom-select, .input-group > .form-control-plaintext + .custom-file, .input-group > .custom-select + .form-control, .input-group > .custom-select + .custom-select, .input-group > .custom-select + .custom-file, .input-group > .custom-file + .form-control, .input-group > .custom-file + .custom-select, .input-group > .custom-file + .custom-file { margin-left: -1px; } + +.input-group > .form-control:focus, .input-group > .custom-select:focus, .input-group > .custom-file .custom-file-input:focus ~ .custom-file-label { z-index: 3; } + +.input-group > .custom-file .custom-file-input:focus { z-index: 4; } + +.input-group > .form-control:not(:last-child), .input-group > .custom-select:not(:last-child) { border-top-right-radius: 0; border-bottom-right-radius: 0; } + +.input-group > .form-control:not(:first-child), .input-group > .custom-select:not(:first-child) { border-top-left-radius: 0; border-bottom-left-radius: 0; } + +.input-group > .custom-file { display: -ms-flexbox; display: flex; -ms-flex-align: center; align-items: center; } + +.input-group > .custom-file:not(:last-child) .custom-file-label, .input-group > .custom-file:not(:last-child) .custom-file-label::after { border-top-right-radius: 0; border-bottom-right-radius: 0; } + +.input-group > .custom-file:not(:first-child) .custom-file-label { border-top-left-radius: 0; border-bottom-left-radius: 0; } + +.input-group-prepend, .input-group-append { display: -ms-flexbox; display: flex; } + +.input-group-prepend .btn, .input-group-append .btn { position: relative; z-index: 2; } + +.input-group-prepend .btn:focus, .input-group-append .btn:focus { z-index: 3; } + +.input-group-prepend .btn + .btn, .input-group-prepend .btn + .input-group-text, .input-group-prepend .input-group-text + .input-group-text, .input-group-prepend .input-group-text + .btn, .input-group-append .btn + .btn, .input-group-append .btn + .input-group-text, .input-group-append .input-group-text + .input-group-text, .input-group-append .input-group-text + .btn { margin-left: -1px; } + +.input-group-prepend { margin-right: -1px; } + +.input-group-append { margin-left: -1px; } + +.input-group-text { display: -ms-flexbox; display: flex; -ms-flex-align: center; align-items: center; padding: 0.375rem 0.75rem; margin-bottom: 0; font-size: 1rem; font-weight: 400; line-height: 1.5; color: #495057; text-align: center; white-space: nowrap; background-color: #e9ecef; border: 1px solid #ced4da; border-radius: 0.25rem; } + +.input-group-text input[type="radio"], .input-group-text input[type="checkbox"] { margin-top: 0; } + +.input-group-lg > .form-control:not(textarea), .input-group-lg > .custom-select { height: calc(2.875rem + 2px); } + +.input-group-lg > .form-control, .input-group-lg > .custom-select, .input-group-lg > .input-group-prepend > .input-group-text, .input-group-lg > .input-group-append > .input-group-text, .input-group-lg > .input-group-prepend > .btn, .input-group-lg > .input-group-append > .btn { padding: 0.5rem 1rem; font-size: 1.25rem; line-height: 1.5; border-radius: 0.3rem; } + +.input-group-sm > .form-control:not(textarea), .input-group-sm > .custom-select { height: calc(1.8125rem + 2px); } + +.input-group-sm > .form-control, .input-group-sm > .custom-select, .input-group-sm > .input-group-prepend > .input-group-text, .input-group-sm > .input-group-append > .input-group-text, .input-group-sm > .input-group-prepend > .btn, .input-group-sm > .input-group-append > .btn { padding: 0.25rem 0.5rem; font-size: 0.875rem; line-height: 1.5; border-radius: 0.2rem; } + +.input-group-lg > .custom-select, .input-group-sm > .custom-select { padding-right: 1.75rem; } + +.input-group > .input-group-prepend > .btn, .input-group > .input-group-prepend > .input-group-text, .input-group > .input-group-append:not(:last-child) > .btn, .input-group > .input-group-append:not(:last-child) > .input-group-text, .input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle), .input-group > .input-group-append:last-child > .input-group-text:not(:last-child) { border-top-right-radius: 0; border-bottom-right-radius: 0; } + +.input-group > .input-group-append > .btn, .input-group > .input-group-append > .input-group-text, .input-group > .input-group-prepend:not(:first-child) > .btn, .input-group > .input-group-prepend:not(:first-child) > .input-group-text, .input-group > .input-group-prepend:first-child > .btn:not(:first-child), .input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) { border-top-left-radius: 0; border-bottom-left-radius: 0; } + +.custom-control { position: relative; display: block; min-height: 1.5rem; padding-left: 1.5rem; } + +.custom-control-inline { display: -ms-inline-flexbox; display: inline-flex; margin-right: 1rem; } + +.custom-control-input { position: absolute; z-index: -1; opacity: 0; } + +.custom-control-input:checked ~ .custom-control-label::before { color: #fff; border-color: #007bff; background-color: #007bff; } + +.custom-control-input:focus ~ .custom-control-label::before { box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); } + +.custom-control-input:focus:not(:checked) ~ .custom-control-label::before { border-color: #80bdff; } + +.custom-control-input:not(:disabled):active ~ .custom-control-label::before { color: #fff; background-color: #b3d7ff; border-color: #b3d7ff; } + +.custom-control-input:disabled ~ .custom-control-label { color: #6c757d; } + +.custom-control-input:disabled ~ .custom-control-label::before { background-color: #e9ecef; } + +.custom-control-label { position: relative; margin-bottom: 0; vertical-align: top; } + +.custom-control-label::before { position: absolute; top: 0.25rem; left: -1.5rem; display: block; width: 1rem; height: 1rem; pointer-events: none; content: ""; background-color: #fff; border: #adb5bd solid 1px; } + +.custom-control-label::after { position: absolute; top: 0.25rem; left: -1.5rem; display: block; width: 1rem; height: 1rem; content: ""; background-repeat: no-repeat; background-position: center center; background-size: 50% 50%; } + +.custom-checkbox .custom-control-label::before { border-radius: 0.25rem; } + +.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after { background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e"); } + +.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before { border-color: #007bff; background-color: #007bff; } + +.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after { background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e"); } + +.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before { background-color: rgba(0, 123, 255, 0.5); } + +.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before { background-color: rgba(0, 123, 255, 0.5); } + +.custom-radio .custom-control-label::before { border-radius: 50%; } + +.custom-radio .custom-control-input:checked ~ .custom-control-label::after { background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e"); } + +.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before { background-color: rgba(0, 123, 255, 0.5); } + +.custom-switch { padding-left: 2.25rem; } + +.custom-switch .custom-control-label::before { left: -2.25rem; width: 1.75rem; pointer-events: all; border-radius: 0.5rem; } + +.custom-switch .custom-control-label::after { top: calc(0.25rem + 2px); left: calc(-2.25rem + 2px); width: calc(1rem - 4px); height: calc(1rem - 4px); background-color: #adb5bd; border-radius: 0.5rem; transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-transform 0.15s ease-in-out; transition: transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; transition: transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-transform 0.15s ease-in-out; } + +@media screen and (prefers-reduced-motion: reduce) { .custom-switch .custom-control-label::after { transition: none; } } + +.custom-switch .custom-control-input:checked ~ .custom-control-label::after { background-color: #fff; -webkit-transform: translateX(0.75rem); transform: translateX(0.75rem); } + +.custom-switch .custom-control-input:disabled:checked ~ .custom-control-label::before { background-color: rgba(0, 123, 255, 0.5); } + +.custom-select { display: inline-block; width: 100%; height: calc(2.25rem + 2px); padding: 0.375rem 1.75rem 0.375rem 0.75rem; font-weight: 400; line-height: 1.5; color: #495057; vertical-align: middle; background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px; background-color: #fff; border: 1px solid #ced4da; border-radius: 0.25rem; -webkit-appearance: none; -moz-appearance: none; appearance: none; } + +.custom-select:focus { border-color: #80bdff; outline: 0; box-shadow: 0 0 0 0.2rem rgba(128, 189, 255, 0.5); } + +.custom-select:focus::-ms-value { color: #495057; background-color: #fff; } + +.custom-select[multiple], .custom-select[size]:not([size="1"]) { height: auto; padding-right: 0.75rem; background-image: none; } + +.custom-select:disabled { color: #6c757d; background-color: #e9ecef; } + +.custom-select::-ms-expand { opacity: 0; } + +.custom-select-sm { height: calc(1.8125rem + 2px); padding-top: 0.25rem; padding-bottom: 0.25rem; padding-left: 0.5rem; font-size: 0.875rem; } + +.custom-select-lg { height: calc(2.875rem + 2px); padding-top: 0.5rem; padding-bottom: 0.5rem; padding-left: 1rem; font-size: 1.25rem; } + +.custom-file { position: relative; display: inline-block; width: 100%; height: calc(2.25rem + 2px); margin-bottom: 0; } + +.custom-file-input { position: relative; z-index: 2; width: 100%; height: calc(2.25rem + 2px); margin: 0; opacity: 0; } + +.custom-file-input:focus ~ .custom-file-label { border-color: #80bdff; box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); } + +.custom-file-input:disabled ~ .custom-file-label { background-color: #e9ecef; } + +.custom-file-input:lang(en) ~ .custom-file-label::after { content: "Browse"; } + +.custom-file-input ~ .custom-file-label[data-browse]::after { content: attr(data-browse); } + +.custom-file-label { position: absolute; top: 0; right: 0; left: 0; z-index: 1; height: calc(2.25rem + 2px); padding: 0.375rem 0.75rem; font-weight: 400; line-height: 1.5; color: #495057; background-color: #fff; border: 1px solid #ced4da; border-radius: 0.25rem; } + +.custom-file-label::after { position: absolute; top: 0; right: 0; bottom: 0; z-index: 3; display: block; height: 2.25rem; padding: 0.375rem 0.75rem; line-height: 1.5; color: #495057; content: "Browse"; background-color: #e9ecef; border-left: inherit; border-radius: 0 0.25rem 0.25rem 0; } + +.custom-range { width: 100%; height: calc(1rem + 0.4rem); padding: 0; background-color: transparent; -webkit-appearance: none; -moz-appearance: none; appearance: none; } + +.custom-range:focus { outline: none; } + +.custom-range:focus::-webkit-slider-thumb { box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25); } + +.custom-range:focus::-moz-range-thumb { box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25); } + +.custom-range:focus::-ms-thumb { box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25); } + +.custom-range::-moz-focus-outer { border: 0; } + +.custom-range::-webkit-slider-thumb { width: 1rem; height: 1rem; margin-top: -0.25rem; background-color: #007bff; border: 0; border-radius: 1rem; transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; -webkit-appearance: none; appearance: none; } + +@media screen and (prefers-reduced-motion: reduce) { .custom-range::-webkit-slider-thumb { transition: none; } } + +.custom-range::-webkit-slider-thumb:active { background-color: #b3d7ff; } + +.custom-range::-webkit-slider-runnable-track { width: 100%; height: 0.5rem; color: transparent; cursor: pointer; background-color: #dee2e6; border-color: transparent; border-radius: 1rem; } + +.custom-range::-moz-range-thumb { width: 1rem; height: 1rem; background-color: #007bff; border: 0; border-radius: 1rem; transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; -moz-appearance: none; appearance: none; } + +@media screen and (prefers-reduced-motion: reduce) { .custom-range::-moz-range-thumb { transition: none; } } + +.custom-range::-moz-range-thumb:active { background-color: #b3d7ff; } + +.custom-range::-moz-range-track { width: 100%; height: 0.5rem; color: transparent; cursor: pointer; background-color: #dee2e6; border-color: transparent; border-radius: 1rem; } + +.custom-range::-ms-thumb { width: 1rem; height: 1rem; margin-top: 0; margin-right: 0.2rem; margin-left: 0.2rem; background-color: #007bff; border: 0; border-radius: 1rem; 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 screen and (prefers-reduced-motion: reduce) { .custom-range::-ms-thumb { transition: none; } } + +.custom-range::-ms-thumb:active { background-color: #b3d7ff; } + +.custom-range::-ms-track { width: 100%; height: 0.5rem; color: transparent; cursor: pointer; background-color: transparent; border-color: transparent; border-width: 0.5rem; } + +.custom-range::-ms-fill-lower { background-color: #dee2e6; border-radius: 1rem; } + +.custom-range::-ms-fill-upper { margin-right: 15px; background-color: #dee2e6; border-radius: 1rem; } + +.custom-range:disabled::-webkit-slider-thumb { background-color: #adb5bd; } + +.custom-range:disabled::-webkit-slider-runnable-track { cursor: default; } + +.custom-range:disabled::-moz-range-thumb { background-color: #adb5bd; } + +.custom-range:disabled::-moz-range-track { cursor: default; } + +.custom-range:disabled::-ms-thumb { background-color: #adb5bd; } + +.custom-control-label::before, .custom-file-label, .custom-select { transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } + +@media screen and (prefers-reduced-motion: reduce) { .custom-control-label::before, .custom-file-label, .custom-select { transition: none; } } + +.nav { display: -ms-flexbox; display: flex; -ms-flex-wrap: wrap; flex-wrap: wrap; padding-left: 0; margin-bottom: 0; list-style: none; border-bottom: 3px solid black; } + +.nav-link { display: block; padding: 0.5rem 1rem; } + +.nav-link:hover, .nav-link:focus { text-decoration: none; } + +.nav-link.disabled { color: #6c757d; pointer-events: none; cursor: default; } + +.nav-tabs { border-bottom: 1px solid #dee2e6; } + +.nav-tabs .nav-item { margin-bottom: -1px; } + +.nav-tabs .nav-link { border: 1px solid transparent; border-top-left-radius: 0.25rem; border-top-right-radius: 0.25rem; } + +.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus { border-color: #e9ecef #e9ecef #dee2e6; } + +.nav-tabs .nav-link.disabled { color: #6c757d; background-color: transparent; border-color: transparent; } + +.nav-tabs .nav-link.active, .nav-tabs .nav-item.show .nav-link { color: #495057; background-color: #fff; border-color: #dee2e6 #dee2e6 #fff; } + +.nav-tabs .dropdown-menu { margin-top: -1px; border-top-left-radius: 0; border-top-right-radius: 0; } + +.nav-pills .nav-link { border-radius: 0.25rem; } + +.nav-pills .nav-link.active, .nav-pills .show > .nav-link { color: #fff; background-color: #007bff; } + +.nav-fill .nav-item { -ms-flex: 1 1 auto; flex: 1 1 auto; text-align: center; } + +.nav-justified .nav-item { -ms-flex-preferred-size: 0; flex-basis: 0; -ms-flex-positive: 1; flex-grow: 1; text-align: center; } + +.tab-content > .tab-pane { display: none; } + +.tab-content > .active { display: block; } + +.navbar { position: relative; display: -ms-flexbox; display: flex; -ms-flex-wrap: wrap; flex-wrap: wrap; -ms-flex-align: center; align-items: center; -ms-flex-pack: justify; justify-content: space-between; padding: 0.5rem 6%; box-shadow: 1px 1px 10px #a8a6a6; } + +.navbar > .container, .navbar > .container-fluid { display: -ms-flexbox; display: flex; -ms-flex-wrap: wrap; flex-wrap: wrap; -ms-flex-align: center; align-items: center; -ms-flex-pack: justify; justify-content: space-between; } + +.navbar-brand { display: inline-block; padding-top: 0.3125rem; padding-bottom: 0.3125rem; margin-right: 1rem; font-size: 1.25rem; line-height: inherit; white-space: nowrap; color: #1bb3e9; letter-spacing: -1.5px; } + +.navbar-brand:hover, .navbar-brand:focus { text-decoration: none; } + +.navbar-nav { display: -ms-flexbox; display: flex; -ms-flex-direction: column; flex-direction: column; padding-left: 0; margin-bottom: 0; list-style: none; } + +.navbar-nav .nav-link { padding-right: 0; padding-left: 0; } + +.navbar-nav .dropdown-menu { position: static; float: none; } + +.navbar-text { display: inline-block; padding-top: 0.5rem; padding-bottom: 0.5rem; } + +.navbar-collapse { -ms-flex-preferred-size: 100%; flex-basis: 100%; -ms-flex-positive: 1; flex-grow: 1; -ms-flex-align: center; align-items: center; } + +.navbar-toggler { padding: 0.25rem 0.75rem; font-size: 1.25rem; line-height: 1; background-color: transparent; border: 1px solid black; border-radius: 0.25rem; } + +.navbar-toggler:hover, .navbar-toggler:focus { text-decoration: none; } + +.navbar-toggler:not(:disabled):not(.disabled) { cursor: pointer; } + +.navbar-toggler-icon { display: inline-block; width: 1.5em; height: 1.5em; vertical-align: middle; content: ""; background: no-repeat center center; background-size: 100% 100%; } + +@media (max-width: 575.98px) { .navbar-expand-sm > .container, .navbar-expand-sm > .container-fluid { padding-right: 0; padding-left: 0; } } + +@media (min-width: 576px) { .navbar-expand-sm { -ms-flex-flow: row nowrap; flex-flow: row nowrap; -ms-flex-pack: start; justify-content: flex-start; } .navbar-expand-sm .navbar-nav { -ms-flex-direction: row; flex-direction: row; } .navbar-expand-sm .navbar-nav .dropdown-menu { position: absolute; } .navbar-expand-sm .navbar-nav .nav-link { padding-right: 0.5rem; padding-left: 0.5rem; } .navbar-expand-sm > .container, .navbar-expand-sm > .container-fluid { -ms-flex-wrap: nowrap; flex-wrap: nowrap; } .navbar-expand-sm .navbar-collapse { display: -ms-flexbox !important; display: flex !important; -ms-flex-preferred-size: auto; flex-basis: auto; } .navbar-expand-sm .navbar-toggler { display: none; } } + +@media (max-width: 767.98px) { .navbar-expand-md > .container, .navbar-expand-md > .container-fluid { padding-right: 0; padding-left: 0; } } + +@media (min-width: 768px) { .navbar-expand-md { -ms-flex-flow: row nowrap; flex-flow: row nowrap; -ms-flex-pack: start; justify-content: flex-start; } .navbar-expand-md .navbar-nav { -ms-flex-direction: row; flex-direction: row; } .navbar-expand-md .navbar-nav .dropdown-menu { position: absolute; } .navbar-expand-md .navbar-nav .nav-link { padding-right: 0.5rem; padding-left: 0.5rem; } .navbar-expand-md > .container, .navbar-expand-md > .container-fluid { -ms-flex-wrap: nowrap; flex-wrap: nowrap; } .navbar-expand-md .navbar-collapse { display: -ms-flexbox !important; display: flex !important; -ms-flex-preferred-size: auto; flex-basis: auto; } .navbar-expand-md .navbar-toggler { display: none; } } + +@media (max-width: 991.98px) { .navbar-expand-lg > .container, .navbar-expand-lg > .container-fluid { padding-right: 0; padding-left: 0; } } + +@media (min-width: 992px) { .navbar-expand-lg { -ms-flex-flow: row nowrap; flex-flow: row nowrap; -ms-flex-pack: start; justify-content: flex-start; } .navbar-expand-lg .navbar-nav { -ms-flex-direction: row; flex-direction: row; } .navbar-expand-lg .navbar-nav .dropdown-menu { position: absolute; } .navbar-expand-lg .navbar-nav .nav-link { padding-right: 0.5rem; padding-left: 0.5rem; } .navbar-expand-lg > .container, .navbar-expand-lg > .container-fluid { -ms-flex-wrap: nowrap; flex-wrap: nowrap; } .navbar-expand-lg .navbar-collapse { display: -ms-flexbox !important; display: flex !important; -ms-flex-preferred-size: auto; flex-basis: auto; } .navbar-expand-lg .navbar-toggler { display: none; } } + +@media (max-width: 1199.98px) { .navbar-expand-xl > .container, .navbar-expand-xl > .container-fluid { padding-right: 0; padding-left: 0; } } + +@media (min-width: 1200px) { .navbar-expand-xl { -ms-flex-flow: row nowrap; flex-flow: row nowrap; -ms-flex-pack: start; justify-content: flex-start; } .navbar-expand-xl .navbar-nav { -ms-flex-direction: row; flex-direction: row; } .navbar-expand-xl .navbar-nav .dropdown-menu { position: absolute; } .navbar-expand-xl .navbar-nav .nav-link { padding-right: 0.5rem; padding-left: 0.5rem; } .navbar-expand-xl > .container, .navbar-expand-xl > .container-fluid { -ms-flex-wrap: nowrap; flex-wrap: nowrap; } .navbar-expand-xl .navbar-collapse { display: -ms-flexbox !important; display: flex !important; -ms-flex-preferred-size: auto; flex-basis: auto; } .navbar-expand-xl .navbar-toggler { display: none; } } + +.navbar-expand { -ms-flex-flow: row nowrap; flex-flow: row nowrap; -ms-flex-pack: start; justify-content: flex-start; } + +.navbar-expand > .container, .navbar-expand > .container-fluid { padding-right: 0; padding-left: 0; } + +.navbar-expand .navbar-nav { -ms-flex-direction: row; flex-direction: row; } + +.navbar-expand .navbar-nav .dropdown-menu { position: absolute; } + +.navbar-expand .navbar-nav .nav-link { padding-right: 0.5rem; padding-left: 0.5rem; } + +.navbar-expand > .container, .navbar-expand > .container-fluid { -ms-flex-wrap: nowrap; flex-wrap: nowrap; } + +.navbar-expand .navbar-collapse { display: -ms-flexbox !important; display: flex !important; -ms-flex-preferred-size: auto; flex-basis: auto; } + +.navbar-expand .navbar-toggler { display: none; } + +/* .navbar-light .navbar-brand { color: rgba(0, 0, 0, 0.9); } .navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus { color: rgba(0, 0, 0, 0.9); } */ +.navbar-light .navbar-nav .nav-link { color: rgba(0, 0, 0, 0.5); } + +.navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus { color: rgba(0, 0, 0, 0.7); } + +.navbar-light .navbar-nav .nav-link.disabled { color: rgba(0, 0, 0, 0.3); } + +.navbar-light .navbar-nav .show > .nav-link, .navbar-light .navbar-nav .active > .nav-link, .navbar-light .navbar-nav .nav-link.show, .navbar-light .navbar-nav .nav-link.active { color: rgba(0, 0, 0, 0.9); } + +.navbar-light .navbar-toggler { color: rgba(0, 0, 0, 0.5); border-color: rgba(0, 0, 0, 0.1); } + +.navbar-light .navbar-toggler-icon { background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); } + +.navbar-light .navbar-text { color: rgba(0, 0, 0, 0.5); } + +.navbar-light .navbar-text a { color: rgba(0, 0, 0, 0.9); } + +.navbar-light .navbar-text a:hover, .navbar-light .navbar-text a:focus { color: rgba(0, 0, 0, 0.9); } + +.navbar-dark .navbar-brand { color: #fff; } + +.navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus { color: #fff; } + +.navbar-dark .navbar-nav .nav-link { color: rgba(255, 255, 255, 0.5); } + +.navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus { color: rgba(255, 255, 255, 0.75); } + +.navbar-dark .navbar-nav .nav-link.disabled { color: rgba(255, 255, 255, 0.25); } + +.navbar-dark .navbar-nav .show > .nav-link, .navbar-dark .navbar-nav .active > .nav-link, .navbar-dark .navbar-nav .nav-link.show, .navbar-dark .navbar-nav .nav-link.active { color: #fff; } + +.navbar-dark .navbar-toggler { color: rgba(255, 255, 255, 0.5); border-color: rgba(255, 255, 255, 0.1); } + +.navbar-dark .navbar-toggler-icon { background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); } + +.navbar-dark .navbar-text { color: rgba(255, 255, 255, 0.5); } + +.navbar-dark .navbar-text a { color: #fff; } + +.navbar-dark .navbar-text a:hover, .navbar-dark .navbar-text a:focus { color: #fff; } + +.card { position: relative; display: -ms-flexbox; display: flex; -ms-flex-direction: column; flex-direction: column; min-width: 0; word-wrap: break-word; background-color: #fff; background-clip: border-box; border: 1px solid rgba(0, 0, 0, 0.125); border-radius: 0.25rem; } + +.card > hr { margin-right: 0; margin-left: 0; } + +.card > .list-group:first-child .list-group-item:first-child { border-top-left-radius: 0.25rem; border-top-right-radius: 0.25rem; } + +.card > .list-group:last-child .list-group-item:last-child { border-bottom-right-radius: 0.25rem; border-bottom-left-radius: 0.25rem; } + +.card-body { -ms-flex: 1 1 auto; flex: 1 1 auto; padding: 1.25rem; } + +.card-title { margin-bottom: 0.75rem; } + +.card-subtitle { margin-top: -0.375rem; margin-bottom: 0; } + +.card-text:last-child { margin-bottom: 0; } + +.card-link:hover { text-decoration: none; } + +.card-link + .card-link { margin-left: 1.25rem; } + +.card-header { padding: 0.75rem 1.25rem; margin-bottom: 0; color: inherit; background-color: rgba(0, 0, 0, 0.03); border-bottom: 1px solid rgba(0, 0, 0, 0.125); } + +.card-header:first-child { border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0; } + +.card-header + .list-group .list-group-item:first-child { border-top: 0; } + +.card-footer { padding: 0.75rem 1.25rem; background-color: rgba(0, 0, 0, 0.03); border-top: 1px solid rgba(0, 0, 0, 0.125); } + +.card-footer:last-child { border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px); } + +.card-header-tabs { margin-right: -0.625rem; margin-bottom: -0.75rem; margin-left: -0.625rem; border-bottom: 0; } + +.card-header-pills { margin-right: -0.625rem; margin-left: -0.625rem; } + +.card-img-overlay { position: absolute; top: 0; right: 0; bottom: 0; left: 0; padding: 1.25rem; } + +.card-img { width: 100%; border-radius: calc(0.25rem - 1px); } + +.card-img-top { width: 100%; border-top-left-radius: calc(0.25rem - 1px); border-top-right-radius: calc(0.25rem - 1px); } + +.card-img-bottom { width: 100%; border-bottom-right-radius: calc(0.25rem - 1px); border-bottom-left-radius: calc(0.25rem - 1px); } + +.card-deck { display: -ms-flexbox; display: flex; -ms-flex-direction: column; flex-direction: column; } + +.card-deck .card { margin-bottom: 15px; } + +@media (min-width: 576px) { .card-deck { -ms-flex-flow: row wrap; flex-flow: row wrap; margin-right: -15px; margin-left: -15px; } .card-deck .card { display: -ms-flexbox; display: flex; -ms-flex: 1 0 0%; flex: 1 0 0%; -ms-flex-direction: column; flex-direction: column; margin-right: 15px; margin-bottom: 0; margin-left: 15px; } } + +.card-group { display: -ms-flexbox; display: flex; -ms-flex-direction: column; flex-direction: column; } + +.card-group > .card { margin-bottom: 15px; } + +@media (min-width: 576px) { .card-group { -ms-flex-flow: row wrap; flex-flow: row wrap; } .card-group > .card { -ms-flex: 1 0 0%; flex: 1 0 0%; margin-bottom: 0; } .card-group > .card + .card { margin-left: 0; border-left: 0; } .card-group > .card:first-child { border-top-right-radius: 0; border-bottom-right-radius: 0; } .card-group > .card:first-child .card-img-top, .card-group > .card:first-child .card-header { border-top-right-radius: 0; } .card-group > .card:first-child .card-img-bottom, .card-group > .card:first-child .card-footer { border-bottom-right-radius: 0; } .card-group > .card:last-child { border-top-left-radius: 0; border-bottom-left-radius: 0; } .card-group > .card:last-child .card-img-top, .card-group > .card:last-child .card-header { border-top-left-radius: 0; } .card-group > .card:last-child .card-img-bottom, .card-group > .card:last-child .card-footer { border-bottom-left-radius: 0; } .card-group > .card:only-child { border-radius: 0.25rem; } .card-group > .card:only-child .card-img-top, .card-group > .card:only-child .card-header { border-top-left-radius: 0.25rem; border-top-right-radius: 0.25rem; } .card-group > .card:only-child .card-img-bottom, .card-group > .card:only-child .card-footer { border-bottom-right-radius: 0.25rem; border-bottom-left-radius: 0.25rem; } .card-group > .card:not(:first-child):not(:last-child):not(:only-child) { border-radius: 0; } .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-top, .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom, .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-header, .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-footer { border-radius: 0; } } + +.card-columns .card { margin-bottom: 0.75rem; } + +@media (min-width: 576px) { .card-columns { -webkit-column-count: 3; -moz-column-count: 3; column-count: 3; -webkit-column-gap: 1.25rem; -moz-column-gap: 1.25rem; column-gap: 1.25rem; orphans: 1; widows: 1; } .card-columns .card { display: inline-block; width: 100%; } } + +.accordion .card { overflow: hidden; } + +.accordion .card:not(:first-of-type) .card-header:first-child { border-radius: 0; } + +.accordion .card:not(:first-of-type):not(:last-of-type) { border-bottom: 0; border-radius: 0; } + +.accordion .card:first-of-type { border-bottom: 0; border-bottom-right-radius: 0; border-bottom-left-radius: 0; } + +.accordion .card:last-of-type { border-top-left-radius: 0; border-top-right-radius: 0; } + +.accordion .card .card-header { margin-bottom: -1px; } + +.breadcrumb { display: -ms-flexbox; display: flex; -ms-flex-wrap: wrap; flex-wrap: wrap; padding: 0.75rem 1rem; margin-bottom: 1rem; list-style: none; background-color: #e9ecef; border-radius: 0.25rem; } + +.breadcrumb-item + .breadcrumb-item { padding-left: 0.5rem; } + +.breadcrumb-item + .breadcrumb-item::before { display: inline-block; padding-right: 0.5rem; color: #6c757d; content: "/"; } + +.breadcrumb-item + .breadcrumb-item:hover::before { text-decoration: underline; } + +.breadcrumb-item + .breadcrumb-item:hover::before { text-decoration: none; } + +.breadcrumb-item.active { color: #6c757d; } + +.pagination { display: -ms-flexbox; display: flex; padding-left: 0; list-style: none; border-radius: 0.25rem; } + +.page-link { position: relative; display: block; padding: 0.5rem 0.75rem; margin-left: -1px; line-height: 1.25; color: #007bff; background-color: #fff; border: 1px solid #dee2e6; } + +.page-link:hover { z-index: 2; color: #0056b3; text-decoration: none; background-color: #e9ecef; border-color: #dee2e6; } + +.page-link:focus { z-index: 2; outline: 0; box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); } + +.page-link:not(:disabled):not(.disabled) { cursor: pointer; } + +.page-item:first-child .page-link { margin-left: 0; border-top-left-radius: 0.25rem; border-bottom-left-radius: 0.25rem; } + +.page-item:last-child .page-link { border-top-right-radius: 0.25rem; border-bottom-right-radius: 0.25rem; } + +.page-item.active .page-link { z-index: 1; color: #fff; background-color: #007bff; border-color: #007bff; } + +.page-item.disabled .page-link { color: #6c757d; pointer-events: none; cursor: auto; background-color: #fff; border-color: #dee2e6; } + +.pagination-lg .page-link { padding: 0.75rem 1.5rem; font-size: 1.25rem; line-height: 1.5; } + +.pagination-lg .page-item:first-child .page-link { border-top-left-radius: 0.3rem; border-bottom-left-radius: 0.3rem; } + +.pagination-lg .page-item:last-child .page-link { border-top-right-radius: 0.3rem; border-bottom-right-radius: 0.3rem; } + +.pagination-sm .page-link { padding: 0.25rem 0.5rem; font-size: 0.875rem; line-height: 1.5; } + +.pagination-sm .page-item:first-child .page-link { border-top-left-radius: 0.2rem; border-bottom-left-radius: 0.2rem; } + +.pagination-sm .page-item:last-child .page-link { border-top-right-radius: 0.2rem; border-bottom-right-radius: 0.2rem; } + +.badge { display: inline-block; padding: 0.25em 0.4em; font-size: 75%; font-weight: 700; line-height: 1; text-align: center; white-space: nowrap; vertical-align: baseline; border-radius: 0.25rem; } + +a.badge:hover, a.badge:focus { text-decoration: none; } + +.badge:empty { display: none; } + +.btn .badge { position: relative; top: -1px; } + +.badge-pill { padding-right: 0.6em; padding-left: 0.6em; border-radius: 10rem; } + +.badge-primary { color: #fff; background-color: #007bff; } + +a.badge-primary:hover, a.badge-primary:focus { color: #fff; background-color: #0062cc; } + +.badge-secondary { color: #fff; background-color: #6c757d; } + +a.badge-secondary:hover, a.badge-secondary:focus { color: #fff; background-color: #545b62; } + +.badge-success { color: #fff; background-color: #28a745; } + +a.badge-success:hover, a.badge-success:focus { color: #fff; background-color: #1e7e34; } + +.badge-info { color: #fff; background-color: #17a2b8; } + +a.badge-info:hover, a.badge-info:focus { color: #fff; background-color: #117a8b; } + +.badge-warning { color: #212529; background-color: #ffc107; } + +a.badge-warning:hover, a.badge-warning:focus { color: #212529; background-color: #d39e00; } + +.badge-danger { color: #fff; background-color: #dc3545; } + +a.badge-danger:hover, a.badge-danger:focus { color: #fff; background-color: #bd2130; } + +.badge-light { color: #212529; background-color: #f8f9fa; } + +a.badge-light:hover, a.badge-light:focus { color: #212529; background-color: #dae0e5; } + +.badge-dark { color: #fff; background-color: #343a40; } + +a.badge-dark:hover, a.badge-dark:focus { color: #fff; background-color: #1d2124; } + +.jumbotron { padding: 2rem 1rem; margin-bottom: 2rem; background-color: #e9ecef; border-radius: 0.3rem; } + +@media (min-width: 576px) { .jumbotron { padding: 4rem 2rem; } } + +.jumbotron-fluid { padding-right: 0; padding-left: 0; border-radius: 0; } + +.alert { position: relative; padding: 0.75rem 1.25rem; margin-bottom: 1rem; border: 1px solid transparent; border-radius: 0.25rem; } + +.alert-heading { color: inherit; } + +.alert-link { font-weight: 700; } + +.alert-dismissible { padding-right: 4rem; } + +.alert-dismissible .close { position: absolute; top: 0; right: 0; padding: 0.75rem 1.25rem; color: inherit; } + +.alert-primary { color: #004085; background-color: #cce5ff; border-color: #b8daff; } + +.alert-primary hr { border-top-color: #9fcdff; } + +.alert-primary .alert-link { color: #002752; } + +.alert-secondary { color: #383d41; background-color: #e2e3e5; border-color: #d6d8db; } + +.alert-secondary hr { border-top-color: #c8cbcf; } + +.alert-secondary .alert-link { color: #202326; } + +.alert-success { color: #155724; background-color: #d4edda; border-color: #c3e6cb; } + +.alert-success hr { border-top-color: #b1dfbb; } + +.alert-success .alert-link { color: #0b2e13; } + +.alert-info { color: #0c5460; background-color: #d1ecf1; border-color: #bee5eb; } + +.alert-info hr { border-top-color: #abdde5; } + +.alert-info .alert-link { color: #062c33; } + +.alert-warning { color: #856404; background-color: #fff3cd; border-color: #ffeeba; } + +.alert-warning hr { border-top-color: #ffe8a1; } + +.alert-warning .alert-link { color: #533f03; } + +.alert-danger { color: #721c24; background-color: #f8d7da; border-color: #f5c6cb; } + +.alert-danger hr { border-top-color: #f1b0b7; } + +.alert-danger .alert-link { color: #491217; } + +.alert-light { color: #818182; background-color: #fefefe; border-color: #fdfdfe; } + +.alert-light hr { border-top-color: #ececf6; } + +.alert-light .alert-link { color: #686868; } + +.alert-dark { color: #1b1e21; background-color: #d6d8d9; border-color: #c6c8ca; } + +.alert-dark hr { border-top-color: #b9bbbe; } + +.alert-dark .alert-link { color: #040505; } + +@-webkit-keyframes progress-bar-stripes { from { background-position: 1rem 0; } + to { background-position: 0 0; } } + +@keyframes progress-bar-stripes { from { background-position: 1rem 0; } + to { background-position: 0 0; } } + +.progress { display: -ms-flexbox; display: flex; height: 1rem; overflow: hidden; font-size: 0.75rem; background-color: #e9ecef; border-radius: 0.25rem; } + +.progress-bar { display: -ms-flexbox; display: flex; -ms-flex-direction: column; flex-direction: column; -ms-flex-pack: center; justify-content: center; color: #fff; text-align: center; white-space: nowrap; background-color: #007bff; transition: width 0.6s ease; } + +@media screen and (prefers-reduced-motion: reduce) { .progress-bar { transition: none; } } + +.progress-bar-striped { background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-size: 1rem 1rem; } + +.progress-bar-animated { -webkit-animation: progress-bar-stripes 1s linear infinite; animation: progress-bar-stripes 1s linear infinite; } + +.media { display: -ms-flexbox; display: flex; -ms-flex-align: start; align-items: flex-start; } + +.media-body { -ms-flex: 1; flex: 1; } + +.list-group { display: -ms-flexbox; display: flex; -ms-flex-direction: column; flex-direction: column; padding-left: 0; margin-bottom: 0; } + +.list-group-item-action { width: 100%; color: #495057; text-align: inherit; } + +.list-group-item-action:hover, .list-group-item-action:focus { color: #495057; text-decoration: none; background-color: #f8f9fa; } + +.list-group-item-action:active { color: #212529; background-color: #e9ecef; } + +.list-group-item { position: relative; display: block; padding: 0.75rem 1.25rem; margin-bottom: -1px; background-color: #fff; border: 1px solid rgba(0, 0, 0, 0.125); } + +.list-group-item:first-child { border-top-left-radius: 0.25rem; border-top-right-radius: 0.25rem; } + +.list-group-item:last-child { margin-bottom: 0; border-bottom-right-radius: 0.25rem; border-bottom-left-radius: 0.25rem; } + +.list-group-item:hover, .list-group-item:focus { z-index: 1; text-decoration: none; } + +.list-group-item.disabled, .list-group-item:disabled { color: #6c757d; pointer-events: none; background-color: #fff; } + +.list-group-item.active { z-index: 2; color: #fff; background-color: #007bff; border-color: #007bff; } + +.list-group-flush .list-group-item { border-right: 0; border-left: 0; border-radius: 0; } + +.list-group-flush .list-group-item:last-child { margin-bottom: -1px; } + +.list-group-flush:first-child .list-group-item:first-child { border-top: 0; } + +.list-group-flush:last-child .list-group-item:last-child { margin-bottom: 0; border-bottom: 0; } + +.list-group-item-primary { color: #004085; background-color: #b8daff; } + +.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus { color: #004085; background-color: #9fcdff; } + +.list-group-item-primary.list-group-item-action.active { color: #fff; background-color: #004085; border-color: #004085; } + +.list-group-item-secondary { color: #383d41; background-color: #d6d8db; } + +.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus { color: #383d41; background-color: #c8cbcf; } + +.list-group-item-secondary.list-group-item-action.active { color: #fff; background-color: #383d41; border-color: #383d41; } + +.list-group-item-success { color: #155724; background-color: #c3e6cb; } + +.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus { color: #155724; background-color: #b1dfbb; } + +.list-group-item-success.list-group-item-action.active { color: #fff; background-color: #155724; border-color: #155724; } + +.list-group-item-info { color: #0c5460; background-color: #bee5eb; } + +.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus { color: #0c5460; background-color: #abdde5; } + +.list-group-item-info.list-group-item-action.active { color: #fff; background-color: #0c5460; border-color: #0c5460; } + +.list-group-item-warning { color: #856404; background-color: #ffeeba; } + +.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus { color: #856404; background-color: #ffe8a1; } + +.list-group-item-warning.list-group-item-action.active { color: #fff; background-color: #856404; border-color: #856404; } + +.list-group-item-danger { color: #721c24; background-color: #f5c6cb; } + +.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus { color: #721c24; background-color: #f1b0b7; } + +.list-group-item-danger.list-group-item-action.active { color: #fff; background-color: #721c24; border-color: #721c24; } + +.list-group-item-light { color: #818182; background-color: #fdfdfe; } + +.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus { color: #818182; background-color: #ececf6; } + +.list-group-item-light.list-group-item-action.active { color: #fff; background-color: #818182; border-color: #818182; } + +.list-group-item-dark { color: #1b1e21; background-color: #c6c8ca; } + +.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus { color: #1b1e21; background-color: #b9bbbe; } + +.list-group-item-dark.list-group-item-action.active { color: #fff; background-color: #1b1e21; border-color: #1b1e21; } + +.close { float: right; font-size: 1.5rem; font-weight: 700; line-height: 1; color: #000; text-shadow: 0 1px 0 #fff; opacity: .5; } + +.close:hover { color: #000; text-decoration: none; } + +.close:not(:disabled):not(.disabled) { cursor: pointer; } + +.close:not(:disabled):not(.disabled):hover, .close:not(:disabled):not(.disabled):focus { opacity: .75; } + +button.close { padding: 0; background-color: transparent; border: 0; -webkit-appearance: none; -moz-appearance: none; appearance: none; } + +a.close.disabled { pointer-events: none; } + +.toast { max-width: 350px; overflow: hidden; font-size: 0.875rem; background-color: rgba(255, 255, 255, 0.85); background-clip: padding-box; border: 1px solid rgba(0, 0, 0, 0.1); border-radius: 0.25rem; box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.1); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); opacity: 0; } + +.toast:not(:last-child) { margin-bottom: 0.75rem; } + +.toast.showing { opacity: 1; } + +.toast.show { display: block; opacity: 1; } + +.toast.hide { display: none; } + +.toast-header { display: -ms-flexbox; display: flex; -ms-flex-align: center; align-items: center; padding: 0.25rem 0.75rem; color: #6c757d; background-color: rgba(255, 255, 255, 0.85); background-clip: padding-box; border-bottom: 1px solid rgba(0, 0, 0, 0.05); } + +.toast-body { padding: 0.75rem; } + +.modal-open { overflow: hidden; } + +.modal-open .modal { overflow-x: hidden; overflow-y: auto; } + +.modal { position: fixed; top: 0; left: 0; z-index: 1050; display: none; width: 100%; height: 100%; overflow: hidden; outline: 0; } + +.modal-dialog { position: relative; width: auto; margin: 0.5rem; pointer-events: none; } + +.modal.fade .modal-dialog { transition: -webkit-transform 0.3s ease-out; transition: transform 0.3s ease-out; transition: transform 0.3s ease-out, -webkit-transform 0.3s ease-out; -webkit-transform: translate(0, -50px); transform: translate(0, -50px); } + +@media screen and (prefers-reduced-motion: reduce) { .modal.fade .modal-dialog { transition: none; } } + +.modal.show .modal-dialog { -webkit-transform: none; transform: none; } + +.modal-dialog-centered { display: -ms-flexbox; display: flex; -ms-flex-align: center; align-items: center; min-height: calc(100% - (0.5rem * 2)); } + +.modal-dialog-centered::before { display: block; height: calc(100vh - (0.5rem * 2)); content: ""; } + +.modal-content { position: relative; display: -ms-flexbox; display: flex; -ms-flex-direction: column; flex-direction: column; width: 100%; pointer-events: auto; background-color: #fff; background-clip: padding-box; border: 1px solid rgba(0, 0, 0, 0.2); border-radius: 0.3rem; outline: 0; } + +.modal-backdrop { position: fixed; top: 0; left: 0; z-index: 1040; width: 100vw; height: 100vh; background-color: #000; } + +.modal-backdrop.fade { opacity: 0; } + +.modal-backdrop.show { opacity: 0.5; } + +.modal-header { display: -ms-flexbox; display: flex; -ms-flex-align: start; align-items: flex-start; -ms-flex-pack: justify; justify-content: space-between; padding: 1rem 1rem; border-bottom: 1px solid #e9ecef; border-top-left-radius: 0.3rem; border-top-right-radius: 0.3rem; } + +.modal-header .close { padding: 1rem 1rem; margin: -1rem -1rem -1rem auto; } + +.modal-title { margin-bottom: 0; line-height: 1.5; } + +.modal-body { position: relative; -ms-flex: 1 1 auto; flex: 1 1 auto; padding: 1rem; } + +.modal-footer { display: -ms-flexbox; display: flex; -ms-flex-align: center; align-items: center; -ms-flex-pack: end; justify-content: flex-end; padding: 1rem; border-top: 1px solid #e9ecef; border-bottom-right-radius: 0.3rem; border-bottom-left-radius: 0.3rem; } + +.modal-footer > :not(:first-child) { margin-left: .25rem; } + +.modal-footer > :not(:last-child) { margin-right: .25rem; } + +.modal-scrollbar-measure { position: absolute; top: -9999px; width: 50px; height: 50px; overflow: scroll; } + +@media (min-width: 576px) { .modal-dialog { max-width: 500px; margin: 1.75rem auto; } .modal-dialog-centered { min-height: calc(100% - (1.75rem * 2)); } .modal-dialog-centered::before { height: calc(100vh - (1.75rem * 2)); } .modal-sm { max-width: 300px; } } + +@media (min-width: 992px) { .modal-lg, .modal-xl { max-width: 800px; } } + +@media (min-width: 1200px) { .modal-xl { max-width: 1140px; } } + +.tooltip { position: absolute; z-index: 1070; display: block; margin: 0; /* font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; */ font-style: normal; font-weight: 400; line-height: 1.5; text-align: left; text-align: start; text-decoration: none; text-shadow: none; text-transform: none; letter-spacing: normal; word-break: normal; word-spacing: normal; white-space: normal; line-break: auto; font-size: 0.875rem; word-wrap: break-word; opacity: 0; } + +.tooltip.show { opacity: 0.9; } + +.tooltip .arrow { position: absolute; display: block; width: 0.8rem; height: 0.4rem; } + +.tooltip .arrow::before { position: absolute; content: ""; border-color: transparent; border-style: solid; } + +.bs-tooltip-top, .bs-tooltip-auto[x-placement^="top"] { padding: 0.4rem 0; } + +.bs-tooltip-top .arrow, .bs-tooltip-auto[x-placement^="top"] .arrow { bottom: 0; } + +.bs-tooltip-top .arrow::before, .bs-tooltip-auto[x-placement^="top"] .arrow::before { top: 0; border-width: 0.4rem 0.4rem 0; border-top-color: #000; } + +.bs-tooltip-right, .bs-tooltip-auto[x-placement^="right"] { padding: 0 0.4rem; } + +.bs-tooltip-right .arrow, .bs-tooltip-auto[x-placement^="right"] .arrow { left: 0; width: 0.4rem; height: 0.8rem; } + +.bs-tooltip-right .arrow::before, .bs-tooltip-auto[x-placement^="right"] .arrow::before { right: 0; border-width: 0.4rem 0.4rem 0.4rem 0; border-right-color: #000; } + +.bs-tooltip-bottom, .bs-tooltip-auto[x-placement^="bottom"] { padding: 0.4rem 0; } + +.bs-tooltip-bottom .arrow, .bs-tooltip-auto[x-placement^="bottom"] .arrow { top: 0; } + +.bs-tooltip-bottom .arrow::before, .bs-tooltip-auto[x-placement^="bottom"] .arrow::before { bottom: 0; border-width: 0 0.4rem 0.4rem; border-bottom-color: #000; } + +.bs-tooltip-left, .bs-tooltip-auto[x-placement^="left"] { padding: 0 0.4rem; } + +.bs-tooltip-left .arrow, .bs-tooltip-auto[x-placement^="left"] .arrow { right: 0; width: 0.4rem; height: 0.8rem; } + +.bs-tooltip-left .arrow::before, .bs-tooltip-auto[x-placement^="left"] .arrow::before { left: 0; border-width: 0.4rem 0 0.4rem 0.4rem; border-left-color: #000; } + +.tooltip-inner { max-width: 200px; padding: 0.25rem 0.5rem; color: #fff; text-align: center; background-color: #000; border-radius: 0.25rem; } + +.popover { position: absolute; top: 0; left: 0; z-index: 1060; display: block; max-width: 276px; /* font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; */ font-style: normal; font-weight: 400; line-height: 1.5; text-align: left; text-align: start; text-decoration: none; text-shadow: none; text-transform: none; letter-spacing: normal; word-break: normal; word-spacing: normal; white-space: normal; line-break: auto; font-size: 0.875rem; word-wrap: break-word; background-color: #fff; background-clip: padding-box; border: 1px solid rgba(0, 0, 0, 0.2); border-radius: 0.3rem; } + +.popover .arrow { position: absolute; display: block; width: 1rem; height: 0.5rem; margin: 0 0.3rem; } + +.popover .arrow::before, .popover .arrow::after { position: absolute; display: block; content: ""; border-color: transparent; border-style: solid; } + +.bs-popover-top, .bs-popover-auto[x-placement^="top"] { margin-bottom: 0.5rem; } + +.bs-popover-top .arrow, .bs-popover-auto[x-placement^="top"] .arrow { bottom: calc((0.5rem + 1px) * -1); } + +.bs-popover-top .arrow::before, .bs-popover-auto[x-placement^="top"] .arrow::before, .bs-popover-top .arrow::after, .bs-popover-auto[x-placement^="top"] .arrow::after { border-width: 0.5rem 0.5rem 0; } + +.bs-popover-top .arrow::before, .bs-popover-auto[x-placement^="top"] .arrow::before { bottom: 0; border-top-color: rgba(0, 0, 0, 0.25); } + +.bs-popover-top .arrow::after, .bs-popover-auto[x-placement^="top"] .arrow::after { bottom: 1px; border-top-color: #fff; } + +.bs-popover-right, .bs-popover-auto[x-placement^="right"] { margin-left: 0.5rem; } + +.bs-popover-right .arrow, .bs-popover-auto[x-placement^="right"] .arrow { left: calc((0.5rem + 1px) * -1); width: 0.5rem; height: 1rem; margin: 0.3rem 0; } + +.bs-popover-right .arrow::before, .bs-popover-auto[x-placement^="right"] .arrow::before, .bs-popover-right .arrow::after, .bs-popover-auto[x-placement^="right"] .arrow::after { border-width: 0.5rem 0.5rem 0.5rem 0; } + +.bs-popover-right .arrow::before, .bs-popover-auto[x-placement^="right"] .arrow::before { left: 0; border-right-color: rgba(0, 0, 0, 0.25); } + +.bs-popover-right .arrow::after, .bs-popover-auto[x-placement^="right"] .arrow::after { left: 1px; border-right-color: #fff; } + +.bs-popover-bottom, .bs-popover-auto[x-placement^="bottom"] { margin-top: 0.5rem; } + +.bs-popover-bottom .arrow, .bs-popover-auto[x-placement^="bottom"] .arrow { top: calc((0.5rem + 1px) * -1); } + +.bs-popover-bottom .arrow::before, .bs-popover-auto[x-placement^="bottom"] .arrow::before, .bs-popover-bottom .arrow::after, .bs-popover-auto[x-placement^="bottom"] .arrow::after { border-width: 0 0.5rem 0.5rem 0.5rem; } + +.bs-popover-bottom .arrow::before, .bs-popover-auto[x-placement^="bottom"] .arrow::before { top: 0; border-bottom-color: rgba(0, 0, 0, 0.25); } + +.bs-popover-bottom .arrow::after, .bs-popover-auto[x-placement^="bottom"] .arrow::after { top: 1px; border-bottom-color: #fff; } + +.bs-popover-bottom .popover-header::before, .bs-popover-auto[x-placement^="bottom"] .popover-header::before { position: absolute; top: 0; left: 50%; display: block; width: 1rem; margin-left: -0.5rem; content: ""; border-bottom: 1px solid #f7f7f7; } + +.bs-popover-left, .bs-popover-auto[x-placement^="left"] { margin-right: 0.5rem; } + +.bs-popover-left .arrow, .bs-popover-auto[x-placement^="left"] .arrow { right: calc((0.5rem + 1px) * -1); width: 0.5rem; height: 1rem; margin: 0.3rem 0; } + +.bs-popover-left .arrow::before, .bs-popover-auto[x-placement^="left"] .arrow::before, .bs-popover-left .arrow::after, .bs-popover-auto[x-placement^="left"] .arrow::after { border-width: 0.5rem 0 0.5rem 0.5rem; } + +.bs-popover-left .arrow::before, .bs-popover-auto[x-placement^="left"] .arrow::before { right: 0; border-left-color: rgba(0, 0, 0, 0.25); } + +.bs-popover-left .arrow::after, .bs-popover-auto[x-placement^="left"] .arrow::after { right: 1px; border-left-color: #fff; } + +.popover-header { padding: 0.5rem 0.75rem; margin-bottom: 0; font-size: 1rem; color: inherit; background-color: #f7f7f7; border-bottom: 1px solid #ebebeb; border-top-left-radius: calc(0.3rem - 1px); border-top-right-radius: calc(0.3rem - 1px); } + +.popover-header:empty { display: none; } + +.popover-body { padding: 0.5rem 0.75rem; color: #212529; } + +.carousel { position: relative; } + +.carousel.pointer-event { -ms-touch-action: pan-y; touch-action: pan-y; } + +.carousel-inner { position: relative; width: 100%; overflow: hidden; } + +.carousel-inner::after { display: block; clear: both; content: ""; } + +.carousel-item { position: relative; display: none; float: left; width: 100%; margin-right: -100%; -webkit-backface-visibility: hidden; backface-visibility: hidden; transition: -webkit-transform 0.6s ease-in-out; transition: transform 0.6s ease-in-out; transition: transform 0.6s ease-in-out, -webkit-transform 0.6s ease-in-out; } + +@media screen and (prefers-reduced-motion: reduce) { .carousel-item { transition: none; } } + +.carousel-item.active, .carousel-item-next, .carousel-item-prev { display: block; } + +.carousel-item-next:not(.carousel-item-left), .active.carousel-item-right { -webkit-transform: translateX(100%); transform: translateX(100%); } + +.carousel-item-prev:not(.carousel-item-right), .active.carousel-item-left { -webkit-transform: translateX(-100%); transform: translateX(-100%); } + +.carousel-fade .carousel-item { opacity: 0; transition-property: opacity; -webkit-transform: none; transform: none; } + +.carousel-fade .carousel-item.active, .carousel-fade .carousel-item-next.carousel-item-left, .carousel-fade .carousel-item-prev.carousel-item-right { z-index: 1; opacity: 1; } + +.carousel-fade .active.carousel-item-left, .carousel-fade .active.carousel-item-right { z-index: 0; opacity: 0; transition: 0s 0.6s opacity; } + +@media screen and (prefers-reduced-motion: reduce) { .carousel-fade .active.carousel-item-left, .carousel-fade .active.carousel-item-right { transition: none; } } + +.carousel-control-prev, .carousel-control-next { position: absolute; top: 0; bottom: 0; z-index: 1; display: -ms-flexbox; display: flex; -ms-flex-align: center; align-items: center; -ms-flex-pack: center; justify-content: center; width: 15%; color: #fff; text-align: center; opacity: 0.5; transition: opacity 0.15s ease; } + +@media screen and (prefers-reduced-motion: reduce) { .carousel-control-prev, .carousel-control-next { transition: none; } } + +.carousel-control-prev:hover, .carousel-control-prev:focus, .carousel-control-next:hover, .carousel-control-next:focus { color: #fff; text-decoration: none; outline: 0; opacity: 0.9; } + +.carousel-control-prev { left: 0; } + +.carousel-control-next { right: 0; } + +.carousel-control-prev-icon, .carousel-control-next-icon { display: inline-block; width: 20px; height: 20px; background: transparent no-repeat center center; background-size: 100% 100%; } + +.carousel-control-prev-icon { background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3e%3c/svg%3e"); } + +.carousel-control-next-icon { background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3e%3c/svg%3e"); } + +.carousel-indicators { position: absolute; right: 0; bottom: 0; left: 0; z-index: 15; display: -ms-flexbox; display: flex; -ms-flex-pack: center; justify-content: center; padding-left: 0; margin-right: 15%; margin-left: 15%; list-style: none; } + +.carousel-indicators li { box-sizing: content-box; -ms-flex: 0 1 auto; flex: 0 1 auto; width: 30px; height: 3px; margin-right: 3px; margin-left: 3px; text-indent: -999px; cursor: pointer; background-color: #fff; background-clip: padding-box; border-top: 10px solid transparent; border-bottom: 10px solid transparent; opacity: .5; transition: opacity 0.6s ease; } + +@media screen and (prefers-reduced-motion: reduce) { .carousel-indicators li { transition: none; } } + +.carousel-indicators .active { opacity: 1; } + +.carousel-caption { position: absolute; right: 15%; bottom: 20px; left: 15%; z-index: 10; padding-top: 20px; padding-bottom: 20px; color: #fff; text-align: center; } + +@-webkit-keyframes spinner-border { to { -webkit-transform: rotate(360deg); + transform: rotate(360deg); } } + +@keyframes spinner-border { to { -webkit-transform: rotate(360deg); + transform: rotate(360deg); } } + +.spinner-border { display: inline-block; width: 2rem; height: 2rem; vertical-align: text-bottom; border: 0.25em solid currentColor; border-right-color: transparent; border-radius: 50%; -webkit-animation: spinner-border .75s linear infinite; animation: spinner-border .75s linear infinite; } + +.spinner-border-sm { width: 1rem; height: 1rem; border-width: 0.2em; } + +@-webkit-keyframes spinner-grow { 0% { -webkit-transform: scale(0); + transform: scale(0); } + 50% { opacity: 1; } } + +@keyframes spinner-grow { 0% { -webkit-transform: scale(0); + transform: scale(0); } + 50% { opacity: 1; } } + +.spinner-grow { display: inline-block; width: 2rem; height: 2rem; vertical-align: text-bottom; background-color: currentColor; border-radius: 50%; opacity: 0; -webkit-animation: spinner-grow .75s linear infinite; animation: spinner-grow .75s linear infinite; } + +.spinner-grow-sm { width: 1rem; height: 1rem; } + +.align-baseline { vertical-align: baseline !important; } + +.align-top { vertical-align: top !important; } + +.align-middle { vertical-align: middle !important; } + +.align-bottom { vertical-align: bottom !important; } + +.align-text-bottom { vertical-align: text-bottom !important; } + +.align-text-top { vertical-align: text-top !important; } + +.bg-primary { background-color: #007bff !important; } + +a.bg-primary:hover, a.bg-primary:focus, button.bg-primary:hover, button.bg-primary:focus { background-color: #0062cc !important; } + +.bg-secondary { background-color: #6c757d !important; } + +a.bg-secondary:hover, a.bg-secondary:focus, button.bg-secondary:hover, button.bg-secondary:focus { background-color: #545b62 !important; } + +.bg-success { background-color: #28a745 !important; } + +a.bg-success:hover, a.bg-success:focus, button.bg-success:hover, button.bg-success:focus { background-color: #1e7e34 !important; } + +.bg-info { background-color: #17a2b8 !important; } + +a.bg-info:hover, a.bg-info:focus, button.bg-info:hover, button.bg-info:focus { background-color: #117a8b !important; } + +.bg-warning { background-color: #ffc107 !important; } + +a.bg-warning:hover, a.bg-warning:focus, button.bg-warning:hover, button.bg-warning:focus { background-color: #d39e00 !important; } + +.bg-danger { background-color: #dc3545 !important; } + +a.bg-danger:hover, a.bg-danger:focus, button.bg-danger:hover, button.bg-danger:focus { background-color: #bd2130 !important; } + +.bg-light { background-color: #f8f9fa !important; } + +a.bg-light:hover, a.bg-light:focus, button.bg-light:hover, button.bg-light:focus { background-color: #dae0e5 !important; } + +.bg-dark { background-color: #343a40 !important; } + +a.bg-dark:hover, a.bg-dark:focus, button.bg-dark:hover, button.bg-dark:focus { background-color: #1d2124 !important; } + +.bg-white { background-color: #fff !important; } + +.bg-transparent { background-color: transparent !important; } + +.border { border: 1px solid #dee2e6 !important; } + +.border-top { border-top: 1px solid #dee2e6 !important; } + +.border-right { border-right: 1px solid #dee2e6 !important; } + +.border-bottom { border-bottom: 1px solid #dee2e6 !important; } + +.border-left { border-left: 1px solid #dee2e6 !important; } + +.border-0 { border: 0 !important; } + +.border-top-0 { border-top: 0 !important; } + +.border-right-0 { border-right: 0 !important; } + +.border-bottom-0 { border-bottom: 0 !important; } + +.border-left-0 { border-left: 0 !important; } + +.border-primary { border-color: #007bff !important; } + +.border-secondary { border-color: #6c757d !important; } + +.border-success { border-color: #28a745 !important; } + +.border-info { border-color: #17a2b8 !important; } + +.border-warning { border-color: #ffc107 !important; } + +.border-danger { border-color: #dc3545 !important; } + +.border-light { border-color: #f8f9fa !important; } + +.border-dark { border-color: #343a40 !important; } + +.border-white { border-color: #fff !important; } + +.rounded { border-radius: 0.25rem !important; } + +.rounded-top { border-top-left-radius: 0.25rem !important; border-top-right-radius: 0.25rem !important; } + +.rounded-right { border-top-right-radius: 0.25rem !important; border-bottom-right-radius: 0.25rem !important; } + +.rounded-bottom { border-bottom-right-radius: 0.25rem !important; border-bottom-left-radius: 0.25rem !important; } + +.rounded-left { border-top-left-radius: 0.25rem !important; border-bottom-left-radius: 0.25rem !important; } + +.rounded-circle { border-radius: 50% !important; } + +.rounded-pill { border-radius: 50rem !important; } + +.rounded-0 { border-radius: 0 !important; } + +.clearfix::after { display: block; clear: both; content: ""; } + +.d-none { display: none !important; } + +.d-inline { display: inline !important; } + +.d-inline-block { display: inline-block !important; } + +.d-block { display: block !important; } + +.d-table { display: table !important; } + +.d-table-row { display: table-row !important; } + +.d-table-cell { display: table-cell !important; } + +.d-flex { display: -ms-flexbox !important; display: flex !important; } + +.d-inline-flex { display: -ms-inline-flexbox !important; display: inline-flex !important; } + +@media (min-width: 576px) { .d-sm-none { display: none !important; } .d-sm-inline { display: inline !important; } .d-sm-inline-block { display: inline-block !important; } .d-sm-block { display: block !important; } .d-sm-table { display: table !important; } .d-sm-table-row { display: table-row !important; } .d-sm-table-cell { display: table-cell !important; } .d-sm-flex { display: -ms-flexbox !important; display: flex !important; } .d-sm-inline-flex { display: -ms-inline-flexbox !important; display: inline-flex !important; } } + +@media (min-width: 768px) { .d-md-none { display: none !important; } .d-md-inline { display: inline !important; } .d-md-inline-block { display: inline-block !important; } .d-md-block { display: block !important; } .d-md-table { display: table !important; } .d-md-table-row { display: table-row !important; } .d-md-table-cell { display: table-cell !important; } .d-md-flex { display: -ms-flexbox !important; display: flex !important; } .d-md-inline-flex { display: -ms-inline-flexbox !important; display: inline-flex !important; } } + +@media (min-width: 992px) { .d-lg-none { display: none !important; } .d-lg-inline { display: inline !important; } .d-lg-inline-block { display: inline-block !important; } .d-lg-block { display: block !important; } .d-lg-table { display: table !important; } .d-lg-table-row { display: table-row !important; } .d-lg-table-cell { display: table-cell !important; } .d-lg-flex { display: -ms-flexbox !important; display: flex !important; } .d-lg-inline-flex { display: -ms-inline-flexbox !important; display: inline-flex !important; } } + +@media (min-width: 1200px) { .d-xl-none { display: none !important; } .d-xl-inline { display: inline !important; } .d-xl-inline-block { display: inline-block !important; } .d-xl-block { display: block !important; } .d-xl-table { display: table !important; } .d-xl-table-row { display: table-row !important; } .d-xl-table-cell { display: table-cell !important; } .d-xl-flex { display: -ms-flexbox !important; display: flex !important; } .d-xl-inline-flex { display: -ms-inline-flexbox !important; display: inline-flex !important; } } + +@media print { .d-print-none { display: none !important; } .d-print-inline { display: inline !important; } .d-print-inline-block { display: inline-block !important; } .d-print-block { display: block !important; } .d-print-table { display: table !important; } .d-print-table-row { display: table-row !important; } .d-print-table-cell { display: table-cell !important; } .d-print-flex { display: -ms-flexbox !important; display: flex !important; } .d-print-inline-flex { display: -ms-inline-flexbox !important; display: inline-flex !important; } } + +.embed-responsive { position: relative; display: block; width: 100%; padding: 0; overflow: hidden; } + +.embed-responsive::before { display: block; content: ""; } + +.embed-responsive .embed-responsive-item, .embed-responsive iframe, .embed-responsive embed, .embed-responsive object, .embed-responsive video { position: absolute; top: 0; bottom: 0; left: 0; width: 100%; height: 100%; border: 0; } + +.embed-responsive-21by9::before { padding-top: 42.857143%; } + +.embed-responsive-16by9::before { padding-top: 56.25%; } + +.embed-responsive-3by4::before { padding-top: 133.333333%; } + +.embed-responsive-1by1::before { padding-top: 100%; } + +.flex-row { -ms-flex-direction: row !important; flex-direction: row !important; } + +.flex-column { -ms-flex-direction: column !important; flex-direction: column !important; } + +.flex-row-reverse { -ms-flex-direction: row-reverse !important; flex-direction: row-reverse !important; } + +.flex-column-reverse { -ms-flex-direction: column-reverse !important; flex-direction: column-reverse !important; } + +.flex-wrap { -ms-flex-wrap: wrap !important; flex-wrap: wrap !important; } + +.flex-nowrap { -ms-flex-wrap: nowrap !important; flex-wrap: nowrap !important; } + +.flex-wrap-reverse { -ms-flex-wrap: wrap-reverse !important; flex-wrap: wrap-reverse !important; } + +.flex-fill { -ms-flex: 1 1 auto !important; flex: 1 1 auto !important; } + +.flex-grow-0 { -ms-flex-positive: 0 !important; flex-grow: 0 !important; } + +.flex-grow-1 { -ms-flex-positive: 1 !important; flex-grow: 1 !important; } + +.flex-shrink-0 { -ms-flex-negative: 0 !important; flex-shrink: 0 !important; } + +.flex-shrink-1 { -ms-flex-negative: 1 !important; flex-shrink: 1 !important; } + +.justify-content-start { -ms-flex-pack: start !important; justify-content: flex-start !important; } + +.justify-content-end { -ms-flex-pack: end !important; justify-content: flex-end !important; } + +.justify-content-center { -ms-flex-pack: center !important; justify-content: center !important; } + +.justify-content-between { -ms-flex-pack: justify !important; justify-content: space-between !important; } + +.justify-content-around { -ms-flex-pack: distribute !important; justify-content: space-around !important; } + +.align-items-start { -ms-flex-align: start !important; align-items: flex-start !important; } + +.align-items-end { -ms-flex-align: end !important; align-items: flex-end !important; } + +.align-items-center { -ms-flex-align: center !important; align-items: center !important; } + +.align-items-baseline { -ms-flex-align: baseline !important; align-items: baseline !important; } + +.align-items-stretch { -ms-flex-align: stretch !important; align-items: stretch !important; } + +.align-content-start { -ms-flex-line-pack: start !important; align-content: flex-start !important; } + +.align-content-end { -ms-flex-line-pack: end !important; align-content: flex-end !important; } + +.align-content-center { -ms-flex-line-pack: center !important; align-content: center !important; } + +.align-content-between { -ms-flex-line-pack: justify !important; align-content: space-between !important; } + +.align-content-around { -ms-flex-line-pack: distribute !important; align-content: space-around !important; } + +.align-content-stretch { -ms-flex-line-pack: stretch !important; align-content: stretch !important; } + +.align-self-auto { -ms-flex-item-align: auto !important; align-self: auto !important; } + +.align-self-start { -ms-flex-item-align: start !important; align-self: flex-start !important; } + +.align-self-end { -ms-flex-item-align: end !important; align-self: flex-end !important; } + +.align-self-center { -ms-flex-item-align: center !important; align-self: center !important; } + +.align-self-baseline { -ms-flex-item-align: baseline !important; align-self: baseline !important; } + +.align-self-stretch { -ms-flex-item-align: stretch !important; align-self: stretch !important; } + +@media (min-width: 576px) { .flex-sm-row { -ms-flex-direction: row !important; flex-direction: row !important; } .flex-sm-column { -ms-flex-direction: column !important; flex-direction: column !important; } .flex-sm-row-reverse { -ms-flex-direction: row-reverse !important; flex-direction: row-reverse !important; } .flex-sm-column-reverse { -ms-flex-direction: column-reverse !important; flex-direction: column-reverse !important; } .flex-sm-wrap { -ms-flex-wrap: wrap !important; flex-wrap: wrap !important; } .flex-sm-nowrap { -ms-flex-wrap: nowrap !important; flex-wrap: nowrap !important; } .flex-sm-wrap-reverse { -ms-flex-wrap: wrap-reverse !important; flex-wrap: wrap-reverse !important; } .flex-sm-fill { -ms-flex: 1 1 auto !important; flex: 1 1 auto !important; } .flex-sm-grow-0 { -ms-flex-positive: 0 !important; flex-grow: 0 !important; } .flex-sm-grow-1 { -ms-flex-positive: 1 !important; flex-grow: 1 !important; } .flex-sm-shrink-0 { -ms-flex-negative: 0 !important; flex-shrink: 0 !important; } .flex-sm-shrink-1 { -ms-flex-negative: 1 !important; flex-shrink: 1 !important; } .justify-content-sm-start { -ms-flex-pack: start !important; justify-content: flex-start !important; } .justify-content-sm-end { -ms-flex-pack: end !important; justify-content: flex-end !important; } .justify-content-sm-center { -ms-flex-pack: center !important; justify-content: center !important; } .justify-content-sm-between { -ms-flex-pack: justify !important; justify-content: space-between !important; } .justify-content-sm-around { -ms-flex-pack: distribute !important; justify-content: space-around !important; } .align-items-sm-start { -ms-flex-align: start !important; align-items: flex-start !important; } .align-items-sm-end { -ms-flex-align: end !important; align-items: flex-end !important; } .align-items-sm-center { -ms-flex-align: center !important; align-items: center !important; } .align-items-sm-baseline { -ms-flex-align: baseline !important; align-items: baseline !important; } .align-items-sm-stretch { -ms-flex-align: stretch !important; align-items: stretch !important; } .align-content-sm-start { -ms-flex-line-pack: start !important; align-content: flex-start !important; } .align-content-sm-end { -ms-flex-line-pack: end !important; align-content: flex-end !important; } .align-content-sm-center { -ms-flex-line-pack: center !important; align-content: center !important; } .align-content-sm-between { -ms-flex-line-pack: justify !important; align-content: space-between !important; } .align-content-sm-around { -ms-flex-line-pack: distribute !important; align-content: space-around !important; } .align-content-sm-stretch { -ms-flex-line-pack: stretch !important; align-content: stretch !important; } .align-self-sm-auto { -ms-flex-item-align: auto !important; align-self: auto !important; } .align-self-sm-start { -ms-flex-item-align: start !important; align-self: flex-start !important; } .align-self-sm-end { -ms-flex-item-align: end !important; align-self: flex-end !important; } .align-self-sm-center { -ms-flex-item-align: center !important; align-self: center !important; } .align-self-sm-baseline { -ms-flex-item-align: baseline !important; align-self: baseline !important; } .align-self-sm-stretch { -ms-flex-item-align: stretch !important; align-self: stretch !important; } } + +@media (min-width: 768px) { .flex-md-row { -ms-flex-direction: row !important; flex-direction: row !important; } .flex-md-column { -ms-flex-direction: column !important; flex-direction: column !important; } .flex-md-row-reverse { -ms-flex-direction: row-reverse !important; flex-direction: row-reverse !important; } .flex-md-column-reverse { -ms-flex-direction: column-reverse !important; flex-direction: column-reverse !important; } .flex-md-wrap { -ms-flex-wrap: wrap !important; flex-wrap: wrap !important; } .flex-md-nowrap { -ms-flex-wrap: nowrap !important; flex-wrap: nowrap !important; } .flex-md-wrap-reverse { -ms-flex-wrap: wrap-reverse !important; flex-wrap: wrap-reverse !important; } .flex-md-fill { -ms-flex: 1 1 auto !important; flex: 1 1 auto !important; } .flex-md-grow-0 { -ms-flex-positive: 0 !important; flex-grow: 0 !important; } .flex-md-grow-1 { -ms-flex-positive: 1 !important; flex-grow: 1 !important; } .flex-md-shrink-0 { -ms-flex-negative: 0 !important; flex-shrink: 0 !important; } .flex-md-shrink-1 { -ms-flex-negative: 1 !important; flex-shrink: 1 !important; } .justify-content-md-start { -ms-flex-pack: start !important; justify-content: flex-start !important; } .justify-content-md-end { -ms-flex-pack: end !important; justify-content: flex-end !important; } .justify-content-md-center { -ms-flex-pack: center !important; justify-content: center !important; } .justify-content-md-between { -ms-flex-pack: justify !important; justify-content: space-between !important; } .justify-content-md-around { -ms-flex-pack: distribute !important; justify-content: space-around !important; } .align-items-md-start { -ms-flex-align: start !important; align-items: flex-start !important; } .align-items-md-end { -ms-flex-align: end !important; align-items: flex-end !important; } .align-items-md-center { -ms-flex-align: center !important; align-items: center !important; } .align-items-md-baseline { -ms-flex-align: baseline !important; align-items: baseline !important; } .align-items-md-stretch { -ms-flex-align: stretch !important; align-items: stretch !important; } .align-content-md-start { -ms-flex-line-pack: start !important; align-content: flex-start !important; } .align-content-md-end { -ms-flex-line-pack: end !important; align-content: flex-end !important; } .align-content-md-center { -ms-flex-line-pack: center !important; align-content: center !important; } .align-content-md-between { -ms-flex-line-pack: justify !important; align-content: space-between !important; } .align-content-md-around { -ms-flex-line-pack: distribute !important; align-content: space-around !important; } .align-content-md-stretch { -ms-flex-line-pack: stretch !important; align-content: stretch !important; } .align-self-md-auto { -ms-flex-item-align: auto !important; align-self: auto !important; } .align-self-md-start { -ms-flex-item-align: start !important; align-self: flex-start !important; } .align-self-md-end { -ms-flex-item-align: end !important; align-self: flex-end !important; } .align-self-md-center { -ms-flex-item-align: center !important; align-self: center !important; } .align-self-md-baseline { -ms-flex-item-align: baseline !important; align-self: baseline !important; } .align-self-md-stretch { -ms-flex-item-align: stretch !important; align-self: stretch !important; } } + +@media (min-width: 992px) { .flex-lg-row { -ms-flex-direction: row !important; flex-direction: row !important; } .flex-lg-column { -ms-flex-direction: column !important; flex-direction: column !important; } .flex-lg-row-reverse { -ms-flex-direction: row-reverse !important; flex-direction: row-reverse !important; } .flex-lg-column-reverse { -ms-flex-direction: column-reverse !important; flex-direction: column-reverse !important; } .flex-lg-wrap { -ms-flex-wrap: wrap !important; flex-wrap: wrap !important; } .flex-lg-nowrap { -ms-flex-wrap: nowrap !important; flex-wrap: nowrap !important; } .flex-lg-wrap-reverse { -ms-flex-wrap: wrap-reverse !important; flex-wrap: wrap-reverse !important; } .flex-lg-fill { -ms-flex: 1 1 auto !important; flex: 1 1 auto !important; } .flex-lg-grow-0 { -ms-flex-positive: 0 !important; flex-grow: 0 !important; } .flex-lg-grow-1 { -ms-flex-positive: 1 !important; flex-grow: 1 !important; } .flex-lg-shrink-0 { -ms-flex-negative: 0 !important; flex-shrink: 0 !important; } .flex-lg-shrink-1 { -ms-flex-negative: 1 !important; flex-shrink: 1 !important; } .justify-content-lg-start { -ms-flex-pack: start !important; justify-content: flex-start !important; } .justify-content-lg-end { -ms-flex-pack: end !important; justify-content: flex-end !important; } .justify-content-lg-center { -ms-flex-pack: center !important; justify-content: center !important; } .justify-content-lg-between { -ms-flex-pack: justify !important; justify-content: space-between !important; } .justify-content-lg-around { -ms-flex-pack: distribute !important; justify-content: space-around !important; } .align-items-lg-start { -ms-flex-align: start !important; align-items: flex-start !important; } .align-items-lg-end { -ms-flex-align: end !important; align-items: flex-end !important; } .align-items-lg-center { -ms-flex-align: center !important; align-items: center !important; } .align-items-lg-baseline { -ms-flex-align: baseline !important; align-items: baseline !important; } .align-items-lg-stretch { -ms-flex-align: stretch !important; align-items: stretch !important; } .align-content-lg-start { -ms-flex-line-pack: start !important; align-content: flex-start !important; } .align-content-lg-end { -ms-flex-line-pack: end !important; align-content: flex-end !important; } .align-content-lg-center { -ms-flex-line-pack: center !important; align-content: center !important; } .align-content-lg-between { -ms-flex-line-pack: justify !important; align-content: space-between !important; } .align-content-lg-around { -ms-flex-line-pack: distribute !important; align-content: space-around !important; } .align-content-lg-stretch { -ms-flex-line-pack: stretch !important; align-content: stretch !important; } .align-self-lg-auto { -ms-flex-item-align: auto !important; align-self: auto !important; } .align-self-lg-start { -ms-flex-item-align: start !important; align-self: flex-start !important; } .align-self-lg-end { -ms-flex-item-align: end !important; align-self: flex-end !important; } .align-self-lg-center { -ms-flex-item-align: center !important; align-self: center !important; } .align-self-lg-baseline { -ms-flex-item-align: baseline !important; align-self: baseline !important; } .align-self-lg-stretch { -ms-flex-item-align: stretch !important; align-self: stretch !important; } } + +@media (min-width: 1200px) { .flex-xl-row { -ms-flex-direction: row !important; flex-direction: row !important; } .flex-xl-column { -ms-flex-direction: column !important; flex-direction: column !important; } .flex-xl-row-reverse { -ms-flex-direction: row-reverse !important; flex-direction: row-reverse !important; } .flex-xl-column-reverse { -ms-flex-direction: column-reverse !important; flex-direction: column-reverse !important; } .flex-xl-wrap { -ms-flex-wrap: wrap !important; flex-wrap: wrap !important; } .flex-xl-nowrap { -ms-flex-wrap: nowrap !important; flex-wrap: nowrap !important; } .flex-xl-wrap-reverse { -ms-flex-wrap: wrap-reverse !important; flex-wrap: wrap-reverse !important; } .flex-xl-fill { -ms-flex: 1 1 auto !important; flex: 1 1 auto !important; } .flex-xl-grow-0 { -ms-flex-positive: 0 !important; flex-grow: 0 !important; } .flex-xl-grow-1 { -ms-flex-positive: 1 !important; flex-grow: 1 !important; } .flex-xl-shrink-0 { -ms-flex-negative: 0 !important; flex-shrink: 0 !important; } .flex-xl-shrink-1 { -ms-flex-negative: 1 !important; flex-shrink: 1 !important; } .justify-content-xl-start { -ms-flex-pack: start !important; justify-content: flex-start !important; } .justify-content-xl-end { -ms-flex-pack: end !important; justify-content: flex-end !important; } .justify-content-xl-center { -ms-flex-pack: center !important; justify-content: center !important; } .justify-content-xl-between { -ms-flex-pack: justify !important; justify-content: space-between !important; } .justify-content-xl-around { -ms-flex-pack: distribute !important; justify-content: space-around !important; } .align-items-xl-start { -ms-flex-align: start !important; align-items: flex-start !important; } .align-items-xl-end { -ms-flex-align: end !important; align-items: flex-end !important; } .align-items-xl-center { -ms-flex-align: center !important; align-items: center !important; } .align-items-xl-baseline { -ms-flex-align: baseline !important; align-items: baseline !important; } .align-items-xl-stretch { -ms-flex-align: stretch !important; align-items: stretch !important; } .align-content-xl-start { -ms-flex-line-pack: start !important; align-content: flex-start !important; } .align-content-xl-end { -ms-flex-line-pack: end !important; align-content: flex-end !important; } .align-content-xl-center { -ms-flex-line-pack: center !important; align-content: center !important; } .align-content-xl-between { -ms-flex-line-pack: justify !important; align-content: space-between !important; } .align-content-xl-around { -ms-flex-line-pack: distribute !important; align-content: space-around !important; } .align-content-xl-stretch { -ms-flex-line-pack: stretch !important; align-content: stretch !important; } .align-self-xl-auto { -ms-flex-item-align: auto !important; align-self: auto !important; } .align-self-xl-start { -ms-flex-item-align: start !important; align-self: flex-start !important; } .align-self-xl-end { -ms-flex-item-align: end !important; align-self: flex-end !important; } .align-self-xl-center { -ms-flex-item-align: center !important; align-self: center !important; } .align-self-xl-baseline { -ms-flex-item-align: baseline !important; align-self: baseline !important; } .align-self-xl-stretch { -ms-flex-item-align: stretch !important; align-self: stretch !important; } } + +.float-left { float: left !important; } + +.float-right { float: right !important; } + +.float-none { float: none !important; } + +@media (min-width: 576px) { .float-sm-left { float: left !important; } .float-sm-right { float: right !important; } .float-sm-none { float: none !important; } } + +@media (min-width: 768px) { .float-md-left { float: left !important; } .float-md-right { float: right !important; } .float-md-none { float: none !important; } } + +@media (min-width: 992px) { .float-lg-left { float: left !important; } .float-lg-right { float: right !important; } .float-lg-none { float: none !important; } } + +@media (min-width: 1200px) { .float-xl-left { float: left !important; } .float-xl-right { float: right !important; } .float-xl-none { float: none !important; } } + +.overflow-auto { overflow: auto !important; } + +.overflow-hidden { overflow: hidden !important; } + +.position-static { position: static !important; } + +.position-relative { position: relative !important; } + +.position-absolute { position: absolute !important; } + +.position-fixed { position: fixed !important; } + +.position-sticky { position: -webkit-sticky !important; position: sticky !important; } + +.fixed-top { position: fixed; top: 0; right: 0; left: 0; z-index: 1030; } + +.fixed-bottom { position: fixed; right: 0; bottom: 0; left: 0; z-index: 1030; } + +@supports (position: -webkit-sticky) or (position: sticky) { .sticky-top { position: -webkit-sticky; position: sticky; top: 0; z-index: 1020; } } + +.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; } + +.sr-only-focusable:active, .sr-only-focusable:focus { position: static; width: auto; height: auto; overflow: visible; clip: auto; white-space: normal; } + +.shadow-sm { box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important; } + +.shadow { box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important; } + +.shadow-lg { box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important; } + +.shadow-none { box-shadow: none !important; } + +.w-25 { width: 25% !important; } + +.w-50 { width: 50% !important; } + +.w-75 { width: 75% !important; } + +.w-100 { width: 100% !important; } + +.w-auto { width: auto !important; } + +.h-25 { height: 25% !important; } + +.h-50 { height: 50% !important; } + +.h-75 { height: 75% !important; } + +.h-100 { height: 100% !important; } + +.h-auto { height: auto !important; } + +.mw-100 { max-width: 100% !important; } + +.mh-100 { max-height: 100% !important; } + +.min-vw-100 { min-width: 100vw !important; } + +.min-vh-100 { min-height: 100vh !important; } + +.vw-100 { width: 100vw !important; } + +.vh-100 { height: 100vh !important; } + +.m-0 { margin: 0 !important; } + +.mt-0, .my-0 { margin-top: 0 !important; } + +.mr-0, .mx-0 { margin-right: 0 !important; } + +.mb-0, .my-0 { margin-bottom: 0 !important; } + +.ml-0, .mx-0 { margin-left: 0 !important; } + +.m-1 { margin: 0.25rem !important; } + +.mt-1, .my-1 { margin-top: 0.25rem !important; } + +.mr-1, .mx-1 { margin-right: 0.25rem !important; } + +.mb-1, .my-1 { margin-bottom: 0.25rem !important; } + +.ml-1, .mx-1 { margin-left: 0.25rem !important; } + +.m-2 { margin: 0.5rem !important; } + +.mt-2, .my-2 { margin-top: 0.5rem !important; } + +.mr-2, .mx-2 { margin-right: 0.5rem !important; } + +.mb-2, .my-2 { margin-bottom: 0.5rem !important; } + +.ml-2, .mx-2 { margin-left: 0.5rem !important; } + +.m-3 { margin: 1rem !important; } + +.mt-3, .my-3 { margin-top: 1rem !important; } + +.mr-3, .mx-3 { margin-right: 1rem !important; } + +.mb-3, .my-3 { margin-bottom: 1rem !important; } + +.ml-3, .mx-3 { margin-left: 1rem !important; } + +.m-4 { margin: 1.5rem !important; } + +.mt-4, .my-4 { margin-top: 1.5rem !important; } + +.mr-4, .mx-4 { margin-right: 1.5rem !important; } + +.mb-4, .my-4 { margin-bottom: 1.5rem !important; } + +.ml-4, .mx-4 { margin-left: 1.5rem !important; } + +.m-5 { margin: 3rem !important; } + +.mt-5, .my-5 { margin-top: 3rem !important; } + +.mr-5, .mx-5 { margin-right: 3rem !important; } + +.mb-5, .my-5 { margin-bottom: 3rem !important; } + +.ml-5, .mx-5 { margin-left: 3rem !important; } + +.p-0 { padding: 0 !important; } + +.pt-0, .py-0 { padding-top: 0 !important; } + +.pr-0, .px-0 { padding-right: 0 !important; } + +.pb-0, .py-0 { padding-bottom: 0 !important; } + +.pl-0, .px-0 { padding-left: 0 !important; } + +.p-1 { padding: 0.25rem !important; } + +.pt-1, .py-1 { padding-top: 0.25rem !important; } + +.pr-1, .px-1 { padding-right: 0.25rem !important; } + +.pb-1, .py-1 { padding-bottom: 0.25rem !important; } + +.pl-1, .px-1 { padding-left: 0.25rem !important; } + +.p-2 { padding: 0.5rem !important; } + +.pt-2, .py-2 { padding-top: 0.5rem !important; } + +.pr-2, .px-2 { padding-right: 0.5rem !important; } + +.pb-2, .py-2 { padding-bottom: 0.5rem !important; } + +.pl-2, .px-2 { padding-left: 0.5rem !important; } + +.p-3 { padding: 1rem !important; } + +.pt-3, .py-3 { padding-top: 1rem !important; } + +.pr-3, .px-3 { padding-right: 1rem !important; } + +.pb-3, .py-3 { padding-bottom: 1rem !important; } + +.pl-3, .px-3 { padding-left: 1rem !important; } + +.p-4 { padding: 1.5rem !important; } + +.pt-4, .py-4 { padding-top: 1.5rem !important; } + +.pr-4, .px-4 { padding-right: 1.5rem !important; } + +.pb-4, .py-4 { padding-bottom: 1.5rem !important; } + +.pl-4, .px-4 { padding-left: 1.5rem !important; } + +.p-5 { padding: 3rem !important; } + +.pt-5, .py-5 { padding-top: 3rem !important; } + +.pr-5, .px-5 { padding-right: 3rem !important; } + +.pb-5, .py-5 { padding-bottom: 3rem !important; } + +.pl-5, .px-5 { padding-left: 3rem !important; } + +.m-n1 { margin: -0.25rem !important; } + +.mt-n1, .my-n1 { margin-top: -0.25rem !important; } + +.mr-n1, .mx-n1 { margin-right: -0.25rem !important; } + +.mb-n1, .my-n1 { margin-bottom: -0.25rem !important; } + +.ml-n1, .mx-n1 { margin-left: -0.25rem !important; } + +.m-n2 { margin: -0.5rem !important; } + +.mt-n2, .my-n2 { margin-top: -0.5rem !important; } + +.mr-n2, .mx-n2 { margin-right: -0.5rem !important; } + +.mb-n2, .my-n2 { margin-bottom: -0.5rem !important; } + +.ml-n2, .mx-n2 { margin-left: -0.5rem !important; } + +.m-n3 { margin: -1rem !important; } + +.mt-n3, .my-n3 { margin-top: -1rem !important; } + +.mr-n3, .mx-n3 { margin-right: -1rem !important; } + +.mb-n3, .my-n3 { margin-bottom: -1rem !important; } + +.ml-n3, .mx-n3 { margin-left: -1rem !important; } + +.m-n4 { margin: -1.5rem !important; } + +.mt-n4, .my-n4 { margin-top: -1.5rem !important; } + +.mr-n4, .mx-n4 { margin-right: -1.5rem !important; } + +.mb-n4, .my-n4 { margin-bottom: -1.5rem !important; } + +.ml-n4, .mx-n4 { margin-left: -1.5rem !important; } + +.m-n5 { margin: -3rem !important; } + +.mt-n5, .my-n5 { margin-top: -3rem !important; } + +.mr-n5, .mx-n5 { margin-right: -3rem !important; } + +.mb-n5, .my-n5 { margin-bottom: -3rem !important; } + +.ml-n5, .mx-n5 { margin-left: -3rem !important; } + +.m-auto { margin: auto !important; } + +.mt-auto, .my-auto { margin-top: auto !important; } + +.mr-auto, .mx-auto { margin-right: auto !important; } + +.mb-auto, .my-auto { margin-bottom: auto !important; } + +.ml-auto, .mx-auto { margin-left: auto !important; } + +@media (min-width: 576px) { .m-sm-0 { margin: 0 !important; } .mt-sm-0, .my-sm-0 { margin-top: 0 !important; } .mr-sm-0, .mx-sm-0 { margin-right: 0 !important; } .mb-sm-0, .my-sm-0 { margin-bottom: 0 !important; } .ml-sm-0, .mx-sm-0 { margin-left: 0 !important; } .m-sm-1 { margin: 0.25rem !important; } .mt-sm-1, .my-sm-1 { margin-top: 0.25rem !important; } .mr-sm-1, .mx-sm-1 { margin-right: 0.25rem !important; } .mb-sm-1, .my-sm-1 { margin-bottom: 0.25rem !important; } .ml-sm-1, .mx-sm-1 { margin-left: 0.25rem !important; } .m-sm-2 { margin: 0.5rem !important; } .mt-sm-2, .my-sm-2 { margin-top: 0.5rem !important; } .mr-sm-2, .mx-sm-2 { margin-right: 0.5rem !important; } .mb-sm-2, .my-sm-2 { margin-bottom: 0.5rem !important; } .ml-sm-2, .mx-sm-2 { margin-left: 0.5rem !important; } .m-sm-3 { margin: 1rem !important; } .mt-sm-3, .my-sm-3 { margin-top: 1rem !important; } .mr-sm-3, .mx-sm-3 { margin-right: 1rem !important; } .mb-sm-3, .my-sm-3 { margin-bottom: 1rem !important; } .ml-sm-3, .mx-sm-3 { margin-left: 1rem !important; } .m-sm-4 { margin: 1.5rem !important; } .mt-sm-4, .my-sm-4 { margin-top: 1.5rem !important; } .mr-sm-4, .mx-sm-4 { margin-right: 1.5rem !important; } .mb-sm-4, .my-sm-4 { margin-bottom: 1.5rem !important; } .ml-sm-4, .mx-sm-4 { margin-left: 1.5rem !important; } .m-sm-5 { margin: 3rem !important; } .mt-sm-5, .my-sm-5 { margin-top: 3rem !important; } .mr-sm-5, .mx-sm-5 { margin-right: 3rem !important; } .mb-sm-5, .my-sm-5 { margin-bottom: 3rem !important; } .ml-sm-5, .mx-sm-5 { margin-left: 3rem !important; } .p-sm-0 { padding: 0 !important; } .pt-sm-0, .py-sm-0 { padding-top: 0 !important; } .pr-sm-0, .px-sm-0 { padding-right: 0 !important; } .pb-sm-0, .py-sm-0 { padding-bottom: 0 !important; } .pl-sm-0, .px-sm-0 { padding-left: 0 !important; } .p-sm-1 { padding: 0.25rem !important; } .pt-sm-1, .py-sm-1 { padding-top: 0.25rem !important; } .pr-sm-1, .px-sm-1 { padding-right: 0.25rem !important; } .pb-sm-1, .py-sm-1 { padding-bottom: 0.25rem !important; } .pl-sm-1, .px-sm-1 { padding-left: 0.25rem !important; } .p-sm-2 { padding: 0.5rem !important; } .pt-sm-2, .py-sm-2 { padding-top: 0.5rem !important; } .pr-sm-2, .px-sm-2 { padding-right: 0.5rem !important; } .pb-sm-2, .py-sm-2 { padding-bottom: 0.5rem !important; } .pl-sm-2, .px-sm-2 { padding-left: 0.5rem !important; } .p-sm-3 { padding: 1rem !important; } .pt-sm-3, .py-sm-3 { padding-top: 1rem !important; } .pr-sm-3, .px-sm-3 { padding-right: 1rem !important; } .pb-sm-3, .py-sm-3 { padding-bottom: 1rem !important; } .pl-sm-3, .px-sm-3 { padding-left: 1rem !important; } .p-sm-4 { padding: 1.5rem !important; } .pt-sm-4, .py-sm-4 { padding-top: 1.5rem !important; } .pr-sm-4, .px-sm-4 { padding-right: 1.5rem !important; } .pb-sm-4, .py-sm-4 { padding-bottom: 1.5rem !important; } .pl-sm-4, .px-sm-4 { padding-left: 1.5rem !important; } .p-sm-5 { padding: 3rem !important; } .pt-sm-5, .py-sm-5 { padding-top: 3rem !important; } .pr-sm-5, .px-sm-5 { padding-right: 3rem !important; } .pb-sm-5, .py-sm-5 { padding-bottom: 3rem !important; } .pl-sm-5, .px-sm-5 { padding-left: 3rem !important; } .m-sm-n1 { margin: -0.25rem !important; } .mt-sm-n1, .my-sm-n1 { margin-top: -0.25rem !important; } .mr-sm-n1, .mx-sm-n1 { margin-right: -0.25rem !important; } .mb-sm-n1, .my-sm-n1 { margin-bottom: -0.25rem !important; } .ml-sm-n1, .mx-sm-n1 { margin-left: -0.25rem !important; } .m-sm-n2 { margin: -0.5rem !important; } .mt-sm-n2, .my-sm-n2 { margin-top: -0.5rem !important; } .mr-sm-n2, .mx-sm-n2 { margin-right: -0.5rem !important; } .mb-sm-n2, .my-sm-n2 { margin-bottom: -0.5rem !important; } .ml-sm-n2, .mx-sm-n2 { margin-left: -0.5rem !important; } .m-sm-n3 { margin: -1rem !important; } .mt-sm-n3, .my-sm-n3 { margin-top: -1rem !important; } .mr-sm-n3, .mx-sm-n3 { margin-right: -1rem !important; } .mb-sm-n3, .my-sm-n3 { margin-bottom: -1rem !important; } .ml-sm-n3, .mx-sm-n3 { margin-left: -1rem !important; } .m-sm-n4 { margin: -1.5rem !important; } .mt-sm-n4, .my-sm-n4 { margin-top: -1.5rem !important; } .mr-sm-n4, .mx-sm-n4 { margin-right: -1.5rem !important; } .mb-sm-n4, .my-sm-n4 { margin-bottom: -1.5rem !important; } .ml-sm-n4, .mx-sm-n4 { margin-left: -1.5rem !important; } .m-sm-n5 { margin: -3rem !important; } .mt-sm-n5, .my-sm-n5 { margin-top: -3rem !important; } .mr-sm-n5, .mx-sm-n5 { margin-right: -3rem !important; } .mb-sm-n5, .my-sm-n5 { margin-bottom: -3rem !important; } .ml-sm-n5, .mx-sm-n5 { margin-left: -3rem !important; } .m-sm-auto { margin: auto !important; } .mt-sm-auto, .my-sm-auto { margin-top: auto !important; } .mr-sm-auto, .mx-sm-auto { margin-right: auto !important; } .mb-sm-auto, .my-sm-auto { margin-bottom: auto !important; } .ml-sm-auto, .mx-sm-auto { margin-left: auto !important; } } + +@media (min-width: 768px) { .m-md-0 { margin: 0 !important; } .mt-md-0, .my-md-0 { margin-top: 0 !important; } .mr-md-0, .mx-md-0 { margin-right: 0 !important; } .mb-md-0, .my-md-0 { margin-bottom: 0 !important; } .ml-md-0, .mx-md-0 { margin-left: 0 !important; } .m-md-1 { margin: 0.25rem !important; } .mt-md-1, .my-md-1 { margin-top: 0.25rem !important; } .mr-md-1, .mx-md-1 { margin-right: 0.25rem !important; } .mb-md-1, .my-md-1 { margin-bottom: 0.25rem !important; } .ml-md-1, .mx-md-1 { margin-left: 0.25rem !important; } .m-md-2 { margin: 0.5rem !important; } .mt-md-2, .my-md-2 { margin-top: 0.5rem !important; } .mr-md-2, .mx-md-2 { margin-right: 0.5rem !important; } .mb-md-2, .my-md-2 { margin-bottom: 0.5rem !important; } .ml-md-2, .mx-md-2 { margin-left: 0.5rem !important; } .m-md-3 { margin: 1rem !important; } .mt-md-3, .my-md-3 { margin-top: 1rem !important; } .mr-md-3, .mx-md-3 { margin-right: 1rem !important; } .mb-md-3, .my-md-3 { margin-bottom: 1rem !important; } .ml-md-3, .mx-md-3 { margin-left: 1rem !important; } .m-md-4 { margin: 1.5rem !important; } .mt-md-4, .my-md-4 { margin-top: 1.5rem !important; } .mr-md-4, .mx-md-4 { margin-right: 1.5rem !important; } .mb-md-4, .my-md-4 { margin-bottom: 1.5rem !important; } .ml-md-4, .mx-md-4 { margin-left: 1.5rem !important; } .m-md-5 { margin: 3rem !important; } .mt-md-5, .my-md-5 { margin-top: 3rem !important; } .mr-md-5, .mx-md-5 { margin-right: 3rem !important; } .mb-md-5, .my-md-5 { margin-bottom: 3rem !important; } .ml-md-5, .mx-md-5 { margin-left: 3rem !important; } .p-md-0 { padding: 0 !important; } .pt-md-0, .py-md-0 { padding-top: 0 !important; } .pr-md-0, .px-md-0 { padding-right: 0 !important; } .pb-md-0, .py-md-0 { padding-bottom: 0 !important; } .pl-md-0, .px-md-0 { padding-left: 0 !important; } .p-md-1 { padding: 0.25rem !important; } .pt-md-1, .py-md-1 { padding-top: 0.25rem !important; } .pr-md-1, .px-md-1 { padding-right: 0.25rem !important; } .pb-md-1, .py-md-1 { padding-bottom: 0.25rem !important; } .pl-md-1, .px-md-1 { padding-left: 0.25rem !important; } .p-md-2 { padding: 0.5rem !important; } .pt-md-2, .py-md-2 { padding-top: 0.5rem !important; } .pr-md-2, .px-md-2 { padding-right: 0.5rem !important; } .pb-md-2, .py-md-2 { padding-bottom: 0.5rem !important; } .pl-md-2, .px-md-2 { padding-left: 0.5rem !important; } .p-md-3 { padding: 1rem !important; } .pt-md-3, .py-md-3 { padding-top: 1rem !important; } .pr-md-3, .px-md-3 { padding-right: 1rem !important; } .pb-md-3, .py-md-3 { padding-bottom: 1rem !important; } .pl-md-3, .px-md-3 { padding-left: 1rem !important; } .p-md-4 { padding: 1.5rem !important; } .pt-md-4, .py-md-4 { padding-top: 1.5rem !important; } .pr-md-4, .px-md-4 { padding-right: 1.5rem !important; } .pb-md-4, .py-md-4 { padding-bottom: 1.5rem !important; } .pl-md-4, .px-md-4 { padding-left: 1.5rem !important; } .p-md-5 { padding: 3rem !important; } .pt-md-5, .py-md-5 { padding-top: 3rem !important; } .pr-md-5, .px-md-5 { padding-right: 3rem !important; } .pb-md-5, .py-md-5 { padding-bottom: 3rem !important; } .pl-md-5, .px-md-5 { padding-left: 3rem !important; } .m-md-n1 { margin: -0.25rem !important; } .mt-md-n1, .my-md-n1 { margin-top: -0.25rem !important; } .mr-md-n1, .mx-md-n1 { margin-right: -0.25rem !important; } .mb-md-n1, .my-md-n1 { margin-bottom: -0.25rem !important; } .ml-md-n1, .mx-md-n1 { margin-left: -0.25rem !important; } .m-md-n2 { margin: -0.5rem !important; } .mt-md-n2, .my-md-n2 { margin-top: -0.5rem !important; } .mr-md-n2, .mx-md-n2 { margin-right: -0.5rem !important; } .mb-md-n2, .my-md-n2 { margin-bottom: -0.5rem !important; } .ml-md-n2, .mx-md-n2 { margin-left: -0.5rem !important; } .m-md-n3 { margin: -1rem !important; } .mt-md-n3, .my-md-n3 { margin-top: -1rem !important; } .mr-md-n3, .mx-md-n3 { margin-right: -1rem !important; } .mb-md-n3, .my-md-n3 { margin-bottom: -1rem !important; } .ml-md-n3, .mx-md-n3 { margin-left: -1rem !important; } .m-md-n4 { margin: -1.5rem !important; } .mt-md-n4, .my-md-n4 { margin-top: -1.5rem !important; } .mr-md-n4, .mx-md-n4 { margin-right: -1.5rem !important; } .mb-md-n4, .my-md-n4 { margin-bottom: -1.5rem !important; } .ml-md-n4, .mx-md-n4 { margin-left: -1.5rem !important; } .m-md-n5 { margin: -3rem !important; } .mt-md-n5, .my-md-n5 { margin-top: -3rem !important; } .mr-md-n5, .mx-md-n5 { margin-right: -3rem !important; } .mb-md-n5, .my-md-n5 { margin-bottom: -3rem !important; } .ml-md-n5, .mx-md-n5 { margin-left: -3rem !important; } .m-md-auto { margin: auto !important; } .mt-md-auto, .my-md-auto { margin-top: auto !important; } .mr-md-auto, .mx-md-auto { margin-right: auto !important; } .mb-md-auto, .my-md-auto { margin-bottom: auto !important; } .ml-md-auto, .mx-md-auto { margin-left: auto !important; } } + +@media (min-width: 992px) { .m-lg-0 { margin: 0 !important; } .mt-lg-0, .my-lg-0 { margin-top: 0 !important; } .mr-lg-0, .mx-lg-0 { margin-right: 0 !important; } .mb-lg-0, .my-lg-0 { margin-bottom: 0 !important; } .ml-lg-0, .mx-lg-0 { margin-left: 0 !important; } .m-lg-1 { margin: 0.25rem !important; } .mt-lg-1, .my-lg-1 { margin-top: 0.25rem !important; } .mr-lg-1, .mx-lg-1 { margin-right: 0.25rem !important; } .mb-lg-1, .my-lg-1 { margin-bottom: 0.25rem !important; } .ml-lg-1, .mx-lg-1 { margin-left: 0.25rem !important; } .m-lg-2 { margin: 0.5rem !important; } .mt-lg-2, .my-lg-2 { margin-top: 0.5rem !important; } .mr-lg-2, .mx-lg-2 { margin-right: 0.5rem !important; } .mb-lg-2, .my-lg-2 { margin-bottom: 0.5rem !important; } .ml-lg-2, .mx-lg-2 { margin-left: 0.5rem !important; } .m-lg-3 { margin: 1rem !important; } .mt-lg-3, .my-lg-3 { margin-top: 1rem !important; } .mr-lg-3, .mx-lg-3 { margin-right: 1rem !important; } .mb-lg-3, .my-lg-3 { margin-bottom: 1rem !important; } .ml-lg-3, .mx-lg-3 { margin-left: 1rem !important; } .m-lg-4 { margin: 1.5rem !important; } .mt-lg-4, .my-lg-4 { margin-top: 1.5rem !important; } .mr-lg-4, .mx-lg-4 { margin-right: 1.5rem !important; } .mb-lg-4, .my-lg-4 { margin-bottom: 1.5rem !important; } .ml-lg-4, .mx-lg-4 { margin-left: 1.5rem !important; } .m-lg-5 { margin: 3rem !important; } .mt-lg-5, .my-lg-5 { margin-top: 3rem !important; } .mr-lg-5, .mx-lg-5 { margin-right: 3rem !important; } .mb-lg-5, .my-lg-5 { margin-bottom: 3rem !important; } .ml-lg-5, .mx-lg-5 { margin-left: 3rem !important; } .p-lg-0 { padding: 0 !important; } .pt-lg-0, .py-lg-0 { padding-top: 0 !important; } .pr-lg-0, .px-lg-0 { padding-right: 0 !important; } .pb-lg-0, .py-lg-0 { padding-bottom: 0 !important; } .pl-lg-0, .px-lg-0 { padding-left: 0 !important; } .p-lg-1 { padding: 0.25rem !important; } .pt-lg-1, .py-lg-1 { padding-top: 0.25rem !important; } .pr-lg-1, .px-lg-1 { padding-right: 0.25rem !important; } .pb-lg-1, .py-lg-1 { padding-bottom: 0.25rem !important; } .pl-lg-1, .px-lg-1 { padding-left: 0.25rem !important; } .p-lg-2 { padding: 0.5rem !important; } .pt-lg-2, .py-lg-2 { padding-top: 0.5rem !important; } .pr-lg-2, .px-lg-2 { padding-right: 0.5rem !important; } .pb-lg-2, .py-lg-2 { padding-bottom: 0.5rem !important; } .pl-lg-2, .px-lg-2 { padding-left: 0.5rem !important; } .p-lg-3 { padding: 1rem !important; } .pt-lg-3, .py-lg-3 { padding-top: 1rem !important; } .pr-lg-3, .px-lg-3 { padding-right: 1rem !important; } .pb-lg-3, .py-lg-3 { padding-bottom: 1rem !important; } .pl-lg-3, .px-lg-3 { padding-left: 1rem !important; } .p-lg-4 { padding: 1.5rem !important; } .pt-lg-4, .py-lg-4 { padding-top: 1.5rem !important; } .pr-lg-4, .px-lg-4 { padding-right: 1.5rem !important; } .pb-lg-4, .py-lg-4 { padding-bottom: 1.5rem !important; } .pl-lg-4, .px-lg-4 { padding-left: 1.5rem !important; } .p-lg-5 { padding: 3rem !important; } .pt-lg-5, .py-lg-5 { padding-top: 3rem !important; } .pr-lg-5, .px-lg-5 { padding-right: 3rem !important; } .pb-lg-5, .py-lg-5 { padding-bottom: 3rem !important; } .pl-lg-5, .px-lg-5 { padding-left: 3rem !important; } .m-lg-n1 { margin: -0.25rem !important; } .mt-lg-n1, .my-lg-n1 { margin-top: -0.25rem !important; } .mr-lg-n1, .mx-lg-n1 { margin-right: -0.25rem !important; } .mb-lg-n1, .my-lg-n1 { margin-bottom: -0.25rem !important; } .ml-lg-n1, .mx-lg-n1 { margin-left: -0.25rem !important; } .m-lg-n2 { margin: -0.5rem !important; } .mt-lg-n2, .my-lg-n2 { margin-top: -0.5rem !important; } .mr-lg-n2, .mx-lg-n2 { margin-right: -0.5rem !important; } .mb-lg-n2, .my-lg-n2 { margin-bottom: -0.5rem !important; } .ml-lg-n2, .mx-lg-n2 { margin-left: -0.5rem !important; } .m-lg-n3 { margin: -1rem !important; } .mt-lg-n3, .my-lg-n3 { margin-top: -1rem !important; } .mr-lg-n3, .mx-lg-n3 { margin-right: -1rem !important; } .mb-lg-n3, .my-lg-n3 { margin-bottom: -1rem !important; } .ml-lg-n3, .mx-lg-n3 { margin-left: -1rem !important; } .m-lg-n4 { margin: -1.5rem !important; } .mt-lg-n4, .my-lg-n4 { margin-top: -1.5rem !important; } .mr-lg-n4, .mx-lg-n4 { margin-right: -1.5rem !important; } .mb-lg-n4, .my-lg-n4 { margin-bottom: -1.5rem !important; } .ml-lg-n4, .mx-lg-n4 { margin-left: -1.5rem !important; } .m-lg-n5 { margin: -3rem !important; } .mt-lg-n5, .my-lg-n5 { margin-top: -3rem !important; } .mr-lg-n5, .mx-lg-n5 { margin-right: -3rem !important; } .mb-lg-n5, .my-lg-n5 { margin-bottom: -3rem !important; } .ml-lg-n5, .mx-lg-n5 { margin-left: -3rem !important; } .m-lg-auto { margin: auto !important; } .mt-lg-auto, .my-lg-auto { margin-top: auto !important; } .mr-lg-auto, .mx-lg-auto { margin-right: auto !important; } .mb-lg-auto, .my-lg-auto { margin-bottom: auto !important; } .ml-lg-auto, .mx-lg-auto { margin-left: auto !important; } } + +@media (min-width: 1200px) { .m-xl-0 { margin: 0 !important; } .mt-xl-0, .my-xl-0 { margin-top: 0 !important; } .mr-xl-0, .mx-xl-0 { margin-right: 0 !important; } .mb-xl-0, .my-xl-0 { margin-bottom: 0 !important; } .ml-xl-0, .mx-xl-0 { margin-left: 0 !important; } .m-xl-1 { margin: 0.25rem !important; } .mt-xl-1, .my-xl-1 { margin-top: 0.25rem !important; } .mr-xl-1, .mx-xl-1 { margin-right: 0.25rem !important; } .mb-xl-1, .my-xl-1 { margin-bottom: 0.25rem !important; } .ml-xl-1, .mx-xl-1 { margin-left: 0.25rem !important; } .m-xl-2 { margin: 0.5rem !important; } .mt-xl-2, .my-xl-2 { margin-top: 0.5rem !important; } .mr-xl-2, .mx-xl-2 { margin-right: 0.5rem !important; } .mb-xl-2, .my-xl-2 { margin-bottom: 0.5rem !important; } .ml-xl-2, .mx-xl-2 { margin-left: 0.5rem !important; } .m-xl-3 { margin: 1rem !important; } .mt-xl-3, .my-xl-3 { margin-top: 1rem !important; } .mr-xl-3, .mx-xl-3 { margin-right: 1rem !important; } .mb-xl-3, .my-xl-3 { margin-bottom: 1rem !important; } .ml-xl-3, .mx-xl-3 { margin-left: 1rem !important; } .m-xl-4 { margin: 1.5rem !important; } .mt-xl-4, .my-xl-4 { margin-top: 1.5rem !important; } .mr-xl-4, .mx-xl-4 { margin-right: 1.5rem !important; } .mb-xl-4, .my-xl-4 { margin-bottom: 1.5rem !important; } .ml-xl-4, .mx-xl-4 { margin-left: 1.5rem !important; } .m-xl-5 { margin: 3rem !important; } .mt-xl-5, .my-xl-5 { margin-top: 3rem !important; } .mr-xl-5, .mx-xl-5 { margin-right: 3rem !important; } .mb-xl-5, .my-xl-5 { margin-bottom: 3rem !important; } .ml-xl-5, .mx-xl-5 { margin-left: 3rem !important; } .p-xl-0 { padding: 0 !important; } .pt-xl-0, .py-xl-0 { padding-top: 0 !important; } .pr-xl-0, .px-xl-0 { padding-right: 0 !important; } .pb-xl-0, .py-xl-0 { padding-bottom: 0 !important; } .pl-xl-0, .px-xl-0 { padding-left: 0 !important; } .p-xl-1 { padding: 0.25rem !important; } .pt-xl-1, .py-xl-1 { padding-top: 0.25rem !important; } .pr-xl-1, .px-xl-1 { padding-right: 0.25rem !important; } .pb-xl-1, .py-xl-1 { padding-bottom: 0.25rem !important; } .pl-xl-1, .px-xl-1 { padding-left: 0.25rem !important; } .p-xl-2 { padding: 0.5rem !important; } .pt-xl-2, .py-xl-2 { padding-top: 0.5rem !important; } .pr-xl-2, .px-xl-2 { padding-right: 0.5rem !important; } .pb-xl-2, .py-xl-2 { padding-bottom: 0.5rem !important; } .pl-xl-2, .px-xl-2 { padding-left: 0.5rem !important; } .p-xl-3 { padding: 1rem !important; } .pt-xl-3, .py-xl-3 { padding-top: 1rem !important; } .pr-xl-3, .px-xl-3 { padding-right: 1rem !important; } .pb-xl-3, .py-xl-3 { padding-bottom: 1rem !important; } .pl-xl-3, .px-xl-3 { padding-left: 1rem !important; } .p-xl-4 { padding: 1.5rem !important; } .pt-xl-4, .py-xl-4 { padding-top: 1.5rem !important; } .pr-xl-4, .px-xl-4 { padding-right: 1.5rem !important; } .pb-xl-4, .py-xl-4 { padding-bottom: 1.5rem !important; } .pl-xl-4, .px-xl-4 { padding-left: 1.5rem !important; } .p-xl-5 { padding: 3rem !important; } .pt-xl-5, .py-xl-5 { padding-top: 3rem !important; } .pr-xl-5, .px-xl-5 { padding-right: 3rem !important; } .pb-xl-5, .py-xl-5 { padding-bottom: 3rem !important; } .pl-xl-5, .px-xl-5 { padding-left: 3rem !important; } .m-xl-n1 { margin: -0.25rem !important; } .mt-xl-n1, .my-xl-n1 { margin-top: -0.25rem !important; } .mr-xl-n1, .mx-xl-n1 { margin-right: -0.25rem !important; } .mb-xl-n1, .my-xl-n1 { margin-bottom: -0.25rem !important; } .ml-xl-n1, .mx-xl-n1 { margin-left: -0.25rem !important; } .m-xl-n2 { margin: -0.5rem !important; } .mt-xl-n2, .my-xl-n2 { margin-top: -0.5rem !important; } .mr-xl-n2, .mx-xl-n2 { margin-right: -0.5rem !important; } .mb-xl-n2, .my-xl-n2 { margin-bottom: -0.5rem !important; } .ml-xl-n2, .mx-xl-n2 { margin-left: -0.5rem !important; } .m-xl-n3 { margin: -1rem !important; } .mt-xl-n3, .my-xl-n3 { margin-top: -1rem !important; } .mr-xl-n3, .mx-xl-n3 { margin-right: -1rem !important; } .mb-xl-n3, .my-xl-n3 { margin-bottom: -1rem !important; } .ml-xl-n3, .mx-xl-n3 { margin-left: -1rem !important; } .m-xl-n4 { margin: -1.5rem !important; } .mt-xl-n4, .my-xl-n4 { margin-top: -1.5rem !important; } .mr-xl-n4, .mx-xl-n4 { margin-right: -1.5rem !important; } .mb-xl-n4, .my-xl-n4 { margin-bottom: -1.5rem !important; } .ml-xl-n4, .mx-xl-n4 { margin-left: -1.5rem !important; } .m-xl-n5 { margin: -3rem !important; } .mt-xl-n5, .my-xl-n5 { margin-top: -3rem !important; } .mr-xl-n5, .mx-xl-n5 { margin-right: -3rem !important; } .mb-xl-n5, .my-xl-n5 { margin-bottom: -3rem !important; } .ml-xl-n5, .mx-xl-n5 { margin-left: -3rem !important; } .m-xl-auto { margin: auto !important; } .mt-xl-auto, .my-xl-auto { margin-top: auto !important; } .mr-xl-auto, .mx-xl-auto { margin-right: auto !important; } .mb-xl-auto, .my-xl-auto { margin-bottom: auto !important; } .ml-xl-auto, .mx-xl-auto { margin-left: auto !important; } } + +.text-monospace { /* font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; */ } + +.text-justify { text-align: justify !important; } + +.text-wrap { white-space: normal !important; } + +.text-nowrap { white-space: nowrap !important; } + +.text-truncate { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } + +.text-left { text-align: left !important; } + +.text-right { text-align: right !important; } + +.text-center { text-align: center !important; } + +@media (min-width: 576px) { .text-sm-left { text-align: left !important; } .text-sm-right { text-align: right !important; } .text-sm-center { text-align: center !important; } } + +@media (min-width: 768px) { .text-md-left { text-align: left !important; } .text-md-right { text-align: right !important; } .text-md-center { text-align: center !important; } } + +@media (min-width: 992px) { .text-lg-left { text-align: left !important; } .text-lg-right { text-align: right !important; } .text-lg-center { text-align: center !important; } } + +@media (min-width: 1200px) { .text-xl-left { text-align: left !important; } .text-xl-right { text-align: right !important; } .text-xl-center { text-align: center !important; } } + +.text-lowercase { text-transform: lowercase !important; } + +.text-uppercase { text-transform: uppercase !important; } + +.text-capitalize { text-transform: capitalize !important; } + +.font-weight-light { font-weight: 300 !important; } + +.font-weight-lighter { font-weight: lighter !important; } + +.font-weight-normal { font-weight: 400 !important; } + +.font-weight-bold { font-weight: 700 !important; } + +.font-weight-bolder { font-weight: bolder !important; } + +.font-italic { font-style: italic !important; } + +.text-white { color: #fff !important; } + +.text-primary { color: #007bff !important; } + +a.text-primary:hover, a.text-primary:focus { color: #0056b3 !important; } + +.text-secondary { color: #6c757d !important; } + +a.text-secondary:hover, a.text-secondary:focus { color: #494f54 !important; } + +.text-success { color: #28a745 !important; } + +a.text-success:hover, a.text-success:focus { color: #19692c !important; } + +.text-info { color: #17a2b8 !important; } + +a.text-info:hover, a.text-info:focus { color: #0f6674 !important; } + +.text-warning { color: #ffc107 !important; } + +a.text-warning:hover, a.text-warning:focus { color: #ba8b00 !important; } + +.text-danger { color: #dc3545 !important; } + +a.text-danger:hover, a.text-danger:focus { color: #a71d2a !important; } + +.text-light { color: #f8f9fa !important; } + +a.text-light:hover, a.text-light:focus { color: #cbd3da !important; } + +.text-dark { color: #343a40 !important; } + +a.text-dark:hover, a.text-dark:focus { color: #121416 !important; } + +.text-body { color: #212529 !important; } + +.text-muted { color: #6c757d !important; } + +.text-black-50 { color: rgba(0, 0, 0, 0.5) !important; } + +.text-white-50 { color: rgba(255, 255, 255, 0.5) !important; } + +.text-hide { font: 0/0 a; color: transparent; text-shadow: none; background-color: transparent; border: 0; } + +.text-decoration-none { text-decoration: none !important; } + +.text-reset { color: inherit !important; } + +.visible { visibility: visible !important; } + +.invisible { visibility: hidden !important; } + +@media print { *, *::before, *::after { text-shadow: none !important; box-shadow: none !important; } a:not(.btn) { text-decoration: underline; } abbr[title]::after { content: " (" attr(title) ")"; } pre { white-space: pre-wrap !important; } pre, blockquote { border: 1px solid #adb5bd; page-break-inside: avoid; } thead { display: table-header-group; } tr, img { page-break-inside: avoid; } p, h2, h3 { orphans: 3; widows: 3; } h2, h3 { page-break-after: avoid; } @page { size: a3; } body { min-width: 992px !important; } .container { min-width: 992px !important; } .navbar { display: none; border-bottom: 3px solid black; } .badge { border: 1px solid #000; } .table { border-collapse: collapse !important; } .table td, .table th { background-color: #fff !important; } .table-bordered th, .table-bordered td { border: 1px solid #dee2e6 !important; } .table-dark { color: inherit; } .table-dark th, .table-dark td, .table-dark thead th, .table-dark tbody + tbody { border-color: #dee2e6; } .table .thead-dark th { color: inherit; border-color: #dee2e6; } } + +/*# sourceMappingURL=main.css.map */ \ No newline at end of file diff --git a/assets/css/main.css.map b/assets/css/main.css.map new file mode 100644 index 00000000..0e87e197 --- /dev/null +++ b/assets/css/main.css.map @@ -0,0 +1,18 @@ +{ + "version": 3, + "file": "main.css", + "sources": [ + "main.scss", + "_sass/_poole.scss", + "_sass/_lanyon2.scss", + "_sass/_bootstrap.scss" + ], + "sourcesContent": [ + "@import \"poole\";\n@import \"lanyon2\";\n@import \"bootstrap\";", + "/*\n * ___\n * /\\_ \\\n * _____ ___ ___\\//\\ \\ __\n * /\\ '__`\\ / __`\\ / __`\\\\ \\ \\ /'__`\\\n * \\ \\ \\_\\ \\/\\ \\_\\ \\/\\ \\_\\ \\\\_\\ \\_/\\ __/\n * \\ \\ ,__/\\ \\____/\\ \\____//\\____\\ \\____\\\n * \\ \\ \\/ \\/___/ \\/___/ \\/____/\\/____/\n * \\ \\_\\\n * \\/_/\n *\n * Designed, built, and released under MIT license by @mdo. Learn more at\n * https://github.com/poole/poole.\n */\n\n\n/*\n * Contents\n *\n * Body resets\n * Custom type\n * Messages\n * Container\n * Masthead\n * Posts and pages\n * Pagination\n * Reverse layout\n * Themes\n */\n\n\n/*\n * Body resets\n *\n * Update the foundational and global aspects of the page.\n */\n\n* {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\n\nhtml,\nbody {\n margin: 0;\n padding: 0;\n}\n\nhtml {\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 16px;\n line-height: 1.5;\n}\n@media (min-width: 38em) {\n html {\n font-size: 20px;\n }\n}\n\nbody {\n color: #515151;\n background-color: #fff;\n -webkit-text-size-adjust: 100%;\n -ms-text-size-adjust: 100%;\n}\n\n/* No `:visited` state is required by default (browsers will use `a`) */\na {\n color: #268bd2;\n text-decoration: none;\n}\na strong {\n color: inherit;\n}\n/* `:focus` is linked to `:hover` for basic accessibility */\na:hover,\na:focus {\n text-decoration: underline;\n}\n\n/* Headings */\nh1, h2, h3, h4, h5, h6 {\n margin-bottom: .5rem;\n font-weight: bold;\n line-height: 1.25;\n color: #313131;\n text-rendering: optimizeLegibility;\n}\nh1 {\n font-size: 2rem;\n}\nh2 {\n margin-top: 1rem;\n font-size: 1.5rem;\n}\nh3 {\n margin-top: 1.5rem;\n font-size: 1.25rem;\n}\nh4, h5, h6 {\n margin-top: 1rem;\n font-size: 1rem;\n}\n\n/* Body text */\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nstrong {\n color: #303030;\n}\n\n\n/* Lists */\nul, ol, dl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\ndt {\n font-weight: bold;\n}\ndd {\n margin-bottom: .5rem;\n}\n\n/* Misc */\nhr {\n position: relative;\n margin: 1.5rem 0;\n border: 0;\n border-top: 1px solid #eee;\n border-bottom: 1px solid #fff;\n}\n\nabbr {\n font-size: 85%;\n font-weight: bold;\n color: #555;\n text-transform: uppercase;\n}\nabbr[title] {\n cursor: help;\n border-bottom: 1px dotted #e5e5e5;\n}\n\n/* Code */\ncode,\npre {\n font-family: Menlo, Monaco, \"Courier New\", monospace;\n}\ncode {\n padding: .25em .5em;\n font-size: 85%;\n color: #bf616a;\n background-color: #f9f9f9;\n border-radius: 3px;\n}\npre {\n display: block;\n margin-top: 0;\n margin-bottom: 1rem;\n padding: 1rem;\n font-size: .8rem;\n line-height: 1.4;\n white-space: pre;\n white-space: pre-wrap;\n word-break: break-all;\n word-wrap: break-word;\n background-color: #f9f9f9;\n}\npre code {\n padding: 0;\n font-size: 100%;\n color: inherit;\n background-color: transparent;\n}\n\n/* Pygments via Jekyll */\n.highlight {\n margin-bottom: 1rem;\n border-radius: 4px;\n}\n.highlight pre {\n margin-bottom: 0;\n}\n\n/* Gist via GitHub Pages */\n.gist .gist-file {\n font-family: Menlo, Monaco, \"Courier New\", monospace !important;\n}\n.gist .markdown-body {\n padding: 15px;\n}\n.gist pre {\n padding: 0;\n background-color: transparent;\n}\n.gist .gist-file .gist-data {\n font-size: .8rem !important;\n line-height: 1.4;\n}\n.gist code {\n padding: 0;\n color: inherit;\n background-color: transparent;\n border-radius: 0;\n}\n\n/* Quotes */\nblockquote {\n padding: .5rem 1rem;\n margin: .8rem 0;\n color: #7a7a7a;\n border-left: .25rem solid #e5e5e5;\n}\nblockquote p:last-child {\n margin-bottom: 0;\n}\n@media (min-width: 30em) {\n blockquote {\n padding-right: 5rem;\n padding-left: 1.25rem;\n }\n}\n\nimg {\n display: block;\n max-width: 100%;\n margin: 0 0 1rem;\n border-radius: 5px;\n}\n\n/* Tables */\ntable {\n margin-bottom: 1rem;\n width: 100%;\n border: 1px solid #e5e5e5;\n border-collapse: collapse;\n}\ntd,\nth {\n padding: .25rem .5rem;\n border: 1px solid #e5e5e5;\n}\ntbody tr:nth-child(odd) td,\ntbody tr:nth-child(odd) th {\n background-color: #f9f9f9;\n}\n\n\n/*\n * Custom type\n *\n * Extend paragraphs with `.lead` for larger introductory text.\n */\n\n.lead {\n font-size: 1.25rem;\n font-weight: 300;\n}\n\n\n/*\n * Messages\n *\n * Show alert messages to users. You may add it to single elements like a `
`,\n * or to a parent if there are multiple elements to show.\n */\n\n.message {\n margin-bottom: 1rem;\n padding: 1rem;\n color: #717171;\n background-color: #f9f9f9;\n}\n\n\n/*\n * Container\n *\n * Center the page content.\n */\n\n.container {\n max-width: 38rem;\n padding-left: 1rem;\n padding-right: 1rem;\n margin-left: auto;\n margin-right: auto;\n}\n\n\n/*\n * Masthead\n *\n * Super small header above the content for site name and short description.\n */\n\n.masthead {\n padding-top: 1rem;\n padding-bottom: 1rem;\n margin-bottom: 3rem;\n}\n.masthead-title {\n margin-top: 0;\n margin-bottom: 0;\n color: #505050;\n}\n.masthead-title a {\n color: #505050;\n}\n.masthead-title small {\n font-size: 75%;\n font-weight: 400;\n color: #c0c0c0;\n letter-spacing: 0;\n}\n\n\n/*\n * Posts and pages\n *\n * Each post is wrapped in `.post` and is used on default and post layouts. Each\n * page is wrapped in `.page` and is only used on the page layout.\n */\n\n.page,\n.post {\n /* margin-bottom: 4em; */\n}\n\n/* Blog post or page title */\n.page-title,\n.post-title,\n.post-title a {\n color: #303030;\n}\n.page-title,\n.post-title {\n margin-top: 0;\n}\n\n/* Meta data line below post title */\n.post-date {\n display: block;\n margin-top: -.5rem;\n margin-bottom: 1rem;\n color: #9a9a9a;\n}\n\n/* Related posts */\n.related {\n padding-top: 2rem;\n padding-bottom: 2rem;\n border-top: 1px solid #eee;\n}\n.related-posts {\n padding-left: 0;\n list-style: none;\n}\n.related-posts h3 {\n margin-top: 0;\n}\n.related-posts li small {\n font-size: 75%;\n color: #999;\n}\n.related-posts li a:hover {\n color: #268bd2;\n text-decoration: none;\n}\n.related-posts li a:hover small {\n color: inherit;\n}\n\n\n/*\n * Pagination\n *\n * Super lightweight (HTML-wise) blog pagination. `span`s are provide for when\n * there are no more previous or next posts to show.\n */\n\n.pagination {\n overflow: hidden; /* clearfix */\n margin-left: -1rem;\n margin-right: -1rem;\n font-family: \"PT Sans\", Helvetica, Arial, sans-serif;\n color: #ccc;\n text-align: center;\n}\n\n/* Pagination items can be `span`s or `a`s */\n.pagination-item {\n display: block;\n padding: 1rem;\n border: 1px solid #eee;\n}\n.pagination-item:first-child {\n margin-bottom: -1px;\n}\n\n/* Only provide a hover state for linked pagination items */\na.pagination-item:hover {\n background-color: #f5f5f5;\n}\n\n@media (min-width: 30em) {\n .pagination {\n margin: 3rem 0;\n }\n .pagination-item {\n float: left;\n width: 50%;\n }\n .pagination-item:first-child {\n margin-bottom: 0;\n border-top-left-radius: 4px;\n border-bottom-left-radius: 4px;\n }\n .pagination-item:last-child {\n margin-left: -1px;\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px;\n }\n}\n",
+ "/*\n * ___\n * /\\_ \\\n * \\//\\ \\ __ ___ __ __ ___ ___\n * \\ \\ \\ /'__`\\ /' _ `\\/\\ \\/\\ \\ / __`\\ /' _ `\\\n * \\_\\ \\_/\\ \\_\\.\\_/\\ \\/\\ \\ \\ \\_\\ \\/\\ \\_\\ \\/\\ \\/\\ \\\n * /\\____\\ \\__/.\\_\\ \\_\\ \\_\\/`____ \\ \\____/\\ \\_\\ \\_\\\n * \\/____/\\/__/\\/_/\\/_/\\/_/`/___/> \\/___/ \\/_/\\/_/\n * /\\___/\n * \\/__/\n *\n * Designed, built, and released under MIT license by @mdo. Learn more at\n * https://github.com/poole/lanyon.\n */\n\n\n/*\n * Contents\n *\n * Global resets\n * Masthead\n * Sidebar\n * Slide effect\n * Posts and pages\n * Pagination\n * Reverse layout\n * Themes\n */\n\n\n/*\n * Global resets\n *\n * Update the foundational and global aspects of the page.\n */\n\n/* Prevent scroll on narrow devices */\nhtml,\nbody {\n overflow-x: hidden;\n color: #444;\n}\n\nhtml {\n font-family: 'Montserrat', sans-serif;\n}\n\nh1 {\n font-family: 'Montserrat', sans-serif;\n font-weight: 300;\n color: #313131;\n letter-spacing: -2px;\n}\n\nh2, h3, h4, h5, h6 {\n font-family: 'Raleway', sans-serif;\n font-weight: 100;\n color: #313131;\n letter-spacing: -1.5px;\n margin-top: -10px;\n margin-bottom: 32px;\n}\n\na:hover {\n text-decoration: none !important;\n color: #0e6e90 !important;\n}\n\n#nav-items a::after {\n content: '';\n display: block;\n width: 0;\n height: 2px;\n background: #0e6e90;\n transition: width .3s;\n}\n\n#nav-items a:hover::after {\n width: 100%;\n /* line-height: .85; */\n}\n\n#home-body {\n // z-index: -1;\n}\n\n#home-body h2 {\n font-family: 'Montserrat', sans-serif;\n margin-top: 30px;\n font-weight: 300;\n color: #313131;\n letter-spacing: -1px;\n}\n\n#home-body .bottom-left {\n background-color: #fff0;\n}\n\np {\n font-family: 'Raleway', sans-serif;\n font-weight: 100;\n font-size: 16px;\n}\n\n#home-research-list li {\n font-family: 'Raleway', sans-serif;\n font-weight: 100;\n font-size: 16px;\n margin-bottom: 10px;\n}\n\nli {\n font-family: 'Raleway', sans-serif;\n font-weight: 100;\n font-size: 16px;\n}\n\ntable {\n font-family: 'Raleway', sans-serif;\n font-size: 16px;\n}\n\nb {\n font-weight: 500;\n}\n\n\n.omr-ocr-page {\n list-style-type: none;\n}\n\n\n/*\n * Wrapper\n *\n * The wrapper is used to position site content when the sidebar is toggled. We\n * use an outter wrap to position the sidebar without interferring with the\n * regular page content.\n */\n\n.wrap {\n position: relative;\n width: 100%;\n}\n\n.content {\n padding-top: 95px;\n}\n\n\n/*\n * Container\n *\n * Center the page content.\n */\n\n\n\n/*\n * Masthead\n *\n * Super small header above the content for site name and short description.\n */\n\n.masthead {\n padding-top: 1rem;\n padding-bottom: 1rem;\n margin-bottom: 3rem;\n border-bottom: 1px solid #eee;\n position: fixed;\n width: 100%;\n background-color: #ffffff;\n box-shadow: 1px 1px 10px #a8a6a6;\n}\n.masthead-title {\n margin-top: 0;\n margin-bottom: 0;\n color: #505050;\n}\n.masthead-title a {\n color: #505050;\n}\n/* .masthead-title small {\n font-size: 75%;\n font-weight: 400;\n color: #c0c0c0;\n letter-spacing: 0;\n} */\n\n.masthead-container {\n display: flex;\n padding: 0 6%;\n}\n\n.nav-wrap {\n margin: auto 0 auto auto;\n}\n\n@media (max-width: 48em) {\n .masthead-title {\n text-align: center;\n }\n /* .masthead-title small {\n display: none;\n } */\n}\n\n/*\n * Posts and pages\n *\n * Each post is wrapped in `.post` and is used on default and post layouts. Each\n * page is wrapped in `.page` and is only used on the page layout.\n */\n\n.page,\n.post {\n /* margin-bottom: 4em; */\n}\n\n/* Blog post or page title */\n.page-title,\n.post-title,\n.post-title a {\n color: #303030;\n}\n.page-title,\n.post-title {\n margin-top: 0;\n text-align: left;\n}\n\n.home-title {\n margin-top: 0;\n}\n\n/* Meta data line below post title */\n.post-date {\n display: block;\n margin-top: -.5rem;\n margin-bottom: 1rem;\n color: #9a9a9a;\n}\n\n/* Related posts */\n.related {\n padding-top: 2rem;\n padding-bottom: 2rem;\n border-top: 1px solid #eee;\n}\n.related-posts {\n padding-left: 0;\n list-style: none;\n}\n.related-posts h3 {\n margin-top: 0;\n}\n.related-posts li small {\n font-size: 75%;\n color: #999;\n}\n.related-posts li a:hover {\n color: #268bd2;\n text-decoration: none;\n}\n.related-posts li a:hover small {\n color: inherit;\n}\n\n\n/*\n * Pagination\n *\n * Super lightweight (HTML-wise) blog pagination. `span`s are provide for when\n * there are no more previous or next posts to show.\n */\n\n.pagination {\n overflow: hidden; /* clearfix */\n margin-left: -1rem;\n margin-right: -1rem;\n font-family: 'Montserrat', sans-serif;\n color: #ccc;\n text-align: center;\n}\n\n/* Pagination items can be `span`s or `a`s */\n.pagination-item {\n display: block;\n padding: 1rem;\n border: 1px solid #eee;\n}\n.pagination-item:first-child {\n margin-bottom: -1px;\n}\n\n/* Only provide a hover state for linked pagination items */\na.pagination-item:hover {\n background-color: #f5f5f5;\n}\n\n@media (min-width: 30em) {\n .pagination {\n margin: 3rem 0;\n }\n .pagination-item {\n float: left;\n width: 50%;\n }\n .pagination-item:first-child {\n margin-bottom: 0;\n border-top-left-radius: 4px;\n border-bottom-left-radius: 4px;\n }\n .pagination-item:last-child {\n margin-left: -1px;\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px;\n }\n}\n\n/* RESPONSIVE NAVBAR */\n\n/* Add a black background color to the top navigation */\n.topnav {\n overflow: hidden;\n box-sizing: border-box;\n\n /* width: 45%; */\n /* display: inline-flex; */\n}\n\n#nav-items .active a {\n color: #0e6e90;\n border-bottom: 2px solid currentColor;\n}\n\n/* Style the links inside the navigation bar */\n#nav-items a {\n/* float: left; */\n display: block;\n/*\n color: black;\n font-family: 'Raleway', sans-serif;\n text-align: center; */\n padding: 0 16px;\n /* font-size: 14px; */\n border-top: 2px solid transparent;\n border-bottom: 2px solid transparent;\n color: #1bb3e9;\n}\n\n\n/* Add an active class to highlight the current page */\n\n\n/* Hide the link that should open and close the topnav on small screens */\n.topnav .icon {\n display: none;\n}\n\n\n\n/*\n * Themes\n *\n * Apply custom color schemes by adding the appropriate class to the `body`.\n * Based on colors from Base16: http://chriskempson.github.io/base16/#default.\n */\n\n/* Red */\n.theme-base-08 .sidebar,\n.theme-base-08 .sidebar-toggle:active,\n.theme-base-08 #sidebar-checkbox:checked ~ .sidebar-toggle {\n background-color: #ac4142;\n}\n.theme-basecointa-08 .container a,\n.theme-base-08 .sidebar-toggle,\n.theme-base-08 .related-posts li a:hover {\n color: #ac4142;\n}\n\n/* Orange */\n.theme-base-09 .sidebar,\n.theme-base-09 .sidebar-toggle:active,\n.theme-base-09 #sidebar-checkbox:checked ~ .sidebar-toggle {\n background-color: #d28445;\n}\n.theme-base-09 .container a,\n.theme-base-09 .sidebar-toggle,\n.theme-base-09 .related-posts li a:hover {\n color: #d28445;\n}\n\n/* Yellow */\n.theme-base-0a .sidebar,\n.theme-base-0a .sidebar-toggle:active,\n.theme-base-0a #sidebar-checkbox:checked ~ .sidebar-toggle {\n background-color: #f4bf75;\n}\n.theme-base-0a .container a,\n.theme-base-0a .sidebar-toggle,\n.theme-base-0a .related-posts li a:hover {\n color: #f4bf75;\n}\n\n/* Green */\n.theme-base-0b .sidebar,\n.theme-base-0b .sidebar-toggle:active,\n.theme-base-0b #sidebar-checkbox:checked ~ .sidebar-toggle {\n background-color: #90a959;\n}\n.theme-base-0b .container a,\n.theme-base-0b .sidebar-toggle,\n.theme-base-0b .related-posts li a:hover {\n color: #90a959;\n}\n\n/* Cyan */\n.theme-base-0c .sidebar,\n.theme-base-0c .sidebar-toggle:active,\n.theme-base-0c #sidebar-checkbox:checked ~ .sidebar-toggle {\n background-color: #75b5aa;\n}\n.theme-base-0c .container a,\n.theme-base-0c .sidebar-toggle,\n.theme-base-0c .related-posts li a:hover {\n color: #75b5aa;\n}\n\n/* Blue */\n.theme-base-0d .sidebar,\n.theme-base-0d .sidebar-toggle:active,\n.theme-base-0d #sidebar-checkbox:checked ~ .sidebar-toggle {\n background-color: #6a9fb5;\n}\n.theme-base-0d .container a,\n.theme-base-0d .sidebar-toggle,\n.theme-base-0d .related-posts li a:hover {\n color: #6a9fb5;\n}\n\n/* Magenta */\n.theme-base-0e .sidebar,\n.theme-base-0e .sidebar-toggle:active,\n.theme-base-0e #sidebar-checkbox:checked ~ .sidebar-toggle {\n background-color: #aa759f;\n}\n.theme-base-0e .container a,\n.theme-base-0e .sidebar-toggle,\n.theme-base-0e .related-posts li a:hover {\n color: #aa759f;\n}\n\n/* Brown */\n.theme-base-0f .sidebar,\n.theme-base-0f .sidebar-toggle:active,\n.theme-base-0f #sidebar-checkbox:checked ~ .sidebar-toggle {\n background-color: #8f5536;\n}\n.theme-base-0f .container a,\n.theme-base-0f .sidebar-toggle,\n.theme-base-0f .related-posts li a:hover {\n color: #8f5536;\n}\n\n/* Savage Custom - McGill Red */\n\n.theme-base-mr .sidebar,\n.theme-base-mr .sidebar-toggle:active,\n.theme-base-mr #sidebar-checkbox:checked ~ .sidebar-toggle {\n background-color: #ed1b2f;\n}\n.theme-base-mr .container a,\n.theme-base-mr .sidebar-toggle,\n.theme-base-mr .related-posts li a:hover {\n color: #ed1b2f;\n}\n\n/* Savage Custom - Original DDMAL Blue */\n\n.theme-base-db .sidebar,\n.theme-base-db .sidebar-toggle:active,\n.theme-base-db #sidebar-checkbox:checked ~ .sidebar-toggle {\n background-color: #1bb3e9;\n}\n.theme-base-db .container a,\n.theme-base-db .masthead-container a,\n.theme-base-db .sidebar-toggle,\n.theme-base-db .related-posts li a:hover {\n color: #1bb3e9;\n}\n\n\n/* Image container */\n\n.pic-container {\n position: relative;\n color: white;\n z-index: -1;\n display: table;\n margin: auto;\n}\n\n.center-img {\n display: block;\n margin-left: auto;\n margin-right: auto;\n}\n\n.bottom-left {\n position: absolute;\n bottom: 12px;\n right: 12px;\n background-color: #1bb3e9bd;\n padding: 5px 8px;\n border-radius: 5px;\n}\n\n/* Added Savage */\n\n.body-content {\n z-index: -1;\n}\n\nhr {\n z-index: -1;\n}\n\n.ulist-html {\n font-family: \"Raleway\", Helvetica, Arial, sans-serif;\n}\n\n.top-nav-space {\n padding-top: 72.05px;\n}\n\n.wrap {\n min-height: calc(100vh - 109px);\n}\n\n#sticky {\n width: 100%;\n height: 89px;\n background-color: #c7cfdb;\n /* margin-top: -89px; */\n}\n\n.footer-content {\n color: white;\n text-align: center;\n}\n\n.mcgill-img-footer {\n width: calc(936px / 2.5);\n height: calc(134px / 2.5);\n margin-left: 0;\n}\n\n.ddmal-img-footer {\n margin: auto 0 auto auto;\n}\n\n.footer-img-wrap {\n padding-top: calc((89px - 134px / 2.5)/2);\n padding-left: 4%;\n padding-right: 4%;\n padding-bottom: 0;\n margin-top: -10px;\n margin-bottom: 0;\n display: flex;\n}\n\n\nimg {\n // margin-left: auto;\n // margin-right: auto;\n // display: block;\n margin-bottom: 0;\n // max-height: 400px;\n}\n\n/* #home-body img {\n max-height: 400px;\n} */\n\n.post-container {\n margin: 15px 0;\n /* border: 2px solid black; */\n /* border-radius: 5px; */\n\n}\n\n.post-title {\n display: flex;\n padding: 8px;\n justify-content: space-between;\n}\n\n.post-excerpt {\n margin: auto;\n padding: 15px;\n}\n\n.subtitle {\n margin-bottom: 20px;\n}\n\n\n\n/* Savage responsive params */\n\n/* When the screen is less than 600 pixels wide, hide all links, except for the first one (\"Home\"). Show the link that contains should open and close the topnav (.icon) */\n@media screen and (max-width: 850px) {\n .topnav .btn {display: none;}\n .topnav a.icon {\n float: right;\n display: block;\n }\n}\n\n/* The \"responsive\" class is added to the topnav with JavaScript when the user clicks on the icon. This class makes the topnav look good on small screens (display the links vertically instead of horizontally) */\n@media screen and (max-width: 850px) {\n\n #nav-items a {\n width: 185px;\n }\n\n #nav-items a:hover::after {\n width: 100px;\n /* line-height: .85; */\n }\n\n .topnav.responsive {\n position: relative;\n }\n .topnav.responsive a.icon {\n position: absolute;\n right: 0;\n top: 0;\n }\n .topnav.responsive .btn {\n float: none;\n display: block;\n text-align: right;\n margin-right: 60px;\n margin-bottom: 8px;\n padding: auto;\n /* margin-top: 8px; */\n text-decoration: none;\n letter-spacing: .7px;\n }\n .topnav.responsive .btn:hover {\n border-bottom: 2px solid transparent !important;\n }\n .active a {\n border-top: 2px solid transparent !important;\n border-bottom: 2px solid transparent !important;\n /* background-color: #0e6e9066; */\n /* border-radius: 4px; */\n color: #0e6e90;\n border-left: 3px solid #0e6e90;\n }\n\n .nav-item {\n padding: 3.5px 0;\n }\n\n .title-wrap {\n margin-top: 2.7px;\n }\n}\n\n@media (max-width: 650px) {\n .mcgill-img-footer {\n width: calc(936px / 4);\n height: calc(134px / 4);\n }\n .footer-img-wrap {\n padding-top: calc((89px - 134px / 4)/2);\n }\n}\n\n.container {\n max-width: 28rem;\n}\n@media (min-width: 38em) {\n .container {\n max-width: 32rem;\n }\n\n}\n@media (min-width: 896px) {\n .container {\n max-width: 750px;\n }\n /* .bottom-left {\n right: 25px;\n } */\n}\n@media (min-width: 1200px) {\n .container {\n max-width: 1170px;\n }\n /* .bottom-left {\n right: 100px;\n } */\n}\n\n@media (max-width: 420px) {\n p, body li, #home-research-list li {\n font-size: 14px;\n }\n}\n\n@media (min-width: 608px) {\n .page-title, .home-title {\n margin-top: 20px;\n }\n}\n\n@media (max-width: 608px) {\n .bottom-left {\n bottom: 6px;\n right: 6px;\n padding: 2px 5px;\n }\n .wrap {\n min-height: calc(100vh - 99px);\n }\n}\n\n.logo_header {\n display: flex;\n align-items: center;\n}\n\n/* .social-links {\n margin-left: 60px;\n} */\n\n.current-focus p:first-child {\n margin-left: 10px;\n font-size: 24px;\n // width: 55%;\n margin-bottom: 0;\n}\n\n.current-focus .focus {\n font-size: 18px;\n margin-left: 15px;\n}\n\n.people-title {\n font-weight: normal;\n margin-bottom: 25px;\n}\n\n.lab_member {\n min-height: 500px;\n\n}\n\n.lab_member_subtitles {\n font-weight: normal;\n /* margin-left: 5px; */\n letter-spacing: -0.3px;\n margin-bottom: 15px;\n}\n\n.research-interests {\n width: 55%;\n}\n\n.research-interests ul {\n list-style: none;\n display: inline-flex;\n flex-wrap: wrap;\n padding-left: 10px;\n}\n\n.research-interests ul li {\n margin-bottom: 10px;\n margin-right: 10px;\n padding: 3px 10px;\n border-radius: 4px;\n}\n\n.member_photo_list {\n max-width: 80px;\n margin-bottom: 0;\n}\n\n.member-list {\n list-style: none;\n padding-left: 10px;\n}\n\n.member-list li {\n border-radius: 4px;\n /* padding: 10px 20px; */\n box-shadow: 0 1px 3px rgba(0,0,0,0.08);\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 450px;\n}\n.member-list li:last-child {\n margin-bottom: 50px;\n}\n\n.member-list li a:first-child {\n display:block;\n padding: 36px 20px;\n flex: 1;\n font-size: 18px;\n}\n.member-list li a:nth-child(2) {\n padding: 10px 10px 10px 0px;\n}\n\n\n.research-interests ul li:nth-child(n+1) {\n background-color: #ADBDFF;\n}\n.research-interests ul li:nth-child(2n) {\n background-color: #D8D8F6;\n}\n.research-interests ul li:nth-child(3n) {\n background-color: #FFC0BF;\n}\n.research-interests ul li:nth-child(4n) {\n background-color: #C4E7D4;\n}\n\n\n\n.lab_member_flex {\n margin-bottom: 20px;\n}\n\n.lab_member .img-wrap .profile-photo {\n\n box-shadow: 0 1px 3px rgba(0,0,0,0.08);\n}\n\n.cv-icon {\n /* position: absolute; */\n width: 30px;\n /* margin-left: 30px; */\n /* right: -20px; */\n padding-top: 10px;\n margin: 0;\n margin-left: 30px;\n}\n\n\n\n\n\n\n.social-links {\n position: relative;\n display: flex;\n flex-direction: column;\n margin-top: 20px;\n}\n\n.social__link:first-child {\n /* margin-left: 10px; */\n}\n\n.social__link {\n margin-bottom: 5px;\n}\n\n.social-links .social__link {\n margin-right: 10px;\n}\n\n.publications ul {\n list-style: none;\n padding-left: 10px;\n}\n\n.publications ul li {\n margin-bottom: 15px;\n}\n\n.member-page {\n display: grid;\n grid-template-columns: 50% 50%;\n grid-template-rows: auto min-content auto;\n // grid-row-gap: 20px;\n .logo_header {\n grid-column: 1 / 3;\n }\n .lab_member_flex {\n grid-row: 2;\n grid-column: 1;\n }\n .img-wrap {\n position: relative;\n // top: 100px;\n // right: 80px;\n display: flex;\n // max-width: 350px;\n grid-row: 2 / 4;\n grid-column: 2;\n justify-self: center;\n margin-bottom: 40px;\n max-width: 100%;\n .profile-photo {\n max-width: 350px;\n max-height: 350px;\n margin-right: 10px;\n }\n }\n .lab_member_bio {\n // width: 55%;\n // min-height: 360px;\n text-align: justify;\n grid-row: 3;\n grid-column: 1;\n }\n .flex-wrap {\n display: flex;\n grid-row: 4;\n grid-column: 1 / 3;\n\n }\n @media (max-width: 1200px) {\n .flex-wrap {\n .research-interests {\n width: auto;\n }\n }\n .img-wrap {\n justify-self: end;\n }\n }\n @media (max-width: 992px) {\n grid-template-columns: 60% 40%;\n grid-template-rows: auto;\n grid-column-gap: 20px;\n .img-wrap {\n .profile-photo {\n max-width: 250px;\n max-height: 250px;\n margin-right: 10px;\n }\n }\n }\n @media (max-width: 776px) {\n grid-template-columns: 100%;\n grid-template-rows: auto;\n grid-column-gap: 0;\n\n .img-wrap {\n grid-row: 3;\n grid-column: 1;\n max-width: 70%;\n flex-direction: column;\n align-items: center;\n justify-self: center;\n margin-bottom: 20px;\n .profile-photo {\n max-width: 350px;\n max-height: 350px;\n margin-right: 0;\n }\n .social-links {\n flex-direction: row;\n }\n }\n .lab_member_bio {\n // width: 55%;\n // min-height: 360px;\n text-align: justify;\n grid-row: 4;\n grid-column: 1;\n }\n .flex-wrap {\n display: flex;\n grid-row: 5;\n grid-column: 1;\n }\n }\n @media (max-width: 608px) {\n .logo_header {\n align-items: baseline;\n }\n .img-wrap {\n .profile-photo {\n // width: 80%;\n }\n }\n }\n @media (max-width: 400px) {\n .logo_header {\n align-items: baseline;\n }\n .img-wrap {\n .profile-photo {\n max-width: 250px;\n max-height: 250px;\n }\n }\n }\n // grid-template-rows: auto;\n}\n\n@media (max-width: 776px) {\n .member-list li {\n width: auto;\n }\n}\n",
+ "/*!\n * Bootstrap v4.2.1 (https://getbootstrap.com/)\n * Copyright 2011-2018 The Bootstrap Authors\n * Copyright 2011-2018 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n:root {\n --blue: #007bff;\n --indigo: #6610f2;\n --purple: #6f42c1;\n --pink: #e83e8c;\n --red: #dc3545;\n --orange: #fd7e14;\n --yellow: #ffc107;\n --green: #28a745;\n --teal: #20c997;\n --cyan: #17a2b8;\n --white: #fff;\n --gray: #6c757d;\n --gray-dark: #343a40;\n --primary: #007bff;\n --secondary: #6c757d;\n --success: #28a745;\n --info: #17a2b8;\n --warning: #ffc107;\n --danger: #dc3545;\n --light: #f8f9fa;\n --dark: #343a40;\n --breakpoint-xs: 0;\n --breakpoint-sm: 576px;\n --breakpoint-md: 768px;\n --breakpoint-lg: 992px;\n --breakpoint-xl: 1200px;\n /* --font-family-sans-serif: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\"; */\n /* --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace; */\n}\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\nhtml {\n /* font-family: sans-serif; */\n line-height: 1.15;\n -webkit-text-size-adjust: 100%;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\narticle, aside, figcaption, figure, footer, header, hgroup, main, nav, section {\n display: block;\n}\n\nbody {\n margin: 0;\n /* font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\"; */\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #212529;\n text-align: left;\n background-color: #fff;\n}\n\n[tabindex=\"-1\"]:focus {\n outline: 0 !important;\n}\n\nhr {\n box-sizing: content-box;\n height: 0;\n overflow: visible;\n}\n\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: 0.5rem;\n}\n\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-original-title] {\n text-decoration: underline;\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n cursor: help;\n border-bottom: 0;\n text-decoration-skip-ink: none;\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: 700;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0;\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\n/* b,\nstrong {\n font-weight: bolder;\n} */\n\nsmall {\n font-size: 80%;\n}\n\nsub,\nsup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -.25em;\n}\n\nsup {\n top: -.5em;\n}\n\na {\n color: #007bff;\n text-decoration: none;\n background-color: transparent;\n}\n\na:hover {\n color: #0056b3;\n text-decoration: underline;\n}\n\na:not([href]):not([tabindex]) {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):focus {\n outline: 0;\n}\n\npre,\ncode,\nkbd,\nsamp {\n /* font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace; */\n font-size: 1em;\n}\n\npre {\n margin-top: 0;\n margin-bottom: 1rem;\n overflow: auto;\n}\n\nfigure {\n margin: 0 0 1rem;\n}\n\nimg {\n vertical-align: middle;\n border-style: none;\n}\n\nsvg {\n overflow: hidden;\n vertical-align: middle;\n}\n\ntable {\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n color: #6c757d;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n text-align: inherit;\n}\n\nlabel {\n display: inline-block;\n margin-bottom: 0.5rem;\n}\n\nbutton {\n border-radius: 0;\n}\n\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0;\n /* font-family: inherit; */\n font-size: inherit;\n line-height: inherit;\n}\n\nbutton,\ninput {\n overflow: visible;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n box-sizing: border-box;\n padding: 0;\n}\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n -webkit-appearance: listbox;\n}\n\ntextarea {\n overflow: auto;\n resize: vertical;\n}\n\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n max-width: 100%;\n padding: 0;\n margin-bottom: .5rem;\n font-size: 1.5rem;\n line-height: inherit;\n color: inherit;\n white-space: normal;\n}\n\nprogress {\n vertical-align: baseline;\n}\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=\"search\"] {\n outline-offset: -2px;\n -webkit-appearance: none;\n}\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-file-upload-button {\n font: inherit;\n -webkit-appearance: button;\n}\n\noutput {\n display: inline-block;\n}\n\nsummary {\n display: list-item;\n cursor: pointer;\n}\n\ntemplate {\n display: none;\n}\n\n[hidden] {\n display: none !important;\n}\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n margin-bottom: 0.5rem;\n /* font-family: inherit; */\n font-weight: 500;\n line-height: 1.2;\n color: inherit;\n}\n\nh1, .h1 {\n font-size: 2.5rem;\n}\n\nh2, .h2 {\n font-size: 2rem;\n}\n\nh3, .h3 {\n font-size: 1.75rem;\n}\n\nh4, .h4 {\n font-size: 1.5rem;\n}\n\nh5, .h5 {\n font-size: 1.25rem;\n}\n\nh6, .h6 {\n font-size: 1rem;\n}\n\n.lead {\n font-size: 1.25rem;\n font-weight: 300;\n}\n\n.display-1 {\n font-size: 6rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.display-2 {\n font-size: 5.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.display-3 {\n font-size: 4.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.display-4 {\n font-size: 3.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\nhr {\n margin-top: 1rem;\n margin-bottom: 1rem;\n border: 0;\n border-top: 1px solid rgba(0, 0, 0, 0.1);\n}\n\nsmall,\n.small {\n font-size: 80%;\n font-weight: 400;\n}\n\nmark,\n.mark {\n padding: 0.2em;\n background-color: #fcf8e3;\n}\n\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n\n.list-inline {\n padding-left: 0;\n list-style: none;\n}\n\n.list-inline-item {\n display: inline-block;\n}\n\n.list-inline-item:not(:last-child) {\n margin-right: 0.5rem;\n}\n\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\n\n.blockquote {\n margin-bottom: 1rem;\n font-size: 1.25rem;\n}\n\n.blockquote-footer {\n display: block;\n font-size: 80%;\n color: #6c757d;\n}\n\n.blockquote-footer::before {\n content: \"\\2014\\00A0\";\n}\n\n.img-fluid {\n max-width: 100%;\n height: auto;\n}\n\n.img-thumbnail {\n padding: 0.25rem;\n background-color: #fff;\n border: 1px solid #dee2e6;\n border-radius: 0.25rem;\n max-width: 100%;\n height: auto;\n}\n\n.figure {\n display: inline-block;\n}\n\n.figure-img {\n margin-bottom: 0.5rem;\n line-height: 1;\n}\n\n.figure-caption {\n font-size: 90%;\n color: #6c757d;\n}\n\ncode {\n font-size: 87.5%;\n color: #e83e8c;\n word-break: break-word;\n}\n\na > code {\n color: inherit;\n}\n\nkbd {\n padding: 0.2rem 0.4rem;\n font-size: 87.5%;\n color: #fff;\n background-color: #212529;\n border-radius: 0.2rem;\n}\n\nkbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: 700;\n}\n\npre {\n display: block;\n font-size: 87.5%;\n color: #212529;\n}\n\npre code {\n font-size: inherit;\n color: inherit;\n word-break: normal;\n}\n\n.pre-scrollable {\n max-height: 340px;\n overflow-y: scroll;\n}\n\n.container {\n position: relative;\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n}\n\n@media (min-width: 576px) {\n .container {\n max-width: 540px;\n }\n}\n\n@media (min-width: 768px) {\n .container {\n max-width: 720px;\n }\n}\n\n@media (min-width: 992px) {\n .container {\n max-width: 960px;\n }\n}\n\n@media (min-width: 1200px) {\n .container {\n max-width: 1140px;\n }\n}\n\n.container-fluid {\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n}\n\n.row {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n margin-right: -15px;\n margin-left: -15px;\n}\n\n.no-gutters {\n margin-right: 0;\n margin-left: 0;\n}\n\n.no-gutters > .col,\n.no-gutters > [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n}\n\n.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,\n.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,\n.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,\n.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,\n.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,\n.col-xl-auto {\n position: relative;\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n.col {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -ms-flex-positive: 1;\n flex-grow: 1;\n max-width: 100%;\n}\n\n.col-auto {\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n}\n\n.col-1 {\n -ms-flex: 0 0 8.333333%;\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n}\n\n.col-2 {\n -ms-flex: 0 0 16.666667%;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n}\n\n.col-3 {\n -ms-flex: 0 0 25%;\n flex: 0 0 25%;\n max-width: 25%;\n}\n\n.col-4 {\n -ms-flex: 0 0 33.333333%;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n}\n\n.col-5 {\n -ms-flex: 0 0 41.666667%;\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n}\n\n.col-6 {\n -ms-flex: 0 0 50%;\n flex: 0 0 50%;\n max-width: 50%;\n}\n\n.col-7 {\n -ms-flex: 0 0 58.333333%;\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n}\n\n.col-8 {\n -ms-flex: 0 0 66.666667%;\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n}\n\n.col-9 {\n -ms-flex: 0 0 75%;\n flex: 0 0 75%;\n max-width: 75%;\n}\n\n.col-10 {\n -ms-flex: 0 0 83.333333%;\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n}\n\n.col-11 {\n -ms-flex: 0 0 91.666667%;\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n}\n\n.col-12 {\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%;\n}\n\n.order-first {\n -ms-flex-order: -1;\n order: -1;\n}\n\n.order-last {\n -ms-flex-order: 13;\n order: 13;\n}\n\n.order-0 {\n -ms-flex-order: 0;\n order: 0;\n}\n\n.order-1 {\n -ms-flex-order: 1;\n order: 1;\n}\n\n.order-2 {\n -ms-flex-order: 2;\n order: 2;\n}\n\n.order-3 {\n -ms-flex-order: 3;\n order: 3;\n}\n\n.order-4 {\n -ms-flex-order: 4;\n order: 4;\n}\n\n.order-5 {\n -ms-flex-order: 5;\n order: 5;\n}\n\n.order-6 {\n -ms-flex-order: 6;\n order: 6;\n}\n\n.order-7 {\n -ms-flex-order: 7;\n order: 7;\n}\n\n.order-8 {\n -ms-flex-order: 8;\n order: 8;\n}\n\n.order-9 {\n -ms-flex-order: 9;\n order: 9;\n}\n\n.order-10 {\n -ms-flex-order: 10;\n order: 10;\n}\n\n.order-11 {\n -ms-flex-order: 11;\n order: 11;\n}\n\n.order-12 {\n -ms-flex-order: 12;\n order: 12;\n}\n\n.offset-1 {\n margin-left: 8.333333%;\n}\n\n.offset-2 {\n margin-left: 16.666667%;\n}\n\n.offset-3 {\n margin-left: 25%;\n}\n\n.offset-4 {\n margin-left: 33.333333%;\n}\n\n.offset-5 {\n margin-left: 41.666667%;\n}\n\n.offset-6 {\n margin-left: 50%;\n}\n\n.offset-7 {\n margin-left: 58.333333%;\n}\n\n.offset-8 {\n margin-left: 66.666667%;\n}\n\n.offset-9 {\n margin-left: 75%;\n}\n\n.offset-10 {\n margin-left: 83.333333%;\n}\n\n.offset-11 {\n margin-left: 91.666667%;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -ms-flex-positive: 1;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-sm-auto {\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n .col-sm-1 {\n -ms-flex: 0 0 8.333333%;\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-sm-2 {\n -ms-flex: 0 0 16.666667%;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-sm-3 {\n -ms-flex: 0 0 25%;\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-sm-4 {\n -ms-flex: 0 0 33.333333%;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-sm-5 {\n -ms-flex: 0 0 41.666667%;\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-sm-6 {\n -ms-flex: 0 0 50%;\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-sm-7 {\n -ms-flex: 0 0 58.333333%;\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-sm-8 {\n -ms-flex: 0 0 66.666667%;\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-sm-9 {\n -ms-flex: 0 0 75%;\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-sm-10 {\n -ms-flex: 0 0 83.333333%;\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-sm-11 {\n -ms-flex: 0 0 91.666667%;\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-sm-12 {\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-sm-first {\n -ms-flex-order: -1;\n order: -1;\n }\n .order-sm-last {\n -ms-flex-order: 13;\n order: 13;\n }\n .order-sm-0 {\n -ms-flex-order: 0;\n order: 0;\n }\n .order-sm-1 {\n -ms-flex-order: 1;\n order: 1;\n }\n .order-sm-2 {\n -ms-flex-order: 2;\n order: 2;\n }\n .order-sm-3 {\n -ms-flex-order: 3;\n order: 3;\n }\n .order-sm-4 {\n -ms-flex-order: 4;\n order: 4;\n }\n .order-sm-5 {\n -ms-flex-order: 5;\n order: 5;\n }\n .order-sm-6 {\n -ms-flex-order: 6;\n order: 6;\n }\n .order-sm-7 {\n -ms-flex-order: 7;\n order: 7;\n }\n .order-sm-8 {\n -ms-flex-order: 8;\n order: 8;\n }\n .order-sm-9 {\n -ms-flex-order: 9;\n order: 9;\n }\n .order-sm-10 {\n -ms-flex-order: 10;\n order: 10;\n }\n .order-sm-11 {\n -ms-flex-order: 11;\n order: 11;\n }\n .order-sm-12 {\n -ms-flex-order: 12;\n order: 12;\n }\n .offset-sm-0 {\n margin-left: 0;\n }\n .offset-sm-1 {\n margin-left: 8.333333%;\n }\n .offset-sm-2 {\n margin-left: 16.666667%;\n }\n .offset-sm-3 {\n margin-left: 25%;\n }\n .offset-sm-4 {\n margin-left: 33.333333%;\n }\n .offset-sm-5 {\n margin-left: 41.666667%;\n }\n .offset-sm-6 {\n margin-left: 50%;\n }\n .offset-sm-7 {\n margin-left: 58.333333%;\n }\n .offset-sm-8 {\n margin-left: 66.666667%;\n }\n .offset-sm-9 {\n margin-left: 75%;\n }\n .offset-sm-10 {\n margin-left: 83.333333%;\n }\n .offset-sm-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 768px) {\n .col-md {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -ms-flex-positive: 1;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-md-auto {\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n .col-md-1 {\n -ms-flex: 0 0 8.333333%;\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-md-2 {\n -ms-flex: 0 0 16.666667%;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-md-3 {\n -ms-flex: 0 0 25%;\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-md-4 {\n -ms-flex: 0 0 33.333333%;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-md-5 {\n -ms-flex: 0 0 41.666667%;\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-md-6 {\n -ms-flex: 0 0 50%;\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-md-7 {\n -ms-flex: 0 0 58.333333%;\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-md-8 {\n -ms-flex: 0 0 66.666667%;\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-md-9 {\n -ms-flex: 0 0 75%;\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-md-10 {\n -ms-flex: 0 0 83.333333%;\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-md-11 {\n -ms-flex: 0 0 91.666667%;\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-md-12 {\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-md-first {\n -ms-flex-order: -1;\n order: -1;\n }\n .order-md-last {\n -ms-flex-order: 13;\n order: 13;\n }\n .order-md-0 {\n -ms-flex-order: 0;\n order: 0;\n }\n .order-md-1 {\n -ms-flex-order: 1;\n order: 1;\n }\n .order-md-2 {\n -ms-flex-order: 2;\n order: 2;\n }\n .order-md-3 {\n -ms-flex-order: 3;\n order: 3;\n }\n .order-md-4 {\n -ms-flex-order: 4;\n order: 4;\n }\n .order-md-5 {\n -ms-flex-order: 5;\n order: 5;\n }\n .order-md-6 {\n -ms-flex-order: 6;\n order: 6;\n }\n .order-md-7 {\n -ms-flex-order: 7;\n order: 7;\n }\n .order-md-8 {\n -ms-flex-order: 8;\n order: 8;\n }\n .order-md-9 {\n -ms-flex-order: 9;\n order: 9;\n }\n .order-md-10 {\n -ms-flex-order: 10;\n order: 10;\n }\n .order-md-11 {\n -ms-flex-order: 11;\n order: 11;\n }\n .order-md-12 {\n -ms-flex-order: 12;\n order: 12;\n }\n .offset-md-0 {\n margin-left: 0;\n }\n .offset-md-1 {\n margin-left: 8.333333%;\n }\n .offset-md-2 {\n margin-left: 16.666667%;\n }\n .offset-md-3 {\n margin-left: 25%;\n }\n .offset-md-4 {\n margin-left: 33.333333%;\n }\n .offset-md-5 {\n margin-left: 41.666667%;\n }\n .offset-md-6 {\n margin-left: 50%;\n }\n .offset-md-7 {\n margin-left: 58.333333%;\n }\n .offset-md-8 {\n margin-left: 66.666667%;\n }\n .offset-md-9 {\n margin-left: 75%;\n }\n .offset-md-10 {\n margin-left: 83.333333%;\n }\n .offset-md-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 992px) {\n .col-lg {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -ms-flex-positive: 1;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-lg-auto {\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n .col-lg-1 {\n -ms-flex: 0 0 8.333333%;\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-lg-2 {\n -ms-flex: 0 0 16.666667%;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-lg-3 {\n -ms-flex: 0 0 25%;\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-lg-4 {\n -ms-flex: 0 0 33.333333%;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-lg-5 {\n -ms-flex: 0 0 41.666667%;\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-lg-6 {\n -ms-flex: 0 0 50%;\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-lg-7 {\n -ms-flex: 0 0 58.333333%;\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-lg-8 {\n -ms-flex: 0 0 66.666667%;\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-lg-9 {\n -ms-flex: 0 0 75%;\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-lg-10 {\n -ms-flex: 0 0 83.333333%;\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-lg-11 {\n -ms-flex: 0 0 91.666667%;\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-lg-12 {\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-lg-first {\n -ms-flex-order: -1;\n order: -1;\n }\n .order-lg-last {\n -ms-flex-order: 13;\n order: 13;\n }\n .order-lg-0 {\n -ms-flex-order: 0;\n order: 0;\n }\n .order-lg-1 {\n -ms-flex-order: 1;\n order: 1;\n }\n .order-lg-2 {\n -ms-flex-order: 2;\n order: 2;\n }\n .order-lg-3 {\n -ms-flex-order: 3;\n order: 3;\n }\n .order-lg-4 {\n -ms-flex-order: 4;\n order: 4;\n }\n .order-lg-5 {\n -ms-flex-order: 5;\n order: 5;\n }\n .order-lg-6 {\n -ms-flex-order: 6;\n order: 6;\n }\n .order-lg-7 {\n -ms-flex-order: 7;\n order: 7;\n }\n .order-lg-8 {\n -ms-flex-order: 8;\n order: 8;\n }\n .order-lg-9 {\n -ms-flex-order: 9;\n order: 9;\n }\n .order-lg-10 {\n -ms-flex-order: 10;\n order: 10;\n }\n .order-lg-11 {\n -ms-flex-order: 11;\n order: 11;\n }\n .order-lg-12 {\n -ms-flex-order: 12;\n order: 12;\n }\n .offset-lg-0 {\n margin-left: 0;\n }\n .offset-lg-1 {\n margin-left: 8.333333%;\n }\n .offset-lg-2 {\n margin-left: 16.666667%;\n }\n .offset-lg-3 {\n margin-left: 25%;\n }\n .offset-lg-4 {\n margin-left: 33.333333%;\n }\n .offset-lg-5 {\n margin-left: 41.666667%;\n }\n .offset-lg-6 {\n margin-left: 50%;\n }\n .offset-lg-7 {\n margin-left: 58.333333%;\n }\n .offset-lg-8 {\n margin-left: 66.666667%;\n }\n .offset-lg-9 {\n margin-left: 75%;\n }\n .offset-lg-10 {\n margin-left: 83.333333%;\n }\n .offset-lg-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 1200px) {\n .col-xl {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -ms-flex-positive: 1;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-xl-auto {\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n .col-xl-1 {\n -ms-flex: 0 0 8.333333%;\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-xl-2 {\n -ms-flex: 0 0 16.666667%;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-xl-3 {\n -ms-flex: 0 0 25%;\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-xl-4 {\n -ms-flex: 0 0 33.333333%;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-xl-5 {\n -ms-flex: 0 0 41.666667%;\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-xl-6 {\n -ms-flex: 0 0 50%;\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-xl-7 {\n -ms-flex: 0 0 58.333333%;\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-xl-8 {\n -ms-flex: 0 0 66.666667%;\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-xl-9 {\n -ms-flex: 0 0 75%;\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-xl-10 {\n -ms-flex: 0 0 83.333333%;\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-xl-11 {\n -ms-flex: 0 0 91.666667%;\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-xl-12 {\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-xl-first {\n -ms-flex-order: -1;\n order: -1;\n }\n .order-xl-last {\n -ms-flex-order: 13;\n order: 13;\n }\n .order-xl-0 {\n -ms-flex-order: 0;\n order: 0;\n }\n .order-xl-1 {\n -ms-flex-order: 1;\n order: 1;\n }\n .order-xl-2 {\n -ms-flex-order: 2;\n order: 2;\n }\n .order-xl-3 {\n -ms-flex-order: 3;\n order: 3;\n }\n .order-xl-4 {\n -ms-flex-order: 4;\n order: 4;\n }\n .order-xl-5 {\n -ms-flex-order: 5;\n order: 5;\n }\n .order-xl-6 {\n -ms-flex-order: 6;\n order: 6;\n }\n .order-xl-7 {\n -ms-flex-order: 7;\n order: 7;\n }\n .order-xl-8 {\n -ms-flex-order: 8;\n order: 8;\n }\n .order-xl-9 {\n -ms-flex-order: 9;\n order: 9;\n }\n .order-xl-10 {\n -ms-flex-order: 10;\n order: 10;\n }\n .order-xl-11 {\n -ms-flex-order: 11;\n order: 11;\n }\n .order-xl-12 {\n -ms-flex-order: 12;\n order: 12;\n }\n .offset-xl-0 {\n margin-left: 0;\n }\n .offset-xl-1 {\n margin-left: 8.333333%;\n }\n .offset-xl-2 {\n margin-left: 16.666667%;\n }\n .offset-xl-3 {\n margin-left: 25%;\n }\n .offset-xl-4 {\n margin-left: 33.333333%;\n }\n .offset-xl-5 {\n margin-left: 41.666667%;\n }\n .offset-xl-6 {\n margin-left: 50%;\n }\n .offset-xl-7 {\n margin-left: 58.333333%;\n }\n .offset-xl-8 {\n margin-left: 66.666667%;\n }\n .offset-xl-9 {\n margin-left: 75%;\n }\n .offset-xl-10 {\n margin-left: 83.333333%;\n }\n .offset-xl-11 {\n margin-left: 91.666667%;\n }\n}\n\n.table {\n width: 100%;\n margin-bottom: 1rem;\n background-color: transparent;\n}\n\n.table th,\n.table td {\n padding: 0.75rem;\n vertical-align: top;\n border-top: 1px solid #dee2e6;\n}\n\n.table thead th {\n vertical-align: bottom;\n border-bottom: 2px solid #dee2e6;\n}\n\n.table tbody + tbody {\n border-top: 2px solid #dee2e6;\n}\n\n.table .table {\n background-color: #fff;\n}\n\n.table-sm th,\n.table-sm td {\n padding: 0.3rem;\n}\n\n.table-bordered {\n border: 1px solid #dee2e6;\n}\n\n.table-bordered th,\n.table-bordered td {\n border: 1px solid #dee2e6;\n}\n\n.table-bordered thead th,\n.table-bordered thead td {\n border-bottom-width: 2px;\n}\n\n.table-borderless th,\n.table-borderless td,\n.table-borderless thead th,\n.table-borderless tbody + tbody {\n border: 0;\n}\n\n.table-striped tbody tr:nth-of-type(odd) {\n background-color: rgba(0, 0, 0, 0.05);\n}\n\n.table-hover tbody tr:hover {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-primary,\n.table-primary > th,\n.table-primary > td {\n background-color: #b8daff;\n}\n\n.table-primary th,\n.table-primary td,\n.table-primary thead th,\n.table-primary tbody + tbody {\n border-color: #7abaff;\n}\n\n.table-hover .table-primary:hover {\n background-color: #9fcdff;\n}\n\n.table-hover .table-primary:hover > td,\n.table-hover .table-primary:hover > th {\n background-color: #9fcdff;\n}\n\n.table-secondary,\n.table-secondary > th,\n.table-secondary > td {\n background-color: #d6d8db;\n}\n\n.table-secondary th,\n.table-secondary td,\n.table-secondary thead th,\n.table-secondary tbody + tbody {\n border-color: #b3b7bb;\n}\n\n.table-hover .table-secondary:hover {\n background-color: #c8cbcf;\n}\n\n.table-hover .table-secondary:hover > td,\n.table-hover .table-secondary:hover > th {\n background-color: #c8cbcf;\n}\n\n.table-success,\n.table-success > th,\n.table-success > td {\n background-color: #c3e6cb;\n}\n\n.table-success th,\n.table-success td,\n.table-success thead th,\n.table-success tbody + tbody {\n border-color: #8fd19e;\n}\n\n.table-hover .table-success:hover {\n background-color: #b1dfbb;\n}\n\n.table-hover .table-success:hover > td,\n.table-hover .table-success:hover > th {\n background-color: #b1dfbb;\n}\n\n.table-info,\n.table-info > th,\n.table-info > td {\n background-color: #bee5eb;\n}\n\n.table-info th,\n.table-info td,\n.table-info thead th,\n.table-info tbody + tbody {\n border-color: #86cfda;\n}\n\n.table-hover .table-info:hover {\n background-color: #abdde5;\n}\n\n.table-hover .table-info:hover > td,\n.table-hover .table-info:hover > th {\n background-color: #abdde5;\n}\n\n.table-warning,\n.table-warning > th,\n.table-warning > td {\n background-color: #ffeeba;\n}\n\n.table-warning th,\n.table-warning td,\n.table-warning thead th,\n.table-warning tbody + tbody {\n border-color: #ffdf7e;\n}\n\n.table-hover .table-warning:hover {\n background-color: #ffe8a1;\n}\n\n.table-hover .table-warning:hover > td,\n.table-hover .table-warning:hover > th {\n background-color: #ffe8a1;\n}\n\n.table-danger,\n.table-danger > th,\n.table-danger > td {\n background-color: #f5c6cb;\n}\n\n.table-danger th,\n.table-danger td,\n.table-danger thead th,\n.table-danger tbody + tbody {\n border-color: #ed969e;\n}\n\n.table-hover .table-danger:hover {\n background-color: #f1b0b7;\n}\n\n.table-hover .table-danger:hover > td,\n.table-hover .table-danger:hover > th {\n background-color: #f1b0b7;\n}\n\n.table-light,\n.table-light > th,\n.table-light > td {\n background-color: #fdfdfe;\n}\n\n.table-light th,\n.table-light td,\n.table-light thead th,\n.table-light tbody + tbody {\n border-color: #fbfcfc;\n}\n\n.table-hover .table-light:hover {\n background-color: #ececf6;\n}\n\n.table-hover .table-light:hover > td,\n.table-hover .table-light:hover > th {\n background-color: #ececf6;\n}\n\n.table-dark,\n.table-dark > th,\n.table-dark > td {\n background-color: #c6c8ca;\n}\n\n.table-dark th,\n.table-dark td,\n.table-dark thead th,\n.table-dark tbody + tbody {\n border-color: #95999c;\n}\n\n.table-hover .table-dark:hover {\n background-color: #b9bbbe;\n}\n\n.table-hover .table-dark:hover > td,\n.table-hover .table-dark:hover > th {\n background-color: #b9bbbe;\n}\n\n.table-active,\n.table-active > th,\n.table-active > td {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-hover .table-active:hover {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-hover .table-active:hover > td,\n.table-hover .table-active:hover > th {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table .thead-dark th {\n color: #fff;\n background-color: #212529;\n border-color: #32383e;\n}\n\n.table .thead-light th {\n color: #495057;\n background-color: #e9ecef;\n border-color: #dee2e6;\n}\n\n.table-dark {\n color: #fff;\n background-color: #212529;\n}\n\n.table-dark th,\n.table-dark td,\n.table-dark thead th {\n border-color: #32383e;\n}\n\n.table-dark.table-bordered {\n border: 0;\n}\n\n.table-dark.table-striped tbody tr:nth-of-type(odd) {\n background-color: rgba(255, 255, 255, 0.05);\n}\n\n.table-dark.table-hover tbody tr:hover {\n background-color: rgba(255, 255, 255, 0.075);\n}\n\n@media (max-width: 575.98px) {\n .table-responsive-sm {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n }\n .table-responsive-sm > .table-bordered {\n border: 0;\n }\n}\n\n@media (max-width: 767.98px) {\n .table-responsive-md {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n }\n .table-responsive-md > .table-bordered {\n border: 0;\n }\n}\n\n@media (max-width: 991.98px) {\n .table-responsive-lg {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n }\n .table-responsive-lg > .table-bordered {\n border: 0;\n }\n}\n\n@media (max-width: 1199.98px) {\n .table-responsive-xl {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n }\n .table-responsive-xl > .table-bordered {\n border: 0;\n }\n}\n\n.table-responsive {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n}\n\n.table-responsive > .table-bordered {\n border: 0;\n}\n\n.form-control {\n display: block;\n width: 100%;\n height: calc(2.25rem + 2px);\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #495057;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n@media screen and (prefers-reduced-motion: reduce) {\n .form-control {\n transition: none;\n }\n}\n\n.form-control::-ms-expand {\n background-color: transparent;\n border: 0;\n}\n\n.form-control:focus {\n color: #495057;\n background-color: #fff;\n border-color: #80bdff;\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.form-control::-webkit-input-placeholder {\n color: #6c757d;\n opacity: 1;\n}\n\n.form-control::-moz-placeholder {\n color: #6c757d;\n opacity: 1;\n}\n\n.form-control:-ms-input-placeholder {\n color: #6c757d;\n opacity: 1;\n}\n\n.form-control::-ms-input-placeholder {\n color: #6c757d;\n opacity: 1;\n}\n\n.form-control::placeholder {\n color: #6c757d;\n opacity: 1;\n}\n\n.form-control:disabled, .form-control[readonly] {\n background-color: #e9ecef;\n opacity: 1;\n}\n\nselect.form-control:focus::-ms-value {\n color: #495057;\n background-color: #fff;\n}\n\n.form-control-file,\n.form-control-range {\n display: block;\n width: 100%;\n}\n\n.col-form-label {\n padding-top: calc(0.375rem + 1px);\n padding-bottom: calc(0.375rem + 1px);\n margin-bottom: 0;\n font-size: inherit;\n line-height: 1.5;\n}\n\n.col-form-label-lg {\n padding-top: calc(0.5rem + 1px);\n padding-bottom: calc(0.5rem + 1px);\n font-size: 1.25rem;\n line-height: 1.5;\n}\n\n.col-form-label-sm {\n padding-top: calc(0.25rem + 1px);\n padding-bottom: calc(0.25rem + 1px);\n font-size: 0.875rem;\n line-height: 1.5;\n}\n\n.form-control-plaintext {\n display: block;\n width: 100%;\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n margin-bottom: 0;\n line-height: 1.5;\n color: #212529;\n background-color: transparent;\n border: solid transparent;\n border-width: 1px 0;\n}\n\n.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg {\n padding-right: 0;\n padding-left: 0;\n}\n\n.form-control-sm {\n height: calc(1.8125rem + 2px);\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n}\n\n.form-control-lg {\n height: calc(2.875rem + 2px);\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n}\n\nselect.form-control[size], select.form-control[multiple] {\n height: auto;\n}\n\ntextarea.form-control {\n height: auto;\n}\n\n.form-group {\n margin-bottom: 1rem;\n}\n\n.form-text {\n display: block;\n margin-top: 0.25rem;\n}\n\n.form-row {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n margin-right: -5px;\n margin-left: -5px;\n}\n\n.form-row > .col,\n.form-row > [class*=\"col-\"] {\n padding-right: 5px;\n padding-left: 5px;\n}\n\n.form-check {\n position: relative;\n display: block;\n padding-left: 1.25rem;\n}\n\n.form-check-input {\n position: absolute;\n margin-top: 0.3rem;\n margin-left: -1.25rem;\n}\n\n.form-check-input:disabled ~ .form-check-label {\n color: #6c757d;\n}\n\n.form-check-label {\n margin-bottom: 0;\n}\n\n.form-check-inline {\n display: -ms-inline-flexbox;\n display: inline-flex;\n -ms-flex-align: center;\n align-items: center;\n padding-left: 0;\n margin-right: 0.75rem;\n}\n\n.form-check-inline .form-check-input {\n position: static;\n margin-top: 0;\n margin-right: 0.3125rem;\n margin-left: 0;\n}\n\n.valid-feedback {\n display: none;\n width: 100%;\n margin-top: 0.25rem;\n font-size: 80%;\n color: #28a745;\n}\n\n.valid-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n max-width: 100%;\n padding: 0.25rem 0.5rem;\n margin-top: .1rem;\n font-size: 0.875rem;\n line-height: 1.5;\n color: #fff;\n background-color: rgba(40, 167, 69, 0.9);\n border-radius: 0.25rem;\n}\n\n.was-validated .form-control:valid, .form-control.is-valid {\n border-color: #28a745;\n padding-right: 2.25rem;\n background-repeat: no-repeat;\n background-position: center right calc(2.25rem / 4);\n background-size: calc(2.25rem / 2) calc(2.25rem / 2);\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\");\n}\n\n.was-validated .form-control:valid:focus, .form-control.is-valid:focus {\n border-color: #28a745;\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n\n.was-validated .form-control:valid ~ .valid-feedback,\n.was-validated .form-control:valid ~ .valid-tooltip, .form-control.is-valid ~ .valid-feedback,\n.form-control.is-valid ~ .valid-tooltip {\n display: block;\n}\n\n.was-validated textarea.form-control:valid, textarea.form-control.is-valid {\n padding-right: 2.25rem;\n background-position: top calc(2.25rem / 4) right calc(2.25rem / 4);\n}\n\n.was-validated .custom-select:valid, .custom-select.is-valid {\n border-color: #28a745;\n padding-right: 3.4375rem;\n background: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e\") no-repeat right 0.75rem center/8px 10px, url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\") no-repeat center right 1.75rem/1.125rem 1.125rem;\n}\n\n.was-validated .custom-select:valid:focus, .custom-select.is-valid:focus {\n border-color: #28a745;\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n\n.was-validated .custom-select:valid ~ .valid-feedback,\n.was-validated .custom-select:valid ~ .valid-tooltip, .custom-select.is-valid ~ .valid-feedback,\n.custom-select.is-valid ~ .valid-tooltip {\n display: block;\n}\n\n.was-validated .form-control-file:valid ~ .valid-feedback,\n.was-validated .form-control-file:valid ~ .valid-tooltip, .form-control-file.is-valid ~ .valid-feedback,\n.form-control-file.is-valid ~ .valid-tooltip {\n display: block;\n}\n\n.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {\n color: #28a745;\n}\n\n.was-validated .form-check-input:valid ~ .valid-feedback,\n.was-validated .form-check-input:valid ~ .valid-tooltip, .form-check-input.is-valid ~ .valid-feedback,\n.form-check-input.is-valid ~ .valid-tooltip {\n display: block;\n}\n\n.was-validated .custom-control-input:valid ~ .custom-control-label, .custom-control-input.is-valid ~ .custom-control-label {\n color: #28a745;\n}\n\n.was-validated .custom-control-input:valid ~ .custom-control-label::before, .custom-control-input.is-valid ~ .custom-control-label::before {\n border-color: #28a745;\n}\n\n.was-validated .custom-control-input:valid ~ .valid-feedback,\n.was-validated .custom-control-input:valid ~ .valid-tooltip, .custom-control-input.is-valid ~ .valid-feedback,\n.custom-control-input.is-valid ~ .valid-tooltip {\n display: block;\n}\n\n.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, .custom-control-input.is-valid:checked ~ .custom-control-label::before {\n border-color: #34ce57;\n background-color: #34ce57;\n}\n\n.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before, .custom-control-input.is-valid:focus ~ .custom-control-label::before {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n\n.was-validated .custom-control-input:valid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-valid:focus:not(:checked) ~ .custom-control-label::before {\n border-color: #28a745;\n}\n\n.was-validated .custom-file-input:valid ~ .custom-file-label, .custom-file-input.is-valid ~ .custom-file-label {\n border-color: #28a745;\n}\n\n.was-validated .custom-file-input:valid ~ .valid-feedback,\n.was-validated .custom-file-input:valid ~ .valid-tooltip, .custom-file-input.is-valid ~ .valid-feedback,\n.custom-file-input.is-valid ~ .valid-tooltip {\n display: block;\n}\n\n.was-validated .custom-file-input:valid:focus ~ .custom-file-label, .custom-file-input.is-valid:focus ~ .custom-file-label {\n border-color: #28a745;\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n\n.invalid-feedback {\n display: none;\n width: 100%;\n margin-top: 0.25rem;\n font-size: 80%;\n color: #dc3545;\n}\n\n.invalid-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n max-width: 100%;\n padding: 0.25rem 0.5rem;\n margin-top: .1rem;\n font-size: 0.875rem;\n line-height: 1.5;\n color: #fff;\n background-color: rgba(220, 53, 69, 0.9);\n border-radius: 0.25rem;\n}\n\n.was-validated .form-control:invalid, .form-control.is-invalid {\n border-color: #dc3545;\n padding-right: 2.25rem;\n background-repeat: no-repeat;\n background-position: center right calc(2.25rem / 4);\n background-size: calc(2.25rem / 2) calc(2.25rem / 2);\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23d9534f' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E\");\n}\n\n.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus {\n border-color: #dc3545;\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n.was-validated .form-control:invalid ~ .invalid-feedback,\n.was-validated .form-control:invalid ~ .invalid-tooltip, .form-control.is-invalid ~ .invalid-feedback,\n.form-control.is-invalid ~ .invalid-tooltip {\n display: block;\n}\n\n.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid {\n padding-right: 2.25rem;\n background-position: top calc(2.25rem / 4) right calc(2.25rem / 4);\n}\n\n.was-validated .custom-select:invalid, .custom-select.is-invalid {\n border-color: #dc3545;\n padding-right: 3.4375rem;\n background: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e\") no-repeat right 0.75rem center/8px 10px, url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23d9534f' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E\") no-repeat center right 1.75rem/1.125rem 1.125rem;\n}\n\n.was-validated .custom-select:invalid:focus, .custom-select.is-invalid:focus {\n border-color: #dc3545;\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n.was-validated .custom-select:invalid ~ .invalid-feedback,\n.was-validated .custom-select:invalid ~ .invalid-tooltip, .custom-select.is-invalid ~ .invalid-feedback,\n.custom-select.is-invalid ~ .invalid-tooltip {\n display: block;\n}\n\n.was-validated .form-control-file:invalid ~ .invalid-feedback,\n.was-validated .form-control-file:invalid ~ .invalid-tooltip, .form-control-file.is-invalid ~ .invalid-feedback,\n.form-control-file.is-invalid ~ .invalid-tooltip {\n display: block;\n}\n\n.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {\n color: #dc3545;\n}\n\n.was-validated .form-check-input:invalid ~ .invalid-feedback,\n.was-validated .form-check-input:invalid ~ .invalid-tooltip, .form-check-input.is-invalid ~ .invalid-feedback,\n.form-check-input.is-invalid ~ .invalid-tooltip {\n display: block;\n}\n\n.was-validated .custom-control-input:invalid ~ .custom-control-label, .custom-control-input.is-invalid ~ .custom-control-label {\n color: #dc3545;\n}\n\n.was-validated .custom-control-input:invalid ~ .custom-control-label::before, .custom-control-input.is-invalid ~ .custom-control-label::before {\n border-color: #dc3545;\n}\n\n.was-validated .custom-control-input:invalid ~ .invalid-feedback,\n.was-validated .custom-control-input:invalid ~ .invalid-tooltip, .custom-control-input.is-invalid ~ .invalid-feedback,\n.custom-control-input.is-invalid ~ .invalid-tooltip {\n display: block;\n}\n\n.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before, .custom-control-input.is-invalid:checked ~ .custom-control-label::before {\n border-color: #e4606d;\n background-color: #e4606d;\n}\n\n.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before, .custom-control-input.is-invalid:focus ~ .custom-control-label::before {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n.was-validated .custom-control-input:invalid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-invalid:focus:not(:checked) ~ .custom-control-label::before {\n border-color: #dc3545;\n}\n\n.was-validated .custom-file-input:invalid ~ .custom-file-label, .custom-file-input.is-invalid ~ .custom-file-label {\n border-color: #dc3545;\n}\n\n.was-validated .custom-file-input:invalid ~ .invalid-feedback,\n.was-validated .custom-file-input:invalid ~ .invalid-tooltip, .custom-file-input.is-invalid ~ .invalid-feedback,\n.custom-file-input.is-invalid ~ .invalid-tooltip {\n display: block;\n}\n\n.was-validated .custom-file-input:invalid:focus ~ .custom-file-label, .custom-file-input.is-invalid:focus ~ .custom-file-label {\n border-color: #dc3545;\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n.form-inline {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-flow: row wrap;\n flex-flow: row wrap;\n -ms-flex-align: center;\n align-items: center;\n}\n\n.form-inline .form-check {\n width: 100%;\n}\n\n@media (min-width: 576px) {\n .form-inline label {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: center;\n justify-content: center;\n margin-bottom: 0;\n }\n .form-inline .form-group {\n display: -ms-flexbox;\n display: flex;\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n -ms-flex-flow: row wrap;\n flex-flow: row wrap;\n -ms-flex-align: center;\n align-items: center;\n margin-bottom: 0;\n }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .form-inline .form-control-plaintext {\n display: inline-block;\n }\n .form-inline .input-group,\n .form-inline .custom-select {\n width: auto;\n }\n .form-inline .form-check {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: center;\n justify-content: center;\n width: auto;\n padding-left: 0;\n }\n .form-inline .form-check-input {\n position: relative;\n margin-top: 0;\n margin-right: 0.25rem;\n margin-left: 0;\n }\n .form-inline .custom-control {\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: center;\n justify-content: center;\n }\n .form-inline .custom-control-label {\n margin-bottom: 0;\n }\n}\n\n.btn {\n display: inline-block;\n font-weight: 400;\n color: #212529;\n text-align: center;\n vertical-align: middle;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n background-color: transparent;\n border: 1px solid transparent;\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n line-height: 1.5;\n border-radius: 0.25rem;\n 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;\n}\n\n@media screen and (prefers-reduced-motion: reduce) {\n .btn {\n transition: none;\n }\n}\n\n.btn:hover {\n color: #212529;\n text-decoration: none;\n}\n\n.btn:focus, .btn.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.btn.disabled, .btn:disabled {\n opacity: 0.65;\n}\n\n.btn:not(:disabled):not(.disabled) {\n cursor: pointer;\n}\n\na.btn.disabled,\nfieldset:disabled a.btn {\n pointer-events: none;\n}\n\n.btn-primary {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-primary:hover {\n color: #fff;\n background-color: #0069d9;\n border-color: #0062cc;\n}\n\n.btn-primary:focus, .btn-primary.focus {\n box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);\n}\n\n.btn-primary.disabled, .btn-primary:disabled {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-primary:not(:disabled):not(.disabled):active, .btn-primary:not(:disabled):not(.disabled).active,\n.show > .btn-primary.dropdown-toggle {\n color: #fff;\n background-color: #0062cc;\n border-color: #005cbf;\n}\n\n.btn-primary:not(:disabled):not(.disabled):active:focus, .btn-primary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-primary.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);\n}\n\n.btn-secondary {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-secondary:hover {\n color: #fff;\n background-color: #5a6268;\n border-color: #545b62;\n}\n\n.btn-secondary:focus, .btn-secondary.focus {\n box-shadow: 0 0 0 0.2rem rgba(130, 138, 145, 0.5);\n}\n\n.btn-secondary.disabled, .btn-secondary:disabled {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-secondary:not(:disabled):not(.disabled):active, .btn-secondary:not(:disabled):not(.disabled).active,\n.show > .btn-secondary.dropdown-toggle {\n color: #fff;\n background-color: #545b62;\n border-color: #4e555b;\n}\n\n.btn-secondary:not(:disabled):not(.disabled):active:focus, .btn-secondary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-secondary.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(130, 138, 145, 0.5);\n}\n\n.btn-success {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-success:hover {\n color: #fff;\n background-color: #218838;\n border-color: #1e7e34;\n}\n\n.btn-success:focus, .btn-success.focus {\n box-shadow: 0 0 0 0.2rem rgba(72, 180, 97, 0.5);\n}\n\n.btn-success.disabled, .btn-success:disabled {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-success:not(:disabled):not(.disabled):active, .btn-success:not(:disabled):not(.disabled).active,\n.show > .btn-success.dropdown-toggle {\n color: #fff;\n background-color: #1e7e34;\n border-color: #1c7430;\n}\n\n.btn-success:not(:disabled):not(.disabled):active:focus, .btn-success:not(:disabled):not(.disabled).active:focus,\n.show > .btn-success.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(72, 180, 97, 0.5);\n}\n\n.btn-info {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-info:hover {\n color: #fff;\n background-color: #138496;\n border-color: #117a8b;\n}\n\n.btn-info:focus, .btn-info.focus {\n box-shadow: 0 0 0 0.2rem rgba(58, 176, 195, 0.5);\n}\n\n.btn-info.disabled, .btn-info:disabled {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-info:not(:disabled):not(.disabled):active, .btn-info:not(:disabled):not(.disabled).active,\n.show > .btn-info.dropdown-toggle {\n color: #fff;\n background-color: #117a8b;\n border-color: #10707f;\n}\n\n.btn-info:not(:disabled):not(.disabled):active:focus, .btn-info:not(:disabled):not(.disabled).active:focus,\n.show > .btn-info.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(58, 176, 195, 0.5);\n}\n\n.btn-warning {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-warning:hover {\n color: #212529;\n background-color: #e0a800;\n border-color: #d39e00;\n}\n\n.btn-warning:focus, .btn-warning.focus {\n box-shadow: 0 0 0 0.2rem rgba(222, 170, 12, 0.5);\n}\n\n.btn-warning.disabled, .btn-warning:disabled {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-warning:not(:disabled):not(.disabled):active, .btn-warning:not(:disabled):not(.disabled).active,\n.show > .btn-warning.dropdown-toggle {\n color: #212529;\n background-color: #d39e00;\n border-color: #c69500;\n}\n\n.btn-warning:not(:disabled):not(.disabled):active:focus, .btn-warning:not(:disabled):not(.disabled).active:focus,\n.show > .btn-warning.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(222, 170, 12, 0.5);\n}\n\n.btn-danger {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-danger:hover {\n color: #fff;\n background-color: #c82333;\n border-color: #bd2130;\n}\n\n.btn-danger:focus, .btn-danger.focus {\n box-shadow: 0 0 0 0.2rem rgba(225, 83, 97, 0.5);\n}\n\n.btn-danger.disabled, .btn-danger:disabled {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-danger:not(:disabled):not(.disabled):active, .btn-danger:not(:disabled):not(.disabled).active,\n.show > .btn-danger.dropdown-toggle {\n color: #fff;\n background-color: #bd2130;\n border-color: #b21f2d;\n}\n\n.btn-danger:not(:disabled):not(.disabled):active:focus, .btn-danger:not(:disabled):not(.disabled).active:focus,\n.show > .btn-danger.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(225, 83, 97, 0.5);\n}\n\n.btn-light {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-light:hover {\n color: #212529;\n background-color: #e2e6ea;\n border-color: #dae0e5;\n}\n\n.btn-light:focus, .btn-light.focus {\n box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5);\n}\n\n.btn-light.disabled, .btn-light:disabled {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-light:not(:disabled):not(.disabled):active, .btn-light:not(:disabled):not(.disabled).active,\n.show > .btn-light.dropdown-toggle {\n color: #212529;\n background-color: #dae0e5;\n border-color: #d3d9df;\n}\n\n.btn-light:not(:disabled):not(.disabled):active:focus, .btn-light:not(:disabled):not(.disabled).active:focus,\n.show > .btn-light.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5);\n}\n\n.btn-dark {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-dark:hover {\n color: #fff;\n background-color: #23272b;\n border-color: #1d2124;\n}\n\n.btn-dark:focus, .btn-dark.focus {\n box-shadow: 0 0 0 0.2rem rgba(82, 88, 93, 0.5);\n}\n\n.btn-dark.disabled, .btn-dark:disabled {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-dark:not(:disabled):not(.disabled):active, .btn-dark:not(:disabled):not(.disabled).active,\n.show > .btn-dark.dropdown-toggle {\n color: #fff;\n background-color: #1d2124;\n border-color: #171a1d;\n}\n\n.btn-dark:not(:disabled):not(.disabled):active:focus, .btn-dark:not(:disabled):not(.disabled).active:focus,\n.show > .btn-dark.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(82, 88, 93, 0.5);\n}\n\n.btn-outline-primary {\n color: #007bff;\n border-color: #007bff;\n}\n\n.btn-outline-primary:hover {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-outline-primary:focus, .btn-outline-primary.focus {\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n\n.btn-outline-primary.disabled, .btn-outline-primary:disabled {\n color: #007bff;\n background-color: transparent;\n}\n\n.btn-outline-primary:not(:disabled):not(.disabled):active, .btn-outline-primary:not(:disabled):not(.disabled).active,\n.show > .btn-outline-primary.dropdown-toggle {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-outline-primary:not(:disabled):not(.disabled):active:focus, .btn-outline-primary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-primary.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n\n.btn-outline-secondary {\n color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-outline-secondary:hover {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-outline-secondary:focus, .btn-outline-secondary.focus {\n box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n}\n\n.btn-outline-secondary.disabled, .btn-outline-secondary:disabled {\n color: #6c757d;\n background-color: transparent;\n}\n\n.btn-outline-secondary:not(:disabled):not(.disabled):active, .btn-outline-secondary:not(:disabled):not(.disabled).active,\n.show > .btn-outline-secondary.dropdown-toggle {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-outline-secondary:not(:disabled):not(.disabled):active:focus, .btn-outline-secondary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-secondary.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n}\n\n.btn-outline-success {\n color: #28a745;\n border-color: #28a745;\n}\n\n.btn-outline-success:hover {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-outline-success:focus, .btn-outline-success.focus {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n\n.btn-outline-success.disabled, .btn-outline-success:disabled {\n color: #28a745;\n background-color: transparent;\n}\n\n.btn-outline-success:not(:disabled):not(.disabled):active, .btn-outline-success:not(:disabled):not(.disabled).active,\n.show > .btn-outline-success.dropdown-toggle {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-outline-success:not(:disabled):not(.disabled):active:focus, .btn-outline-success:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-success.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n\n.btn-outline-info {\n color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-outline-info:hover {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-outline-info:focus, .btn-outline-info.focus {\n box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n\n.btn-outline-info.disabled, .btn-outline-info:disabled {\n color: #17a2b8;\n background-color: transparent;\n}\n\n.btn-outline-info:not(:disabled):not(.disabled):active, .btn-outline-info:not(:disabled):not(.disabled).active,\n.show > .btn-outline-info.dropdown-toggle {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-outline-info:not(:disabled):not(.disabled):active:focus, .btn-outline-info:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-info.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n\n.btn-outline-warning {\n color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-outline-warning:hover {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-outline-warning:focus, .btn-outline-warning.focus {\n box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n\n.btn-outline-warning.disabled, .btn-outline-warning:disabled {\n color: #ffc107;\n background-color: transparent;\n}\n\n.btn-outline-warning:not(:disabled):not(.disabled):active, .btn-outline-warning:not(:disabled):not(.disabled).active,\n.show > .btn-outline-warning.dropdown-toggle {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-outline-warning:not(:disabled):not(.disabled):active:focus, .btn-outline-warning:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-warning.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n\n.btn-outline-danger {\n color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-outline-danger:hover {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-outline-danger:focus, .btn-outline-danger.focus {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n\n.btn-outline-danger.disabled, .btn-outline-danger:disabled {\n color: #dc3545;\n background-color: transparent;\n}\n\n.btn-outline-danger:not(:disabled):not(.disabled):active, .btn-outline-danger:not(:disabled):not(.disabled).active,\n.show > .btn-outline-danger.dropdown-toggle {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-outline-danger:not(:disabled):not(.disabled):active:focus, .btn-outline-danger:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-danger.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n\n.btn-outline-light {\n color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-outline-light:hover {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-outline-light:focus, .btn-outline-light.focus {\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n\n.btn-outline-light.disabled, .btn-outline-light:disabled {\n color: #f8f9fa;\n background-color: transparent;\n}\n\n.btn-outline-light:not(:disabled):not(.disabled):active, .btn-outline-light:not(:disabled):not(.disabled).active,\n.show > .btn-outline-light.dropdown-toggle {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-outline-light:not(:disabled):not(.disabled):active:focus, .btn-outline-light:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-light.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n\n.btn-outline-dark {\n color: #343a40;\n border-color: #343a40;\n}\n\n.btn-outline-dark:hover {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-outline-dark:focus, .btn-outline-dark.focus {\n box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n\n.btn-outline-dark.disabled, .btn-outline-dark:disabled {\n color: #343a40;\n background-color: transparent;\n}\n\n.btn-outline-dark:not(:disabled):not(.disabled):active, .btn-outline-dark:not(:disabled):not(.disabled).active,\n.show > .btn-outline-dark.dropdown-toggle {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-outline-dark:not(:disabled):not(.disabled):active:focus, .btn-outline-dark:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-dark.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n\n.btn-link {\n font-weight: 400;\n color: #007bff;\n}\n\n.btn-link:hover {\n color: #0056b3;\n text-decoration: underline;\n}\n\n.btn-link:focus, .btn-link.focus {\n text-decoration: underline;\n box-shadow: none;\n}\n\n.btn-link:disabled, .btn-link.disabled {\n color: #6c757d;\n pointer-events: none;\n}\n\n.btn-lg, .btn-group-lg > .btn {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n}\n\n.btn-sm, .btn-group-sm > .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n}\n\n.btn-block {\n display: block;\n width: 100%;\n}\n\n.btn-block + .btn-block {\n margin-top: 0.5rem;\n}\n\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n width: 100%;\n}\n\n.fade {\n transition: opacity 0.15s linear;\n}\n\n@media screen and (prefers-reduced-motion: reduce) {\n .fade {\n transition: none;\n }\n}\n\n.fade:not(.show) {\n opacity: 0;\n}\n\n.collapse:not(.show) {\n display: none;\n}\n\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n transition: height 0.35s ease;\n}\n\n@media screen and (prefers-reduced-motion: reduce) {\n .collapsing {\n transition: none;\n }\n}\n\n.dropup,\n.dropright,\n.dropdown,\n.dropleft {\n position: relative;\n}\n\n.dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid;\n border-right: 0.3em solid transparent;\n border-bottom: 0;\n border-left: 0.3em solid transparent;\n}\n\n.dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 10rem;\n padding: 0.5rem 0;\n margin: 0.125rem 0 0;\n font-size: 1rem;\n color: #212529;\n text-align: left;\n list-style: none;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0.25rem;\n}\n\n.dropdown-menu-right {\n right: 0;\n left: auto;\n}\n\n@media (min-width: 576px) {\n .dropdown-menu-sm-right {\n right: 0;\n left: auto;\n }\n}\n\n@media (min-width: 768px) {\n .dropdown-menu-md-right {\n right: 0;\n left: auto;\n }\n .dropdown:hover .dropdown-menu {\n display: block;\n}\n}\n\n@media (min-width: 992px) {\n .dropdown-menu-lg-right {\n right: 0;\n left: auto;\n }\n}\n\n@media (min-width: 1200px) {\n .dropdown-menu-xl-right {\n right: 0;\n left: auto;\n }\n}\n\n.dropdown-menu-left {\n right: auto;\n left: 0;\n}\n\n@media (min-width: 576px) {\n .dropdown-menu-sm-left {\n right: auto;\n left: 0;\n }\n}\n\n@media (min-width: 768px) {\n .dropdown-menu-md-left {\n right: auto;\n left: 0;\n }\n}\n\n@media (min-width: 992px) {\n .dropdown-menu-lg-left {\n right: auto;\n left: 0;\n }\n}\n\n@media (min-width: 1200px) {\n .dropdown-menu-xl-left {\n right: auto;\n left: 0;\n }\n}\n\n.dropup .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-top: 0;\n margin-bottom: 0.125rem;\n}\n\n.dropup .dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0;\n border-right: 0.3em solid transparent;\n border-bottom: 0.3em solid;\n border-left: 0.3em solid transparent;\n}\n\n.dropup .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropright .dropdown-menu {\n top: 0;\n right: auto;\n left: 100%;\n margin-top: 0;\n margin-left: 0.125rem;\n}\n\n.dropright .dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid transparent;\n border-right: 0;\n border-bottom: 0.3em solid transparent;\n border-left: 0.3em solid;\n}\n\n.dropright .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropright .dropdown-toggle::after {\n vertical-align: 0;\n}\n\n.dropleft .dropdown-menu {\n top: 0;\n right: 100%;\n left: auto;\n margin-top: 0;\n margin-right: 0.125rem;\n}\n\n.dropleft .dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n}\n\n.dropleft .dropdown-toggle::after {\n display: none;\n}\n\n.dropleft .dropdown-toggle::before {\n display: inline-block;\n margin-right: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid transparent;\n border-right: 0.3em solid;\n border-bottom: 0.3em solid transparent;\n}\n\n.dropleft .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropleft .dropdown-toggle::before {\n vertical-align: 0;\n}\n\n.dropdown-menu[x-placement^=\"top\"], .dropdown-menu[x-placement^=\"right\"], .dropdown-menu[x-placement^=\"bottom\"], .dropdown-menu[x-placement^=\"left\"] {\n right: auto;\n bottom: auto;\n}\n\n.dropdown-divider {\n height: 0;\n margin: 0.5rem 0;\n overflow: hidden;\n border-top: 1px solid #e9ecef;\n}\n\n.dropdown-item {\n display: block;\n width: 100%;\n padding: 0.25rem 1.5rem;\n clear: both;\n font-weight: 400;\n color: #212529;\n text-align: inherit;\n white-space: nowrap;\n background-color: transparent;\n border: 0;\n}\n\n.dropdown-item:first-child {\n border-top-left-radius: calc(0.25rem - 1px);\n border-top-right-radius: calc(0.25rem - 1px);\n}\n\n.dropdown-item:last-child {\n border-bottom-right-radius: calc(0.25rem - 1px);\n border-bottom-left-radius: calc(0.25rem - 1px);\n}\n\n.dropdown-item:hover, .dropdown-item:focus {\n color: #16181b;\n text-decoration: none;\n background-color: #f8f9fa;\n}\n\n.dropdown-item.active, .dropdown-item:active {\n color: #fff;\n text-decoration: none;\n background-color: #007bff;\n}\n\n.dropdown-item.disabled, .dropdown-item:disabled {\n color: #6c757d;\n pointer-events: none;\n background-color: transparent;\n}\n\n.dropdown-menu.show {\n display: block;\n}\n\n.dropdown-header {\n display: block;\n padding: 0.5rem 1.5rem;\n margin-bottom: 0;\n font-size: 0.875rem;\n color: #6c757d;\n white-space: nowrap;\n}\n\n.dropdown-item-text {\n display: block;\n padding: 0.25rem 1.5rem;\n color: #212529;\n}\n\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: -ms-inline-flexbox;\n display: inline-flex;\n vertical-align: middle;\n}\n\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n -ms-flex: 1 1 auto;\n flex: 1 1 auto;\n}\n\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover {\n z-index: 1;\n}\n\n.btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active,\n.btn-group-vertical > .btn:focus,\n.btn-group-vertical > .btn:active,\n.btn-group-vertical > .btn.active {\n z-index: 1;\n}\n\n.btn-toolbar {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -ms-flex-pack: start;\n justify-content: flex-start;\n}\n\n.btn-toolbar .input-group {\n width: auto;\n}\n\n.btn-group > .btn:not(:first-child),\n.btn-group > .btn-group:not(:first-child) {\n margin-left: -1px;\n}\n\n.btn-group > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group > .btn-group:not(:last-child) > .btn {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.btn-group > .btn:not(:first-child),\n.btn-group > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.dropdown-toggle-split {\n padding-right: 0.5625rem;\n padding-left: 0.5625rem;\n}\n\n.dropdown-toggle-split::after,\n.dropup .dropdown-toggle-split::after,\n.dropright .dropdown-toggle-split::after {\n margin-left: 0;\n}\n\n.dropleft .dropdown-toggle-split::before {\n margin-right: 0;\n}\n\n.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {\n padding-right: 0.375rem;\n padding-left: 0.375rem;\n}\n\n.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {\n padding-right: 0.75rem;\n padding-left: 0.75rem;\n}\n\n.btn-group-vertical {\n -ms-flex-direction: column;\n flex-direction: column;\n -ms-flex-align: start;\n align-items: flex-start;\n -ms-flex-pack: center;\n justify-content: center;\n}\n\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group {\n width: 100%;\n}\n\n.btn-group-vertical > .btn:not(:first-child),\n.btn-group-vertical > .btn-group:not(:first-child) {\n margin-top: -1px;\n}\n\n.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group-vertical > .btn-group:not(:last-child) > .btn {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.btn-group-vertical > .btn:not(:first-child),\n.btn-group-vertical > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.btn-group-toggle > .btn,\n.btn-group-toggle > .btn-group > .btn {\n margin-bottom: 0;\n}\n\n.btn-group-toggle > .btn input[type=\"radio\"],\n.btn-group-toggle > .btn input[type=\"checkbox\"],\n.btn-group-toggle > .btn-group > .btn input[type=\"radio\"],\n.btn-group-toggle > .btn-group > .btn input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n\n.input-group {\n position: relative;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -ms-flex-align: stretch;\n align-items: stretch;\n width: 100%;\n}\n\n.input-group > .form-control,\n.input-group > .form-control-plaintext,\n.input-group > .custom-select,\n.input-group > .custom-file {\n position: relative;\n -ms-flex: 1 1 auto;\n flex: 1 1 auto;\n width: 1%;\n margin-bottom: 0;\n}\n\n.input-group > .form-control + .form-control,\n.input-group > .form-control + .custom-select,\n.input-group > .form-control + .custom-file,\n.input-group > .form-control-plaintext + .form-control,\n.input-group > .form-control-plaintext + .custom-select,\n.input-group > .form-control-plaintext + .custom-file,\n.input-group > .custom-select + .form-control,\n.input-group > .custom-select + .custom-select,\n.input-group > .custom-select + .custom-file,\n.input-group > .custom-file + .form-control,\n.input-group > .custom-file + .custom-select,\n.input-group > .custom-file + .custom-file {\n margin-left: -1px;\n}\n\n.input-group > .form-control:focus,\n.input-group > .custom-select:focus,\n.input-group > .custom-file .custom-file-input:focus ~ .custom-file-label {\n z-index: 3;\n}\n\n.input-group > .custom-file .custom-file-input:focus {\n z-index: 4;\n}\n\n.input-group > .form-control:not(:last-child),\n.input-group > .custom-select:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.input-group > .form-control:not(:first-child),\n.input-group > .custom-select:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.input-group > .custom-file {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n}\n\n.input-group > .custom-file:not(:last-child) .custom-file-label,\n.input-group > .custom-file:not(:last-child) .custom-file-label::after {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.input-group > .custom-file:not(:first-child) .custom-file-label {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.input-group-prepend,\n.input-group-append {\n display: -ms-flexbox;\n display: flex;\n}\n\n.input-group-prepend .btn,\n.input-group-append .btn {\n position: relative;\n z-index: 2;\n}\n\n.input-group-prepend .btn:focus,\n.input-group-append .btn:focus {\n z-index: 3;\n}\n\n.input-group-prepend .btn + .btn,\n.input-group-prepend .btn + .input-group-text,\n.input-group-prepend .input-group-text + .input-group-text,\n.input-group-prepend .input-group-text + .btn,\n.input-group-append .btn + .btn,\n.input-group-append .btn + .input-group-text,\n.input-group-append .input-group-text + .input-group-text,\n.input-group-append .input-group-text + .btn {\n margin-left: -1px;\n}\n\n.input-group-prepend {\n margin-right: -1px;\n}\n\n.input-group-append {\n margin-left: -1px;\n}\n\n.input-group-text {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n padding: 0.375rem 0.75rem;\n margin-bottom: 0;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #495057;\n text-align: center;\n white-space: nowrap;\n background-color: #e9ecef;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n}\n\n.input-group-text input[type=\"radio\"],\n.input-group-text input[type=\"checkbox\"] {\n margin-top: 0;\n}\n\n.input-group-lg > .form-control:not(textarea),\n.input-group-lg > .custom-select {\n height: calc(2.875rem + 2px);\n}\n\n.input-group-lg > .form-control,\n.input-group-lg > .custom-select,\n.input-group-lg > .input-group-prepend > .input-group-text,\n.input-group-lg > .input-group-append > .input-group-text,\n.input-group-lg > .input-group-prepend > .btn,\n.input-group-lg > .input-group-append > .btn {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n}\n\n.input-group-sm > .form-control:not(textarea),\n.input-group-sm > .custom-select {\n height: calc(1.8125rem + 2px);\n}\n\n.input-group-sm > .form-control,\n.input-group-sm > .custom-select,\n.input-group-sm > .input-group-prepend > .input-group-text,\n.input-group-sm > .input-group-append > .input-group-text,\n.input-group-sm > .input-group-prepend > .btn,\n.input-group-sm > .input-group-append > .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n}\n\n.input-group-lg > .custom-select,\n.input-group-sm > .custom-select {\n padding-right: 1.75rem;\n}\n\n.input-group > .input-group-prepend > .btn,\n.input-group > .input-group-prepend > .input-group-text,\n.input-group > .input-group-append:not(:last-child) > .btn,\n.input-group > .input-group-append:not(:last-child) > .input-group-text,\n.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.input-group > .input-group-append > .btn,\n.input-group > .input-group-append > .input-group-text,\n.input-group > .input-group-prepend:not(:first-child) > .btn,\n.input-group > .input-group-prepend:not(:first-child) > .input-group-text,\n.input-group > .input-group-prepend:first-child > .btn:not(:first-child),\n.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.custom-control {\n position: relative;\n display: block;\n min-height: 1.5rem;\n padding-left: 1.5rem;\n}\n\n.custom-control-inline {\n display: -ms-inline-flexbox;\n display: inline-flex;\n margin-right: 1rem;\n}\n\n.custom-control-input {\n position: absolute;\n z-index: -1;\n opacity: 0;\n}\n\n.custom-control-input:checked ~ .custom-control-label::before {\n color: #fff;\n border-color: #007bff;\n background-color: #007bff;\n}\n\n.custom-control-input:focus ~ .custom-control-label::before {\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-control-input:focus:not(:checked) ~ .custom-control-label::before {\n border-color: #80bdff;\n}\n\n.custom-control-input:not(:disabled):active ~ .custom-control-label::before {\n color: #fff;\n background-color: #b3d7ff;\n border-color: #b3d7ff;\n}\n\n.custom-control-input:disabled ~ .custom-control-label {\n color: #6c757d;\n}\n\n.custom-control-input:disabled ~ .custom-control-label::before {\n background-color: #e9ecef;\n}\n\n.custom-control-label {\n position: relative;\n margin-bottom: 0;\n vertical-align: top;\n}\n\n.custom-control-label::before {\n position: absolute;\n top: 0.25rem;\n left: -1.5rem;\n display: block;\n width: 1rem;\n height: 1rem;\n pointer-events: none;\n content: \"\";\n background-color: #fff;\n border: #adb5bd solid 1px;\n}\n\n.custom-control-label::after {\n position: absolute;\n top: 0.25rem;\n left: -1.5rem;\n display: block;\n width: 1rem;\n height: 1rem;\n content: \"\";\n background-repeat: no-repeat;\n background-position: center center;\n background-size: 50% 50%;\n}\n\n.custom-checkbox .custom-control-label::before {\n border-radius: 0.25rem;\n}\n\n.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e\");\n}\n\n.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before {\n border-color: #007bff;\n background-color: #007bff;\n}\n\n.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e\");\n}\n\n.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before {\n background-color: rgba(0, 123, 255, 0.5);\n}\n\n.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before {\n background-color: rgba(0, 123, 255, 0.5);\n}\n\n.custom-radio .custom-control-label::before {\n border-radius: 50%;\n}\n\n.custom-radio .custom-control-input:checked ~ .custom-control-label::after {\n background-image: 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\");\n}\n\n.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before {\n background-color: rgba(0, 123, 255, 0.5);\n}\n\n.custom-switch {\n padding-left: 2.25rem;\n}\n\n.custom-switch .custom-control-label::before {\n left: -2.25rem;\n width: 1.75rem;\n pointer-events: all;\n border-radius: 0.5rem;\n}\n\n.custom-switch .custom-control-label::after {\n top: calc(0.25rem + 2px);\n left: calc(-2.25rem + 2px);\n width: calc(1rem - 4px);\n height: calc(1rem - 4px);\n background-color: #adb5bd;\n border-radius: 0.5rem;\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-transform 0.15s ease-in-out;\n transition: transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n transition: transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-transform 0.15s ease-in-out;\n}\n\n@media screen and (prefers-reduced-motion: reduce) {\n .custom-switch .custom-control-label::after {\n transition: none;\n }\n}\n\n.custom-switch .custom-control-input:checked ~ .custom-control-label::after {\n background-color: #fff;\n -webkit-transform: translateX(0.75rem);\n transform: translateX(0.75rem);\n}\n\n.custom-switch .custom-control-input:disabled:checked ~ .custom-control-label::before {\n background-color: rgba(0, 123, 255, 0.5);\n}\n\n.custom-select {\n display: inline-block;\n width: 100%;\n height: calc(2.25rem + 2px);\n padding: 0.375rem 1.75rem 0.375rem 0.75rem;\n font-weight: 400;\n line-height: 1.5;\n color: #495057;\n vertical-align: middle;\n background: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e\") no-repeat right 0.75rem center/8px 10px;\n background-color: #fff;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n}\n\n.custom-select:focus {\n border-color: #80bdff;\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(128, 189, 255, 0.5);\n}\n\n.custom-select:focus::-ms-value {\n color: #495057;\n background-color: #fff;\n}\n\n.custom-select[multiple], .custom-select[size]:not([size=\"1\"]) {\n height: auto;\n padding-right: 0.75rem;\n background-image: none;\n}\n\n.custom-select:disabled {\n color: #6c757d;\n background-color: #e9ecef;\n}\n\n.custom-select::-ms-expand {\n opacity: 0;\n}\n\n.custom-select-sm {\n height: calc(1.8125rem + 2px);\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n padding-left: 0.5rem;\n font-size: 0.875rem;\n}\n\n.custom-select-lg {\n height: calc(2.875rem + 2px);\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n padding-left: 1rem;\n font-size: 1.25rem;\n}\n\n.custom-file {\n position: relative;\n display: inline-block;\n width: 100%;\n height: calc(2.25rem + 2px);\n margin-bottom: 0;\n}\n\n.custom-file-input {\n position: relative;\n z-index: 2;\n width: 100%;\n height: calc(2.25rem + 2px);\n margin: 0;\n opacity: 0;\n}\n\n.custom-file-input:focus ~ .custom-file-label {\n border-color: #80bdff;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-file-input:disabled ~ .custom-file-label {\n background-color: #e9ecef;\n}\n\n.custom-file-input:lang(en) ~ .custom-file-label::after {\n content: \"Browse\";\n}\n\n.custom-file-input ~ .custom-file-label[data-browse]::after {\n content: attr(data-browse);\n}\n\n.custom-file-label {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n z-index: 1;\n height: calc(2.25rem + 2px);\n padding: 0.375rem 0.75rem;\n font-weight: 400;\n line-height: 1.5;\n color: #495057;\n background-color: #fff;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n}\n\n.custom-file-label::after {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n z-index: 3;\n display: block;\n height: 2.25rem;\n padding: 0.375rem 0.75rem;\n line-height: 1.5;\n color: #495057;\n content: \"Browse\";\n background-color: #e9ecef;\n border-left: inherit;\n border-radius: 0 0.25rem 0.25rem 0;\n}\n\n.custom-range {\n width: 100%;\n height: calc(1rem + 0.4rem);\n padding: 0;\n background-color: transparent;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n}\n\n.custom-range:focus {\n outline: none;\n}\n\n.custom-range:focus::-webkit-slider-thumb {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-range:focus::-moz-range-thumb {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-range:focus::-ms-thumb {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-range::-moz-focus-outer {\n border: 0;\n}\n\n.custom-range::-webkit-slider-thumb {\n width: 1rem;\n height: 1rem;\n margin-top: -0.25rem;\n background-color: #007bff;\n border: 0;\n border-radius: 1rem;\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n -webkit-appearance: none;\n appearance: none;\n}\n\n@media screen and (prefers-reduced-motion: reduce) {\n .custom-range::-webkit-slider-thumb {\n transition: none;\n }\n}\n\n.custom-range::-webkit-slider-thumb:active {\n background-color: #b3d7ff;\n}\n\n.custom-range::-webkit-slider-runnable-track {\n width: 100%;\n height: 0.5rem;\n color: transparent;\n cursor: pointer;\n background-color: #dee2e6;\n border-color: transparent;\n border-radius: 1rem;\n}\n\n.custom-range::-moz-range-thumb {\n width: 1rem;\n height: 1rem;\n background-color: #007bff;\n border: 0;\n border-radius: 1rem;\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n -moz-appearance: none;\n appearance: none;\n}\n\n@media screen and (prefers-reduced-motion: reduce) {\n .custom-range::-moz-range-thumb {\n transition: none;\n }\n}\n\n.custom-range::-moz-range-thumb:active {\n background-color: #b3d7ff;\n}\n\n.custom-range::-moz-range-track {\n width: 100%;\n height: 0.5rem;\n color: transparent;\n cursor: pointer;\n background-color: #dee2e6;\n border-color: transparent;\n border-radius: 1rem;\n}\n\n.custom-range::-ms-thumb {\n width: 1rem;\n height: 1rem;\n margin-top: 0;\n margin-right: 0.2rem;\n margin-left: 0.2rem;\n background-color: #007bff;\n border: 0;\n border-radius: 1rem;\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n appearance: none;\n}\n\n@media screen and (prefers-reduced-motion: reduce) {\n .custom-range::-ms-thumb {\n transition: none;\n }\n}\n\n.custom-range::-ms-thumb:active {\n background-color: #b3d7ff;\n}\n\n.custom-range::-ms-track {\n width: 100%;\n height: 0.5rem;\n color: transparent;\n cursor: pointer;\n background-color: transparent;\n border-color: transparent;\n border-width: 0.5rem;\n}\n\n.custom-range::-ms-fill-lower {\n background-color: #dee2e6;\n border-radius: 1rem;\n}\n\n.custom-range::-ms-fill-upper {\n margin-right: 15px;\n background-color: #dee2e6;\n border-radius: 1rem;\n}\n\n.custom-range:disabled::-webkit-slider-thumb {\n background-color: #adb5bd;\n}\n\n.custom-range:disabled::-webkit-slider-runnable-track {\n cursor: default;\n}\n\n.custom-range:disabled::-moz-range-thumb {\n background-color: #adb5bd;\n}\n\n.custom-range:disabled::-moz-range-track {\n cursor: default;\n}\n\n.custom-range:disabled::-ms-thumb {\n background-color: #adb5bd;\n}\n\n.custom-control-label::before,\n.custom-file-label,\n.custom-select {\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n@media screen and (prefers-reduced-motion: reduce) {\n .custom-control-label::before,\n .custom-file-label,\n .custom-select {\n transition: none;\n }\n}\n\n.nav {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n border-bottom: 3px solid black;\n\n}\n\n.nav-link {\n display: block;\n padding: 0.5rem 1rem;\n}\n\n.nav-link:hover, .nav-link:focus {\n text-decoration: none;\n}\n\n.nav-link.disabled {\n color: #6c757d;\n pointer-events: none;\n cursor: default;\n}\n\n.nav-tabs {\n border-bottom: 1px solid #dee2e6;\n}\n\n.nav-tabs .nav-item {\n margin-bottom: -1px;\n}\n\n.nav-tabs .nav-link {\n border: 1px solid transparent;\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus {\n border-color: #e9ecef #e9ecef #dee2e6;\n}\n\n.nav-tabs .nav-link.disabled {\n color: #6c757d;\n background-color: transparent;\n border-color: transparent;\n}\n\n.nav-tabs .nav-link.active,\n.nav-tabs .nav-item.show .nav-link {\n color: #495057;\n background-color: #fff;\n border-color: #dee2e6 #dee2e6 #fff;\n}\n\n.nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.nav-pills .nav-link {\n border-radius: 0.25rem;\n}\n\n.nav-pills .nav-link.active,\n.nav-pills .show > .nav-link {\n color: #fff;\n background-color: #007bff;\n}\n\n.nav-fill .nav-item {\n -ms-flex: 1 1 auto;\n flex: 1 1 auto;\n text-align: center;\n}\n\n.nav-justified .nav-item {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -ms-flex-positive: 1;\n flex-grow: 1;\n text-align: center;\n}\n\n.tab-content > .tab-pane {\n display: none;\n}\n\n.tab-content > .active {\n display: block;\n}\n\n.navbar {\n position: relative;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: justify;\n justify-content: space-between;\n padding: 0.5rem 6%;\n box-shadow: 1px 1px 10px #a8a6a6;\n}\n\n.navbar > .container,\n.navbar > .container-fluid {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: justify;\n justify-content: space-between;\n}\n\n.navbar-brand {\n display: inline-block;\n padding-top: 0.3125rem;\n padding-bottom: 0.3125rem;\n margin-right: 1rem;\n font-size: 1.25rem;\n line-height: inherit;\n white-space: nowrap;\n color: #1bb3e9;\n letter-spacing: -1.5px;\n}\n\n.navbar-brand:hover, .navbar-brand:focus {\n text-decoration: none;\n}\n\n.navbar-nav {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n\n.navbar-nav .nav-link {\n padding-right: 0;\n padding-left: 0;\n}\n\n.navbar-nav .dropdown-menu {\n position: static;\n float: none;\n}\n\n.navbar-text {\n display: inline-block;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n\n.navbar-collapse {\n -ms-flex-preferred-size: 100%;\n flex-basis: 100%;\n -ms-flex-positive: 1;\n flex-grow: 1;\n -ms-flex-align: center;\n align-items: center;\n}\n\n.navbar-toggler {\n padding: 0.25rem 0.75rem;\n font-size: 1.25rem;\n line-height: 1;\n background-color: transparent;\n border: 1px solid black;\n border-radius: 0.25rem;\n}\n\n.navbar-toggler:hover, .navbar-toggler:focus {\n text-decoration: none;\n}\n\n.navbar-toggler:not(:disabled):not(.disabled) {\n cursor: pointer;\n}\n\n.navbar-toggler-icon {\n display: inline-block;\n width: 1.5em;\n height: 1.5em;\n vertical-align: middle;\n content: \"\";\n background: no-repeat center center;\n background-size: 100% 100%;\n}\n\n@media (max-width: 575.98px) {\n .navbar-expand-sm > .container,\n .navbar-expand-sm > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 576px) {\n .navbar-expand-sm {\n -ms-flex-flow: row nowrap;\n flex-flow: row nowrap;\n -ms-flex-pack: start;\n justify-content: flex-start;\n }\n .navbar-expand-sm .navbar-nav {\n -ms-flex-direction: row;\n flex-direction: row;\n }\n .navbar-expand-sm .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-sm .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-sm > .container,\n .navbar-expand-sm > .container-fluid {\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap;\n }\n .navbar-expand-sm .navbar-collapse {\n display: -ms-flexbox !important;\n display: flex !important;\n -ms-flex-preferred-size: auto;\n flex-basis: auto;\n }\n .navbar-expand-sm .navbar-toggler {\n display: none;\n }\n}\n\n@media (max-width: 767.98px) {\n .navbar-expand-md > .container,\n .navbar-expand-md > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 768px) {\n .navbar-expand-md {\n -ms-flex-flow: row nowrap;\n flex-flow: row nowrap;\n -ms-flex-pack: start;\n justify-content: flex-start;\n }\n .navbar-expand-md .navbar-nav {\n -ms-flex-direction: row;\n flex-direction: row;\n }\n .navbar-expand-md .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-md .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-md > .container,\n .navbar-expand-md > .container-fluid {\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap;\n }\n .navbar-expand-md .navbar-collapse {\n display: -ms-flexbox !important;\n display: flex !important;\n -ms-flex-preferred-size: auto;\n flex-basis: auto;\n }\n .navbar-expand-md .navbar-toggler {\n display: none;\n }\n}\n\n@media (max-width: 991.98px) {\n .navbar-expand-lg > .container,\n .navbar-expand-lg > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 992px) {\n .navbar-expand-lg {\n -ms-flex-flow: row nowrap;\n flex-flow: row nowrap;\n -ms-flex-pack: start;\n justify-content: flex-start;\n }\n .navbar-expand-lg .navbar-nav {\n -ms-flex-direction: row;\n flex-direction: row;\n }\n .navbar-expand-lg .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-lg .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-lg > .container,\n .navbar-expand-lg > .container-fluid {\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap;\n }\n .navbar-expand-lg .navbar-collapse {\n display: -ms-flexbox !important;\n display: flex !important;\n -ms-flex-preferred-size: auto;\n flex-basis: auto;\n }\n .navbar-expand-lg .navbar-toggler {\n display: none;\n }\n}\n\n@media (max-width: 1199.98px) {\n .navbar-expand-xl > .container,\n .navbar-expand-xl > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 1200px) {\n .navbar-expand-xl {\n -ms-flex-flow: row nowrap;\n flex-flow: row nowrap;\n -ms-flex-pack: start;\n justify-content: flex-start;\n }\n .navbar-expand-xl .navbar-nav {\n -ms-flex-direction: row;\n flex-direction: row;\n }\n .navbar-expand-xl .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-xl .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-xl > .container,\n .navbar-expand-xl > .container-fluid {\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap;\n }\n .navbar-expand-xl .navbar-collapse {\n display: -ms-flexbox !important;\n display: flex !important;\n -ms-flex-preferred-size: auto;\n flex-basis: auto;\n }\n .navbar-expand-xl .navbar-toggler {\n display: none;\n }\n}\n\n.navbar-expand {\n -ms-flex-flow: row nowrap;\n flex-flow: row nowrap;\n -ms-flex-pack: start;\n justify-content: flex-start;\n}\n\n.navbar-expand > .container,\n.navbar-expand > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n}\n\n.navbar-expand .navbar-nav {\n -ms-flex-direction: row;\n flex-direction: row;\n}\n\n.navbar-expand .navbar-nav .dropdown-menu {\n position: absolute;\n}\n\n.navbar-expand .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n}\n\n.navbar-expand > .container,\n.navbar-expand > .container-fluid {\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap;\n}\n\n.navbar-expand .navbar-collapse {\n display: -ms-flexbox !important;\n display: flex !important;\n -ms-flex-preferred-size: auto;\n flex-basis: auto;\n}\n\n.navbar-expand .navbar-toggler {\n display: none;\n}\n\n/* .navbar-light .navbar-brand {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus {\n color: rgba(0, 0, 0, 0.9);\n} */\n\n.navbar-light .navbar-nav .nav-link {\n color: rgba(0, 0, 0, 0.5);\n}\n\n.navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus {\n color: rgba(0, 0, 0, 0.7);\n}\n\n.navbar-light .navbar-nav .nav-link.disabled {\n color: rgba(0, 0, 0, 0.3);\n}\n\n.navbar-light .navbar-nav .show > .nav-link,\n.navbar-light .navbar-nav .active > .nav-link,\n.navbar-light .navbar-nav .nav-link.show,\n.navbar-light .navbar-nav .nav-link.active {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-toggler {\n color: rgba(0, 0, 0, 0.5);\n border-color: rgba(0, 0, 0, 0.1);\n}\n\n.navbar-light .navbar-toggler-icon {\n background-image: url(\"data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n}\n\n.navbar-light .navbar-text {\n color: rgba(0, 0, 0, 0.5);\n}\n\n.navbar-light .navbar-text a {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-text a:hover, .navbar-light .navbar-text a:focus {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-dark .navbar-brand {\n color: #fff;\n}\n\n.navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus {\n color: #fff;\n}\n\n.navbar-dark .navbar-nav .nav-link {\n color: rgba(255, 255, 255, 0.5);\n}\n\n.navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus {\n color: rgba(255, 255, 255, 0.75);\n}\n\n.navbar-dark .navbar-nav .nav-link.disabled {\n color: rgba(255, 255, 255, 0.25);\n}\n\n.navbar-dark .navbar-nav .show > .nav-link,\n.navbar-dark .navbar-nav .active > .nav-link,\n.navbar-dark .navbar-nav .nav-link.show,\n.navbar-dark .navbar-nav .nav-link.active {\n color: #fff;\n}\n\n.navbar-dark .navbar-toggler {\n color: rgba(255, 255, 255, 0.5);\n border-color: rgba(255, 255, 255, 0.1);\n}\n\n.navbar-dark .navbar-toggler-icon {\n background-image: url(\"data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n}\n\n.navbar-dark .navbar-text {\n color: rgba(255, 255, 255, 0.5);\n}\n\n.navbar-dark .navbar-text a {\n color: #fff;\n}\n\n.navbar-dark .navbar-text a:hover, .navbar-dark .navbar-text a:focus {\n color: #fff;\n}\n\n.card {\n position: relative;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n min-width: 0;\n word-wrap: break-word;\n background-color: #fff;\n background-clip: border-box;\n border: 1px solid rgba(0, 0, 0, 0.125);\n border-radius: 0.25rem;\n}\n\n.card > hr {\n margin-right: 0;\n margin-left: 0;\n}\n\n.card > .list-group:first-child .list-group-item:first-child {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.card > .list-group:last-child .list-group-item:last-child {\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.card-body {\n -ms-flex: 1 1 auto;\n flex: 1 1 auto;\n padding: 1.25rem;\n}\n\n.card-title {\n margin-bottom: 0.75rem;\n}\n\n.card-subtitle {\n margin-top: -0.375rem;\n margin-bottom: 0;\n}\n\n.card-text:last-child {\n margin-bottom: 0;\n}\n\n.card-link:hover {\n text-decoration: none;\n}\n\n.card-link + .card-link {\n margin-left: 1.25rem;\n}\n\n.card-header {\n padding: 0.75rem 1.25rem;\n margin-bottom: 0;\n color: inherit;\n background-color: rgba(0, 0, 0, 0.03);\n border-bottom: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-header:first-child {\n border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;\n}\n\n.card-header + .list-group .list-group-item:first-child {\n border-top: 0;\n}\n\n.card-footer {\n padding: 0.75rem 1.25rem;\n background-color: rgba(0, 0, 0, 0.03);\n border-top: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-footer:last-child {\n border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px);\n}\n\n.card-header-tabs {\n margin-right: -0.625rem;\n margin-bottom: -0.75rem;\n margin-left: -0.625rem;\n border-bottom: 0;\n}\n\n.card-header-pills {\n margin-right: -0.625rem;\n margin-left: -0.625rem;\n}\n\n.card-img-overlay {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n padding: 1.25rem;\n}\n\n.card-img {\n width: 100%;\n border-radius: calc(0.25rem - 1px);\n}\n\n.card-img-top {\n width: 100%;\n border-top-left-radius: calc(0.25rem - 1px);\n border-top-right-radius: calc(0.25rem - 1px);\n}\n\n.card-img-bottom {\n width: 100%;\n border-bottom-right-radius: calc(0.25rem - 1px);\n border-bottom-left-radius: calc(0.25rem - 1px);\n}\n\n.card-deck {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n}\n\n.card-deck .card {\n margin-bottom: 15px;\n}\n\n@media (min-width: 576px) {\n .card-deck {\n -ms-flex-flow: row wrap;\n flex-flow: row wrap;\n margin-right: -15px;\n margin-left: -15px;\n }\n .card-deck .card {\n display: -ms-flexbox;\n display: flex;\n -ms-flex: 1 0 0%;\n flex: 1 0 0%;\n -ms-flex-direction: column;\n flex-direction: column;\n margin-right: 15px;\n margin-bottom: 0;\n margin-left: 15px;\n }\n}\n\n.card-group {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n}\n\n.card-group > .card {\n margin-bottom: 15px;\n}\n\n@media (min-width: 576px) {\n .card-group {\n -ms-flex-flow: row wrap;\n flex-flow: row wrap;\n }\n .card-group > .card {\n -ms-flex: 1 0 0%;\n flex: 1 0 0%;\n margin-bottom: 0;\n }\n .card-group > .card + .card {\n margin-left: 0;\n border-left: 0;\n }\n .card-group > .card:first-child {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n .card-group > .card:first-child .card-img-top,\n .card-group > .card:first-child .card-header {\n border-top-right-radius: 0;\n }\n .card-group > .card:first-child .card-img-bottom,\n .card-group > .card:first-child .card-footer {\n border-bottom-right-radius: 0;\n }\n .card-group > .card:last-child {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n .card-group > .card:last-child .card-img-top,\n .card-group > .card:last-child .card-header {\n border-top-left-radius: 0;\n }\n .card-group > .card:last-child .card-img-bottom,\n .card-group > .card:last-child .card-footer {\n border-bottom-left-radius: 0;\n }\n .card-group > .card:only-child {\n border-radius: 0.25rem;\n }\n .card-group > .card:only-child .card-img-top,\n .card-group > .card:only-child .card-header {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n }\n .card-group > .card:only-child .card-img-bottom,\n .card-group > .card:only-child .card-footer {\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n }\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) {\n border-radius: 0;\n }\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-top,\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-header,\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-footer {\n border-radius: 0;\n }\n}\n\n.card-columns .card {\n margin-bottom: 0.75rem;\n}\n\n@media (min-width: 576px) {\n .card-columns {\n -webkit-column-count: 3;\n -moz-column-count: 3;\n column-count: 3;\n -webkit-column-gap: 1.25rem;\n -moz-column-gap: 1.25rem;\n column-gap: 1.25rem;\n orphans: 1;\n widows: 1;\n }\n .card-columns .card {\n display: inline-block;\n width: 100%;\n }\n}\n\n.accordion .card {\n overflow: hidden;\n}\n\n.accordion .card:not(:first-of-type) .card-header:first-child {\n border-radius: 0;\n}\n\n.accordion .card:not(:first-of-type):not(:last-of-type) {\n border-bottom: 0;\n border-radius: 0;\n}\n\n.accordion .card:first-of-type {\n border-bottom: 0;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.accordion .card:last-of-type {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.accordion .card .card-header {\n margin-bottom: -1px;\n}\n\n.breadcrumb {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n padding: 0.75rem 1rem;\n margin-bottom: 1rem;\n list-style: none;\n background-color: #e9ecef;\n border-radius: 0.25rem;\n}\n\n.breadcrumb-item + .breadcrumb-item {\n padding-left: 0.5rem;\n}\n\n.breadcrumb-item + .breadcrumb-item::before {\n display: inline-block;\n padding-right: 0.5rem;\n color: #6c757d;\n content: \"/\";\n}\n\n.breadcrumb-item + .breadcrumb-item:hover::before {\n text-decoration: underline;\n}\n\n.breadcrumb-item + .breadcrumb-item:hover::before {\n text-decoration: none;\n}\n\n.breadcrumb-item.active {\n color: #6c757d;\n}\n\n.pagination {\n display: -ms-flexbox;\n display: flex;\n padding-left: 0;\n list-style: none;\n border-radius: 0.25rem;\n}\n\n.page-link {\n position: relative;\n display: block;\n padding: 0.5rem 0.75rem;\n margin-left: -1px;\n line-height: 1.25;\n color: #007bff;\n background-color: #fff;\n border: 1px solid #dee2e6;\n}\n\n.page-link:hover {\n z-index: 2;\n color: #0056b3;\n text-decoration: none;\n background-color: #e9ecef;\n border-color: #dee2e6;\n}\n\n.page-link:focus {\n z-index: 2;\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.page-link:not(:disabled):not(.disabled) {\n cursor: pointer;\n}\n\n.page-item:first-child .page-link {\n margin-left: 0;\n border-top-left-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.page-item:last-child .page-link {\n border-top-right-radius: 0.25rem;\n border-bottom-right-radius: 0.25rem;\n}\n\n.page-item.active .page-link {\n z-index: 1;\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.page-item.disabled .page-link {\n color: #6c757d;\n pointer-events: none;\n cursor: auto;\n background-color: #fff;\n border-color: #dee2e6;\n}\n\n.pagination-lg .page-link {\n padding: 0.75rem 1.5rem;\n font-size: 1.25rem;\n line-height: 1.5;\n}\n\n.pagination-lg .page-item:first-child .page-link {\n border-top-left-radius: 0.3rem;\n border-bottom-left-radius: 0.3rem;\n}\n\n.pagination-lg .page-item:last-child .page-link {\n border-top-right-radius: 0.3rem;\n border-bottom-right-radius: 0.3rem;\n}\n\n.pagination-sm .page-link {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n}\n\n.pagination-sm .page-item:first-child .page-link {\n border-top-left-radius: 0.2rem;\n border-bottom-left-radius: 0.2rem;\n}\n\n.pagination-sm .page-item:last-child .page-link {\n border-top-right-radius: 0.2rem;\n border-bottom-right-radius: 0.2rem;\n}\n\n.badge {\n display: inline-block;\n padding: 0.25em 0.4em;\n font-size: 75%;\n font-weight: 700;\n line-height: 1;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: 0.25rem;\n}\n\na.badge:hover, a.badge:focus {\n text-decoration: none;\n}\n\n.badge:empty {\n display: none;\n}\n\n.btn .badge {\n position: relative;\n top: -1px;\n}\n\n.badge-pill {\n padding-right: 0.6em;\n padding-left: 0.6em;\n border-radius: 10rem;\n}\n\n.badge-primary {\n color: #fff;\n background-color: #007bff;\n}\n\na.badge-primary:hover, a.badge-primary:focus {\n color: #fff;\n background-color: #0062cc;\n}\n\n.badge-secondary {\n color: #fff;\n background-color: #6c757d;\n}\n\na.badge-secondary:hover, a.badge-secondary:focus {\n color: #fff;\n background-color: #545b62;\n}\n\n.badge-success {\n color: #fff;\n background-color: #28a745;\n}\n\na.badge-success:hover, a.badge-success:focus {\n color: #fff;\n background-color: #1e7e34;\n}\n\n.badge-info {\n color: #fff;\n background-color: #17a2b8;\n}\n\na.badge-info:hover, a.badge-info:focus {\n color: #fff;\n background-color: #117a8b;\n}\n\n.badge-warning {\n color: #212529;\n background-color: #ffc107;\n}\n\na.badge-warning:hover, a.badge-warning:focus {\n color: #212529;\n background-color: #d39e00;\n}\n\n.badge-danger {\n color: #fff;\n background-color: #dc3545;\n}\n\na.badge-danger:hover, a.badge-danger:focus {\n color: #fff;\n background-color: #bd2130;\n}\n\n.badge-light {\n color: #212529;\n background-color: #f8f9fa;\n}\n\na.badge-light:hover, a.badge-light:focus {\n color: #212529;\n background-color: #dae0e5;\n}\n\n.badge-dark {\n color: #fff;\n background-color: #343a40;\n}\n\na.badge-dark:hover, a.badge-dark:focus {\n color: #fff;\n background-color: #1d2124;\n}\n\n.jumbotron {\n padding: 2rem 1rem;\n margin-bottom: 2rem;\n background-color: #e9ecef;\n border-radius: 0.3rem;\n}\n\n@media (min-width: 576px) {\n .jumbotron {\n padding: 4rem 2rem;\n }\n}\n\n.jumbotron-fluid {\n padding-right: 0;\n padding-left: 0;\n border-radius: 0;\n}\n\n.alert {\n position: relative;\n padding: 0.75rem 1.25rem;\n margin-bottom: 1rem;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n}\n\n.alert-heading {\n color: inherit;\n}\n\n.alert-link {\n font-weight: 700;\n}\n\n.alert-dismissible {\n padding-right: 4rem;\n}\n\n.alert-dismissible .close {\n position: absolute;\n top: 0;\n right: 0;\n padding: 0.75rem 1.25rem;\n color: inherit;\n}\n\n.alert-primary {\n color: #004085;\n background-color: #cce5ff;\n border-color: #b8daff;\n}\n\n.alert-primary hr {\n border-top-color: #9fcdff;\n}\n\n.alert-primary .alert-link {\n color: #002752;\n}\n\n.alert-secondary {\n color: #383d41;\n background-color: #e2e3e5;\n border-color: #d6d8db;\n}\n\n.alert-secondary hr {\n border-top-color: #c8cbcf;\n}\n\n.alert-secondary .alert-link {\n color: #202326;\n}\n\n.alert-success {\n color: #155724;\n background-color: #d4edda;\n border-color: #c3e6cb;\n}\n\n.alert-success hr {\n border-top-color: #b1dfbb;\n}\n\n.alert-success .alert-link {\n color: #0b2e13;\n}\n\n.alert-info {\n color: #0c5460;\n background-color: #d1ecf1;\n border-color: #bee5eb;\n}\n\n.alert-info hr {\n border-top-color: #abdde5;\n}\n\n.alert-info .alert-link {\n color: #062c33;\n}\n\n.alert-warning {\n color: #856404;\n background-color: #fff3cd;\n border-color: #ffeeba;\n}\n\n.alert-warning hr {\n border-top-color: #ffe8a1;\n}\n\n.alert-warning .alert-link {\n color: #533f03;\n}\n\n.alert-danger {\n color: #721c24;\n background-color: #f8d7da;\n border-color: #f5c6cb;\n}\n\n.alert-danger hr {\n border-top-color: #f1b0b7;\n}\n\n.alert-danger .alert-link {\n color: #491217;\n}\n\n.alert-light {\n color: #818182;\n background-color: #fefefe;\n border-color: #fdfdfe;\n}\n\n.alert-light hr {\n border-top-color: #ececf6;\n}\n\n.alert-light .alert-link {\n color: #686868;\n}\n\n.alert-dark {\n color: #1b1e21;\n background-color: #d6d8d9;\n border-color: #c6c8ca;\n}\n\n.alert-dark hr {\n border-top-color: #b9bbbe;\n}\n\n.alert-dark .alert-link {\n color: #040505;\n}\n\n@-webkit-keyframes progress-bar-stripes {\n from {\n background-position: 1rem 0;\n }\n to {\n background-position: 0 0;\n }\n}\n\n@keyframes progress-bar-stripes {\n from {\n background-position: 1rem 0;\n }\n to {\n background-position: 0 0;\n }\n}\n\n.progress {\n display: -ms-flexbox;\n display: flex;\n height: 1rem;\n overflow: hidden;\n font-size: 0.75rem;\n background-color: #e9ecef;\n border-radius: 0.25rem;\n}\n\n.progress-bar {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n -ms-flex-pack: center;\n justify-content: center;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n background-color: #007bff;\n transition: width 0.6s ease;\n}\n\n@media screen and (prefers-reduced-motion: reduce) {\n .progress-bar {\n transition: none;\n }\n}\n\n.progress-bar-striped {\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-size: 1rem 1rem;\n}\n\n.progress-bar-animated {\n -webkit-animation: progress-bar-stripes 1s linear infinite;\n animation: progress-bar-stripes 1s linear infinite;\n}\n\n.media {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: start;\n align-items: flex-start;\n}\n\n.media-body {\n -ms-flex: 1;\n flex: 1;\n}\n\n.list-group {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n}\n\n.list-group-item-action {\n width: 100%;\n color: #495057;\n text-align: inherit;\n}\n\n.list-group-item-action:hover, .list-group-item-action:focus {\n color: #495057;\n text-decoration: none;\n background-color: #f8f9fa;\n}\n\n.list-group-item-action:active {\n color: #212529;\n background-color: #e9ecef;\n}\n\n.list-group-item {\n position: relative;\n display: block;\n padding: 0.75rem 1.25rem;\n margin-bottom: -1px;\n background-color: #fff;\n border: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.list-group-item:first-child {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.list-group-item:last-child {\n margin-bottom: 0;\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.list-group-item:hover, .list-group-item:focus {\n z-index: 1;\n text-decoration: none;\n}\n\n.list-group-item.disabled, .list-group-item:disabled {\n color: #6c757d;\n pointer-events: none;\n background-color: #fff;\n}\n\n.list-group-item.active {\n z-index: 2;\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.list-group-flush .list-group-item {\n border-right: 0;\n border-left: 0;\n border-radius: 0;\n}\n\n.list-group-flush .list-group-item:last-child {\n margin-bottom: -1px;\n}\n\n.list-group-flush:first-child .list-group-item:first-child {\n border-top: 0;\n}\n\n.list-group-flush:last-child .list-group-item:last-child {\n margin-bottom: 0;\n border-bottom: 0;\n}\n\n.list-group-item-primary {\n color: #004085;\n background-color: #b8daff;\n}\n\n.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus {\n color: #004085;\n background-color: #9fcdff;\n}\n\n.list-group-item-primary.list-group-item-action.active {\n color: #fff;\n background-color: #004085;\n border-color: #004085;\n}\n\n.list-group-item-secondary {\n color: #383d41;\n background-color: #d6d8db;\n}\n\n.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus {\n color: #383d41;\n background-color: #c8cbcf;\n}\n\n.list-group-item-secondary.list-group-item-action.active {\n color: #fff;\n background-color: #383d41;\n border-color: #383d41;\n}\n\n.list-group-item-success {\n color: #155724;\n background-color: #c3e6cb;\n}\n\n.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus {\n color: #155724;\n background-color: #b1dfbb;\n}\n\n.list-group-item-success.list-group-item-action.active {\n color: #fff;\n background-color: #155724;\n border-color: #155724;\n}\n\n.list-group-item-info {\n color: #0c5460;\n background-color: #bee5eb;\n}\n\n.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus {\n color: #0c5460;\n background-color: #abdde5;\n}\n\n.list-group-item-info.list-group-item-action.active {\n color: #fff;\n background-color: #0c5460;\n border-color: #0c5460;\n}\n\n.list-group-item-warning {\n color: #856404;\n background-color: #ffeeba;\n}\n\n.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus {\n color: #856404;\n background-color: #ffe8a1;\n}\n\n.list-group-item-warning.list-group-item-action.active {\n color: #fff;\n background-color: #856404;\n border-color: #856404;\n}\n\n.list-group-item-danger {\n color: #721c24;\n background-color: #f5c6cb;\n}\n\n.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus {\n color: #721c24;\n background-color: #f1b0b7;\n}\n\n.list-group-item-danger.list-group-item-action.active {\n color: #fff;\n background-color: #721c24;\n border-color: #721c24;\n}\n\n.list-group-item-light {\n color: #818182;\n background-color: #fdfdfe;\n}\n\n.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus {\n color: #818182;\n background-color: #ececf6;\n}\n\n.list-group-item-light.list-group-item-action.active {\n color: #fff;\n background-color: #818182;\n border-color: #818182;\n}\n\n.list-group-item-dark {\n color: #1b1e21;\n background-color: #c6c8ca;\n}\n\n.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus {\n color: #1b1e21;\n background-color: #b9bbbe;\n}\n\n.list-group-item-dark.list-group-item-action.active {\n color: #fff;\n background-color: #1b1e21;\n border-color: #1b1e21;\n}\n\n.close {\n float: right;\n font-size: 1.5rem;\n font-weight: 700;\n line-height: 1;\n color: #000;\n text-shadow: 0 1px 0 #fff;\n opacity: .5;\n}\n\n.close:hover {\n color: #000;\n text-decoration: none;\n}\n\n.close:not(:disabled):not(.disabled) {\n cursor: pointer;\n}\n\n.close:not(:disabled):not(.disabled):hover, .close:not(:disabled):not(.disabled):focus {\n opacity: .75;\n}\n\nbutton.close {\n padding: 0;\n background-color: transparent;\n border: 0;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n}\n\na.close.disabled {\n pointer-events: none;\n}\n\n.toast {\n max-width: 350px;\n overflow: hidden;\n font-size: 0.875rem;\n background-color: rgba(255, 255, 255, 0.85);\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.1);\n border-radius: 0.25rem;\n box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.1);\n -webkit-backdrop-filter: blur(10px);\n backdrop-filter: blur(10px);\n opacity: 0;\n}\n\n.toast:not(:last-child) {\n margin-bottom: 0.75rem;\n}\n\n.toast.showing {\n opacity: 1;\n}\n\n.toast.show {\n display: block;\n opacity: 1;\n}\n\n.toast.hide {\n display: none;\n}\n\n.toast-header {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n padding: 0.25rem 0.75rem;\n color: #6c757d;\n background-color: rgba(255, 255, 255, 0.85);\n background-clip: padding-box;\n border-bottom: 1px solid rgba(0, 0, 0, 0.05);\n}\n\n.toast-body {\n padding: 0.75rem;\n}\n\n.modal-open {\n overflow: hidden;\n}\n\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n\n.modal {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 1050;\n display: none;\n width: 100%;\n height: 100%;\n overflow: hidden;\n outline: 0;\n}\n\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 0.5rem;\n pointer-events: none;\n}\n\n.modal.fade .modal-dialog {\n transition: -webkit-transform 0.3s ease-out;\n transition: transform 0.3s ease-out;\n transition: transform 0.3s ease-out, -webkit-transform 0.3s ease-out;\n -webkit-transform: translate(0, -50px);\n transform: translate(0, -50px);\n}\n\n@media screen and (prefers-reduced-motion: reduce) {\n .modal.fade .modal-dialog {\n transition: none;\n }\n}\n\n.modal.show .modal-dialog {\n -webkit-transform: none;\n transform: none;\n}\n\n.modal-dialog-centered {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n min-height: calc(100% - (0.5rem * 2));\n}\n\n.modal-dialog-centered::before {\n display: block;\n height: calc(100vh - (0.5rem * 2));\n content: \"\";\n}\n\n.modal-content {\n position: relative;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n width: 100%;\n pointer-events: auto;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 0.3rem;\n outline: 0;\n}\n\n.modal-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 1040;\n width: 100vw;\n height: 100vh;\n background-color: #000;\n}\n\n.modal-backdrop.fade {\n opacity: 0;\n}\n\n.modal-backdrop.show {\n opacity: 0.5;\n}\n\n.modal-header {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: start;\n align-items: flex-start;\n -ms-flex-pack: justify;\n justify-content: space-between;\n padding: 1rem 1rem;\n border-bottom: 1px solid #e9ecef;\n border-top-left-radius: 0.3rem;\n border-top-right-radius: 0.3rem;\n}\n\n.modal-header .close {\n padding: 1rem 1rem;\n margin: -1rem -1rem -1rem auto;\n}\n\n.modal-title {\n margin-bottom: 0;\n line-height: 1.5;\n}\n\n.modal-body {\n position: relative;\n -ms-flex: 1 1 auto;\n flex: 1 1 auto;\n padding: 1rem;\n}\n\n.modal-footer {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: end;\n justify-content: flex-end;\n padding: 1rem;\n border-top: 1px solid #e9ecef;\n border-bottom-right-radius: 0.3rem;\n border-bottom-left-radius: 0.3rem;\n}\n\n.modal-footer > :not(:first-child) {\n margin-left: .25rem;\n}\n\n.modal-footer > :not(:last-child) {\n margin-right: .25rem;\n}\n\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n\n@media (min-width: 576px) {\n .modal-dialog {\n max-width: 500px;\n margin: 1.75rem auto;\n }\n .modal-dialog-centered {\n min-height: calc(100% - (1.75rem * 2));\n }\n .modal-dialog-centered::before {\n height: calc(100vh - (1.75rem * 2));\n }\n .modal-sm {\n max-width: 300px;\n }\n}\n\n@media (min-width: 992px) {\n .modal-lg,\n .modal-xl {\n max-width: 800px;\n }\n}\n\n@media (min-width: 1200px) {\n .modal-xl {\n max-width: 1140px;\n }\n}\n\n.tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n margin: 0;\n /* font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\"; */\n font-style: normal;\n font-weight: 400;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n font-size: 0.875rem;\n word-wrap: break-word;\n opacity: 0;\n}\n\n.tooltip.show {\n opacity: 0.9;\n}\n\n.tooltip .arrow {\n position: absolute;\n display: block;\n width: 0.8rem;\n height: 0.4rem;\n}\n\n.tooltip .arrow::before {\n position: absolute;\n content: \"\";\n border-color: transparent;\n border-style: solid;\n}\n\n.bs-tooltip-top, .bs-tooltip-auto[x-placement^=\"top\"] {\n padding: 0.4rem 0;\n}\n\n.bs-tooltip-top .arrow, .bs-tooltip-auto[x-placement^=\"top\"] .arrow {\n bottom: 0;\n}\n\n.bs-tooltip-top .arrow::before, .bs-tooltip-auto[x-placement^=\"top\"] .arrow::before {\n top: 0;\n border-width: 0.4rem 0.4rem 0;\n border-top-color: #000;\n}\n\n.bs-tooltip-right, .bs-tooltip-auto[x-placement^=\"right\"] {\n padding: 0 0.4rem;\n}\n\n.bs-tooltip-right .arrow, .bs-tooltip-auto[x-placement^=\"right\"] .arrow {\n left: 0;\n width: 0.4rem;\n height: 0.8rem;\n}\n\n.bs-tooltip-right .arrow::before, .bs-tooltip-auto[x-placement^=\"right\"] .arrow::before {\n right: 0;\n border-width: 0.4rem 0.4rem 0.4rem 0;\n border-right-color: #000;\n}\n\n.bs-tooltip-bottom, .bs-tooltip-auto[x-placement^=\"bottom\"] {\n padding: 0.4rem 0;\n}\n\n.bs-tooltip-bottom .arrow, .bs-tooltip-auto[x-placement^=\"bottom\"] .arrow {\n top: 0;\n}\n\n.bs-tooltip-bottom .arrow::before, .bs-tooltip-auto[x-placement^=\"bottom\"] .arrow::before {\n bottom: 0;\n border-width: 0 0.4rem 0.4rem;\n border-bottom-color: #000;\n}\n\n.bs-tooltip-left, .bs-tooltip-auto[x-placement^=\"left\"] {\n padding: 0 0.4rem;\n}\n\n.bs-tooltip-left .arrow, .bs-tooltip-auto[x-placement^=\"left\"] .arrow {\n right: 0;\n width: 0.4rem;\n height: 0.8rem;\n}\n\n.bs-tooltip-left .arrow::before, .bs-tooltip-auto[x-placement^=\"left\"] .arrow::before {\n left: 0;\n border-width: 0.4rem 0 0.4rem 0.4rem;\n border-left-color: #000;\n}\n\n.tooltip-inner {\n max-width: 200px;\n padding: 0.25rem 0.5rem;\n color: #fff;\n text-align: center;\n background-color: #000;\n border-radius: 0.25rem;\n}\n\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1060;\n display: block;\n max-width: 276px;\n /* font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\"; */\n font-style: normal;\n font-weight: 400;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n font-size: 0.875rem;\n word-wrap: break-word;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 0.3rem;\n}\n\n.popover .arrow {\n position: absolute;\n display: block;\n width: 1rem;\n height: 0.5rem;\n margin: 0 0.3rem;\n}\n\n.popover .arrow::before, .popover .arrow::after {\n position: absolute;\n display: block;\n content: \"\";\n border-color: transparent;\n border-style: solid;\n}\n\n.bs-popover-top, .bs-popover-auto[x-placement^=\"top\"] {\n margin-bottom: 0.5rem;\n}\n\n.bs-popover-top .arrow, .bs-popover-auto[x-placement^=\"top\"] .arrow {\n bottom: calc((0.5rem + 1px) * -1);\n}\n\n.bs-popover-top .arrow::before, .bs-popover-auto[x-placement^=\"top\"] .arrow::before,\n.bs-popover-top .arrow::after,\n.bs-popover-auto[x-placement^=\"top\"] .arrow::after {\n border-width: 0.5rem 0.5rem 0;\n}\n\n.bs-popover-top .arrow::before, .bs-popover-auto[x-placement^=\"top\"] .arrow::before {\n bottom: 0;\n border-top-color: rgba(0, 0, 0, 0.25);\n}\n\n\n.bs-popover-top .arrow::after,\n.bs-popover-auto[x-placement^=\"top\"] .arrow::after {\n bottom: 1px;\n border-top-color: #fff;\n}\n\n.bs-popover-right, .bs-popover-auto[x-placement^=\"right\"] {\n margin-left: 0.5rem;\n}\n\n.bs-popover-right .arrow, .bs-popover-auto[x-placement^=\"right\"] .arrow {\n left: calc((0.5rem + 1px) * -1);\n width: 0.5rem;\n height: 1rem;\n margin: 0.3rem 0;\n}\n\n.bs-popover-right .arrow::before, .bs-popover-auto[x-placement^=\"right\"] .arrow::before,\n.bs-popover-right .arrow::after,\n.bs-popover-auto[x-placement^=\"right\"] .arrow::after {\n border-width: 0.5rem 0.5rem 0.5rem 0;\n}\n\n.bs-popover-right .arrow::before, .bs-popover-auto[x-placement^=\"right\"] .arrow::before {\n left: 0;\n border-right-color: rgba(0, 0, 0, 0.25);\n}\n\n\n.bs-popover-right .arrow::after,\n.bs-popover-auto[x-placement^=\"right\"] .arrow::after {\n left: 1px;\n border-right-color: #fff;\n}\n\n.bs-popover-bottom, .bs-popover-auto[x-placement^=\"bottom\"] {\n margin-top: 0.5rem;\n}\n\n.bs-popover-bottom .arrow, .bs-popover-auto[x-placement^=\"bottom\"] .arrow {\n top: calc((0.5rem + 1px) * -1);\n}\n\n.bs-popover-bottom .arrow::before, .bs-popover-auto[x-placement^=\"bottom\"] .arrow::before,\n.bs-popover-bottom .arrow::after,\n.bs-popover-auto[x-placement^=\"bottom\"] .arrow::after {\n border-width: 0 0.5rem 0.5rem 0.5rem;\n}\n\n.bs-popover-bottom .arrow::before, .bs-popover-auto[x-placement^=\"bottom\"] .arrow::before {\n top: 0;\n border-bottom-color: rgba(0, 0, 0, 0.25);\n}\n\n\n.bs-popover-bottom .arrow::after,\n.bs-popover-auto[x-placement^=\"bottom\"] .arrow::after {\n top: 1px;\n border-bottom-color: #fff;\n}\n\n.bs-popover-bottom .popover-header::before, .bs-popover-auto[x-placement^=\"bottom\"] .popover-header::before {\n position: absolute;\n top: 0;\n left: 50%;\n display: block;\n width: 1rem;\n margin-left: -0.5rem;\n content: \"\";\n border-bottom: 1px solid #f7f7f7;\n}\n\n.bs-popover-left, .bs-popover-auto[x-placement^=\"left\"] {\n margin-right: 0.5rem;\n}\n\n.bs-popover-left .arrow, .bs-popover-auto[x-placement^=\"left\"] .arrow {\n right: calc((0.5rem + 1px) * -1);\n width: 0.5rem;\n height: 1rem;\n margin: 0.3rem 0;\n}\n\n.bs-popover-left .arrow::before, .bs-popover-auto[x-placement^=\"left\"] .arrow::before,\n.bs-popover-left .arrow::after,\n.bs-popover-auto[x-placement^=\"left\"] .arrow::after {\n border-width: 0.5rem 0 0.5rem 0.5rem;\n}\n\n.bs-popover-left .arrow::before, .bs-popover-auto[x-placement^=\"left\"] .arrow::before {\n right: 0;\n border-left-color: rgba(0, 0, 0, 0.25);\n}\n\n\n.bs-popover-left .arrow::after,\n.bs-popover-auto[x-placement^=\"left\"] .arrow::after {\n right: 1px;\n border-left-color: #fff;\n}\n\n.popover-header {\n padding: 0.5rem 0.75rem;\n margin-bottom: 0;\n font-size: 1rem;\n color: inherit;\n background-color: #f7f7f7;\n border-bottom: 1px solid #ebebeb;\n border-top-left-radius: calc(0.3rem - 1px);\n border-top-right-radius: calc(0.3rem - 1px);\n}\n\n.popover-header:empty {\n display: none;\n}\n\n.popover-body {\n padding: 0.5rem 0.75rem;\n color: #212529;\n}\n\n.carousel {\n position: relative;\n}\n\n.carousel.pointer-event {\n -ms-touch-action: pan-y;\n touch-action: pan-y;\n}\n\n.carousel-inner {\n position: relative;\n width: 100%;\n overflow: hidden;\n}\n\n.carousel-inner::after {\n display: block;\n clear: both;\n content: \"\";\n}\n\n.carousel-item {\n position: relative;\n display: none;\n float: left;\n width: 100%;\n margin-right: -100%;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n transition: -webkit-transform 0.6s ease-in-out;\n transition: transform 0.6s ease-in-out;\n transition: transform 0.6s ease-in-out, -webkit-transform 0.6s ease-in-out;\n}\n\n@media screen and (prefers-reduced-motion: reduce) {\n .carousel-item {\n transition: none;\n }\n}\n\n.carousel-item.active,\n.carousel-item-next,\n.carousel-item-prev {\n display: block;\n}\n\n.carousel-item-next:not(.carousel-item-left),\n.active.carousel-item-right {\n -webkit-transform: translateX(100%);\n transform: translateX(100%);\n}\n\n.carousel-item-prev:not(.carousel-item-right),\n.active.carousel-item-left {\n -webkit-transform: translateX(-100%);\n transform: translateX(-100%);\n}\n\n.carousel-fade .carousel-item {\n opacity: 0;\n transition-property: opacity;\n -webkit-transform: none;\n transform: none;\n}\n\n.carousel-fade .carousel-item.active,\n.carousel-fade .carousel-item-next.carousel-item-left,\n.carousel-fade .carousel-item-prev.carousel-item-right {\n z-index: 1;\n opacity: 1;\n}\n\n.carousel-fade .active.carousel-item-left,\n.carousel-fade .active.carousel-item-right {\n z-index: 0;\n opacity: 0;\n transition: 0s 0.6s opacity;\n}\n\n@media screen and (prefers-reduced-motion: reduce) {\n .carousel-fade .active.carousel-item-left,\n .carousel-fade .active.carousel-item-right {\n transition: none;\n }\n}\n\n.carousel-control-prev,\n.carousel-control-next {\n position: absolute;\n top: 0;\n bottom: 0;\n z-index: 1;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: center;\n justify-content: center;\n width: 15%;\n color: #fff;\n text-align: center;\n opacity: 0.5;\n transition: opacity 0.15s ease;\n}\n\n@media screen and (prefers-reduced-motion: reduce) {\n .carousel-control-prev,\n .carousel-control-next {\n transition: none;\n }\n}\n\n.carousel-control-prev:hover, .carousel-control-prev:focus,\n.carousel-control-next:hover,\n.carousel-control-next:focus {\n color: #fff;\n text-decoration: none;\n outline: 0;\n opacity: 0.9;\n}\n\n.carousel-control-prev {\n left: 0;\n}\n\n.carousel-control-next {\n right: 0;\n}\n\n.carousel-control-prev-icon,\n.carousel-control-next-icon {\n display: inline-block;\n width: 20px;\n height: 20px;\n background: transparent no-repeat center center;\n background-size: 100% 100%;\n}\n\n.carousel-control-prev-icon {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3e%3c/svg%3e\");\n}\n\n.carousel-control-next-icon {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3e%3c/svg%3e\");\n}\n\n.carousel-indicators {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 15;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-pack: center;\n justify-content: center;\n padding-left: 0;\n margin-right: 15%;\n margin-left: 15%;\n list-style: none;\n}\n\n.carousel-indicators li {\n box-sizing: content-box;\n -ms-flex: 0 1 auto;\n flex: 0 1 auto;\n width: 30px;\n height: 3px;\n margin-right: 3px;\n margin-left: 3px;\n text-indent: -999px;\n cursor: pointer;\n background-color: #fff;\n background-clip: padding-box;\n border-top: 10px solid transparent;\n border-bottom: 10px solid transparent;\n opacity: .5;\n transition: opacity 0.6s ease;\n}\n\n@media screen and (prefers-reduced-motion: reduce) {\n .carousel-indicators li {\n transition: none;\n }\n}\n\n.carousel-indicators .active {\n opacity: 1;\n}\n\n.carousel-caption {\n position: absolute;\n right: 15%;\n bottom: 20px;\n left: 15%;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: #fff;\n text-align: center;\n}\n\n@-webkit-keyframes spinner-border {\n to {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n@keyframes spinner-border {\n to {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n.spinner-border {\n display: inline-block;\n width: 2rem;\n height: 2rem;\n vertical-align: text-bottom;\n border: 0.25em solid currentColor;\n border-right-color: transparent;\n border-radius: 50%;\n -webkit-animation: spinner-border .75s linear infinite;\n animation: spinner-border .75s linear infinite;\n}\n\n.spinner-border-sm {\n width: 1rem;\n height: 1rem;\n border-width: 0.2em;\n}\n\n@-webkit-keyframes spinner-grow {\n 0% {\n -webkit-transform: scale(0);\n transform: scale(0);\n }\n 50% {\n opacity: 1;\n }\n}\n\n@keyframes spinner-grow {\n 0% {\n -webkit-transform: scale(0);\n transform: scale(0);\n }\n 50% {\n opacity: 1;\n }\n}\n\n.spinner-grow {\n display: inline-block;\n width: 2rem;\n height: 2rem;\n vertical-align: text-bottom;\n background-color: currentColor;\n border-radius: 50%;\n opacity: 0;\n -webkit-animation: spinner-grow .75s linear infinite;\n animation: spinner-grow .75s linear infinite;\n}\n\n.spinner-grow-sm {\n width: 1rem;\n height: 1rem;\n}\n\n.align-baseline {\n vertical-align: baseline !important;\n}\n\n.align-top {\n vertical-align: top !important;\n}\n\n.align-middle {\n vertical-align: middle !important;\n}\n\n.align-bottom {\n vertical-align: bottom !important;\n}\n\n.align-text-bottom {\n vertical-align: text-bottom !important;\n}\n\n.align-text-top {\n vertical-align: text-top !important;\n}\n\n.bg-primary {\n background-color: #007bff !important;\n}\n\na.bg-primary:hover, a.bg-primary:focus,\nbutton.bg-primary:hover,\nbutton.bg-primary:focus {\n background-color: #0062cc !important;\n}\n\n.bg-secondary {\n background-color: #6c757d !important;\n}\n\na.bg-secondary:hover, a.bg-secondary:focus,\nbutton.bg-secondary:hover,\nbutton.bg-secondary:focus {\n background-color: #545b62 !important;\n}\n\n.bg-success {\n background-color: #28a745 !important;\n}\n\na.bg-success:hover, a.bg-success:focus,\nbutton.bg-success:hover,\nbutton.bg-success:focus {\n background-color: #1e7e34 !important;\n}\n\n.bg-info {\n background-color: #17a2b8 !important;\n}\n\na.bg-info:hover, a.bg-info:focus,\nbutton.bg-info:hover,\nbutton.bg-info:focus {\n background-color: #117a8b !important;\n}\n\n.bg-warning {\n background-color: #ffc107 !important;\n}\n\na.bg-warning:hover, a.bg-warning:focus,\nbutton.bg-warning:hover,\nbutton.bg-warning:focus {\n background-color: #d39e00 !important;\n}\n\n.bg-danger {\n background-color: #dc3545 !important;\n}\n\na.bg-danger:hover, a.bg-danger:focus,\nbutton.bg-danger:hover,\nbutton.bg-danger:focus {\n background-color: #bd2130 !important;\n}\n\n.bg-light {\n background-color: #f8f9fa !important;\n}\n\na.bg-light:hover, a.bg-light:focus,\nbutton.bg-light:hover,\nbutton.bg-light:focus {\n background-color: #dae0e5 !important;\n}\n\n.bg-dark {\n background-color: #343a40 !important;\n}\n\na.bg-dark:hover, a.bg-dark:focus,\nbutton.bg-dark:hover,\nbutton.bg-dark:focus {\n background-color: #1d2124 !important;\n}\n\n.bg-white {\n background-color: #fff !important;\n}\n\n.bg-transparent {\n background-color: transparent !important;\n}\n\n.border {\n border: 1px solid #dee2e6 !important;\n}\n\n.border-top {\n border-top: 1px solid #dee2e6 !important;\n}\n\n.border-right {\n border-right: 1px solid #dee2e6 !important;\n}\n\n.border-bottom {\n border-bottom: 1px solid #dee2e6 !important;\n}\n\n.border-left {\n border-left: 1px solid #dee2e6 !important;\n}\n\n.border-0 {\n border: 0 !important;\n}\n\n.border-top-0 {\n border-top: 0 !important;\n}\n\n.border-right-0 {\n border-right: 0 !important;\n}\n\n.border-bottom-0 {\n border-bottom: 0 !important;\n}\n\n.border-left-0 {\n border-left: 0 !important;\n}\n\n.border-primary {\n border-color: #007bff !important;\n}\n\n.border-secondary {\n border-color: #6c757d !important;\n}\n\n.border-success {\n border-color: #28a745 !important;\n}\n\n.border-info {\n border-color: #17a2b8 !important;\n}\n\n.border-warning {\n border-color: #ffc107 !important;\n}\n\n.border-danger {\n border-color: #dc3545 !important;\n}\n\n.border-light {\n border-color: #f8f9fa !important;\n}\n\n.border-dark {\n border-color: #343a40 !important;\n}\n\n.border-white {\n border-color: #fff !important;\n}\n\n.rounded {\n border-radius: 0.25rem !important;\n}\n\n.rounded-top {\n border-top-left-radius: 0.25rem !important;\n border-top-right-radius: 0.25rem !important;\n}\n\n.rounded-right {\n border-top-right-radius: 0.25rem !important;\n border-bottom-right-radius: 0.25rem !important;\n}\n\n.rounded-bottom {\n border-bottom-right-radius: 0.25rem !important;\n border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-left {\n border-top-left-radius: 0.25rem !important;\n border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-circle {\n border-radius: 50% !important;\n}\n\n.rounded-pill {\n border-radius: 50rem !important;\n}\n\n.rounded-0 {\n border-radius: 0 !important;\n}\n\n.clearfix::after {\n display: block;\n clear: both;\n content: \"\";\n}\n\n.d-none {\n display: none !important;\n}\n\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-row {\n display: table-row !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: -ms-flexbox !important;\n display: flex !important;\n}\n\n.d-inline-flex {\n display: -ms-inline-flexbox !important;\n display: inline-flex !important;\n}\n\n@media (min-width: 576px) {\n .d-sm-none {\n display: none !important;\n }\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-row {\n display: table-row !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: -ms-flexbox !important;\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: -ms-inline-flexbox !important;\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 768px) {\n .d-md-none {\n display: none !important;\n }\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-row {\n display: table-row !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: -ms-flexbox !important;\n display: flex !important;\n }\n .d-md-inline-flex {\n display: -ms-inline-flexbox !important;\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 992px) {\n .d-lg-none {\n display: none !important;\n }\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-row {\n display: table-row !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: -ms-flexbox !important;\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: -ms-inline-flexbox !important;\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 1200px) {\n .d-xl-none {\n display: none !important;\n }\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-row {\n display: table-row !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: -ms-flexbox !important;\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: -ms-inline-flexbox !important;\n display: inline-flex !important;\n }\n}\n\n@media print {\n .d-print-none {\n display: none !important;\n }\n .d-print-inline {\n display: inline !important;\n }\n .d-print-inline-block {\n display: inline-block !important;\n }\n .d-print-block {\n display: block !important;\n }\n .d-print-table {\n display: table !important;\n }\n .d-print-table-row {\n display: table-row !important;\n }\n .d-print-table-cell {\n display: table-cell !important;\n }\n .d-print-flex {\n display: -ms-flexbox !important;\n display: flex !important;\n }\n .d-print-inline-flex {\n display: -ms-inline-flexbox !important;\n display: inline-flex !important;\n }\n}\n\n.embed-responsive {\n position: relative;\n display: block;\n width: 100%;\n padding: 0;\n overflow: hidden;\n}\n\n.embed-responsive::before {\n display: block;\n content: \"\";\n}\n\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border: 0;\n}\n\n.embed-responsive-21by9::before {\n padding-top: 42.857143%;\n}\n\n.embed-responsive-16by9::before {\n padding-top: 56.25%;\n}\n\n.embed-responsive-3by4::before {\n padding-top: 133.333333%;\n}\n\n.embed-responsive-1by1::before {\n padding-top: 100%;\n}\n\n.flex-row {\n -ms-flex-direction: row !important;\n flex-direction: row !important;\n}\n\n.flex-column {\n -ms-flex-direction: column !important;\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n -ms-flex-direction: row-reverse !important;\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n -ms-flex-direction: column-reverse !important;\n flex-direction: column-reverse !important;\n}\n\n.flex-wrap {\n -ms-flex-wrap: wrap !important;\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n -ms-flex-wrap: nowrap !important;\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n -ms-flex-wrap: wrap-reverse !important;\n flex-wrap: wrap-reverse !important;\n}\n\n.flex-fill {\n -ms-flex: 1 1 auto !important;\n flex: 1 1 auto !important;\n}\n\n.flex-grow-0 {\n -ms-flex-positive: 0 !important;\n flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n -ms-flex-positive: 1 !important;\n flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n -ms-flex-negative: 0 !important;\n flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n -ms-flex-negative: 1 !important;\n flex-shrink: 1 !important;\n}\n\n.justify-content-start {\n -ms-flex-pack: start !important;\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n -ms-flex-pack: end !important;\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n -ms-flex-pack: center !important;\n justify-content: center !important;\n}\n\n.justify-content-between {\n -ms-flex-pack: justify !important;\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n -ms-flex-pack: distribute !important;\n justify-content: space-around !important;\n}\n\n.align-items-start {\n -ms-flex-align: start !important;\n align-items: flex-start !important;\n}\n\n.align-items-end {\n -ms-flex-align: end !important;\n align-items: flex-end !important;\n}\n\n.align-items-center {\n -ms-flex-align: center !important;\n align-items: center !important;\n}\n\n.align-items-baseline {\n -ms-flex-align: baseline !important;\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n -ms-flex-align: stretch !important;\n align-items: stretch !important;\n}\n\n.align-content-start {\n -ms-flex-line-pack: start !important;\n align-content: flex-start !important;\n}\n\n.align-content-end {\n -ms-flex-line-pack: end !important;\n align-content: flex-end !important;\n}\n\n.align-content-center {\n -ms-flex-line-pack: center !important;\n align-content: center !important;\n}\n\n.align-content-between {\n -ms-flex-line-pack: justify !important;\n align-content: space-between !important;\n}\n\n.align-content-around {\n -ms-flex-line-pack: distribute !important;\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n -ms-flex-line-pack: stretch !important;\n align-content: stretch !important;\n}\n\n.align-self-auto {\n -ms-flex-item-align: auto !important;\n align-self: auto !important;\n}\n\n.align-self-start {\n -ms-flex-item-align: start !important;\n align-self: flex-start !important;\n}\n\n.align-self-end {\n -ms-flex-item-align: end !important;\n align-self: flex-end !important;\n}\n\n.align-self-center {\n -ms-flex-item-align: center !important;\n align-self: center !important;\n}\n\n.align-self-baseline {\n -ms-flex-item-align: baseline !important;\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n -ms-flex-item-align: stretch !important;\n align-self: stretch !important;\n}\n\n@media (min-width: 576px) {\n .flex-sm-row {\n -ms-flex-direction: row !important;\n flex-direction: row !important;\n }\n .flex-sm-column {\n -ms-flex-direction: column !important;\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n -ms-flex-direction: row-reverse !important;\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n -ms-flex-direction: column-reverse !important;\n flex-direction: column-reverse !important;\n }\n .flex-sm-wrap {\n -ms-flex-wrap: wrap !important;\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n -ms-flex-wrap: nowrap !important;\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n -ms-flex-wrap: wrap-reverse !important;\n flex-wrap: wrap-reverse !important;\n }\n .flex-sm-fill {\n -ms-flex: 1 1 auto !important;\n flex: 1 1 auto !important;\n }\n .flex-sm-grow-0 {\n -ms-flex-positive: 0 !important;\n flex-grow: 0 !important;\n }\n .flex-sm-grow-1 {\n -ms-flex-positive: 1 !important;\n flex-grow: 1 !important;\n }\n .flex-sm-shrink-0 {\n -ms-flex-negative: 0 !important;\n flex-shrink: 0 !important;\n }\n .flex-sm-shrink-1 {\n -ms-flex-negative: 1 !important;\n flex-shrink: 1 !important;\n }\n .justify-content-sm-start {\n -ms-flex-pack: start !important;\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n -ms-flex-pack: end !important;\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n -ms-flex-pack: center !important;\n justify-content: center !important;\n }\n .justify-content-sm-between {\n -ms-flex-pack: justify !important;\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n -ms-flex-pack: distribute !important;\n justify-content: space-around !important;\n }\n .align-items-sm-start {\n -ms-flex-align: start !important;\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n -ms-flex-align: end !important;\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n -ms-flex-align: center !important;\n align-items: center !important;\n }\n .align-items-sm-baseline {\n -ms-flex-align: baseline !important;\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n -ms-flex-align: stretch !important;\n align-items: stretch !important;\n }\n .align-content-sm-start {\n -ms-flex-line-pack: start !important;\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n -ms-flex-line-pack: end !important;\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n -ms-flex-line-pack: center !important;\n align-content: center !important;\n }\n .align-content-sm-between {\n -ms-flex-line-pack: justify !important;\n align-content: space-between !important;\n }\n .align-content-sm-around {\n -ms-flex-line-pack: distribute !important;\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n -ms-flex-line-pack: stretch !important;\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n -ms-flex-item-align: auto !important;\n align-self: auto !important;\n }\n .align-self-sm-start {\n -ms-flex-item-align: start !important;\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n -ms-flex-item-align: end !important;\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n -ms-flex-item-align: center !important;\n align-self: center !important;\n }\n .align-self-sm-baseline {\n -ms-flex-item-align: baseline !important;\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n -ms-flex-item-align: stretch !important;\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 768px) {\n .flex-md-row {\n -ms-flex-direction: row !important;\n flex-direction: row !important;\n }\n .flex-md-column {\n -ms-flex-direction: column !important;\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n -ms-flex-direction: row-reverse !important;\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n -ms-flex-direction: column-reverse !important;\n flex-direction: column-reverse !important;\n }\n .flex-md-wrap {\n -ms-flex-wrap: wrap !important;\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n -ms-flex-wrap: nowrap !important;\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n -ms-flex-wrap: wrap-reverse !important;\n flex-wrap: wrap-reverse !important;\n }\n .flex-md-fill {\n -ms-flex: 1 1 auto !important;\n flex: 1 1 auto !important;\n }\n .flex-md-grow-0 {\n -ms-flex-positive: 0 !important;\n flex-grow: 0 !important;\n }\n .flex-md-grow-1 {\n -ms-flex-positive: 1 !important;\n flex-grow: 1 !important;\n }\n .flex-md-shrink-0 {\n -ms-flex-negative: 0 !important;\n flex-shrink: 0 !important;\n }\n .flex-md-shrink-1 {\n -ms-flex-negative: 1 !important;\n flex-shrink: 1 !important;\n }\n .justify-content-md-start {\n -ms-flex-pack: start !important;\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n -ms-flex-pack: end !important;\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n -ms-flex-pack: center !important;\n justify-content: center !important;\n }\n .justify-content-md-between {\n -ms-flex-pack: justify !important;\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n -ms-flex-pack: distribute !important;\n justify-content: space-around !important;\n }\n .align-items-md-start {\n -ms-flex-align: start !important;\n align-items: flex-start !important;\n }\n .align-items-md-end {\n -ms-flex-align: end !important;\n align-items: flex-end !important;\n }\n .align-items-md-center {\n -ms-flex-align: center !important;\n align-items: center !important;\n }\n .align-items-md-baseline {\n -ms-flex-align: baseline !important;\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n -ms-flex-align: stretch !important;\n align-items: stretch !important;\n }\n .align-content-md-start {\n -ms-flex-line-pack: start !important;\n align-content: flex-start !important;\n }\n .align-content-md-end {\n -ms-flex-line-pack: end !important;\n align-content: flex-end !important;\n }\n .align-content-md-center {\n -ms-flex-line-pack: center !important;\n align-content: center !important;\n }\n .align-content-md-between {\n -ms-flex-line-pack: justify !important;\n align-content: space-between !important;\n }\n .align-content-md-around {\n -ms-flex-line-pack: distribute !important;\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n -ms-flex-line-pack: stretch !important;\n align-content: stretch !important;\n }\n .align-self-md-auto {\n -ms-flex-item-align: auto !important;\n align-self: auto !important;\n }\n .align-self-md-start {\n -ms-flex-item-align: start !important;\n align-self: flex-start !important;\n }\n .align-self-md-end {\n -ms-flex-item-align: end !important;\n align-self: flex-end !important;\n }\n .align-self-md-center {\n -ms-flex-item-align: center !important;\n align-self: center !important;\n }\n .align-self-md-baseline {\n -ms-flex-item-align: baseline !important;\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n -ms-flex-item-align: stretch !important;\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 992px) {\n .flex-lg-row {\n -ms-flex-direction: row !important;\n flex-direction: row !important;\n }\n .flex-lg-column {\n -ms-flex-direction: column !important;\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n -ms-flex-direction: row-reverse !important;\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n -ms-flex-direction: column-reverse !important;\n flex-direction: column-reverse !important;\n }\n .flex-lg-wrap {\n -ms-flex-wrap: wrap !important;\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n -ms-flex-wrap: nowrap !important;\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n -ms-flex-wrap: wrap-reverse !important;\n flex-wrap: wrap-reverse !important;\n }\n .flex-lg-fill {\n -ms-flex: 1 1 auto !important;\n flex: 1 1 auto !important;\n }\n .flex-lg-grow-0 {\n -ms-flex-positive: 0 !important;\n flex-grow: 0 !important;\n }\n .flex-lg-grow-1 {\n -ms-flex-positive: 1 !important;\n flex-grow: 1 !important;\n }\n .flex-lg-shrink-0 {\n -ms-flex-negative: 0 !important;\n flex-shrink: 0 !important;\n }\n .flex-lg-shrink-1 {\n -ms-flex-negative: 1 !important;\n flex-shrink: 1 !important;\n }\n .justify-content-lg-start {\n -ms-flex-pack: start !important;\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n -ms-flex-pack: end !important;\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n -ms-flex-pack: center !important;\n justify-content: center !important;\n }\n .justify-content-lg-between {\n -ms-flex-pack: justify !important;\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n -ms-flex-pack: distribute !important;\n justify-content: space-around !important;\n }\n .align-items-lg-start {\n -ms-flex-align: start !important;\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n -ms-flex-align: end !important;\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n -ms-flex-align: center !important;\n align-items: center !important;\n }\n .align-items-lg-baseline {\n -ms-flex-align: baseline !important;\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n -ms-flex-align: stretch !important;\n align-items: stretch !important;\n }\n .align-content-lg-start {\n -ms-flex-line-pack: start !important;\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n -ms-flex-line-pack: end !important;\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n -ms-flex-line-pack: center !important;\n align-content: center !important;\n }\n .align-content-lg-between {\n -ms-flex-line-pack: justify !important;\n align-content: space-between !important;\n }\n .align-content-lg-around {\n -ms-flex-line-pack: distribute !important;\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n -ms-flex-line-pack: stretch !important;\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n -ms-flex-item-align: auto !important;\n align-self: auto !important;\n }\n .align-self-lg-start {\n -ms-flex-item-align: start !important;\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n -ms-flex-item-align: end !important;\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n -ms-flex-item-align: center !important;\n align-self: center !important;\n }\n .align-self-lg-baseline {\n -ms-flex-item-align: baseline !important;\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n -ms-flex-item-align: stretch !important;\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 1200px) {\n .flex-xl-row {\n -ms-flex-direction: row !important;\n flex-direction: row !important;\n }\n .flex-xl-column {\n -ms-flex-direction: column !important;\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n -ms-flex-direction: row-reverse !important;\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n -ms-flex-direction: column-reverse !important;\n flex-direction: column-reverse !important;\n }\n .flex-xl-wrap {\n -ms-flex-wrap: wrap !important;\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n -ms-flex-wrap: nowrap !important;\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n -ms-flex-wrap: wrap-reverse !important;\n flex-wrap: wrap-reverse !important;\n }\n .flex-xl-fill {\n -ms-flex: 1 1 auto !important;\n flex: 1 1 auto !important;\n }\n .flex-xl-grow-0 {\n -ms-flex-positive: 0 !important;\n flex-grow: 0 !important;\n }\n .flex-xl-grow-1 {\n -ms-flex-positive: 1 !important;\n flex-grow: 1 !important;\n }\n .flex-xl-shrink-0 {\n -ms-flex-negative: 0 !important;\n flex-shrink: 0 !important;\n }\n .flex-xl-shrink-1 {\n -ms-flex-negative: 1 !important;\n flex-shrink: 1 !important;\n }\n .justify-content-xl-start {\n -ms-flex-pack: start !important;\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n -ms-flex-pack: end !important;\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n -ms-flex-pack: center !important;\n justify-content: center !important;\n }\n .justify-content-xl-between {\n -ms-flex-pack: justify !important;\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n -ms-flex-pack: distribute !important;\n justify-content: space-around !important;\n }\n .align-items-xl-start {\n -ms-flex-align: start !important;\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n -ms-flex-align: end !important;\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n -ms-flex-align: center !important;\n align-items: center !important;\n }\n .align-items-xl-baseline {\n -ms-flex-align: baseline !important;\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n -ms-flex-align: stretch !important;\n align-items: stretch !important;\n }\n .align-content-xl-start {\n -ms-flex-line-pack: start !important;\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n -ms-flex-line-pack: end !important;\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n -ms-flex-line-pack: center !important;\n align-content: center !important;\n }\n .align-content-xl-between {\n -ms-flex-line-pack: justify !important;\n align-content: space-between !important;\n }\n .align-content-xl-around {\n -ms-flex-line-pack: distribute !important;\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n -ms-flex-line-pack: stretch !important;\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n -ms-flex-item-align: auto !important;\n align-self: auto !important;\n }\n .align-self-xl-start {\n -ms-flex-item-align: start !important;\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n -ms-flex-item-align: end !important;\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n -ms-flex-item-align: center !important;\n align-self: center !important;\n }\n .align-self-xl-baseline {\n -ms-flex-item-align: baseline !important;\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n -ms-flex-item-align: stretch !important;\n align-self: stretch !important;\n }\n}\n\n.float-left {\n float: left !important;\n}\n\n.float-right {\n float: right !important;\n}\n\n.float-none {\n float: none !important;\n}\n\n@media (min-width: 576px) {\n .float-sm-left {\n float: left !important;\n }\n .float-sm-right {\n float: right !important;\n }\n .float-sm-none {\n float: none !important;\n }\n}\n\n@media (min-width: 768px) {\n .float-md-left {\n float: left !important;\n }\n .float-md-right {\n float: right !important;\n }\n .float-md-none {\n float: none !important;\n }\n}\n\n@media (min-width: 992px) {\n .float-lg-left {\n float: left !important;\n }\n .float-lg-right {\n float: right !important;\n }\n .float-lg-none {\n float: none !important;\n }\n}\n\n@media (min-width: 1200px) {\n .float-xl-left {\n float: left !important;\n }\n .float-xl-right {\n float: right !important;\n }\n .float-xl-none {\n float: none !important;\n }\n}\n\n.overflow-auto {\n overflow: auto !important;\n}\n\n.overflow-hidden {\n overflow: hidden !important;\n}\n\n.position-static {\n position: static !important;\n}\n\n.position-relative {\n position: relative !important;\n}\n\n.position-absolute {\n position: absolute !important;\n}\n\n.position-fixed {\n position: fixed !important;\n}\n\n.position-sticky {\n position: -webkit-sticky !important;\n position: sticky !important;\n}\n\n.fixed-top {\n position: fixed;\n top: 0;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n\n.fixed-bottom {\n position: fixed;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1030;\n}\n\n@supports ((position: -webkit-sticky) or (position: sticky)) {\n .sticky-top {\n position: -webkit-sticky;\n position: sticky;\n top: 0;\n z-index: 1020;\n }\n}\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n overflow: visible;\n clip: auto;\n white-space: normal;\n}\n\n.shadow-sm {\n box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;\n}\n\n.shadow {\n box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;\n}\n\n.shadow-lg {\n box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important;\n}\n\n.shadow-none {\n box-shadow: none !important;\n}\n\n.w-25 {\n width: 25% !important;\n}\n\n.w-50 {\n width: 50% !important;\n}\n\n.w-75 {\n width: 75% !important;\n}\n\n.w-100 {\n width: 100% !important;\n}\n\n.w-auto {\n width: auto !important;\n}\n\n.h-25 {\n height: 25% !important;\n}\n\n.h-50 {\n height: 50% !important;\n}\n\n.h-75 {\n height: 75% !important;\n}\n\n.h-100 {\n height: 100% !important;\n}\n\n.h-auto {\n height: auto !important;\n}\n\n.mw-100 {\n max-width: 100% !important;\n}\n\n.mh-100 {\n max-height: 100% !important;\n}\n\n.min-vw-100 {\n min-width: 100vw !important;\n}\n\n.min-vh-100 {\n min-height: 100vh !important;\n}\n\n.vw-100 {\n width: 100vw !important;\n}\n\n.vh-100 {\n height: 100vh !important;\n}\n\n.m-0 {\n margin: 0 !important;\n}\n\n.mt-0,\n.my-0 {\n margin-top: 0 !important;\n}\n\n.mr-0,\n.mx-0 {\n margin-right: 0 !important;\n}\n\n.mb-0,\n.my-0 {\n margin-bottom: 0 !important;\n}\n\n.ml-0,\n.mx-0 {\n margin-left: 0 !important;\n}\n\n.m-1 {\n margin: 0.25rem !important;\n}\n\n.mt-1,\n.my-1 {\n margin-top: 0.25rem !important;\n}\n\n.mr-1,\n.mx-1 {\n margin-right: 0.25rem !important;\n}\n\n.mb-1,\n.my-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.ml-1,\n.mx-1 {\n margin-left: 0.25rem !important;\n}\n\n.m-2 {\n margin: 0.5rem !important;\n}\n\n.mt-2,\n.my-2 {\n margin-top: 0.5rem !important;\n}\n\n.mr-2,\n.mx-2 {\n margin-right: 0.5rem !important;\n}\n\n.mb-2,\n.my-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.ml-2,\n.mx-2 {\n margin-left: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.mt-3,\n.my-3 {\n margin-top: 1rem !important;\n}\n\n.mr-3,\n.mx-3 {\n margin-right: 1rem !important;\n}\n\n.mb-3,\n.my-3 {\n margin-bottom: 1rem !important;\n}\n\n.ml-3,\n.mx-3 {\n margin-left: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.mt-4,\n.my-4 {\n margin-top: 1.5rem !important;\n}\n\n.mr-4,\n.mx-4 {\n margin-right: 1.5rem !important;\n}\n\n.mb-4,\n.my-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.ml-4,\n.mx-4 {\n margin-left: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.mt-5,\n.my-5 {\n margin-top: 3rem !important;\n}\n\n.mr-5,\n.mx-5 {\n margin-right: 3rem !important;\n}\n\n.mb-5,\n.my-5 {\n margin-bottom: 3rem !important;\n}\n\n.ml-5,\n.mx-5 {\n margin-left: 3rem !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.pt-0,\n.py-0 {\n padding-top: 0 !important;\n}\n\n.pr-0,\n.px-0 {\n padding-right: 0 !important;\n}\n\n.pb-0,\n.py-0 {\n padding-bottom: 0 !important;\n}\n\n.pl-0,\n.px-0 {\n padding-left: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.pt-1,\n.py-1 {\n padding-top: 0.25rem !important;\n}\n\n.pr-1,\n.px-1 {\n padding-right: 0.25rem !important;\n}\n\n.pb-1,\n.py-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pl-1,\n.px-1 {\n padding-left: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.pt-2,\n.py-2 {\n padding-top: 0.5rem !important;\n}\n\n.pr-2,\n.px-2 {\n padding-right: 0.5rem !important;\n}\n\n.pb-2,\n.py-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pl-2,\n.px-2 {\n padding-left: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.pt-3,\n.py-3 {\n padding-top: 1rem !important;\n}\n\n.pr-3,\n.px-3 {\n padding-right: 1rem !important;\n}\n\n.pb-3,\n.py-3 {\n padding-bottom: 1rem !important;\n}\n\n.pl-3,\n.px-3 {\n padding-left: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.pt-4,\n.py-4 {\n padding-top: 1.5rem !important;\n}\n\n.pr-4,\n.px-4 {\n padding-right: 1.5rem !important;\n}\n\n.pb-4,\n.py-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pl-4,\n.px-4 {\n padding-left: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.pt-5,\n.py-5 {\n padding-top: 3rem !important;\n}\n\n.pr-5,\n.px-5 {\n padding-right: 3rem !important;\n}\n\n.pb-5,\n.py-5 {\n padding-bottom: 3rem !important;\n}\n\n.pl-5,\n.px-5 {\n padding-left: 3rem !important;\n}\n\n.m-n1 {\n margin: -0.25rem !important;\n}\n\n.mt-n1,\n.my-n1 {\n margin-top: -0.25rem !important;\n}\n\n.mr-n1,\n.mx-n1 {\n margin-right: -0.25rem !important;\n}\n\n.mb-n1,\n.my-n1 {\n margin-bottom: -0.25rem !important;\n}\n\n.ml-n1,\n.mx-n1 {\n margin-left: -0.25rem !important;\n}\n\n.m-n2 {\n margin: -0.5rem !important;\n}\n\n.mt-n2,\n.my-n2 {\n margin-top: -0.5rem !important;\n}\n\n.mr-n2,\n.mx-n2 {\n margin-right: -0.5rem !important;\n}\n\n.mb-n2,\n.my-n2 {\n margin-bottom: -0.5rem !important;\n}\n\n.ml-n2,\n.mx-n2 {\n margin-left: -0.5rem !important;\n}\n\n.m-n3 {\n margin: -1rem !important;\n}\n\n.mt-n3,\n.my-n3 {\n margin-top: -1rem !important;\n}\n\n.mr-n3,\n.mx-n3 {\n margin-right: -1rem !important;\n}\n\n.mb-n3,\n.my-n3 {\n margin-bottom: -1rem !important;\n}\n\n.ml-n3,\n.mx-n3 {\n margin-left: -1rem !important;\n}\n\n.m-n4 {\n margin: -1.5rem !important;\n}\n\n.mt-n4,\n.my-n4 {\n margin-top: -1.5rem !important;\n}\n\n.mr-n4,\n.mx-n4 {\n margin-right: -1.5rem !important;\n}\n\n.mb-n4,\n.my-n4 {\n margin-bottom: -1.5rem !important;\n}\n\n.ml-n4,\n.mx-n4 {\n margin-left: -1.5rem !important;\n}\n\n.m-n5 {\n margin: -3rem !important;\n}\n\n.mt-n5,\n.my-n5 {\n margin-top: -3rem !important;\n}\n\n.mr-n5,\n.mx-n5 {\n margin-right: -3rem !important;\n}\n\n.mb-n5,\n.my-n5 {\n margin-bottom: -3rem !important;\n}\n\n.ml-n5,\n.mx-n5 {\n margin-left: -3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mt-auto,\n.my-auto {\n margin-top: auto !important;\n}\n\n.mr-auto,\n.mx-auto {\n margin-right: auto !important;\n}\n\n.mb-auto,\n.my-auto {\n margin-bottom: auto !important;\n}\n\n.ml-auto,\n.mx-auto {\n margin-left: auto !important;\n}\n\n@media (min-width: 576px) {\n .m-sm-0 {\n margin: 0 !important;\n }\n .mt-sm-0,\n .my-sm-0 {\n margin-top: 0 !important;\n }\n .mr-sm-0,\n .mx-sm-0 {\n margin-right: 0 !important;\n }\n .mb-sm-0,\n .my-sm-0 {\n margin-bottom: 0 !important;\n }\n .ml-sm-0,\n .mx-sm-0 {\n margin-left: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n .mt-sm-1,\n .my-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mr-sm-1,\n .mx-sm-1 {\n margin-right: 0.25rem !important;\n }\n .mb-sm-1,\n .my-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-sm-1,\n .mx-sm-1 {\n margin-left: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n .mt-sm-2,\n .my-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mr-sm-2,\n .mx-sm-2 {\n margin-right: 0.5rem !important;\n }\n .mb-sm-2,\n .my-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-sm-2,\n .mx-sm-2 {\n margin-left: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem !important;\n }\n .mt-sm-3,\n .my-sm-3 {\n margin-top: 1rem !important;\n }\n .mr-sm-3,\n .mx-sm-3 {\n margin-right: 1rem !important;\n }\n .mb-sm-3,\n .my-sm-3 {\n margin-bottom: 1rem !important;\n }\n .ml-sm-3,\n .mx-sm-3 {\n margin-left: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n .mt-sm-4,\n .my-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mr-sm-4,\n .mx-sm-4 {\n margin-right: 1.5rem !important;\n }\n .mb-sm-4,\n .my-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-sm-4,\n .mx-sm-4 {\n margin-left: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem !important;\n }\n .mt-sm-5,\n .my-sm-5 {\n margin-top: 3rem !important;\n }\n .mr-sm-5,\n .mx-sm-5 {\n margin-right: 3rem !important;\n }\n .mb-sm-5,\n .my-sm-5 {\n margin-bottom: 3rem !important;\n }\n .ml-sm-5,\n .mx-sm-5 {\n margin-left: 3rem !important;\n }\n .p-sm-0 {\n padding: 0 !important;\n }\n .pt-sm-0,\n .py-sm-0 {\n padding-top: 0 !important;\n }\n .pr-sm-0,\n .px-sm-0 {\n padding-right: 0 !important;\n }\n .pb-sm-0,\n .py-sm-0 {\n padding-bottom: 0 !important;\n }\n .pl-sm-0,\n .px-sm-0 {\n padding-left: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n .pt-sm-1,\n .py-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pr-sm-1,\n .px-sm-1 {\n padding-right: 0.25rem !important;\n }\n .pb-sm-1,\n .py-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-sm-1,\n .px-sm-1 {\n padding-left: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n .pt-sm-2,\n .py-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pr-sm-2,\n .px-sm-2 {\n padding-right: 0.5rem !important;\n }\n .pb-sm-2,\n .py-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-sm-2,\n .px-sm-2 {\n padding-left: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem !important;\n }\n .pt-sm-3,\n .py-sm-3 {\n padding-top: 1rem !important;\n }\n .pr-sm-3,\n .px-sm-3 {\n padding-right: 1rem !important;\n }\n .pb-sm-3,\n .py-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pl-sm-3,\n .px-sm-3 {\n padding-left: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n .pt-sm-4,\n .py-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pr-sm-4,\n .px-sm-4 {\n padding-right: 1.5rem !important;\n }\n .pb-sm-4,\n .py-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-sm-4,\n .px-sm-4 {\n padding-left: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem !important;\n }\n .pt-sm-5,\n .py-sm-5 {\n padding-top: 3rem !important;\n }\n .pr-sm-5,\n .px-sm-5 {\n padding-right: 3rem !important;\n }\n .pb-sm-5,\n .py-sm-5 {\n padding-bottom: 3rem !important;\n }\n .pl-sm-5,\n .px-sm-5 {\n padding-left: 3rem !important;\n }\n .m-sm-n1 {\n margin: -0.25rem !important;\n }\n .mt-sm-n1,\n .my-sm-n1 {\n margin-top: -0.25rem !important;\n }\n .mr-sm-n1,\n .mx-sm-n1 {\n margin-right: -0.25rem !important;\n }\n .mb-sm-n1,\n .my-sm-n1 {\n margin-bottom: -0.25rem !important;\n }\n .ml-sm-n1,\n .mx-sm-n1 {\n margin-left: -0.25rem !important;\n }\n .m-sm-n2 {\n margin: -0.5rem !important;\n }\n .mt-sm-n2,\n .my-sm-n2 {\n margin-top: -0.5rem !important;\n }\n .mr-sm-n2,\n .mx-sm-n2 {\n margin-right: -0.5rem !important;\n }\n .mb-sm-n2,\n .my-sm-n2 {\n margin-bottom: -0.5rem !important;\n }\n .ml-sm-n2,\n .mx-sm-n2 {\n margin-left: -0.5rem !important;\n }\n .m-sm-n3 {\n margin: -1rem !important;\n }\n .mt-sm-n3,\n .my-sm-n3 {\n margin-top: -1rem !important;\n }\n .mr-sm-n3,\n .mx-sm-n3 {\n margin-right: -1rem !important;\n }\n .mb-sm-n3,\n .my-sm-n3 {\n margin-bottom: -1rem !important;\n }\n .ml-sm-n3,\n .mx-sm-n3 {\n margin-left: -1rem !important;\n }\n .m-sm-n4 {\n margin: -1.5rem !important;\n }\n .mt-sm-n4,\n .my-sm-n4 {\n margin-top: -1.5rem !important;\n }\n .mr-sm-n4,\n .mx-sm-n4 {\n margin-right: -1.5rem !important;\n }\n .mb-sm-n4,\n .my-sm-n4 {\n margin-bottom: -1.5rem !important;\n }\n .ml-sm-n4,\n .mx-sm-n4 {\n margin-left: -1.5rem !important;\n }\n .m-sm-n5 {\n margin: -3rem !important;\n }\n .mt-sm-n5,\n .my-sm-n5 {\n margin-top: -3rem !important;\n }\n .mr-sm-n5,\n .mx-sm-n5 {\n margin-right: -3rem !important;\n }\n .mb-sm-n5,\n .my-sm-n5 {\n margin-bottom: -3rem !important;\n }\n .ml-sm-n5,\n .mx-sm-n5 {\n margin-left: -3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mt-sm-auto,\n .my-sm-auto {\n margin-top: auto !important;\n }\n .mr-sm-auto,\n .mx-sm-auto {\n margin-right: auto !important;\n }\n .mb-sm-auto,\n .my-sm-auto {\n margin-bottom: auto !important;\n }\n .ml-sm-auto,\n .mx-sm-auto {\n margin-left: auto !important;\n }\n}\n\n@media (min-width: 768px) {\n .m-md-0 {\n margin: 0 !important;\n }\n .mt-md-0,\n .my-md-0 {\n margin-top: 0 !important;\n }\n .mr-md-0,\n .mx-md-0 {\n margin-right: 0 !important;\n }\n .mb-md-0,\n .my-md-0 {\n margin-bottom: 0 !important;\n }\n .ml-md-0,\n .mx-md-0 {\n margin-left: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem !important;\n }\n .mt-md-1,\n .my-md-1 {\n margin-top: 0.25rem !important;\n }\n .mr-md-1,\n .mx-md-1 {\n margin-right: 0.25rem !important;\n }\n .mb-md-1,\n .my-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-md-1,\n .mx-md-1 {\n margin-left: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem !important;\n }\n .mt-md-2,\n .my-md-2 {\n margin-top: 0.5rem !important;\n }\n .mr-md-2,\n .mx-md-2 {\n margin-right: 0.5rem !important;\n }\n .mb-md-2,\n .my-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-md-2,\n .mx-md-2 {\n margin-left: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem !important;\n }\n .mt-md-3,\n .my-md-3 {\n margin-top: 1rem !important;\n }\n .mr-md-3,\n .mx-md-3 {\n margin-right: 1rem !important;\n }\n .mb-md-3,\n .my-md-3 {\n margin-bottom: 1rem !important;\n }\n .ml-md-3,\n .mx-md-3 {\n margin-left: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem !important;\n }\n .mt-md-4,\n .my-md-4 {\n margin-top: 1.5rem !important;\n }\n .mr-md-4,\n .mx-md-4 {\n margin-right: 1.5rem !important;\n }\n .mb-md-4,\n .my-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-md-4,\n .mx-md-4 {\n margin-left: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem !important;\n }\n .mt-md-5,\n .my-md-5 {\n margin-top: 3rem !important;\n }\n .mr-md-5,\n .mx-md-5 {\n margin-right: 3rem !important;\n }\n .mb-md-5,\n .my-md-5 {\n margin-bottom: 3rem !important;\n }\n .ml-md-5,\n .mx-md-5 {\n margin-left: 3rem !important;\n }\n .p-md-0 {\n padding: 0 !important;\n }\n .pt-md-0,\n .py-md-0 {\n padding-top: 0 !important;\n }\n .pr-md-0,\n .px-md-0 {\n padding-right: 0 !important;\n }\n .pb-md-0,\n .py-md-0 {\n padding-bottom: 0 !important;\n }\n .pl-md-0,\n .px-md-0 {\n padding-left: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem !important;\n }\n .pt-md-1,\n .py-md-1 {\n padding-top: 0.25rem !important;\n }\n .pr-md-1,\n .px-md-1 {\n padding-right: 0.25rem !important;\n }\n .pb-md-1,\n .py-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-md-1,\n .px-md-1 {\n padding-left: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem !important;\n }\n .pt-md-2,\n .py-md-2 {\n padding-top: 0.5rem !important;\n }\n .pr-md-2,\n .px-md-2 {\n padding-right: 0.5rem !important;\n }\n .pb-md-2,\n .py-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-md-2,\n .px-md-2 {\n padding-left: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem !important;\n }\n .pt-md-3,\n .py-md-3 {\n padding-top: 1rem !important;\n }\n .pr-md-3,\n .px-md-3 {\n padding-right: 1rem !important;\n }\n .pb-md-3,\n .py-md-3 {\n padding-bottom: 1rem !important;\n }\n .pl-md-3,\n .px-md-3 {\n padding-left: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem !important;\n }\n .pt-md-4,\n .py-md-4 {\n padding-top: 1.5rem !important;\n }\n .pr-md-4,\n .px-md-4 {\n padding-right: 1.5rem !important;\n }\n .pb-md-4,\n .py-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-md-4,\n .px-md-4 {\n padding-left: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem !important;\n }\n .pt-md-5,\n .py-md-5 {\n padding-top: 3rem !important;\n }\n .pr-md-5,\n .px-md-5 {\n padding-right: 3rem !important;\n }\n .pb-md-5,\n .py-md-5 {\n padding-bottom: 3rem !important;\n }\n .pl-md-5,\n .px-md-5 {\n padding-left: 3rem !important;\n }\n .m-md-n1 {\n margin: -0.25rem !important;\n }\n .mt-md-n1,\n .my-md-n1 {\n margin-top: -0.25rem !important;\n }\n .mr-md-n1,\n .mx-md-n1 {\n margin-right: -0.25rem !important;\n }\n .mb-md-n1,\n .my-md-n1 {\n margin-bottom: -0.25rem !important;\n }\n .ml-md-n1,\n .mx-md-n1 {\n margin-left: -0.25rem !important;\n }\n .m-md-n2 {\n margin: -0.5rem !important;\n }\n .mt-md-n2,\n .my-md-n2 {\n margin-top: -0.5rem !important;\n }\n .mr-md-n2,\n .mx-md-n2 {\n margin-right: -0.5rem !important;\n }\n .mb-md-n2,\n .my-md-n2 {\n margin-bottom: -0.5rem !important;\n }\n .ml-md-n2,\n .mx-md-n2 {\n margin-left: -0.5rem !important;\n }\n .m-md-n3 {\n margin: -1rem !important;\n }\n .mt-md-n3,\n .my-md-n3 {\n margin-top: -1rem !important;\n }\n .mr-md-n3,\n .mx-md-n3 {\n margin-right: -1rem !important;\n }\n .mb-md-n3,\n .my-md-n3 {\n margin-bottom: -1rem !important;\n }\n .ml-md-n3,\n .mx-md-n3 {\n margin-left: -1rem !important;\n }\n .m-md-n4 {\n margin: -1.5rem !important;\n }\n .mt-md-n4,\n .my-md-n4 {\n margin-top: -1.5rem !important;\n }\n .mr-md-n4,\n .mx-md-n4 {\n margin-right: -1.5rem !important;\n }\n .mb-md-n4,\n .my-md-n4 {\n margin-bottom: -1.5rem !important;\n }\n .ml-md-n4,\n .mx-md-n4 {\n margin-left: -1.5rem !important;\n }\n .m-md-n5 {\n margin: -3rem !important;\n }\n .mt-md-n5,\n .my-md-n5 {\n margin-top: -3rem !important;\n }\n .mr-md-n5,\n .mx-md-n5 {\n margin-right: -3rem !important;\n }\n .mb-md-n5,\n .my-md-n5 {\n margin-bottom: -3rem !important;\n }\n .ml-md-n5,\n .mx-md-n5 {\n margin-left: -3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mt-md-auto,\n .my-md-auto {\n margin-top: auto !important;\n }\n .mr-md-auto,\n .mx-md-auto {\n margin-right: auto !important;\n }\n .mb-md-auto,\n .my-md-auto {\n margin-bottom: auto !important;\n }\n .ml-md-auto,\n .mx-md-auto {\n margin-left: auto !important;\n }\n}\n\n@media (min-width: 992px) {\n .m-lg-0 {\n margin: 0 !important;\n }\n .mt-lg-0,\n .my-lg-0 {\n margin-top: 0 !important;\n }\n .mr-lg-0,\n .mx-lg-0 {\n margin-right: 0 !important;\n }\n .mb-lg-0,\n .my-lg-0 {\n margin-bottom: 0 !important;\n }\n .ml-lg-0,\n .mx-lg-0 {\n margin-left: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n .mt-lg-1,\n .my-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mr-lg-1,\n .mx-lg-1 {\n margin-right: 0.25rem !important;\n }\n .mb-lg-1,\n .my-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-lg-1,\n .mx-lg-1 {\n margin-left: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n .mt-lg-2,\n .my-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mr-lg-2,\n .mx-lg-2 {\n margin-right: 0.5rem !important;\n }\n .mb-lg-2,\n .my-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-lg-2,\n .mx-lg-2 {\n margin-left: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem !important;\n }\n .mt-lg-3,\n .my-lg-3 {\n margin-top: 1rem !important;\n }\n .mr-lg-3,\n .mx-lg-3 {\n margin-right: 1rem !important;\n }\n .mb-lg-3,\n .my-lg-3 {\n margin-bottom: 1rem !important;\n }\n .ml-lg-3,\n .mx-lg-3 {\n margin-left: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n .mt-lg-4,\n .my-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mr-lg-4,\n .mx-lg-4 {\n margin-right: 1.5rem !important;\n }\n .mb-lg-4,\n .my-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-lg-4,\n .mx-lg-4 {\n margin-left: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem !important;\n }\n .mt-lg-5,\n .my-lg-5 {\n margin-top: 3rem !important;\n }\n .mr-lg-5,\n .mx-lg-5 {\n margin-right: 3rem !important;\n }\n .mb-lg-5,\n .my-lg-5 {\n margin-bottom: 3rem !important;\n }\n .ml-lg-5,\n .mx-lg-5 {\n margin-left: 3rem !important;\n }\n .p-lg-0 {\n padding: 0 !important;\n }\n .pt-lg-0,\n .py-lg-0 {\n padding-top: 0 !important;\n }\n .pr-lg-0,\n .px-lg-0 {\n padding-right: 0 !important;\n }\n .pb-lg-0,\n .py-lg-0 {\n padding-bottom: 0 !important;\n }\n .pl-lg-0,\n .px-lg-0 {\n padding-left: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n .pt-lg-1,\n .py-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pr-lg-1,\n .px-lg-1 {\n padding-right: 0.25rem !important;\n }\n .pb-lg-1,\n .py-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-lg-1,\n .px-lg-1 {\n padding-left: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n .pt-lg-2,\n .py-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pr-lg-2,\n .px-lg-2 {\n padding-right: 0.5rem !important;\n }\n .pb-lg-2,\n .py-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-lg-2,\n .px-lg-2 {\n padding-left: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem !important;\n }\n .pt-lg-3,\n .py-lg-3 {\n padding-top: 1rem !important;\n }\n .pr-lg-3,\n .px-lg-3 {\n padding-right: 1rem !important;\n }\n .pb-lg-3,\n .py-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pl-lg-3,\n .px-lg-3 {\n padding-left: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n .pt-lg-4,\n .py-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pr-lg-4,\n .px-lg-4 {\n padding-right: 1.5rem !important;\n }\n .pb-lg-4,\n .py-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-lg-4,\n .px-lg-4 {\n padding-left: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem !important;\n }\n .pt-lg-5,\n .py-lg-5 {\n padding-top: 3rem !important;\n }\n .pr-lg-5,\n .px-lg-5 {\n padding-right: 3rem !important;\n }\n .pb-lg-5,\n .py-lg-5 {\n padding-bottom: 3rem !important;\n }\n .pl-lg-5,\n .px-lg-5 {\n padding-left: 3rem !important;\n }\n .m-lg-n1 {\n margin: -0.25rem !important;\n }\n .mt-lg-n1,\n .my-lg-n1 {\n margin-top: -0.25rem !important;\n }\n .mr-lg-n1,\n .mx-lg-n1 {\n margin-right: -0.25rem !important;\n }\n .mb-lg-n1,\n .my-lg-n1 {\n margin-bottom: -0.25rem !important;\n }\n .ml-lg-n1,\n .mx-lg-n1 {\n margin-left: -0.25rem !important;\n }\n .m-lg-n2 {\n margin: -0.5rem !important;\n }\n .mt-lg-n2,\n .my-lg-n2 {\n margin-top: -0.5rem !important;\n }\n .mr-lg-n2,\n .mx-lg-n2 {\n margin-right: -0.5rem !important;\n }\n .mb-lg-n2,\n .my-lg-n2 {\n margin-bottom: -0.5rem !important;\n }\n .ml-lg-n2,\n .mx-lg-n2 {\n margin-left: -0.5rem !important;\n }\n .m-lg-n3 {\n margin: -1rem !important;\n }\n .mt-lg-n3,\n .my-lg-n3 {\n margin-top: -1rem !important;\n }\n .mr-lg-n3,\n .mx-lg-n3 {\n margin-right: -1rem !important;\n }\n .mb-lg-n3,\n .my-lg-n3 {\n margin-bottom: -1rem !important;\n }\n .ml-lg-n3,\n .mx-lg-n3 {\n margin-left: -1rem !important;\n }\n .m-lg-n4 {\n margin: -1.5rem !important;\n }\n .mt-lg-n4,\n .my-lg-n4 {\n margin-top: -1.5rem !important;\n }\n .mr-lg-n4,\n .mx-lg-n4 {\n margin-right: -1.5rem !important;\n }\n .mb-lg-n4,\n .my-lg-n4 {\n margin-bottom: -1.5rem !important;\n }\n .ml-lg-n4,\n .mx-lg-n4 {\n margin-left: -1.5rem !important;\n }\n .m-lg-n5 {\n margin: -3rem !important;\n }\n .mt-lg-n5,\n .my-lg-n5 {\n margin-top: -3rem !important;\n }\n .mr-lg-n5,\n .mx-lg-n5 {\n margin-right: -3rem !important;\n }\n .mb-lg-n5,\n .my-lg-n5 {\n margin-bottom: -3rem !important;\n }\n .ml-lg-n5,\n .mx-lg-n5 {\n margin-left: -3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mt-lg-auto,\n .my-lg-auto {\n margin-top: auto !important;\n }\n .mr-lg-auto,\n .mx-lg-auto {\n margin-right: auto !important;\n }\n .mb-lg-auto,\n .my-lg-auto {\n margin-bottom: auto !important;\n }\n .ml-lg-auto,\n .mx-lg-auto {\n margin-left: auto !important;\n }\n}\n\n@media (min-width: 1200px) {\n .m-xl-0 {\n margin: 0 !important;\n }\n .mt-xl-0,\n .my-xl-0 {\n margin-top: 0 !important;\n }\n .mr-xl-0,\n .mx-xl-0 {\n margin-right: 0 !important;\n }\n .mb-xl-0,\n .my-xl-0 {\n margin-bottom: 0 !important;\n }\n .ml-xl-0,\n .mx-xl-0 {\n margin-left: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n .mt-xl-1,\n .my-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mr-xl-1,\n .mx-xl-1 {\n margin-right: 0.25rem !important;\n }\n .mb-xl-1,\n .my-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-xl-1,\n .mx-xl-1 {\n margin-left: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n .mt-xl-2,\n .my-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mr-xl-2,\n .mx-xl-2 {\n margin-right: 0.5rem !important;\n }\n .mb-xl-2,\n .my-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-xl-2,\n .mx-xl-2 {\n margin-left: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem !important;\n }\n .mt-xl-3,\n .my-xl-3 {\n margin-top: 1rem !important;\n }\n .mr-xl-3,\n .mx-xl-3 {\n margin-right: 1rem !important;\n }\n .mb-xl-3,\n .my-xl-3 {\n margin-bottom: 1rem !important;\n }\n .ml-xl-3,\n .mx-xl-3 {\n margin-left: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n .mt-xl-4,\n .my-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mr-xl-4,\n .mx-xl-4 {\n margin-right: 1.5rem !important;\n }\n .mb-xl-4,\n .my-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-xl-4,\n .mx-xl-4 {\n margin-left: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem !important;\n }\n .mt-xl-5,\n .my-xl-5 {\n margin-top: 3rem !important;\n }\n .mr-xl-5,\n .mx-xl-5 {\n margin-right: 3rem !important;\n }\n .mb-xl-5,\n .my-xl-5 {\n margin-bottom: 3rem !important;\n }\n .ml-xl-5,\n .mx-xl-5 {\n margin-left: 3rem !important;\n }\n .p-xl-0 {\n padding: 0 !important;\n }\n .pt-xl-0,\n .py-xl-0 {\n padding-top: 0 !important;\n }\n .pr-xl-0,\n .px-xl-0 {\n padding-right: 0 !important;\n }\n .pb-xl-0,\n .py-xl-0 {\n padding-bottom: 0 !important;\n }\n .pl-xl-0,\n .px-xl-0 {\n padding-left: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n .pt-xl-1,\n .py-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pr-xl-1,\n .px-xl-1 {\n padding-right: 0.25rem !important;\n }\n .pb-xl-1,\n .py-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-xl-1,\n .px-xl-1 {\n padding-left: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n .pt-xl-2,\n .py-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pr-xl-2,\n .px-xl-2 {\n padding-right: 0.5rem !important;\n }\n .pb-xl-2,\n .py-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-xl-2,\n .px-xl-2 {\n padding-left: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem !important;\n }\n .pt-xl-3,\n .py-xl-3 {\n padding-top: 1rem !important;\n }\n .pr-xl-3,\n .px-xl-3 {\n padding-right: 1rem !important;\n }\n .pb-xl-3,\n .py-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pl-xl-3,\n .px-xl-3 {\n padding-left: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n .pt-xl-4,\n .py-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pr-xl-4,\n .px-xl-4 {\n padding-right: 1.5rem !important;\n }\n .pb-xl-4,\n .py-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-xl-4,\n .px-xl-4 {\n padding-left: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem !important;\n }\n .pt-xl-5,\n .py-xl-5 {\n padding-top: 3rem !important;\n }\n .pr-xl-5,\n .px-xl-5 {\n padding-right: 3rem !important;\n }\n .pb-xl-5,\n .py-xl-5 {\n padding-bottom: 3rem !important;\n }\n .pl-xl-5,\n .px-xl-5 {\n padding-left: 3rem !important;\n }\n .m-xl-n1 {\n margin: -0.25rem !important;\n }\n .mt-xl-n1,\n .my-xl-n1 {\n margin-top: -0.25rem !important;\n }\n .mr-xl-n1,\n .mx-xl-n1 {\n margin-right: -0.25rem !important;\n }\n .mb-xl-n1,\n .my-xl-n1 {\n margin-bottom: -0.25rem !important;\n }\n .ml-xl-n1,\n .mx-xl-n1 {\n margin-left: -0.25rem !important;\n }\n .m-xl-n2 {\n margin: -0.5rem !important;\n }\n .mt-xl-n2,\n .my-xl-n2 {\n margin-top: -0.5rem !important;\n }\n .mr-xl-n2,\n .mx-xl-n2 {\n margin-right: -0.5rem !important;\n }\n .mb-xl-n2,\n .my-xl-n2 {\n margin-bottom: -0.5rem !important;\n }\n .ml-xl-n2,\n .mx-xl-n2 {\n margin-left: -0.5rem !important;\n }\n .m-xl-n3 {\n margin: -1rem !important;\n }\n .mt-xl-n3,\n .my-xl-n3 {\n margin-top: -1rem !important;\n }\n .mr-xl-n3,\n .mx-xl-n3 {\n margin-right: -1rem !important;\n }\n .mb-xl-n3,\n .my-xl-n3 {\n margin-bottom: -1rem !important;\n }\n .ml-xl-n3,\n .mx-xl-n3 {\n margin-left: -1rem !important;\n }\n .m-xl-n4 {\n margin: -1.5rem !important;\n }\n .mt-xl-n4,\n .my-xl-n4 {\n margin-top: -1.5rem !important;\n }\n .mr-xl-n4,\n .mx-xl-n4 {\n margin-right: -1.5rem !important;\n }\n .mb-xl-n4,\n .my-xl-n4 {\n margin-bottom: -1.5rem !important;\n }\n .ml-xl-n4,\n .mx-xl-n4 {\n margin-left: -1.5rem !important;\n }\n .m-xl-n5 {\n margin: -3rem !important;\n }\n .mt-xl-n5,\n .my-xl-n5 {\n margin-top: -3rem !important;\n }\n .mr-xl-n5,\n .mx-xl-n5 {\n margin-right: -3rem !important;\n }\n .mb-xl-n5,\n .my-xl-n5 {\n margin-bottom: -3rem !important;\n }\n .ml-xl-n5,\n .mx-xl-n5 {\n margin-left: -3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mt-xl-auto,\n .my-xl-auto {\n margin-top: auto !important;\n }\n .mr-xl-auto,\n .mx-xl-auto {\n margin-right: auto !important;\n }\n .mb-xl-auto,\n .my-xl-auto {\n margin-bottom: auto !important;\n }\n .ml-xl-auto,\n .mx-xl-auto {\n margin-left: auto !important;\n }\n}\n\n.text-monospace {\n /* font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace; */\n}\n\n.text-justify {\n text-align: justify !important;\n}\n\n.text-wrap {\n white-space: normal !important;\n}\n\n.text-nowrap {\n white-space: nowrap !important;\n}\n\n.text-truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.text-left {\n text-align: left !important;\n}\n\n.text-right {\n text-align: right !important;\n}\n\n.text-center {\n text-align: center !important;\n}\n\n@media (min-width: 576px) {\n .text-sm-left {\n text-align: left !important;\n }\n .text-sm-right {\n text-align: right !important;\n }\n .text-sm-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 768px) {\n .text-md-left {\n text-align: left !important;\n }\n .text-md-right {\n text-align: right !important;\n }\n .text-md-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 992px) {\n .text-lg-left {\n text-align: left !important;\n }\n .text-lg-right {\n text-align: right !important;\n }\n .text-lg-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 1200px) {\n .text-xl-left {\n text-align: left !important;\n }\n .text-xl-right {\n text-align: right !important;\n }\n .text-xl-center {\n text-align: center !important;\n }\n}\n\n.text-lowercase {\n text-transform: lowercase !important;\n}\n\n.text-uppercase {\n text-transform: uppercase !important;\n}\n\n.text-capitalize {\n text-transform: capitalize !important;\n}\n\n.font-weight-light {\n font-weight: 300 !important;\n}\n\n.font-weight-lighter {\n font-weight: lighter !important;\n}\n\n.font-weight-normal {\n font-weight: 400 !important;\n}\n\n.font-weight-bold {\n font-weight: 700 !important;\n}\n\n.font-weight-bolder {\n font-weight: bolder !important;\n}\n\n.font-italic {\n font-style: italic !important;\n}\n\n.text-white {\n color: #fff !important;\n}\n\n.text-primary {\n color: #007bff !important;\n}\n\na.text-primary:hover, a.text-primary:focus {\n color: #0056b3 !important;\n}\n\n.text-secondary {\n color: #6c757d !important;\n}\n\na.text-secondary:hover, a.text-secondary:focus {\n color: #494f54 !important;\n}\n\n.text-success {\n color: #28a745 !important;\n}\n\na.text-success:hover, a.text-success:focus {\n color: #19692c !important;\n}\n\n.text-info {\n color: #17a2b8 !important;\n}\n\na.text-info:hover, a.text-info:focus {\n color: #0f6674 !important;\n}\n\n.text-warning {\n color: #ffc107 !important;\n}\n\na.text-warning:hover, a.text-warning:focus {\n color: #ba8b00 !important;\n}\n\n.text-danger {\n color: #dc3545 !important;\n}\n\na.text-danger:hover, a.text-danger:focus {\n color: #a71d2a !important;\n}\n\n.text-light {\n color: #f8f9fa !important;\n}\n\na.text-light:hover, a.text-light:focus {\n color: #cbd3da !important;\n}\n\n.text-dark {\n color: #343a40 !important;\n}\n\na.text-dark:hover, a.text-dark:focus {\n color: #121416 !important;\n}\n\n.text-body {\n color: #212529 !important;\n}\n\n.text-muted {\n color: #6c757d !important;\n}\n\n.text-black-50 {\n color: rgba(0, 0, 0, 0.5) !important;\n}\n\n.text-white-50 {\n color: rgba(255, 255, 255, 0.5) !important;\n}\n\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n\n.text-decoration-none {\n text-decoration: none !important;\n}\n\n.text-reset {\n color: inherit !important;\n}\n\n.visible {\n visibility: visible !important;\n}\n\n.invisible {\n visibility: hidden !important;\n}\n\n@media print {\n *,\n *::before,\n *::after {\n text-shadow: none !important;\n box-shadow: none !important;\n }\n a:not(.btn) {\n text-decoration: underline;\n }\n abbr[title]::after {\n content: \" (\" attr(title) \")\";\n }\n pre {\n white-space: pre-wrap !important;\n }\n pre,\n blockquote {\n border: 1px solid #adb5bd;\n page-break-inside: avoid;\n }\n thead {\n display: table-header-group;\n }\n tr,\n img {\n page-break-inside: avoid;\n }\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n h2,\n h3 {\n page-break-after: avoid;\n }\n @page {\n size: a3;\n }\n body {\n min-width: 992px !important;\n }\n .container {\n min-width: 992px !important;\n }\n .navbar {\n display: none;\n border-bottom: 3px solid black;\n }\n .badge {\n border: 1px solid #000;\n }\n .table {\n border-collapse: collapse !important;\n }\n .table td,\n .table th {\n background-color: #fff !important;\n }\n .table-bordered th,\n .table-bordered td {\n border: 1px solid #dee2e6 !important;\n }\n .table-dark {\n color: inherit;\n }\n .table-dark th,\n .table-dark td,\n .table-dark thead th,\n .table-dark tbody + tbody {\n border-color: #dee2e6;\n }\n .table .thead-dark th {\n color: inherit;\n border-color: #dee2e6;\n }\n}\n"
+ ],
+ "names": [],
+ "mappings": "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"
+}
\ No newline at end of file
diff --git a/assets/css/main.scss b/assets/css/main.scss
deleted file mode 100644
index f8786e35..00000000
--- a/assets/css/main.scss
+++ /dev/null
@@ -1,9 +0,0 @@
----
-# this ensures Jekyll reads the file to be transformed into CSS later
-# only Main files contain this front matter, not partials.
----
-
-
-@import "poole";
-@import "lanyon2";
-@import "bootstrap";
\ No newline at end of file
diff --git a/atom.xml b/atom.xml
deleted file mode 100644
index 515e790c..00000000
--- a/atom.xml
+++ /dev/null
@@ -1,28 +0,0 @@
----
-layout: null
----
-
-
-
Redirecting…
+ Click here if you are not redirected. + \ No newline at end of file diff --git a/blog.html b/blog.html deleted file mode 100644 index 215623d4..00000000 --- a/blog.html +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: Blog -layout: page -tab: Blog ---- - - -', '__p__' %} - {% assign preprocessed_content=preprocessed_content | replace: '
', '__/p__' %} - {% assign preprocessed_content=preprocessed_content | replace: '', '__/a__' %} - - {% assign truncated_content=preprocessed_content | strip_html | truncatewords:150 %} - - {% assign cleaned_content=truncated_content | replace: '__p__', '' %} - {% assign cleaned_content=cleaned_content | replace: '__/p__', '
' %} - {% assign cleaned_content=cleaned_content | replace: '__a__', '' %} - - {{ cleaned_content }} --
- Read more -
--{% endfor %} -
Events
+ +-
+
- ISMIR 2022, December, Bengaluru, Hybrid +
- LinkedMusic Project Meeting 2022, November, Montreal/Online +
- ISMIR 2021, November, Online +
- Music Encoding Conference 2021, July, University of Alicante +
- LinkedMusic Workshop, October 2021, Montreal +
- ISMIR 2020, October, Montreal/Online (We hosted!) +
- Music Encoding Conference 2020, May, Tufts University +
- SIMSSA Workshops +
- ISMIR 2019, November, Delft, The Netherlands +
- Music Encoding Conference 2019, May-June, University of Vienna +
- ISMIR 2018, September, Paris, France +
- Music Encoding Conference 2018, May, University of Maryland College Park +
- ISMIR 2017, October, Suzhou, China +
- Music Encoding Conference 2017, May, Centre d’études supérieures de la Renaissance (CESR) – University of Tours +
+
+
Older Events
+ +-
+
- ISMIR 2016, August, New York City, USA +
- Music Encoding Conference 2016, May, McGill University (We hosted!) +
- ISMIR 2015, October, Malaga, Spain. +
- Workshop on SIMSSA: Single Interface for Music Score Searching and Analysis, Montréal, Canada. +
- ISMIR 2014, October, Taipei, Taiwan. +
- ISMIR 2011, October, Miami, Florida. +
- ISMIR 2009, October 26-30, Kobe, Japan +
- Symposium on Empirical Methods for Music Theorists +
- Workshop on Expressive Performance +
+
+
Symposium on Empirical Methods for Music Theorists
+ +The Music Cognition Interest Group of SMT and CIRMMT Research Axis 5 (Music Perception and Cognition) is pleased to announce a Symposium on Empirical Methods to take place immediately following the upcoming SMT meeting in Montreal.
+This symposium is intended to serve music theorists who have little or no background in empirical methodology, and to serve as the capstone to a cognition-laden conference experience, beginning with the MCG regular meeting (Saturday noon-2 p.m) and the MCG-sponsored Special Session on Saturday at 8 p.m. (http://www.cirmmt.mcgill.ca/activities/workshops/research/smt/event).
+Program
+Sunday November 1
+2:00-2:15 Introductions
+2:15-3:15 Stephen McAdams and Finn Upham Dealing with subjective musical experience in time: Challenges in interpreting continuous-response measures + In the last thirty years, the technology to record listeners’ experience of music continuously in time has become more and more accessible, developing from a few handcrafted sensors to ipod applications. Now the question is how to analyse these piles of time series data to get statistics relevant to the musical experience. With examples of subjective familiarity and emotional intensity ratings, we will discuss how to handle this highly variable data, common challenges and pitfalls, and how we can look for relationships to musical form and other dynamic musical feature. +
+3:15-4:00 Marcelo Wanderley Motion capture of music performances: Advantages and limitations + Motion capture (MoCap) is a series of techniques that allow for the (very) accurate recording of human movements. Commonly available MoCap systems are based on (active and passive) infrared, electromagnetic, ultra-sound, mechanical, inertial and hybrid technologies. Such systems vary tremendously in complexity and price depending on the technique and the size of the capture space, from a few thousand to several hundred thousand dollars, basically limiting their use to research laboratories. But independent of their price, another limitation for the widespread use of MoCap systems to the analysis of musical performer users is, in many cases, their lack of accurate synchronization between audio and MoCap data. Such a feature is essential in the analysis of music performance if one wants to accurately relate the acquired movement to a musical event (e.g. a note played). In this talk, I will review various MoCap technologies and discuss ways to circumvent synchronization limitations in various MoCap systems available at the Input Devices and Music Interaction Laboratory at McGill. Examples will be provided illustrating the use of MoCap to the analysis and synthesis of performer movements. + 4:00-4:30 Johanna Devaney Techniques for extracting performance data from audio recordings + There is a wealth of information available in recording performances. Interest in studying this information dates back almost as far as the birth of recordable media. While early studies were extremely arduous and entirely manual, today there are numerous options for semi-automatic and automatic extraction of performance data. This talk will survey a number of such tools and will consider the various challenges that arise when extracting and studying performance parameters. +
+4:30-5:00 Discussion
+5:00-7:00 Reception
+Monday November 2
+9:00-10:00 Caroline Palmer The role of sensory feedback in performance + Musicians perform sucessfully under a wide variety of feedback conditions due to changes in musical instruments, architectural environments, and sound transmission issues such as wearing headphones in a studio versus live conditions in a concert venue. The sensory feedback (auditory, visual, tactile/proprioceptive) available to performers differs across these conditions, and in fact is rarely the same from one performance to another. I will review recent research that demonstrates performers’ sensitivities and insensitivities to changes in sensory feedback, and how their performances are altered in both solo and ensemble performance. Examples will be provided from motion capture experiments that demonstrate changes in resulting sound and motion of performers due to changes in sensory feedback. + 10:00-12:00 David Huron From Idea to Experiment + Music theorists have a long history of identifying and framing highly interesting and sometimes vexing problems surrounding music as heard and conceptualized. Studying these problems in a rigorous fashion, however, is another matter. In this 2-hour session, symposium attendees will work through three small-group activites, tracing out a general Question-to-Theory-to-Conjecture-to-Hypothesis-to-Protocol procedure. + Location +
+The workshop will be held at the Schulich School of Music of McGill University in room A-832 of the New Music Building (555 Rue Sherbrooke Ouest).
+Registration
+An online form is available at http://mcg.pmartens.net/smtmcg2009symposium. Registration is limited to 30 people due to space constraints, so please ensure that you are able to attend before registering. A link to this online form is also available via the SMT site at http://societymusictheory.org/events/conference/2009/committees
+We plan to collect a small registration fee at the door (no more than $20) to assist CIRMMT with the cost of the Sunday evening reception and Monday morning coffee & pastries.
+Organizers
+Johanna Devaney, Schulich School of Music of McGill University + Peter Martens, Texas Tech University School of Music +
++
+
Workshop on Expressive Performance
+ +CIRMMT Axis Three (“Musical information archiving and retrieval”) presents a half-day workshop in Montreal on the topic of expressive performance The schedule will include two keynote talks by Roger Dannenberg (Carnegie Mellon University) and Christopher Raphael (Indiana University), several 20 minute talks, a poster session accompanied by a wine and cheese, and plenty of time for informal discussion between researchers interested in expressive performance.
+
+
Location
+BRAMS (Université de Montréal)
+
+
Schedule
+1:00-1:30 - Johanna Devaney, Schulich School of Music, McGill University
+An Overview of Empirical Performance Analysis
+I will present a historical overview of empirical performance analysis, with a particular focus on work that attempts to model or describe various aspects of performance. I will also discuss the challenges of automatically extracting performance data from audio signals, with a focus on the singing voice.
+1:30-2:30 - Roger Dannenberg, School of Computer Science, Carnegie Mellon University
+Timing in Live Performance of Beat-Based Music
+Expressive timing is often studied in connection with Western art music in which timing has been shown to be related to music structure and emotion. Relatively little attention has been paid to timing in what I will call “beat-based music,” that is, music that is normally performed at a steady tempo. While there has been much interest in automatic tempo estimation and automated beat tracking or “foot tapping”, relatively little study has been made of data. I have been capturing beat data from live performances. While this is still work in progress, I would like to share some data on actual tempo variation in live performances of different types, some new techniques to estimate the accuracy of human timing through foot pedals and hand tapping relative to the “true” beat which is not directly observable, and finally some results that show we can estimate the next true beat time using previous tap data more accurately than a human can tap.
+2:30-3:00 - Steven Livingstone, Department of Psychology, McGill University
+Changing Musical Emotion through Score and Performance with a Computational Rule System
+Can the emotion of a musical work be changed through the modification of simple compositional and performance cues? To answer this question, CMERS was developed - a Computational Music Emotion Rule System for the control of perceived musical emotions that modifies a work at the levels of score and performance in real-time. Two rounds of perceptual testing were conducted with CMERS. In experiment 1, twenty participants responded to three music works, each with five variations: normal, happy, angry, sad, and tender. Participants gave continuous responses on a two-dimensional feedback tool (arousal and valence). System accuracy of 78% was achieved with significant shifts in valence and arousal. In experiment 2, CMERS was compared with Director Musices, an existing rule system which does not possess important score rules. Eighteen participants performed the same task; two works produced by CMERS and two by DM; each with five variations. Accuracy of CMERS and DM was 71% and 49% respectively. CMERS achieved significant shifts in both valence and arousal, while DM only achieved shifts in arousal. These results suggest the perceived emotion of music can be shifted through the manipulation of simple cues, and that aspects of the score are critical for controlling the valence of a music work.
+3:00-3:30 - Ichiro Fujinaga, Schulich School of Music, McGill University
+Do Key-bottom Sounds Distinguish Piano Tones?*
+-
+
- Paper co-authored by Werner Goebl +
The timbre of a single piano tone as well as its loudness is primarily determined by the speed at which the hammer hits the strings (final hammer velocity). However, the overall sound may also be influenced by impact sounds such as the hammer-string or the finger-key impact sounds. Especially the latter can be varied with playing technique (touch) and is easily perceptible. Little is known about the nature of sounds that emerge from the interaction of key and keybed, which is the large piece of wood underneath the keys. In this study, we investigate whether the absence or presence of a key hitting the keybed makes two otherwise identical piano tones distinguishable by expert listeners. A skilled pianist produced a number of isolated tones on a computer-monitored Bösendorfer grand piano (“CEUS”) that measures the loudness and onset timing of the tones as well as the continuous position of the keys. We selected tone pairs that were identical in pitch, loudness, and tone length, but with or with out a key-keybed contact. The key-keybed contact was identified from the recorded key trajectories. Overall, the participants performed the task very well, significantly better than chance (82% correct); specifically the difference of a tone pair was even better identified (82.7% correct). F7 was slightly easier to rate than E7; there was no effect of loudness. Even though the investigated key-bottom sounds are subtle compared to other sound components, our results confirm that they can indeed audibly influence the timbre of a piano tone. The investigated effect may indeed have ecological relevance, as many important listening situations occur in the vicinity of the piano keyboard (e.g., piano practicing and piano lessons).
+3:30-3:45 - Coffee Break
+3:45-4:45 - Christopher Raphael, School of Informatics, Indiana University
+Expressive Synthesis of Melody and Musical Prosody
+I will describe ongoing work in expressive melody synthesis. This effort is focussed on musical prosody — the use and avoidance of stress in music and the associated grouping it creates. I will represent a prosodic interpretation as a note-level markup using a small alphabet of symbols. I will show that this markup can be used to generate expressive performance through a deterministic mapping from markup and score to audio. I will also look at the machine-learning problem of estimating this prosodic markup. The examples use a small collection of 50-or-so folk like melodies that have been hand annotated with prosody.
+4:45-5:15 - Alexandre Bouënard, Schulich School of Music, McGill University
+Going Beyond Motion Capture Data: An Application for Synthesizing Expressive Percussion Performances*
+-
+
- Paper co-authored by Marcelo M. Wanderley and Sylvie Gibet +
The increasing availability of software for creating real-time simulations of musical instruments allows for the design of new visual and sounding media. Nevertheless, from a conceptual and pratical point of view, the question of how these new instruments can be controlled has rarely been addressed in the literature. We present a framework for the control of virtual percussion instruments by modeling and simulating virtual percussionists, based on a motion capture database and on a physically-based movement simulation environment. We discuss the benefits and limits of such an approach as a means of synthesizing new expressive percussion performances.
+5:15-5:45 - Douglas Eck, Department of Computer Science, University of Montreal
+Learning from performances with and without scores
+I will discuss work done with Stanislas Lauly on learning a performance model based on score-aligned artistic performances. I will focus mainly on how we represented the music in order to achieve (reasonable) success. I will then go on to talk about how to do something similar without having access to a score. I will suggest using a model able to find metrical structure via beat tracking as a noisy replacement for the score. Though I don’t have performance results yet for this model, I am able to show some promising statistical analyses of our Boesendorfer datasets.
+5:45-6:30 - Poster session / Boesendorfer Demo with vin-fromage
+Stanislas Lauly - Department of Computer Science, University of Montreal
+Demo of automatically generated expressive performances of Schubert waltzes on Boesendorfer
+Michel Bernays, Faculty of Music, University of Montreal
+Piano Timbre: from words to gesture to sound: Perception, verbal description & gestural control of aggregate piano timbres by highly skilled pianists
+Timbre is a key to musical expressivity in virtuosic pianistic performance. When discussed amongst professionals, timbre is described with abstract terms such as dark, bright, round, velvety, shimmering, whose imagery aims at fitting the sonic nuances, but bypass the quantitative and functional characteristics of its production. Still, pianists seem able to avoid inter-individual misunderstandings in timbre description. This study then aims to determine the degree of consensus of this vocabulary among the pianistic community, and identify its gestural correlates at the keyboard level. A professional pianist played 3 short pieces, with 8 adjectives as successive instructions to color the performances, on the computer-controlled recording acoustic piano Bösendorfer CEUS, that gathered data on key movement and hammer velocity, from which to extract the specific gesture parameters with custom Matlab functions. The audio recordings were used as stimuli, over which the pianist himself proved easily capable of retrieving the timbres. In the main task, 17 other pianists provided a verbal description of each timbre they could recognize, which fitted the expected descriptor roughly one third of the time. The results got much more conclusive, and way above chance, once accounting for the semantic proximity between adjectives. This indicates the expressive intentions of a virtuosic pianist can be perceived by his peers and can be verbally described in a consensual way. Gesture analysis is now under way, with the aim of identifying meaningful correlations between statistics of synchronism, dynamics, touch, overlap, articulation, etc., and the timbres employed.
+Thomas Stoll, Department of Music, University at Buffalo
+Integrating Musical Expression into a Corpus-based Organizational System
+Corpus-based systems of musical material are comprised of audio that is segmented, categorized, and deployed as units based on parameters derived either from the audio itself, user-generated tags, or some extra-musical data. The possibilities of encoding musical meaning and structure into the collection of sonic units via segmentation and organization are both of utmost concern to the user. The features encoded within the units may exhibit particular expressive qualities individually or collectively and fuel algorithms that reorder units in interesting ways. The material presented here comes out of ongoing research and creative work aimed at exploring the many various aspects of sound organized within corpora. It is quite open-ended owing to the extensive possibilities afforded by the corpus-based framework.
++
+
Welcome!
- -Distributed Digital Music Archives & Libraries Lab -
-
We focus on developing and evaluating practices, frameworks, and tools for the design and construction of worldwide distributed digital music archives and libraries. Over the last few millennia, humans have amassed an enormous amount of information and cultural material that is scattered around the world. It is becoming abundantly clear that the optimal path for acquisition is to distribute the task of digitizing the wealth of historical and cultural heritage material that exists in analogue formats, which may include books, manuscripts, music scores, maps, photographs, videos, analogue tapes, and phonograph records. -
-- In order to achieve this goal, libraries, museums, and archives throughout the world, large or small, need well-researched policies, proper guidance, and efficient tools to digitize their collections and to make them available economically. The research conducted within the program will address unique and imminent challenges posed by the digitization and dissemination of music media. -
-We are located in the Music Technology Area of the Schulich School of Music at McGill University in Montreal, Quebec, Canada. We are affiliated with the Centre for Interdisciplinary Research in Music Media and Technology (CIRMMT). -
-Research & Projects
--
-
- {% for post in site.research %}
- {% if post.type == 'project' %}
- {% if post.title == "Centre de Recherche sur l'Interprétation au Clavecin (CRIC)" %}
-
- {{ post.title }} - {% else %} - {% if post.link %} -
- {{ post.title }} - {% else %} -
- {{ post.title }} - {% endif %} - {% endif %} - {% endif %} - - {% endfor %} - -
- + + + + + + + + + + + + + +
Welcome!
+ ++ Distributed Digital Music Archives & Libraries Lab +
+
+ +
We focus on developing and evaluating practices, frameworks, and tools for the design and construction of worldwide distributed digital music archives and libraries. Over the last few millennia, humans have amassed an enormous amount of information and cultural material that is scattered around the world. It is becoming abundantly clear that the optimal path for acquisition is to distribute the task of digitizing the wealth of historical and cultural heritage material that exists in analogue formats, which may include books, manuscripts, music scores, maps, photographs, videos, analogue tapes, and phonograph records. +
++ In order to achieve this goal, libraries, museums, and archives throughout the world, large or small, need well-researched policies, proper guidance, and efficient tools to digitize their collections and to make them available economically. The research conducted within the program will address unique and imminent challenges posed by the digitization and dissemination of music media. +
+We are located in the Music Technology Area of the Schulich School of Music at McGill University in Montreal, Quebec, Canada. We are affiliated with the Centre for Interdisciplinary Research in Music Media and Technology (CIRMMT). +
+Research & Projects
++
-
+
- Audio Quality +
- Workflow Management with Automatic Metadata Extraction +
- Automatic Music Classification +
- Centre de Recherche sur l'Interprétation au Clavecin (CRIC) +
- Interlibrary Communication +
- LinkedMusic +
- The McGill Image-to-Audio Conversion Project (MltAC) +
- Optical Music Recognition (OMR) +
- Posters +
- Structural Analysis of Large Amounts of Music Information (SALAMI) +
- Single Interface for Music Score Searching and Analysis (SIMSSA) +
- The McGill Billboard Project +
- The Music Listening Histories Dataset (MLHD) +
- Vocal Intonation +
+
-{% assign pi = site.lab_members | where:"category","Principal" %} -
Principal Investigator
--
-{% for member in pi %}
-
- {{ member.title }}
Project Manager
--
-{% for member in manager %}
-
- {{ member.title }}
- {{ member.title }}
- {{ member.title }}
- {{ member.title }}
- {{ member.title }}
- {{ member.title }}
- Music Information Retrieval +
- Image Processing +
- Cyber Security +
- Machine Learning +
- St. Thomas University Alumni +
- Berklee College of Music Alumni +
- Current student at McGill University +
Postdoctoral Researchers
--
-{% for member in postdoc %}
-
PhD
--
-{% for member in phd %}
-
Masters
--
-{% for member in masters %}
-
Undergraduate
--
-{% for member in undergrad %}
-
Alumni
See past group photos here --
-{% for member in alumni %}
-
Adam Tindale
+
+ +
Adam Tindale is currently affiliated with: OCAD University
++
+
Alastair Porter
+
+ +
Alastair Porter is currently affiliated with: Universitat Pompeu Fabra
++
+
Alex Daigle
+MA in Music Technology
+Optical music recognition software and music engraving software
+Drumming and programming has been his passions since Alex was very little, and it is this passion that drove him to constantly work at developing his skills as an artist, and, as a programmer. “Affecting people with performance or instruction is what makes all of the hard work and dedication worth it” he says. A natural evolution occurred when he combined his too passions of music and technology. He is currently researching music engraving software and optical music recognition software in order to optimize the generation of symbolic representations of music for large scale database generation.
+In his spare time Alex participates in Capture the Flag computer competitions competitions and continues to teach drumset performance.
+Research Interests
+-
+
Academic Record
+-
+
+
+
Alexandre Parmentier
+
+ +
Alexandre Parmentier is currently affiliated with: University of Waterloo
++
+
Andrew Fogarty
+
+ +
Andrew Fogarty is currently affiliated with: Microsoft
++
+
Andrew Hankinson
+
+ +
Andrew Hankinson is currently affiliated with the RISM Digital Center, Bern, Switzerland.
++
+
Andrew Horwitz
+
+ +
Andrew Horwitz is currently affiliated with: RILM
++
+
Anton Khelou
+
+ +
Anton Khelou is currently affiliated with: Autodesk
++
+
Arielle Goldman
+
+ +
+
+
Ashley Burgoyne
+
+ +
Ashley Burgoyne is currently affiliated with: University of Amsterdam
++
+
Beinan Li
+
+ +
Beinan Li is currently affiliated with: Audiokinetic
++
+
Brian Stern
+
+ +
Brian Stern is currently affiliated with: ToonBox Entertainment
++
+
Catherine Lai
+
+ +
Catherine Lai is currently affiliated with: OSISoft
++
+
Catherine Motuz
+
+ +
+
+
Chris Niven
+
+ +
Chris Niven is currently affiliated with: Never Be Normal
++
+
Christopher Antila
+
+ +
+
+
Cory McKay
+
+ +
Cory McKay is currently affiliated with: Marianopolis College
++
+
Daniel McEnnis
+
+ +
+
+
David Garfinkle
+M.Sc in Computer Science
+Content-Based Symbolic Music Retrieval
+David is pursuing a Master’s in Computer Science at McGill. He is currently focused on implementing an excerpt retrieval system for symbolic music.
+Before starting his Master’s, he received two bachelor’s degrees from McGill: a B.Sc in Mathematics & Computer Science and a Bachelor of Music with a concentration in piano. During his undergraduate studies, he liked to perform musical improv theater and worked as a research assistant at DDMAL.
+Publications
+-
+
- Garfinkle, David, Peter Schubert, Claire Arthur, Julie Cumming, and Ichiro Fujinaga. “PatternFinder: Content-Based Music Retrieval with Music21.” In Proceedings of the 4th International Workshop on Digital Libraries for Musicology. Shanghai, China, 2017. +
Research Interests
+-
+
- Music Information Retrieval +
Academic Record
+-
+
- B.Mus focus in piano, McGill University +
- B.Sc Mathematics & Computer Science, McGill University +
+
+
Deepanjan Roy
+
+ +
Deepanjan Roy is currently affiliated with: Google
++
+
Emily Hopkins
++
Project Manager (SIMSSA)
+Emily Hopkins (she/her) has worked as the project manager for the SIMSSA Project (Single Interface for Music Score Searching and Analysis, simssa.ca) since 2015. She is also a member of Library Freedom Project (libraryfreedom.org). She graduated with her MLIS from the University of Alberta in 2020, and before that studied musicology (McGill) and oboe performance (UBC).
+Research Interests
+-
+
- libraries +
- metadata +
- free software +
Academic Record
+-
+
- University of Alberta, Master of Library and Information Studies, 2020 +
- McGill University, Master of Arts, Musicology, 2015 +
- University of British Columbia, Bachelor of Music in Orchestral Instrument Performance (Oboe), 2011 +
Publications
+-
+
- Desmond, Karen, Emily Hopkins, Samuel Howes, and Julie E. Cumming. 2020. “Computer-Aided Analysis of Sonority in the French Motet Repertory, c. 1300-1350.” Music Theory Online 26 (4):26.4.2. +
- Hopkins, Emily, Yaolong Ju, Gustavo Polins Pedro, Cory McKay, Julie Cumming, and Ichiro Fujinaga. 2019. “SIMSSA DB:` Symbolic Music Discovery and Search.” Poster (refereed) presented at the Digital Libraries for Musicology, The Hague, Netherlands, November. +
- Ju, Yaolong, Gustavo Polins Pedro, Cory McKay, Emily Ann Hopkins, and Julie Cumming. 2019. “Enabling Music Search and Analysis: A Database for Symbolic Music Files.” Poster (refereed) presented at the Music Encoding Conference 2019, University of Vienna, Austria, May 30. +
- McKay, Cory, Emily Hopkins, Gustavo Polins Pedro, Yaolong Ju, Andrew Kam, Julie Cumming, and Ichiro Fujinaga. 2019. “A Collaborative Symbolic Music Database for Computational Research on Music.” Presented at the Medieval and Renaissance Music Conference, Basel, Switzerland. +
- Hopkins, Emily. 2017. “The SIMSSA Project: Search as Access to Digital Music Libraries.” Presented at the Access Conference 2017, Saskatoon, SK, September 27. +
- Desmond, Karen, and Emily Hopkins. 2016. “Measuring Polyphony: Analysing Stylistic Change in the French Motet Repertory, C1300-1350.” Presented at the Workshop on SIMSSA VIII, McGill University, Montreal, QC, May 21. +
- Penner, Nina, and Emily Hopkins. 2015. “Musicologists on GitHub: User Experience and the ELVIS Database.” Presented at the CIRMMT Workshop on usability and user experience for music information systems, McGill University, Montreal, QC, September 25. +
+
+
Evan Magoni
+
+ +
Evan Magoni is currently affiliated with: Autodesk
++
+
MA in Music Technology
+Generative Adversarial Networks (GANs)
+Evan is a second-year masters student at McGill. He received his bachelors degree from Penn State in Computer Science with minors in Music Technology and Arts Entrepreneurship. During his undergraduate studies, he played trombone for five seasons with the Penn State Marching Blue Band, co-founded the university’s first arts entrepreneurship organization, and worked as a resident assistant for three years.
+Evan is researching the application of generative adversarial networks to create synthetic 12th-century chant manuscripts from scratch, and see whether novel and existing automatic transciption operations will yield higher accuracy when trained on extentable fake data instead of finite real data. As more real manuscript data is gathered, Evan will also consider how the fake data will generalize to previously ‘unseen’ handwriting styles, backgrounds, and non-musical information.
+High-stepping away from the football field and onto the dance floor, Evan is now an avid music producer and DJ in his spare time, mainly focusing on techno, trance, and ambient textures in his compositions.
+Research Interests
+-
+
- Machine Learning +
- Music Information Retrieval +
- Image Processing +
- Digital Signal Processing +
Academic Record
+-
+
- BSc in Computer Science, Pennsylvania State University +
+
+
Postdoctoral researcher
+Perceived Complexity in Polyphonic Music
+A recent PhD from New York University, Finn Upham brings together expertese in music cognition, music theory, and mathematics. They joined DDMAL in 2019 as a postdoc for the SIMSSA project, working with Prof. Julie Cumming on features of complexity in liturgical music in the 15th C.
+At NYU, Finn worked on statistics for continuous responses and respiration to music, supervised by Mary Farbood in music technology research at the Steinhardt School of Culture, Education and Human Development. Their previous studies at McGill involved research on continuous audience responses to music with Stephen McAdams in the Music Perception and Cognition Lab and with Tony Humphries on differential delay equations in Nonlinear Dynamics.
+Out of the lab, Finn produces The So Strangely Podcast on Recent Research in Music Science. Finn is nonbinary and uses they/them pronouns.
+Research Interests
+-
+
- Music Cognition +
- Statistics +
- Computational Music Analysis +
- Psychophysiology +
- Interdisciplinary Research Methods +
Academic Record
+-
+
- PhD in Music Technology, New York University +
- MA in Music Technology, McGill University +
- BMus in Music Theory, McGill University +
- BSc in Mathematics and Statistics, McGill University +
+
+
Postdoctoral Researcher
+Optical music recognition, AI-assisted music performance and composition.
+I am a musician and scholar who combines practice-based research with extensive studies in sound recording, music production, human- computer interaction, music information retrieval, and machine learning to design new approaches to music composition. Currently, I am a postdoctoral research fellow in the Department of Computing at Goldsmiths University of London, where I am investigating the creative capabilities and affordances of the deep learning paradigm for assisting musical composition.
+Publications
+ + +Research Interests
+-
+
- Music production +
- Music composition +
- Music recommendation +
- Music listening behaviour +
- Optical music recognition +
Academic Record
+-
+
- PhD in Music, McGill University +
- MA in Music Technology, McGill University +
- BA in Sound Science, Universidad de Chile +
+
+
Greg Eustace
+
+ +
+
+
Gregory Burlet
+
+ +
Gregory Burlet is currently affiliated with: Frettable
++
+
Hannah Robertson
+
+ +
Hannah Robertson is currently affiliated with: iZotope
++
+
Harry Simmonds
+
+ +
Harry Simmonds is currently affiliated with: Apple
++
+
Jamie Klassen
+
+ +
Jamie Klassen is currently affiliated with: CGI
++
+
Jason Hockman
+
+ +
Jason Hockman is currently affiliated with: Birmingham City University
++
+
Jason Leung
+
+ +
+
+
Jessica Thompson
+
+ +
Jessica Thompson is currently affiliated with: Université de Montréal
++
+
Jin Xing
+
+ +
+
+
Jinho Yoon
+
+ +
Summer software developer
+Hi, I’m Jinho Yoon. I’m working as a software developer for the summer of 2022.
++
+
Johanna Devaney
+
+ +
Johanna Devaney is currently affiliated with: Ohio State University
++
+
Jordan Smith
+
+ +
Jordan Smith is currently affiliated with: AIST, Japan
++
+
Jorge Calvo-Zaragoza
+
+ +
Jorge Calvo-Zaragoza is currently affiliated with: University of Alicante
++
+
B.Eng. Computer Engineering
+Juliette is a research assistant at DDMAL and recently completed a Bachelor of Engineering. + She mainly works on Neon, a browser-based square-notation editor. + She is interested in technology that makes accessing and manipulating information more user-friendly, and how “user friendliness” makes many assumptions about who a user is. +
+Juliette has an ongoing, one-sided feud with JavaScript and other loosely typed languages.
+Research Interests
+-
+
- Human-Computer Interaction +
- Linked Data +
Academic Record
+-
+
- B.Eng. Computer Engineering, McGill University +
+
+
Junhao Wang
+MA in Music Technology
+Playing Technique Detection for Electric Guitar
+As a music technology researcher and enthusiast, Junhao uses machine learning for audio analysis. He also does some Django web development on the side. Otherwise, he makes heavy metal noise.
+Research Interests
+-
+
- Playing Technique Detection +
- Automatic Guitar Transcription +
- GuitarPro Information Retrieval +
Academic Record
+-
+
- Master of Arts in Music Technology, McGill University +
- Bachelor of Engineering in Digital Media Technology, Communication University of China +
+
+
Jérôme Parent-Lévesque
+
+ +
Jérôme Parent-Lévesque is currently affiliated with: Vigilant Global
++
+
Ké Zhang
+
+ +
+
+
Laurent Pugin
+
+ +
Laurent Pugin is currently affiliated with: RISM-CH
++
+
Laurier Baribeau
+
+ +
+
+
Lillio Mok
+
+ +
Lillio Mok is currently affiliated with: Autodesk
++
+
Ling-Xiao Yang
+
+ +
Ling-Xiao Yang is currently affiliated with: The Yang
++
+
Mahtab Ghamsari
+
+ +
Mahtab Ghamsari is currently affiliated with: VRSUS
++
+
Marina Borsodi-Benson
+
+ +
Marina Borsodi-Benson is currently affiliated with: Stanford University
++
+
Marnie Reckenberg
+
+ +
+
+
+ PhD Candidate in Music Technology
+Early Music Preservation and Encoding
+Full name:
Martha Eladia María / Thomae Elías
+
+ I am a PhD candidate working under the supervision of Ichiro Fujinaga and Julie Cumming in the Music Technology Area of the Schulich School of Music, McGill University. I have a Bachelor’s degree in Mathematics from Universidad del Valle de Guatemala and a Master’s degree in Music Technology from McGill University. Since 2015, I have been a member of the Single Interface for Music Score Searching and Analysis (SIMSSA) project and the Centre for Interdisciplinary Research in Music Media and Technology (CIRMMT) at McGill, serving as student coordinator of the Music Information Research axis of CIRMMT from 2017–2019.
+My research is focused on the preservation and encoding of mensural music. I have developed tools to facilitate the encoding of this repertoire, including the Mensural MEI Translator and the Automatic Scoring-up Tool. I am an active member of the Mensural MEI Interest Group (IG), where we look into the best options for encoding the various features of mensural notation to represent the characteristics of the vocal polyphonic music from the Late Middle Ages and the Renaissance. Since 2020, I have been acting as Co-Chair of the Mensural MEI IG and as a member of the MEI Board (2020–2022). Currently, I am working on a project that involves the digitization and encoding of the musical content of a Guatemalan choirbook from the colonial period which is written in mensural notation. This research is funded by the Fonds de Recherche du Québec - Société et Culture (FRQSC).
+Publications:
+-
+
-
+
Thomae, Martha E. “The Guatemalan Choirbooks: Facilitating Preservation, Performance, and Study of the Colonial Repertoire.” In Christian Music Traditions in the Americas, edited by Andrew Shenton and Joanna Smolko. New York: Rowman & Littlefield, 2021.
+
+ -
+
Thomae, Martha E., Antonio Ríos-Vila, Jorge Calvo-Zaragoza, David Rizo, and Jose M. Iñesta. “Retrieving Music Semantics from Optical Music Recognition by Machine Translation.” In Music Encoding Conference Proceedings 26-29 May, 2020, 19–24. Tufts University, Boston, 2020. http://dx.doi.org/10.17613/605z-nt78.
+
+ -
+
Desmond, Karen, Andrew Hankinson, Laurent Pugin, Juliette Regimbal, Craig Sapp, and Martha E. Thomae. “Next Steps for Measuring Polyphony–A Prototype Editor for Encoding Mensural Music.” In Music Encoding Conference Proceedings 26-29 May, 2020, 121–24. Tufts University, Boston, 2020. http://dx.doi.org/10.17613/5k88-9z02.
+
+ -
+
Thomae, Martha E., Julie E. Cumming, and Ichiro Fujinaga. 2019. “The Mensural Scoring-Up Tool.” In Proceedings of the 6th International Workshop on Digital Libraries for Musicology, 9–19. The Hague, Netherlands: ACM. http://cloud.simssa.ca/index.php/s/w2Iw6IsGrWqnYpe.
+
+
+
-
+
-
+
Thomae, Martha E. 2017. “Automatic Scoring up of Mensural Music Using Perfect Mensurations, 1300-1550.” Master’s Thesis, Montreal: McGill University. http://cloud.simssa.ca/index.php/s/gcZwsRbWa8OTN4X.
+
+ -
+
Thomae, Martha E. “Desarrollo de un modelo algorítmico para la transformación de partituras musicales escritas en notación mensural blanca a notación contemporánea.” Undergraduate Thesis, Universidad del Valle de Guatemala, 2013.
+
+
Research Interests
+-
+
- Music Information Retrieval +
- Symbolic Music +
- Music Preservation +
- Music Encoding +
- Early Music +
- Machine Learning +
Academic Record
+-
+
- PhD candidate in Music Technology, McGill University +
- MA in Music Technology, McGill University +
- Licenciatura en Matemática (BSc in Mathematics), Universidad del Valle de Guatemala +
+
+
Matan Gover
+
+ +
+
+
Mathieu Bergeron
+
+ +
Mathieu Bergeron is currently affiliated with: Cégep Montmorency
++
+
Mike Winters
+
+ +
+
+
Neda Eshraghi
+
+ +
+
+
Néstor Nápoles López
+PhD Candidate in Music Technology
+Automatic Roman Numeral Analysis
+Néstor Nápoles López is a PhD candidate in Music Technology at McGill University, working under the supervision of professor Ichiro Fujinaga. Néstor holds an MSc in Sound and Music Computing from Universitat Pompeu Fabra (Spain) and a Licenciatura en Informática (undergraduate degree in software engineering) from his hometown university, Universidad de Guadalajara (Mexico). His research interests include Music Information Retrieval (MIR) in the context of tonal music (mostly around the computational study of musical keys, tonicizations, modulations, chords, and Roman numeral analysis), music encoding, and educational video games for musicianship training.
+As part of his research assistant role at the Distributed Digital Music Archives and Libraries (DDMAL) Laboratory, Néstor participates in the development of Cantus Ultimus, a public website that provides an interactive interface for the simultaneous visualization of expert-curated chant data and its source manuscript images.
+Publications and projects
+Available on personal website.
+Research Interests
+-
+
- Deep Learning +
- Music Theory +
- Tonal Music +
- Music Information Retrieval +
Academic Record
+-
+
- PhD candidate in Music Technology, McGill University +
- Masters in Sound and Music Computing, Universitat Pompeu Fabra +
- Licenciatura en Informatica, Universidad de Guadalajara (México) +
- Profesional Medio en Piano, Instituto Nacional de Bellas Artes (México) +
+
+
Paul Buser
+MA in Music Technology
+I started off playing piano, which ended up being a very common interface for modern synthesizers. Thanks, Moog. Nowadays I like to make improvised electronic music under the moniker “BEEPY VERSION”—you can check it out here.
+Research Interests
+-
+
- Improvisation +
- New Interfaces for Musical Expression +
Academic Record
+-
+
- M.A., Music Technology, McGill University +
- B.A., Computer Science, Oberlin College +
+
+
Peter Henderson
+
+ +
+
+
Rajarshi Rivu Khoda
+
+ +
Rajarshi Rivu Khoda is currently affiliated with: IBM
++
+
Rebecca Fiebrink
+
+ +
Rebecca Fiebrink is currently affiliated with: Goldsmiths, University of London
++
+
Reiko Yamada
+
+ +
+
+
Reiner Krämer
+
+ +
Reiner Krämer is currently affiliated with: University of Northern Colorado
++
+
Remi Chiu
+
+ +
Remi Chiu is currently affiliated with: Loyola University Maryland
++
+
Robert Ferguson
+
+ +
Robert Ferguson is currently affiliated with: Automatic Labs
++
+
Rory O'Connor
+
+ +
+
+
Ruth Berkow
+
+ +
+
+
Ryan Bannon
+
+ +
Ryan Bannon is currently affiliated with: CaseWare
++
+
Sacah Perry-Fagant
+
+ +
+
+
Saining Li
+
+ +
Saining Li is currently affiliated with: Ayuda Media Systems
++
+
MA in Music Technology
+Music Demixing
+100% SWE, 100% SRE.
+I’m a Linux systems engineer with a side interest in signal processing for audio and music. My current research topic is exploring the time-frequency uncertainty principle in music demixing, which I am writing my master’s thesis on; see the code here.
+Research Interests
+-
+
- Music Demixing +
- Beat Tracking +
- Pitch Detection +
- Time-Frequency Transforms +
Academic Record
+-
+
- MA Music Technology, McGill University +
- B.Eng, Electrical Engineering, McGill University +
Publications
+-
+
- Hanssian, Sevag. 2021. “Music demixing with the sliCQ transform.” In MDX21 workshop, ISMIR 2021. +
+
+
Shahrad Mohammadzadeh
+Studying B.Sc Honours Computer Science @ McGill University
+As an Honours Computer Science Student at McGill University, my desire is to apply Computer Science and Mathematics to the world of technology and problem-solving and highly Interested in doing research; fields such as: Machine Learning, Data Science, and software systems. + I am experienced in a broad range of software tools and programming languages. My current focus in DDMAL is working as a software developer. +
+I am a professional piano player (since the age of 7!). My favorite piece is “fantaisie impromptu” by Chopin.
+My projects can be found on github. For instance, I have recently finished a music recommendation system in a fabulous team of 4. The model uses machine learning to offer you music based on your taste. The source code can be found on my github.
+Don’t hesitate to be in touch with me on linkedIn for collaborations!
+Research Interests
+-
+
- Data Science +
- Machine Learning, Deep Learning, and Ethics in AI +
- Music Technology +
- Software Systems +
Academic Record
+-
+
- Bachelor of Science in Honours Computer Science at McGill University (current) +
+
+
Simon de Leon
+
+ +
+
+
Spencer Cambell
+
+ +
+
+
Suzuka Kokubu
+MA in Music Technology
+Academic Record
+-
+
- MA Music Technology, McGill University +
- BS Applied Physics, Columbia University +
- BS Physics, Washington College +
+
+
Tim Wilfong
+
+ +
+
+
Tristan Himmelman
+
+ +
Tristan Himmelman is currently affiliated with: Hearst
++
+
Tristan Matthews
+
+ +
+
+
Tristano Tenaglia
+
+ +
+
+
Véronique Lagacé
+
+ +
+
+
Wei Gao
+
+ +
+
+
Wendy Liu
+
+ +
Wendy Liu is currently affiliated with: Macromeasures
++
+
William Bain
+
+ +
William Bain is currently affiliated with: Cisco Systems
++
+
PhD Candidate in Music Technology
+Automatic Harmonic Analysis
+Currently, I am a Ph.D. student from Distributed Digital Music Archives & Libraries Lab. My primary research topic is automatic harmonic analysis, and I am generally interested in applied machine learning, music information retrieval, music theory, and digital music libraries.
+Graduating from Jilin University as a computer science B.S., I achieved M.S. from Peking University, where I was fortunate to engage in the research of music techology, an interdisciplinary field between music and computer science. During my master study, I discovered my passion for research and determined to pursue a doctoral study.
+Research Interests
+-
+
- Machine Learning +
- Music Information Retrieval +
- Music Theory +
- Digital Music Libraries +
+
+
Yihong Luo
+
+ +
Yihong Luo is currently affiliated with: Manulife
++
+
Yu Hua
+
+ +
Yu Hua is currently affiliated with: Airbnb
++
+
Yue Phillis Ouyang
+
+
+ +
+
+
Zeyad Saleh
+
+ +
Zeyad Saleh is currently affiliated with: Apple
++
+
Lab Members
+ +Principal Investigator
+-
+
- Ichiro Fujinaga
+
Project Manager
+-
+
- Marisa Goldman
+
Postdoctoral Researchers
+-
+
- Anna de Bakker
+
PhD
+ +Masters
+ +Undergraduate
+-
+
- Anthony Tan
+ - David Peterman
+ - Geneviève Gates-Panneton
+ - Hong Van Pham
+ - Jacky Zhang
+ - Katie Lin
+ - Max Zhang
+ - Sabrina Mansour
+ - Taz Scott-Talib
+ - Zhanna Klimanova
+
Alumni
+ See past group photos here +-
+
- Adam Tindale
+ - Alastair Porter
+ - Alex Daigle
+ - Alexandre Parmentier
+ - Andrew Fogarty
+ - Andrew Hankinson
+ - Andrew Horwitz
+ - Anton Khelou
+ - Arielle Goldman
+ - Ashley Burgoyne
+ - Beinan Li
+ - Brian Stern
+ - Catherine Lai
+ - Catherine Motuz
+ - Chris Niven
+ - Christopher Antila
+ - Cory McKay
+ - Daniel McEnnis
+ - David Garfinkle
+ - Deepanjan Roy
+ - Eli Waksbaum
+ - Emily Hopkins
- Evan Magoni
+ - Evan Savage
+ - Finn Upham
+ - Gabriel Vigliensoni
+ - Gabrielle Halpin
- Greg Eustace
+ - Gregory Burlet
+ - Hannah Robertson
+ - Harry Simmonds
+ - Jamie Klassen
+ - Jason Hockman
+ - Jason Leung
+ - Jessica Thompson
+ - Jiali Cheng
- Jin Xing
+ - Jinho Yoon
+ - Jiwoo Jeong
+ - Johanna Devaney
+ - Jordan Smith
+ - Jorge Calvo-Zaragoza
+ - Juliette Regimbal
+ - Junhao Wang
- Justin Bell
+ - Jérôme Parent-Lévesque
+ - Kemal Kongar
+ - Khoi Nguyen
+ - Ké Zhang
+ - Laurent Pugin
+ - Laurier Baribeau
+ - Lillio Mok
+ - Ling-Xiao Yang
+ - Mahtab Ghamsari
+ - Marina Borsodi-Benson
+ - Marnie Reckenberg
+ - Martha E. Thomae
+ - Matan Gover
+ - Mathieu Bergeron
+ - Mike Winters
+ - Neda Eshraghi
+ - Néstor Nápoles López
+ - Nicky Mirfallah
+ - Paul Buser
+ - Peter Henderson
+ - Rajarshi Rivu Khoda
+ - Ravi Raina
+ - Rebecca Fiebrink
+ - Reiko Yamada
+ - Reiner Krämer
+ - Remi Chiu
+ - Robert Ferguson
+ - Rory O'Connor
+ - Ruth Berkow
+ - Ryan Bannon
+ - Sacah Perry-Fagant
+ - Saining Li
+ - Sevag Hanssian
+ - Shahrad Mohammadzadeh
+ - Simon de Leon
+ - Spencer Cambell
+ - Suzuka Kokubu
- Tim Wilfong
+ - Tristan Himmelman
+ - Tristan Matthews
+ - Tristano Tenaglia
+ - Véronique Lagacé
+ - Wei Gao
+ - Wendy Liu
+ - William Bain
+ - Yaolong Ju
+ - Yihong Luo
+ - Yu Hua
+ - Yue Phillis Ouyang
+ - Zeyad Saleh
+
+
+
Dylan Hillerbrand
+
+ MMus in Early Music
+Academic Record
+-
+
- Master of Music in Early Music Vocal Performance, McGill University +
- Bachelor of Arts in Mathematics, Swarthmore College +
+
+
Harry Chung
+
+ MA in Music Technology
++
+
Jacob deGroot-Maggetti
+MA in Music Theory (graduate)
+Cantus Database
+Jacob deGroot-Maggetti is a graduate of the Master’s in Music Theory Program at McGill University, where he studied the music of Canadian fiddler Oliver Schroer.
+Living in Kitchener-Waterloo before his degree at McGill, Jacob sang in the Grand Philharmonic Choir and Grand Philharmonic Chamber Choir, performed with the University of Waterloo Gamelan Ensemble, and directed the Ad Hoc, Post Hoc and Propter Hoc chamber choirs. In Montreal, he performed with the Orpheus Singers.
+In his free time, he enjoys playing traditional Irish and Quebecois dance music, reading, and learning about diverse subjects. Linguistics and mathematics have been recent topics of interest.
+Academic Record
+-
+
- BA in Music, University of Waterloo +
+
+
Lucas March
+
+ MA in Music Technology
+Lucas completed his undergraduate degree in computer science with a focus on Biomedical Computation and a minor in Music at Queens University. His previous research at the Medical-Informatics laboratory covers machine learning and computational approaches on iKnife aided intraoperative basal cell carcinoma videos for workflow recognition as a surgical aid in relocating positive margins. Lucas is currently pursuing an MA in Music Technology at McGill University. Outside of academics, Lucas is a clarinetist and pianist, collects plants, and is an amateur chess player.
+-
+
- “Cautery tool state detection using deep learning on intraoperative surgery videos” https://doi.org/10.1117/12.2654234 +
- “Phase recognition and cautery localization in basal cell carcinoma surgical videos” https://doi.org/10.1117/12.2611837 +
Academic Record
+-
+
- Queen's University, Bachelors Degree in Computer Science with Minor in Music +
+
+
Yinan Zhou
+MA in Music Technology
+Research Interests
+-
+
- Natural Language Processing +
Academic Record
+-
+
- McGill University, Master of Arts in Music Technology (Thesis), 2020-2022 +
- Communication University of China, Bachelor of Engineering in Network Engineering, 2016-2020
+
◦ 2020 Excellent Graduate Thesis: Research on Optical Music Notation Recognition Based on Convolutional Neural Network +
+ - High School Attached to Northeast Normal University, High School Diploma in Science, 2013-2016 +
+
+
Timothy Raja de Reuse
+PhD Candidate in Music Technology
+Music Technology
+I am a Ph.D. student working under Ichiro Fujinaga in the Music Technology Area of the Schulich School of Music, McGill University. My research interests center around analysis of repeated material in symbolic music; in particular, how machine-learning models can learn from long-term dependencies in music (e.g., verse-chorus forms, sonata forms) to make predictions and correct errors in scores. I also research musical pattern discovery algorithms, and how existing examples of annotated patterns can be used as examples to filter the large number of patterns that these algorithms often retrieve.
+Before my arrival at McGill, I was a research assistant in the Computational Epidemiology Research Laboratory at the University of North Texas, where I investigated models of traffic flow in disaster response scenarios.
+I’m a guitar player, and perform live under the band name “Water Gun Water Gun Sky Attack” every so often.
+-
+
-
+
de Reuse, Timothy. 2019. “A Machine Learning Approach to Pattern Discovery in Symbolic Music.” Master’s Thesis, Montreal, Canada: McGill University.
+
+ -
+
de Reuse, Timothy, and Ichiro Fujinaga. 2019. “Pattern Clustering in Monophonic Music by Learning a Non-Linear Embedding from Human Annotations.” In Proceedings of the 20th International Society for Music Information Retrieval Conference. Delft, Netherlands.
+
+ -
+
de Reuse, Timothy, and Ichiro Fujinaga. 2019. “Robust Transcript Alignment on Medieval Chant Manuscripts.” In Proceedings of the 2nd International Workshop on Reading Music Systems. Delft, Netherlands.
+
+
Research Interests
+-
+
- Music Information Retrieval +
- Pattern Discovery +
- Music Language Modelling +
- Musical Structure +
Academic Record
+-
+
- Master of Arts in Music Technology (McGill University) +
- Bachelor of Arts in Mathematics (University of North Texas) +
+
+
Anna de Bakker
+
+ +
+
+
Marisa Goldman
+
+ +
Project Manager (LinkedMusic)
+Academic Record
+-
+
- McGill University, Master of Information Studies, 2022 +
- University of Miami, Bachelor of Music, Music Business and Entertainment Industries (Oboe), dual degree with History, 2018 +
+
+
Anthony Tan
+Computer Science
+Robotics
+Anthony Tan is an undergraduate honours computer science student at McGill University. He is a team lead at McGill Robotics.
+Publications
+-
+
- https://dl.acm.org/doi/10.1145/3472538.3472554 +
- https://www.worldscientific.com/doi/10.1142/S0219720021400072 +
+
+
Hong Van Pham
++
Hong Van Pham is a Mathematics and Computer Science Undergraduate Student at McGill University. She is a Software Development Casual Researcher at DDMAL for the SIMSSA project, and is interested in Data Science and Analytics.
++
+
Katie Lin
+
+ BA in Computer Science & Music
+Development & Operations
++
+
Max Zhang
++
Computer Science and Music Performance
+Max Zhang graduated from McGill University with a double major in Computer Science and Jazz Performance. Some of his topics and interests include Machine Learning, Reinforcement Learning, Logic and Computation, and Software Architecture, to name a few. On his off-hours, Zhang enjoys bouldering and sport-climbing.
++
+
Sabrina Mansour
++
Sabrina Mansour is currently pursuing her Software Engineering Undergraduate at McGill University with a Minor in Biomedical Engineering. She is very passionate about music and has been playing the piano since she was five. She started working at DDMAL in 2022.
++
+
Taz Scott-Talib
+
+ B.A. in Software Engineering (McGill University)
+Taz Scott-Talib is a Software Engineering and Music Technology Undergraduate Student at McGill University. He is a Casual Research Assistant at DDMAL working on the SIMSSA and LinkedMusic projects.
+Research Interests
+-
+
- Granular Synthesis +
- Natural Language Processing +
Academic Record
+-
+
- DEC in Computer Science, CÉGEP Heritage College +
- International Baccalaureate, École secondaire de l'Île +
+
+
- -**_l-r_** : - -
- -{% include textpic.html imgurl="/assets/DDMAL Screen Shot 2022-06-03 at 11.14.14 PM.jpg" text="2022" %} - -
- -**_l-r_** : - -
- -{% include textpic.html imgurl="/assets/DDMAL Screen Shot 2020-09-28_1.png" text="2020" %} - -
- -**_l-r_** : - -
-{% include textpic.html imgurl="/assets/DDMALSummer2019-1280px.png" text="2019" %} - -
- -**_l-r_** : - -
-{% include textpic.html imgurl="/assets/DDMALSummer2018-1000px.jpg" text="2018" %} - -
- -**_l-r_** : ****Ichiro Fujinaga****, Minh Anh Nguyen, Zoé McLennan, Juliette Regimbal, Alex Daigle, Eric Liu, Gabriel Vigliensoni, Martha Thomae, Gustavo Polins Pedro, Tim de Reuse, Emily Hopkins, Noah Baxter, Yaolong Ju, Laura Beauchamp, Andrew Kam, Vi-An Tran, Néstor Nápoles, Julie Cumming -
- -{% include textpic.html imgurl="/assets/DDMALSummer2017-1000px.jpg" text="2017" %} -
-**_l-r_** : Claire Arthur, Yaolong Ju, Martha Thomas, Gabriel Vigliensoni, Alex Daigle, Andrew Tran, Ké Zhang, Zoé McLennan, Sacha Perry-Fagant, Emily Hopkins, Zeyad Saleh, Ichiro Fujinaga -
- -{% include textpic.html imgurl="/assets/Optimized-ddmal2016.jpg" text="2016" %} -
-**_l-r_** : Andrew Fogarty, Justin Bell, Jérôme Parent-Lévesque, Gabriel Vigliensoni, Arielle Goldman, Martha Thomae, Alex Parmentier, Nicky Mirfallah, Neda Eshraghi, Ichiro Fujinaga, Ryan Bannon, William Bain, Tristano Tenaglia, Emily Hopkins, Marina Borsodi-Benson, Andrew Hankinson, Jorge Calvo Zaragoza, Alexander Morgan, Véronique Lagacé, Julie Cumming, Reiner Krämer -
- -{% include textpic.html imgurl="/assets/ddmal2014_09e.jpg" text="2014" %} -
-**_l-r_** : Gabriel Vigliensoni, Ling-Xiao Yang, Lillio Mok, Andrew Horwitz, Ryan Bannon, Ruth Berkow, Andrew Fogarty, Evan Magoni, Andrew Hankinson, Ichiro Fujinaga, Tim Wilfong, Christopher Antila, Jason Leung -
- -{% include textpic.html imgurl="/assets/ddmal-labphoto-2012c.jpg" text="2012" %} -
-**_l-r_** : Jason Hockman Gabriel Vigliensoni, Wendy Li, Andrew Hankinson, Catherine Motuz, Ichiro Fujinaga, Greg Burlet, Saining li, Brian Stern, Hannah Robertson, Anton Khelou, Peter Henderson, Ying Qing -
- -{% include textpic.html imgurl="/assets/ddmal_highres2011a.jpg" text="2011" %} -
-**_l-r_** : Greg Burlet, Jason Hockman, Gabriel Vigliensoni, Wendy Liu, Alastair Porter, Ichiro Fujinaga, Saining Li, Andrew Hankinson, Catherine Motuz, Hannah Robertson, Mathieu Bergeron, Ashley Burgoyne, Remi Chiu -
- -{% include textpic.html imgurl="/assets/lab20060518b.jpg" text="2006" %} -
-**_l-r_** : Daniel McEnnis, Ashley Burgoyne, Rebecca Fiebrink, Cory McKay, Ichiro Fujinaga, Laurent Pugin, Catherine Lai, Beinan Li -
- -{% assign people = site.people | sort: 'last_name' %} - -## Supervisor - -{% for person in people %} - {% if person.role == 'supervisor' %} - {% if person.link %} - {{ person.title }} - {% else %} - {{ person.title }} - {% endif %} - {% endif %} -{% endfor %} - -
- -## Post-Doctoral Fellows - -
-
-{% for person in people %}
- {% if person.role == 'post-doctoral' %}
-
- - {% if person.link %} - {{ person.title }} - {% else %} - {{ person.title }} - {% endif %} - - {% endif %} -{% endfor %} -
- -## Project Manager - -{% for person in people %} - {% if person.role == 'project-manager' %} - {% if person.link %} - {{ person.title }} - {% else %} - {{ person.title }} - {% endif %} - {% endif %} -{% endfor %} - -
- -## Doctoral Students - -
-
-{% for person in people %}
- {% if person.role == 'doctoral' %}
-
- - {% if person.link %} - {{ person.title }} - {% else %} - {{ person.title }} - {% endif %} - - {% endif %} -{% endfor %} -
- -## Masters Students - -
-
-{% for person in people %}
- {% if person.role == 'masters' %}
-
- - {% if person.link %} - {{ person.title }} - {% else %} - {{ person.title }} - {% endif %} - - {% endif %} -{% endfor %} -
- -## Lab Members - -
-
-{% for person in people %}
- {% if person.role == 'lab-member' %}
-
- - {% if person.link %} - {{ person.title }} - {% else %} - {{ person.title }} - {% endif %} - - {% endif %} -{% endfor %} -
- -## Alumni - -
-
-{% for person in people %}
- {% if person.role == 'alumni' %}
-
- - - {% if person.link %} - {{ person.title }} - {% else %} - {{ person.title }} - {% endif %}{% if person.degree %} ({{ person.degree }}){% endif %}{% if person.affiliation %}: {{ person.affiliation }}{% endif %} - - - {% endif %} -{% endfor %} -
People
+ +
+ l-r :
++
+ l-r :
++
+ l-r :
++
+ l-r :
++
+ l-r : **Ichiro Fujinaga**, Minh Anh Nguyen, Zoé McLennan, Juliette Regimbal, Alex Daigle, Eric Liu, Gabriel Vigliensoni, Martha Thomae, Gustavo Polins Pedro, Tim de Reuse, Emily Hopkins, Noah Baxter, Yaolong Ju, Laura Beauchamp, Andrew Kam, Vi-An Tran, Néstor Nápoles, Julie Cumming
++
+
+ l-r : Claire Arthur, Yaolong Ju, Martha Thomas, Gabriel Vigliensoni, Alex Daigle, Andrew Tran, Ké Zhang, Zoé McLennan, Sacha Perry-Fagant, Emily Hopkins, Zeyad Saleh, Ichiro Fujinaga
+
+
+
+ l-r : Andrew Fogarty, Justin Bell, Jérôme Parent-Lévesque, Gabriel Vigliensoni, Arielle Goldman, Martha Thomae, Alex Parmentier, Nicky Mirfallah, Neda Eshraghi, Ichiro Fujinaga, Ryan Bannon, William Bain, Tristano Tenaglia, Emily Hopkins, Marina Borsodi-Benson, Andrew Hankinson, Jorge Calvo Zaragoza, Alexander Morgan, Véronique Lagacé, Julie Cumming, Reiner Krämer
+
+
+
+ l-r : Gabriel Vigliensoni, Ling-Xiao Yang, Lillio Mok, Andrew Horwitz, Ryan Bannon, Ruth Berkow, Andrew Fogarty, Evan Magoni, Andrew Hankinson, Ichiro Fujinaga, Tim Wilfong, Christopher Antila, Jason Leung
+
+
+
+ l-r : Jason Hockman Gabriel Vigliensoni, Wendy Li, Andrew Hankinson, Catherine Motuz, Ichiro Fujinaga, Greg Burlet, Saining li, Brian Stern, Hannah Robertson, Anton Khelou, Peter Henderson, Ying Qing
+
+
+
+ l-r : Greg Burlet, Jason Hockman, Gabriel Vigliensoni, Wendy Liu, Alastair Porter, Ichiro Fujinaga, Saining Li, Andrew Hankinson, Catherine Motuz, Hannah Robertson, Mathieu Bergeron, Ashley Burgoyne, Remi Chiu
+
+
+
+ l-r : Daniel McEnnis, Ashley Burgoyne, Rebecca Fiebrink, Cory McKay, Ichiro Fujinaga, Laurent Pugin, Catherine Lai, Beinan Li
+
+
Supervisor
+ ++
Post-Doctoral Fellows
+-
+
- + Claire Arthur + +
- + Nathaniel Condit-Schultz + +
- + Gabriel Vigliensoni + +
+
Project Manager
+Emily Hopkins
++
Doctoral Students
+-
+
- + Yaolong Ju + +
- + Néstor Nápoles + +
- + Martha Thomae + +
+
Masters Students
+-
+
- + Alex Daigle + +
- + Andrew Kam + +
- + Timothy de Reuse + +
+
Lab Members
+-
+
- + Laura Beauchamp + +
- + Eric Han Liu + +
- + Zoé McLennan + +
- + Minh Anh Nguyen + +
- + Gustavo Pedro + +
- + Juliette Regimbal + +
- + Evan Savage + +
- + Andrew Tran + +
- + Vi-An Tran + +
+
Alumni
+-
+
- + Christopher Antila + +
- + William Bain + : Cisco Systems + +
- + Ryan Bannon + : CaseWare + +
- + Laurier Baribeau + +
- + Justin Bell + +
- + Mathieu Bergeron + (Post Doc): Cégep Montmorency + +
- + Ruth Berkow + +
- + Marina Borsodi-Benson + : Stanford University + +
- + Ashley Burgoyne + (PhD): University of Amsterdam + +
- + Gregory Burlet + (MA): Frettable + +
- + Jorge Calvo-Zaragoza + (Post Doc): University of Alicante + +
- + Spencer Cambell + (MA) + +
- + Remi Chiu + (PhD Musicology): Loyola University Maryland + +
- + Johanna Devaney + (PhD): Ohio State University + +
- + Neda Eshraghi + +
- + Greg Eustace + (MA) + +
- + Robert Ferguson + (MA): Automatic Labs + +
- + Rebecca Fiebrink + (MA, PhD Princeton University): Goldsmiths, University of London + +
- + Andrew Fogarty + : Microsoft + +
- + Wei Gao + +
- + David Garfinkle + +
- + Mahtab Ghamsari + (MA): VRSUS + +
- + Arielle Goldman + +
- + Matan Gover + (MA) + +
- + Andrew Hankinson + (Post Doc, PhD): Bodleian Libraries, University of Oxford + +
- + Peter Henderson + +
- + Tristan Himmelman + : Hearst + +
- + Jason Hockman + (PhD): Birmingham City University + +
- + Andrew Horwitz + (MA): RILM + +
- + Yu Hua + : Airbnb + +
- + Anton Khelou + : Autodesk + +
- + Rajarshi Rivu Khoda + : IBM + +
- + Jamie Klassen + : CGI + +
- + Reiner Krämer + (Post Doc): University of Northern Colorado + +
- + Véronique Lagacé + +
- + Catherine Lai + (PhD): OSISoft + +
- + Simon de Leon + +
- + Jason Leung + +
- + Saining Li + : Ayuda Media Systems + +
- + Beinan Li + (PhD): Audiokinetic + +
- + Wendy Liu + : Macromeasures + +
- + Yihong Luo + : Manulife + +
- + Evan Magoni + : Autodesk + +
- + Tristan Matthews + +
- + Daniel McEnnis + (MA) + +
- + Cory McKay + (PhD, MA): Marianopolis College + +
- + Nicky Mirfallah + +
- + Lillio Mok + : Autodesk + +
- + Catherine Motuz + (PhD) + +
- + Chris Niven + : Never Be Normal + +
- + Rory O'Connor + +
- + Yue Phillis Ouyang + +
- + Jérôme Parent-Lévesque + : Vigilant Global + +
- + Alexandre Parmentier + : University of Waterloo + +
- + Sacah Perry-Fagant + +
- + Alastair Porter + (MA): Universitat Pompeu Fabra + +
- + Laurent Pugin + (Post Doc): RISM-CH + +
- + Marnie Reckenberg + +
- + Hannah Robertson + (MA): iZotope + +
- + Deepanjan Roy + : Google + +
- + Zeyad Saleh + : Apple + +
- + Harry Simmonds + : Apple + +
- + Jordan Smith + (MA): AIST, Japan + +
- + Brian Stern + : ToonBox Entertainment + +
- + Tristano Tenaglia + +
- + Jessica Thompson + (PhD): Université de Montréal + +
- + Adam Tindale + (MA, PhD University of Victoria): OCAD University + +
- + Tim Wilfong + +
- + Mike Winters + (MA) + +
- + Jin Xing + +
- + Reiko Yamada + (DMA Composition) + +
- + Ling-Xiao Yang + (MA): The Yang + +
- + Ké Zhang + +
+
+
Audio Quality
+ +The envisioned scientific research focusing on the perceptual evaluation of audio quality promises to address questions for which experts in the audio engineering industry are demanding answers. The need to know how to determine audio quality of past and current systems, and to predict the quality of reproduction based upon archival technologies, is called for by many international organizations. Though standards exist, there are still unanswered questions regarding best practice, especially when reference recordings are not available. The psychological measurement techniques that will be employed are well established in their application to other fields, such as in the science of food quality evaluation; however, these methods have yet to be systematically applied to problems in audio recording, archives, and reproduction.
++
+
Workflow Management with Automatic Metadata Extraction
+ +As libraries convert materials into digital formats, the need for efficient workflow management tools will increase. The significant human labor required for editing, inspecting, correcting, and “tagging” (with appropriate metadata) digital objects might inhibit libraries and other organizations from initiating large-scale digitization efforts. By developing the framework of workflow management tools, semi-automated tools will reduce the resource requirements for implementing large-scale digitization projects and provide enhanced search functionality.
+This research project will investigate developing an efficient and economical framework of tools to manage the workflow of large-scale digitization of musical materials. It aims to support the path from physical object and digitized material into a digital library repository by providing effective tools for perusing multimedia elements. The result of the process will include the audio files; both the images and the text of album covers, record labels, and liner notes; metadata about the recordings; images of scores and files in machine-readable format; and a database enabling the information to be searched and accessed via the web.
+An important component of the research is to minimize human intervention by automatically generating text and metadata from the captured images using document analysis and recognition techniques. Metadata extraction constitutes a major source of cost in most digitization projects. In the case of vinyl records, the possible sources for the metadata are the record label, album cover, or liner notes. For printed music, the sources for the metadata may be the cover page and the title page. For music manuscripts, external sources may need to be consulted. The challenge lies in locating the appropriate information and extracting it from these different sources. Since the required data may appear anywhere, automatic extraction of the data necessitates the deployment of intelligent document analysis.
+To implement the specialized document analysis required for this project, open-source software called Gamera (Droettboom et al. 2002) will be used. Gamera, developed by the applicant and others at the Johns Hopkins University over the last several years, is a toolkit for the creation of domain-specific structured document recognition applications by domain experts with limited programming experience. It allows a knowledgeable user to combine image processing and recognition tools in an easy-to-use, interactive, graphical scripting environment. The goal of the Gamera system is to leverage the user’s knowledge of the target documents to create custom applications rather than attempting to meet the needs of diverse users through a monolithic application. The applications created by the user are suitable for use in a large-scale digitization project; they can be run in a batch-processing mode and easily integrated into a digitization framework. In order to create consistent names in the metadata, automated name authority control methodology developed at the Johns Hopkins University (DiLauro et al. 2001) will be added to Gamera. It is anticipated that this will also aid in the optical character recognition step, by providing a dictionary of names and their variants. The infrastructure will provide the sustained support needed for the continual development and the enhancement of Gamera software.
+
+
References
+DiLauro, T., G. S. Choudhury, M. Patton, J. W. Warner, and E. W. Brown. 2001. Automated name authority control and enhanced searching in the Levy Collection. D-Lib Magazine 7 (4).
+Droettboom, M., K. MacMillan, I. Fujinaga, G. S. Choudhury, T. DiLauro, M. Patton, and T. Anderson. 2002. Using Gamera for the recognition of cultural heritage materials. Proceedings of the Joint Conference on Digital Libraries. 11–7.
++
+
Automatic Music Classification
+ +jMIR
+jMIR is an open-source software suite implemented in Java for use in music information retrieval (MIR) research. It can be used to study music in both audio and symbolic formats as well as mine cultural information from the web and manage music collections. jMIR includes software for extracting features, applying machine learning algorithms and analyzing metadata.
+The primary emphasis of jMIR is on providing software for general research in automatic music classification and similarity analysis. The main goals of the project are as follows:
+-
+
- Make sophisticated pattern recognition technologies accessible to music researchers with both technical and non-technical backgrounds. +
- Eliminate redundant duplication of effort. +
- Increase cooperation and communication between research groups. +
- Facilitate iterative development and sharing of new MIR technologies. +
- Facilitate objective comparisons of algorithms. +
- Facilitate research combining high-level, low-level and cultural musical features (i.e. symbolic, audio and web-mined features). +
In order to meet these goals, all aspects of jMIR are open source and distributed free undr a GNU General Public License. The software is well-documented and include GUIs in order to increase general usability. A special emphasis has been placed on software architectures that facilitate extensibility for those technically inclined users who wish to modify or add to the software.
+jMIR was funded by a grant from the Social Sciences and Humanities Research Council of Canada.
+Each of the components comprising the jMIR software suite may be used entirely separately or as an integrated whole. The components communicate with each other using files in either ACE XML or Weka ARFF formats. The components are as follows:
+
+
Standardized File Format
+-
+
- ACE XML: A standardized set of file formats for representing feature values, feature metadata, instance labels and class ontologies. Work on new and significantly extended ACE XML 2.0 versions of these file formats is also ongoing. More details are available on the ACE XML Development Page.
+
+
+
Data Mining and Machine Learning
+-
+
- ACE: Pattern recognition software that utilizes meta-learning. Evaluates, trains and uses a variety of classifiers, classifier ensembles and dimensionality reduction algorithms based on the needs of each particular research problem.
+
+
+
Feature Extraction
+-
+
- jAudio: Software for extracting low and high-level features from audio recordings. +
- jSymbolic: Software for extracting high-level features from MIDI recordings. +
- jWebMiner: Software for extracting cultural features from web text.
+
+
+
Data and Metadata
+-
+
- jMusicMetaManager: Software for profiling music collections and detecting metadata errors and redundancies. +
- Codaich: A labeled database of MP3s for training, testing and evaluating MIR systems.
+
+
+
Legacy
+-
+
- Bodhidharma: MIREX 2005-winning software for classifying MIDI recordings by genre. The ancestor of ACE and jSymbolic.
+
+
+
NEMA
+The Networked Environment for Music Analysis (NEMA) project is a multinational and multidisciplinary cyber-infrastructure project for music information processing that builds upon and extends the music information retrieval research being conducted by the International Music Information Retrieval Systems Evaluation Laboratory (IMIRSEL) at the University of Illinois at Urbana-Champaign (UIUC). NEMA brings together the collective projects and the associated tools of six world leaders in the domains of music information retrieval (MIR), computational musicology (CM) and e-humanities research. The NEMA team aims to create an open and extensible web services-based resource framework that facilitates the integration of music data and analytic/evaluative tools that can be used by the global MIR and CM research and education communities on a basis independent of time or location. To help achieve this goal, the NEMA team will be working co-operatively with the UIUC-based and Mellon-funded Software Environment for the Advancement of Scholarly Research (SEASR) project to exploit SEASR’s expertise and technologies in the domains of data mining and web services-based resource framework development.
+The NEMA work at McGill is currently focused on expanding the ACE XML file formats and developing software tools for parsing, writing and processing them, but jMIR tools in general are being adapted for the project as well.
+NEMA is being funded through a generous grant from the Scholarly Communications program of the Andrew W. Mellon Foundation.
+
+
Related Publications
+Available at Cory McKay’s publication page.
+
+
Advisor
+Ichiro Fujinaga
+
+
Graduate Students
+-
+
- Cory McKay +
- John Ashley Burgoyne
+
+
+
Undergraduate Students
+-
+
- Jessica Thompson
+
+
+
Links
+-
+
- jMIR +
- NEMA +
- NEMA Wiki +
- NEMA@McGill +
- ACE XML Development Page +
- ACE XML Discussion Page +
+
+
Centre de Recherche sur l'Interprétation au Clavecin (CRIC)
+ ++
+
Interlibrary Communication
+ +This research project examines how to access the music data once they are stored. This problem arises even for new digitally-born materials.
+Since we cannot expect thousands of libraries worldwide to agree on the same database system or query system, the potential for applying the emerging technology called Web Services, which is designed to exchange information between different systems, will be investigated. The technology includes: Simple Object Access Protocol (SOAP), Web Services Description Language (WSDL), and Universal Description, Discovery, and Integration (UDDI). Based on the XML format, UDDI is used to register each institution’s services; WSDL is used to describe the type of service, access protocol, and its location; and SOAP is used as the protocol to exchange information.
+The attractiveness of this technology for application in distributed digital libraries is that it assumes that each system (library) will be different. Web Services provide users with the “what, where, and how” to access information from disparate systems. This will be one of the key principal components in creating distributed digital libraries. This technology allows libraries to interconnect, rather than relying on one institution to collect everything (Lagoze and Fielding 1998).
+The final result will be easy access for library patrons through a library portal that is connected to other libraries via the Internet. Patrons will be able to access content such as score images, searchable score content, sound and video recordings without being concerned about the physical location of the digital object (Cruz and James 1999).
+Incorporation of Web Services for interlibrary communication has started with the development of protocols such as Metadata Encoding & Transmission (METS), Metadata Object Description Schema (MODS) (Guenther and McCallum 2002), and Search / Retrieve Web Service (SRW). With the computer resources of the infrastructure, further research and software development can be supported to integrate libraries and especially music libraries seamlessly.
+
+
Metadata Infrastructure for Sound Recordings project
+This project is funded by the Social Sciences and Humanities Research Council of Canada (SSHRC) Image, Text, Sound and Technology (ITST) program. The project aims to facilitate the formation of national and international networks of librarians, archivists, researchers, educators, and technologists to design and implement new models of digital multimedia archives and libraries. This prototype deals specifically with metadata of sound recordings. Although the project is limited to the domain of sound recordings and their accompanying material (album covers and liner notes), the solutions found in working with these complex materials will be applicable to other domains such as music scores, movies, and popular magazines.
+
+
References
+Cruz, I. and K. James. 1999. A user interface for distributed multimedia database querying with mediator supported refinement. Proceedings of the International Database Engineering and Applications Symposium. 433–41.
+Guenther, R., and S. McCallum. 2002. New metadata standards for digital resources: MODS and METS. Bulletin of the American Society for Information Science and Technology 29 (2): 12–5.
+Lagoze, C., and D. Fielding. 1998. Defining collections in distributed digital libraries. D-Lib Magazine 5 (11).
++
+
LinkedMusic
+ ++
+
Posters
+ +Burlet, G. and I. Fujinaga. Robotaba Guitar Tablature Transcription Framework. ISMIR 2013.
+Burlet, G., M. Wanderley, and I. Fujinaga. Stompboxes: Kicking the Habit. NIME 2013.
+Groves, R., D. Precup, and I. Fujinaga. Automatic Rock’n’Roll Accompaniment. Mathematics and Computation in Music Conference 2013.
+Vigliensoni, G., J.A. Burgoyne, and I. Fujinaga. Musicbrainz For The World: The Chilean Experience. ISMIR 2013.
+Vigliensoni, G., G. Burlet, and I. Fujinaga. Optical Measure Recognition in Common Music Notation. ISMIR 2013.
+Burlet, G., A. Porter, A. Hankinson, and I. Fujinaga. Neon.js: Neume Editor Online. ISMIR 2012.
+Hockman, J., D.M. Weigl, C. Guastavino, and I. Fujinaga. Discrimination Between Phonograph Playback Systems. AES 2011.
+Knight, T., F. Upham, and I. Fujinaga. The Potential for Automatic Assessment of Trumpet Tone Quality. ISMIR 2011.
+Neubarth, K., M. Bergeron, and D. Conklin. Associations between Musicology and Music Information Retrieval. ISMIR 2011.
+Smith, J.B.L., J.A. Burgoyne, I. Fujinaga, D. De Roure, and J.S. Downie. Design and Creation of a Large-Scale Database of Structural Annotations. ISMIR 2011.
+Vigliensoni, G., J.A. Burgoyne, A. Hankinson, and I. Fujinaga. Automatic Pitch Recognition in Printed Square-Note Notation. ISMIR 2011.
+Angeles, B., C. McKay, and I. Fujinaga. Discovering Metadata Inconsistencies. ISMIR 2010.
+Burgoyne, J.A. and I. Fujinaga. Smart Statistical Models for Musical Data. SMT 2010.
+McKay, C., J.A. Burgoyne, J. Hockman, J.B.L. Smith, G. Vigliensoni, and I. Fujinaga. Evaluating the Genre Classification Performance of Lyrical Features Relative to Audio, Symbolic and Cultural Features. ISMIR 2010.
+Vigliensoni, G., C. McKay, and I. Fujinaga. Using jWebMiner 2.0 to Improve Music Classification Performance by Combining Different Types of Features Mined from the Web. ISMIR 2010.
+Li, B., J.B.L. Smith, and I. Fujinaga. Optical Audio Reconstruction for Stereo Phonograph Records using White-light Interferometry. ISMIR 2009.
+Pugin, L., J.A. Burgoyne, and I. Fujinaga. Optical Music Recognition to Digitise Early Music Collections on a Library Scale. IAML 2008.
+Pugin, L., J. Hockman, J.A. Burgoyne, and I. Fujinaga. Gamera versus Aruspix: Two Optical Music Recognition Approaches. ISMIR 2008.
+Li, B., S. De Leon, and I. Fujinaga. Alternative Digitization Approach for Stereo Phonograph Records Using Optical Audio Reconstruction. ISMIR 2007.
+McKay, C. and I. Fujinaga. jWebMiner: A Web-Based Feature Extractor. ISMIR 2007.
+McKay, C. and I. Fujinaga. Combining Features Extracted from Audio, Symbolic and Cultural Sources. ISMIR 2006.
+Li, B., J.A. Burgoyne, and I. Fujinaga. Extending Audacity for Audio Annotation. ISMIR 2006.
+Li, B., C. Lai, and I. Fujinaga. Technical Issues in Digitization of Large Online Collections of Phonograph Records (1). Archiving Conference 2006. Part 2.
+Burgoyne, J.A. and L.K. Saul. Learning Harmonic Relationships in Digital Audio with Dirichlet-Based Hidden Markov Models. ISMIR 2005.
+Sinyor, E., C. McKay, R. Fiebrink, D. McEnnis, and I. Fujianga. Beatbox Classification Using ACE. ISMIR 2005.
++
+
Single Interface for Music Score Searching and Analysis (SIMSSA)
+ ++
+
The McGill Billboard Project
+ +Thank you for your interest in the McGill Billboard annotations! We are proud to announce a 2.0 release, with many improvements over the original, including new annotations, a number of corrections to errors in the existing annotations, and more accurate estimates of timing.
+In order to facilitate the best possible use of these data in the future, we have made them available legally under a CC0 license, but we ask that users follow scholarly norms in any public-facing work based on upon these data by citing the following ISMIR paper:
+-
+
- John Ashley Burgoyne, Jonathan Wild, and Ichiro Fujinaga, ‘An Expert Ground Truth Set for Audio Chord Recognition and Music Analysis’, in Proceedings of the 12th International Society for Music Information Retrieval Conference, ed. Anssi Klapuri and Colby Leider (Miami, FL, 2011), pp. 633–38 [1]; +
or Ashley Burgoyne’s dissertation:
+-
+
- John Ashley Burgoyne, ‘Stochastic Processes and Database-Driven Musicology’ (PhD diss., McGill University, Montréal, Québec, 2012) [2]. +
Please note that although the SALAMI project [3] contributed the structural metadata to the McGill Billboard annotations, we gathered (and funded) the chord annotations independently from the SALAMI project, hence the distinct citation.
+Overview
+This release contains the annotations and audio features corresponding to the first 1000 entries from the random sample of Billboard chart slots as presented at ISMIR 2011, plus the additional 300 entries that were used to evaluate audio chord estimation for MIREX 2012. The set includes annotations and features for 890 slots, as we were unable to acquire audio for every entry in the sample, and comprises 740 distinct songs, as due to the nature of the sampling algorithm, some slots correspond to the same song. Training algorithms that assume independent, identically distributed data (as most do) should retain the duplicates. We will release annotations for the remaining 700 entries progressively over the next couple of years in order to ensure that there are unseen data available for evaluating algorithms at MIREX or related events.
+Since the original release, we have been able to complete a number of annotations that had originally encountered problems. Some of these new annotations are a closer match to the target sample than what was available at the time we released the original McGill Billboard annotations, and as such, a small number of entries refer to a different song in version 2.0 than they did in 1.x releases. We recommend that all users replace any previous editions of these annotations with version 2.0.
+This release is also split into multiple files, to reflect the needs of different users. Users may choose their preferred archive format (XZ, BZ2, or GZ) and extract all their relevant archives into a single directory. The result will be a McGill-Billboard directory with a subdirectory for each annotated entry in the sample, each subdirectory containing the relevant annotations and features.
+
+
Index
+Most users will want to download the index to the dataset:
+ +The index is a CSV files with the following columns:
+-
+
- id, the index for the sample entry; +
- chart_date, the date of the chart for the entry; +
- target_rank, the desired rank on that chart; +
- actual_rank, the rank of the song actually annotated, which may be up to 2 ranks higher or lower than the target rank [1, 2]; +
- title, the title of the song annotated; +
- artist, the name of the artist performing the song annotated; +
- peak_rank, the highest rank the song annotated ever achieved on the Billboard Hot 100; and +
- weeks_on_chart, the number of weeks the song annotated spent on the Billboard Hot 100 chart in total. +
Sample entries for which we were unable to obtain audio or an annotation also appear in the index, but with the id, chart_date, and target_rank columns exclusively.
+
+
Complete Annotations
+The complete annotations – chords, structure, instrumentation, and timing – are available from these links:
+-
+
- billboard-2.0-salami_chords.tar.xz +
- billboard-2.0-salami_chords.tar.bz2 +
- billboard-2.0-salami_chords.tar.gz +
The annotations files are named salami_chords.txt to reflect the fact that they contain both SALAMI-style structural annotations and the McGill Billboard chord annotations.
Each annotation begins with a header including the title of the song (prefixed by # title:), the name of the artist (prefixed by # artist:), the metre (prefixed by # metre:), and the tonic pitch class of the opening key (prefixed by # tonic:). Similar metre and tonic comments may also appear in the main body of the annotations, corresponding to changes of key or metre. In some cases, there is no obviously prevailing key, in which case the tonic pitch class is denoted ?.
The main body of each annotation consists of a single line for each musical phrase or other sonic element at a comparable level of musical structure. Each line begins with a floating-point number denoting the timestamp of the beginning of the phrase (in seconds) followed by a tab character. There are special lines for silence at the beginning and end of the audio file and a special line for the end of the piece. The other lines continue with a comma-separated list of elements among the following.
-
+
- Capital letters, possibly followed by an arbitrary number of primes (apostrophes), designate high-level musical structures. They appear at the beginning of each high-level musical segment and are presumed to continue until the next appearance of a capital letter. When two letters match, the two high-level segments are musically similar. Other than denoting similarity, the letters themselves have no intrinsic meaning, but for the letter Z. Z denotes non-musical passages in the audio such as noise or spoken words. +
- Plain text strings denote more traditional names for musical structures, e.g., verse, chorus, and bridge. The vocabulary was semi-restricted, but annotators had the freedom to use whatever terms they felt were most appropriate for unusual contexts. +
- Chord annotations appear as series of bars flanked by pipes (|). A phrase may by followed by an x and an integer, which means that the phrase is repeated that number of times. A phrase may also be followed by an arrow (->), which is a musicological hint that the phrase is musically elided into the following phrase. +
- Leading instruments are noted in songs where there is a notable deviation from the norm of a leading vocal throughout the entire song. They appear as text strings preceded by a left parenthesis (() in the segment where the instrument comes to prominence and as text strings succeeded by a right parenthesis ()) in the segment where that instrument fades from prominence. If an instrument is prominent for a single segment only, its name appears with both left and right parentheses. +
More detail on the structural annotations is available from Smith et al. [3]. The McGill Billboard annotations replace the lower level of structural annotations from this reference (lowercase letters) with chord annotations.
+The chord annotations are simplified to the beat level. All chord symbols follow the standard that Harte et al. presented at ISMIR 2005 and used in MIREX ever since [4], with a few additions to the shorthand to facilitate the richness of these annotations: 1 for unharmonised bass notes, 5 for power chords, and sus2, maj11, 11, min11, maj13, 13, and min13 for the corresponding chords in traditional jazz notation. An additional pseudo-chord type of 1 denotes bass notes with no chord on top. To save space, repeated chords are denoted with a dot instead of the full chord name. To further save space, bars containing a single chord on all beats list the chord symbol only once; likewise, in quadruple metres (4/4 or 12/8), bars with only two chords and the change on the third beat list those two chords with no dots. For brief changes of metre, the metre may appear in parentheses at the beginning of the bar rather than as a full metre comment.
Two non-chord symbols may appear within bars. For passages that were too musically elaborate to merit beat-level chord annotations, annotators sometimes filled the bar with an asterisk (*). For brief pauses of arbitrary length (often a single beat), annotators added a bar with the special annotation &pause.
Bas de Haas has written Haskell tools for parsing and manipulating the McGill Billboard annotations [5], which are available from Hackage:
+ +LAB Files (MIREX Style)
+Users who are only interested in automatic chord recognition may prefer to download HTK-style LAB files for the chord annotations instead, which contain only onset times, offset times, and the chord labels, as used for the audio chord estimation task in MIREX:
+ +Note that only the first chord of each phrase was time-aligned by a human. The timings for all other chords are linearly interpolated assuming a constant tempo for each phrase. This constant-tempo assumption is remarkably robust for the McGill Billboard sample: less than one percent of all possible eighth-note positions (tatums) in the sample are more then 10 percent faster or slower than the average tempo of the songs to which they belong [5].
+For convenience, we also have LAB files with chord labels simplified to the vocabularies that will be used for evaluating chord estimation in MIREX 2013:
+ +Audio features
+Although we cannot distribute the original audio due to copyright, we have two feature sets available. Users interested in chord recognition may want the non-negative-least-squares chroma vectors and tuning estimates from the Chordino VAMP plugin [6]:
+ +These archives contain bothchroma.csv and tuning.csv for each annotated single. We used the default settings for the plugin with the exception for a rolloff of 1 percent, the plugin authors’ recommendation for pop music.
Researchers of many kinds may find the Echo Nest features helpful. We have recomputed these with the Echo Nest Analyzer version 3.1.4:
+ +If you are interested in audio features other than these, please contact us. So long as the features are non-invertible and the computational load is sane, we are happy to provide custom features upon request.
+
+
Contact
+Please e-mail any questions, comments, or bugs to Ashley Burgoyne at john.ashley.burgoyne@mail.mcgill.ca.
++
-
+
-
+
John Ashley Burgoyne, Jonathan Wild, and Ichiro Fujinaga, ‘An Expert Ground Truth Set for Audio Chord Recognition and Music Analysis’, in Proceedings of the 12th International Society for Music Information Retrieval Conference, ed. Anssi Klapuri and Colby Leider (Miami, FL, 2011), pp. 633–38, http://ismir2011.ismir.net/papers/OS8-1.pdf.
+
+ -
+
John Ashley Burgoyne, ‘Stochastic Processes and Database-Driven Musicology’ (PhD diss., McGill University, Montréal, Québec, 2012), http://digitool.Library.McGill.CA:80/R/-?func=dbin-jump-full&object_id=107704&silo_library=GEN01.
+
+ -
+
Jordan B. L. Smith, J. Ashley Burgoyne, Ichiro Fujinaga, David De Roure, and J. Stephen Downie, ‘Design and Creation of a Large-Scale Database of Structural Annotations’, in Proceedings of the 12th International Society for Music Information Retrieval Conference, ed. Anssi Klapuri and Colby Leider (Miami, FL, 2011), pp. 55–60, http://ismir2011.ismir.net/papers/PS4-14.pdf.
+
+ -
+
Christopher A. Harte, Mark B. Sandler, Samer A. Abdallah, and Emilia Gómez, ‘Symbolic Representation of Musical Chords: A Proposed Syntax for Text Annotations’, in Proceedings of the 6th International Conference on Music Information Retrieval, ed. Joshua D. Reiss and Geraint A. Wiggins (London, England, 2005), pp. 66–71, http://ismir2005.ismir.net/proceedings/1080.pdf.
+
+ -
+
W. Bas de Haas and John Ashley Burgoyne, ‘Parsing the Billboard chord transcriptions’ (Technical report UU-CS-2012-18, Utrecht University, the Netherlands, 2012), http://www.cs.uu.nl/research/techreps/repo/CS-2012/2012-018.pdf.
+
+ -
+
Matthias Mauch and Simon Dixon, ‘Approximate Note Transcription for the Improved Identification of Difficult Chords’, in Proceedings of the 11th International Society for Music Information Retrieval Conference, ed. J. Stephen Downie and Remco C. Veltkamp (Utrecht, the Netherlands, 2010), pp. 135–40, http://ismir2010.ismir.net/proceedings/ismir2010-25.pdf.
+
+
+
+
+ To the extent possible under law, the DDMAL has waived all copyright and related or neighbouring rights to the McGill Billboard annotations. This work is published from Canada.
+
+
+
Previous Work in Optical Audio Reconstruction
+ + ++
+
The McGill Image-to-Audio Conversion Project (MltAC)
+ +The McGill Image to Audio Conversion (MItAC) research project focuses on the access to and the long-term preservation of the phonograph sound recordings. There are a large number of damaged phonograph records that are unable to be played or digitized by using the traditional turntable systems. An alternative approach is to optically scan the phonograph disc to create the 2D or 3D digital image of a damaged record and subsequently convert the scanned image to audio for access. Because the standard digitization and preservation workflow for phonograph records are still under exploration, this approach, which is often called optical audio reconstruction (OAR), has the advantage of minimal physical contact with the records during the experiments with various digitization and sound restoration techniques.
+There have been other relevant research efforts in OAR conducted by Lawrence Berkeley National Laboratory in California and University of Fribourg in Switzerland. These efforts are only towards the mono phonograph records, namely the 78rpm or the wax cylinder records. See Previous Work in Optical Audio Reconstruction.
+Our research, in contrast, aims mainly at the restoration of the 33rpm stereo recods. The measurement equipment that we use is a microscope that adopts white-light interferometry, the Wyko NT8000 Series Profiler, which is controlled by the Wyko Vision Software, both purchased from the Veeco Instruments. See System Hardware and Software.
+The Documentation consists of the analyses of specific issues and the descriptions of algorithms developed with the links to the source codes (Algorithms and Analyses), the geometric information, metadata, and other information of the phonograph records that are relevant to our experiments (Disc Information), the data format specifications used in all our experiments and analyses and the utilities developed by us to facilitate the measurements and analyses (Data Formats and Utilities), the documentation of the optical profiler and its software usage (System Hardware and Software), along with the screenshots, audio, and video resources of our experimental results and demos (Multimedia). Various specialized terms, mainly from the profiler specifications and our inventions, are used in all the documentations. They are clarified in Glossary.
+The Experiments keep the records and the data of the important experiments that we made, including the measurements that lead to major results (Measurements), the exploratory tests regarding the functionality and mechanics of the hardware and software of our profiler (System Functionality and Performance), and all the temporary data obtained from experiments (Temporary Data).
+The Annotated Bibliography lists all relevant literature on Optical Audio Restoration, Phonograph, and Interferometry with our brief highlights.
+The Links point to the resources outside this Wiki, including the work blogs of our Team, which serve as daily notifications of the progresses and updates on the Wiki, and the bug reports of the Wyko Vision software.
+Mainly supported by Daniel Langlois Foundation Grant, this project proceeds in parallel with the digitization of McGill music library’s 78rpm Jazz recording collection (funded by a three-year FQRSC research grant) and digitization of a unique collection of Handel LP recordings, the David Edelberg Handel LP Collection (funded by McGill’s Richard M. Tomlinson Digital Library Innovation Awards).
+For more information of us, see Team.
++
+
The Music Listening Histories Dataset (MLHD)
+ +The Music Listening Histories Dataset (MLHD) is a large-scale collection of music listening events assembled from more than 27 billion time-stamped logs extracted from Last.fm.
+Attractive features of the MLHD are:
+-
+
- self-declared metadata provided by users at the moment of registration whose identities have been anonymized +
- MusicBrainz identifiers (MBID) for the music entities in each of the logs that allows for an easy linkage to other existing resources +
- a set of user profiling features designed to describe aspects of their music listening behavior and activity +
- orders of magnitude bigger than other datasets of similar characteristics
+
+
+
Dataset Structure
+The logs in the dataset are organized in the form of sanitized listening histories per user, where each user has one file, with one log per line.
+Each log is a quadruple <timestamp, artist-MBID, release-MBID, recording-MBID>.
To allow easy computation in HPC parallel systems, the dataset is distributed as TAR files with about 1K user listening histories files each. The full dataset contains 576 files of about 1GB each. These files are subsequently bundled in sets of 32 TAR files in order to facilitate downloading. (Note: the file MLHD_386.tar does not have any actual listening history. It is part of the dataset just to add up to 576 files, thus facilitating the parallelization by using many combinations of factors)
Additionally, we also provide a set of text files with demographic information, as well as listening habits and behavioural data.
+
+
Download
+The dataset can be downloaded using the Globus system from the following endpoint hosted in Compute Canada:
+MLHD Dataset in Compute Canada Globus endpoint
+A file with sha256 hashes per each of the 576 TAR files is provided to verify the integrity of the files.
+
+
Features for profiling and describing listeners in the Music Listening Histories Dataset
+Accompanying the MLHD full data, we also provide a set of text files with additional data aiming at characterizing specific aspects of the listeners. The data contains self-declared demographic information about the listeners, a set of features for describing their listening activity, and a set of features for describing their listening behaviour.
+Each text file comes with a header indicating the column names. The delimiter character is a tab. In order to protect the listeners’ identities, all references to their usernames and Last.fm IDs have been anonymized with UUIDs.
+For example, the first three lines of the MLHD_demographics.csv file are:
uuid\t age\t country\t gender\t playcount\t age_scrobbles\t user_type\t registered\t firstscrobble\t lastscrobble
+
+dfb7ea9d-6e4f-48e4-96f6-59abcc207d55\t 30\t AT\t n\t 42622\t 3783\t user\t 1035849600\t 1138630578\t 1362652343
+
+a89cb9c5-ba84-424e-8950-16657bb6f7af\t 35\t US\t m\t 182118\t 3862\t subscrib\t 1035849600\t 1130274207\t 1369498564
+
+ Demographic Features
+The MLHD provides a set of features describing some of the listeners’ demographic characteristics.
+At the moment of registration, Last.fm asks the listeners to declare their year of birth, gender, and country. The listeners’ age are updated automatically by the service, and gender and country can be updated at any time by them.
+The age reported in the dataset is the age returned by the system at the moment of the data collection (i.e., circa 2013 and 2014). gender and country are the listeners’ self-declared gender and country. Since they have the option to do not declare, in the dataset we assigned the value NA for non-declared country (and we changed the country code for Namibia to NB), and n for gender not declared.
The playcounts column returns the total number of logs within each listener’s music listening history.
The age_scrobbles field is the number of days that passed between the first and the last logs recorded in the dataset.
The user type column returns the “user type” assigned by Last.fm to each user according to their involvement with the service: “subscrib” are those that paid a monthly installment to Last.fm for getting unlimited streaming tracks and no ads, “user” are people without any special privileges in the “freemium” pricing strategy; “staff”, “moderator”, and “alumni” are statuses for people that are currently working for Last.fm, or that worked previously for the service.
The registered, firstscrobble, and lastscrobble columns return Unix (UTC) timestamps for each listener’s registration, first submitted log to Last.fm, and the last log stored in the MLHD.
The CSV file can be downloaded from the following link:
+http://bit.ly/MLHD-Demographics-21
+Listening Behavioural Features
+To characterize listening behaviours, we provide in the MLHD a set of four computational features tailored to to represent some characteristics of music listening behaviours. The features are exploratoryness, mainstreamness, genderedness, and fringeness. Values for these features were computed for the three types of music items in the dataset: artists, albums, and tracks. Therefore, each listener’s listening profile is described by a vector of 12 continuous values. For details about each of these features formulations, please refer to Vigliensoni and Fujinaga (2016).
http://bit.ly/MLHD-Behavioural-21
+
+
User Activity Features
+We computed from the music listening histories’ UTC timestamps a series of features that aggregated the number of logs of each listening history into several time spans. These low-dimensional representations of user activity are: hourly activity per day, hourly activity by week hour, weekly activity, monthly activity, and yearly activity. Values in each column represent the percentage of the total of listening logs per user for each span of time.
http://bit.ly/MLHD-Activity-21
+
+
Scientific References
+For details about how the dataset was assembled and how the features were computed, do check the following scientific publications:
+-
+
- Vigliensoni, Gabriel, and Ichiro Fujinaga. “The music listening histories dataset.” In Proceedings of the 18th International Society for Music Information Retrieval Conference. Suzhou, People’s Republic of China, 2017. (pdf) +
- Vigliensoni, Gabriel, and Ichiro Fujinaga. “Automatic music recommendation systems: Do demographic, profiling, and contextual features improve their performance?.” In Proceedings of the 17th International Society for Music Information Retrieval Conference. New York City, NY, USA. 2016. (pdf) +
- Vigliensoni, Gabriel, and Ichiro Fujinaga. “Identifying time zones in a large dataset of music listening logs.” In Proceedings of the International Workshop on Social Media Retrieval and Analysis. Gold Coast, Australia, 2014. (pdf) +
If you use the dataset, please do cite the following publication:
+@inproceedings{vigliensoni17music,
+ Author = {Vigliensoni, Gabriel and Fujinaga, Ichiro},
+ Title = {The music listening histories dataset},
+ Booktitle = {Proceedings of the 18th International Society for Music Information Retrieval Conference},
+ Address = {Suzhou, People's Republic of China},
+ Pages = {96--102},
+ Year = {2017},
+ Keywords = {Dataset, Listening behaviour, Music Preference, Last.fm},
+}
+
+ Acknowledgments
+We are extremely grateful of all users of Last.fm that have agreed to make their data available for non-commercial use, and also to the Last.fm service, which has collected and offered this data since 2002 uninterruptedly, helping the field of music informatics research to move forward.
+This research has been supported by BecasChile Bicentenario, Comision Nacional de Investigacion Cientifica y Tecnologica, Gobierno de Chile, and the Social Sciences and Humanities Research Council of Canada. Important parts of this work used ComputeCanada’s High Performance Computing resources.
+For additional information, questions, problems, or feedback please contact Gabriel Vigliensoni at gabriel.vigliensonimartin@mcgill.ca. In case of issues, please do include as much detail as possible.
+
+
+
Vocal Intonation
+ +Researchers
+-
+
- Johanna Devaney, PhD Candidate, Music Technology Area, Department of Music Research, Schulich School of Music +
- Prof. Ichiro Fujinaga, Music Technology Area, Department of Music Research, Schulich School of Music +
- Prof. Peter Schubert, Music Theory Area, Department of Music Research, Schulich School of Music +
- Prof. Jonathan Wild, Composition and Music Theory Areas, Department of Music Research, Schulich School of Music
+
+
+
Publications
+-
+
- Wild, J. 2009. Pairwise well-formed scales and a bestiary of animals on the hexagonal lattice. In Proceedings of the Second International Conference on Mathematics and Computation in Music, 271–85. +
- Devaney, J., and D.P.W. Ellis. 2008. An empirical approach to studying intonation tendencies in polyphonic vocal performances, Journal of Interdisciplinary Music Studies, 141–56. +
- Wild, J., and P. Schubert. 2008. Historically informed retuning of polyphonic vocal performance, Journal of Interdisciplinary Music Studies, 121–39.
+
+
+
Paper and Poster Presentations
+-
+
- Devaney, J., J. Wild, and I. Fujinaga 2011. Intonation in solo vocal performance: A study of semitone and whole tone tuning in undergraduate and professional sopranos. Paper presented at the International Symposium on Performance Science. +
- Devaney, J. and I. Fujinaga. 2010. AMPACT: Automatic Music Performance Analysis Toolkit. Poster presented at the annual meeting of the Society of Music Theory. +
- Devaney, J., J. Wild, P. Schubert, and I. Fujinaga. 2010. Exploring the relationship between voice leading, harmony, and intonation in a cappella SATB vocal ensembles. Paper presented at the International Conference on Music Perception and Cognition. +
- Devaney, J., J. Wild, P. Schubert, and I. Fujinaga 2010. Horizontal and vertical intonation tendencies in SATB ensembles. Paper presented at the fifth conference on the Physiology and Acoustics of Singing. +
- Devaney, J., J. Wild, P. Schubert, and I. Fujinaga. 2010. What can expressive performance studies tell us about the organization of musical materials? Poster presented at the Indiana University Symposium of Research in Music Theory: “This is your brain on music”. +
- Devaney, J, I. Fujinaga, and J. Wild. 2009. Intonation tendencies in solo a cappella performances. Poster to be presented at the 2009 Society for Music Perception and Cognition conference in August. +
- Devaney, J. 2009. Intonation tendencies in solo a cappella performances. Paper presented at the Indiana University Special Symposium on Performance and Analysis. +
- Devaney, J. and J. Wild. 2009. Empirical, historical and speculative approaches to intonation. Paper presented at the fourth conference on the Physicology and Acoustics of Singing. +
- Devaney, J., I. Fujinaga, and D.P.W. Ellis. 2008. Intonation tendencies in polyphonic vocal ensembles. Papter presented at the Digital Music Research Network Workshop (DMRN+3). +
- Devaney, J. 2008. “Tonality’s gravitational pull”: Intonation as an empirical measure of melodic attraction. Paper presented at the annual meeting of the Society of Music Theory. +
- Wild, J. 2008. Through “unknown tracks and precipitate cliffs”: Analysis and performance of an enharmonic madrigal by Nicola Vicentino. Paper presented at the annual meeting of the Society of Music Theory. +
- Devaney, J., and I. Fujinaga. 2008. Assessing the role of sensory consonance in trained musicians’ tuning preferences. Poster presented at the International Conference on Music Perception and Cognition. +
- Wild, J. 2008. Paper presented at the annual meeting of the Canadian University Music Society. +
+
+
Redirecting…
+ Click here if you are not redirected. + \ No newline at end of file diff --git a/research/billboard/index.html b/research/billboard/index.html new file mode 100644 index 00000000..7d8727cb --- /dev/null +++ b/research/billboard/index.html @@ -0,0 +1,11 @@ + + + +Redirecting…
+ Click here if you are not redirected. + \ No newline at end of file diff --git a/research/index.html b/research/index.html new file mode 100644 index 00000000..c85e7e3d --- /dev/null +++ b/research/index.html @@ -0,0 +1,142 @@ + + + + + + + + + + + + + +Research & Projects
+ +-
+
- + + +
- + + +
- + + +
-
+
Centre de Recherche sur l’Interprétation au Clavecin (CRIC)
+
+ - + + +
- + + +
- + + +
- + + +
- + + +
-
+
Structural Analysis of Large Amounts of Music Information (SALAMI)
+
+ -
+
Single Interface for Music Score Searching and Analysis (SIMSSA)
+
+ - + + +
- + + +
- + + +
+
+
Redirecting…
+ Click here if you are not redirected. + \ No newline at end of file diff --git a/research/omr/OMR_for_Plainchant.html b/research/omr/OMR_for_Plainchant.html new file mode 100644 index 00000000..2de76d74 --- /dev/null +++ b/research/omr/OMR_for_Plainchant.html @@ -0,0 +1,11 @@ + + + +Redirecting…
+ Click here if you are not redirected. + \ No newline at end of file diff --git a/research/omr/OMR_for_Plainchant/index.html b/research/omr/OMR_for_Plainchant/index.html new file mode 100644 index 00000000..0e7b73d0 --- /dev/null +++ b/research/omr/OMR_for_Plainchant/index.html @@ -0,0 +1,131 @@ + + + + + + + + + + + + + +OMR for Plainchant
+ +Project Overview
+Plainchant is a large collection of monophonic songs, which exist as one of the oldest notated music in the world. The music has been part of Christian liturgy since the Middle Ages and has formed the basis for much Western music that followed. Canada is positioned to become a world leader for studying plainchant. Combining information from the University of Western Ontario’s CANTUS database, one of the world’s foremost databases of metadata about plainchant, with our expertise as two of Canada’s leading scholars in optical music recognition and early music, we are developing a network and database infrastructure and software tools that will be able to automatically extract the musical and textual content from digitised plainchant manuscripts and to index that content in an internationally-accessible distributed database. This recognition system will free libraries from the prohibitive cost of expert human labour needed to transcribe these specialised manuscripts manually and will allow performers and coaches, such as those at the Gregorian Institute of Canada, to expand the repertoire and improve the historical fidelity of their recordings and performances.
+Plainchant manuscripts, copied by hand from the ninth through the sixteenth centuries, constitute some of the richest source material available for musicological scholarship and historically informed music performance. Unfortunately, because these sources are spread throughout libraries and religious institutions worldwide, it is almost impossible for scholars to form a complete picture of the development of plainchant regionally and chronologically. Facsimiles are sometimes available for local libraries to purchase, but they tend to be exceedingly expensive and, like other paper documents, cannot be searched or indexed against other sources; microfilms are more affordable and more often available but suffer the same difficulty of searching and indexing. Many chants appear in multiple variations across numerous manuscripts, and thus searchable, cross-referenced digital libraries of musical content will be especially valuable for these documents. The main goal of our project is to facilitate the creation of such a digital library by introducing optical music recognition (OMR) tools to reduce the need for human transcription, much as optical character recognition (OCR) has done for text documents.
+As part of our most recent SSHRC Standard grant, we have developed an OMR system that attains a 97 percent recognition rate for printed symbols from later Western music notation, and with our current SSHRC Image, Text, Sound, and Technology grant, we are developing a system capable of recognising printed lyrics. Our new project will begin by extending this system to recognise printed square-note neumes, which became the most common system of hand-written notation for plainchant around 1200. Although this notational system is centuries old, it continues to be used today when publishing compilations of liturgical plainchant, e.g., the Liber Usualis, a common reference book for practising church musicians and plainchant scholars. After determining the best strategy for recognising printed neumes, we will extend the work to hand-written sources, focusing on three distinct notational styles: hand-written square-note neumes, analogous to printed chant notation; Aquitanian neumes, an older, staffless notational style in which individual neumes are composed of separated strokes and points; and Gothic neumes, variations on the square-note neume shapes that we expect to be more difficult to recognise.
+Interdisciplinary in its very nature, this project will bring together researchers at all states of their careers, from both musicology and computer engineering. In order to provide the best possible training environment for students and in order to strengthen the connection between these two disciplines, the project will include regular presentations of intermediate results to all communities involved. When complete, it will have produced infrastructure and tools ready for musicians and others to generate and share digital libraries comprising centuries of plainchant and will open a wide range of new avenues for musicological research.
+
+
Researchers
+-
+
- Ichiro Fujinaga +
- Julie Cumming
+
+
+
Doctoral Students
+-
+
- Ashley Burgoyne +
- Remi Chiu +
- Andrew Hankinson
+
+
+
Masters & Undergraduate Students
+-
+
- Gabriel Vigliensoni +
- Jamie Klassen +
- Wendy Liu +
- Saining Li +
- Jessica Thompson +
- Laura Osterlund +
- Caylin Smith +
+
+
Preprocessing
+ +With early documents, pre-processing is a crucial phase since they are in most cases highly degraded. Further more, music manuscripts are by definition unique, so it is impossible to choose the best copy for our task. It is very often the same with early prints because few complete copies survive.
+One major difficulty in developing a pre-processing solution to enable optical recognition of early documents is related to the fact that the types of degradation are numerous and may vary from one source to another. For example, we may have to deal with:
+-
+
- printing or writing imperfections +
- bad or patchy absorption of ink +
- bleed-through (elements of the verso appearing on the page) +
- paper degradations (yellowing) +
- stains (very often moisture) +
- tears or even holes +
As optical recognition is based on digital images, the distortions that may appear during the digitization phase must also be taken into account. Furthermore, working with microfilms introduces more steps into the acquisition phase which is strictly speaking not limited to the digitization. The document has to be photographed, page by page, and then a microfilm is built from the photographs. Only then can it be scanned using the microfilm scanner. Each step is liable to add new distortions and more degradation. In our research, we have the additional problem that the steps before digitization are out of our control and we cannot optimize the acquisition phase for our task. Very often, the images obtained by scanning microfilms are not optimized at all, because digitization and optical recognition were not the purpose for which the microfilms were produced. A large number of the microfilms kept in libraries were made years ago, in the Sixties for some of them. The consequence for our research is that we have to deal with distortions such as:
+-
+
- skewness of the document on the image +
- curvature of the document on the image (because the page was not flat) +
- non-uniform illumination (during photo capture) +
- heterogeneous borders around the page +
Consequently, the pre-processing approach must be effective because it is a sine qua non condition to building a real-world application. The diversity of the problem also implies that the approach must be highly adaptive.
+Progress reports
+-
+
- Adaptive binarisation. (Started August 2005) +
-
+ Preliminary experiments (Cory McKay)
+
-
+
- Bleed-through removal (September 2004) +
- Red staffline detection (August 2004) +
+
+
+
Gamut for Early Music on Microfilms (GEMM)
+ +Introduction
+Unlike text databases, online content-searchable databases of music scores are extremely rare. The main reasons are the cost of digitisation, the inaccessibility of original music scores and manuscripts, and the lack of sophisticated music recognition software. The proposed research will attempt to circumvent these problems by investigating the feasibility of using existing microfilms for digitisation.
+Compared to original scores, microfilms constitute more accessible and economical sources for digitisation (there are over 7000 music scores in microfilm format in North America). Scanned images of music scores can be made content searchable through the use of optical music recognition (OMR) softwares. The OMR system to be used and developed here will be based on two of the most advanced existing OMR technologies, namely, Gamut (Fujinaga 1997) and Aruspix (Pugin 2006), both developed by researchers involved in this project.
+The objective of this study is to determine whether the quality of images scanned from microfilm, rather than from the original score, is sufficient for the subsequent OMR process. If the digital image derived from microfilm is found to be acceptable for OMR, there will be tremendous economic benefits. The cost of building digital libraries is incurred mainly in the digitisation process. The cost of digitisation from microfilm is far lower than that from paper. Using microfilms may also prove highly advantageous in data collection. Original music manuscripts are scattered throughout the world in various libraries, museums, and archives. The exorbitant cost of travelling to these locations can be avoided through the use of microfilm collections that already exist in many music libraries. Finally, when a local archive decides to digitise its own collection, using available microfilms will obviate the necessity of handling and thereby potentially damaging precious manuscripts.
+The project will concentrate on music from Medieval and Renaissance periods, because access to original sources from these periods is particularly difficult and the softwares must be trained to recognise notation systems that differ from the common music notation system in current use. If the quality of images scanned from microfilm is sufficient to obtain reasonable results using the OMR process, a large amount of music can be made searchable, creating an incredible resource for music scholars throughout the world.
+
+
Microfilms and Scanning
+The microfilms of Early Music are the raw material for this research. The starting point was to select samples of sources and digitize them using a microfilm scanner (Minolta MS6000) with grayscale option. Different notation styles with varying degrees of print quality have been considered. As a general policy, a ‘backwards’ procedure was adopted, starting with sources printed around 1600 and then moving by steps to earlier and earlier documents, including manuscripts. During this project, we will study the feasibility of using microfilm by comparing the image quality of direct scans and microfilm scans of the same music scores where they are available in both formats. A high-quality flatbed scanner (Epson 1640XL) will be used for the experiment. The principal metric is the recognition rate of the OMR process, although visual inspection of the image may be sufficient in some cases.
+[more]
+
+
Preprocessing
+One part of the current research is devoted to development and evaluation of pre-processing solutions. Standard approaches to pre-processing of degraded documents are considered, as well as approaches more specific to music such as staff detection (Fujinaga 2005). A particular attention is given to binarisation because it appears to be a critical step in OMR of early documents. For our preprocessing experiments, we use a framework for the creation of structured document analysis applications by domain experts called Gamera (MacMillan, Droettboom, and Fujinaga. 2002). Gamera has been used in another OMR research project, the Levy Sheet Music Project at the Johns Hopkins University + (Choudhury et al. 2001). The framework is also being further developed within the current research project, as the new techniques that have been developed (such as binarization algorithms) are being integrated into it. +
+[more]
+
+
OMR Experiments
+For our OMR experiments, we use mainly Aruspix, a software application designed to perform optical recognition of early typographic music prints. It uses an innovative technique in OMR based on Hidden Markov Models and was developed initially as part of a PhD thesis in Musicology presented by Laurent Pugin at Geneva University (Pugin 2006). Within the current project, Aruspix is used as a research tool. It it used to perform evaluations (such as pre-processing evaluations), but it is also being developed further. The new scores considered in the present research and the data generated (mainly the ground-truth) enable a better evaluation of Aruspix itself and, hopefully, future improvments.
+
+
Academic Advisory Board
+-
+
- Julie Cumming • McGill University +
- Emma Dillon • King’s College London +
- Thomas Forrest Kelly • Harvard University +
- Dolores Pesce • Washington University in St. Louis +
- Susan Forscher Weiss • Johns Hopkins University
+
+
+
Researchers
+-
+
- John Ashley Burgoyne • McGill University +
- Remi Chiu • McGill University +
- Ichiro Fujinaga • McGill University +
- Cory McKay • McGill University +
- Laurent Pugin • McGill University
+
+
+
Grants
+The project is funded by SSHRC Research Grants:
+-
+
- ‘Feasibility of Digitizing Early Music on Microfilms for the Creation of Large-scale Content-Searchable Databases’ (Standard Research Grant; August 2005; $145,838). +
- ‘Enhancing optical music recognition technology of Early Music prints and manuscripts for musicological applications’ (Image, Text, Sound and Technology Grant; December 2006; $49,943). +
+
+
Digitization of 16th Century Music Prints
+ +For our experiments, we selected a first set of microfilms of 18 music prints of the 16th century held at the Marvin Duchow Music Library at McGill. They were scanned in grayscale at a resolution of 400 dpi and following the guidelines set-up for the Marenzio project at Harvard. The microfilms scanned correspond to a total of about 1800 images. In some cases, the images contain more than one page (two or four more to be precise). In these cases, the resolution was increased to 600 dpi.
+To be processed, the images with more than one page per image have to be split. We may legitimately think that, with an automatic solution to split the images, we may save time since digitization time is reduced by 2 or 4 if we ignore the time needed to manipulate the microfilms and the image files. A python script was implemented to do this task. In practice, we noticed that it may become quite complicated regarding the page ordering and the repartition of the pages in the partbooks if the print is in partbooks. The main reasons are :
+-
+
- The position of the pages in the microfilm is not systematic (sometimes, the first pages are at the bottom, sometimes at the top). +
- Some pages may be duplicated in the microfilm, most often because one part ends on the image and another starts on the same image. But this is not systematic either. +
- Very often, several prints or several parts of the same print were bound together. In these cases, it is even more difficult to find where one print (or one part) ends and the other starts. +
The qualifications needed to do the digitization should not be underestimated. In particular we noticed that, in several cases, a good knowledge of the printing techniques of the time is necessary to figure out how the books or partbooks are organized. In the most enigmatic situations, to figure out the page order and repartition, it may be necessary to look at the collation letters, at the gatherings, or even at the bleed-through. Furthermore, wrong decisions taken during digitization and badly organized image files may make it necessary to consult the microfilm in order to reorganize the files correctly.
++
+
Digitization of 16th Century Music Prints
+ +For our experiments, we selected a first set of microfilms of 18 music prints of the 16th century held at the Marvin Duchow Music Library at McGill. They were scanned in grayscale at a resolution of 400 dpi and following the guidelines set-up for the Marenzio project at Harvard. The microfilms scanned correspond to a total of about 1800 images. In some cases, the images contain more than one page (two or four more to be precise). In these cases, the resolution was increased to 600 dpi.
+To be processed, the images with more than one page per image have to be split. We may legitimately think that, with an automatic solution to split the images, we may save time since digitization time is reduced by 2 or 4 if we ignore the time needed to manipulate the microfilms and the image files. A python script was implemented to do this task. In practice, we noticed that it may become quite complicated regarding the page ordering and the repartition of the pages in the partbooks if the print is in partbooks. The main reasons are :
+-
+
- The position of the pages in the microfilm is not systematic (sometimes, the first pages are at the bottom, sometimes at the top). +
- Some pages may be duplicated in the microfilm, most often because one part ends on the image and another starts on the same image. But this is not systematic either. +
- Very often, several prints or several parts of the same print were bound together. In these cases, it is even more difficult to find where one print (or one part) ends and the other starts. +
The qualifications needed to do the digitization should not be underestimated. In particular we noticed that, in several cases, a good knowledge of the printing techniques of the time is necessary to figure out how the books or partbooks are organized. In the most enigmatic situations, to figure out the page order and repartition, it may be necessary to look at the collation letters, at the gatherings, or even at the bleed-through. Furthermore, wrong decisions taken during digitization and badly organized image files may make it necessary to consult the microfilm in order to reorganize the files correctly.
++
+
Microfilms and Scanning
+ +Progress Reports
+-
+
- Scanning and ground-truth annotation for early music microfilms (Started May 2006) +
- Digitization of 16th century music prints (May 2006) +
- Digitisation guideline (PDF) (Marenzio project at Harvard, May 2006) +
- Holdings of microflims and corresponding facsimiles or modern editions at McGill (Remi Chiu, started May 2005) +
+
+
Optical Music Recognition (OMR)
+ +Optical Music Recognition (OMR) is the process of converting scanned images of pages of music into computer readable and manipulable symbols. We focus on creating music recognition tools for libraries, archives and musicologists, and specialize in working with early music notation.
+
+
Projects
+-
+
- Optical Neume Recognition Project (2012 - 2014) +
- Search the Liber Usualis +
- Single Interface for Music Score Search and Analysis (SIMSSA) (2011 - 2021) +
- Optical Music Recognition for Plainchant (2010 - 2013) +
- Gamut for Early Music on Microfilms (GEMM) (2005 - 2008)
+
+
+
Software
+ +Resources
+ ++
+
OMR Bibliography
+ +2019
++
-
+
-
+
Pacha, Alexander, and Jorge Calvo-Zaragoza. 2019. “Learning Notation Graph Construction for Full-Pipeline Optical Music Recognition.” In Proceedings of the 20th International Society for Music Information Retrieval Conference (ISMIR), 8. at Delft, the Netherlands. https://archives.ismir.net/ismir2019/paper/000006.pdf.
+
+
2017
++
-
+
-
+
Greet, Justin. 2017. “Improved Optical Music Recognition (OMR).” http://cs231n.stanford.edu/reports/2017/pdfs/20.pdf.
+
+
2015
++
-
+
-
+
Shi, Baoguang, Xiang Bai, and CongYao. 2015. An end-to-end trainable neural network for image-based sequence recognition and Its application to scene text recognition. arXiv preprint.
+
+ -
+
Wen, Cuihong, Ana Rebelo, Jing Zhang, and Jaime Cardoso. 2015. “A New Optical Music Recognition System Based on Combined Neural Network.” Pattern Recognition Letters 58:1–7.
+
+
2014
++
-
+
-
+
Montagner, Igor, Roberto Hirata Jr., and Nina Hirata. 2014. “Learning to Remove Staff Lines from Music Score Images.” In Proceedings of the IEEE International Conference on Image Processing, 2614–18. https://doi.org/DOI:http://dx.doi.org/10.1109/ICIP.2014.7025529.
+
+
2013
++
-
+
-
+
Steyn, Jacques, ed. 2013. Structuring Music through Markup Language: Designs and Architectures. IGI Global. https://doi.org/10.4018/978-1-4666-2497-9.
+
+ -
+
Visaniy, Muriel, Van Cuong Kieu, Alicia Fornés, and Nicholas Journet. 2013. “ICDAR 2013 Music Scores Competition: Staff Removal.” In Proceedings of the International Conference on Document Analysis and Recognition, 1407–11.
+
+
2012
++
-
+
-
+
Rebelo, Ana, Ichiro Fujinaga, Filipe Paszkiewicz, Carlos Guedes, Andre Marcal, and Jaime Cardoso. 2012. “Optical Music Recognition: State of the Art and Open Issues for Handwritten Music Scores.” International Journal of Multimedia Information Retrieval 1 (3):173–90.
+
+
2011
++
-
+
-
+
Helsen, Kate. 2011. “‘Venite et Videte’: First Results in the Optical Neume Recognition Project.” In Cantus Planus Conference. Vienna.
+
+ -
+
Pinto, Telmo, Ana Rebelo, Gilson Giralid, and Jaime Cardoso. 2011. “Music Score Binarization Based on Domain Knowledge.” In Pattern Recognition and Image Analysis, edited by Jordi Vitrià, João Miguel Sanches, and Mario Hernández, 700–708. Berlin: Springer.
+
+ -
+
Rajds, Arkadiusz. 2011. “Mathematical Morphology in the Process of Musical Notation Recognition.” In Advances in Intelligent and Soft Computing, 84:331–35. 2010.
+
+ -
+
Tambouratzis, Tatiana. 2011. “Identification of Key Music Symbols for Optical Music Recognition and On-Screen Presentation.” In The 2011 International Joint Conference on Neural Networks (IJCNN), 1935–42.
+
+
2010
++
-
+
-
+
Cardoso, Jaime, and Ana Rebelo. 2010. “Robust Staffline Thickness and Distance Estimation in Binary and Gray-Level Music Scores.” In Proceedings of the 20th International Conference on Pattern Recognition, 1856–59.
+
+ -
+
Cui, Jiali, He Huan, and Yiding Wang. 2010. “An Adaptive Staff Line Removal in Music Score Images.” In 10th Annual Conference on Signal Processing (ICSP), 964–67.
+
+ -
+
Dutta, Anjan, Umapada Pal, Alicia Fornés, and Josep Lladós. 2010. “An Efficient Staff Removal Approach from Printed Musical Documents.” In Proceedings of International Workshop on Structural and Syntactic Pattern Recognition, 373–82.
+
+ -
+
Gordo, Albert, Alicia Fornés, Ernest Valveny, and Josep Lladós. 2010. “A Bag of Notes Approach to Writer Identification in Old Handwritten Musical Scores.” In Proceedings of the 9th IAPR International Workshop on Document Analysis Systems, 247–54.
+
+ -
+
Gozzi, Gianmarco. 2010. OMRJX: A framework for piano scores optical music recognition. Politecnico di Milano.
+
+ -
+
Hankinson, Andrew, Laurent Pugin, and Ichiro Fujinaga. 2010. “An Interchange Format for Optical Music Recognition Applications.” In Proceedings of the 11th Annual Conference of the International Society for Music Information Retrieval (ISMIR), 51–56. at Utrecht, Netherlands.
+
+ -
+
Ramirez, Carolina, and Jun Ohya. 2010. “Symbol Classification Approach for OMR of Square Notation Manuscripts.” In Proceedings of the 11th Annual Conference of the International Society for Music Information Retrieval (ISMIR), 549–53. at Utrecht, Netherlands.
+
+ -
+
Rebelo, Ana, G. Capela, and Jaime Cardoso. 2010. “Optical Recognition of Music Symbols: A Comparative Study.” International Journal on Document Analysis and Recognition 13 (1):19–31.
+
+ -
+
Sammartino, Simone, Lorenzo Tardón, and Isabel Barbancho. 2010. “Graphical Tool for the Optical Music Recognition of Scores in White Mensural Notation.” In Proceedings of the Conference on Artificial Intelligence and Applications. at Innsbruck Austria.
+
+ -
+
Tardón, Lorenzo, Simone Sammartino, Isabel Barbancho, Véronica Gómez, and Antonio Oliver. 2010. “Optical Music Recognition for Scores Written in White Mensural Notation.” In EURASIP Journal on Image and Video Processing, 2009.
+
+
2009
++
-
+
-
+
Burgoyne, John, Yue Ouyang, Tristan Himmelman, Johanna Devaney, Laurent Pugin, and Ichiro Fujinaga. 2009. “Lyric Extraction and Recognition on Digital Images of Early Music Sources.” In Proceedings of the 10th International Society for Music Information Retrieval (ISMIR), 723–27. at Kobe, Japan.
+
+ -
+
Byrd, Donald, William Guerin, Megan Schindele, and Ian Knopke. 2009. OMR Evaluation and Prospects for Improved OMR via Multiple Recognizers.
+
+ -
+
Dalitz, Christoph, and Bastian Pranzas. 2009. “German Lute Tablature Recognition.” In Proceedings of the 10th International Conference on Document Analysis and Recognition, 371–75. at Barcelona, Spain.
+
+ -
+
Fornés, Alicia, Josep Lladós, Sánchez Gemma, and Bunke Horst. 2009. “On the Use of Textural Features for Writer Identification in Old Handwritten Music Scores.” In Proceedings of the 10th International Conference on Document Analysis and Recognition, 996–1000. at Barcelona, Spain.
+
+ -
+
Genfang, Chen, Zhang Wenjun, and Wang Qiuqiu. 2009. “Pick-up the Musical Information from Digital Musical Score Based on Mathematical Morphology and Music Notation.” In Proceedings of the First International Workshop on Education Technology and Computer Science, 1141–44. at Wuhan, Hubei.
+
+ -
+
Johansen, Linn. 2009. Optical Music Recognition. University of Oslo.
+
+ -
+
Liu, Xiaoxiang, and Shu-Sheng Zhang. 2009. “Structure Analysis Approach of Music Notes for Optical Music Recognition.” Computer Engineering and Design 30 (3):709–12.
+
+ -
+
Nielsen, Johan. 2009. Statistical Analysis of Music Corpora. University of Copenhagen.
+
+ -
+
Ouyang, Yue, John Burgoyne, Laurent Pugin, and Ichiro Fujinaga. 2009. “Complex Layout Analysis of Medieval Music Manuscripts for Information Extraction and Optical Reccognition.” In Proceedings of the International Computer Music Conference. at Montreal, QC.
+
+ -
+
Phon-Amnuaisuk, Somnuk. 2009. “Estimating HMM Parameters Using Particle Swarm Optimisation.” In Applications of Evolutionary Computing. Berlin: Springer.
+
+ -
+
Pugin, Laurent and Forthcoming. 2009. “Editing Renaissance Music: The Aruspix Project.” In Internationales Jahrbuch Für Editionswissenschaften, Beihefte zur Editio, 94–103.
+
+ -
+
Santos, Cardoso dos, Arthur Capela Jaime, Ana Rebelo, Carlos Guedes, and Joaquim da Costa. 2009. “Staff Detection with Stable Paths.” IEEE Transactions on Pattern Analysis and Machine Intelligence 31 (6):1134–39.
+
+ -
+
Vrist, Søren. 2009. Optical Music Recognition for Structural Information from High-Quality Scanned Music. University of Copenhagen.
+
+
2008
++
-
+
-
+
Bellini, Pierfrancesco, Ivan Bruno, and Paolo Nesi. 2008. “Optical Music Recognition: Architecture and Algorithms.” In Interactive Multimedia Music Technologies, edited by Kia Ng and and Paolo Nesi. Hershey, PA: Information Science Reference.
+
+ -
+
Bullen, Andrew. 2008. Bringing Sheet Music to Life: My Experiences with OMR.
+
+ -
+
Burgoyne, John, Johanna Devaney, Laurent Pugin, and Ichiro Fujinaga. 2008. “Enhanced Bleedthrough Correction for Early Music Documents with Recto-Verso Registration.” In Proceedings of the Conference of the International Society for Music Information Retrieval (ISMIR), 407–12. at Philadelphia, PA.
+
+ -
+
Cardoso, Jaime, Aarthur Capela, Ana Rebelo, Carlos Guedes, and and INESC Porto. 2008. “A Connected Path Approach for Staff Detection on a Music Score.” In Proceedings of the 15th IEEE International Conference on Image Processing, 1005–8.
+
+ -
+
Castro, Pedro, Rui Almeida, and João Caldas Pinto. 2008. “Restoration of Double-Sided Ancient Music Documents with Bleed-Through.” In Progress in Pattern Recognition, Image Analysis and Applications. Berlin: Springer.
+
+ -
+
Dalitz, Christoph, Georgios Michalakis, and Christine Pranzas. 2008. “Optical Recognition of Psaltic Byzantine Chant Notation.” International Journal on Document Analysis and Recognition 11 (3):143–58.
+
+ -
+
Dalitz, Christoph, Michael Droettboom, Bastian Pranzas, and Ichiro Fujinaga. 2008. “A comparative study of staff removal algorithms.” IEEE transactions on pattern analysis and machine intelligence 30 (5):753–66.
+
+ -
+
Fornés, Alicia, Josep Lladós, and Gemma Sánchez. 2008. “Old Handwritten Musical Symbol Classification by a Dynamic Time Warping Based Method.” In Graphics Recognition. Recent Advances and New Opportunities, edited by Wenyin Liu, Josep Lladós, and Jean-Marc Ogier, 51–60. Berlin: Springer.
+
+ -
+
Fremerey, Christian, Meinard Müller, Frank Kurth, and Michael Clausen. 2008. “Automatic Mapping of Scanned Sheet Music to Audio Recordings.” In Proceedings of the Ninth Conference of the International Society for Music Information Retrieval (ISMIR), 413–18. at Philadelphia, PA.
+
+ -
+
Jones, Graham, Bee Ong, Ivan Bruno, and Kia Ng. 2008. “Optical Music Imaging: Music Document Digitisation, Recognition, Evaluation and Restoration.” In Interactive Multimedia Music Technologies, edited by Kia Ng and Paolo Nesi, 50–79. Hershey, PA: Information Science Reference.
+
+ -
+
Kolakowska, Agata. 2008. “Applying Decision Trees to the Recognition of Musical Symbols.” In Proceedings of the First International Conference on Information Technology. at Gdansk, Poland.
+
+ -
+
Laskov, Lasko, and Dimo Dimov. 2008. “Segmentation of Ancient Neumatic Musical Notation.” In Proceedings of the International Conference on Automatics and Informatics, 21–24. at Sofia, Bulgaria.
+
+ -
+
Pugin, Laurent, Jason Hockman, John Burgoyne, and Ichiro Fujinaga. 2008. “Gamera versus Aruspix: Two Optical Music Recognition Approaches.” In Proceedings of the Ninth Conference of the International Society for Music Information Retrieval (ISMIR), 419–24. at Philadelphia, PA.
+
+ -
+
Pugin, Laurent. 2008. “Computer Tools for Early Music Sources Comparison: A Practical Study on Marenzio Editions and Re-Editions.” Music, Poetry, Patronage, and Reception in Late Renaissance: Luca Marenzio and the Madrigal.
+
+ -
+
Smiatacz, Maciej, and Witold Malina. 2008. “Matrix-Based Classifiers Applied to Recognition of Musical Notation Symbols.” In Proceedings of the First International Conference on Information Technology, 1–4. at Gdansk Poland.
+
+ -
+
Szwoch, Mariusz. 2008. “Using MusicXML to Evaluate Accuracy of OMR Systems.” In Proceedings of the Fifth International Conference on Diagrammatic Representation and Inference, 419–22. at Herrsching Germany.
+
+ -
+
Wei, Lee Ling, Qussay Salih, and Ho Sooi Hock. 2008. “Optical Tablature Recognition (OT) System: Using Fourier Descriptors as a Recognition Tool.” In Proceedings of the International Conference on Audio, Language and Image Processing, 1532–39. at Shanghai, China.
+
+
2007
++
-
+
-
+
Bellini, Pierfrancesco, Ivan Bruno, and Paolo Nesi. 2007. “Assessing Optical Music Recognition Tools.” Computer Music Journal 31 (1):68–93.
+
+ -
+
Burgoyne, John, Laurent Pugin, Gred Eustace, and Ichiro Fujinaga. 2007. “A Comparative Survey of Image Binarisation Algorithms for Optical Recognition on Degraded Musical Sources.” In Proceedings of the Eighth International Conference on Music Information Retrieval (ISMIR), 509–12. at Vienna, Austria.
+
+ -
+
Castro, Pedro, and João Caldas Pinto. 2007. Methods for written ancient music restoration, Image analysis and recognition. Berlin: Springer.
+
+ -
+
Knopke, Ian, and Donald Byrd. 2007. “Towards MusicDiff: A Foundation for Improved Optical Music Recognition Using Multiple Recognizers.” In Proceedings of the Eighth Annual Conference of the International Society for Music Information Retrieval (ISMIR), 121–24. at Vienna, Austria.
+
+ -
+
Kurth, Frank, Meinard Müller, Christian Fremerey, Yoon-Ha Chang, and Michael Clausen. 2007. “Automated Synchronization of Scanned Sheet Music with Audio Recordings.” In Proceedings of the Seventh International Conference on Music Information Retrieval (ISMIR), 261–66. at Vienna, Austria.
+
+ -
+
Laskov, Lasko, and Dimo Dimov. 2007. “Color Image Segmentation for Neume Note Recognition.” In Proceedings of the International Conference on Automatics and Informatics, 37–41. at Sofia, Bulgaria.
+
+ -
+
McKay, Cory, and Ichiro Fujinaga. 2007. “Style-Independent Computer-Assisted Exploratory Analysis of Large Music Collections.” Journal of Interdisciplinary Music Studies 1 (1):63–85.
+
+ -
+
Miyao, Hidetoshi, and Masayuki Okamoto. 2007. “Stave Extraction for Printed Music Scores Using Dp Matching.” Journal of Advanced Computational Intelligence and Intelligent Informatics 8 (2):208–15.
+
+ -
+
Pugin, Laurent, John Burgoyne, Douglas Eck, and Ichiro Fujinaga. 2007. “Book-Adaptive and Book-Dependent Models to Accelerate Digitization of Early Music.” In NIPS Workshop on Music, Brain, and Cognition. at Whistler, BC.
+
+ -
+
Pugin, Laurent, John Burgoyne, and Ichiro Fujinaga. 2007a. “Goal-Directed Evaluation for the Improvement of Optical Music Recognition on Early Music Prints.” In Proceedings of the Seventh ACM/IEEE-CS Joint Conference on Digital Libraries (JCDL), 303–4. at Vancouver, BC.
+
+ -
+
Pugin, Laurent, John Burgoyne, and Ichiro Fujinaga. 2007b. “MAP Adaptation to Improve Optical Music Recognition of Early Music Documents Using Hidden Markov Models.” In Proceedings of the Eighth International Conference on Music Information Retrieval (ISMIR), 513–16. at Vienna, Austria.
+
+ -
+
Pugin, Laurent, John Burgoyne, and Ichiro Fujinaga. 2007c. “Reducing Costs for Digitising Early Music with Dynamic Adaptation.” In Research and Advanced Technology for Digital Libraries, edited by László Kovács, Norbert Fuhr, and Carlo Meghini, 4675:471–74. Berlin: Springer.
+
+ -
+
Rebelo, Ana, Arthur Capela, Joaquim da Costa, Carlos Guedes, Eeurico Carrapatoso, and Jaime Cardoso. 2007. “A Shortest Path Approach for Staff Line Detection.” In Proceedings of the Third International Conference on Automated Production of Cross Media Content for Multi-Channel Distribution (AXMEDIS), 33–44.
+
+ -
+
Rossant, Florence, and Isabelle Bloch. 2007. “Robust and Adaptive OMR System Including Fuzzy Modeling, Fusion of Musical Rules, and Possible Error Detection.” In EURASIP Journal on Advances in Signal Processing 2007, 1:160–85.
+
+
2006
++
-
+
-
+
Bainbridge, David, and Tim Bell. 2006. “Identifying Music Documents in a Collection of Images.” In Proceedings of the Seventh International Conference on Music Information Retrieval (ISMIR). Victoria, BC.
+
+ -
+
Byrd, Donald, and Megan Schindele. 2006. “Prospects for Improving OMR with Multiple Recognizers.” In Seventh International Conference on Music Information Retrieval (ISMIR), 41–46.
+
+ -
+
Choudhury, G.Sayeed, Tim DiLauro, Robert Ferguson, Michael Droettboom, and Ichiro Fujinaga. 2006. Document recognition for a million books. Vol. 12. 3. D-Lib Magazine.
+
+ -
+
Fornés, Alicia, Josep Lladós, and Sánchez Gemma. 2006. “Primitive Segmentation in Old Handwritten Music Scores.” In Graphics Recognition. Ten Years Review and Future Perspectives, edited by Liu Wenyin and Josep Lladós. Berlin: Springer.
+
+ -
+
Homenda, Wladyslaw, and Marcin Luckner. 2006a. “Automatic Knowledge Acquisition: Recognizing Music Notation with Methods of Centroids and Classifications Trees.” In Proceedings of the International Conference on Neural Networks, 3382–88. at Vancouver, BC.
+
+ -
+
Homenda, Wladyslaw, and Marcin Luckner. 2006b. “Braille Score.” In Proceedings of the International Conference on Intelligent Systems Design and Applications, 775–80. at Jinan, China.
+
+ -
+
Homenda, Wladyslaw. 2006. “Automatic Understanding of Images: Integrated Syntactic and Semantic Analysis of Music Notation.” In Proceedings of the International Conference on Neural Networks, 3026–33. at Vancouver, BC.
+
+ -
+
Laskov, Lasko. 2006. “Classification and Recognition of Neume Note Notation in Historical Documents.” In Proceedings of the International Conference on Computer Systems and Technologies. at Veliko Tarnovo, Bulgaria.
+
+ -
+
Luckner, Marcin. 2006. “Recognition of Noised Patterns Using Non-Disruption Learning Set.” In Proceedings of the Sixth International Conference on Intelligent Systems Design and Applications, 557–62. at Jinan.
+
+ -
+
McKay, Cory, and Ichiro Fujinaga. 2006. “Jsymbolic: A Feature Extractor for Midi Files.” In Proceedings of the International Computer Music Conference. at New Orleans, LA.
+
+ -
+
Pugin, Laurent. 2006a. “Aruspix: An automatic source-comparison system.” Computing in Musicology 14:49–60.
+
+ -
+
Pugin, Laurent. 2006b. “Optical Music Recognition of Early Typographic Prints Using Hidden Markov Models.” In Proceedings of the Seventh International Conference for Music Information Retrieval (ISMIR), 53–56. at Victoria, BC.
+
+ -
+
Pugin, Laurent. 2006c. “Representation and Dissemination of Music: Early Typographic Prints and Digitalization.” In Contemporary Classical Music: Papers of the 2006 Intercongressional Symposium of the International Musicological Society.
+
+ -
+
Toyama, Fubito, Kenji Shoji, and Juichi Miyamichi. 2006. “Symbol Recognition of Printed Piano Scores with Touching Symbols.” In Proceedings of the 18th International Conference on Pattern Recognition, 480–83. at Hong Kong.
+
+
2005
++
-
+
-
+
Barton, Lewis, John Caldwell, and Peter Jeavons. 2005. “E-Library of Medieval Chant Manuscript Transcriptions.” In Proceedings of the 5th ACM/IEEE-CS Joint Conference on Digital Libraries (JCDL), 320–29. Denver, CO.
+
+ -
+
Dalitz, Christoph, and Thomas Karsten. 2005. “Using the Gamera Framework for Building a Lute Tablature Recognition System.” In Proceedings of the Sixth International Conference on Music Information Retrieval (ISMIR), 478–81. at London, UK.
+
+ -
+
Homenda, Wladyslaw. 2005. “Optical Music Recognition: The Case Study of Pattern Recognition.” In Computer Recognition Systems, 835–42. Berlin: Springer.
+
+ -
+
Lobb, Richard, Tim Bell, and David Bainbridge. 2005. “Fast Capture of Sheet Music for an Agile Digital Music Library.” In Proceedings of the Sixth International Conference on Music Information Retrieval (ISMIR), 145–52. at London, UK.
+
+ -
+
Rossant, Florence, and Isabelle Bloch. 2005. “Optical Music Recognition Based on a Fuzzy Modeling of Symbol Classes and Music Writing Rules.” In Proceedings of the IEEE International Conference on Image Processing. at Genoa, Italy.
+
+ -
+
Szwoch, Mariusz. 2005. “A robust detector for distorted music staves.” In Computer Analysis of Images and Patterns, edited by André Gagalowicz and Wilfried Philips, 701–8. Berlin: Springer.
+
+
2004
++
-
+
-
+
Bellini, Pierfrancesco, Ivan Bruno, and Paolo Nesi. 2004. “An Off-Line Optical Music Sheet Recognition.” In Visual Perception of Music Notation: Online and Offline Recognition, edited by S. George. Hershey, PA: IRM Press.
+
+ -
+
Clausen, Michael, and Frank Kurth. 2004. “A Unified Approach to Content-Based and Fault-Tolerant Music Recognition.” IEEE Transactions on Multimedia 6 (5):717–31.
+
+ -
+
Droettboom, Michael, and Ichiro Fujinaga. 2004. “Symbol-Level Groundtruthing Environment for OMR.” In Proceedings of the Fifth International Conference on Music Information Retrieval (ISMIR), 497–500. at London, UK.
+
+ -
+
Fujinaga, Ichiro. 2004. “Staff Detection and Removal.” In Visual Perception of Music Notation, edited by Susan George, 1–39. Hershey: Idea Group Inc.
+
+ -
+
George, Susan. 2004a. “Evaluation in the Visual Perception of Music Notation.” In Visual Perception of Music Notation: On-Line and off-Line Recognition, edited by Susan George, 304–49. Hershey, PA: IRM Press.
+
+ -
+
George, Susan. 2004b. “Lyric Recognition Christian Music.” In Visual Perception of Music Notation: On-Line and off-Line Recognition, edited by Susan George, 128–226. Hershey, PA: IRM Press.
+
+ -
+
George, Susan. 2004c. “Wavelets for Dealing with Super-Imposed Objects in Recognition of Music Notation.” In Visual Perception of Music Notation: On-Line and off-Line Recognition, edited by S. George, 78–107. Hershey, PA: IRM Press.
+
+ -
+
Homenda, Wladyslaw, and K. Mossakowski. 2004. “Music Symbol Recognition: Neural Networks vs. Statistical Methods.” In Proceedings of the EUROFUSE. at Warszawa, Poland.
+
+ -
+
Homenda, Wladyslaw, and Marcin Luckner. 2004a. “Automatic Recognition of Music Notation Using Methods of Centroids and Classification Trees.” In Proceedings of the International Symposium on Computational Intelligence and Industrial Applications. at Haikou, China.
+
+ -
+
Homenda, Wladyslaw, and Marcin Luckner. 2004b. “Automatic Recognition of Music Notation Using Neural Networks.” In Proceedings of the International Conference on AI and Systems, 74–80. at Divnormorkoye, Russia.
+
+ -
+
McKay, Cory, and Ichiro Fujinaga. 2004. “Automatic Genre Classification Using Large High-Level Musical Feature Sets.” In Proceedings of the Fifth International Conference on Music Information Retrieval (ISMIR). Barcelona, Spain.
+
+ -
+
Mitobe, Youichi, Hidetoshi Miyao, and Minoru Maruyama. 2004. “A Fast HMM Algorithm Based on Stroke Lengths for On-Line Recognition of Handwritten Music Scores.” In Proceedings of the Ninth International Workshop on Frontiers in Handwriting Recognition, 521–26. at Tokyo, Japan.
+
+ -
+
Ng, Kia. 2004. “Optical Music Analysis for Printed Music Score and Handwritten Music Manuscript.” In Visual Perception of Music Notation: On-Line and off-Line Recognition, edited by Susan George, 108–27. Hershey, PA: IRM Press.
+
+ -
+
Rossant, Florence, and Isabelle Bloch. 2004. “A Fuzzy Model for Optical Recognition of Musical Scores.” Fuzzy Sets and Systems 141 (2):165–201.
+
+
2003
++
-
+
-
+
Bainbridge, David, and Tim Bell. 2003. “A Music Notation Construction Engine for Optical Music Recognition.” Software: Practice and Experience 33 (2):173–200.
+
+ -
+
Bruder, Ilvio, Andreas Finger, Andreas Heuer, and Temenushka Ignatova. 2003. “Towards a Digital Document Archive for Historical Handwritten Music Scores.” Digital Libraries: Technology and Management of Indigenous Knowledge for Global Access, 6th International Conference on Asian Digital Libraries, {ICADL} 2003, Kuala Lumpur, Malaysia, December 8-12, 2003, Proceedings, Lecture Notes in Computer Science, 2911:411–14. https://doi.org/10.1007/978-3-540-24594-0_41.
+
+ -
+
Caldas, Pinto, Pedro Vieira João, and João Sousa. 2003. “A New Graph-like Classification Method Applied to Ancient Handwritten Musical Symbols.” International Journal on Document Analysis and Recognition 6 (1):10–22.
+
+ -
+
Droettboom, Michael. 2003. “Correcting Broken Characters in the Recognition of Historical Printed Documents.” In Proceedings of the Joint Conference on Digital Libraries, At, 364–66. Houston, TX.
+
+ -
+
Gao, Sheng, Namunu Maddage, and Chin-Hui Lee. 2003. “A Hidden Markov Model Based Approach to Music Segmentation and Identification.” In Proceedings of the Joint Conference of the Fourth International Conference on Information, Communications and Signal Processing, and the Fourth Pacific Rim Conference on Multimedia, 1576–80. at Singapore.
+
+ -
+
George, Susan. 2003. “Online Pen-Based Recognition of Music Notation with Artificial Neural Networks.” Computer Music Journal 27 (2):70–79.
+
+ -
+
Göcke, Roland. 2003. “Pattern Recognition and Applications.” In Proceedings of the International Conference on Signal Processing, 250–55. at Rhodes, Greece.
+
+ -
+
Luckner, Marcin. 2003. Automatic Identification of Selected Symbols of Music Notation. Warsaw University of Technology.
+
+ -
+
Riley, Jenn, and Ichiro Fujinaga. 2003. “Recommended Best Practices for Digital Image Capture of Musical Scores.” OCLC Systems and Services 19 (2):62–69.
+
+
2002
++
-
+
-
+
Barton, Lewis. 2002. “The Neumes Project: Digital Transcription of Medieval Chant Manuscripts.” In Proceedings of the Web Delivering of Music (WEDELMUSIC), 211–18. Darmstadt, Germany.
+
+ -
+
Droettboom, Michael, Ichiro Fujinaga, G.Sayeed Choudhury Karl MacMillan, M.Patton Tim DiLauro, and T. Anderson. 2002. “Using the Gamera Framework for the Recognition of Cultural Heritage Materials.” In Proceedings of the 2nd ACM/IEEE-CS Joint Conference on Digital Libraries, 17.
+
+ -
+
Droettboom, Michael, Ichiro Fujinaga, and Karl MacMillan. 2002. Optical Music Interpretation, Structural, Syntactic and Statistical Pattern Recognition. Edited by T. Caelli, A. Amin, R. Duin, M. Kamel, and D. de Ridder. Berlin: Springer.
+
+ -
+
Gezerlis, Velissarios, and Sergios Theodoridis. 2002. “Optical Character Recognition of the Orthodox Hellenic Byzantine Music Notation.” Pattern Recognition 35 (4):895–914.
+
+ -
+
Luth, Nailja. 2002. “Automatic Identification of Music Notations.” In Proceedings of the Second International Conference on Web Delivering of Music (WEDELMUSIC), 203–10.
+
+ -
+
MacMillan, Karl, Michael Droettboom, and Ichiro Fujinaga. 2002. “Gamera: Optical Music Recognition in a New Shell.” In Proceedings of the International Computer Music Conference, 482–85.
+
+ -
+
McPherson, John R. 2002. “Introducing Feedback into an Optical Music Recognition System.” In Proceedings of the Third International Conference on Music Information Retrieval (ISMIR).
+
+ -
+
Miyao, Hidetoshi. 2002. “Stave extraction for printed music scores.” In Intelligent data engineering and automated learning, edited by Hujun Yin, Nigel Allinson, Richard Freeman, John Keane, and Simon Hubbard, 562–68. Berlin: Springer.
+
+ -
+
Ng, Kia, David Cooper, and Bee Ong. 2002. “Optical Music Analysis: A Reverse Engineering Approach.” In Proceedings of the EVA. at Florence, Italy.
+
+ -
+
Ng, Kia. 2002a. “Document Imaging for Music Manuscript.” In Proceedings of the Sixth World Multiconference on Systemics, Cybernetics and Informatics. at Florida, USA.
+
+ -
+
Ng, Kia. 2002b. “Music Manuscript Tracing.” In Graphics Recognition Algorithms and Applications, edited by Dorothea Blostein and Young-Bin Kwon, 330–42. Berlin: Springer.
+
+ -
+
Rossant, Florence. 2002. “A Global Method for Music Symbol Recognition in Typeset Music Sheets.” Pattern Recognition Letters 23 (10):1129–41.
+
+ -
+
Soak, Sang Moon, Seok Cheol Chang, Taehwan Shin, and Byung-Ha Ahn. 2002. “Music Recognition System Using Art-1 and GA.” In Proceedings of SPIE, 4734:171.
+
+
2001
++
-
+
-
+
Bainbridge, David, and and Tim Bell. 2001. “The Challenge of Optical Music Recognition.” Computers and the Humanities 35 (2):95–121.
+
+ -
+
Bellini, Pierfrancesco, Ivan Bruno, and Paolo Nesi. 2001. “Optical Music Sheet Segmentation.” In Proceedings of the First International Conference on Web Delivering of Music (WEDELMUSIC), 183–90. at Florence, Italy.
+
+ -
+
Choudhury, G.Sayeed, Tim Dilauro, Michael Droettboom, Ichiro Fujinaga, and Karl Macmillan. 2001. “Strike up the Score.” D-Lib Magazine 7.
+
+ -
+
Droettboom, Michael, and Ichiro Fujinaga. 2001. “Interpreting the Semantics of Music Notation Using an Extensible and Object-Oriented System.” In Proceedings of the Ninth Python Conference. at Long Beach, CA.
+
+ -
+
Homenda, Wladyslaw. 2001. “Optical Music Recognition: The Case of Granular Computing.” In Granular Computing: An Emerging Paradigm, edited by W. Pedrycz, 341–60. Heidelberg: Physica-Verlag.
+
+ -
+
MacMillan, Karl, Michael Droettboom, and Ichiro Fujinaga. 2001. “Gamera: A Structured Document Recognition Application Development Environment.” In Proceedings of the Second Annual International Symposium on Music Information Retrieval (ISMIR), 15–16.
+
+ -
+
McPherson, John R., and David Bainbridge. 2001. “Coordinating Knowledge within an Optical Music Recognition System.” In Proceedings of the The 4th New Zealand Computer Science Research StudentsÕ Conference (NZCSRSCÕ01), 50–58. at Christchurch, New Zealand.
+
+ -
+
Ng, Kia, David Cooper, and Bee Ong. 2001. “Towards an Integrated Handwritten Music Manuscript Analysis and Recognition System.” In Proceedings of the Conference for Content Integrated Research in Creative User Systems (CIRCUS).
+
+ -
+
Pugin, Laurent. 2001. Réalisation d’un système de superposition de partitions de musique anciennes. Geneva University.
+
+ -
+
Su, Mu-Chun, Chee-Yuen Tew, and Hsin-Ha Chen. 2001. “Musical Symbol Recognition Using Som-Based Fuzzy Systems.” In Proceedings of the IFSA World Congress and 20th NAFIPS International Conference.
+
+ -
+
Vieira, Pedro, and João Pintos Caldas. 2001. “Recognition of Musical Symbols in Ancient Manuscripts.” In Proceedings of the International Conference on Image Processing, 38–41. at Thessaloniki, Greece.
+
+
2000
++
-
+
-
+
Anquetil, Éric, and Bertrand Coüasnon. 2000. A Symbol Classifier Able to Reject Wrong Shapes for Document Recognition Systems. Graphics Recognition Recent Advances. Edited by Frédéric Dambreville, Atul K. Chhabra, and Dov Dori. Berlin: Springer.
+
+ -
+
Caldas, Pinto, Pedro Vieira João, Mário Ramalho, Megan Mengucci, Pedro Pina, and Fernando Muge. 2000. “Ancient Music Recovery for Digital Libraries.” In Research and Advanced Technology for Digital Libraries. Berlin: Springer.
+
+ -
+
Choudhury, G.Sayeed, Cynthia Requardt, Ichiro Fujinaga, Tim DiLauro, Elizabeth W. Brown, James W. Warner, and Brian Harrington. 2000. “Digital Workflow Management: The Lester s. Levy Digitized Collection of Sheet Music.” First Monday 5 (6).
+
+ -
+
Choudhury, G.Sayeed, Tim DiLauro, Michael Droettboom, Ichiro Fujinaga, Brian Harrington, and Karl MacMillan. 2000. “Optical Music Recognition System within a Large-Scale Digitization Project.” In Proceedings of the Proceedings ISMIR 00.
+
+ -
+
Cordella, Luigi, and Mari Vento. 2000. Symbol and Shape Recognition, Graphics Recognition Recent Advances. Berlin: Springer.
+
+ -
+
Fotinea, Stavroula-Evita, George Giakoupis, Aggelos Liveris, Stylianos Bakamidis, and George Carayannis. 2000. “An Optical Notation Recognition Soystem for Printed Music Based on Template Matching and High Level Reasoning.” In Proceedings of the Sixth Recherche d’Informations Assiste Par Ordinateur. at Paris, France.
+
+ -
+
Miyao, Hidetoshi, and Robert Haralick. 2000. “Format of Ground Truth Data Used in the Evaluation of the Results of an Optical Music Recognition System.” In Proceedings of the IAPR Workshop on Document Analysis Systems, 497–506. at Rio de Janeiro, Brazil.
+
+ -
+
Muge, Fernando, I. Granado, Megan Mengucci, Pedro Pina, Vitorino Ramos, Nikolay Sirakov, João Caldas Pinto, et al. 2000. “Automatic Feature Extraction and Recognition for Digital Access of Books of the Renaissance.” In Research and Advanced Technology for Digital Libraries, edited by Joe Borbinha and Thomas Baker, 1–13. Berlin: Springer.
+
+
1999
++
-
+
-
+
Bainbridge, David, Craig Nevill-Manning, Ian Witten, Lloyd Smith, and Rodger McNab. 1999. “Towards a Digital Library of Popular Music.” In Proceedings of the ACM Conference on Digital Libraries, 161–69. Berkeley, CA.
+
+ -
+
Bainbridge, David, and Kadir Wijaya. 1999. “Bulk Processing of Optically Scanned Music.” In Proceedings of the Seventh International Conference on Image Processing and Its Applications, 474–78. Manchester, UK.
+
+ -
+
Beran, Tomáš, and Tomáš Macek. 1999. “Recognition of Printed Music Score.” In Machine Learning and Data Mining in Pattern Recognition. Berlin: Springer.
+
+ -
+
Beran, Tomáš. 1999. Rozpoznavani notoveho zapisu (in Czech). Czech Technical University.
+
+ -
+
Blostein, Dorothea, and Lippold Haken. 1999. “Using Diagram Generation Software to Improve Diagram Recognition: A Case Study of Music Notation.” IEEE Transactions on Pattern Analysis and Machine Intelligence 21 (11):1121–36.
+
+ -
+
Ferrand, Miguel, João Alexandre Leite, and Amilcar Cardoso. 1999a. “Hypothetical Reasoning: An Application to Optical Music Recognition.” In Proceedings of the Joint Conference on Declarative Programming, 367–81. at Aquila, Italy.
+
+ -
+
Ferrand, Miguel, João Alexandre Leite, and Amilcar Cardoso. 1999b. “Improving Optical Music Recognition by Means of Abductive Constraint Logic Programming.” In Progress in Artificial Intelligence. Berlin: Springer.
+
+ -
+
Hori, Toyokazu, Sinichiro Wada, Tai Howzan, Sun-Yuan D.E. Kung, K. Bastiaan, and W. 1999. “Automatic Music Score Recognition/Play System Based on Decision Based Neural Network.” In Proceedings of the Third Workshop on Multimedia Signal Processing, 183–84.
+
+ -
+
Marinai, Simone, and Paolo Nesi. 1999. “Projection Based Segmentation of Musical Sheets.” In Proceedings of the International Conference on Document Analysis and Recognition, 515–18. at Bangalore, India.
+
+ -
+
Mosterd, Eric. 1999. “Developing A New Way To Transfer Sheet Music Via The Internet.” University of South Dakota. https://mosterd.org/coursework/csc/thesis/thesis.pdf.
+
+ -
+
Ng, Kia, David Cooper, Ewan Stefani, Roger Boyle, and Nick Bailey. 1999. “Embracing the Composer: Optical Recognition of Hand-Written Manuscripts.” In Proceedings of the International Computer Music Conference, 500–503. at Beijing, China.
+
+ -
+
Stückelberg, Marc, and David Doermann. 1999. “On Musical Score Recognition Using Probabilistic Reasoning.” In Proceedings of the Fifth International Conference on Document Analysis and Recognition, 115–18. at Bangalore India.
+
+ -
+
Stückelberg, Marc. 1999. Musical Score Recognition Using Probabilistic Inference.
+
+ -
+
Wijaya, Kenny, and David Bainbridge. 1999. “Staff Line Restoration.” In Seventh International Conference on Image Processing and Its Applications, 2:760–64.
+
+
1998
++
-
+
-
+
Bainbridge, David, and Stuart Inglis. 1998. “Musical Image Compression.” In Proceedings of the Data Compression Conference, at Snowbird, 209–18. UT.
+
+ -
+
Chhabra, Atul. 1998. Graphic symbol recognition: An overview, Graphics recognition algorithms and systems. Berlin: Springer.
+
+ -
+
Fahmy, Hoda, and Dorothea Blostein. 1998. “A Graph-Rewriting Paradigm for Discrete Relaxation: Application to Sheet-Music Recognition.” International Journal of Pattern Recognition and Artificial Intelligence 12 (6):763–99.
+
+ -
+
Ferrand, Miguel, and Amilcar Cardoso. 1998. “Scheduling to Reduce Uncertainty in Syntactical Music Structures.” In 14th Brazilian Symposium on Artificial Intelligence, 249–58.
+
+ -
+
Fujinaga, Ichiro, S. Moore, and D. Sullivan. 1998. “Implementation of Exemplar-Based Learning Model for Music Cognition.” In Proceedings of the International Conference on Music Perception and Cognition, 171–79. at Seoul, South Korea.
+
+ -
+
Kinoshita, Tomoyoshi, Hideya Muraoka, and Hidehiko Tanaka. 1998. “Note Recognition Using Statistical Information of Musical Note Transitions.” Journal of the Acoustical Society of Japan 54 (3):190–98.
+
+ -
+
Leite, João, Miguel Ferrand, and Amilcar Cardoso. 1998. Riem: A system for recognition and interpretation of music writing (in Portuguese). Dept. Engenharia Informatica, Faculdade de Cincias e Tecnologia, Universidade de Coimbra.
+
+ -
+
Sawaki, Minako, Hiroshi Murasei, Norihiro Hagita, and Kenichiro Ishii. 1998. “A Study on Syakuhachi Score Recognition with Embedded Symbols.” Transactions of the Institute of Electronics, Information and Communication Engineers 81 (10):2480–82.
+
+
1997
++
-
+
-
+
Bainbridge, David, and Nicholas Carter. 1997. Automatic Reading of Music Notation, Handbook of Character Recognition and Document Image Analysis. Edited by Horst Bunke and and Patrick Wang. Singapore: World Scientific.
+
+ -
+
Bainbridge, David, and Tim Bell. 1997. “Dealing with Superimposed Objects in Optical Music Recognition.” In Proceedings of the Sixth International Conference on Image Processing and Its Applications, 756–60.
+
+ -
+
Beran, Tomáš. 1997. Rozpoznavani notoveho zapisu (in czech). Czech Technical University.
+
+ -
+
Sokei, Sanetoshi, Tsuyoshi Yamashiro, Zensei Iha, and Minoru Toguchi. 1997. Study of recognition for okinawa syamisen score kunkunsi.
+
+ -
+
Stückelberg, Marc, Christian Pellegrini, and Mélanie Hilario. 1997. “An Architecture for Musical Score Recognition Using High-Level Domain Knowledge.” In Proceedings of the Fourth International Conference on Document Analysis and Recognition, 2:813–18.
+
+ -
+
Stückelberg, Marc, Christian Pellegrini, and Mélanie Hillario. 1997. A Preview of an Architecture for Musical Score Recognition. CUI, University of Geneva, Geneva, Switzerland.
+
+
1996
++
-
+
-
+
Anstice, Jamie, Tim Bell, Andy Cockburn, and Martin Setchell. 1996. “The Design of a Pen-Based Musical Input System.” In Proceedings Sixth Australian Conference on Computer-Human Interaction, 260–67.
+
+ -
+
Bainbridge, David, and Tim Bell. 1996. “An Extensible Optical Music Recognition System.” Australian Computer Science Communications 18 (1):308–17.
+
+ -
+
Bainbridge, David. 1996. “Optical Music Recognition: A Generalised Approach.” In Proceedings of the Second New Zealand Computer Science Graduate Conference.
+
+ -
+
Cho, Kyung Eun Cho, (K)Huyng Je. 1996. “Recognition of Piano Score Using Skeletal Lines and Run-Length Information.” Journal of KISS(C) (Computing Practices) 2 (4):461–73.
+
+ -
+
Coüasnon, Bertrand. 1996. “Formalisation grammaticale de la connaissance a priori pour l’analyse de documents: Application aux partitions d’orchestre.” In Reconnaissance des Formes et Intelligence Artificielle, 465–74.
+
+ -
+
Fujinaga, Ichiro. 1996a. “Adaptive Optical Music Recognition.” IEEE Transactions on Systems, Man, and Cybernetics.
+
+ -
+
Fujinaga, Ichiro. 1996b. “Exemplar-Based Learning in Adaptive Optical Music Recognition System.” In International Computer Music Conference, 55–56.
+
+ -
+
Grande, Cindy, and Alan Belkin. 1996. “The Development of the Notation Interchange File Format.” Computer Music Journal 20 (4):33. https://doi.org/10.2307/3680416.
+
+ -
+
Homenda, Wladyslaw. 1996. “Automatic recognition of printed music and its conversion into playable music data.” Control and Cybernetics 25 (2):353–67.
+
+ -
+
Miyao, Hidetoshi, and Yasuaki Nakano. 1996. “Note Symbol Extraction for Printed Piano Scores Using Neural Networks.” IEICE Transactions on Information and Systems 79 (5):548–54.
+
+ -
+
Modayur, Bharath. 1996. “Music Score Recognition: A Selective Attention Approach Using Mathematical Morphology.” EE Dept, FT-10 University of Washington: Intelligent Systems Laboratory.
+
+ -
+
Ng, Kia, Roger Boyle, and David Cooper. 1996. “Handwritten Music Manuscript Recognition.” In Proceedings of the International Computer Music Conference, 354–57. at Hong Kong, China.
+
+ -
+
Ng, Kia, and Roger David Boyle. 1996. “Recognition and Reconstruction of Primitives in Music Scores.” Image and Vision Computing 14 (1):39–46.
+
+ -
+
Reed, Todd K., and James Parker. 1996. “Automatic Computer Recognition of Printed Music.” In 13th International Conference on Pattern Recognition, 3:803–7.
+
+ -
+
Yadid-Pecht, Orly, Moti Gerner, Lior Dvir, Eliyahu Brutman, and Uri Shimony. 1996. “Recognition of Handwritten Musical Notes by a Modified Neocognitron.” In Machine Vision and Applications, 9:65–72. 2.
+
+
1995
++
-
+
-
+
Bainbridge, David. 1995. Optical Music Recognition: Progress Report 2. Department of Computer Science, University of Canterbury, NZ.
+
+ -
+
Baumann, Stephan, and Karl Tombre. 1995. Report of the Line Drawing and Music Recognition Working Group. World Scientific.
+
+ -
+
Baumann, Stephan. 1995. “A Simplified Attributed Graph Grammar for High-Level Music Recognition.” In Proceedings of the Third International Conference on Document Analysis and Recognition, 2:1080–83.
+
+ -
+
Capitaine, Thierry, E. Mouaddib, Harold Trannois, and André Lebrun. 1995. “Automatic Recognition of Musical Scores.” In Second Asian Conference on Computer Vision, 1:422–24.
+
+ -
+
Coüasnon, Bertrand, Brisset Pascal, and Igor Stephan. 1995. “Using Logic Programming Languages for Optical Music Recognition.” In International Conference on the Practical Application of Prolog, 115–34.
+
+ -
+
Coüasnon, Bertrand, and Bernard Rétif. 1995a. “Using a Grammar for a Reliable Full Score Recognition System.” In International Computer Music Conference, 187–94.
+
+ -
+
Coüasnon, Bertrand, and Bernard Rétif. 1995b. “Utilisation d’une grammaire dans la reconnaissance de partitions d’orchestre.” In Deuxièmes Journées d’Informatique Musicale, 143–52.
+
+ -
+
Coüasnon, Bertrand, and Jean Camillerapp. 1995. “A Way to Separate Knowledge from Program in Structured Document Analysis: Application to Optical Music Recognition.” In International Conference on Document Analysis and Recognition, 1092–97.
+
+ -
+
Homenda, Wladyslaw. 1995. “Optical Pattern Recognition for Printed Music Notation.” In Proceedings of the SPIE, 2490:230–39.
+
+ -
+
Kopec, Gary, Philip Chou, and David Maltz. 1995. “Markov Source Model for Printed Music Decoding.” In Proceedings of the SPIE, 2422:115–25.
+
+ -
+
Miyao, Hidetoshi, and Yasuaki Nakano. 1995. “Head and Stem Extraction from Printed Music Scores Using a Neural Network Approach.” In Proceedings of the Third International Conference on Document Analysis Recognition, 1074–79. at Montreal, QC.
+
+ -
+
Ng, Kia, Roger Boyle, and David Cooper. 1995a. “Automated Optical Musical Score Recognition and Its Enhancement Using High-Level Musical Knowledge.” In Proceedings of the XI Colloquium on Musical Informatics, 167–70. at Bologna, Italy.
+
+ -
+
Ng, Kia, Roger Boyle, and David Cooper. 1995b. “Low- and High-Level Approaches to Optical Music Score Recognition.” In IEEE Colloquium on Document Image Processing and Multimedia Environments, 3:1–6.
+
+ -
+
Reed, Todd K. 1995. Optical Music Recognition. University of Calgary.
+
+ -
+
Seales, William, and Arcot Rajasekar. 1995. “Interpreting Music Manuscripts: A Logic-Based, Object-Oriented Approach.” In Proceedings of the Third International Computer Science Conference on Image Analysis Applications and Computer Graphics, 181–88.
+
+ -
+
Wilk, Randy. 1995. Converting Graphic Musical Data to a Machine Playable Form. McGill University.
+
+
1994
++
-
+
-
+
Andecy, Vincent Poulain d’, Jean Camillerapp, and Ivan Leplumey. 1994a. “Détecteur robuste de segments-application l’analyse de partitions musicales.” In 9ème Congrès AFCET Reconnaissance des Formes et Intelligence Artificielle.
+
+ -
+
Andecy, Vincent Poulain d’, Jean Camillerapp, and Ivan Leplumey. 1994b. “Kalman Filtering for Segment Detection: Application to Music Scores Analysis.” In Proceedings of the 12th IAPR International Conference on Pattern Recognition, 301–5.
+
+ -
+
Bainbridge, David. 1994a. A Complete Optical Music Recognition System: Looking to the Future.
+
+ -
+
Bainbridge, David. 1994b. Optical Music Recognition: Progress Report 1. Department of Computer Science, University of Canterbury, NZ.
+
+ -
+
Carter, Nicholas P. 1994a. “Conversion of the Haydn Symphonies into Electronic Form Using Automatic Score Recognition: A Pilot Study.” In Proceedings of SPIE, 2181:279–90.
+
+ -
+
Carter, Nicholas P. 1994b. “Music Score Recognition: Problems and Prospects.” Computing in Musicology 9:152–58.
+
+ -
+
Coüasnon, Bertrand, and Jean Camillerapp. 1994. “Using Grammars to Segment and Recognize Music Scores.” In International Association for Pattern Recognition Workshop on Document Analysis Systems, 15–27.
+
+ -
+
Fahmy, Hoda, and Dorothea Blostein. 1994. “A Graph-Rewriting Approach to Discrete Relaxation: Application to Music Recognition.” In Proceedings of the SPIE, 2181:291–302.
+
+ -
+
Goolsby, Thomas W. 1994a. “Eye Movement in Music Reading: Effects of Reading Ability, Notational Complexity, and Encounters.” Music Perception 12 (1):77–96.
+
+ -
+
Goolsby, Thomas W. 1994b. “Profiles of Processing: Eye Movements during Sightreading.” Music Perception 12 (1):97–123.
+
+ -
+
Lee, Soo-Young, and J. Shin. 1994. “Recognition of Music Scores Using Neural Networks.” Journal of the Korea Information Science Society 21 (7):1358–66.
+
+ -
+
McGee, William F. 1994. “Musicreader: An Interactive Optical Music Recognition System.” In Computing in Musicology, 9:146–51.
+
+ -
+
Musitek. 1994. “Musitek.” Keyboard 20 (3):136.
+
+ -
+
Ng, Kia, and Roger David Boyle. 1994. Reconstruction of Music Scores from Primitive Sub-Segmentation.
+
+ -
+
Roth, Martin. 1994. An Approach to Recognition of Printed Music. Swiss Federal Institute of Technology.
+
+ -
+
Selfridge-Field, Eleanor. 1994a. “How Practical Is Optical Music Recognition as an Input Method?” In Computing in Musicology, 9:159–66. 1993–94.
+
+ -
+
Selfridge-Field, Eleanor. 1994b. “Optical Recognition of Musical Notation: A Survey of Current Work.” In Computing in Musicology, 9:109–45.
+
+ -
+
Watkins, Greg. 1994. “A Fuzzy Syntactic Approach to Recognising Hand-Written Music.” In Proceedings of the International Computer Music Conference, 297–302.
+
+ -
+
Wright, D.James. 1994. Optical music recognition: A deterministic, object-oriented approach. University of Victoria.
+
+
1993
++
-
+
-
+
Andecy, Vincent Poulain d’. 1993. Segmentation et reconnaissance optique de partitions musicales. Rennes, France: IRISA/INSA.
+
+ -
+
Armand, Jean-Pierre. 1993. “Musical Score Recognition: A Hierarchical and Recursive Approach.” In Proceedings of the Second International Conference on Document Analysis and Recognition, 906–9.
+
+ -
+
Baumann, Stephan. 1993. “Document recognition of printed scores and transformation into MIDI.” In Proceedings of the Deutsches Forschungszentrum fuer Kuenstliche Intelligenz GmbH (DFKI). Kaiserslautern.
+
+ -
+
Carter, Nicholas P. 1993. A Generalized Approach to Automatic Recognition of Music Scores. Department of Music, Stanford University.
+
+ -
+
Clarke, Alastair T., B.Malcolm Brown, and Michael P. Thorne. 1993. “Recognising Musical Text.” In Proceedings of the SPIE, 2064:222–33.
+
+ -
+
Distasi, Riccardo, Michele Nappi, and Sergio Vitulano. 1993. “An Automatic System for Reading Musical Scores.” In Proceedings of the Eighth Scandinavian Conference on Image Analysis, 1307–10.
+
+ -
+
Distasi, Riccardo, and et al. 1993. “Automatic System for Reading Scores.” In Eighth Scandinavian Conference on Image Analysis, 1307–10.
+
+ -
+
Fahmy, Hoda, and Dorothea Blostein. 1993. “A Graph Grammar Programming Style for Recognition of Music Notation.” Machine Vision and Applications 6:83–99.
+
+ -
+
Fujinaga, Ichiro. 1993. “Optical Music Recognition System Which Learns.” In Proceedings of the SPIE, 1785:210–17.
+
+ -
+
Geggus, Karl Michael, and Elizabeth C. Botha. 1993. “A Model-Based Approach to Sheet Music Recognition.” Elektron 10 (1):25–29.
+
+ -
+
Kobayakawa, Tatsu. 1993. “Auto Music Score Recognition System.” In Proceedings SPIE: Character Recognition Technologies, 1906:112–23.
+
+ -
+
Leplumey, I., and G.Lorette Jean Camillerapp. 1993. “A Robust Detector for Music Staves.” In Proceedings of the International Conference on Document Analysis and Recognition, 902–5.
+
+ -
+
Modayur, Bharath R., Visvanathan Ramesh, Robert Martin Haralick, and Linda G. Shapiro. 1993. “Muser: A Prototype Musical Recognition System Using Mathematical Morphology.” In Machine Vision and Applications, 6:140–50. 2–3.
+
+ -
+
Newell, Christopher, and Homenda Wladyslaw. 1993. Midiscan for Windows.
+
+ -
+
Perrotti, Francesco Artur, and Roberto de Alencar Lotufo. 1993. “Pre-processamento, exctracao de atributos e primeiro nivel de classiccao para un sistema de reconhecimento otico de simbolos musicais.” In Proceedings of the VI Brazilian Symposium in Computer Graphics and Image Processing (SINGRAPI).
+
+ -
+
Randriamahefa, R., C.Fluhr Jean-Pierre Cocquerez, F. Pépin, and S. Philipp. 1993. “Printed Music Recognition.” In Proceedings of the International Conference on Document Analysis and Recognition, 898–901. at Tsukuba, Japan.
+
+
1992
++
-
+
-
+
Baumann, Stephan, and Andreas Dengel. 1992. “Transforming Printed Piano Music into Midi.” In Proceedings of International Workshop on Structural and Syntactic Pattern Recognition, 363–72.
+
+ -
+
Blostein, Dorothea, and Henry S. Baird. 1992. “A Critical Survey of Music Image Analysis.” In Structured Document Image Analysis, edited by Henry S. Baird, Horst Bunke, and Kazuhiko Yamamoto. Berlin: Springer.
+
+ -
+
Blostein, Dorothea, and Nicholas Carter. 1992. Recognition of Music Notation: Sspr ’90 Working Group Report, Structured Document Image Analysis. Edited by Henry Baird, Horst Bunke, and Kazuhiko Yamamoto. Berlin: Springer Verlag.
+
+ -
+
Bulis, Alex, Roy Almog, Moti Gerner, and Uri Shimony. 1992. “Computerized Recognition of Hand-Written Musical Notes.” In Proceedings of the International Computer Music Conference, 110–12.
+
+ -
+
Carter, Nicholas P. 1992a. “A New Edition of Walton’s Façade Using Automatic Score Recognition.” In Proceedings of International Workshop on Structural and Syntactic Pattern Recognition, 352–62.
+
+ -
+
Carter, Nicholas P. 1992b. “Segmentation and Preliminary Recognition of Madrigals Notated in White Mensural Notation.” Machine Vision and Applications 5 (3):223–30.
+
+ -
+
Carter, Nicholas, and Richard Bacon. 1992. “Automatic Recognition of Printed Music.” In Structured Document Image Analysis, edited by Henry Baird, Horst Bunke, and Kazuhiko Yamamoto. Berlin: Springer.
+
+ -
+
Di, Riso and Giuseppe. 1992. Lettura automatica di partiture musicali. Universit di Salerno.
+
+ -
+
Fahmy, Hoda, and Dorothea Blostein. 1992. “Graph Grammar Processing of Uncertain Data.” In Proceedings of International Workshop on Structural and Syntactic Pattern Recognition, 373–82.
+
+ -
+
Fujinaga, Ichiro, Bo Alphonce, Glendon Diener, and Bruce Pennycook. 1992. “Optical Music Recognition on next Workstation.” In Proceedings of the Second International Conference on Music Perception and Cognition. at Los Angeles, CA.
+
+ -
+
Fujinaga, Ichiro, Bo Alphonce, and Bruce Pennycook. 1992. “Interactive Optical Music Recognition.” In Proceedings of the International Computer Music Conference, 117–20.
+
+ -
+
Fujinaga, Ichiro. 1992. “An Optical Music Recognition System That Learns.” In Proceedings of SPIE, Enabling Technologies for High-Bandwidth Applications, 1785:210–17. Boston: MA.
+
+ -
+
Itagaki, Takebumi, Shuji Hashimoto, Masayuki Isogai, and Sadamu Ohteru. 1992. “Automatic Recognition of Several Types of Musical Notation.” In Structured Document Image Analysis, edited by Henry Baird, Horst Bunke, and Kazuhiko Yamamoto, 466–76. Berlin: Springer-Verlag.
+
+ -
+
Kasturi, Rangachar, and Lawrence O’Gorman. 1992. “Document image analysis techniques.” In Machine Vision and Applications, 5:141–42. 3.
+
+ -
+
Kato, Hirokazu, and Seiji Inokuchi. 1992. “A Recognition System for Printed Piano Music Using Musical Knowledge and Constraints, Structured Document Image Analysis.” In Structured Document Image Analysis, edited by Henry S. Baird, Horst Bunke, and Kazuhiko Yamamoto, 435–55. Berlin: Springer-Verlag.
+
+ -
+
Martin, Philippe, and Camille Bellissant. 1992. “Neural Networks for the Recognition of Engraved Musical Scores.” International Journal of Pattern Recognition and Artificial Intelligence 6 (1):193–208.
+
+ -
+
Martin, Philippe. 1992. “Réseaux de neurones artificiels: Application la reconnaissance optique de partitions musicales.” PhD Thesis, Institut IMAG.
+
+ -
+
Matsushima, Toshiaki. 1992. “Computerized Japanese Traditional Music Processing System.” In Proceedings of the International Computer Music Conference, 121–24.
+
+ -
+
Miyao, Hidetoshi T., T. Ejima, M. Miyahara, and K. Kotani. 1992. “Symbol Recognition for Printed Piano Scores Based on the Musical Knowledge (in Japanese).” Transactions of the Institute of Electronics, Information and Communication Engineers D-II 75 (11):1848–55.
+
+ -
+
Modayur, Bharath R., Robert Martin Haralick, and Linda G. Shapiro. 1992. “On Printed Music Score Symbol Recognition.” In Proceedings of the Symposium on Document Analysis and Information Retrieval, 16–18.
+
+ -
+
Modayur, Bharath R., Visvanathan Ramesh, Robert Martin Haralick, and Linda G. Shapiro. 1992. “Muser-a Prototype Musical Recognition System Using Mathematical Morphology.” EE Dept, FT-10 University of Washington: Intelligent Systems Laboratory.
+
+ -
+
Ng, Kia, and Roger David Boyle. 1992. “Segmentation of Music Primitives.” In Proceedings of the British Machine Vision Conference, 472–80. at Leeds, UK.
+
+ -
+
Roth, Martin. 1992. OMR-Optical Music Recognition. Swiss Federal Institute of Technology.
+
+ -
+
Sicard, Etienne. 1992. “An Efficient Method for the Recognition of Printed Music.” In Proceedings of 11th International Conference on Pattern Recognition (IAPR), 573–76.
+
+ -
+
Stevens, Catherine, and Cyril Latimer. 1992. “A Comparison of Connectionist Models of Music Recognition and Human Performance.” Minds and Machines 2 (4):379–400.
+
+ -
+
Wolman, (J) Amnon, James Choi, Shahab Asgharzadeh, and Jason Kahana. 1992. “Recognition of Handwritten Music Notation.” In Proceedings of the International Computer Music Conference, 125–27.
+
+ -
+
Yadid-Pecht, Orly, Eliyahu Brutman, Lior Dvir, Moti Gerner, and Uri Shimony. 1992. “Ramit: Neural Network for Recognition of Musical Notes.” In Proceedings of the International Computer Music Conference, 128–31.
+
+
1991
++
-
+
-
+
Bainbridge, David. 1991. Preliminary Experiments in Musical Score Recognition. University of Edinburgh.
+
+ -
+
Blostein, Dorothea, and Lippold Haken. 1991. “Justification of Printed Music.” Communications of the ACM 34 (3):88–99.
+
+ -
+
Carter, Nicholas. 1991. “Automatic Recognition and Related Topics: Guildford.” Computing in Musicology 7:109–11.
+
+ -
+
Choi, James. 1991. Optical Recognition of the Printed Musical Score. University of Illinois at Chicago.
+
+ -
+
Coüasnon, Bertrand. 1991. Réseaux de neurones appliqués à la reconnaissance de partitions musicales. Université de Rennes: Irisa.
+
+ -
+
Fahmy, Hoda, and Dorothea Blostein. 1991. “A Graph Grammar for High-Level Recognition of Music Notation.” First International Conference on Document Analysis 1:70–78.
+
+ -
+
Fahmy, Hoda. 1991. A Graph-Grammar Approach to High-Level Music Recognition. Queen’s University.
+
+ -
+
Fujinaga, Ichiro, Bo Alphonce, Bruce Pennycook, and Kharim Hogan. 1991. “Optical Music Recognition: Progress Report.” In Proceedings of the International Computer Music Conference, 66–73. at Montreal, QC.
+
+ -
+
Fujinaga, Ichiro, Bruce Pennycook, and Bo Alphonce. 1991. “The Optical Music Recognition Project.” In Computers in Music Research, 3:139–42.
+
+ -
+
Leplumey, I., and Jean Camillerapp. 1991a. “Comparison of Region Labelling for Musical Scores.” In First International Conference on Document Analysis, 2:674–82.
+
+ -
+
Leplumey, I., and Jean Camillerapp. 1991b. “Coopration entre la segmentation des régions blanches et des régions noires pour l’analyse de partitions musicales.” In 8ème Congrès Reconnaissance des Formes et Intelligence Artificielle, 3:1045–52.
+
+ -
+
Martin, Philippe, and Camille Bellissant. 1991a. “Low-Level Analysis of Music Drawing Images.” In International Conference on Document Analysis and Recognition, 417–25.
+
+ -
+
Martin, Philippe, and Camille Bellissant. 1991b. “Neural Networks at Different Levels of Musical Score Image Analysis System.” In Seventh Scandinavian Conference on Image Analysis, 1102–9.
+
+ -
+
McGee, William, and Paul Merkley. 1991. “The Optical Scanning of Medieval Music.” Computers and the Humanities 25 (1):47–53.
+
+ -
+
McLean, Graeme. 1991. Music Recognition. Heriot-Watt University.
+
+ -
+
Rothstein, Joseph. 1991. “Coda Finale-PC 2.0 Notation Software for IBM PCs.” Computer Music Journal 15 (4):115. https://doi.org/10.2307/3681091.
+
+ -
+
Ruttenberg, Alan. 1991. Optical Reading of Typeset Music. Massachusetts Institute of Technology.
+
+
1990
++
-
+
-
+
Akiyama, Teruo, and Norihiro Hagita. 1990. “Automated Entry System for Printed Documents.” Pattern Recognition 23 (11):1141–54.
+
+ -
+
Blostein, Dorothea, and Lippold Haken. 1990. “Template Matching for Rhythmic Analysis of Music Keyboard Input.” In Proceedings of 10th International Conference on Pattern Recognition, 767–70.
+
+ -
+
Carter, Nicholas P., and Richard A. Bacon. 1990. “Automatic Recognition of Music Notation.” In Proceedings of the International Association for Pattern Recognition Workshop on Syntactic and Structural Pattern Recognition, 482.
+
+ -
+
Clarke, Alastair, Malcolm Brown, and Michael Thorne. 1990. “Problems to Be Faced by Developers of Computer Based Automatic Music Recognisers.” In Proceedings of the International Computer Music Conference, 345–47.
+
+ -
+
Hewlett, Walter B., and Eleanor Selfridge-Field. 1990. “Optical Recognition of Musical Data.” In Computing in Musicology: A Directory of Research, 36–45.
+
+ -
+
Inokuchi, Seiji, and Haruhiro Katayose. 1990. “Computer and Music.” Journal of the Institute of Electronics, Information and Communication Engineers 73 (9):965–67.
+
+ -
+
Itagaki, Takebumi S., Shuji Hashimoto, Masayuki Isogai, and Sadamu Ohteru. 1990. “Automatic Recognition on Some Different Types of Musical Notation.” In Proceedings of the International Association for Pattern Recognition Workshop on Syntactic and Structural Pattern Recognition, 488.
+
+ -
+
Katayose, Haruhiro, T. Fukuoka, K. Takami, and Seiji Inokuchi. 1990. “Expression Extraction in Virtuoso Music Performances.” In Proceedings of the Tenth International Conference on Pattern Recognition, 780–84.
+
+ -
+
Kato, Hirokazu, and Seiji Inokuchi. 1990. “The Recognition System for Printed Piano Music Using Musical Knowledge and Constraints.” In Proceedings of the International Association for Pattern Recognition Workshop on Syntactic and Structural Pattern Recognition, 231–48.
+
+ -
+
Miyao, Hidetoshi T., T. Ejima, M. Miyahara, and K. Kotani. 1990. Recognition for Printed Piano Scores (in Japanese). Vol. 34. 90–74.
+
+ -
+
Pennycook, Bruce. 1990. “Towards Advanced Optical Music Recognition.” Advanced Imaging, 54–57.
+
+ -
+
Richard, Dominique M. 1990. “Godel Tune: Formal Models in Music Recognition Systems.” In ICMC Glasgow 1990 Proceedings, 338–40.
+
+ -
+
Sawada, Hideyuki, Toshiaki Matsushima, Takebumi Itakagi, and Sadamu Ohteru. 1990. “A Practical Bilateral Translation System between Printed Music and Braille.” In Proceedings of Sixth International Workshop on Computer Applications for the Visually Handicapped.
+
+
1989
++
-
+
-
+
Clarke, Alastair, Malcolm B. Brown, and Michael Thorne. 1989. “Coping with Some Really Rotten Problems in Automatic Music Recognition.” Microprocessing & Microprogramming 27 (1–5):547–50.
+
+ -
+
Fujinaga, Ichiro, Bo Alphonce, Bruce Pennycook, and Nathalie Boisvert. 1989. “Optical Recognition of Music Notation by Computer.” In Computers in Music Research, 1:161–64.
+
+ -
+
Fujinaga, Ichiro, Bo Alphonce, and Bruce Pennycook. 1989. “Issues in the Design of an Optical Music Recognition System.” In Proceedings of the International Computer Music Conference, 113–16.
+
+ -
+
Fujinaga, Ichiro, Bruce Pennycook, and Bo Alphonce. 1989. “Computer Recognition of Musical Notation.” In Proceedings of the First International Conference on Music Perception and Cognition, 87–90. at Kyoto, Japan.
+
+ -
+
Glass, S. 1989. Optical Music Recognition. University of Canterbury.
+
+ -
+
Katayose, Haruhiro, Hirokazu Kato, Masakazu Imai, and Seiji Inokuchi. 1989. “An Approach to an Artificial Music Expert.” In Proceedings of the International Computer Music Conference, 139–46.
+
+ -
+
Katayose, Haruhiro, and Seiji Inokuchi. 1989. “The kansei music system.” Computer Music Journal 13 (4):72–77.
+
+ -
+
Martin, Philippe. 1989. “Reconnaissance de partitions musicales et réseaux de neurones: Une étude.” In Actes 7 ième Congrs AFCET de Reconnaissance des Formes et Intelligence Artificielle, 217–26.
+
+ -
+
Matsushima, Toshiaki, Sadamu Ohteru, and Shuji Hashimoto. 1989. “An Integrated Music Information Processing System.” In Proceedings of the International Computer Music Conference, 191–98.
+
+ -
+
McGee, William F., and P. Merkley. 1989. Optical Recognition of Music Using Page Straightening.
+
+ -
+
Nagy, George. 1989. “Document Analysis and Optical Character Recognition.” In Fifth International Conference on Image Analysis and Processing, 511–29.
+
+ -
+
Yin, F., G. Qingshi, and Z. Xiang. 1989. “Principle on designing the music reading system (in Chinese).” Mini-Micro Systems 10 (12):1–10.
+
+
1988
++
-
+
-
+
Alphonce, Bo, Bruce Pennycook, Ichiro Fujinaga, and Nathalie Boisvert. 1988. “Optical Music Recognition: A Progress Report.” In Proceedings of the Small Computers in the Arts, 8–12.
+
+ -
+
Bacon, Richard A., and Nicholas P. Carter. 1988. “Recognising Music Automatically.” Physics Bulletin 39:265.
+
+ -
+
Carter, Nicholas, Richard Bacon, and Thomas Messenger. 1988. “The Acquisition, Representation and Reconstruction of Printed Music by Computer: A Review.” Computers and the Humanities 22 (2):117–36.
+
+ -
+
Clarke, Alastair T., B.Malcolm Brown, and Michael P. Thorne. 1988a. “Inexpensive Optical Character Recognition of Music Notation: A New Alternative for Publishers.” In Proceedings of the Computers in Music Research Conference, 84–87.
+
+ -
+
Clarke, Alastair T., B.Malcolm Brown, and Michael P. Thorne. 1988b. “Using a micro to automate data acquisition in music publishing.” Microprocessing and Microprogramming 24:549–54.
+
+ -
+
Fletcher, Lloyd Alan, and Rangachar Kasturi. 1988. “A Robust Algorithm for Text String Separation from Mixed Text/Graphics Images.” IEEE Transactions on Pattern Analysis and Machine Intelligence 10 (6):910–18.
+
+ -
+
Fluhr, Christian, and J. Abouassly. 1988. “Music Pattern Recognition.” In Proceedings of the EEC Concerted Action on Technology and Blindness. at Toulouse, France.
+
+ -
+
Fujinaga, Ichiro. 1988. Optical Music Recognition Using Projections. McGill University.
+
+ -
+
Kato, Hirokazu, and Seiji Inokuchi. 1988. “Automatic Recognition of Printed Piano Music Based on Bar Unit Processing (in Japanese).” Transactions of I. E. C. E 71 (5):894–901.
+
+ -
+
Matsushima, Toshiaki. 1988. “Automatic Printed-Music-to-Braille Translation System.” Journal of Information Processing 11 (4):249–57.
+
+ -
+
Ohteru Sadamu. 1988. “Data entry and automatic recognition of music score (in Japanese).” Journal of the Information Processing Society of Japan 29 (6):586–92.
+
+ -
+
Ostenstad, Berge. 1988. Oppdeling av abjektene I et digitalt notebilde I klassifiserbare enheter (in Norwegian). Institute of Informatics, Oslo, Norway.
+
+ -
+
Roach, John W., and James E. Tatem. 1988. “Using Domain Knowledge in Low-Level Visual Processing to Interpret Handwritten Music: An Experiment.” Pattern Recognition 21 (1):33–44.
+
+ -
+
Thorud, Elise. 1988. Analyse Av Notebilder (in Norwegian). Institute of Informatics, Oslo, Norway.
+
+
1987
++
-
+
-
+
Hachimura, Kozaburo, and Yutaka Ohno. 1987. “A system for the representation of human body movements from dance scores.” Pattern Recognition Letters 5:1–9.
+
+ -
+
Kim, Woong-Tae J., Myung Jin Chung, and Zeungnam Bien. 1987. “Recognition System for a Printed Music Score.” In Proceedings of TENCON 87: 1987 IEEE Region 10 Conference ’Computers and Communications Technology Toward, 2000:573–77.
+
+ -
+
Martin, Neil G. 1987. Towards Computer Recognition of the Printed Musical Score. Thames Polytechnic.
+
+ -
+
Ohteru Sadamu. 1987. “Automatic recognition of music score (in Japanese).” Bit (special issue on Computer and Music), 92–100.
+
+
1986
++
-
+
-
+
Roads, Curtis. 1986. “The Tsukuba Musical Robot.” Computer Music Journal 10 (2):39–43.
+
+ -
+
Tonnesland, S. 1986. Symfoni: System for note coding (in Norwegian). Institute of Informatics, Oslo, Norway.
+
+
1985
++
-
+
-
+
Fujimoto, Yoichi. 1985. “The Keyboard Playing Robot WABOT-2.” Bulletin of Science and Engineering Research Laboratory 112.
+
+ -
+
Lee, Myung Woo, and Jong Soo Choi. 1985. “The Recognition of Printed Music Score and Performance Using Computer Vision System (in Korean and English Translation).” Journal of the Korean Institute of Electronic Engineers 22 (5):429–35.
+
+ -
+
Matsushima, Toshiaki, Itaru Sonomoto, Tadanori Harada, Katsuhiro Kanamori, and Sadamu Ohteru. 1985. “Automated High Speed Recognition of Printed Music (WABOT-2 Vision System).” In Proceedings of the 1985 International Conference on Advanced Robotics, 477–82.
+
+ -
+
Matsushima, Toshiaki, Sadamu Ohteru, and Katsuhiro Kanamori. 1985. “Automatic Recognition of Printed Music (in Japanese).” Japan Acoustics Society Journal 41 (6):412–15.
+
+ -
+
Matsushima, Toshiaki, Tadanori Harada, Itaru Sonomoto, Katsuhiro Kanamori, Akio Uesugi, Yuji Nimura, Shuji Hashimoto, and Sadamu Ohteru. 1985. “Automated Recognition System for Musical Score: The Vision System of WABOT-2.” Bulletin of Science and Engineering Research Laboratory 112:25–52.
+
+ -
+
Sonomoto, Itaru, Tadanori Harada, Toshiaki Matsushima, Katsuhiro Kanamori, M. Konuma, Akio Uesugi, Yuji Nimura, Shuji Hashimoto, and Sadamu Ohteru. 1985. “Automated Recognition System of Printed Music for Playing Keyboards (in Japanese).” Acoustical Society of Japan 84 (22):17–22.
+
+
1984
++
-
+
-
+
Ohteru Sadamu. 1984. “A multi processor system for high speed recognition of printed music (in Japanese).” In National Convention Records of IECE.
+
+
1983
++
-
+
-
+
Maenaka, Karl, and Tadokoro Yoshiaki. 1983. “Recognition of Music Using the Special Image-Input-Device Enabling to Scan the Staff of Music as the Supporting System for the Blind (in Japanese).” Prl83-60, 37–45.
+
+
1982
++
-
+
-
+
Andronico, Alfio, and Alberto Ciampa. 1982. “On Automatic Pattern Recognition and Acquisition of Printed Music.” In Proceedings of the International Computer Music Conference, 245–78.
+
+ -
+
Aoyama, Hiroshi, and A. Tojo. 1982a. “Automatic Recognition of Music Score (in Japanese).” In Electronic Image Conference Journal, 11:427–35. 5.
+
+ -
+
Aoyama, Hiroshi, and A. Tojo. 1982b. “Automatic Recognition of Printed Music (in Japanese).” In Institute of Electronics and Communications Engineers of Japan (IECE), 33–40.
+
+ -
+
Mahoney, James Victor. 1982. Automatic Analysis of Musical Score Images. Massachusetts Institute of Technology.
+
+ -
+
Tojo, A., and Hiroshi Aoyama. 1982. “Automatic Recognition of Music Score.” In Sixth International Conference on Pattern Recognition. Vol. 1223.
+
+
1979
++
-
+
-
+
Onoe Morio, Ishizuka Mitsuru, and Tsuboi Kuniaki. 1979. “Experiment on automatic music reading (in Japanese).” In Proceedings of the 20th IPSJ National Conference, 6–65.
+
+
1978
++
-
+
-
+
Fischer, K.N. 1978. Computer Recognition of Engraved Music. University of Tennessee.
+
+ -
+
Nakamura, Y., M. Shindo, and Seiji Inokuchi. 1978. “Input Method of [Musical] Note and Realization of Folk Music Data-Base (in Japanese).” In Institute of Electronics and Communications Engineers of Japan (IECE), 78:41–50. 73.
+
+ -
+
Wittlich, Gary, Donald Byrd, and Rosalee Nerheim. 1978. “A system for interactive encoding of music scores under computer control.” Computers and the Humanities 12 (4):309–19.
+
+
1975
++
-
+
-
+
Prerau, David Stewart. 1975. “Do-Re-Mi: A Program That Recognizes Music Notation.” Computer and the Humanities 9 (1):25–29.
+
+
1974
++
-
+
-
+
Wittlich, Gary E. 1974. Non-physics measurements on the PEPR system: Seismograms and music scores.
+
+
1973
++
-
+
-
+
Nelson, Gary, and Terry R. Penney. 1973. “Pattern Recognition in Musical Score - Project No. M88.” In Computers and the Humanities, 8:50–51.
+
+ -
+
Wittlich, Gary. 1973. “Project Score.” Computational Musicology Newsletter 1 (1):6.
+
+
1972
++
-
+
-
+
Kassler, Michael. 1972. “Optical Character Recognition of Printed Music: A Review of Two Dissertations.” Perspectives of New Music 11:250–54.
+
+
1971
++
-
+
-
+
Prerau, David. 1971. “Computer Pattern Recognition of Printed Music.” AFIP Joint Computer Conferences 39:153–62.
+
+
1970
++
-
+
-
+
Kassler, Michael. 1970. “An Essay toward Specification of a Music-Reading Machine.” In Musicology and the Computer, edited by Barry Brook, 151–75. New York: City University of New York Press.
+
+
1966
++
-
+
-
+
Pruslin, Dennis. 1966. “Automatic Recognition of Sheet Music.” Massachusetts Institute of Technology.
+
+
+
+
OMR and OCR Software
+ +OMR
+Open Source
+ +Proprietary
+-
+
- Musitek Smartscore +
- Sharpeye +
- VivaldiScan +
- Capella-Scan +
- Photoscore +
- Scoremaker
+
+
+
+
OCR
+Open Source
+ +Proprietary
+ ++
+
Optical Music Recognition Bibliography
+ +While some effort was made to link to free versions of these papers, many are behind pay walls and require an individual or institutional subscription to access them. This page was largely constructed from earlier bibliographies by Ichiro Fujinaga and Kia Ng, but expanded to cover sources since 2004.
+Updates and omissions may be forwarded to Andrew Hankinson.
+
+
| Author | +Date | +Title | +Publication Info | +
|---|---|---|---|
| Akiyama, T., and N. Hagita | +1990 | +Automated entry system for printed documents | +Pattern Recognition 23 (11): 1141-54. | +
| Alphonce, B., B. Pennycook, I. Fujinaga, and N. Boisvert | +1988 | +Optical music recognition: A progress report | +Proceedings of the Small Computers in the Arts 8-12. | +
| Andronico, A., and A. Ciampa | +1982 | +On automatic pattern recognition and acquisition of printed music | +Proceedings of the International Computer Music Conference 245-78. | +
| Anquetil, E., B. Coüasnon, and F. Dambreville | +2000 | +A symbol classifier able to reject wrong shapes for document recognition systems | +Graphics recognition recent advances, edited by Atul K. Chhabra, and D. Dori. Berlin: Springer. | +
| Anstice, J., T. Bell, A. Cockburn, and M. Setchell | +1996 | +The design of a pen-based musical input system | +Proceedings Sixth Australian Conference on Computer-Human Interaction 260-67. | +
| Aoyama, H., and A. Tojo | +1982 | +Automatic recognition of music score (in japanese) | +Electronic Image Conference Journal 11 (5): 427-35. | +
| Aoyama, H., and A. Tojo | +1982 | +Automatic recognition of printed music (in japanese) | +Institute of Electronics and Communications Engineers of Japan (IECE) TG PREL82-5 33-40. | +
| Armand, J. P. | +1993 | +Musical score recognition: A hierarchical and recursive approach | +Proceedings of the Second International Conference on Document Analysis and Recognition (Cat. No.93TH0578-5) 906-09. | +
| Bacon, R. A., and N. P. Carter | +1988 | +Recognising music automatically | +Physics Bulletin 39 265. | +
| Bainbridge, D. | +1991 | +Preliminary experiments in musical score recognition | +B.Eng diss., University of Edinburgh. | +
| Bainbridge, D. | +1994 | +A complete optical music recognition system: Looking to the future | ++ |
| Bainbridge, D. | +1994 | +Optical music recognition: Progress report 1 | +Department of Computer Science, University of Canterbury, NZ. | +
| Bainbridge, D. | +1995 | +Optical music recognition: Progress report 2 | +Department of Computer Science, University of Canterbury, NZ. | +
| Bainbridge, D. | +1996 | +Optical music recognition: A generalised approach | +Proceedings of the Second New Zealand Computer Science Graduate Conference. | +
| Bainbridge, D. | +1997 | +Extensible optical music recognition | +Ph.D diss., University of Canterbury. | +
| Bainbridge, D., and T. Bell | +1996 | +An extensible optical music recognition system | +Australian Computer Science Communications 18 (1): 308-17. | +
| Bainbridge, D., and T. Bell | +2001 | +The challenge of optical music recognition | +Computers and the Humanities 35 (2): 95-121. | +
| Bainbridge, D., and T. Bell | +2003 | +A music notation construction engine for optical music recognition | +Software: Practice and Experience 33 (2): 173-200. | +
| Bainbridge, D., and T. Bell | +2006 | +Identifying music documents in a collection of images | +Proceedings of the Seventh International Conference on Music Information Retrieval (ISMIR), at Victoria, BC. | +
| Bainbridge, D., and T. C. Bell | +1997 | +Dealing with superimposed objects in optical music recognition | +Proceedings of the Sixth International Conference on Image Processing and its Applications, 756-60. | +
| Bainbridge, D., and N. Carter | +1997 | +Automatic reading of music notation | +Handbook of character recognition and document image analysis, edited by H. Bunke, and P. Wang. Singapore: World Scientific. | +
| Bainbridge, D., and S. Inglis | +1998 | +Musical image compression | +Proceedings of the Data Compression Conference, at Snowbird, UT. 209–18. | +
| Bainbridge, D., C. Nevill-Manning, I. Witten, L. Smith, and R. McNab | +1999 | +Towards a digital library of popular music | +Proceedings of the ACM Conference on Digital Libraries, at Berkeley, CA. 161-69. | +
| Bainbridge, D., and K. Wijaya | +1999 | +Bulk processing of optically scanned music | +Proceedings of the Seventh International Conference on Image Processing and Its Applications, at Manchester, UK. 474-78. | +
| Barton, L. | +2002 | +The neumes project: Digital transcription of medieval chant manuscripts | +Proceedings of the Web Delivering of Music (WEDELMUSIC), at Darmstadt, Germany. 211–18. | +
| Barton, L., J. Caldwell, and P. Jeavons | +2005 | +E-library of medieval chant manuscript transcriptions | +Proceedings of the 5th ACM/IEEE-CS joint conference on Digital libraries (JCDL), at Denver, CO. 320–29. | +
| Baumann, S. | +1993 | +Document recognition of printed scores and transformation into midi | +Proceedings of the Deutsches Forschungszentrum fuer Kuenstliche Intelligenz GmbH (DFKI), at Kaiserslautern. | +
| Baumann, S. | +1995 | +A simplified attributed graph grammar for high-level music recognition | +Proceedings of the Third International Conference on Document Analysis and Recognition 2 1080-83. | +
| Baumann, S., and A. Dengel | +1992 | +Transforming printed piano music into midi | +Proceedings of International Workshop on Structural and Syntactic Pattern Recognition 363-72. | +
| Baumann, S., and K. Tombre | +1995 | +Report of the line drawing and music recognition working group | +World Scientific, | +
| Bellini, P., I. Bruno, and P. Nesi | +2001 | +Optical music sheet segmentation | +Proceedings of the First International Conference on Web Delivering of Music (WEDELMUSIC), at Florence, Italy. 183–90. | +
| Bellini, P., I. Bruno, and P. Nesi | +2004 | +An off-line optical music sheet recognition | +Visual perception of music notation: Online and offline recognition, edited by S George. Hershey, PA: IRM Press. | +
| Bellini, P., I. Bruno, and P. Nesi | +2007 | +Assessing optical music recognition tools | +Computer Music Journal 31 (1): 68-93. | +
| Bellini, P., I. Bruno, and P. Nesi | +2008 | +Optical music recognition: Architecture and algorithms | +Interactive multimedia music technologies, edited by K. Ng, and P Nesi. Hershey, PA: Information Science Reference. | +
| Beran, T. | +1997 | +Rozpoznavani notoveho zapisu (in czech) | +BSc Report diss., Czech Technical University. | +
| Beran, T. | +1999 | +Rozpoznavani notoveho zapisu (in czech) | +MSc Report diss., Czech Technical University. | +
| Beran, T., and T. Macek | +1999 | +Recognition of printed music score | +Machine learning and data mining in pattern recognition, Berlin: Springer. | +
| Blostein, D., and L. Haken | +1991 | +Justification of printed music | +Communications of the ACM 34 (3): 88–99. | +
| Blostein, D., and H. S. Baird | +1992 | +A critical survey of music image analysis | +Structured document image analysis, edited by H. S. Baird, H. Bunke, and K. Yamamoto. Berlin: Springer. | +
| Blostein, D., and N. Carter | +1992 | +Recognition of music notation: Sspr '90 working group report | +Structured document image analysis, edited by H. Baird, H. Bunke, and K. Yamamoto. Berlin: Springer Verlag. | +
| Blostein, D., and L. Haken | +1990 | +Template matching for rhythmic analysis of music keyboard input | +Proceedings of 10th International Conference on Pattern Recognition 767-70. | +
| Blostein, D., and L. Haken | +1999 | +Using diagram generation software to improve diagram recognition: A case study of music notation | +IEEE Transactions on Pattern Analysis and Machine Intelligence 21 (11): 1121-36. | +
| Bruder, I., A. Finger, A. Heuer, and T. Ignatova | +2003 | +Towards a digital document archive for historical handwritten music scores | +Digital Libraries: Technology and Management of Indigenous Knowledge for Global Access. Berlin: Springer. 411–4. | +
| Bulis, A., R. Almog, M. Gerner, and U. Shimony | +1992 | +Computerized recognition of hand-written musical notes | +Proceedings of the International Computer Music Conference 110-12. | +
| Bullen, A. | +2008 | +Bringing sheet music to life: My experiences with OMR | +code4lib Journal 3 | +
| Burgoyne, J., J. Devaney, L. Pugin, and I. Fujinaga | +2008 | +Enhanced bleedthrough correction for early music documents with recto-verso registration | +Proceedings of the Conference of the International Society for Music Information Retrieval (ISMIR), at Philadelphia, PA. 407–12. | +
| Burgoyne, J., Y. Ouyang, T. Himmelman, J. Devaney, L. Pugin, and I. Fujinaga | +2009 | +Lyric extraction and recognition on digital images of early music sources | +Proceedings of the 10th International Society for Music Information Retrieval (ISMIR), at Kobe, Japan. 723–27. | +
| Burgoyne, J., L. Pugin, G. Eustace, and I. Fujinaga | +2007 | +A comparative survey of image binarisation algorithms for optical recognition on degraded musical sources | +Proceedings of the Eighth International Conference on Music Information Retrieval (ISMIR), at Vienna, Austria. 509–12. | +
| Byrd, D., W. Guerin, M. Schindele, and I. Knopke | +Forthcoming. | +OMR evaluation and prospects for improved OMR via multiple recognizers | ++ |
| Byrd, D., and M. Schindele | +2006 | +Prospects for improving OMR with multiple recognizers | +Seventh International Conference on Music Information Retrieval (ISMIR) 41–46. | +
| Caldas Pinto, J., P. Vieira, M. Ramalho, M. Mengucci, P. Pina, and F. Muge | +2000 | +Ancient music recovery for digital libraries | +Research and advanced technology for digital libraries, Berlin: Springer. | +
| Caldas Pinto, J., P. Vieira, and J. Sousa | +2003 | +A new graph-like classification method applied to ancient handwritten musical symbols | +International Journal on Document Analysis and Recognition 6 (1): 10-22. | +
| Capitaine, T., E. Mouaddib, H. Trannois, and A. Lebrun | +1995 | +Automatic recognition of musical scores | +Second Asian Conference on Computer Vision 1 422-24. | +
| Cardoso, J., A. Capela, A. Rebelo, C. Guedes, and I. Porto | +2008 | +A connected path approach for staff detection on a music score | +Proceedings of the 15th IEEE International Conference on Image Processing, 1005-08. | +
| Cardoso, J., A. Rebelo | +2010 | +Robust Staffline Thickness and Distance Estimation in Binary and Gray-Level Music Scores | +Proceedings of the 20th International Conference on Pattern Recognition, 1856-9. | +
| Carter, N. | +1991 | +Automatic recognition and related topics: Guildford, University of Surrey | +Computing in Musicology 7 109–11. | +
| Carter, N., R. Bacon, and T. Messenger | +1988 | +The acquisition, representation and reconstruction of printed music by computer: A review | +Computers and the Humanities 22 (2): 117-36. | +
| Carter, N., and R. Bacon | +1992 | +Automatic recognition of printed music | +Structured document image analysis, edited by H. Baird, H. Bunke, and K. Yamamoto. Berlin: Springer. | +
| Carter, N. P. | +1989 | +Automatic recognition of printed music in the context of electronic publishing | +Ph.D diss., University of Surrey. | +
| Carter, N. P. | +1992 | +A new edition of walton's faade using automatic score recognition | +Proceedings of International Workshop on Structural and Syntactic Pattern Recognition 352-62. | +
| Carter, N. P. | +1992 | +Segmentation and preliminary recognition of madrigals notated in white mensural notation | +Machine Vision and Applications 5 (3): 223-30. | +
| Carter, N. P. | +1994 | +Conversion of the haydn symphonies into electronic form using automatic score recognition: A pilot study | +Proceedings of SPIE 2181 279-90. | +
| Carter, N. P. | +1994 | +Music score recognition: Problems and prospects | +Computing in Musicology 9 152-58. | +
| Carter, N. P. | +1993 | +A generalized approach to automatic recognition of music scores | +Department of Music, Stanford University, | +
| Carter, N. P., and R. A. Bacon | +1990 | +Automatic recognition of music notation | +Proceedings of the International Association for Pattern Recognition Workshop on Syntactic and Structural Pattern Recognition 482. | +
| Castro, P., R. Almeida, and J. Caldas Pinto | +2008 | +Restoration of double-sided ancient music documents with bleed-through | +Progress in pattern recognition, image analysis and applications, Berlin: Springer. | +
| Castro, P., and J. Caldas Pinto | +2007 | +Methods for written ancient music restoration | +Image analysis and recognition, Berlin: Springer. | +
| Chhabra, A. | +1998 | +Graphic symbol recognition: An overview | +Graphics recognition algorithms and systems, Berlin: Springer. | +
| Cho, K. J., and K. E. Cho | +1996 | +Recognition of piano score using skeletal lines and run-length information | +Journal of KISS(C) (Computing Practices) 2 (4): 461-73. | +
| Choi, J. | +1991 | +Optical recognition of the printed musical score | +MS diss., University of Illinois at Chicago. | +
| Choudhury, G., T. Dilauro, M. Droettboom, I. Fujinaga, and K. Macmillan | +2001 | +Strike up the score | +D-Lib Magazine 7 | +
| Choudhury, G., T. DiLauro, R. Ferguson, M. Droettboom, and I. Fujinaga | +2006 | +Document recognition for a million books | +D-Lib Magazine 12 (3): | +
| Choudhury, G., C. Requardt, I. Fujinaga, T. DiLauro, E. W. Brown, J. W. Warner, and B. Harrington | +2000 | +Digital workflow management: The lester s. Levy digitized collection of sheet music | +First Monday 5 (6): | +
| Choudhury, G. S., T. DiLauro, M. Droettboom, I. Fujinaga, B. Harrington, and K. MacMillan | +2000 | +Optical music recognition system within a large-scale digitization project | +Proceedings of the Proceedings ISMIR 00, | +
| Clarke, A., B. Brown, and M. Thorne | +1989 | +Coping with some really rotten problems in automatic music recognition | +Microprocessing & Microprogramming 27 (1-5): 547-50. | +
| Clarke, A., M. Brown, and M. Thorne | +1990 | +Problems to be faced by developers of computer based automatic music recognisers | +Proceedings of the International Computer Music Conference 345-47. | +
| Clarke, A. T., B. M. Brown, and M. P. Thorne | +1988 | +Inexpensive optical character recognition of music notation: A new alternative for publishers | +Proceedings of the Computers in Music Research Conference 84-87. | +
| Clarke, A. T., B. M. Brown, and M. P. Thorne | +1988 | +Using a micro to automate data acquisition in music publishing | +Microprocessing and Microprogramming 24 549-54. | +
| Clarke, A. T., B. M. Brown, and M. P. Thorne | +1993 | +Recognising musical text | +Proceedings of the SPIE 2064 222-33. | +
| Clausen, M., and F. Kurth | +2004 | +A unified approach to content-based and fault-tolerant music recognition | +IEEE Transactions on Multimedia 6 (5): 717–31. | +
| Cordella, L., and M. Vento | +2000 | +Symbol and shape recognition | +Graphics recognition recent advances, Berlin: Springer. | +
| Coüasnon, B. | +1991 | +Réseaux de neurones appliqués à la reconnaissance de partitions musicales | +Irisa, Université de Rennes, | +
| Coüasnon, B. | +1996 | +Formalisation grammaticale de la connaissance a priori pour l'analyse de documents : Application aux partitions d'orchestre | +Reconnaissance des formes et intelligence artificielle 465-74. | +
| Coüasnon, B. | +1996 | +Segmentation et reconnaissance de documents guides par la connaissance a priori : Application aux partitions musicales | +PhD diss., Universit de Rennes. | +
| Coüasnon, B., and J. Camillerapp | +1995 | +A way to separate knowledge from program in structured document analysis: Application to optical music recognition. | +International Conference on Document Analysis and Recognition 1092-97. | +
| Coüasnon, B., and J. Camillerapp | +1994 | +Using grammars to segment and recognize music scores | +International Association for Pattern Recognition Workshop on Document Analysis Systems 15-27. | +
| Coüasnon, B., B. P., and I. Stephan | +1995 | +Using logic programming languages for optical music recognition | +International Conference on the Practical Application of Prolog 115-34. | +
| Coüasnon, B., and B. Rétif | +1995 | +Using a grammar for a reliable full score recognition system | +International Computer Music Conference 187-94. | +
| Coüasnon, B., and B. Rétif | +1995 | +Utilisation d'une grammaire dans la reconnaissance de partitions d'orchestre | +Deuxiémes Journées d'Informatique Musicale 143–52. | +
| Cui, J., H. Huan, and Y. Wang | +2010 | +An adaptive staff line removal in music score images | +10th Annual Conference on Signal Processing (ICSP) 964–7. | +
| d'Andecy, V. P. | +1993 | +Segmentation et reconnaissance optique de partitions musicales | +IRISA/INSA, Rennes, France. | +
| d'Andecy, V. P., J. Camillerapp, and I. Leplumey | +1994 | +Détecteur robuste de segments-application l'analyse de partitions musicales | +Actes 9 me Congrs AFCET Reconnaissance des Formes et Intelligence Artificielle | +
| d'Andecy, V. P., J. Camillerapp, and I. Leplumey | +1994 | +Kalman filtering for segment detection: Application to music scores analysis | +Proceedings of the 12th IAPR International Conference on Pattern Recognition (Cat. No.94CH3440-5) 1 301-05. | +
| Dalitz, C., M. Droettboom, B. Pranzas, and I. Fujinaga | +2008 | +A comparative study of staff removal algorithms | +IEEE transactions on pattern analysis and machine intelligence 30 (5): 753–66. | +
| Dalitz, C., and T. Karsten | +2005 | +Using the gamera framework for building a lute tablature recognition system | +Proceedings of the Sixth International Conference on Music Information Retrieval (ISMIR), at London, UK. 478-81. | +
| Dalitz, C., G. Michalakis, and C. Pranzas | +2008 | +Optical recognition of psaltic Byzantine chant notation | +International Journal on Document Analysis and Recognition 11 (3): 143-58. | +
| Dalitz, C., and B. Pranzas | +2009 | +German lute tablature recognition | +Proceedings of the 10th International Conference on Document Analysis and Recognition, at Barcelona, Spain. 371–75. | +
| Di Riso, D. | +1992 | +Lettura automatica di partiture musicali | +Masters diss., Universit di Salerno. | +
| Diener, G. R. | +1990 | +Modeling music notation: A three-dimensional approach | +PhD diss., Stanford University. | +
| Distasi, R., and e. al. | +1993 | +Automatic system for reading scores | +Eighth Scandinavian Conference on Image Analysis 1307-10. | +
| Distasi, R., M. Nappi, and S. Vitulano | +1993 | +An automatic system for reading musical scores | +Proceedings of the Eighth Scandinavian Conference on Image Analysis, 1307-10. | +
| dos Santos Cardoso, J., A. Capela, A. Rebelo, C. Guedes, and J. da Costa | +2009 | +Staff detection with stable paths | +IEEE Transactions on Pattern Analysis and Machine Intelligence 31 (6): 1134-39. | +
| Droettboom, M. | +2003 | +Correcting broken characters in the recognition of historical printed documents | +Proceedings of the Joint Conference on Digital Libraries, at Houston, TX. 364-66. | +
| Droettboom, M., I. Fujinaga, K. MacMillan, G. S. Chouhury, T. DiLauro, M. Patton, and T. Anderson | +2002 | +Using the gamera framework for the recognition of cultural heritage materials | +Proceedings of the Proceedings of the 2nd ACM/IEEE-CS joint conference on Digital libraries, 17. | +
| Droettboom, M., and I. Fujinaga | +2001 | +Interpreting the semantics of music notation using an extensible and object-oriented system | +Proceedings of the Ninth Python Conference, at Long Beach, CA. | +
| Droettboom, M., and I. Fujinaga | +2004 | +Symbol-level groundtruthing environment for OMR | +Proceedings of the Fifth International Conference on Music Information Retrieval (ISMIR), at London, UK. 497–500. | +
| Droettboom, M., I. Fujinaga, and K. MacMillan | +2002 | +Optical music interpretation | +Structural, syntactic and statistical pattern recognition, edited by T. Caelli, A. Amin, R. Duin, M. Kamel, and D. de Ridder. Berlin: Springer. | +
| Fahmy, H. | +1991 | +A graph-grammar approach to high-level music recognition | +MSc diss., Queen's University. | +
| Fahmy, H., and D. Blostein | +1991 | +A graph grammar for high-level recognition of music notation | +First International Conference on Document Analysis 1 70-78. | +
| Fahmy, H., and D. Blostein | +1992 | +Graph grammar processing of uncertain data | +Proceedings of International Workshop on Structural and Syntactic Pattern Recognition 373-82. | +
| Fahmy, H., and D. Blostein | +1993 | +A graph grammar programming style for recognition of music notation | +Machine Vision and Applications 6 83-99. | +
| Fahmy, H., and D. Blostein | +1994 | +A graph-rewriting approach to discrete relaxation: Application to music recognition | +Proceedings of the SPIE 2181 291-302. | +
| Fahmy, H., and D. Blostein | +1998 | +A graph-rewriting paradigm for discrete relaxation: Application to sheet-music recognition | +International Journal of Pattern Recognition and Artificial Intelligence 12 (6): 763-99. | +
| Ferrand, M., and A. Cardoso | +1998 | +Scheduling to reduce uncertainty in syntactical music structures | +14th Brazilian Symposium on Artificial Intelligence 249-58. | +
| Ferrand, M., J. A. Leite, and A. Cardoso | +1999 | +Hypothetical reasoning: An application to optical music recognition | +Proceedings of the Joint Conference on Declarative Programming, at Aquila, Italy. 367-81. | +
| Ferrand, M., J. A. Leite, and A. Cardoso | +1999 | +Improving optical music recognition by means of abductive constraint logic programming | +Progress in artificial intelligence, Berlin: Springer. | +
| Fischer, K. N. | +1978 | +Computer recognition of engraved music | +M.S. diss., University of Tennessee. | +
| Fletcher, L. A., and R. Kasturi | +1988 | +A robust algorithm for text string separation from mixed text/graphics images | +IEEE Transactions on Pattern Analysis and Machine Intelligence 10 (6): 910-18. | +
| Fluhr, C., and J. Abouassly | +1988 | +Music pattern recognition | +Proceedings of the EEC Concerted Action on "Technology and Blindness", at Toulouse, France. | +
| Fornés, A., J. Lladós, and G. Sánchez | +2006 | +Primitive segmentation in old handwritten music scores | +Graphics recognition. Ten years review and future perspectives, edited by W. Liu, and J. Lladós. Berlin: Springer. | +
| Fornés, A., J. Lladós, and G. Sánchez | +2008 | +Old handwritten musical symbol classification by a dynamic time warping based method | +Graphics Recognition. Recent Advances and New Opportunities 51-60. | +
| Fornés, A., J. Lladós, G. Sánchez, and H. Bunke | +2009 | +On the use of textural features for writer identification in old handwritten music scores | +Proceedings of the 10th International Conference on Document Analysis and Recognition, at Barcelona, Spain. 996-1000. | +
| Fotinea, S., G. Giakoupis, A. Liveris, S. Bakamidis, and G. Carayannis | +2000 | +An optical notation recognition system for printed music based on template matching and high level reasoning | +Proceedings of the Sixth Recherche d'Informations Assiste par Ordinateur, at Paris, France. | +
| Fremerey, C., M. Meinard, F. Kurth, and M. Clausen | +2008 | +Automatic mapping of scanned sheet music to audio recordings | +Proceedings of the Ninth Conference of the International Society for Music Information Retrieval (ISMIR), at Philadelphia, PA. 413–18. | +
| Fujimoto, Y. | +1985 | +The keyboard playing robot wabot-2 | +Bulletin of Science and Engineering Research Laboratory 112 | +
| Fujinaga, I. | +1992 | +An optical music recognition system that learns | +Enabling Technologies for High-Bandwidth Applications SPIE 1785 210-17. | +
| Fujinaga, I. | +1988 | +Optical music recognition using projections | +M.A diss., McGill University. | +
| Fujinaga, I. | +1993 | +Optical music recognition system which learns | +Proceedings of the SPIE 1785 210-17. | +
| Fujinaga, I. | +1996 | +Adaptive optical music recognition | +IEEE Transactions on Systems, Man, and Cybernetics | +
| Fujinaga, I. | +1996 | +Adaptive optical music recognition | +PhD diss., McGill University. | +
| Fujinaga, I. | +1996 | +Exemplar-based learning in adaptive optical music recognition system | +International Computer Music Conference 55-56. | +
| Fujinaga, I. | +2004 | +Staff detection and removal | +Visual perception of music notation: On-line and off-line recognition, edited by S. George. Hershey, PA: IRM Press. | +
| Fujinaga, I., B. Alphonce, G. Diener, and B. Pennycook | +1992 | +Optical music recognition on next workstation | +Proceedings of the Second International Conference on Music Perception and Cognition, at Los Angeles, CA. | +
| Fujinaga, I., B. Alphonce, and B. Pennycook | +1989 | +Issues in the design of an optical music recognition system | +Proceedings of the International Computer Music Conference 113-16. | +
| Fujinaga, I., B. Alphonce, and B. Pennycook | +1992 | +Interactive optical music recognition | +Proceedings of the International Computer Music Conference 117-20. | +
| Fujinaga, I., B. Alphonce, B. Pennycook, and N. Boisvert | +1989 | +Optical recognition of music notation by computer | +Computers in Music Research 1 161-64. | +
| Fujinaga, I., B. Alphonce, B. Pennycook, and K. Hogan | +1991 | +Optical music recognition: Progress report | +Proceedings of the International Computer Music Conference, at Montreal, QC. 66-73. | +
| Fujinaga, I., S. Moore, and D. Sullivan | +1998 | +Implementation of exemplar-based learning model for music cognition | +Proceedings of the International Conference on Music Perception and Cognition, at Seoul, South Korea. 171-79. | +
| Fujinaga, I., B. Pennycook, and B. Alphonce | +1989 | +Computer recognition of musical notation | +Proceedings of the First International Conference on Music Perception and Cognition, at Kyoto, Japan. 87-90. | +
| Fujinaga, I., B. Pennycook, and B. Alphonce | +1991 | +The optical music recognition project | +Computers in Music Research 3 139–42. | +
| Gao, S., N. Maddage, and L. Chin-Hui | +2003 | +A hidden Markov model based approach to music segmentation and identification | +Proceedings of the Joint Conference of the Fourth International Conference on Information, Communications and Signal Processing, and the Fourth Pacific Rim Conference on Multimedia, at Singapore. 1576–80. | +
| Geggus, K. M., and E. C. Botha | +1993 | +A model-based approach to sheet music recognition | +Elektron 10 (1): 25-29. | +
| Genfang, C., Z. Wenjun, and W. Qiuqiu | +2009 | +Pick-up the musical information from digital musical score based on mathematical morphology and music notation | +Proceedings of the First International Workshop on Education Technology and Computer Science, at Wuhan, Hubei. 1141–44. | +
| George, S. | +2003 | +Online pen-based recognition of music notation with artificial neural networks | +Computer Music Journal 27 (2): 70–79. | +
| George, S. | +2004 | +Evaluation in the visual perception of music notation | +Visual perception of music notation: On-line and off-line recognition, edited by S. George. Hershey, PA: IRM Press. | +
| George, S. | +2004 | +Lyric recognition and christian music | +Visual perception of music notation: On-line and off-line recogition, edited by S. George. Hershey, PA: IRM Press. | +
| George, S. | +2004 | +Wavelets for dealing with super-imposed objects in recognition of music notation | +Visual perception of music notation: On-line and off-line recogition, edited by S. George. Hershey, PA: IRM Press. | +
| Gezerlis, V. G., and S. Theodoridis | +2002 | +Optical character recognition of the orthodox hellenic byzantine music notation | +Pattern Recognition 35 (4): 895-914. | +
| Glass, S. | +1989 | +Optical music recognition | +Undergraduate Report diss., University of Canterbury. | +
| Göcke, R. | +2003 | ++ | Proceedings of the International Conference on Signal Processing, Pattern Recognition and Applications, at Rhodes, Greece. 250–55. | +
| Goolsby, T. W. | +1994 | +Eye movement in music reading: Effects of reading ability, notational complexity, and encounters | +Music Perception 12 (1): 77-96. | +
| Goolsby, T. W. | +1994 | +Profiles of processing: Eye movements during sightreading | +Music Perception 12 (1): 97-123. | +
| Gordo, A., A. Fornés, E. Valveny, J. Lladós. | +2010 | +A bag of notes approach to writer identification in old handwritten musical scores | +Proceedings of the 9th IAPR International Workshop on Document Analysis Systems, 247–54 | +
| Gozzi, G. | +2010 | +OMRJX: A framework for piano scores optical music recognition | +MSc diss., Politecnico di Milano. | +
| Hachimura, K., and Y. Ohno | +1987 | +A system for the representation of human body movements from dance scores | +Pattern Recognition Letters 5 1-9. | +
| Hankinson, A., L. Pugin, and I. Fujinaga | +2010 | +An interchange format for optical music recognition applications | +Proceedings of the 11th Annual Conference of the International Society for Music Information Retrieval (ISMIR), at Utrecht, Netherlands. 51–6. | +
| Helsen, K. | +2011 | +'Venite et videte': First Results in the Optical Neume Recognition Project | +Cantus Planus Conference, Vienna | +
| Hewlett, W. B., and E. Selfridge-Field | +1990 | +Optical recognition of musical data | +Computing in Musicology: A Directory of Research 36-45. | +
| Homenda, W. | +1995 | +Optical pattern recognition for printed music notation | +Proceedings of the SPIE 2490 230-39. | +
| Homenda, W. | +1996 | +Automatic recognition of printed music and its conversion into playable music data | +Control and Cybernetics 25 (2): 353-67. | +
| Homenda, W. | +2001 | +Optical music recognition: The case of granular computing | +Granular computing: An emerging paradigm, edited by W Pedrycz. Heidelberg: Physica-Verlag. | +
| Homenda, W. | +2005 | +Optical music recognition: The case study of pattern recognition | +Computer recognition systems, Berlin: Springer. | +
| Homenda, W. | +2006 | +Automatic understanding of images: Integrated syntactic and semantic analysis of music notation | +Proceedings of the International Conference on Neural Networks, at Vancouver, BC. 3026–33. | +
| Homenda, W., and M. Luckner | +2004 | +Automatic recognition of music notation using methods of centroids and classification trees | +Proceedings of the International Symposium on Computational Intelligence and Industrial Applications, at Haikou, China. | +
| Homenda, W., and M. Luckner | +2004 | +Automatic recognition of music notation using neural networks | +Proceedings of the International Conference on AI and Systems, at Divnormorkoye, Russia. 74–80. | +
| Homenda, W., and M. Luckner | +2006 | +Automatic knowledge acquisition: Recognizing music notation with methods of centroids and classifications trees | +Proceedings of the International Conference on Neural Networks, at Vancouver, BC. 3382–88. | +
| Homenda, W., and K. Mossakowski | +2004 | +Music symbol recognition: Neural networks vs. Statistical methods | +Proceedings of the EUROFUSE, at Warszawa, Poland. | +
| Hori, T., S. Wada, T. Howzan, S. Y. D. E. Kung, and K. Bastiaan, W. | +1999 | +Automatic music score recognition/play system based on decision based neural network | +Proceedings of the Third Workshop on Multimedia Signal Processing, 183-84. | +
| Inokuchi, S. | +1981 | +Musical database | +Journal of the Institute of Electronics and Communication Engineers of Japan 64 (5): 466-68. | +
| Inokuchi, S., and H. Katayose | +1990 | +Computer and music | +Journal of the Institute of Electronics, Information and Communication Engineers 73 (9): 965-67. | +
| Itagaki, T., S. Hashimoto, M. Isogai, and S. Ohteru | +1992 | +Automatic recognition of several types of musical notation | +Structured document image analysis, edited by H. Baird, H. Bunke, and K. Yamamoto. Berlin: Springer-Verlag. | +
| Itagaki, T. S., S. Hashimoto, M. Isogai, and S. Ohteru | +1990 | +Automatic recognition on some different types of musical notation. | +Proceedings of the International Association for Pattern Recognition Workshop on Syntactic and Structural Pattern Recognition 488 ff. | +
| Johansen, L. | +2009 | +Optical music recognition | +MSc diss., University of Oslo. | +
| Jones, G., B. Ong, I. Bruno, and K. Ng | +2008 | +Optical music imaging: Music document digitisation, recognition, evaluation and restoration | +Interactive multimedia music technologies, edited by K. Ng, and P Nesi. Hershey, PA: Information Science Reference. | +
| Kassler, M. | +1970 | +An essay toward specification of a music-reading machine | +Musicology and the computer, edited by B. Brook. New York: City University of New York Press. | +
| Kassler, M. | +1972 | +Optical character recognition of printed music: A review of two dissertations | +Perspectives of New Music 11 250-54. | +
| Kasturi, R., and L. O'Gorman | +1992 | +Document image analysis techniques | +Machine Vision and Applications 5 (3): 141–142. | +
| Katayose, H., T. Fukuoka, K. Takami, and S. Inokuchi | +1990 | +Expression extraction in virtuoso music performances | +Proceedings of the Tenth International Conference on Pattern Recognition 780-84. | +
| Katayose, H., and S. Inokuchi | +1989 | +The kansei music system | +Computer Music Journal 13 (4): 72-77. | +
| Katayose, H., H. Kato, M. Imai, and I. S. | +1989 | +An approach to an artificial music expert | +Proceedings of the International Computer Music Conference 139-46. | +
| Kato, H., and S. Inokuchi | +1988 | +Automatic recognition of printed piano music based on bar unit processing (in japanese) | +Transactions of I. E. C. E. J71-D (5): 894-901. | +
| Kato, H., and S. Inokuchi | +1990 | +The recognition system for printed piano music using musical knowledge and constraints | +Proceedings of the International Association for Pattern Recognition Workshop on Syntactic and Structural Pattern Recognition 231-48. | +
| Kato, H., and S. Inokuchi | +1992 | +A recognition system for printed piano music using musical knowledge and constraints | +Structured document image analysis, edited by H. S. Baird, H. Bunke, and K. Yamamoto. Berlin: Springer-Verlag. | +
| Kim, W. J., M. J. Chung, and Z. Bien | +1987 | +Recognition system for a printed music score | +Proceedings of TENCON 87: 1987 IEEE Region 10 Conference 'Computers and Communications Technology Toward 2000 2 573-77. | +
| Kinoshita, T., H. Muraoka, and H. Tanaka | +1998 | +Note recognition using statistical information of musical note transitions | +Journal of the Acoustical Society of Japan 54 (3): 190-98. | +
| Knopke, I., and D. Byrd | +2007 | +Towards MusicDiff: A foundation for improved optical music recognition using multiple recognizers | +Proceedings of the Eighth Annual Conference of the International Society for Music Information Retrieval (ISMIR), at Vienna, Austria. 121-24. | +
| Kobayakawa, T. | +1993 | +Auto music score recognition system | +Proceedings SPIE: Character Recognition Technologies 1906 112-23. | +
| Kolakowska, A. | +2008 | +Applying decision trees to the recognition of musical symbols | +Proceedings of the First International Conference on Information Technology, at Gdansk, Poland. | +
| Kopec, G., P. Chou, and D. Maltz | +1995 | +Markov source model for printed music decoding | +Proceedings of the SPIE 2422 115-25. | +
| Kurth, F., M. Müller, C. Fremerey, Y. Chang, and M. Clausen | +2007 | +Automated synchronization of scanned sheet music with audio recordings | +Proceedings of the Seventh International Conference on Music Information Retrieval (ISMIR), at Vienna, Austria. 261–66. | +
| Laskov, L. | +2006 | +Classification and Recognition of Neume Note Notation in Historical Documents | +Proceedings of the International Conference on Computer Systems and Technologies, at Veliko Tarnovo, Bulgaria. | +
| Laskov, L., and D. Dimov. | +2007 | +Color image segmentation for neume note recognition | +Proceedings of the International Conference on Automatics and Informatics, at Sofia, Bulgaria. III.37-41. | +
| Laskov, L., and D. Dimov. | +2008 | +Segmentation of Ancient Neumatic Musical Notation | +Proceedings of the International Conference on Automatics and Informatics, at Sofia, Bulgaria. II.21–4. | +
| Lee, M. W., and J. S. Choi | +1985 | +The recognition of printed music score and performance using computer vision system (in korean and english translation) | +Journal of the Korean Institute of Electronic Engineers 22 (5): 429-35. | +
| Lee, S., and J. Shin | +1994 | +Recognition of music scores using neural networks | +Journal of the Korea Information Science Society 21 (7): 1358-66. | +
| Leite, J., M. Ferrand, and A. Cardoso | +1998 | +Riem: A system for recognition and interpretation of music writing (in portuguese) | +Dept. Engenharia Informatica, Faculdade de Cincias e Tecnologia, Universidade de Coimbra, | +
| Leite, J. A., and M. Ferrand | +1994 | +Riem: Reconhecimento e interpretao de escrita musical (in portuguese) | +B.Sc. diss., Universidade de Coimbra. | +
| Leplumey, I., and J. Camillerapp | +1991 | +Comparison of region labelling for musical scores | +First International Conference on Document Analysis 2 674-82. | +
| Leplumey, I., and J. Camillerapp | +1991 | +Coopration entre la segmentation des rgions blanches et des rgions noires pour l'analyse de partitions musicales | +8e Congress Reconnaissance des Formes et Intelligence Artificielle 3 1045-52. | +
| Leplumey, I., J. Camillerapp, and G. Lorette | +1993 | +A robust detector for music staves | +Proceedings of the International Conference on Document Analysis and Recognition, 902-05. | +
| Liu, X., and S. Zhang | +2009 | +Structure analysis approach of music notes for optical music recognition | +Computer Engineering and Design 30 (3): 709–712. | +
| Lobb, R., T. Bell, and D. Bainbridge | +2005 | +Fast capture of sheet music for an agile digital music library | +Proceedings of the Sixth International Conference on Music Information Retrieval (ISMIR), at London, UK. 145-52. | +
| Luckner, M. | +2003 | +Automatic identification of selected symbols of music notation | +MSc diss., Warsaw University of Technology. | +
| Luckner, M. | +2006 | +Recognition of noised patterns using non-disruption learning set | +Proceedings of the Sixth International Conference on Intelligent Systems Design and Applications, at Jinan. 557–62. | +
| Luth, N. | +2002 | +Automatic identification of music notations | +Proceedings of the Second International Conference on Web Delivering of Music (WEDELMUSIC), 203-10. | +
| MacMillan, K., M. Droettboom, and I. Fujinaga | +2001 | +Gamera: A structured document recognition application development environment | +Proceedings of the Second Annual International Symposium on Music Information Retrieval (ISMIR), 15–16. | +
| MacMillan, K., M. Droettboom, and I. Fujinaga | +2002 | +Gamera: Optical music recognition in a new shell | +Proceedings of the International Computer Music Conference, 482–85. | +
| Maenaka, K., and Y. Tadokoro | +1983 | +Recognition of music using the special image-input-device enabling to scan the staff of music as the supporting system for the blind (in japanese) | +Prl83-60 37-45. | +
| Mahoney, J. V. | +1982 | +Automatic analysis of musical score images | +BS diss., Massachusetts Institute of Technology. | +
| Marinai, S., and P. Nesi | +1999 | +Projection based segmentation of musical sheets | +Proceedings of the International Conference on Document Analysis and Recognition, at Bangalore, India. 515-18. | +
| Martin, N. G. | +1987 | +Towards computer recognition of the printed musical score | +BSc diss., Thames Polytechnic. | +
| Martin, P. | +1989 | +Reconnaissance de partitions musicales et rseaux de neurones: Une tude | +Actes 7 ime Congrs AFCET de Reconnaissance des Formes et Intelligence Artificielle 217-26. | +
| Martin, P. | +1992 | +Rseaux de neurones artificiels: Application la reconnaissance optique de partitions musicales | +PhD diss., IMAG. | +
| Martin, P., and C. Bellissant | +1991 | +Low-level analysis of music drawing images | +International Conference on Document Analysis and Recognition 417-25. | +
| Martin, P., and C. Bellissant | +1991 | +Neural networks at different levels of musical score image analysis system | +Seventh Scandinavian Conference on Image Analysis 1102-09. | +
| Martin, P., and C. Bellissant | +1992 | +Neural networks for the recognition of engraved musical scores | +International Journal of Pattern Recognition and Artificial Intelligence 6 (1): 193-208. | +
| Matsushima, T. | +1988 | +Automatic printed-music-to-braille translation system | +Journal of Information Processing 11 (4): 249-57. | +
| Matsushima, T. | +1992 | +Computerized japanese traditional music processing system | +Proceedings of the International Computer Music Conference, 121-24. | +
| Matsushima, T., T. Harada, I. Sonomoto, K. Kanamori, A. Uesugi, Y. Nimura, S. Hashimoto, and S. Ohteru | +1985 | +Automated recognition system for musical score: The vision system of wabot-2 | +(112: 25-52): | +
| Matsushima, T., S. Ohteru, and S. Hashimoto | +1989 | +An integrated music information processing system | +Proceedings of the International Computer Music Conference, 191-98. | +
| Matsushima, T., S. Ohteru, and K. Kanamori | +1985 | +Automatic recognition of printed music (in japanese) | +Japan Acoustics Society Journal 41 (6): 412-15. | +
| Matsushima, T., I. Sonomoto, T. Harada, K. Kanamori, and S. Ohteru | +1985 | +Automated high speed recognition of printed music (wabot-2 vision system) | +Proceedings of the 1985 International Conference on Advanced Robotics 477-82. | +
| McGee, W., and P. Merkley | +1991 | +The optical scanning of medieval music | +Computers and the Humanities 25 (1): 47-53. | +
| McGee, W. F. | +1994 | +Musicreader: An interactive optical music recognition system | +Computing in Musicology 9 146-51. | +
| McGee, W. F., and P. Merkley | +1989 | +Optical recognition of music using page straightening | ++ |
| McKay, C., and I. Fujinaga | +2004 | +Automatic genre classification using large high-level musical feature sets | +Proceedings of the Fifth International Conference on Music Information Retrieval (ISMIR), at Barcelona, Spain. | +
| McKay, C., and I. Fujinaga | +2006 | +Jsymbolic: A feature extractor for midi files | +Proceedings of the International Computer Music Conference, at New Orleans, LA. | +
| McKay, C., and I. Fujinaga | +2007 | +Style-independent computer-assisted exploratory analysis of large music collections | +Journal of Interdisciplinary Music Studies 1 (1): 63-85. | +
| McLean, G. | +1991 | +Music recognition | +BSc diss., Heriot-Watt University. | +
| McPherson, J. R. | +2002 | +Introducing feedback into an optical music recognition system | +Proceedings of the Third International Conference on Music Information Retrieval (ISMIR), | +
| McPherson, J. R., and D. Bainbridge | +2001 | +Coordinating knowledge within an optical music recognition system | +Proceedings of the The 4th New Zealand Computer Science Research Students' Conference (NZCSRSC'01), at Christchurch, New Zealand. 50–58. | +
| Mitobe, Y., H. Miyao, and M. Maruyama | +2004 | +A fast hmm algorithm based on stroke lengths for on-line recognition of handwritten music scores | +Proceedings of the Ninth International Workshop on Frontiers in Handwriting Recognition, at Tokyo, Japan. 521–26. | +
| Miyao, H., and R. Haralick | +2000 | +Format of ground truth data used in the evaluation of the results of an optical music recognition system | +Proceedings of the IAPR Workshop on Document Analysis Systems, at Rio de Janeiro, Brazil. 497–506. | +
| Miyao, H., and Y. Nakano | +1995 | +Head and stem extraction from printed music scores using a neural network approach | +Proceedings of the Third International Conference on Document Analysis and Recognition, at Montreal, QC. 1074-79. | +
| Miyao, H., and Y. Nakano | +1996 | +Note symbol extraction for printed piano scores using neural networks | +IEICE Transactions on Information and Systems E79-D (5): 548-54. | +
| Miyao, H., and M. Okamoto | +2007 | +Stave extraction for printed music scores using dp matching | +Journal of Advanced Computational Intelligence and Intelligent Informatics 8 (2): 208–15. | +
| Miyao, H. T., T. Ejima, M. Miyahara, and K. Kotani | +1990 | +Recognition for printed piano scores (in japanese) | +Nlc90-34, Pru90-74 39-46. | +
| Miyao, H. T., T. Ejima, M. Miyahara, and K. Kotani | +1992 | +Symbol recognition for printed piano scores based on the musical knowledge (in japanese) | +Transactions of the Institute of Electronics, Information and Communication Engineers D-II J75D-II (11): 1848-55. | +
| Miyao, Hidetoshi | +2002 | +Stave extraction for printed music scores | +Intelligent data engineering and automated learning, Berlin: Springer. | +
| Modayur, B. R., R. M. Haralick, and L. G. Shapiro | +1992 | +On printed music score symbol recognition | +Proceedings of the Symposium on Document Analysis and Information Retrieval, 16-18. | +
| Modayur, B. R., V. Ramesh, R. M. Haralick, and L. G. Shapiro | +1992 | +Muser-a prototype musical recognition system using mathematical morphology | +Intelligent Systems Laboratory, EE Dept, FT-10 University of Washington. | +
| Modayur, B. R., V. Ramesh, R. M. Haralick, and L. G. Shapiro | +1993 | +Muser: A prototype musical recognition system using mathematical morphology | +Machine Vision and Applications 6 (2-3): 140-50. | +
| Modayur, B. | +1996 | +Music score recognition: A selective attention approach using mathematical morphology | +Intelligent Systems Laboratory, EE Dept, FT-10 University of Washington. | +
| Muge, F., I. Granado, M. Mengucci, P. Pina, V Ramos, N. Sirakov, J Caldas Pinto, A Marcolino, M Ramalho, P Vieira, and A Maia do Amaral | +2000 | +Automatic feature extraction and recognition for digital access of books of the renaissance | +Research and advanced technology for digital libraries, edited by J. Borbinha, and T. Baker. Berlin: Springer. | +
| Musitek | +1994 | +Musitek, midiscan | +Keyboard 20 (3): 136. | +
| Nagy, G. | +1989 | +Document analysis and optical character recognition | +Fifth International Conference on Image Analysis and Processing 511-29. | +
| Nakamura, Y., M. Shindo, and S. Inokuchi | +1978 | +Input method of [musical] note and realization of folk music data-base (in japanese) | +Institute of Electronics and Communications Engineers of Japan (IECE) TG PRL78-73 41-50. | +
| Nelson, G., and T. R. Penney | +1973 | +Pattern recognition in musical score - project no. M88. | +Computers and the Humanities 8 50-51. | +
| Newell, C., and H. and, W. | +1993 | +Midiscan for windows | ++ |
| Ng, K. | +2002 | +Document imaging for music manuscript | +Proceedings of the Sixth World Multiconference on Systemics, Cybernetics and Informatics, at Florida, USA. | +
| Ng, K. | +2002 | +Music manuscript tracing | +Graphics Recognition Algorithms and Applications 330-42. | +
| Ng, K., D. Cooper, and B. Ong | +2001 | +Towards an integrated handwritten music manuscript analysis and recognition system | +Proceedings of the Conference for Content Integrated Research in Creative User Systems (CIRCUS), at Glasgow. | +
| Ng, K., D. Cooper, and B. Ong | +2002 | +Optical music analysis: A reverse engineering approach | +Proceedings of the EVA, at Florence, Italy. | +
| Ng, K. | +1995 | +Automated computer recognition of music score | +PhD diss., University of Leeds. | +
| Ng, K. | +2004 | +Optical music analysis for printed music score and handwritten music manuscript | +Visual perception of music notation: On-line and off-line recognition, edited by S. George. Hershey, PA: IRM Press. | +
| Ng, K., R. Boyle, and D. Cooper | +1995 | +Automated optical musical score recognition and its enhancement using high-level musical knowledge | +Proceedings of the XI Colloquium on Musical Informatics, at Bologna, Italy. 167-70. | +
| Ng, K., R. Boyle, and D. Cooper | +1995 | +Low- and high-level approaches to optical music score recognition | +IEEE Colloquium on Document Image Processing and Multimedia Environments 3 1-6. | +
| Ng, K., R. Boyle, and D. Cooper | +1996 | +Hand written music manuscript recognition | +Proceedings of the International Computer Music Conference, at Hong Kong, China. 500-03. | +
| Ng, K., D. Cooper, E. Stefani, R. Boyle, and N. Bailey | +1999 | +Embracing the composer: Optical recognition of hand-written manuscripts | +Proceedings of the International Computer Music Conference, at Beijing, China. 500-03. | +
| Ng, K. C., and R. D. Boyle | +1992 | +Segmentation of music primitives | +Proceedings of the British Machine Vision Conference, at Leeds, UK. 472-80. | +
| Ng, K. C., and R. D. Boyle | +1994 | +Reconstruction of music scores from primitive sub-segmentation | ++ |
| Ng, K. C., and R. D. Boyle | +1996 | +Recognition and reconstruction of primitives in music scores | +Image and Vision Computing 14 (1): 39-46. | +
| Nielsen, J. | +2009 | +Statistical analysis of music corpora | +Bachelor diss., University of Copenhagen. | +
| Ohteru, S. | +1987 | +Automatic recognition of music score (in japanese) | +Bit (special issue on Computer and Music) 92-100. | +
| Ohteru, S. | +1988 | +Data entry and automatic recognition of music score (in japanese) | +Journal of the Information Processing Society of Japan 29 (6): 586-92. | +
| Ohteru, S., and a. et | +1984 | +A multi processor system for high speed recognition of printed music (in japanese) | +National Convention Records of IECE | +
| Onoe, M., M. Ishizuka, and K. Tsuboi | +1979 | +Experiment on automatic music reading (in japanese) | +Proceedings of the 20th IPSJ National Conference, 6F-65. | +
| Ostenstad, B. | +1988 | +Oppdeling av abjektene I et digitalt notebilde I klassifiserbare enheter (in norwegian) | +Institute of Informatics, Oslo, Norway. | +
| Ouyang, Y., J. Burgoyne, L. Pugin, and I. Fujinaga | +2009 | +Complex layout analysis of medieval music manuscripts for information extraction and optical reccognition | +Proceedings of the International Computer Music Conference, at Montreal, QC. | +
| Pennycook, B. | +1990 | +Towards advanced optical music recognition | +Advanced Imaging 54-57. | +
| Perrotti, F. A., and R. A. Lotufo | +1993 | +Pre-processamento, exctracao de atributos e primeiro nivel de classiccao para un sistema de reconhecimento otico de simbolos musicais | +Proceedings of the VI Brazilian Symposium in Computer Graphics and Image Processing (SINGRAPI), | +
| Phon-Amnuaisuk, S | +2009 | +Estimating hmm parameters using particle swarm optimisation | +Applications of evolutionary computing, Berlin: Springer. | +
| Pinto, T., A. Rebelo, G. Giralid, J. Cardoso | +2011 | +Music score binarization based on domain knowledge | +Pattern Recognition and Image Analysis, Berlin: Springer. 700–708. | +
| Prerau, D. | +1971 | +Computer pattern recognition of printed music | +AFIP Joint Computer Conferences 39 153–62. | +
| Prerau, D. S. | +1970 | +Computer pattern recognition of standard engraved music notation | +Ph.D. diss., Massachusetts Institute of Technology. | +
| Prerau, D. S. | +1975 | +Do-re-mi: A program that recognizes music notation | +Computer and the Humanities 9 (1): 25-29. | +
| Pruslin, D. | +1966 | +Automatic recognition of sheet music | +ScD. diss., Massachusetts Institute of Technology. | +
| Pugin, L. | +2001 | +Réalisation d'un système de superposition de partitions de musique anciennes | +BSc diss., Geneva University. | +
| Pugin, L. | +2006 | +Aruspix: An automatic source-comparison system | +Computing in Musicology 14 49–60. | +
| Pugin, L. | +2006 | +Lecture et traitement informatique de typographies musicales anciennes: Un logiciel de reconnaissance de partitions par modèles de Markov cachés | +PhD diss., Geneva University. | +
| Pugin, L. | +2006 | +Optical music recognition of early typographic prints using hidden Markov models | +Proceedings of the Seventh International Conference for Music Information Retrieval (ISMIR), at Victoria, BC. 53-56. | +
| Pugin, L. | +Forthcoming. | +Representation and dissemination of music: Early typographic prints and digitalization | +Contemporary Classical Music: Papers of the 2006 Intercongressional Symposium of the International Musicological Society | +
| Pugin, L. | +Forthcoming. | +Computer tools for early music sources comparison: A practical study on marenzio editions and re-editions | +Luca Marenzio and the Late Renaissance Madrigal: Music, Poetry, Patronage, and Reception | +
| Pugin, L. | +Forthcoming. | +Editing renaissance music: The aruspix project | +Beihefte zur Editio, Internationales Jahrbuch für Editionswissenschaften 94–103. | +
| Pugin, L., J. Burgoyne, and I. Fujinaga | +2007 | +Goal-directed evaluation for the improvement of optical music recognition on early music prints | +Proceedings of the Seventh ACM/IEEE-CS joint conference on Digital libraries (JCDL), at Vancouver, BC. 303–04. | +
| Pugin, L., J. Burgoyne, and I. Fujinaga | +2007 | +MAP adaptation to improve optical music recognition of early music documents using hidden Markov models | +Proceedings of the Eighth International Conference on Music Information Retrieval (ISMIR), at Vienna, Austria. 513–16. | +
| Pugin, L., J. Burgoyne, and I. Fujinaga | +2007 | +Reducing costs for digitising early music with dynamic adaptation | +Research and Advanced Technology for Digital Libraries 4675 471–74. | +
| Pugin, L., J. Burgoyne, D. Eck, and I. Fujinaga | +2007 | +Book-Adaptive and Book-Dependent Models to Accelerate Digitization of Early Music | +NIPS Workshop on Music, Brain, and Cognition at Whistler, BC. | +
| Pugin, L., J. Hockman, J. Burgoyne, and I. Fujinaga | +2008 | +Gamera versus aruspix: Two optical music recognition approaches | +Proceedings of the Ninth Conference of the International Society for Music Information Retrieval (ISMIR), at Philadelphia, PA. 419–24. | +
| Rajds, Arkadiusz | +2011 | +Mathematical Morphology in the Process of Musical Notation Recognition | +Advances in Intelligent and Soft Computing, Volume 84/2010, 331-5 | +
| Ramirez, C., and J. Ohya | +2010 | +Symbol classification approach for OMR of square notation manuscripts | +Proceedings of the 11th Annual Conference of the International Society for Music Information Retrieval (ISMIR), at Utrecht, Netherlands. 549–53. | +
| Randriamahefa, R., J. Cocquerez, C. Fluhr, F. Pépin, and S. Philipp | +1993 | +Printed music recognition | +Proceedings of the International Conference on Document Analysis and Recognition, at Tsukuba, Japan. 898-901. | +
| Rebelo, A., A. Capela, J. da Costa, C. Guedes, E. Carrapatoso, and J. Cardoso | +2007 | +A shortest path approach for staff line detection | +Proceedings of the Third International Conference on Automated Production of Cross Media Content for Multi-channel Distribution (AXMEDIS), 33–44. | +
| Rebelo, A., G. Capela, and J. Cardoso | +2010 | +Optical recognition of music symbols: A comparative study | +International Journal on Document Analysis and Recognition 13 (1): 19–31. | +
| Rebelo, A., I. Fujinaga, F. Paszkiewicz, C. Guedes, A. Marcal, and J. Cardoso. | +2012 | +Optical music recognition: State of the art and open issues for handwritten music scores | +International Journal of Multimedia Information Retrieval (March 2012): 1–18. | +
| Reed, K., and J. Parker | +1996 | +Automatic computer recognition of printed music | +13th International Conference on Pattern Recognition 3 803-07. | +
| Reed, K. T. | +1995 | +Optical music recognition | +MSc diss., University of Calgary. | +
| Richard, D. M. | +1990 | +Godel tune: Formal models in music recognition systems | +ICMC Glasgow 1990. Proceedings 338-40. | +
| Riley, J., and I. Fujinaga | +2003 | +Recommended best practices for digital image capture of musical scores | +OCLC Systems and Services 19 (2): 62-69. | +
| Roach, J. W., and J. E. Tatem | +1988 | +Using domain knowledge in low-level visual processing to interpret handwritten music: An experiment | +Pattern Recognition 21 (1): 33-44. | +
| Roads, C. | +1986 | +The tsukuba musical robot | +Computer Music Journal 10 (2): 39-43. | +
| Rossant, F. | +2002 | +A global method for music symbol recognition in typeset music sheets | +Pattern Recognition Letters 23 (10): 1129-41. | +
| Rossant, F., and I. Bloch | +2004 | +A fuzzy model for optical recognition of musical scores | +Fuzzy sets and systems 141 (2): 165-201. | +
| Rossant, F., and I. Bloch | +2005 | +Optical music recognition based on a fuzzy modeling of symbol classes and music writing rules | +Proceedings of the IEEE International Conference on Image Processing, at Genoa, Italy. | +
| Rossant, F., and I. Bloch | +2007 | +Robust and adaptive OMR system including fuzzy modeling, fusion of musical rules, and possible error detection | +EURASIP Journal on Advances in Signal Processing 2007 (1): 160–85. | +
| Roth, M. | +1992 | +OMR-optical music recognition | +Diploma diss., Swiss Federal Institute of Technology. | +
| Roth, M. | +1994 | +An approach to recognition of printed music | +Diploma diss., Swiss Federal Institute of Technology. | +
| Ruttenberg, A. | +1991 | +Optical reading of typeset music | +MSc diss., Massachusetts Institute of Technology. | +
| Sammartino, S., L. Tardón, and I. Barbancho. | +2010 | +Graphical tool for the optical music recognition of scores in white mensural notation. | +Proceedings of the Conference on Artificial Intelligence and Applications at Innsbruck, Austria | +
| Sawada, H., T. Matsushima, T. Itakagi, and S. Ohteru | +1990 | +A practical bilateral translation system between printed music and braille | +Proceedings of Sixth International Workshop on Computer Applications for the Visually Handicapped | +
| Sawaki, M., H. Murasei, N. Hagita, and K. Ishii | +1998 | +A study on syakuhachi score recognition with embedded symbols | +Transactions of the Institute of Electronics, Information and Communication Engineers D-II J81D-II (10): 2480-82. | +
| Seales, W., and A. Rajasekar | +1995 | +Interpreting music manuscripts: A logic-based, object-oriented approach | +Proceedings of the Third International Computer Science Conference on Image Analysis Applications and Computer Graphics, 181-88. | +
| Selfridge-Field, E. | +1994 | +How practical is optical music recognition as an input method? | +Computing in Musicology 9 (1993-94): 159–66. | +
| Selfridge-Field, E. | +1994 | +Optical recognition of musical notation: A survey of current work | +Computing in Musicology 9 109-45. | +
| Sicard, E. | +1992 | +An efficient method for the recognition of printed music | +Proceedings of 11th International Conference on Pattern Recognition (IAPR) 573-76. | +
| Smiatacz, M., and W. Malina | +2008 | +Matrix-based classifiers applied to recognition of musical notation symbols | +Proceedings of the First International Conference on Information Technology, at Gdansk, Poland. 1–4. | +
| Soak, S. M., S. C. Chang, T. Shin, and B. H. Ahn | +2002 | +Music recognition system using art-1 and ga | +Proceedings of SPIE 4734 171. | +
| Sokei, S., T. Yamashiro, Z. Iha, and M. Toguchi | +1997 | +Study of recognition for okinawa syamisen score kunkunsi | ++ |
| Sonomoto, I., T. Harada, T. Matsushima, K. Kanamori, M. Konuma, A. Uesugi, Y. Nimura, S. Hashimoto, and S. Ohteru | +1985 | +Automated recognition system of printed music for playing keyboards (in japanese) | +Acoustical Society of Japan TG MA84-22 17-22. | +
| Stevens, C., and C. Latimer | +1992 | +A comparison of connectionist models of music recognition and human performance | +Minds and Machines 2 (4): 379-400. | +
| Stückelberg, M. | +1999 | +Musical score recognition using probabilistic inference | ++ |
| Stückelberg, M., and D. Doermann | +1999 | +On musical score recognition using probabilistic reasoning | +Proceedings of the Fifth International Conference on Document Analysis and Recognition, at Bangalore, India. 115-18. | +
| Stückelberg, M., C. Pellegrini, and M. Hilario | +1997 | +An architecture for musical score recognition using high-level domain knowledge | +Proceedings of the Fourth International Conference on Document Analysis and Recognition (Cat. No.97TB100138) 2 813-18. | +
| Stückelberg, M., C. Pellegrini, and M. Hillario | +1997 | +A preview of an architecture for musical score recognition | +CUI, University of Geneva, Geneva, Switzerland. | +
| Su, M. C., C. Y. Tew, and H. H. Chen | +2001 | +Musical symbol recognition using som-based fuzzy systems | +Proceedings of the IFSA World Congress and 20th NAFIPS International Conference, | +
| Szwoch, M. | +2005 | +A robust detector for distorted music staves | +Computer analysis of images and patterns, Berlin: Springer. | +
| Szwoch, M. | +2008 | +Using MusicXML to evaluate accuracy of OMR systems | +Proceedings of the Fifth International Conference on Diagrammatic Representation and Inference, at Herrsching, Germany. 419–22. | +
| Tambouratzis, T. | +2011 | +Identification of key music symbols for optical music recognition and on-screen presentation | +The 2011 International Joint Conference on Neural Networks (IJCNN), 1935–42 | +
| Tardón, L., S. Sammartino, I. Barbancho, V. Gómez, and A. Oliver | +2010 | +Optical music recognition for scores written in white mensural notation | +EURASIP Journal on Image and Video Processing 2009 | +
| Thorud, E. | +1988 | +Analyse av notebilder (in norwegian) | +Institute of Informatics, Oslo, Norway. | +
| Tojo, A., and H. Aoyama | +1982 | +Automatic recognition of music score | +Sixth International Conference on Pattern Recognition 1223. | +
| Tonnesland, S. | +1986 | +Symfoni: System for note coding (in norwegian) | +Institute of Informatics, Oslo, Norway. | +
| Toyama, F., K. Shoji, and J. Miyamichi | +2006 | +Symbol recognition of printed piano scores with touching symbols | +Proceedings of the 18th International Conference on Pattern Recognition, at Hong Kong. 480–83. | +
| Vieira, P., and J. C. Pinto | +2001 | +Recognition of musical symbols in ancient manuscripts | +Proceedings of the International Conference on Image Processing, at Thessaloniki, Greece. 38–41. | +
| Vrist, S. | +2009 | +Optical music recognition for structural information from high-quality scanned music | +Candidate diss., University of Copenhagen. | +
| Watkins, G. | +1994 | +A fuzzy syntactic approach to recognising hand-written music | +Proceedings of the International Computer Music Conference 297-302. | +
| Wei, L., Q. Salih, and H. Hock | +2008 | +Optical tablature recognition (OT) system: Using Fourier descriptors as a recognition tool | +Proceedings of the International Conference on Audio, Language and Image Processing, at Shanghai, China. 1532–39. | +
| Wijaya, K., and D. Bainbridge | +1999 | +Staff line restoration | +Seventh International Conference on Image Processing and Its Applications 2 760-64. | +
| Wilk, R. | +1995 | +Converting graphic musical data to a machine playable form | +MSc diss., McGill University. | +
| Wittlich, G. | +1973 | +Project score | +Computational Musicology Newsletter 1 (1): 6. | +
| Wittlich, G., D. Byrd, and R. Nerheim | +1978 | +A system for interactive encoding of music scores under computer control | +Computers and the Humanities 12 (4): 309-19. | +
| Wittlich, G. E. | +1974 | +Non-physics measurements on the pepr system: Seismograms and music scores | ++ |
| Wolman, J., J. Choi, S. Asgharzadeh, and J. Kahana | +1992 | +Recognition of handwritten music notation | +Proceedings of the International Computer Music Conference 125-27. | +
| Wright, D. J. | +1994 | +Optical music recognition: A deterministic, object-oriented approach | +MSc diss., University of Victoria. | +
| Yadid-Pecht, O., E. Brutman, L. Dvir, M. Gerner, and U. Shimony | +1992 | +Ramit: Neural network for recognition of musical notes | +Proceedings of the International Computer Music Conference 128-31. | +
| Yadid-Pecht, O., M. Gerner, L. Dvir, E. Brutman, and U. Shimony | +1996 | +Recognition of handwritten musical notes by a modified neocognitron | +Machine Vision and Applications 9 (2): 65-72. | +
| Yin, F., G. Qingshi, and Z. Xiang | +1989 | +Principle on designing the music reading system (in chinese) | +Mini-Micro Systems 10 (12): 1-10. | +
+
+
Redirecting…
+ Click here if you are not redirected. + \ No newline at end of file diff --git a/research/omr/search_the_liber_usualis/index.html b/research/omr/search_the_liber_usualis/index.html new file mode 100644 index 00000000..4ad84889 --- /dev/null +++ b/research/omr/search_the_liber_usualis/index.html @@ -0,0 +1,116 @@ + + + + + + + + + + + + + +Search the Liber Usualis
+ +The Liber Usualis is a valuable resource for musical scholars. As a compendium of the most common chants used by the Catholic Church, it is useful for identifying the origins of chants used in polyphonic compositions.
+Using Optical Music Recognition and Optical Text Recognition, we have processed a scanned version of the Liber and made its contents searchable. This is a proof-of-concept demonstration for the larger task of providing search capabilities for all digitized musical works.
+The search interface is available online.
+This work was done as part of the SIMSSA project.
+
+
Searching Help
+We think that this demonstration will be useful for chant and musical scholars, so we have made it available online. Our current interface provides the following methods of content search:
+-
+
- Neume names: Search by sequences of neume names, e.g., “torculus torculus punctum scandicus” +
- Strict pitch sequence: Untransposed pitch sequences, e.g., “edcdeee”, “fgagfde”, “cbcbcbc”. +
- Transposed pitch sequence: Same as strict, but will match pitch sequences diatonically. +
- Contour: The “Parsons code”: u(p), d(own), and r(epeat), e.g., “uuddrrd”. +
- Intervals: Number of semitones +/-, e.g., “+2 +2 +3 -1 -1 +2”. +
- Text: OCR’ed text results, e.g., “alleluia”, “pastor”. Note: The OCR results are very poor. +
Search results will be highlighted on the original page images below the search box. You can use the “next” and “previous” buttons to step through the results.
+The current search supports sequences up to a length of 10 for all musical queries. Note that this means that for the pitch sequences this is a length of 10, but for the contour and intervals it is a maximum length of 9.
++
+
The SALAMI Annotation Data
+ +This page contains the most up-to-date information about the SALAMI Annotation Data. All of the data here are free to download and use.
+Annotation Data
+Please visit our Github page for the most up-to-date version of the data. The annotations used to be offered here as versioned zipfiles, but were migrated to Github in 2015. Here is a list of versions:
+-
+
- Latest version (Github) +
- + SALAMI_data_v1.2 + +
- + SALAMI_data_v1.1 + +
- + SALAMI_data_v1.0 + +
Feature Data
+We have compiled features published by The Echo Nest for the SALAMI data. These features are estimated by The Echo Nest, and include tatum/beat/bar/section times, global features such as time signature, tempo, key and mode, and metadata. The metadata may be especially useful to researchers hoping to purchase the music.
+-
+
- + echonest_features.zip + +
If you would like to obtain other features for the music in SALAMI, just let us know and we can hopefully add it to this list. The features should be non-invertible, of course!
+Utilities
+There is a SALAMI section at the DDMAL GitHub page that contains some useful files. Among them:
+-
+
- A python script, written and donated by Oriol Nieto, to download all the SALAMI audio files that come from the Internet Archive. Provided without warranty, but works like a charm! +
- A parser, written in Ruby, that was used to generate the parsed annotations new to version 1.2 (as well as a shell script to run it on all the files). +
- A MATLAB function ‘annotation_getfile.m’ that reads annotation files into matrices. +
Hopefully you’ll find all these resources have enough comments that you can modify and adapt the code easily.
+All of these files are provided as is, without guarantee. They are separate from the official SALAMI release and thus are not public domain, but you have permission to use them. If you have any handy tools you’ve developed to manage the SALAMI data, you’re welcome to share here too! If enough resources accumulate, we’ll devote a separate page to them.
+More information about the annotations
+This data set contains about half of the total data we collected. For the benefit of the community, the other half will remain secret for now, though it may be used as a test set for MIREX. + We are dedicating this data to the public domain through this Creative Commons “license.” Follow the link for more information about the license, but, briefly put: this license, CC0, effectively frees users from all obligations regarding attribution, derivative works, and reuse. However, we kindly ask that when using the data you cite the ISMIR paper describing its creation. +
+++Jordan B. L. Smith, J. Ashley Burgoyne, Ichiro Fujinaga, David De Roure, and J. Stephen Downie. 2011. Design and creation of a large-scale database of structural annotations. In Proceedings of the International Society for Music Information Retrieval Conference, Miami, FL, 555–60.
+
Like any set of human-generated data, this data set contains some typos and other formatting errors, so please be aware. Updates to the database correcting these errors will follow; so will parsed versions of each file that separate the different layers of the annotations into different files.
+Information about the license, the data and more is contained in the ReadMe file that accompanies the data. A spreadsheet giving metadata about the annotations is also provided. You may also wish to read the Annotator’s Guide to better understand the annotation format. If you have any questions about the data, don’t hesitate to write to Jordan, the contact author on the ISMIR paper.
+Last, and certainly not least, we offer our thanks to the many annotators who toiled to create this database: Christa Emerson, David Adamcyk, Elizabeth Llewellyn, Meghan Goodchild, Michel Vallières, Mikaela Miller, Parker Bert, Rona Nadler, and Rémy Bélanger de Beauport. Without their hard work and dedication, this project would have been, well, a lot smaller. We also thank Andreas Ehmann, David Bretherton, Gabriel Vigliensoni, Jessica Thompson, Mert Bay, Reiko Yamada, and William Carroll, who each played a vital role in the execution of the project.
+We also acknowledge the financial support of a Digging into Data Challenge grant, the Social Sciences and Humanities Research Council of Canada, JISC, and the National Science Foundation.
+So please, go ahead and download the data! We look forward to seeing what comes next.
++
+
Redirecting…
+ Click here if you are not redirected. + diff --git a/research/salami/annotations/index.html b/research/salami/annotations/index.html new file mode 100644 index 00000000..d359719a --- /dev/null +++ b/research/salami/annotations/index.html @@ -0,0 +1,11 @@ + + + +Redirecting…
+ Click here if you are not redirected. + \ No newline at end of file diff --git a/research/salami/background/compliance/index.html b/research/salami/background/compliance/index.html new file mode 100644 index 00000000..d2d78a53 --- /dev/null +++ b/research/salami/background/compliance/index.html @@ -0,0 +1,107 @@ + + + + + + + + + + + + + +Compliance
+ +All of our software is written in the industry standard Java programming language. The communications between different components of SALAMI and NEMA are established using Webservices (REST, SOAP, etc.). The music structure will be expressed in W3C standard RDF (Resource Description Framework) [1] based on the Music Ontology (Raimond et al. 2007). [2] We will adopt linked data guidelines (linkeddata.org) to ensure that the data we publish is as reusable as possible. For provenance we will adopt the emerging Open Provenance Model. [3] We will comply with Open Archive Initiative [4] standards including the RDF-based Object Reuse and Exchange representation. The RDF data will be made available via SPARQL [5] endpoints. All these standards are already in use in partner projects and underpin NEMA to a significant extent.
++
-
+
- See http://www.w3.org/RDF/. +
- Music Ontology creator, Yves Raimond, sits on the SALAMI Advisory Board. See http://raimond.me.uk/pubs/Raimond-ISMIR2007-Submitted.pdf. +
- See http://openprovenance.org/. +
- See http://www.openarchives.org/. +
- See http://www.w3.org/TR/rdf-sparql-query/. +
+
+
Data Description
+ +The SALAMI audio data collections are both large and diverse. The range of styles, regions, and time periods included within the totality of these collections is breathtaking: A Capella to Zydeco, Appalachia to Zambia, and Medieval to Post-Modern.
+As Table 1 shows, the SALAMI audio collections are drawn from a range of sources. Each source collection has its unique attributes with regard to content, access and intellectual property issues. The Internet Archive [1] (IA) collection is by far the largest with ~18,000 hours of audio. IA’s substantial collection of live concert recordings (~66,000 pieces) is particularly exciting and represents a novel source for structural analysis. The DRAM [2] collection has a special focus on the folk, jazz, orchestral, and 20th-Century avant-garde musics of the United States. The IMIRSEL and McGill collections are those built up by Downie and Fujinaga respectively for their MIR, CM and MIREX evaluation experiments. The IMIRSEL collection has two subcollections of note. First, it has the collected works of 11 major “classical” composers: Bach, Beethoven, Brahms, Chopin, Dvorak, Handel, Hayden, Mendelssohn, Mozart, Schubert, and Vivaldi. Second, it has a subcollection of ~3,000 Latin dance pieces representing 10 different genres from Axé to Tango. The McGill collection has particular strengths in the variety of “world” musics it comprises.
+The raw audio files are encoded in a wide variety of audio formats ranging from low-quality MP3s to CD-quality 44.1 KHz, 16-bit wav files. Decoding these diverse formats is not an issue as the SALAMI team already has the necessary tools in hand. The underlying recording quality is another variable to be considered, however, as many recordings have been made outside of professional recordings studios using less-than-ideal equipment (for example, the IA live concert recordings). Thus, it will be part of the SALAMI project’s research work to study the effect of recording quality on the accuracy of the structural analyses performed.
+Table 1. The SALAMI Audio Data Collections (Values rounded for readability)
+| SOURCE COLLECTION | +SOURCE ACCESS TYPE | +TRACKS | +HOURS | +SIZE (TB) UNCOMPRESSED | +
|---|---|---|---|---|
| Internet Archive | +Open via Internet | +276,000 [3] | +18,333 | +11.00 | +
| DRAM | +Subscription via Internet | +8,000 | +2,300 | +1.38 | +
| IMIRSEL | +Closed (Stored locally) | +34,000 | +2,267 | +1.36 | +
| McGill | +Closed (Stored locally) | +32,000 | +2,133 | +1.28 | +
| Totals | ++ | 350,000 | +23,267 | +15.02 | +
Music data is famously problematic with regard to intellectual property issues. Because of the constant fear of litigation that could shut down any future music related research, the SALAMI team members have been, and will continue to be, absolutely scrupulous in their handling of the raw music audio data. We have obtained specific access and use permissions for analytic research from IA and DRAM (see Letters section). In fact, to better ensure communications with IA and DRAM, each have agreed to place of one of their leaders on the SALAMI Advisory Board. Because we need to be ever mindful of source bandwidth resources, we are arranging with DRAM to make a hard-drive direct copy of their data collection (funding for which is already budgeted within the NEMA grant). With regard to the IA collection, the current arrangement that we have worked out with our IA representative is an http-based “trickle” feed across their collections that will be conducted over Fall 2009. The IMIRSEL and McGill collections are owned outright by UIUC and McGill respectively so no special permission is required.
+It is important to stress here that neither this specific SALAMI project, nor the more general NEMA project, have any desire nor intention to deliver raw source audio files to the world. The model both projects have adopted is one which exploits the power of RDF and linked data whereby original source audio files will be uniquely identified using Uniform Resource Identifiers (URI). When a scholar makes use of one of structural analysis files, the file will contain the URI that will point to the location where the scholar can legally access the related source audio file. This model is also important for “goodwill.” In working with our source contributors, we want them to see some benefit from their efforts. Thus, when a scholar, student, or general user makes use of a structural file based upon an DRAM (or IA) recording, we acknowledge DRAM’s (or IA’s) contribution by making it clear where the source audio originated and directing them back to the contributor’s home so that the scholar or general user can be made aware of other potentially useful items in the contributing collections.
++
-
+
- + + +
- + + +
-
+
For feasibility reasons, the SALAMI project will be using only a subset of the enormous IA audio collection. IA informs us that the live music collection alone constitutes an astonishing 100,000 hours of music (see Letters section) which is obviously well beyond the scope of this current proposal.”
+
+
+
+
Environmental Scan
+ +Over the last decade, several approaches to automatically detect the structure of audio music data have been developed. One of the earliest papers on the subject was Foote (1999) who used mel-frequency cepstral coefficients (MFCC) as features and introduced the concept of similarity matrices. Logan and Chu (2000), who also used MFCC as features, experimented with hidden Markov models (HMM) and clustering methods to find the most repeating sections of 18 Beatles songs (see also Aucouturier and Sandler (2001) and Chai and Vercoe (2003)). Similarity matrices were also used by others such as Peeters et al. (2002). Chroma-based techniques were introduced by Bartch and Wakefield (2001) and used successfully by many others including Goto (2003) and Dannenberg and Hu (2002) who also described several general strategies for segmentation robust to small local tempo variations. Lu et al. (2004) concentrated on finding melodic similarity rather than timbre similarity thus making it robust to change in instrumentation. They also tried to find the complete overall structure of the music rather than just finding verse or chorus. A recent paper by Paulus and Klapuri (2008) improves the analysis by concentrating on extracting various audio features, such as MFCC and chroma vectors, based on the position of the beats.
+As one can see, there are many structural analysis algorithms available. Because these aforementioned algorithms were originally developed and tested primarily on Western popular music (mostly Beatles songs), e.g., Levy et al. (2006) and Maddage (2006), SALAMI will need to systematically evaluate the effectiveness these techniques to ascertain their performance characteristics on our much more diverse music collections. SALAMI’s evaluation of these techniques will contribute to the MIR and CM communities’ knowledge about which algorithms are best suited for which particular types of music.
+As mentioned previously, SALAMI will be using and enhancing several open-source visualization software systems, namely, Variations Timeliner, Sonic Visualiser, and Audacity. Both Sonic Visualiser and Audacity have vibrant development communities that have created some rudimentary mechanisms to overlay simple structural markers over the music audio. However, neither system currently provides the sophisticated visualisations required by SALAMI. That is, they do not have mechanisms that allow for the visualisation of structural hierarchies nor the simultaneous overlaying of multiple structural views based on different musical facets (e.g., harmony, timbre, rhythm, etc.). While the Variations Timeliner does provide hierarchical visualisations, it also currently lacks the ability to overlay multiple structural views.
+There are many suites of low-level feature extractors available, e.g., Marsyas, [1] Sonic Visualiser VAMP plug-ins, and CLAM. [2] MIREX has shown that they all provide similar functionality. SALAMI has chosen jAudio [3] as its feature extractor because it is one of the most comprehensive, it is extensible, and it has already been implemented as part of the NEMA architecture.
++
-
+
- + + +
- + + +
-
+
See http://sourceforge.net/projects/jaudio/. See Appendix A: Fig. 6 for a screenshot.
+
+
+
+
History and Resources
+ +The SALAMI project will be the first large-scale analytic application based on the NEMA (Networked Environment for Music Analysis) project. NEMA received its initial Phase I funding ($1.2M) from the Andrew W. Mellon Foundation in January 2008. Phase I is funded until 31 December 2010. NEMA is a multinational, multidisciplinary, cyberinfrastructure project for computational music analysis. [1] NEMA is a collaboration of six top laboratories in MIR and CM research: Goldsmith, University of London (Tim Crawford), McGill University, CA (Ichiro Fujinaga), Queen Mary, University of London, UK (Mark Sandler), University of Illinois at Urbana-Champaign, US (J. Stephen Downie), University of Southampton, UK (David De Roure), and University of Waikato, NZ (David Bainbridge).
+The NEMA team is creating an open and extensible Webservice-based resource framework that facilitates the integration of music data and analytic/evaluative tools that can be used by the global MIR and CM research and education communities on a location- and time-independent basis. It is important to note here that NEMA is an infrastructure project, not an analytic project. Mellon is funding NEMA to develop and build out the underlying Webservices that will assist scholars, researchers, and students in their musicological studies. The SALAMI project proposed here is an analytic project that will, of course, build upon and exploit the NEMA infrastructure. It is as an analytic project that the SALAMI team is seeking funding from the DID Challenge. We further hope that SALAMI’s success will be instrumental in the NEMA project acquiring its Phase II funding from Mellon in 2011.
+The NEMA project itself is based in part on previously developed technologies by the NEMA researchers including M2K (Music-to-Knowledge) [2] (Downie et al. 2005), Maestro [3] (De Roure et al. 2005), OMEN (On-demand Metadata Extraction Network) (McEnnis et al. 2006), and jMIR (McKay and Fujinaga 2007). These pre-existing technologies will be used as part of the SALAMI analytic work.
+The NEMA framework is built upon a data flow execution system called Meandre (see Sec. F) [4], which is the product of another ongoing Mellon-funded project being conducted at UIUC called, SEASR (Software Environment for Advance Scholarly Research). [5] Since SALAMI will be using the SEASR/Meandre framework as its computational infrastructure, we will be in constant contact with the NCSA’s Automated Learning Group’s SEASR/Meandre development team for software support and advice. [6] We are eager to work with them to optimize SALAMI’s data management and I/O issues. We will also be working with the SEASR/Meandre team as we develop the Webservice data delivery and processing systems promised in Sections C.1, C.3 and C.5.
+Each of SALAMI’s three laboratories is well equipped with multi-terabyte storage servers and several high-powered computational clusters upon which the team will develop the analytic software and run preliminary experiments (IMIRSEL: 96 cores, 30TB disk space, 376GB RAM; McGill: 36 cores, 14TB disk space, 76GB RAM; Southampton: ~1000 cores, 30TB disk space, ~900GB RAM).
+In June 2009, the SALAMI team was awarded a grant of 250,000 normalized hours of supercomputing time at NCSA (National Center for Supercomputing Applications). The NCSA proposal was, in fact, based upon the SALAMI DID 15 March 2009 Letter of Intent. SALAMI’s extraordinary good fortune in acquiring this supercomputing opportunity will ensure that SALAMI has enough computing resources to perform: a) the testing and fine-tuning of our candidate structural analysis algorithms; b) our finalized structural analysis data creation runs; and, c), our exemplar experiments. [7]
++
-
+
-
+
See Appendix A: Fig. 4 for overall infrastructure of NEMA.
+
+ - + + +
- + + +
-
+
See http://www.seasr.org/meandre/. See Appendix A: Fig.5 for an example of Meandre Workbench.
+
+ -
+
See http://seasr.org/.
+
+ -
+
Michael Welge, the NCSA Co-PI of SEASR, sits on the SALAMI Advisory Board.
+
+ -
+
Dr. Alan Craig, liaison for the NCSA computation time awards, sits on the SALAMI Advisory Board.
+
+
+
+
About SALAMI
+ +Table of Contents
+-
+
- Introduction and Background +
- A. Compliance with Standards +
- B. Partnership +
- C. Research Products and Uses +
- D. Data Description +
- E. History and Resources +
- F. Technology and Work Plan +
- G. Environmental Scan +
Introduction and Background
+SALAMI (Structural Analysis of Large Amounts of Music Information) is an innovative and ambitious computational musicology project.
+To date, musical analysis has been conducted by individuals and on a small scale. Our computational approach, combined with the huge volume of data now available from such source as the Internet Archive, will: a) deliver a very substantive corpus of musical analyses in a common framework for use by music scholars, students and beyond; and, b) establish a methodology and tooling which will enable others to add to this in the future and to broaden the application of the techniques we establish. A resource of SALAMI’s magnitude empowers musicologists to approach their work in a new and different way, starting with the data, and to ask research questions that have not been possible before.
+Structural analysis of music (or formal analysis) is one of the most fundamental analyses performed by music scholars (music theorists, musicologists, ethnomusicologists, etc.). The formal analysis usually precedes any other types of analysis because it provides the overall view of the piece. The main goal of formal analysis is to find similar sections within a piece of music and label these sections, such as ABA and ABCB’A. With further analysis, these sections can be marked with predefined labels such as Intro, Verse, Bridge, Chorus, Verse, and Outro (popular music) or Introduction, Exposition, Development, Recapitulation, and Coda (sonata form).
+Thus, the formal analysis is potentially useful in classifying different genres of music and it can be used to compare different styles of composition within a composer’s works or between composers. It can also be used to understand historical influences over time and location. By analyzing large sets of music, new discoveries can be made about these questions. Another important aspect of formal analysis is that it can be applied to almost any music, anything from Russian folk songs to Byzantine music to Miles Davis or to electronic music. Furthermore, there are many musics in the world where other types of analysis, such as harmonic, motivic, or rhythmic, have little meaning.
+Variations 2 Audio Timeliner from Indiana University is an audio annotation and analysis tool for creating and labeling bubble diagrams. These diagrams can be used to navigate music or other audio for detailed study.
+
Traditionally, structural analysis of music has been done manually, with very few exceptions (e.g., Huron 2001, Järvinen et al. 1999). This is a time-consuming task and only a small sample of music has been analysed. Moreover, since there are no standard formats for describing the structure (see various examples of traditional analysis in Appendix B), let alone a standard machine-readable file format, there is no simple way to compare large amount of music based upon its various internal structures. + Even within the field of Music Information Retrieval (MIR) research, with its evolving computational approach to music analysis, the majority of structural analysis work has been performed on a few hundred pieces, at best. SALAMI will be analysing ~350,000 pieces (~23,000 hours). The algorithms chosen, modified and/or developed for use by SALAMI will be trained and evaluated using a set of ground-truth data based upon several thousand exemplars created by trained musicologists. This research paradigm is thus orders of magnitude greater than any previous research. + The range of different kinds of music that will be analysed will be of far larger variety than anything previously done. Most prior analytic research work has focused primarily on Western popular and “classical” music. Our vast dataset includes a wide variety of music from all over the world, from many time periods, and includes folk music, “classical” music, contemporary music, improvised music, and live music. + The ability to analyse music directly in the audio format is another important contribution of this project. In the past, most music structural analyses have been conducted using only the musical scores that were readily available, especially with European “classical” music. The new audio-based structural information created by SALAMI should offer novel perspectives to music research especially for ethnomusicologists where no scores exist for many of the music cultures. + Although there is much information to be gained from studying audio data, the technical expertise needed to analyse music in audio format has prevented most music researchers from dealing with the actual performance of the music. With the recent revolution in MIR and CM research, many new tools and algorithms to analyse and to visualise music audio have been developed, the most promising of which will be investigated, modified and then deployed by the SALAMI team. + For music scholars, having access to a large corpus of world music that is already analysed will be of great significance, providing new perspectives and insights previously unavailable. They will be able to study the popularity or decline of various forms over time and geographical space as well as discovering evolutionary and revolutionary changes in musical forms. SALAMI will be providing actual research examples (along with web-based facilities to conduct and/or replicate the research) that demonstrate how these types of questions can be investigated based on the resultant analytical data. By using uniform methods to analyze a large quantity of music from all over the world SALAMI will empower musicologists and interested music enthusiasts to compare, contrast and explore music structures in ways only limited by their imaginations. +
++
+
Partnership
+ +The three partners in the SALAMI project, Fujinaga (Canada), Downie (USA) and De Roure (UK) each contribute their unique strengths to the project’s design, execution, and ultimate success. In the fields of MIR and CM research, Downie and Fujinaga are both world leaders who have published close to one hundred papers in total on these subjects. They both have strong backgrounds in music theory: Downie’s undergraduate major was Music Theory and Composition and Fujinaga holds a Bachelor’s, a Master’s and a PhD in music. De Roure is also a musician who has published music research papers and supervised CM and MIR PhDs. Downie is uniquely familiar with the wide range of state-of-the-art MIR algorithms as he is the founder and director of the annual Music Information Retrieval Evaluation eXchange (MIREX) [1] which, since 2005, has evaluated 468 MIR algorithm runs (Downie 2008). Fujinaga was responsible for the idea of OMEN (On-demand Metadata Extraction Network), which became a basis for the NEMA [2] project. Another crucial component of NEMA is jMIR (a suite of software for MIR research) developed by Fujinaga and his students. De Roure’s expertise on distributed information systems, distributed computing, standards, and software sustainability ensures a successful distributed infrastructure to deliver a project on this scale. All three are highly experienced research project leaders having managed million-dollar research grants as the PI within the last five years. All three are members of the NEMA team [3] and have every intention of sustaining their collaborative efforts for many years to come. This desire to continue our collaboration bodes well for the sustainability of SALAMI post-funding as the SALAMI team intends to make use of the SALAMI-developed data and tools to conduct further research and seek further funding. A brief biographical sketch for each SALAMI team member is provided below:
+Ichiro Fujinaga is an Associate Professor in the Music Technology Area at the Schulich School of Music at McGill University. He holds a BMus and a BSc (Mathematics) from the University of Alberta, and a MA in Music Theory, and a PhD in Music Technology from McGill University. In 2003–4, he was the Acting Director of the Centre for Interdisciplinary Research in Music Media and Technology (CIRMMT) at McGill. In 2002–3, he was the Chair of the Music Technology Area at the School of Music. He has been a long-term member of the International Society for Music Information Retrieval (ISMIR) steering committee.
+J. Stephen Downie is an Associate Professor at the Graduate School of Library and Information Science, University of Illinois at Urbana-Champaign. He is Director of the International Music Information Retrieval Systems Evaluation Laboratory (IMIRSEL). Downie was the PI on the Human Use of Music Information Retrieval Systems (HUMIRS) and the Music-to-Knowledge (M2K) music data-mining projects. He has been very active in the establishment of the MIR and Music Digital Library communities through his ongoing work with the ISMIR conferences as a founding member of the ISMIR steering committee. He is the founder and ongoing director of MIREX. He holds a BA (Music Theory and Composition), a MLIS, and a PhD in Library and Information Science, all earned at the University of Western Ontario.
+David De Roure is Professor of Computer Science in the School of Electronics and Computer Science at the University of Southampton, where he was a founding member of the Intelligence, Agents, Multimedia Group. His research interest is in the application of knowledge technologies and collaborative tools in e-Research. His leadership roles in the UK e-Science programme include the UK’s Open Middleware Infrastructure Institute and the multidisciplinary e-Research South. He pioneered the Semantic Grid initiative and leads the Semantic Grid Research Group in the Open Grid Forum, where he sits on the Grid Forum Steering Group. He is regarded as a thought-leader in Web and e-Research and is responsible for Web 2.0 and open science activities including the JISC-funded myExperiment collaborative environment for researchers sharing digital content, which uses both Web 2.0 and Semantic Web techniques. He is a member of the W3C Advisory Committee, is a Scientific Council member of the Web Science Research Initiative and has served on national committees including the JISC Committee for Support of Research and the Arts and Humanities Research Council e-Science committee. His research group holds an Arts and Humanities eScience project (musicSpace: Using and Evaluating e-Science Design Methods and Technologies to Improve Access to Heterogeneous Music Resources for Musicology) and several awards in the field of open repositories.
+-
+
- + + +
-
+
Networked Environment for Music Analysis. See Sections E and F for more details about NEMA and its role with this SALAMI project. See also http://www.music-ir.org/?q=nema/overview/ for an introduction to the NEMA project.
+
+ -
+
Downie is the PI, and Fujinaga is the Co-PI, of the NEMA project. De Roure is a key NEMA research partner.
+
+
+
+
Research Products and Uses
+ +The SALAMI project will generate five high-impact research products:
+-
+
-
+
A web-accessible collection of structural analysis files for ~350,000 pieces of music audio. Music scholars, MIR researchers, students, and the general public alike should find the results of our structural analyses useful and inspirational for their research and personal explorations since nothing of this magnitude has ever been done before. The analytical results will be available via user-friendly facilities (and programmatically via NEMA’s REST APIs, Webservices, and as ‘linked data’) that will allow searching and browsing by structural type, genre, period, composer, etc. The SALAMI system will also afford user-specified “subcollection” building for future, secondary analyses of the data. Because each musical piece will be analyzed using a variety of tools and algorithms, there will be multiple (many-to-one) structural “views” of the music, based upon, for example, a work’s harmonic, rhythmic, timbral, and/or temporal facets. Each of the views will be accompanied by provenance information that describes how the analysis came into being so that new audio data can be analyzed in a consistent manner. Our underlying data store will be based upon the Resource Description Framework (RDF), a modularised Music Ontology, and linked data models (see Sec. G) to ensure maximum interoperability with other Webservices and resources both within and beyond NEMA.
+
+ -
+
Interoperable file formats and ontology for music structure that can be used by a wide variety of visualization software and other applications. SALAMI will develop a standardized ontology for music structure from which will be derived the specific data models used in a variety of available open-source music visualization software packages (e.g., Sonic Visualiser [1], Audacity [2], Variations Timeliner [3], etc.), building on work already underway in the community. Thus, music scholars and the general public will be able to interact with structural data along with its source audio in hitherto unrealized ways. For example, users could go directly to specific sections of the music (e.g., chorus, recapitulation, or coda) that they are interested in and listen to them. Similarly, audio engineers could quickly move around while editing recordings, without manually labelling sections or relying on timing information. Because our work will include the creation of SALAMI VAMP “plug-ins” [4] that will allow Webservice communications between SALAMI’s vast store of structural analysis files and the visualization software, scholars creating thematic indices or incipits for large collections of music can use the SALAMI data and its plugins to simplify their tasks.
+
+ -
+
Open source structural analysis software/services well trained on a large ground-truth dataset. The SALAMI analytic algorithms will be trained and tested against the structural ground-truth dataset to be created at McGill’s Schulich School of Music. This will help ensure the validity of the resulting structural analysis files. The analytic software being developed will be made available for interactive use as a part of the larger NEMA Webservice infrastructure. However, because the SALAMI software code will be released under an open-source regime and also made available via the NEMA code repository, other researchers can take the code and develop their own stand-alone applications as they see fit. The SALAMI partners have a track record in developing and sustaining community software.
+
+ -
+
An open source ground-truth structural dataset consisting of thousands of pieces, spanning a variety of musics, and verified by highly trained musicians. Because of the cost involved in creating high-quality ground-truth datasets, such datasets are extremely valuable to the research community for training and evaluating machine-learning algorithms. The ground-truth dataset that we will be creating at McGill to build and test our SALAMI algorithms will be made available for use by other MIR and CM researchers so they can create or improve their own structural analysis software. The CM researchers will also be able to add new ground truth using the tools and ontologies that we will develop.
+
+ -
+
Sample exemplar experiments to demonstrate the potential use of the analytic data. For the SALAMI project to be truly useful, it must be more than the creation and collection of a vast store of individual structural analysis files. SALAMI must demonstrate to the world some of the interesting analyses that can be performed so as to inspire others to explore this unique resource. To this end, we will conduct several exemplar experiments/explorations that ask questions about large subcollections of the SALAMI collection. We could, for example, perform some large-scale clustering analyses to explore for geographic or time period tendencies in the data. We could also undertake some supervised learning experiments to see whether structural information is useful in various classification tasks (e.g., genre, mood, composer, etc.). It is our intention to encapsulate our exemplar experiments as Meandre data flows (see Secs. E and F) and present them as NEMA Webservices so others might replicate or modify our examples. We also plan to disseminate the actual findings of our experiments in such venues as ISMIR (International Conferences on Music Information Retrieval), Digital Humanities, Computing in Musicology, etc. to build up interest in the possibilities afforded by the SALAMI data and services.
+
+
+
-
+
-
+
See http://www.sonicvisualiser.org/. Sonic Visualiser is being developed and supported by NEMA partner (see Sec. E), Centre for Digital Music, Queen Mary, University of London. See Appendix A: Fig. 2 for a screenshot.
+
+ -
+
See http://audacity.sourceforge.net/. See Appendix A: Fig. 3 for a screenshot.
+
+ -
+
See http://variations.sourceforge.net/vat/. Prof. Eric Isaacson, a Variations2 Project Co-PI and a developer of the Variations Timeliner, sits on the SALAMI Advisory Board.
+
+ - + + +
+
+
Technology and Work Plan
+ +SALAMI’s research and development will be conducted using the NEMA infrastructure. NEMA is currently being constructed and will be well tested by the end of 2009. It will, therefore, be ready to process the large set of data for the SALAMI project. SALAMI will be built and run within the NEMA technological framework principally because we are convinced of the benefits provided by its underlying Meandre dataflow engine. These benefits include:
+-
+
- Meandre code (along with the NEMA code) is open source allowing for unlimited community development and participation; +
- Meandre is written in Java for platform independence; +
- Meandre is designed to simplify the running of large-scale data mining/analysis applications on high-performance computing clusters; +
- Meandre itself is constructed as a Webservice framework which makes the creation of globally available Webservice resources based upon Meandre flow executions quite simple; +
- Meandre versions of NEMA’s M2K and jMIR music processing and machine learning applications have already been developed and successfully tested; and, +
- Meandre itself stores the operational data of each session run as RDF information, making it easier to acquire and integrate the provenance data needed for SALAMI’s data and computational Webservices. +
In order for SALAMI to properly evaluate candidate structural analysis algorithms and to train the machine-learning components of the algorithms, a large set of high-quality ground truth is required. McGill will be hiring music graduate students to create the ground truth data set using the open-source Sonic Visualiser, which allows quick labelling of audio data. We will be working with our NEMA partner, Queen Mary, who developed the software, to allow hierarchical labelling. Over the course of developing the structural analysis ontology we will also be working on translators to be used by the various visualization software packages mentioned previously.
+After selecting the set of structural analysis algorithms which will be use to create the SALAMI analytical output, we will consult with the CM community to design our set of exemplar experiments that best demonstrate the potential of the SALAMI data and services.
+To summarize, our development methodology (see Table 2 for the work plan) is based on the established practice of the partner groups and the NEMA project. We are committed to open-source community development, facilitated by adoption of open standards and publication of specifications. In addition to source code we will follow an open process to develop the modularized ontology. We will work closely with our end users and Advisory Board at all times to ensure successful codesign based on key use cases and user groups, and we will involve all stakeholders in the governance of the development process. We are uniquely positioned to build significantly on the experience of the UK’s Open Middleware Infrastructure Institute and the JISC-funded ENGAGE programmme, a partnership with the UK’s NGS (National Grid Service).
+Table 2. Work Plan
+| Phases | +UIUC | +McGill | +Southampton | +
|---|---|---|---|
| I. 2010/1-3 | +Complete survey of structural analysis (SA) algorithms | +Refinement of the annotation software | +Design ontology for music structure | +
| II. 2010/4-6 | +Implement various algorithms in Meandre | +Selection of pieces for ground truth | +Implement the ontology output interface to SA software | +
| III. 2010/7-9 | +Beta-testing of SA software and initial training of software | +Creation of ground truth dataset | +Survey of visualization software (VS) and their file formats | +
| IV. 2010/10-12 | +Training and main run of the SA software | +Verification of the analysis by SA software | +Implement translation between the ontology and the file formats | +
| V. 2011/1-3 | +Analysis of the SA software performance | +Conduct sample experiments | +Finalize the Webservice framework | +
+
+
Structural Analysis of Large Amounts of Music Information (SALAMI)
+ +SALAMI is an innovative and ambitious computational musicology project. To date, musical analysis has been conducted by individuals and on a small scale. Our computational approach, combined with the huge volume of data now available from such source as the Internet Archive, will: a) deliver a very substantive corpus of musical analyses in a common framework for use by music scholars, students and beyond; and, b) establish a methodology and tooling which will enable others to add to this in the future and to broaden the application of the techniques we establish. A resource of SALAMI’s magnitude empowers musicologists to approach their work in a new and different way, starting with the data, and to ask research questions that have not been possible before.
+There are two resources available on this site:
+-
+
- Annotation data: Visit this page to access the annotation data and to learn about how it was collected. +
- Blog: Here you’ll find updates about SALAMI features and tools. The older posts recount the data collection process. +
- Background: The background page gives an overview of the SALAMI project. It consists mainly of the proposal for the Digging Into Data grant that SALAMI was awarded in 2009. +
Through a Digging Into Data grant, this research was supported by the Social Sciences and Humanities Research Council of Canada, by the National Science Foundation, and by JISC.
++
+
Discrete Fourier Transform
+ +Implementation of the Discrete Fourier Transform in Python, for reference.
+from numpy import *
+
+def dft(x):
+ """
+ My implementation of the discrete fourier transform
+ """
+ N = shape(x)[1]
+ print "x", shape(x)
+ k = arange(0, N)
+ k.shape = N, 1
+ n = arange(0, N)
+ W = zeros((N, N), complex)
+ # don't forget to make it a complex number array!
+ for n in range(N):
+ for k in range(N):
+ W[n,k] = exp(-1j * n * k * 2.0 * pi/N)
+
+ X = asmatrix(x) * asmatrix(W)
+ return X
+
+ +
+
Resources
+ +Links
+-
+
- DDMAL YouTube Channel +
- MusicTech Wiki (requires VPN) +
- Logos (for posters, presentations, etc.)
+
+
+
Code Snippets
+Random snippets of code that you might find useful.
+-
+
- Compress a directory of wave files to M4A (Python, OS X) +
- Discrete Fourier Transform (Python) +
+
+
Logos
+ +
+
+ 
+
+ 
+
+
+
+ 
+
+
+
+ 
+
+ 
+
+ 
+
+
+
+
+
Compress a Directory of Wave files to M4A
+ +Takes a directory of wave files and compresses them to MPEG-4 Audio files.
+Usage:
+-
+
- python compress.py -d directory_of_wave_files -o output_directory +
- Requires afconvert, , a utility included with the OS X Developer Tools +
- /usr/local/bin/afconvert +
from optparse import OptionParser
+import os,sys,shutil
+import tempfile
+def main(dir, outdir):
+ temp_dir = tempfile.mkdtemp()
+ in_dir = os.walk(dir)
+ for d in in_dir:
+ # print d
+ out_dirname = (os.path.basename(d[0]).replace("/", '-'))
+ try:
+ mkd = os.mkdir(os.path.join(temp_dir, out_dirname))
+ print "Out: ", out_dirname, " "
+ except OSError:
+ print "Directory already exists. "
+ # d is the directory object, files are a tuple at index 2
+ wavfiles = [f for f in d[2] if os.path.splitext(f)[-1] == '.wav']
+ for f in wavfiles:
+ outfile = "%s.m4a" % (os.path.splitext(f)[0],)
+ outfile = os.path.abspath(os.path.join(temp_dir, out_dirname, outfile))
+ print "Outfile: ", outfile
+ infile = "%s" % (os.path.join(d[0], f))
+ print "Infile: ", infile
+ cmd = '/usr/local/bin/afconvert -f m4af -d aac -b 256000 "%s" "%s"' % (infile, outfile)
+ print "Compressing... ", cmd
+ os.system(cmd)
+ print "Outpath: ", os.path.abspath(os.path.join(outdir, out_dirname))
+ shutil.move(temp_dir, os.path.abspath(outdir))
+ return True
+
+if __name__ == "__main__":
+ parser = OptionParser()
+ parser.add_option("-d", "--dir", help="The Directory to parse", action="store", type="string", dest="directory")
+ parser.add_option("-o", "--output", help="The Director to output the files", action="store", type="string", dest="output")
+ (options,args) = parser.parse_args()
+ main(os.path.abspath(options.directory), os.path.abspath(options.output))
+
+ +
+
Libmei
+ +LibMEI is a C++ library for reading and writing MEI files.
+
+
Download
+LibMEI is currently in Beta. Documentation and the latest source code is on our GitHub repository.
+
+
LibMEI Documentation
+We have auto-generated Doxygen documentation.
+
+
Compilation & usage
+We provide an XCode project for OSX and a cmake script for Linux.
+To build on Linux, simply
+ mkdir build; cd build
+ cmake ..
+ make
+ sudo make install
+
+ To use libmei, include
+ #include <mei/mei.h>
+
+ More detailed information about compilation and use is available at the libmei wiki: https://github.com/DDMAL/libmei/wiki
+
+
Contributions
+We welcome bug reports, feature requests, and patches to the libmei project page: https://github.com/DDMAL/libmei
+
+
Authors
+-
+
- Andrew Hankinson +
- Alastair Porter +
- Greg Burlet +
- Jamie Klassen +
- Mahtab Ghamsari +
Development of LibMEI was made available with funding from the Social Sciences and Humanities Research Council of Canada.
+
+
License
+LibMEI is released under the MIT license.
++
+
Software
+ +Our GitHub Page is the best place to follow our software development.
+Some projects also live at ELVIS Project.
+Some current and past projects include:
+ ++
+
Software
+ +Our GitHub Page is the best place to follow our software development.
+Some projects also live at ELVIS Project.
+Some current and past projects include:
+ ++
+

+ 

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