diff --git a/dashboard/src/app/album/album.component.css b/dashboard/src/app/album/album.component.css index d57e880..e69de29 100644 --- a/dashboard/src/app/album/album.component.css +++ b/dashboard/src/app/album/album.component.css @@ -1,37 +0,0 @@ -/* Thank to https://codyhouse.co/gem/back-to-top/ */ - -.btn-top { - display: inline-block; - height: 40px; - width: 40px; - position: fixed; - bottom: 20px; - right: 20px; - box-shadow: 0 0 10px rgba(0, 0, 0, 0.05); - /* image replacement properties */ - /*overflow: hidden;*/ - /*text-indent: 100%;*/ - /*white-space: nowrap;*/ - /*background: rgba(232, 98, 86, 0.8);*/ - /*background: #ff9000;*/ - visibility: hidden; - opacity: 0; - -webkit-transition: opacity .3s 0s, visibility 0s .3s; - -moz-transition: opacity .3s 0s, visibility 0s .3s; - transition: opacity .3s 0s, visibility 0s .3s; -} -.btn-top.btn-top-is-visible, .no-touch .btn-top:hover { - -webkit-transition: opacity .3s 0s, visibility 0s 0s; - -moz-transition: opacity .3s 0s, visibility 0s 0s; - transition: opacity .3s 0s, visibility 0s 0s; -} -.btn-top.btn-top-is-visible { - /* the button becomes visible */ - visibility: visible; - opacity: 1; -} - -.btn-sort { - bottom: 20px; - right: 70px; -} diff --git a/dashboard/src/app/album/album.component.html b/dashboard/src/app/album/album.component.html index 0f921d1..9a47c61 100644 --- a/dashboard/src/app/album/album.component.html +++ b/dashboard/src/app/album/album.component.html @@ -84,38 +84,9 @@ - - - - - - - - - - - - - - - - - - - - - - - -
NameArtistAlbumAlbum ArtistPlay CountGenre
{{song['Track Number'] ? (("0" + song['Track Number']).slice(-2)) : "--"}}{{song.Name}}{{song.Artist}}{{song.Album}}{{song['Album Artist']}}{{song['Play Count']}}{{song.Genre}}
+ - - - diff --git a/dashboard/src/app/album/album.component.ts b/dashboard/src/app/album/album.component.ts index 6ab6de2..44baef1 100644 --- a/dashboard/src/app/album/album.component.ts +++ b/dashboard/src/app/album/album.component.ts @@ -16,8 +16,7 @@ export class AlbumComponent implements OnInit { albumName = ''; songs: Array = []; album: Album = new Album(); // If album not found, will be replaced by 'undefined' - moreDataAvailable = false; - atBottom = false; + moreDataAvailable = true; constructor( private elsService: ElsService, @@ -35,6 +34,10 @@ export class AlbumComponent implements OnInit { } loadSongs(): void { + if (!this.moreDataAvailable) { + return; + } + this.elsService.getAlbumSongs(this.albumName, this.songs.length).subscribe( data => { this.moreDataAvailable = data.length === ElsService.DEFAULT_SIZE; @@ -51,30 +54,4 @@ export class AlbumComponent implements OnInit { } ); } - - scrollTop(): void { - window.scrollTo(0, 0); - } - - /** - * Handle scroll: - * - load data if at bottom of screen (if needed) - * - hide/show "go to top" button - * - * @param event scroll event - */ - onScroll(event: any) { - if (this.moreDataAvailable && - (window.innerHeight + window.scrollY) >= document.body.offsetHeight) { - this.loadSongs(); - } - - if (window.scrollY > window.innerHeight) { - this.atBottom = true; - } - - if (window.scrollY === 0) { - this.atBottom = false; - } - } } diff --git a/dashboard/src/app/app.module.ts b/dashboard/src/app/app.module.ts index 1991c95..fdde58a 100644 --- a/dashboard/src/app/app.module.ts +++ b/dashboard/src/app/app.module.ts @@ -7,6 +7,7 @@ import { DashboardComponent } from './dashboard.component'; import { AlbumComponent } from './album/album.component'; import { ArtistComponent } from './artist/artist.component'; import { GenreComponent } from './genre/genre.component'; +import { SongTableComponent } from './song-table/song-table.component'; import { ElsService } from './els.service'; @@ -28,6 +29,7 @@ import { SortByPipe } from './sort-by.pipe'; AlbumComponent, ArtistComponent, GenreComponent, + SongTableComponent, ConvertMsPipe, ConvertMoreExactPipe, SortByPipe diff --git a/dashboard/src/app/artist/artist.component.css b/dashboard/src/app/artist/artist.component.css index 363bc8b..e69de29 100644 --- a/dashboard/src/app/artist/artist.component.css +++ b/dashboard/src/app/artist/artist.component.css @@ -1,70 +0,0 @@ -/* Vertical align for all tables */ -.table > tbody > tr > td { - vertical-align: middle; -} - -/* Rating star */ -.star { - color:rgb(38, 135, 251); -} -.table tbody > tr > td.star { - white-space: nowrap; -} - -.heart { - color: rgb(251, 18, 79); - animation: pulse 1s ease infinite -} - -@keyframes pulse { - 0% { transform: scale(1); } - 50% { transform: scale(1.3); } - 100% { transform: scale(1); } -} - -/* A class to just have an icon on the right of the table for heart */ -.table tbody > tr > td.loved { - border: 0px; - background-color: white; - margin-left: 5px; -} - -/* -https://css-tricks.com/css-content/ -https://css-tricks.com/using-svg/ -https://codepen.io/tigt/post/optimizing-svgs-in-data-uris -https://www.base64encode.org/ -*/ -/* TODO Refactor with an "icon" class (like glyphicon class) */ -.signal:before { - display: inline-block; - width: 30px; - height: 30px; - margin-right: 5px; - content: ""; - background-size: 100%; -} - -.signal-0:before { - background: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGRhdGEtbmFtZT0iTGF5ZXIgMSIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHg9IjBweCIgeT0iMHB4Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6bm9uZTt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPndpZmkyMDwvdGl0bGU+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNOTQuNjQsMzM3LjA5Yy0wLjItLjE5LTEtMC41MS0yLjgxLTAuNDctNC43OS4xLTkuNDQsMC4xMS0xMy4zNSwwLjFsLTUuNCwwcS03Ljg2LDAtMTUuNzMsMGwtNS4zNCwwYy0zLjkyLDAtOC41OCwwLTEzLjM4LS4xM0gzOC4yNEE0LjEsNC4xLDAsMCwwLDM2LDMzN3MtMC41MS41My0uNDgsM2MwLjE5LDE4LjUuMTksMzUuNjIsMCw1Mi4zNCwwLDEuODUuMjksMi44NCwwLjU3LDMuMTJhNC4zMyw0LjMzLDAsMCwwLDIuNjIuNTNIOTEuNzRhNC41Niw0LjU2LDAsMCwwLDIuODMtLjYsMy43LDMuNywwLDAsMCwuNDktMi4zMWMtMC4wNS0xOC44NCwwLTM3Ljc0LDAtNTMuNzVBMy43NywzLjc3LDAsMCwwLDk0LjY0LDMzNy4wOVoiPjwvcGF0aD48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik00NzUuNzYsMTE3LjY2Yy0wLjExLS4xMy0wLjkzLTAuNzctNi4yMi0wLjc4LTcuNjQsMC0xNS4zOS0uMTUtMjIuODktMC4yOS04LjE5LS4xNS0xNi42NS0wLjMxLTI1LTAuMjktMy42MSwwLTQuODQuMjYtNS4yNiwwLjQ0LTAuMTMuMzItLjQsMS4zNC0wLjQsNC4zN3EwLDU1LjE3LDAsMTEwLjI4YzAsNTIuMzcuMDUsMTA2LjUyLDAsMTU5LjgyLDAsMy4wOC42LDQsLjg2LDQuMjZzMS4xNCwwLjgyLDQuMDguNzZDNDMyLjI4LDM5Niw0NDMuNywzOTYsNDU0Ljc0LDM5NmM0LjI2LDAsOC41MiwwLDEyLjc4LDBoMGMxLjg1LDAsMy40NS4wOSw0Ljg0LDAuMTNzMi44NiwwLjEsMy43OSwwYzAuMTgtMS40MiwwLTQuMTMsMC02LjIzLDAtMzAuOTItLjE3LTYwLjY0LTAuMTctOTAuODhWMjU2aDAuNVYyMjUuNDFjMC0zMy40MywwLTY3Ljc2LDAtMTAwLjU2QzQ3Ni40OCwxMjMuMjksNDc2LjQ4LDExOC41MSw0NzUuNzYsMTE3LjY2WiI+PC9wYXRoPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTM4MC4xNiwxNzIuMzFjLTAuNTItLjUxLTEuODgtMC43OC0zLjc4LTAuNzUtMTEuMTEuMTktMjIuMzksMC4xNi0zMy4yOSwwLjEyLTUuMzYsMC0xMC43MiwwLTE2LjA3LDAtNS42OCwwLTUuNjgsMC01LjY5LDcuNzYsMCwyNS43NSwwLDUyLjI3LDAsNzguNzFWMjgzbDAuMDYsNC41YzAsOS4yOSwwLDE4LjQxLDAsMjcuNDUsMCwyNi4zNywwLDUxLjI3LS4xMSw3Ny44NWE4LjgsOC44LDAsMCwwLC4zMywzLjE5LDEwLjIsMTAuMiwwLDAsMCwzLjgzLjM0bDYuMjUtLjE1YzE0Ljg4LS4zNSwzMC4yNi0wLjcxLDQ1LjQ0LTAuNCwyLjQ5LDAsMy4wOC0uNDcsMy4xNC0wLjUzczAuNjgtLjgzLjY3LTRjLTAuMDgtNjYuMS0uMDctMTM2LjQyLjA1LTIxNUMzODEsMTczLjQ1LDM4MC40MSwxNzIuNTYsMzgwLjE2LDE3Mi4zMVoiPjwvcGF0aD48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xODguNjMsMjgzLjQ4YTQsNCwwLDAsMC0yLjgxLS44MWMtMTYuNjUuMS0zNCwuMS01MS41MywwLTEuNzQsMC0zLC4yNi0zLjQ0Ljc1cy0wLjgsMS44NS0uNzksMy42N2MwLjE0LDM2LC4xNSw3MS4xNiwwLDEwNC40NiwwLDIuODIuNTUsMy42OSwwLjgsMy45MnMxLjEsMC43NywzLjguNzRjOC42Ni0uMTMsMTcuMjMtMC4xOSwyNS42Ny0wLjE5czE3LDAuMDcsMjUuMjEuMmExMy4yOSwxMy4yOSwwLDAsMCw0LS4yOSw5LjMxLDkuMzEsMCwwLDAsLjIzLTIuNzdjLTAuMjItMTIuMzgtLjE4LTIzLjYzLTAuMTQtMzUuNTQsMC00Ljg4LDAtOS44OCwwLTE1LjEybDAtNC41YzAtMywwLTYuMiwwLTkuNDMsMC0xMi43OS0uMDktMjcuMjkuMTUtNDBDMTg5Ljg4LDI4Ni4xMywxODkuNDUsMjg0LjMyLDE4OC42MywyODMuNDhaIj48L3BhdGg+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMjg0LjQ0LDIyOC4wN2MtMC4xOC0uMTctMS0wLjczLTMuNjctMC42OC0xMS40MS4yMS0yMywuMTctMzQuMiwwLjEzcS03LjU4LDAtMTUuMTcsMGMtNC44OCwwLTUuNjQuNzUtNS43NCwwLjktMC43OSwxLjE0LS43OSw1LjctMC44LDguNDIsMCwxOC4zNiwwLDM3LjMzLDAsNTYuNDlWMzEySDIyNXYyNC45MWMwLDE2LjcyLDAsMzMuMjEsMCw1MC42OCwwLDQsMCw4LjIuNCw5LjUzYTQxLjQ3LDQxLjQ3LDAsMCwwLDcuMDcuMjZoMy4xMmM2LjQzLDAsMTMtLjE1LDE5LjM0LTAuMjksOC4zOC0uMTksMTctMC4zOSwyNS42LTAuMjUsMS44OCwwLDMuMjQtLjI1LDMuNzctMC43N3MwLjg5LTIuMDUuODgtNC4xYy0wLjEyLTUyLjktLjEtMTA2LjY3LjA2LTE1OS44QzI4NS4yNCwyMjkuMTgsMjg0LjY4LDIyOC4zMSwyODQuNDQsMjI4LjA3WiI+PC9wYXRoPjxwYXRoIGQ9Ik00ODUuNDksMTI0Ljg1YzAtMTEuOTUtMi4yMi0xNi45NS0xNS45NC0xNy03LjU2LDAtMTUuMjctLjE1LTIyLjczLTAuMjktOC4yNC0uMTUtMTYuNzQtMC4zMS0yNS4xNS0wLjI5LTkuOTEsMC0xNC42MywyLjEtMTQuNjMsMTMuODFxMCw1NS4xNywwLDExMC4yOWMwLDUyLjM2LjA1LDEwNi41MSwwLDE1OS44MSwwLDMuMDkuMzcsNy41NiwzLjU2LDEwLjY5LDIuMjksMi4yNCw1LjU2LDMuMzQsMTAsMy4zNCwwLjE5LDAsLjM4LDAsMC41OCwwLDExLjE0LS4yMywyMi41LTAuMjIsMzMuNDktMC4xOSw0LjExLDAsOC4yMiwwLDEyLjMzLDBoMC41MWMxLjc2LDAsMy4yNC4wOSw0LjU2LDAuMTIsNC44LDAuMTIsNy45NC4yNiwxMC40NS0yLjE5LDIuNzEtMi42NCwyLjYyLTYuNTMsMi42Mi0xMywwLTMwLjkyLS4xNy02MC42NS0wLjE3LTkwLjg5VjI2NWgwLjVWMjI1LjQxQzQ4NS41LDE5Miw0ODUuNSwxNTcuNjUsNDg1LjQ5LDEyNC44NVptLTksMTAwLjU3VjI1Nkg0NzZ2NDMuMDdjMCwzMC4yNC4xOCw2MCwuMTcsOTAuODgsMCwyLjEuMTgsNC44MSwwLDYuMjMtMC45My4wNS0yLjQzLDAtMy43OSwwcy0zLS4xMy00Ljg0LTAuMTNoMGMtNC4yNiwwLTguNTIsMC0xMi43OCwwLTExLDAtMjIuNDYsMC0zMy43MS4yMS0yLjk0LjA2LTMuODMtLjUxLTQuMDgtMC43NnMtMC44Ni0xLjE4LS44Ni00LjI2YzAtNTMuMywwLTEwNy40NSwwLTE1OS44MnEwLTU1LjEzLDAtMTEwLjI4YzAtMywuMjYtNCwwLjQtNC4zNywwLjQyLS4xOCwxLjY1LTAuNDMsNS4yNi0wLjQ0LDguMzEsMCwxNi43Ny4xNCwyNSwuMjksNy40OSwwLjE0LDE1LjI0LjI5LDIyLjg5LDAuMjksNS4yOSwwLDYuMTEuNjUsNi4yMiwwLjc4LDAuNzIsMC44NS43Myw1LjYyLDAuNzMsNy4xOUM0NzYuNSwxNTcuNjYsNDc2LjUsMTkyLDQ3Ni41LDIyNS40MVoiPjwvcGF0aD48cGF0aCBkPSJNMzg2LjQ3LDE2NS44OWMtMi4zNi0yLjMyLTUuNzEtMy40LTEwLjI1LTMuMzQtMTEsLjE5LTIyLjI1LjE2LTMzLjExLDAuMTJxLTguMDYsMC0xNi4xMSwwYy0xMy41NiwwLTE0LjY3LDcuNi0xNC42NywxNi43NiwwLDI1Ljc1LDAsNTIuMjgsMCw3OC43MVYyODcuNWwwLjA2LDQuNWgwYzAsNy43NCwwLDE1LjM4LDAsMjMsMCwyNi4zNSwwLDUxLjI0LS4xMSw3Ny43OSwwLDMuMy4zMiw3LDMsOS42NywyLjUxLDIuNDcsNi4wOCwyLjkyLDkuNCwyLjkyaDFsNi4yNi0uMTVjMTQuNzgtLjM1LDMwLjA2LTAuNzEsNDUtMC40LDQuMjQsMC4wOSw3LjQxLS45Myw5LjYzLTMuMSwzLTIuOTQsMy4zOC03LjEsMy4zNy0xMC40LTAuMDgtNjYuMDktLjA3LTEzNi40MS4wNS0yMTVDMzkwLDE3MS42NSwzODguODUsMTY4LjI0LDM4Ni40NywxNjUuODlabS01LjUzLDIyNS40YzAsMy4xMy0uNTYsMy44NS0wLjY3LDRzLTAuNjUuNTgtMy4xNCwwLjUzYy0xNS4xNy0uMzEtMzAuNTYsMC00NS40NC40bC02LjI1LjE1YTEwLjIsMTAuMiwwLDAsMS0zLjgzLS4zNCw4LjgsOC44LDAsMCwxLS4zMy0zLjE5YzAuMTYtMjYuNTguMTMtNTEuNDgsMC4xMS03Ny44NSwwLTksMC0xOC4xNiwwLTI3LjQ1bC0wLjA2LTQuNVYyNTguMTJjMC0yNi40MywwLTUzLDAtNzguNzEsMC03Ljc1LDAtNy43NSw1LjY5LTcuNzYsNS4zNSwwLDEwLjcxLDAsMTYuMDcsMCwxMC45LDAsMjIuMTguMDcsMzMuMjktLjEyLDEuODksMCwzLjI2LjI0LDMuNzgsMC43NSwwLjI1LDAuMjUuODUsMS4xNCwwLjg0LDRDMzgwLjg4LDI1NC44NywzODAuODYsMzI1LjE5LDM4MC45NSwzOTEuM1oiPjwvcGF0aD48cGF0aCBkPSJNMjkwLjc1LDIyMS42NmMtMi4zMi0yLjI4LTUuNjQtMy4zNy0xMC4xNS0zLjI2LTExLjMxLjIxLTIyLjg0LDAuMTctMzQsLjEzcS03LjYsMC0xNS4yMSwwYy0xNC40NiwwLTE1LjUyLDYuOTItMTUuNTQsMTguMywwLDE4LjM2LDAsMzcuMzQsMCw1Ni41MVYzMjFIMjE2djE1LjkxYzAsMTYuNzIsMCwzMy4yMSwwLDUwLjY5LDAsOC42MywwLDEzLDMsMTYsMi41NiwyLjU0LDYsMi44MiwxMS4zMSwyLjgyaDUuMjZjNi41MywwLDEzLjE1LS4xNSwxOS41NS0wLjMsOC4yOS0uMTksMTYuODYtMC4zOCwyNS4yNS0wLjI1LDQuNTEsMC4xLDcuODctMSwxMC4yNC0zLjM2czMuNTctNS44MiwzLjU2LTEwLjUzYy0wLjEyLTUyLjg5LS4xLTEwNi42My4wNi0xNTkuNzVDMjk0LjI0LDIyOS4xNCwyOTMuODksMjI0Ljc0LDI5MC43NSwyMjEuNjZaTTI4NS4xNywzOTJjMCwyLS4zMiwzLjU0LTAuODgsNC4xcy0xLjg5LjgtMy43NywwLjc3Yy04LjU2LS4xNC0xNy4yMi4wNi0yNS42LDAuMjUtNi4zNS4xNC0xMi45MSwwLjI5LTE5LjM0LDAuMjloLTMuMTJhNDEuNDcsNDEuNDcsMCwwLDEtNy4wNy0uMjZjLTAuNDItMS4zMy0uNC01LjQ5LTAuNC05LjUzLDAtMTcuNDcsMC0zNCwwLTUwLjY4VjMxMmgtMC4xNlYyOTMuM2MwLTE5LjE2LDAtMzguMTMsMC01Ni40OSwwLTIuNzIsMC03LjI3LjgtOC40MiwwLjEtLjE1Ljg3LTAuOSw1Ljc0LTAuOXE3LjU4LDAsMTUuMTcsMGMxMS4yLDAsMjIuNzguMDgsMzQuMi0uMTMsMi43Mi0uMDUsMy41LjUxLDMuNjcsMC42OHMwLjgsMS4xMS43OSw0LjA4QzI4NS4wNywyODUuMjksMjg1LjA1LDMzOS4wNSwyODUuMTcsMzkyWiI+PC9wYXRoPjxwYXRoIGQ9Ik0xOTUsMjc3LjMyYy0xLjU3LTEuNi00LjQ0LTMuMzItOS4xNy0zLjMySDE4NnYtMC4xNmMtMTcsLjEtMzQtMC4wNi01MS41NC0wLjE1LTQuMzEsMC03LjYxLDEuMDgtOS45LDMuMzhzLTMuNDgsNS42Mi0zLjQ2LDEwLjA3YzAuMTQsMzYsLjE0LDcxLjEyLDAsMTA0LjM5LDAsNC42NSwxLjExLDgsMy40NiwxMC4zNnM1LjY3LDMuNDEsMTAuMjYsMy4zNGMxNy4zNi0uMjYsMzQuMzgtMC4yNSw1MC42LDBoMWMzLjM5LDAsNy0uMzYsOS41OS0yLjkyczIuODctNi4zNCwyLjgyLTkuMzFjLTAuMjItMTIuMjgtLjE4LTIzLjQ4LTAuMTQtMzUuMzUsMC0zLjQ4LDAtNywwLTEwLjY1bDAtNC40OWMwLTQuMzcsMC05LjA2LDAtMTMuOTQsMC0xMi43NC0uMDktMjcuMTUuMTUtMzkuNzRDMTk4LjkyLDI4My43OSwxOTcuNjUsMjgwLDE5NSwyNzcuMzJabS01LjM1LDUxLjI0YzAsMy4yNCwwLDYuNCwwLDkuNDNsMCw0LjVjMCw1LjI0LDAsMTAuMjQsMCwxNS4xMiwwLDExLjkxLS4wOCwyMy4xNy4xNCwzNS41NGE5LjMxLDkuMzEsMCwwLDEtLjIzLDIuNzcsMTMuMjksMTMuMjksMCwwLDEtNCwuMjljLTguMjItLjEzLTE2LjY0LTAuMi0yNS4yMS0wLjJzLTE3LC4wNi0yNS42Ny4xOWMtMi43LDAtMy41Ni0uNS0zLjgtMC43NHMtMC44MS0xLjEtLjgtMy45MmMwLjEyLTMzLjI5LjExLTY4LjQ0LDAtMTA0LjQ2LDAtMS44Mi4yOC0zLjE2LDAuNzktMy42N3MxLjctLjc2LDMuNDQtMC43NWMxNy41NCwwLjA5LDM0Ljg4LjA4LDUxLjUzLDBhNCw0LDAsMCwxLDIuODEuODFjMC44MiwwLjgzLDEuMjUsMi42NCwxLjIsNS4xQzE4OS41OSwzMDEuMjgsMTg5LjY0LDMxNS43NywxODkuNjgsMzI4LjU3WiI+PC9wYXRoPjxwYXRoIGQ9Ik0xMDAuOTQsMzMwLjY2Yy0yLjE4LTIuMTMtNS4yLTMuMTQtOS4zMS0zaDBjLTQuNy4xLTkuMjcsMC4xMS0xMy4xNCwwLjFsLTUuMzgsMHEtNy45MSwwLTE1LjgyLDBsLTUuMzIsMGgwYy0zLjg1LDAtOC40MiwwLTEzLjEtLjEyLTQtLjEyLTcuMDUuODYtOS4yLDNzLTMuMjIsNS4yNi0zLjE3LDkuNTNjMC4xOSwxOC40NC4xOSwzNS41LDAsNTIuMTUsMCw0LjIyLDEsNy4zNSwzLjE4LDkuNTVzNS4wNywzLjIsOSwzLjJIOTEuNzRjNCwwLDcuMDctMS4xLDkuMi0zLjI0czMuMTMtNSwzLjEyLTguN2MtMC4wNS0xOC44MiwwLTM3LjcxLDAtNTMuN0MxMDQuMDgsMzM1LjYzLDEwMywzMzIuNzEsMTAwLjk0LDMzMC42NlptLTUuODgsNjIuNDNhMy43LDMuNywwLDAsMS0uNDksMi4zMSw0LjU2LDQuNTYsMCwwLDEtMi44My42SDM4LjY5YTQuMzMsNC4zMywwLDAsMS0yLjYyLS41M2MtMC4yOC0uMjgtMC41OS0xLjI3LTAuNTctMy4xMiwwLjE5LTE2LjcyLjE5LTMzLjg0LDAtNTIuMzQsMC0yLjQ5LjQ4LTMsLjQ4LTNhNC4xLDQuMSwwLDAsMSwyLjI2LS4zOWgwLjM4YzQuOCwwLjEzLDkuNDYuMTQsMTMuMzgsMC4xM2w1LjM0LDBxNy44NiwwLDE1LjczLDBsNS40LDBjMy45MSwwLDguNTYsMCwxMy4zNS0uMSwxLjgxLDAsMi42Mi4yOCwyLjgxLDAuNDdhMy43NywzLjc3LDAsMCwxLC40MywyLjI2Qzk1LDM1NS4zNSw5NSwzNzQuMjYsOTUuMDYsMzkzLjA5WiI+PC9wYXRoPjwvc3ZnPg==") no-repeat 0 0 !important; -} - -.signal-1:before { - background: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGRhdGEtbmFtZT0iTGF5ZXIgMSIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHg9IjBweCIgeT0iMHB4Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6bm9uZTt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPndpZmkyMDwvdGl0bGU+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNDc1Ljc2LDExNy42NmMtMC4xMS0uMTMtMC45My0wLjc3LTYuMjItMC43OC03LjY0LDAtMTUuMzktLjE1LTIyLjg5LTAuMjktOC4xOS0uMTUtMTYuNjUtMC4zMS0yNS0wLjI5LTMuNjEsMC00Ljg0LjI2LTUuMjYsMC40NC0wLjEzLjMyLS40LDEuMzQtMC40LDQuMzdxMCw1NS4xNywwLDExMC4yOGMwLDUyLjM3LjA1LDEwNi41MiwwLDE1OS44MiwwLDMuMDguNiw0LC44Niw0LjI2czEuMTQsMC44Miw0LjA4Ljc2QzQzMi4yOCwzOTYsNDQzLjcsMzk2LDQ1NC43NCwzOTZjNC4yNiwwLDguNTMsMCwxMi43OCwwaDBjMS44NSwwLDMuNDUuMDksNC44NCwwLjEzczIuODYsMC4xLDMuNzksMGMwLjE4LTEuNDIsMC00LjEzLDAtNi4yMywwLTMwLjkyLS4xNy02MC42NC0wLjE3LTkwLjg4VjI1NmgwLjVWMjI1LjQxYzAtMzMuNDMsMC02Ny43NiwwLTEwMC41NkM0NzYuNDgsMTIzLjI5LDQ3Ni40OCwxMTguNTEsNDc1Ljc2LDExNy42NloiPjwvcGF0aD48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0zODAuMTYsMTcyLjMxYy0wLjUyLS41MS0xLjg5LTAuNzgtMy43OC0wLjc1LTExLjExLjE5LTIyLjM5LDAuMTYtMzMuMjksMC4xMi01LjM2LDAtMTAuNzEsMC0xNi4wNywwLTUuNjgsMC01LjY4LDAtNS42OSw3Ljc2LDAsMjUuNzUsMCw1Mi4yNywwLDc4LjcxVjI4M2wwLjA2LDQuNWMwLDkuMjksMCwxOC40MSwwLDI3LjQ1LDAsMjYuMzcsMCw1MS4yNy0uMTEsNzcuODVhOC44LDguOCwwLDAsMCwuMzMsMy4xOSwxMC4xOSwxMC4xOSwwLDAsMCwzLjgzLjM0bDYuMjUtLjE1YzE0Ljg4LS4zNSwzMC4yNi0wLjcxLDQ1LjQ0LTAuNCwyLjQ5LDAsMy4wOC0uNDcsMy4xNC0wLjUzczAuNjgtLjgzLjY3LTRjLTAuMDgtNjYuMS0uMDctMTM2LjQyLjA1LTIxNUMzODEsMTczLjQ1LDM4MC40MSwxNzIuNTYsMzgwLjE2LDE3Mi4zMVoiPjwvcGF0aD48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yODQuNDQsMjI4LjA3Yy0wLjE4LS4xNy0wLjk0LTAuNzMtMy42Ny0wLjY4LTExLjQxLjIxLTIzLC4xNy0zNC4yLDAuMTNxLTcuNTgsMC0xNS4xNywwYy00Ljg4LDAtNS42NC43NS01Ljc0LDAuOS0wLjc5LDEuMTQtLjc5LDUuNy0wLjgsOC40MiwwLDE4LjM2LDAsMzcuMzMsMCw1Ni40OVYzMTJIMjI1djI0LjkxYzAsMTYuNzIsMCwzMy4yMSwwLDUwLjY4LDAsNCwwLDguMi40LDkuNTNhNDEuNDcsNDEuNDcsMCwwLDAsNy4wNy4yNmgzLjEyYzYuNDMsMCwxMy0uMTUsMTkuMzQtMC4yOSw4LjM4LS4xOSwxNy0wLjM5LDI1LjYtMC4yNSwxLjg5LDAsMy4yNC0uMjUsMy43Ny0wLjc3czAuODktMi4wNS44OC00LjFjLTAuMTItNTIuOS0uMS0xMDYuNjcuMDYtMTU5LjhDMjg1LjI0LDIyOS4xOCwyODQuNjgsMjI4LjMxLDI4NC40NCwyMjguMDdaIj48L3BhdGg+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTg4LjYzLDI4My40OGE0LDQsMCwwLDAtMi44MS0uODFjLTE2LjY1LjEtMzQsLjEtNTEuNTMsMC0xLjczLDAtMywuMjYtMy40NC43NXMtMC44LDEuODUtLjc5LDMuNjdjMC4xNCwzNiwuMTUsNzEuMTYsMCwxMDQuNDYsMCwyLjgyLjU1LDMuNjksMC44LDMuOTJzMS4xMSwwLjc3LDMuOC43NGM4LjY2LS4xMywxNy4yMy0wLjE5LDI1LjY3LTAuMTlzMTcsMC4wNywyNS4yMS4yYTEzLjI0LDEzLjI0LDAsMCwwLDQtLjI5LDkuMzEsOS4zMSwwLDAsMCwuMjMtMi43N2MtMC4yMi0xMi4zOC0uMTgtMjMuNjMtMC4xNC0zNS41NCwwLTQuODgsMC05Ljg4LDAtMTUuMTJsMC00LjVjMC0zLDAtNi4yLDAtOS40MywwLTEyLjc5LS4wOS0yNy4yOS4xNS00MEMxODkuODgsMjg2LjEzLDE4OS40NSwyODQuMzIsMTg4LjYzLDI4My40OFoiPjwvcGF0aD48cGF0aCBkPSJNNDY5LjU0LDEwNy44OGMtNy41NiwwLTE1LjI3LS4xNS0yMi43My0wLjI5LTguMjQtLjE1LTE2Ljc1LTAuMzEtMjUuMTUtMC4yOS05LjkxLDAtMTQuNjMsMi4xLTE0LjYzLDEzLjgxcTAsNTUuMTcsMCwxMTAuMjljMCw1Mi4zNi4wNSwxMDYuNTEsMCwxNTkuODEsMCwzLjA5LjM3LDcuNTYsMy41NiwxMC42OSwyLjI5LDIuMjQsNS41NiwzLjM0LDEwLDMuMzQsMC4xOSwwLC4zOCwwLDAuNTgsMCwxMS4xNC0uMjMsMjIuNS0wLjIyLDMzLjQ5LTAuMTksNC4xMSwwLDguMjIsMCwxMi4zMywwaDAuNTFjMS43NiwwLDMuMjQuMDksNC41NiwwLjEyLDQuOCwwLjEyLDcuOTQuMjYsMTAuNDUtMi4xOSwyLjcxLTIuNjQsMi42Mi02LjUzLDIuNjItMTMsMC0zMC45Mi0uMTctNjAuNjUtMC4xNy05MC44OVYyNjVoMC41VjIyNS40MWMwLTMzLjQzLDAtNjcuNzYsMC0xMDAuNTdDNDg1LjQ4LDExMi45LDQ4My4yNiwxMDcuOSw0NjkuNTQsMTA3Ljg4Wm03LDExNy41M1YyNTZINDc2djQzLjA3YzAsMzAuMjQuMTgsNjAsLjE3LDkwLjg4LDAsMi4xLjE4LDQuODEsMCw2LjIzLTAuOTMuMDUtMi40MywwLTMuNzksMHMtMy0uMTMtNC44NC0wLjEzaDBjLTQuMjQsMC04LjUyLDAtMTIuNzgsMC0xMSwwLTIyLjQ2LDAtMzMuNzEuMjEtMi45NC4wNi0zLjgzLS41MS00LjA4LTAuNzZzLTAuODYtMS4xOC0uODYtNC4yNmMwLTUzLjMsMC0xMDcuNDUsMC0xNTkuODJxMC01NS4xMywwLTExMC4yOGMwLTMsLjI2LTQsMC40LTQuMzcsMC40Mi0uMTgsMS42NS0wLjQzLDUuMjYtMC40NCw4LjMxLDAsMTYuNzcuMTQsMjUsLjI5LDcuNDksMC4xNCwxNS4yNC4yOSwyMi44OSwwLjI5LDUuMjksMCw2LjExLjY1LDYuMjIsMC43OCwwLjcyLDAuODUuNzMsNS42MiwwLjczLDcuMTlDNDc2LjUsMTU3LjY2LDQ3Ni41LDE5Miw0NzYuNSwyMjUuNDFaIj48L3BhdGg+PHBhdGggZD0iTTM4Ni40NywxNjUuODljLTIuMzYtMi4zMi01LjcxLTMuNC0xMC4yNS0zLjM0LTExLC4xOS0yMi4yNS4xNi0zMy4xMSwwLjEycS04LjA2LDAtMTYuMTEsMGMtMTMuNTYsMC0xNC42Nyw3LjYtMTQuNjcsMTYuNzYsMCwyNS43NSwwLDUyLjI4LDAsNzguNzFWMjg3LjVsMC4wNiw0LjVoMGMwLDcuNzQsMCwxNS4zOCwwLDIzLDAsMjYuMzUsMCw1MS4yNC0uMTEsNzcuNzksMCwzLjMuMzIsNywzLDkuNjcsMi41MSwyLjQ3LDYuMDgsMi45Miw5LjQsMi45MmgxbDYuMjYtLjE1YzE0Ljc4LS4zNSwzMC4wNi0wLjcxLDQ1LTAuNCw0LjI0LDAuMDksNy40MS0uOTMsOS42My0zLjEsMy0yLjk0LDMuMzgtNy4xLDMuMzctMTAuNC0wLjA4LTY2LjA5LS4wNy0xMzYuNDEuMDUtMjE1QzM5MCwxNzEuNjUsMzg4Ljg1LDE2OC4yNCwzODYuNDcsMTY1Ljg5Wm0tNS41MywyMjUuNGMwLDMuMTMtLjU2LDMuODUtMC42Nyw0cy0wLjY1LjU4LTMuMTQsMC41M2MtMTUuMTctLjMxLTMwLjU2LDAtNDUuNDQuNGwtNi4yNS4xNWExMC4xOSwxMC4xOSwwLDAsMS0zLjgzLS4zNCw4LjgsOC44LDAsMCwxLS4zMy0zLjE5YzAuMTYtMjYuNTguMTMtNTEuNDgsMC4xMS03Ny44NSwwLTksMC0xOC4xNiwwLTI3LjQ1bC0wLjA2LTQuNVYyNTguMTJjMC0yNi40MywwLTUzLDAtNzguNzEsMC03Ljc1LDAtNy43NSw1LjY5LTcuNzYsNS4zNiwwLDEwLjcxLDAsMTYuMDcsMCwxMC45LDAsMjIuMTguMDcsMzMuMjktLjEyLDEuODgsMCwzLjI2LjI0LDMuNzgsMC43NSwwLjI1LDAuMjUuODUsMS4xNCwwLjg0LDRDMzgwLjg4LDI1NC44NywzODAuODYsMzI1LjE5LDM4MC45NSwzOTEuM1oiPjwvcGF0aD48cGF0aCBkPSJNMjkwLjc1LDIyMS42NmMtMi4zMi0yLjI4LTUuNjUtMy4zNy0xMC4xNS0zLjI2LTExLjMxLjIxLTIyLjg0LDAuMTctMzQsLjEzcS03LjYsMC0xNS4yMSwwYy0xNC40NiwwLTE1LjUyLDYuOTItMTUuNTQsMTguMywwLDE4LjM2LDAsMzcuMzQsMCw1Ni41MVYzMjFIMjE2djE1LjkxYzAsMTYuNzIsMCwzMy4yMSwwLDUwLjY5LDAsOC42MywwLDEzLDMsMTYsMi41NiwyLjU0LDYsMi44MiwxMS4zMSwyLjgyaDUuMjZjNi41MywwLDEzLjE1LS4xNSwxOS41NS0wLjMsOC4yOS0uMTksMTYuODctMC4zOCwyNS4yNS0wLjI1LDQuNSwwLjEsNy44Ny0xLDEwLjI0LTMuMzZzMy41Ny01LjgyLDMuNTYtMTAuNTNjLTAuMTItNTIuODktLjEtMTA2LjYzLjA2LTE1OS43NUMyOTQuMjQsMjI5LjE0LDI5My44OSwyMjQuNzQsMjkwLjc1LDIyMS42NlpNMjg1LjE3LDM5MmMwLDItLjMyLDMuNTQtMC44OCw0LjFzLTEuODguOC0zLjc3LDAuNzdjLTguNTYtLjE0LTE3LjIyLjA2LTI1LjYsMC4yNS02LjM1LjE0LTEyLjkxLDAuMjktMTkuMzQsMC4yOWgtMy4xMmE0MS40Nyw0MS40NywwLDAsMS03LjA3LS4yNmMtMC40Mi0xLjMzLS40LTUuNDktMC40LTkuNTMsMC0xNy40NywwLTM0LDAtNTAuNjhWMzEyaC0wLjE2VjI5My4zYzAtMTkuMTYsMC0zOC4xMywwLTU2LjQ5LDAtMi43MiwwLTcuMjcuOC04LjQyLDAuMS0uMTUuODctMC45LDUuNzQtMC45cTcuNTgsMCwxNS4xNywwYzExLjIsMCwyMi43OC4wOCwzNC4yLS4xMywyLjczLS4wNSwzLjUuNTEsMy42NywwLjY4czAuOCwxLjExLjc5LDQuMDhDMjg1LjA3LDI4NS4yOSwyODUuMDUsMzM5LjA1LDI4NS4xNywzOTJaIj48L3BhdGg+PHBhdGggZD0iTTE5NSwyNzcuMzJjLTEuNTctMS42LTQuNDQtMy4zMi05LjE3LTMuMzJIMTg2di0wLjE2Yy0xNywuMS0zNC0wLjA2LTUxLjU0LTAuMTUtNC4zLDAtNy42MSwxLjA4LTkuOSwzLjM4cy0zLjQ4LDUuNjItMy40NiwxMC4wN2MwLjE0LDM2LC4xNCw3MS4xMiwwLDEwNC4zOSwwLDQuNjUsMS4xMSw4LDMuNDYsMTAuMzZzNS42NiwzLjQxLDEwLjI2LDMuMzRjMTcuMzYtLjI2LDM0LjM4LTAuMjUsNTAuNiwwaDFjMy4zOSwwLDctLjM2LDkuNTktMi45MnMyLjg3LTYuMzQsMi44Mi05LjMxYy0wLjIyLTEyLjI4LS4xOC0yMy40OC0wLjE0LTM1LjM1LDAtMy40OCwwLTcsMC0xMC42NWwwLTQuNDljMC00LjM3LDAtOS4wNiwwLTEzLjk0LDAtMTIuNzQtLjA5LTI3LjE1LjE1LTM5Ljc0QzE5OC45MiwyODMuNzksMTk3LjY1LDI4MCwxOTUsMjc3LjMyWm0tNS4zNSw1MS4yNGMwLDMuMjQsMCw2LjQsMCw5LjQzbDAsNC41YzAsNS4yNCwwLDEwLjI0LDAsMTUuMTIsMCwxMS45MS0uMDgsMjMuMTcuMTQsMzUuNTRhOS4zMSw5LjMxLDAsMCwxLS4yMywyLjc3LDEzLjI0LDEzLjI0LDAsMCwxLTQsLjI5Yy04LjIyLS4xMy0xNi42NC0wLjItMjUuMjEtMC4ycy0xNywuMDYtMjUuNjcuMTljLTIuNjksMC0zLjU2LS41LTMuOC0wLjc0cy0wLjgxLTEuMS0uOC0zLjkyYzAuMTItMzMuMjkuMTEtNjguNDQsMC0xMDQuNDYsMC0xLjgyLjI4LTMuMTYsMC43OS0zLjY3czEuNzEtLjc2LDMuNDQtMC43NWMxNy41NCwwLjA5LDM0Ljg4LjA4LDUxLjUzLDBhNCw0LDAsMCwxLDIuODEuODFjMC44MiwwLjgzLDEuMjUsMi42NCwxLjIsNS4xQzE4OS41OSwzMDEuMjgsMTg5LjY0LDMxNS43NywxODkuNjgsMzI4LjU3WiI+PC9wYXRoPjxwYXRoIGQ9Ik0xMDAuOTQsMzMwLjY2Yy0yLjE4LTIuMTMtNS4yMi0zLjE0LTkuMzEtM2gwYy00LjcuMS05LjI3LDAuMTEtMTMuMTQsMC4xbC01LjM4LDBxLTcuOTEsMC0xNS44MiwwbC01LjMyLDBoMGMtMy44NSwwLTguNDIsMC0xMy4xLS4xMi00LS4xMi03LjA1Ljg2LTkuMiwzcy0zLjIyLDUuMjYtMy4xNyw5LjUzYzAuMTksMTguNDQuMTksMzUuNSwwLDUyLjE1LDAsNC4yMiwxLDcuMzUsMy4xOCw5LjU1czUuMDcsMy4yLDksMy4ySDkxLjc0YzQsMCw3LjA3LTEuMSw5LjItMy4yNHMzLjEzLTUsMy4xMi04LjdjLTAuMDUtMTguODIsMC0zNy43MSwwLTUzLjdDMTA0LjA4LDMzNS42MywxMDMsMzMyLjcxLDEwMC45NCwzMzAuNjZaIj48L3BhdGg+PC9zdmc+") no-repeat 0 0; -} - -.signal-2:before { - background: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGRhdGEtbmFtZT0iTGF5ZXIgMSIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHg9IjBweCIgeT0iMHB4Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6bm9uZTt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPndpZmkyMDwvdGl0bGU+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNDc1Ljc2LDExNy42NmMtMC4xMS0uMTMtMC45My0wLjc3LTYuMjItMC43OC03LjY0LDAtMTUuMzktLjE1LTIyLjg5LTAuMjktOC4xOS0uMTUtMTYuNjUtMC4zMS0yNS0wLjI5LTMuNjEsMC00Ljg0LjI2LTUuMjYsMC40NC0wLjEzLjMyLS40LDEuMzQtMC40LDQuMzdxMCw1NS4xNywwLDExMC4yOGMwLDUyLjM3LjA1LDEwNi41MiwwLDE1OS44MiwwLDMuMDguNiw0LC44Niw0LjI2czEuMTUsMC44Miw0LjA4Ljc2QzQzMi4yOCwzOTYsNDQzLjcsMzk2LDQ1NC43NCwzOTZjNC4yNiwwLDguNTEsMCwxMi43OCwwaDBjMS44NSwwLDMuNDUuMDksNC44NCwwLjEzczIuODYsMC4xLDMuNzksMGMwLjE4LTEuNDIsMC00LjEzLDAtNi4yMywwLTMwLjkyLS4xNy02MC42NC0wLjE3LTkwLjg4VjI1NmgwLjVWMjI1LjQxYzAtMzMuNDMsMC02Ny43NiwwLTEwMC41NkM0NzYuNDgsMTIzLjI5LDQ3Ni40OCwxMTguNTEsNDc1Ljc2LDExNy42NloiPjwvcGF0aD48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0zODAuMTYsMTcyLjMxYy0wLjUyLS41MS0xLjg5LTAuNzgtMy43OC0wLjc1LTExLjExLjE5LTIyLjM5LDAuMTYtMzMuMjksMC4xMi01LjM2LDAtMTAuNzEsMC0xNi4wNywwLTUuNjgsMC01LjY4LDAtNS42OSw3Ljc2LDAsMjUuNzUsMCw1Mi4yNywwLDc4LjcxVjI4M2wwLjA2LDQuNWMwLDkuMjksMCwxOC40MSwwLDI3LjQ1LDAsMjYuMzcsMCw1MS4yNy0uMTEsNzcuODVhOC44LDguOCwwLDAsMCwuMzMsMy4xOSwxMC4xNywxMC4xNywwLDAsMCwzLjgzLjM0bDYuMjUtLjE1YzE0Ljg4LS4zNSwzMC4yNi0wLjcxLDQ1LjQ0LTAuNCwyLjUxLDAsMy4wOC0uNDcsMy4xNC0wLjUzczAuNjgtLjgzLjY3LTRjLTAuMDgtNjYuMS0uMDctMTM2LjQyLjA1LTIxNUMzODEsMTczLjQ1LDM4MC40MSwxNzIuNTYsMzgwLjE2LDE3Mi4zMVoiPjwvcGF0aD48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yODQuNDQsMjI4LjA3Yy0wLjE4LS4xNy0xLTAuNzMtMy42Ny0wLjY4LTExLjQxLjIxLTIzLC4xNy0zNC4yLDAuMTNxLTcuNTgsMC0xNS4xNywwYy00Ljg4LDAtNS42NC43NS01Ljc0LDAuOS0wLjc5LDEuMTQtLjc5LDUuNy0wLjgsOC40MiwwLDE4LjM2LDAsMzcuMzMsMCw1Ni40OVYzMTJIMjI1djI0LjkxYzAsMTYuNzIsMCwzMy4yMSwwLDUwLjY4LDAsNCwwLDguMi40LDkuNTNhNDEuNDgsNDEuNDgsMCwwLDAsNy4wNy4yNmgzLjEyYzYuNDMsMCwxMy0uMTUsMTkuMzQtMC4yOSw4LjM4LS4xOSwxNy0wLjM5LDI1LjYtMC4yNSwxLjg5LDAsMy4yNC0uMjUsMy43Ny0wLjc3czAuODktMi4wNS44OC00LjFjLTAuMTItNTIuOS0uMS0xMDYuNjcuMDYtMTU5LjhDMjg1LjI0LDIyOS4xOCwyODQuNjgsMjI4LjMxLDI4NC40NCwyMjguMDdaIj48L3BhdGg+PHBhdGggZD0iTTQ2OS41NCwxMDcuODhjLTcuNTYsMC0xNS4yNy0uMTUtMjIuNzMtMC4yOS04LjI0LS4xNS0xNi43NS0wLjMxLTI1LjE1LTAuMjktOS45MSwwLTE0LjYzLDIuMS0xNC42MywxMy44MXEwLDU1LjE3LDAsMTEwLjI5YzAsNTIuMzYuMDUsMTA2LjUxLDAsMTU5LjgxLDAsMy4wOS4zNyw3LjU2LDMuNTYsMTAuNjksMi4yOSwyLjI0LDUuNTYsMy4zNCwxMCwzLjM0LDAuMTksMCwuMzgsMCwwLjU4LDAsMTEuMTQtLjIzLDIyLjUtMC4yMiwzMy40OS0wLjE5LDQuMTEsMCw4LjIyLDAsMTIuMzMsMGgwLjUxYzEuNzYsMCwzLjI0LjA5LDQuNTYsMC4xMiw0LjgsMC4xMiw3Ljk0LjI2LDEwLjQ1LTIuMTksMi43MS0yLjY0LDIuNjItNi41MywyLjYyLTEzLDAtMzAuOTItLjE3LTYwLjY1LTAuMTctOTAuODlWMjY1aDAuNVYyMjUuNDFjMC0zMy40MywwLTY3Ljc2LDAtMTAwLjU3QzQ4NS40OCwxMTIuOSw0ODMuMjYsMTA3LjksNDY5LjU0LDEwNy44OFptNywxMTcuNTNWMjU2SDQ3NnY0My4wN2MwLDMwLjI0LjE4LDYwLC4xNyw5MC44OCwwLDIuMS4xOCw0LjgxLDAsNi4yMy0wLjk0LjA1LTIuNDMsMC0zLjc5LDBzLTMtLjEzLTQuODQtMC4xM2gwYy00LjI3LDAtOC41MiwwLTEyLjc4LDAtMTEsMC0yMi40NiwwLTMzLjcxLjIxLTIuOTQuMDYtMy44My0uNTEtNC4wOC0wLjc2cy0wLjg2LTEuMTgtLjg2LTQuMjZjMC01My4zLDAtMTA3LjQ1LDAtMTU5LjgycTAtNTUuMTMsMC0xMTAuMjhjMC0zLC4yNi00LDAuNC00LjM3LDAuNDItLjE4LDEuNjUtMC40Myw1LjI2LTAuNDQsOC4zMSwwLDE2Ljc3LjE0LDI1LC4yOSw3LjQ5LDAuMTQsMTUuMjQuMjksMjIuODksMC4yOSw1LjI5LDAsNi4xMS42NSw2LjIyLDAuNzgsMC43MiwwLjg1LjczLDUuNjIsMC43Myw3LjE5QzQ3Ni41LDE1Ny42Niw0NzYuNSwxOTIsNDc2LjUsMjI1LjQxWiI+PC9wYXRoPjxwYXRoIGQ9Ik0zODYuNDcsMTY1Ljg5Yy0yLjM2LTIuMzItNS42OS0zLjQtMTAuMjUtMy4zNC0xMSwuMTktMjIuMjUuMTYtMzMuMTEsMC4xMnEtOC4wNiwwLTE2LjExLDBjLTEzLjU2LDAtMTQuNjcsNy42LTE0LjY3LDE2Ljc2LDAsMjUuNzUsMCw1Mi4yOCwwLDc4LjcxVjI4Ny41bDAuMDYsNC41aDBjMCw3Ljc0LDAsMTUuMzgsMCwyMywwLDI2LjM1LDAsNTEuMjQtLjExLDc3Ljc5LDAsMy4zLjMyLDcsMyw5LjY3LDIuNTEsMi40Nyw2LjA4LDIuOTIsOS40LDIuOTJoMWw2LjI2LS4xNWMxNC43OC0uMzUsMzAuMDYtMC43MSw0NS0wLjQsNC4yNiwwLjA5LDcuNDEtLjkzLDkuNjMtMy4xLDMtMi45NCwzLjM4LTcuMSwzLjM3LTEwLjQtMC4wOC02Ni4wOS0uMDctMTM2LjQxLjA1LTIxNUMzOTAsMTcxLjY1LDM4OC44NSwxNjguMjQsMzg2LjQ3LDE2NS44OVptLTUuNTMsMjI1LjRjMCwzLjEzLS41NiwzLjg1LTAuNjcsNHMtMC42NC41OC0zLjE0LDAuNTNjLTE1LjE3LS4zMS0zMC41NiwwLTQ1LjQ0LjRsLTYuMjUuMTVhMTAuMTcsMTAuMTcsMCwwLDEtMy44My0uMzQsOC44LDguOCwwLDAsMS0uMzMtMy4xOWMwLjE2LTI2LjU4LjEzLTUxLjQ4LDAuMTEtNzcuODUsMC05LDAtMTguMTYsMC0yNy40NWwtMC4wNi00LjVWMjU4LjEyYzAtMjYuNDMsMC01MywwLTc4LjcxLDAtNy43NSwwLTcuNzUsNS42OS03Ljc2LDUuMzYsMCwxMC43MSwwLDE2LjA3LDAsMTAuOSwwLDIyLjE4LjA3LDMzLjI5LS4xMiwxLjg5LDAsMy4yNi4yNCwzLjc4LDAuNzUsMC4yNSwwLjI1Ljg1LDEuMTQsMC44NCw0QzM4MC44OCwyNTQuODcsMzgwLjg2LDMyNS4xOSwzODAuOTUsMzkxLjNaIj48L3BhdGg+PHBhdGggZD0iTTI5MC43NSwyMjEuNjZjLTIuMzItMi4yOC01LjY2LTMuMzctMTAuMTUtMy4yNi0xMS4zMS4yMS0yMi44NCwwLjE3LTM0LC4xM3EtNy42LDAtMTUuMjEsMGMtMTQuNDYsMC0xNS41Miw2LjkyLTE1LjU0LDE4LjMsMCwxOC4zNiwwLDM3LjM0LDAsNTYuNTFWMzIxSDIxNnYxNS45MWMwLDE2LjcyLDAsMzMuMjEsMCw1MC42OSwwLDguNjMsMCwxMywzLDE2LDIuNTYsMi41NCw2LDIuODIsMTEuMzEsMi44Mmg1LjI2YzYuNTMsMCwxMy4xNS0uMTUsMTkuNTUtMC4zLDguMjktLjE5LDE2Ljg2LTAuMzgsMjUuMjUtMC4yNSw0LjUzLDAuMSw3Ljg3LTEsMTAuMjQtMy4zNnMzLjU3LTUuODIsMy41Ni0xMC41M2MtMC4xMi01Mi44OS0uMS0xMDYuNjMuMDYtMTU5Ljc1QzI5NC4yNCwyMjkuMTQsMjkzLjg5LDIyNC43NCwyOTAuNzUsMjIxLjY2Wk0yODUuMTcsMzkyYzAsMi0uMzIsMy41NC0wLjg4LDQuMXMtMS44OC44LTMuNzcsMC43N2MtOC41Ni0uMTQtMTcuMjIuMDYtMjUuNiwwLjI1LTYuMzUuMTQtMTIuOTEsMC4yOS0xOS4zNCwwLjI5aC0zLjEyYTQxLjQ4LDQxLjQ4LDAsMCwxLTcuMDctLjI2Yy0wLjQyLTEuMzMtLjQtNS40OS0wLjQtOS41MywwLTE3LjQ3LDAtMzQsMC01MC42OFYzMTJoLTAuMTZWMjkzLjNjMC0xOS4xNiwwLTM4LjEzLDAtNTYuNDksMC0yLjcyLDAtNy4yNy44LTguNDIsMC4xLS4xNS44Ny0wLjksNS43NC0wLjlxNy41OCwwLDE1LjE3LDBjMTEuMiwwLDIyLjc4LjA4LDM0LjItLjEzLDIuNzItLjA1LDMuNS41MSwzLjY3LDAuNjhzMC44LDEuMTEuNzksNC4wOEMyODUuMDcsMjg1LjI5LDI4NS4wNSwzMzkuMDUsMjg1LjE3LDM5MloiPjwvcGF0aD48cGF0aCBkPSJNMTk1LDI3Ny4zMmMtMS41Ny0xLjYtNC40NC0zLjMyLTkuMTctMy4zMkgxODZ2LTAuMTZjLTE3LC4xLTM0LTAuMDYtNTEuNTQtMC4xNS00LjMxLDAtNy42MSwxLjA4LTkuOSwzLjM4cy0zLjQ4LDUuNjItMy40NiwxMC4wN2MwLjE0LDM2LC4xNCw3MS4xMiwwLDEwNC4zOSwwLDQuNjUsMS4xMSw4LDMuNDYsMTAuMzZzNS42NywzLjQxLDEwLjI2LDMuMzRjMTcuMzYtLjI2LDM0LjM4LTAuMjUsNTAuNiwwaDFjMy4zOSwwLDctLjM2LDkuNTktMi45MnMyLjg3LTYuMzQsMi44Mi05LjMxYy0wLjIyLTEyLjI4LS4xOC0yMy40OC0wLjE0LTM1LjM1LDAtMy40OCwwLTcsMC0xMC42NWwwLTQuNDljMC00LjM3LDAtOS4wNiwwLTEzLjk0LDAtMTIuNzQtLjA5LTI3LjE1LjE1LTM5Ljc0QzE5OC45MiwyODMuNzksMTk3LjY1LDI4MCwxOTUsMjc3LjMyWiI+PC9wYXRoPjxwYXRoIGQ9Ik0xMDAuOTQsMzMwLjY2Yy0yLjE4LTIuMTMtNS4yMS0zLjE0LTkuMzEtM2gwYy00LjcuMS05LjI3LDAuMTEtMTMuMTQsMC4xbC01LjM4LDBxLTcuOTEsMC0xNS44MiwwbC01LjMyLDBoMGMtMy44NSwwLTguNDIsMC0xMy4xLS4xMi00LjA1LS4xMi03LjA1Ljg2LTkuMiwzcy0zLjIyLDUuMjYtMy4xNyw5LjUzYzAuMTksMTguNDQuMTksMzUuNSwwLDUyLjE1LDAsNC4yMiwxLDcuMzUsMy4xOCw5LjU1czUuMDcsMy4yLDksMy4ySDkxLjc0YzQsMCw3LjA3LTEuMSw5LjItMy4yNHMzLjEzLTUsMy4xMi04LjdjLTAuMDUtMTguODIsMC0zNy43MSwwLTUzLjdDMTA0LjA4LDMzNS42MywxMDMsMzMyLjcxLDEwMC45NCwzMzAuNjZaIj48L3BhdGg+PC9zdmc+") no-repeat 0 0; -} - -.signal-3:before { - background: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGRhdGEtbmFtZT0iTGF5ZXIgMSIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHg9IjBweCIgeT0iMHB4Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6bm9uZTt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPndpZmkyMDwvdGl0bGU+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNDc1Ljc2LDExNy42NmMtMC4xMS0uMTMtMC45My0wLjc3LTYuMjItMC43OC03LjY0LDAtMTUuMzktLjE1LTIyLjg5LTAuMjktOC4xOS0uMTUtMTYuNjUtMC4zMS0yNS0wLjI5LTMuNjEsMC00Ljg0LjI2LTUuMjYsMC40NC0wLjEzLjMyLS40LDEuMzQtMC40LDQuMzdxMCw1NS4xNywwLDExMC4yOGMwLDUyLjM3LjA1LDEwNi41MiwwLDE1OS44MiwwLDMuMDguNiw0LC44Niw0LjI2czEuMTUsMC44Miw0LjA4Ljc2YzExLjI1LS4yNCwyMi42Ni0wLjIsMzMuNzEtMC4xNnE2LjM5LDAsMTIuNzgsMGMxLjgzLDAsMy40NywwLDQuODYuMDhzMi44NiwwLjA3LDMuNzksMGMwLjE4LTEuNDIsMC00LjE0LDAtNi4yNCwwLTMwLjkyLS4xNy02MC42NS0wLjE3LTkwLjg5VjI1NmgwLjVWMjI1LjQxYzAtMzMuNDMsMC02Ny43NiwwLTEwMC41NkM0NzYuNDgsMTIzLjI5LDQ3Ni40OCwxMTguNTEsNDc1Ljc2LDExNy42NloiPjwvcGF0aD48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0zODAuMTYsMTcyLjMxYy0wLjUyLS41MS0xLjktMC43OC0zLjc4LTAuNzUtMTEuMTEuMTktMjIuMzksMC4xNi0zMy4yOSwwLjEyLTUuMzYsMC0xMC43MSwwLTE2LjA3LDAtNS42OCwwLTUuNjgsMC01LjY5LDcuNzYsMCwyNS43NSwwLDUyLjI3LDAsNzguNzFWMjgzbDAuMDYsNC41YzAsOS4yOSwwLDE4LjQxLDAsMjcuNDUsMCwyNi4zNywwLDUxLjI3LS4xMSw3Ny44NWE4LjgsOC44LDAsMCwwLC4zMywzLjE5LDEwLjE2LDEwLjE2LDAsMCwwLDMuODMuMzRsNi4yNS0uMTVjMTQuODgtLjM1LDMwLjI2LTAuNzEsNDUuNDQtMC40LDIuNSwwLDMuMDgtLjQ3LDMuMTQtMC41M3MwLjY4LS44My42Ny00Yy0wLjA4LTY2LjEtLjA3LTEzNi40Mi4wNS0yMTVDMzgxLDE3My40NSwzODAuNDEsMTcyLjU2LDM4MC4xNiwxNzIuMzFaIj48L3BhdGg+PHBhdGggZD0iTTQ2OS41NCwxMDcuODhjLTcuNTYsMC0xNS4yNy0uMTUtMjIuNzMtMC4yOS04LjI0LS4xNS0xNi43NS0wLjMxLTI1LjE1LTAuMjktOS45MSwwLTE0LjYzLDIuMS0xNC42MywxMy44MXEwLDU1LjE3LDAsMTEwLjI5YzAsNTIuMzYuMDUsMTA2LjUxLDAsMTU5LjgxLDAsMy4wOS4zNyw3LjU2LDMuNTYsMTAuNjksMi4yOSwyLjI0LDUuNTYsMy4zNCwxMCwzLjM0LDAuMTksMCwuMzgsMCwwLjU4LDAsMTEuMTQtLjIzLDIyLjUtMC4yMiwzMy40OS0wLjE5LDQuMTEsMCw4LjIyLDAsMTIuMzMsMGgwLjUxYzEuNzYsMCwzLjI0LjA5LDQuNTYsMC4xMiw0LjgsMC4xMiw3Ljk0LjI2LDEwLjQ1LTIuMTksMi43MS0yLjY0LDIuNjItNi41MywyLjYyLTEzLDAtMzAuOTItLjE3LTYwLjY1LTAuMTctOTAuODlWMjY1aDAuNVYyMjUuNDFjMC0zMy40MywwLTY3Ljc2LDAtMTAwLjU3QzQ4NS40OCwxMTIuOSw0ODMuMjYsMTA3LjksNDY5LjU0LDEwNy44OFptNywxMTcuNTNWMjU2SDQ3NnY0My4wN2MwLDMwLjI0LjE4LDYwLC4xNyw5MC44OSwwLDIuMS4xOCw0LjgyLDAsNi4yNC0wLjkzLjA1LTIuNDMsMC0zLjc5LDBzLTMtLjExLTQuODYtMC4wOHEtNi40LDAtMTIuNzgsMGMtMTEsMC0yMi40Ni0uMDctMzMuNzEuMTYtMi45NC4wNi0zLjgzLS41MS00LjA4LTAuNzZzLTAuODYtMS4xOC0uODYtNC4yNmMwLTUzLjMsMC0xMDcuNDUsMC0xNTkuODJxMC01NS4xMywwLTExMC4yOGMwLTMsLjI2LTQsMC40LTQuMzcsMC40Mi0uMTgsMS42NS0wLjQzLDUuMjYtMC40NCw4LjMxLDAsMTYuNzcuMTQsMjUsLjI5LDcuNDksMC4xNCwxNS4yNC4yOSwyMi44OSwwLjI5LDUuMjksMCw2LjExLjY1LDYuMjIsMC43OCwwLjcyLDAuODUuNzMsNS42MiwwLjczLDcuMTlDNDc2LjUsMTU3LjY2LDQ3Ni41LDE5Miw0NzYuNSwyMjUuNDFaIj48L3BhdGg+PHBhdGggZD0iTTM4Ni40NywxNjUuODljLTIuMzYtMi4zMi01LjcxLTMuNC0xMC4yNS0zLjM0LTExLC4xOS0yMi4yNS4xNi0zMy4xMSwwLjEycS04LjA2LDAtMTYuMTEsMGMtMTMuNTYsMC0xNC42Nyw3LjYtMTQuNjcsMTYuNzYsMCwyNS43NSwwLDUyLjI4LDAsNzguNzFWMjg3LjVsMC4wNiw0LjVoMGMwLDcuNzQsMCwxNS4zOCwwLDIzLDAsMjYuMzUsMCw1MS4yNC0uMTEsNzcuNzksMCwzLjMuMzIsNywzLDkuNjcsMi41MSwyLjQ3LDYuMDgsMi45Miw5LjQsMi45MmgxbDYuMjYtLjE1YzE0Ljc4LS4zNSwzMC4wNi0wLjcxLDQ1LTAuNCw0LjI1LDAuMDksNy40MS0uOTMsOS42My0zLjEsMy0yLjk0LDMuMzgtNy4xLDMuMzctMTAuNC0wLjA4LTY2LjA5LS4wNy0xMzYuNDEuMDUtMjE1QzM5MCwxNzEuNjUsMzg4Ljg1LDE2OC4yNCwzODYuNDcsMTY1Ljg5Wm0tNS41MywyMjUuNGMwLDMuMTMtLjU2LDMuODUtMC42Nyw0cy0wLjY0LjU4LTMuMTQsMC41M2MtMTUuMTctLjMxLTMwLjU2LDAtNDUuNDQuNGwtNi4yNS4xNWExMC4xNiwxMC4xNiwwLDAsMS0zLjgzLS4zNCw4LjgsOC44LDAsMCwxLS4zMy0zLjE5YzAuMTYtMjYuNTguMTMtNTEuNDgsMC4xMS03Ny44NSwwLTksMC0xOC4xNiwwLTI3LjQ1bC0wLjA2LTQuNVYyNTguMTJjMC0yNi40MywwLTUzLDAtNzguNzEsMC03Ljc1LDAtNy43NSw1LjY5LTcuNzYsNS4zNiwwLDEwLjcxLDAsMTYuMDcsMCwxMC45LDAsMjIuMTguMDcsMzMuMjktLjEyLDEuODgsMCwzLjI2LjI0LDMuNzgsMC43NSwwLjI1LDAuMjUuODUsMS4xNCwwLjg0LDRDMzgwLjg4LDI1NC44NywzODAuODYsMzI1LjE5LDM4MC45NSwzOTEuM1oiPjwvcGF0aD48cGF0aCBkPSJNMjkwLjc1LDIyMS42NmMtMi4zMi0yLjI4LTUuNjYtMy4zNy0xMC4xNS0zLjI2LTExLjMxLjIxLTIyLjg0LDAuMTctMzQsLjEzcS03LjYsMC0xNS4yMSwwYy0xNC40NiwwLTE1LjUyLDYuOTItMTUuNTQsMTguMywwLDE4LjM2LDAsMzcuMzQsMCw1Ni41MVYzMjFIMjE2djE1LjkxYzAsMTYuNzIsMCwzMy4yMSwwLDUwLjY5LDAsOC42MywwLDEzLDMsMTYsMi41NiwyLjU0LDYsMi44MiwxMS4zMSwyLjgyaDUuMjZjNi41MywwLDEzLjE1LS4xNSwxOS41NS0wLjMsOC4yOS0uMTksMTYuODYtMC4zOCwyNS4yNS0wLjI1LDQuNTEsMC4xLDcuODctMSwxMC4yNC0zLjM2czMuNTctNS44MiwzLjU2LTEwLjUzYy0wLjEyLTUyLjg5LS4xLTEwNi42My4wNi0xNTkuNzVDMjk0LjI0LDIyOS4xNCwyOTMuODksMjI0Ljc0LDI5MC43NSwyMjEuNjZaIj48L3BhdGg+PHBhdGggZD0iTTE5NSwyNzcuMzJjLTEuNTctMS42LTQuNDQtMy4zMi05LjE3LTMuMzJIMTg2di0wLjE2Yy0xNywuMS0zNC0wLjA2LTUxLjU0LTAuMTUtNC4zMSwwLTcuNjEsMS4wOC05LjksMy4zOHMtMy40OCw1LjYyLTMuNDYsMTAuMDdjMC4xNCwzNiwuMTQsNzEuMTIsMCwxMDQuMzksMCw0LjY1LDEuMTEsOCwzLjQ2LDEwLjM2czUuNjksMy40MSwxMC4yNiwzLjM0YzE3LjM2LS4yNiwzNC4zOC0wLjI1LDUwLjYsMGgxYzMuMzksMCw3LS4zNiw5LjU5LTIuOTJzMi44Ny02LjM0LDIuODItOS4zMWMtMC4yMi0xMi4yOC0uMTgtMjMuNDgtMC4xNC0zNS4zNSwwLTMuNDgsMC03LDAtMTAuNjVsMC00LjQ5YzAtNC4zNywwLTkuMDYsMC0xMy45NCwwLTEyLjc0LS4wOS0yNy4xNS4xNS0zOS43NEMxOTguOTIsMjgzLjc5LDE5Ny42NSwyODAsMTk1LDI3Ny4zMloiPjwvcGF0aD48cGF0aCBkPSJNMTAwLjk0LDMzMC42NmMtMi4xNy0yLjEzLTUuMi0zLjE0LTkuMzEtM2gwYy00LjcuMS05LjI4LDAuMTEtMTMuMTQsMC4xbC01LjM4LDBxLTcuOTEsMC0xNS44MiwwbC01LjMyLDBoMGMtMy44NSwwLTguNDIsMC0xMy4xLS4xMi00LS4xMi03LjA1Ljg2LTkuMiwzcy0zLjIyLDUuMjYtMy4xNyw5LjUzYzAuMTksMTguNDQuMTksMzUuNSwwLDUyLjE1LDAsNC4yMiwxLDcuMzUsMy4xOCw5LjU1czUuMDcsMy4yLDksMy4ySDkxLjc0YzQsMCw3LjA3LTEuMSw5LjItMy4yNHMzLjEzLTUsMy4xMi04LjdjLTAuMDUtMTguODIsMC0zNy43MSwwLTUzLjdDMTA0LjA4LDMzNS42MywxMDMsMzMyLjcxLDEwMC45NCwzMzAuNjZaIj48L3BhdGg+PC9zdmc+") no-repeat 0 0; -} - -.signal-4:before { - background: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGRhdGEtbmFtZT0iTGF5ZXIgMSIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHg9IjBweCIgeT0iMHB4Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6bm9uZTt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPndpZmkyMDwvdGl0bGU+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNDc1Ljc2LDExNy42NmMtMC4xMS0uMTMtMC45My0wLjc3LTYuMjItMC43OC03LjY0LDAtMTUuMzktLjE1LTIyLjg5LTAuMjktOC4xOS0uMTUtMTYuNjYtMC4zMS0yNS0wLjI5LTMuNjEsMC00Ljg0LjI2LTUuMjYsMC40NC0wLjEzLjMyLS40LDEuMzQtMC40LDQuMzdxMCw1NS4xNywwLDExMC4yOGMwLDUyLjM3LjA1LDEwNi41MiwwLDE1OS44MiwwLDMuMDguNiw0LC44Niw0LjI2czEuMTUsMC44Miw0LjA4Ljc2YzExLjI1LS4yNCwyMi42Ni0wLjIsMzMuNzEtMC4xNiw0LjI2LDAsOC41NCwwLDEyLjc4LDAsMS44OCwwLDMuNDcsMCw0Ljg2LjA4czIuODYsMC4wNywzLjc5LDBjMC4xOC0xLjQyLDAtNC4xNCwwLTYuMjQsMC0zMC45Mi0uMTctNjAuNjUtMC4xNy05MC44OVYyNTZoMC41VjIyNS40MWMwLTMzLjQzLDAtNjcuNzYsMC0xMDAuNTZDNDc2LjQ4LDEyMy4yOSw0NzYuNDgsMTE4LjUxLDQ3NS43NiwxMTcuNjZaIj48L3BhdGg+PHBhdGggZD0iTTQ2OS41NCwxMDcuODhjLTcuNTYsMC0xNS4yNy0uMTUtMjIuNzMtMC4yOS04LjI0LS4xNS0xNi43Ni0wLjMxLTI1LjE1LTAuMjktOS45MSwwLTE0LjYzLDIuMS0xNC42MywxMy44MXEwLDU1LjE3LDAsMTEwLjI5YzAsNTIuMzYuMDUsMTA2LjUxLDAsMTU5LjgxLDAsMy4wOS4zNyw3LjU2LDMuNTYsMTAuNjksMi4yOSwyLjI0LDUuNTYsMy4zNCwxMCwzLjM0LDAuMTksMCwuMzgsMCwwLjU4LDAsMTEuMTQtLjIzLDIyLjUtMC4yMiwzMy40OS0wLjE5LDQuMTEsMCw4LjIyLDAsMTIuMzMsMGgwLjUxYzEuNzYsMCwzLjI0LjA5LDQuNTYsMC4xMiw0LjgsMC4xMiw3Ljk0LjI2LDEwLjQ1LTIuMTksMi43MS0yLjY0LDIuNjItNi41MywyLjYyLTEzLDAtMzAuOTItLjE3LTYwLjY1LTAuMTctOTAuODlWMjY1aDAuNVYyMjUuNDFjMC0zMy40MywwLTY3Ljc2LDAtMTAwLjU3QzQ4NS40OCwxMTIuOSw0ODMuMjYsMTA3LjksNDY5LjU0LDEwNy44OFptNywxMTcuNTNWMjU2SDQ3NnY0My4wN2MwLDMwLjI0LjE4LDYwLC4xNyw5MC44OSwwLDIuMS4xOCw0LjgyLDAsNi4yNC0wLjk0LjA1LTIuNDMsMC0zLjc5LDBzLTMtLjExLTQuODYtMC4wOGMtNC4yNCwwLTguNTIsMC0xMi43OCwwLTExLDAtMjIuNDYtLjA3LTMzLjcxLjE2LTIuOTQuMDYtMy44My0uNTEtNC4wOC0wLjc2cy0wLjg2LTEuMTgtLjg2LTQuMjZjMC01My4zLDAtMTA3LjQ1LDAtMTU5LjgycTAtNTUuMTMsMC0xMTAuMjhjMC0zLC4yNi00LDAuNC00LjM3LDAuNDItLjE4LDEuNjUtMC40Myw1LjI2LTAuNDQsOC4zLDAsMTYuNzcuMTQsMjUsLjI5LDcuNDksMC4xNCwxNS4yNC4yOSwyMi44OSwwLjI5LDUuMjksMCw2LjExLjY1LDYuMjIsMC43OCwwLjcyLDAuODUuNzMsNS42MiwwLjczLDcuMTlDNDc2LjUsMTU3LjY2LDQ3Ni41LDE5Miw0NzYuNSwyMjUuNDFaIj48L3BhdGg+PHBhdGggZD0iTTM4Ni40NywxNjUuODljLTIuMzYtMi4zMi01LjY5LTMuNC0xMC4yNS0zLjM0LTExLC4xOS0yMi4yNS4xNi0zMy4xMSwwLjEycS04LjA2LDAtMTYuMTEsMGMtMTMuNTYsMC0xNC42Nyw3LjYtMTQuNjcsMTYuNzYsMCwyNS43NSwwLDUyLjI4LDAsNzguNzFWMjg3LjVsMC4wNiw0LjVoMGMwLDcuNzQsMCwxNS4zOCwwLDIzLDAsMjYuMzUsMCw1MS4yNC0uMTEsNzcuNzksMCwzLjMuMzIsNywzLDkuNjcsMi41MSwyLjQ3LDYuMDgsMi45Miw5LjQsMi45MmgxbDYuMjYtLjE1YzE0Ljc4LS4zNSwzMC4wNi0wLjcxLDQ1LTAuNCw0LjI2LDAuMDksNy40MS0uOTMsOS42My0zLjEsMy0yLjk0LDMuMzgtNy4xLDMuMzctMTAuNC0wLjA4LTY2LjA5LS4wNy0xMzYuNDEuMDUtMjE1QzM5MCwxNzEuNjUsMzg4Ljg1LDE2OC4yNCwzODYuNDcsMTY1Ljg5WiI+PC9wYXRoPjxwYXRoIGQ9Ik0yOTAuNzUsMjIxLjY2Yy0yLjMyLTIuMjgtNS42Ni0zLjM3LTEwLjE1LTMuMjYtMTEuMzEuMjEtMjIuODQsMC4xNy0zNCwuMTNxLTcuNiwwLTE1LjIxLDBjLTE0LjQ2LDAtMTUuNTIsNi45Mi0xNS41NCwxOC4zLDAsMTguMzYsMCwzNy4zNCwwLDU2LjUxVjMyMUgyMTZ2MTUuOTFjMCwxNi43MiwwLDMzLjIxLDAsNTAuNjksMCw4LjYzLDAsMTMsMywxNiwyLjU2LDIuNTQsNiwyLjgyLDExLjMxLDIuODJoNS4yNmM2LjUzLDAsMTMuMTUtLjE1LDE5LjU1LTAuMyw4LjI5LS4xOSwxNi44Ni0wLjM4LDI1LjI1LTAuMjUsNC41MSwwLjEsNy44Ny0xLDEwLjI0LTMuMzZzMy41Ny01LjgyLDMuNTYtMTAuNTNjLTAuMTItNTIuODktLjEtMTA2LjYzLjA2LTE1OS43NUMyOTQuMjQsMjI5LjE0LDI5My44OSwyMjQuNzQsMjkwLjc1LDIyMS42NloiPjwvcGF0aD48cGF0aCBkPSJNMTk1LDI3Ny4zMmMtMS41Ny0xLjYtNC40NC0zLjMyLTkuMTctMy4zMkgxODZ2LTAuMTZjLTE3LC4xLTM0LTAuMDYtNTEuNTQtMC4xNS00LjMyLDAtNy42MSwxLjA4LTkuOSwzLjM4cy0zLjQ4LDUuNjItMy40NiwxMC4wN2MwLjE0LDM2LC4xNCw3MS4xMiwwLDEwNC4zOSwwLDQuNjUsMS4xMSw4LDMuNDYsMTAuMzZzNS42NywzLjQxLDEwLjI2LDMuMzRjMTcuMzYtLjI2LDM0LjM4LTAuMjUsNTAuNiwwaDFjMy4zOSwwLDctLjM2LDkuNTktMi45MnMyLjg3LTYuMzQsMi44Mi05LjMxYy0wLjIyLTEyLjI4LS4xOC0yMy40OC0wLjE0LTM1LjM1LDAtMy40OCwwLTcsMC0xMC42NWwwLTQuNDljMC00LjM3LDAtOS4wNiwwLTEzLjk0LDAtMTIuNzQtLjA5LTI3LjE1LjE1LTM5Ljc0QzE5OC45MiwyODMuNzksMTk3LjY1LDI4MCwxOTUsMjc3LjMyWiI+PC9wYXRoPjxwYXRoIGQ9Ik0xMDAuOTQsMzMwLjY2Yy0yLjE4LTIuMTMtNS4yMS0zLjE0LTkuMzEtM2gwYy00LjcuMS05LjI3LDAuMTEtMTMuMTQsMC4xbC01LjM4LDBxLTcuOTEsMC0xNS44MiwwbC01LjMyLDBoMGMtMy44NSwwLTguNDIsMC0xMy4xLS4xMi00LjA1LS4xMi03LjA1Ljg2LTkuMiwzcy0zLjIyLDUuMjYtMy4xNyw5LjUzYzAuMTksMTguNDQuMTksMzUuNSwwLDUyLjE1LDAsNC4yMiwxLDcuMzUsMy4xOCw5LjU1czUuMDcsMy4yLDksMy4ySDkxLjc0YzQsMCw3LjA3LTEuMSw5LjItMy4yNHMzLjEzLTUsMy4xMi04LjdjLTAuMDUtMTguODIsMC0zNy43MSwwLTUzLjdDMTA0LjA4LDMzNS42MywxMDMsMzMyLjcxLDEwMC45NCwzMzAuNjZaIj48L3BhdGg+PC9zdmc+") no-repeat 0 0; -} - -.signal-5:before { - background: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGRhdGEtbmFtZT0iTGF5ZXIgMSIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHg9IjBweCIgeT0iMHB4Ij48dGl0bGU+d2lmaTIwPC90aXRsZT48cGF0aCBkPSJNNDY5LjU0LDEwNy44OGMtNy41NiwwLTE1LjI3LS4xNS0yMi43My0wLjI5LTguMjQtLjE1LTE2Ljc1LTAuMzEtMjUuMTUtMC4yOS05LjkxLDAtMTQuNjMsMi4xLTE0LjYzLDEzLjgxcTAsNTUuMTcsMCwxMTAuMjljMCw1Mi4zNi4wNSwxMDYuNTEsMCwxNTkuODEsMCwzLjA5LjM3LDcuNTYsMy41NiwxMC42OSwyLjI5LDIuMjQsNS41NiwzLjM0LDEwLDMuMzQsMC4xOSwwLC4zOCwwLDAuNTgsMCwxMS4xNC0uMjMsMjIuNS0wLjIyLDMzLjQ5LTAuMTksNC4xMSwwLDguMjIsMCwxMi4zMywwaDAuNTFjMS43NiwwLDMuMjQuMDksNC41NiwwLjEyLDQuOCwwLjEyLDcuOTQuMjYsMTAuNDUtMi4xOSwyLjcxLTIuNjQsMi42Mi02LjUzLDIuNjItMTMsMC0zMC45Mi0uMTctNjAuNjUtMC4xNy05MC44OVYyNjVoMC41VjIyNS40MWMwLTMzLjQzLDAtNjcuNzYsMC0xMDAuNTdDNDg1LjQ4LDExMi45LDQ4My4yNiwxMDcuOSw0NjkuNTQsMTA3Ljg4WiI+PC9wYXRoPjxwYXRoIGQ9Ik0zODYuNDcsMTY1Ljg5Yy0yLjM2LTIuMzItNS42OC0zLjQtMTAuMjUtMy4zNC0xMSwuMTktMjIuMjUuMTYtMzMuMTEsMC4xMnEtOC4wNiwwLTE2LjExLDBjLTEzLjU2LDAtMTQuNjcsNy42LTE0LjY3LDE2Ljc2LDAsMjUuNzUsMCw1Mi4yOCwwLDc4LjcxVjI4Ny41bDAuMDYsNC41aDBjMCw3Ljc0LDAsMTUuMzgsMCwyMywwLDI2LjM1LDAsNTEuMjQtLjExLDc3Ljc5LDAsMy4zLjMyLDcsMyw5LjY3LDIuNTEsMi40Nyw2LjA4LDIuOTIsOS40LDIuOTJoMWw2LjI2LS4xNWMxNC43OC0uMzUsMzAuMDYtMC43MSw0NS0wLjQsNC4yNSwwLjA5LDcuNDEtLjkzLDkuNjMtMy4xLDMtMi45NCwzLjM4LTcuMSwzLjM3LTEwLjQtMC4wOC02Ni4wOS0uMDctMTM2LjQxLjA1LTIxNUMzOTAsMTcxLjY1LDM4OC44NSwxNjguMjQsMzg2LjQ3LDE2NS44OVoiPjwvcGF0aD48cGF0aCBkPSJNMjkwLjc1LDIyMS42NmMtMi4zMi0yLjI4LTUuNjQtMy4zNy0xMC4xNS0zLjI2LTExLjMxLjIxLTIyLjg1LDAuMTctMzQsLjEzcS03LjYsMC0xNS4yMSwwYy0xNC40NiwwLTE1LjUyLDYuOTItMTUuNTQsMTguMywwLDE4LjM2LDAsMzcuMzQsMCw1Ni41MVYzMjFIMjE2djE1LjkxYzAsMTYuNzIsMCwzMy4yMSwwLDUwLjY5LDAsOC42MywwLDEzLDMsMTYsMi41NiwyLjU0LDYsMi44MiwxMS4zMSwyLjgyaDUuMjZjNi41MywwLDEzLjE1LS4xNSwxOS41NS0wLjMsOC4yOS0uMTksMTYuODYtMC4zOCwyNS4yNS0wLjI1LDQuNTMsMC4xLDcuODctMSwxMC4yNC0zLjM2czMuNTctNS44MiwzLjU2LTEwLjUzYy0wLjEyLTUyLjg5LS4xLTEwNi42My4wNi0xNTkuNzVDMjk0LjI0LDIyOS4xNCwyOTMuODksMjI0Ljc0LDI5MC43NSwyMjEuNjZaIj48L3BhdGg+PHBhdGggZD0iTTE5NSwyNzcuMzJjLTEuNTctMS42LTQuNDQtMy4zMi05LjE3LTMuMzJIMTg2di0wLjE2Yy0xNywuMS0zNC0wLjA2LTUxLjU0LTAuMTUtNC4zMywwLTcuNjEsMS4wOC05LjksMy4zOHMtMy40OCw1LjYyLTMuNDYsMTAuMDdjMC4xNCwzNiwuMTQsNzEuMTIsMCwxMDQuMzksMCw0LjY1LDEuMTEsOCwzLjQ2LDEwLjM2czUuNjgsMy40MSwxMC4yNiwzLjM0YzE3LjM2LS4yNiwzNC4zOC0wLjI1LDUwLjYsMGgxYzMuMzksMCw3LS4zNiw5LjU5LTIuOTJzMi44Ny02LjM0LDIuODItOS4zMWMtMC4yMi0xMi4yOC0uMTgtMjMuNDgtMC4xNC0zNS4zNSwwLTMuNDgsMC03LDAtMTAuNjVsMC00LjQ5YzAtNC4zNywwLTkuMDYsMC0xMy45NCwwLTEyLjc0LS4wOS0yNy4xNS4xNS0zOS43NEMxOTguOTIsMjgzLjc5LDE5Ny42NSwyODAsMTk1LDI3Ny4zMloiPjwvcGF0aD48cGF0aCBkPSJNMTAwLjk0LDMzMC42NmMtMi4xOC0yLjEzLTUuMjEtMy4xNC05LjMxLTNoMGMtNC43LjEtOS4yNywwLjExLTEzLjE0LDAuMWwtNS4zOCwwcS03LjkxLDAtMTUuODIsMGwtNS4zMiwwaDBjLTMuODUsMC04LjQyLDAtMTMuMS0uMTItNC4wNS0uMTItNy4wNS44Ni05LjIsM3MtMy4yMiw1LjI2LTMuMTcsOS41M2MwLjE5LDE4LjQ0LjE5LDM1LjUsMCw1Mi4xNSwwLDQuMjIsMSw3LjM1LDMuMTgsOS41NXM1LjA3LDMuMiw5LDMuMkg5MS43NGM0LDAsNy4wNy0xLjEsOS4yLTMuMjRzMy4xMy01LDMuMTItOC43Yy0wLjA1LTE4LjgyLDAtMzcuNzEsMC01My43QzEwNC4wOCwzMzUuNjMsMTAzLDMzMi43MSwxMDAuOTQsMzMwLjY2WiI+PC9wYXRoPjwvc3ZnPg==") no-repeat 0 0; -} diff --git a/dashboard/src/app/artist/artist.component.html b/dashboard/src/app/artist/artist.component.html index f1b317a..1c6578b 100644 --- a/dashboard/src/app/artist/artist.component.html +++ b/dashboard/src/app/artist/artist.component.html @@ -85,64 +85,9 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameAlbumYearArtistAlbum ArtistPlay CountGenreBit RateRating
{{song['Track Number'] ? (("0" + song['Track Number']).slice(-2)) : "--"}}{{song.Name}}{{song.Album}}{{song.Year}}{{song.Artist}}{{song['Album Artist'] ? song['Album Artist'] : "-" }}{{song['Play Count']}}{{song.Genre}} - - - - - - - - - - - - - -
+ - - - - diff --git a/dashboard/src/app/artist/artist.component.ts b/dashboard/src/app/artist/artist.component.ts index 0b67ee1..7eb221a 100644 --- a/dashboard/src/app/artist/artist.component.ts +++ b/dashboard/src/app/artist/artist.component.ts @@ -19,8 +19,7 @@ export class ArtistComponent implements OnInit { songs: Array = []; artist: Artist = new Artist(); // To activate button in interface var - moreDataAvailable = false; - atBottom = false; + moreDataAvailable = true; sortable = false; lockLoadData = false; @@ -45,6 +44,10 @@ export class ArtistComponent implements OnInit { return; } + if (!this.moreDataAvailable) { + return; + } + this.lockLoadData = true; this.elsService.getArtistSongs(this.artistName, this.songs.length).subscribe( data => { @@ -65,39 +68,4 @@ export class ArtistComponent implements OnInit { } ); } - - scrollTop(): void { - window.scrollTo(0, 0); - } - - /** - * Handle scroll: - * - load data if at bottom of screen (if needed) - * - hide/show "go to top" button - * - * @param event scroll event - */ - onScroll(event: any) { - if (this.moreDataAvailable && - (window.innerHeight + window.scrollY) >= document.body.offsetHeight) { - this.loadSongs(); - } - - if (window.scrollY > window.innerHeight) { - this.atBottom = true; - } - - if (window.scrollY === 0) { - this.atBottom = false; - } - } - - sort(): void { - this.songs = new SortByPipe().transform(this.songs, 'Year', 'Album', 'Track Number', 'Play Count'); - this.sortable = false; - } - - roundBitRate(bitRate: number) { - return Math.round(bitRate / 64); - } } diff --git a/dashboard/src/app/song-table/song-table.component.css b/dashboard/src/app/song-table/song-table.component.css new file mode 100644 index 0000000..0c53a7e --- /dev/null +++ b/dashboard/src/app/song-table/song-table.component.css @@ -0,0 +1,116 @@ +/* Vertical align for all tables */ +.table > tbody > tr > td { + vertical-align: middle; +} + + +/*** BOTTOM BUTTON PART ***/ +/* Thank to https://codyhouse.co/gem/back-to-top/ */ +.btn-top { + display: inline-block; + height: 40px; + width: 40px; + position: fixed; + bottom: 20px; + right: 20px; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.05); + /* image replacement properties */ + /*overflow: hidden;*/ + /*text-indent: 100%;*/ + /*white-space: nowrap;*/ + /*background: rgba(232, 98, 86, 0.8);*/ + /*background: #ff9000;*/ + visibility: hidden; + opacity: 0; + -webkit-transition: opacity .3s 0s, visibility 0s .3s; + -moz-transition: opacity .3s 0s, visibility 0s .3s; + transition: opacity .3s 0s, visibility 0s .3s; +} +.btn-top.btn-top-is-visible, .no-touch .btn-top:hover { + -webkit-transition: opacity .3s 0s, visibility 0s 0s; + -moz-transition: opacity .3s 0s, visibility 0s 0s; + transition: opacity .3s 0s, visibility 0s 0s; +} +.btn-top.btn-top-is-visible { + /* the button becomes visible */ + visibility: visible; + opacity: 1; +} + +.btn-sort { + bottom: 20px; + right: 70px; +} +/*** END BOTTOM BUTTON PART ***/ + + +/*** RATING STAR ***/ +.star { + color:rgb(38, 135, 251); +} +.table tbody > tr > td.star { + white-space: nowrap; +} + + +/*** HEART ***/ +.heart { + color: rgb(251, 18, 79); + animation: pulse 1s ease infinite +} + +@keyframes pulse { + 0% { transform: scale(1); } + 50% { transform: scale(1.3); } + 100% { transform: scale(1); } +} + +/* A class to just have an icon on the right of the table for heart */ +.table tbody > tr > td.loved { + border: 0px; + background-color: white; + margin-left: 5px; +} +/*** END HEART ***/ + + +/*** BIT RATE/SIGNAL PART ***/ +/* +https://css-tricks.com/css-content/ +https://css-tricks.com/using-svg/ +https://codepen.io/tigt/post/optimizing-svgs-in-data-uris +https://www.base64encode.org/ +*/ +.signal:before { + display: inline-block; + width: 30px; + height: 30px; + margin-right: 5px; + content: ""; + background-size: 100%; +} + +.signal-0:before { + background: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGRhdGEtbmFtZT0iTGF5ZXIgMSIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHg9IjBweCIgeT0iMHB4Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6bm9uZTt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPndpZmkyMDwvdGl0bGU+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNOTQuNjQsMzM3LjA5Yy0wLjItLjE5LTEtMC41MS0yLjgxLTAuNDctNC43OS4xLTkuNDQsMC4xMS0xMy4zNSwwLjFsLTUuNCwwcS03Ljg2LDAtMTUuNzMsMGwtNS4zNCwwYy0zLjkyLDAtOC41OCwwLTEzLjM4LS4xM0gzOC4yNEE0LjEsNC4xLDAsMCwwLDM2LDMzN3MtMC41MS41My0uNDgsM2MwLjE5LDE4LjUuMTksMzUuNjIsMCw1Mi4zNCwwLDEuODUuMjksMi44NCwwLjU3LDMuMTJhNC4zMyw0LjMzLDAsMCwwLDIuNjIuNTNIOTEuNzRhNC41Niw0LjU2LDAsMCwwLDIuODMtLjYsMy43LDMuNywwLDAsMCwuNDktMi4zMWMtMC4wNS0xOC44NCwwLTM3Ljc0LDAtNTMuNzVBMy43NywzLjc3LDAsMCwwLDk0LjY0LDMzNy4wOVoiPjwvcGF0aD48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik00NzUuNzYsMTE3LjY2Yy0wLjExLS4xMy0wLjkzLTAuNzctNi4yMi0wLjc4LTcuNjQsMC0xNS4zOS0uMTUtMjIuODktMC4yOS04LjE5LS4xNS0xNi42NS0wLjMxLTI1LTAuMjktMy42MSwwLTQuODQuMjYtNS4yNiwwLjQ0LTAuMTMuMzItLjQsMS4zNC0wLjQsNC4zN3EwLDU1LjE3LDAsMTEwLjI4YzAsNTIuMzcuMDUsMTA2LjUyLDAsMTU5LjgyLDAsMy4wOC42LDQsLjg2LDQuMjZzMS4xNCwwLjgyLDQuMDguNzZDNDMyLjI4LDM5Niw0NDMuNywzOTYsNDU0Ljc0LDM5NmM0LjI2LDAsOC41MiwwLDEyLjc4LDBoMGMxLjg1LDAsMy40NS4wOSw0Ljg0LDAuMTNzMi44NiwwLjEsMy43OSwwYzAuMTgtMS40MiwwLTQuMTMsMC02LjIzLDAtMzAuOTItLjE3LTYwLjY0LTAuMTctOTAuODhWMjU2aDAuNVYyMjUuNDFjMC0zMy40MywwLTY3Ljc2LDAtMTAwLjU2QzQ3Ni40OCwxMjMuMjksNDc2LjQ4LDExOC41MSw0NzUuNzYsMTE3LjY2WiI+PC9wYXRoPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTM4MC4xNiwxNzIuMzFjLTAuNTItLjUxLTEuODgtMC43OC0zLjc4LTAuNzUtMTEuMTEuMTktMjIuMzksMC4xNi0zMy4yOSwwLjEyLTUuMzYsMC0xMC43MiwwLTE2LjA3LDAtNS42OCwwLTUuNjgsMC01LjY5LDcuNzYsMCwyNS43NSwwLDUyLjI3LDAsNzguNzFWMjgzbDAuMDYsNC41YzAsOS4yOSwwLDE4LjQxLDAsMjcuNDUsMCwyNi4zNywwLDUxLjI3LS4xMSw3Ny44NWE4LjgsOC44LDAsMCwwLC4zMywzLjE5LDEwLjIsMTAuMiwwLDAsMCwzLjgzLjM0bDYuMjUtLjE1YzE0Ljg4LS4zNSwzMC4yNi0wLjcxLDQ1LjQ0LTAuNCwyLjQ5LDAsMy4wOC0uNDcsMy4xNC0wLjUzczAuNjgtLjgzLjY3LTRjLTAuMDgtNjYuMS0uMDctMTM2LjQyLjA1LTIxNUMzODEsMTczLjQ1LDM4MC40MSwxNzIuNTYsMzgwLjE2LDE3Mi4zMVoiPjwvcGF0aD48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xODguNjMsMjgzLjQ4YTQsNCwwLDAsMC0yLjgxLS44MWMtMTYuNjUuMS0zNCwuMS01MS41MywwLTEuNzQsMC0zLC4yNi0zLjQ0Ljc1cy0wLjgsMS44NS0uNzksMy42N2MwLjE0LDM2LC4xNSw3MS4xNiwwLDEwNC40NiwwLDIuODIuNTUsMy42OSwwLjgsMy45MnMxLjEsMC43NywzLjguNzRjOC42Ni0uMTMsMTcuMjMtMC4xOSwyNS42Ny0wLjE5czE3LDAuMDcsMjUuMjEuMmExMy4yOSwxMy4yOSwwLDAsMCw0LS4yOSw5LjMxLDkuMzEsMCwwLDAsLjIzLTIuNzdjLTAuMjItMTIuMzgtLjE4LTIzLjYzLTAuMTQtMzUuNTQsMC00Ljg4LDAtOS44OCwwLTE1LjEybDAtNC41YzAtMywwLTYuMiwwLTkuNDMsMC0xMi43OS0uMDktMjcuMjkuMTUtNDBDMTg5Ljg4LDI4Ni4xMywxODkuNDUsMjg0LjMyLDE4OC42MywyODMuNDhaIj48L3BhdGg+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMjg0LjQ0LDIyOC4wN2MtMC4xOC0uMTctMS0wLjczLTMuNjctMC42OC0xMS40MS4yMS0yMywuMTctMzQuMiwwLjEzcS03LjU4LDAtMTUuMTcsMGMtNC44OCwwLTUuNjQuNzUtNS43NCwwLjktMC43OSwxLjE0LS43OSw1LjctMC44LDguNDIsMCwxOC4zNiwwLDM3LjMzLDAsNTYuNDlWMzEySDIyNXYyNC45MWMwLDE2LjcyLDAsMzMuMjEsMCw1MC42OCwwLDQsMCw4LjIuNCw5LjUzYTQxLjQ3LDQxLjQ3LDAsMCwwLDcuMDcuMjZoMy4xMmM2LjQzLDAsMTMtLjE1LDE5LjM0LTAuMjksOC4zOC0uMTksMTctMC4zOSwyNS42LTAuMjUsMS44OCwwLDMuMjQtLjI1LDMuNzctMC43N3MwLjg5LTIuMDUuODgtNC4xYy0wLjEyLTUyLjktLjEtMTA2LjY3LjA2LTE1OS44QzI4NS4yNCwyMjkuMTgsMjg0LjY4LDIyOC4zMSwyODQuNDQsMjI4LjA3WiI+PC9wYXRoPjxwYXRoIGQ9Ik00ODUuNDksMTI0Ljg1YzAtMTEuOTUtMi4yMi0xNi45NS0xNS45NC0xNy03LjU2LDAtMTUuMjctLjE1LTIyLjczLTAuMjktOC4yNC0uMTUtMTYuNzQtMC4zMS0yNS4xNS0wLjI5LTkuOTEsMC0xNC42MywyLjEtMTQuNjMsMTMuODFxMCw1NS4xNywwLDExMC4yOWMwLDUyLjM2LjA1LDEwNi41MSwwLDE1OS44MSwwLDMuMDkuMzcsNy41NiwzLjU2LDEwLjY5LDIuMjksMi4yNCw1LjU2LDMuMzQsMTAsMy4zNCwwLjE5LDAsLjM4LDAsMC41OCwwLDExLjE0LS4yMywyMi41LTAuMjIsMzMuNDktMC4xOSw0LjExLDAsOC4yMiwwLDEyLjMzLDBoMC41MWMxLjc2LDAsMy4yNC4wOSw0LjU2LDAuMTIsNC44LDAuMTIsNy45NC4yNiwxMC40NS0yLjE5LDIuNzEtMi42NCwyLjYyLTYuNTMsMi42Mi0xMywwLTMwLjkyLS4xNy02MC42NS0wLjE3LTkwLjg5VjI2NWgwLjVWMjI1LjQxQzQ4NS41LDE5Miw0ODUuNSwxNTcuNjUsNDg1LjQ5LDEyNC44NVptLTksMTAwLjU3VjI1Nkg0NzZ2NDMuMDdjMCwzMC4yNC4xOCw2MCwuMTcsOTAuODgsMCwyLjEuMTgsNC44MSwwLDYuMjMtMC45My4wNS0yLjQzLDAtMy43OSwwcy0zLS4xMy00Ljg0LTAuMTNoMGMtNC4yNiwwLTguNTIsMC0xMi43OCwwLTExLDAtMjIuNDYsMC0zMy43MS4yMS0yLjk0LjA2LTMuODMtLjUxLTQuMDgtMC43NnMtMC44Ni0xLjE4LS44Ni00LjI2YzAtNTMuMywwLTEwNy40NSwwLTE1OS44MnEwLTU1LjEzLDAtMTEwLjI4YzAtMywuMjYtNCwwLjQtNC4zNywwLjQyLS4xOCwxLjY1LTAuNDMsNS4yNi0wLjQ0LDguMzEsMCwxNi43Ny4xNCwyNSwuMjksNy40OSwwLjE0LDE1LjI0LjI5LDIyLjg5LDAuMjksNS4yOSwwLDYuMTEuNjUsNi4yMiwwLjc4LDAuNzIsMC44NS43Myw1LjYyLDAuNzMsNy4xOUM0NzYuNSwxNTcuNjYsNDc2LjUsMTkyLDQ3Ni41LDIyNS40MVoiPjwvcGF0aD48cGF0aCBkPSJNMzg2LjQ3LDE2NS44OWMtMi4zNi0yLjMyLTUuNzEtMy40LTEwLjI1LTMuMzQtMTEsLjE5LTIyLjI1LjE2LTMzLjExLDAuMTJxLTguMDYsMC0xNi4xMSwwYy0xMy41NiwwLTE0LjY3LDcuNi0xNC42NywxNi43NiwwLDI1Ljc1LDAsNTIuMjgsMCw3OC43MVYyODcuNWwwLjA2LDQuNWgwYzAsNy43NCwwLDE1LjM4LDAsMjMsMCwyNi4zNSwwLDUxLjI0LS4xMSw3Ny43OSwwLDMuMy4zMiw3LDMsOS42NywyLjUxLDIuNDcsNi4wOCwyLjkyLDkuNCwyLjkyaDFsNi4yNi0uMTVjMTQuNzgtLjM1LDMwLjA2LTAuNzEsNDUtMC40LDQuMjQsMC4wOSw3LjQxLS45Myw5LjYzLTMuMSwzLTIuOTQsMy4zOC03LjEsMy4zNy0xMC40LTAuMDgtNjYuMDktLjA3LTEzNi40MS4wNS0yMTVDMzkwLDE3MS42NSwzODguODUsMTY4LjI0LDM4Ni40NywxNjUuODlabS01LjUzLDIyNS40YzAsMy4xMy0uNTYsMy44NS0wLjY3LDRzLTAuNjUuNTgtMy4xNCwwLjUzYy0xNS4xNy0uMzEtMzAuNTYsMC00NS40NC40bC02LjI1LjE1YTEwLjIsMTAuMiwwLDAsMS0zLjgzLS4zNCw4LjgsOC44LDAsMCwxLS4zMy0zLjE5YzAuMTYtMjYuNTguMTMtNTEuNDgsMC4xMS03Ny44NSwwLTksMC0xOC4xNiwwLTI3LjQ1bC0wLjA2LTQuNVYyNTguMTJjMC0yNi40MywwLTUzLDAtNzguNzEsMC03Ljc1LDAtNy43NSw1LjY5LTcuNzYsNS4zNSwwLDEwLjcxLDAsMTYuMDcsMCwxMC45LDAsMjIuMTguMDcsMzMuMjktLjEyLDEuODksMCwzLjI2LjI0LDMuNzgsMC43NSwwLjI1LDAuMjUuODUsMS4xNCwwLjg0LDRDMzgwLjg4LDI1NC44NywzODAuODYsMzI1LjE5LDM4MC45NSwzOTEuM1oiPjwvcGF0aD48cGF0aCBkPSJNMjkwLjc1LDIyMS42NmMtMi4zMi0yLjI4LTUuNjQtMy4zNy0xMC4xNS0zLjI2LTExLjMxLjIxLTIyLjg0LDAuMTctMzQsLjEzcS03LjYsMC0xNS4yMSwwYy0xNC40NiwwLTE1LjUyLDYuOTItMTUuNTQsMTguMywwLDE4LjM2LDAsMzcuMzQsMCw1Ni41MVYzMjFIMjE2djE1LjkxYzAsMTYuNzIsMCwzMy4yMSwwLDUwLjY5LDAsOC42MywwLDEzLDMsMTYsMi41NiwyLjU0LDYsMi44MiwxMS4zMSwyLjgyaDUuMjZjNi41MywwLDEzLjE1LS4xNSwxOS41NS0wLjMsOC4yOS0uMTksMTYuODYtMC4zOCwyNS4yNS0wLjI1LDQuNTEsMC4xLDcuODctMSwxMC4yNC0zLjM2czMuNTctNS44MiwzLjU2LTEwLjUzYy0wLjEyLTUyLjg5LS4xLTEwNi42My4wNi0xNTkuNzVDMjk0LjI0LDIyOS4xNCwyOTMuODksMjI0Ljc0LDI5MC43NSwyMjEuNjZaTTI4NS4xNywzOTJjMCwyLS4zMiwzLjU0LTAuODgsNC4xcy0xLjg5LjgtMy43NywwLjc3Yy04LjU2LS4xNC0xNy4yMi4wNi0yNS42LDAuMjUtNi4zNS4xNC0xMi45MSwwLjI5LTE5LjM0LDAuMjloLTMuMTJhNDEuNDcsNDEuNDcsMCwwLDEtNy4wNy0uMjZjLTAuNDItMS4zMy0uNC01LjQ5LTAuNC05LjUzLDAtMTcuNDcsMC0zNCwwLTUwLjY4VjMxMmgtMC4xNlYyOTMuM2MwLTE5LjE2LDAtMzguMTMsMC01Ni40OSwwLTIuNzIsMC03LjI3LjgtOC40MiwwLjEtLjE1Ljg3LTAuOSw1Ljc0LTAuOXE3LjU4LDAsMTUuMTcsMGMxMS4yLDAsMjIuNzguMDgsMzQuMi0uMTMsMi43Mi0uMDUsMy41LjUxLDMuNjcsMC42OHMwLjgsMS4xMS43OSw0LjA4QzI4NS4wNywyODUuMjksMjg1LjA1LDMzOS4wNSwyODUuMTcsMzkyWiI+PC9wYXRoPjxwYXRoIGQ9Ik0xOTUsMjc3LjMyYy0xLjU3LTEuNi00LjQ0LTMuMzItOS4xNy0zLjMySDE4NnYtMC4xNmMtMTcsLjEtMzQtMC4wNi01MS41NC0wLjE1LTQuMzEsMC03LjYxLDEuMDgtOS45LDMuMzhzLTMuNDgsNS42Mi0zLjQ2LDEwLjA3YzAuMTQsMzYsLjE0LDcxLjEyLDAsMTA0LjM5LDAsNC42NSwxLjExLDgsMy40NiwxMC4zNnM1LjY3LDMuNDEsMTAuMjYsMy4zNGMxNy4zNi0uMjYsMzQuMzgtMC4yNSw1MC42LDBoMWMzLjM5LDAsNy0uMzYsOS41OS0yLjkyczIuODctNi4zNCwyLjgyLTkuMzFjLTAuMjItMTIuMjgtLjE4LTIzLjQ4LTAuMTQtMzUuMzUsMC0zLjQ4LDAtNywwLTEwLjY1bDAtNC40OWMwLTQuMzcsMC05LjA2LDAtMTMuOTQsMC0xMi43NC0uMDktMjcuMTUuMTUtMzkuNzRDMTk4LjkyLDI4My43OSwxOTcuNjUsMjgwLDE5NSwyNzcuMzJabS01LjM1LDUxLjI0YzAsMy4yNCwwLDYuNCwwLDkuNDNsMCw0LjVjMCw1LjI0LDAsMTAuMjQsMCwxNS4xMiwwLDExLjkxLS4wOCwyMy4xNy4xNCwzNS41NGE5LjMxLDkuMzEsMCwwLDEtLjIzLDIuNzcsMTMuMjksMTMuMjksMCwwLDEtNCwuMjljLTguMjItLjEzLTE2LjY0LTAuMi0yNS4yMS0wLjJzLTE3LC4wNi0yNS42Ny4xOWMtMi43LDAtMy41Ni0uNS0zLjgtMC43NHMtMC44MS0xLjEtLjgtMy45MmMwLjEyLTMzLjI5LjExLTY4LjQ0LDAtMTA0LjQ2LDAtMS44Mi4yOC0zLjE2LDAuNzktMy42N3MxLjctLjc2LDMuNDQtMC43NWMxNy41NCwwLjA5LDM0Ljg4LjA4LDUxLjUzLDBhNCw0LDAsMCwxLDIuODEuODFjMC44MiwwLjgzLDEuMjUsMi42NCwxLjIsNS4xQzE4OS41OSwzMDEuMjgsMTg5LjY0LDMxNS43NywxODkuNjgsMzI4LjU3WiI+PC9wYXRoPjxwYXRoIGQ9Ik0xMDAuOTQsMzMwLjY2Yy0yLjE4LTIuMTMtNS4yLTMuMTQtOS4zMS0zaDBjLTQuNy4xLTkuMjcsMC4xMS0xMy4xNCwwLjFsLTUuMzgsMHEtNy45MSwwLTE1LjgyLDBsLTUuMzIsMGgwYy0zLjg1LDAtOC40MiwwLTEzLjEtLjEyLTQtLjEyLTcuMDUuODYtOS4yLDNzLTMuMjIsNS4yNi0zLjE3LDkuNTNjMC4xOSwxOC40NC4xOSwzNS41LDAsNTIuMTUsMCw0LjIyLDEsNy4zNSwzLjE4LDkuNTVzNS4wNywzLjIsOSwzLjJIOTEuNzRjNCwwLDcuMDctMS4xLDkuMi0zLjI0czMuMTMtNSwzLjEyLTguN2MtMC4wNS0xOC44MiwwLTM3LjcxLDAtNTMuN0MxMDQuMDgsMzM1LjYzLDEwMywzMzIuNzEsMTAwLjk0LDMzMC42NlptLTUuODgsNjIuNDNhMy43LDMuNywwLDAsMS0uNDksMi4zMSw0LjU2LDQuNTYsMCwwLDEtMi44My42SDM4LjY5YTQuMzMsNC4zMywwLDAsMS0yLjYyLS41M2MtMC4yOC0uMjgtMC41OS0xLjI3LTAuNTctMy4xMiwwLjE5LTE2LjcyLjE5LTMzLjg0LDAtNTIuMzQsMC0yLjQ5LjQ4LTMsLjQ4LTNhNC4xLDQuMSwwLDAsMSwyLjI2LS4zOWgwLjM4YzQuOCwwLjEzLDkuNDYuMTQsMTMuMzgsMC4xM2w1LjM0LDBxNy44NiwwLDE1LjczLDBsNS40LDBjMy45MSwwLDguNTYsMCwxMy4zNS0uMSwxLjgxLDAsMi42Mi4yOCwyLjgxLDAuNDdhMy43NywzLjc3LDAsMCwxLC40MywyLjI2Qzk1LDM1NS4zNSw5NSwzNzQuMjYsOTUuMDYsMzkzLjA5WiI+PC9wYXRoPjwvc3ZnPg==") no-repeat 0 0 !important; +} + +.signal-1:before { + background: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGRhdGEtbmFtZT0iTGF5ZXIgMSIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHg9IjBweCIgeT0iMHB4Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6bm9uZTt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPndpZmkyMDwvdGl0bGU+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNDc1Ljc2LDExNy42NmMtMC4xMS0uMTMtMC45My0wLjc3LTYuMjItMC43OC03LjY0LDAtMTUuMzktLjE1LTIyLjg5LTAuMjktOC4xOS0uMTUtMTYuNjUtMC4zMS0yNS0wLjI5LTMuNjEsMC00Ljg0LjI2LTUuMjYsMC40NC0wLjEzLjMyLS40LDEuMzQtMC40LDQuMzdxMCw1NS4xNywwLDExMC4yOGMwLDUyLjM3LjA1LDEwNi41MiwwLDE1OS44MiwwLDMuMDguNiw0LC44Niw0LjI2czEuMTQsMC44Miw0LjA4Ljc2QzQzMi4yOCwzOTYsNDQzLjcsMzk2LDQ1NC43NCwzOTZjNC4yNiwwLDguNTMsMCwxMi43OCwwaDBjMS44NSwwLDMuNDUuMDksNC44NCwwLjEzczIuODYsMC4xLDMuNzksMGMwLjE4LTEuNDIsMC00LjEzLDAtNi4yMywwLTMwLjkyLS4xNy02MC42NC0wLjE3LTkwLjg4VjI1NmgwLjVWMjI1LjQxYzAtMzMuNDMsMC02Ny43NiwwLTEwMC41NkM0NzYuNDgsMTIzLjI5LDQ3Ni40OCwxMTguNTEsNDc1Ljc2LDExNy42NloiPjwvcGF0aD48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0zODAuMTYsMTcyLjMxYy0wLjUyLS41MS0xLjg5LTAuNzgtMy43OC0wLjc1LTExLjExLjE5LTIyLjM5LDAuMTYtMzMuMjksMC4xMi01LjM2LDAtMTAuNzEsMC0xNi4wNywwLTUuNjgsMC01LjY4LDAtNS42OSw3Ljc2LDAsMjUuNzUsMCw1Mi4yNywwLDc4LjcxVjI4M2wwLjA2LDQuNWMwLDkuMjksMCwxOC40MSwwLDI3LjQ1LDAsMjYuMzcsMCw1MS4yNy0uMTEsNzcuODVhOC44LDguOCwwLDAsMCwuMzMsMy4xOSwxMC4xOSwxMC4xOSwwLDAsMCwzLjgzLjM0bDYuMjUtLjE1YzE0Ljg4LS4zNSwzMC4yNi0wLjcxLDQ1LjQ0LTAuNCwyLjQ5LDAsMy4wOC0uNDcsMy4xNC0wLjUzczAuNjgtLjgzLjY3LTRjLTAuMDgtNjYuMS0uMDctMTM2LjQyLjA1LTIxNUMzODEsMTczLjQ1LDM4MC40MSwxNzIuNTYsMzgwLjE2LDE3Mi4zMVoiPjwvcGF0aD48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yODQuNDQsMjI4LjA3Yy0wLjE4LS4xNy0wLjk0LTAuNzMtMy42Ny0wLjY4LTExLjQxLjIxLTIzLC4xNy0zNC4yLDAuMTNxLTcuNTgsMC0xNS4xNywwYy00Ljg4LDAtNS42NC43NS01Ljc0LDAuOS0wLjc5LDEuMTQtLjc5LDUuNy0wLjgsOC40MiwwLDE4LjM2LDAsMzcuMzMsMCw1Ni40OVYzMTJIMjI1djI0LjkxYzAsMTYuNzIsMCwzMy4yMSwwLDUwLjY4LDAsNCwwLDguMi40LDkuNTNhNDEuNDcsNDEuNDcsMCwwLDAsNy4wNy4yNmgzLjEyYzYuNDMsMCwxMy0uMTUsMTkuMzQtMC4yOSw4LjM4LS4xOSwxNy0wLjM5LDI1LjYtMC4yNSwxLjg5LDAsMy4yNC0uMjUsMy43Ny0wLjc3czAuODktMi4wNS44OC00LjFjLTAuMTItNTIuOS0uMS0xMDYuNjcuMDYtMTU5LjhDMjg1LjI0LDIyOS4xOCwyODQuNjgsMjI4LjMxLDI4NC40NCwyMjguMDdaIj48L3BhdGg+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTg4LjYzLDI4My40OGE0LDQsMCwwLDAtMi44MS0uODFjLTE2LjY1LjEtMzQsLjEtNTEuNTMsMC0xLjczLDAtMywuMjYtMy40NC43NXMtMC44LDEuODUtLjc5LDMuNjdjMC4xNCwzNiwuMTUsNzEuMTYsMCwxMDQuNDYsMCwyLjgyLjU1LDMuNjksMC44LDMuOTJzMS4xMSwwLjc3LDMuOC43NGM4LjY2LS4xMywxNy4yMy0wLjE5LDI1LjY3LTAuMTlzMTcsMC4wNywyNS4yMS4yYTEzLjI0LDEzLjI0LDAsMCwwLDQtLjI5LDkuMzEsOS4zMSwwLDAsMCwuMjMtMi43N2MtMC4yMi0xMi4zOC0uMTgtMjMuNjMtMC4xNC0zNS41NCwwLTQuODgsMC05Ljg4LDAtMTUuMTJsMC00LjVjMC0zLDAtNi4yLDAtOS40MywwLTEyLjc5LS4wOS0yNy4yOS4xNS00MEMxODkuODgsMjg2LjEzLDE4OS40NSwyODQuMzIsMTg4LjYzLDI4My40OFoiPjwvcGF0aD48cGF0aCBkPSJNNDY5LjU0LDEwNy44OGMtNy41NiwwLTE1LjI3LS4xNS0yMi43My0wLjI5LTguMjQtLjE1LTE2Ljc1LTAuMzEtMjUuMTUtMC4yOS05LjkxLDAtMTQuNjMsMi4xLTE0LjYzLDEzLjgxcTAsNTUuMTcsMCwxMTAuMjljMCw1Mi4zNi4wNSwxMDYuNTEsMCwxNTkuODEsMCwzLjA5LjM3LDcuNTYsMy41NiwxMC42OSwyLjI5LDIuMjQsNS41NiwzLjM0LDEwLDMuMzQsMC4xOSwwLC4zOCwwLDAuNTgsMCwxMS4xNC0uMjMsMjIuNS0wLjIyLDMzLjQ5LTAuMTksNC4xMSwwLDguMjIsMCwxMi4zMywwaDAuNTFjMS43NiwwLDMuMjQuMDksNC41NiwwLjEyLDQuOCwwLjEyLDcuOTQuMjYsMTAuNDUtMi4xOSwyLjcxLTIuNjQsMi42Mi02LjUzLDIuNjItMTMsMC0zMC45Mi0uMTctNjAuNjUtMC4xNy05MC44OVYyNjVoMC41VjIyNS40MWMwLTMzLjQzLDAtNjcuNzYsMC0xMDAuNTdDNDg1LjQ4LDExMi45LDQ4My4yNiwxMDcuOSw0NjkuNTQsMTA3Ljg4Wm03LDExNy41M1YyNTZINDc2djQzLjA3YzAsMzAuMjQuMTgsNjAsLjE3LDkwLjg4LDAsMi4xLjE4LDQuODEsMCw2LjIzLTAuOTMuMDUtMi40MywwLTMuNzksMHMtMy0uMTMtNC44NC0wLjEzaDBjLTQuMjQsMC04LjUyLDAtMTIuNzgsMC0xMSwwLTIyLjQ2LDAtMzMuNzEuMjEtMi45NC4wNi0zLjgzLS41MS00LjA4LTAuNzZzLTAuODYtMS4xOC0uODYtNC4yNmMwLTUzLjMsMC0xMDcuNDUsMC0xNTkuODJxMC01NS4xMywwLTExMC4yOGMwLTMsLjI2LTQsMC40LTQuMzcsMC40Mi0uMTgsMS42NS0wLjQzLDUuMjYtMC40NCw4LjMxLDAsMTYuNzcuMTQsMjUsLjI5LDcuNDksMC4xNCwxNS4yNC4yOSwyMi44OSwwLjI5LDUuMjksMCw2LjExLjY1LDYuMjIsMC43OCwwLjcyLDAuODUuNzMsNS42MiwwLjczLDcuMTlDNDc2LjUsMTU3LjY2LDQ3Ni41LDE5Miw0NzYuNSwyMjUuNDFaIj48L3BhdGg+PHBhdGggZD0iTTM4Ni40NywxNjUuODljLTIuMzYtMi4zMi01LjcxLTMuNC0xMC4yNS0zLjM0LTExLC4xOS0yMi4yNS4xNi0zMy4xMSwwLjEycS04LjA2LDAtMTYuMTEsMGMtMTMuNTYsMC0xNC42Nyw3LjYtMTQuNjcsMTYuNzYsMCwyNS43NSwwLDUyLjI4LDAsNzguNzFWMjg3LjVsMC4wNiw0LjVoMGMwLDcuNzQsMCwxNS4zOCwwLDIzLDAsMjYuMzUsMCw1MS4yNC0uMTEsNzcuNzksMCwzLjMuMzIsNywzLDkuNjcsMi41MSwyLjQ3LDYuMDgsMi45Miw5LjQsMi45MmgxbDYuMjYtLjE1YzE0Ljc4LS4zNSwzMC4wNi0wLjcxLDQ1LTAuNCw0LjI0LDAuMDksNy40MS0uOTMsOS42My0zLjEsMy0yLjk0LDMuMzgtNy4xLDMuMzctMTAuNC0wLjA4LTY2LjA5LS4wNy0xMzYuNDEuMDUtMjE1QzM5MCwxNzEuNjUsMzg4Ljg1LDE2OC4yNCwzODYuNDcsMTY1Ljg5Wm0tNS41MywyMjUuNGMwLDMuMTMtLjU2LDMuODUtMC42Nyw0cy0wLjY1LjU4LTMuMTQsMC41M2MtMTUuMTctLjMxLTMwLjU2LDAtNDUuNDQuNGwtNi4yNS4xNWExMC4xOSwxMC4xOSwwLDAsMS0zLjgzLS4zNCw4LjgsOC44LDAsMCwxLS4zMy0zLjE5YzAuMTYtMjYuNTguMTMtNTEuNDgsMC4xMS03Ny44NSwwLTksMC0xOC4xNiwwLTI3LjQ1bC0wLjA2LTQuNVYyNTguMTJjMC0yNi40MywwLTUzLDAtNzguNzEsMC03Ljc1LDAtNy43NSw1LjY5LTcuNzYsNS4zNiwwLDEwLjcxLDAsMTYuMDcsMCwxMC45LDAsMjIuMTguMDcsMzMuMjktLjEyLDEuODgsMCwzLjI2LjI0LDMuNzgsMC43NSwwLjI1LDAuMjUuODUsMS4xNCwwLjg0LDRDMzgwLjg4LDI1NC44NywzODAuODYsMzI1LjE5LDM4MC45NSwzOTEuM1oiPjwvcGF0aD48cGF0aCBkPSJNMjkwLjc1LDIyMS42NmMtMi4zMi0yLjI4LTUuNjUtMy4zNy0xMC4xNS0zLjI2LTExLjMxLjIxLTIyLjg0LDAuMTctMzQsLjEzcS03LjYsMC0xNS4yMSwwYy0xNC40NiwwLTE1LjUyLDYuOTItMTUuNTQsMTguMywwLDE4LjM2LDAsMzcuMzQsMCw1Ni41MVYzMjFIMjE2djE1LjkxYzAsMTYuNzIsMCwzMy4yMSwwLDUwLjY5LDAsOC42MywwLDEzLDMsMTYsMi41NiwyLjU0LDYsMi44MiwxMS4zMSwyLjgyaDUuMjZjNi41MywwLDEzLjE1LS4xNSwxOS41NS0wLjMsOC4yOS0uMTksMTYuODctMC4zOCwyNS4yNS0wLjI1LDQuNSwwLjEsNy44Ny0xLDEwLjI0LTMuMzZzMy41Ny01LjgyLDMuNTYtMTAuNTNjLTAuMTItNTIuODktLjEtMTA2LjYzLjA2LTE1OS43NUMyOTQuMjQsMjI5LjE0LDI5My44OSwyMjQuNzQsMjkwLjc1LDIyMS42NlpNMjg1LjE3LDM5MmMwLDItLjMyLDMuNTQtMC44OCw0LjFzLTEuODguOC0zLjc3LDAuNzdjLTguNTYtLjE0LTE3LjIyLjA2LTI1LjYsMC4yNS02LjM1LjE0LTEyLjkxLDAuMjktMTkuMzQsMC4yOWgtMy4xMmE0MS40Nyw0MS40NywwLDAsMS03LjA3LS4yNmMtMC40Mi0xLjMzLS40LTUuNDktMC40LTkuNTMsMC0xNy40NywwLTM0LDAtNTAuNjhWMzEyaC0wLjE2VjI5My4zYzAtMTkuMTYsMC0zOC4xMywwLTU2LjQ5LDAtMi43MiwwLTcuMjcuOC04LjQyLDAuMS0uMTUuODctMC45LDUuNzQtMC45cTcuNTgsMCwxNS4xNywwYzExLjIsMCwyMi43OC4wOCwzNC4yLS4xMywyLjczLS4wNSwzLjUuNTEsMy42NywwLjY4czAuOCwxLjExLjc5LDQuMDhDMjg1LjA3LDI4NS4yOSwyODUuMDUsMzM5LjA1LDI4NS4xNywzOTJaIj48L3BhdGg+PHBhdGggZD0iTTE5NSwyNzcuMzJjLTEuNTctMS42LTQuNDQtMy4zMi05LjE3LTMuMzJIMTg2di0wLjE2Yy0xNywuMS0zNC0wLjA2LTUxLjU0LTAuMTUtNC4zLDAtNy42MSwxLjA4LTkuOSwzLjM4cy0zLjQ4LDUuNjItMy40NiwxMC4wN2MwLjE0LDM2LC4xNCw3MS4xMiwwLDEwNC4zOSwwLDQuNjUsMS4xMSw4LDMuNDYsMTAuMzZzNS42NiwzLjQxLDEwLjI2LDMuMzRjMTcuMzYtLjI2LDM0LjM4LTAuMjUsNTAuNiwwaDFjMy4zOSwwLDctLjM2LDkuNTktMi45MnMyLjg3LTYuMzQsMi44Mi05LjMxYy0wLjIyLTEyLjI4LS4xOC0yMy40OC0wLjE0LTM1LjM1LDAtMy40OCwwLTcsMC0xMC42NWwwLTQuNDljMC00LjM3LDAtOS4wNiwwLTEzLjk0LDAtMTIuNzQtLjA5LTI3LjE1LjE1LTM5Ljc0QzE5OC45MiwyODMuNzksMTk3LjY1LDI4MCwxOTUsMjc3LjMyWm0tNS4zNSw1MS4yNGMwLDMuMjQsMCw2LjQsMCw5LjQzbDAsNC41YzAsNS4yNCwwLDEwLjI0LDAsMTUuMTIsMCwxMS45MS0uMDgsMjMuMTcuMTQsMzUuNTRhOS4zMSw5LjMxLDAsMCwxLS4yMywyLjc3LDEzLjI0LDEzLjI0LDAsMCwxLTQsLjI5Yy04LjIyLS4xMy0xNi42NC0wLjItMjUuMjEtMC4ycy0xNywuMDYtMjUuNjcuMTljLTIuNjksMC0zLjU2LS41LTMuOC0wLjc0cy0wLjgxLTEuMS0uOC0zLjkyYzAuMTItMzMuMjkuMTEtNjguNDQsMC0xMDQuNDYsMC0xLjgyLjI4LTMuMTYsMC43OS0zLjY3czEuNzEtLjc2LDMuNDQtMC43NWMxNy41NCwwLjA5LDM0Ljg4LjA4LDUxLjUzLDBhNCw0LDAsMCwxLDIuODEuODFjMC44MiwwLjgzLDEuMjUsMi42NCwxLjIsNS4xQzE4OS41OSwzMDEuMjgsMTg5LjY0LDMxNS43NywxODkuNjgsMzI4LjU3WiI+PC9wYXRoPjxwYXRoIGQ9Ik0xMDAuOTQsMzMwLjY2Yy0yLjE4LTIuMTMtNS4yMi0zLjE0LTkuMzEtM2gwYy00LjcuMS05LjI3LDAuMTEtMTMuMTQsMC4xbC01LjM4LDBxLTcuOTEsMC0xNS44MiwwbC01LjMyLDBoMGMtMy44NSwwLTguNDIsMC0xMy4xLS4xMi00LS4xMi03LjA1Ljg2LTkuMiwzcy0zLjIyLDUuMjYtMy4xNyw5LjUzYzAuMTksMTguNDQuMTksMzUuNSwwLDUyLjE1LDAsNC4yMiwxLDcuMzUsMy4xOCw5LjU1czUuMDcsMy4yLDksMy4ySDkxLjc0YzQsMCw3LjA3LTEuMSw5LjItMy4yNHMzLjEzLTUsMy4xMi04LjdjLTAuMDUtMTguODIsMC0zNy43MSwwLTUzLjdDMTA0LjA4LDMzNS42MywxMDMsMzMyLjcxLDEwMC45NCwzMzAuNjZaIj48L3BhdGg+PC9zdmc+") no-repeat 0 0; +} + +.signal-2:before { + background: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGRhdGEtbmFtZT0iTGF5ZXIgMSIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHg9IjBweCIgeT0iMHB4Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6bm9uZTt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPndpZmkyMDwvdGl0bGU+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNDc1Ljc2LDExNy42NmMtMC4xMS0uMTMtMC45My0wLjc3LTYuMjItMC43OC03LjY0LDAtMTUuMzktLjE1LTIyLjg5LTAuMjktOC4xOS0uMTUtMTYuNjUtMC4zMS0yNS0wLjI5LTMuNjEsMC00Ljg0LjI2LTUuMjYsMC40NC0wLjEzLjMyLS40LDEuMzQtMC40LDQuMzdxMCw1NS4xNywwLDExMC4yOGMwLDUyLjM3LjA1LDEwNi41MiwwLDE1OS44MiwwLDMuMDguNiw0LC44Niw0LjI2czEuMTUsMC44Miw0LjA4Ljc2QzQzMi4yOCwzOTYsNDQzLjcsMzk2LDQ1NC43NCwzOTZjNC4yNiwwLDguNTEsMCwxMi43OCwwaDBjMS44NSwwLDMuNDUuMDksNC44NCwwLjEzczIuODYsMC4xLDMuNzksMGMwLjE4LTEuNDIsMC00LjEzLDAtNi4yMywwLTMwLjkyLS4xNy02MC42NC0wLjE3LTkwLjg4VjI1NmgwLjVWMjI1LjQxYzAtMzMuNDMsMC02Ny43NiwwLTEwMC41NkM0NzYuNDgsMTIzLjI5LDQ3Ni40OCwxMTguNTEsNDc1Ljc2LDExNy42NloiPjwvcGF0aD48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0zODAuMTYsMTcyLjMxYy0wLjUyLS41MS0xLjg5LTAuNzgtMy43OC0wLjc1LTExLjExLjE5LTIyLjM5LDAuMTYtMzMuMjksMC4xMi01LjM2LDAtMTAuNzEsMC0xNi4wNywwLTUuNjgsMC01LjY4LDAtNS42OSw3Ljc2LDAsMjUuNzUsMCw1Mi4yNywwLDc4LjcxVjI4M2wwLjA2LDQuNWMwLDkuMjksMCwxOC40MSwwLDI3LjQ1LDAsMjYuMzcsMCw1MS4yNy0uMTEsNzcuODVhOC44LDguOCwwLDAsMCwuMzMsMy4xOSwxMC4xNywxMC4xNywwLDAsMCwzLjgzLjM0bDYuMjUtLjE1YzE0Ljg4LS4zNSwzMC4yNi0wLjcxLDQ1LjQ0LTAuNCwyLjUxLDAsMy4wOC0uNDcsMy4xNC0wLjUzczAuNjgtLjgzLjY3LTRjLTAuMDgtNjYuMS0uMDctMTM2LjQyLjA1LTIxNUMzODEsMTczLjQ1LDM4MC40MSwxNzIuNTYsMzgwLjE2LDE3Mi4zMVoiPjwvcGF0aD48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yODQuNDQsMjI4LjA3Yy0wLjE4LS4xNy0xLTAuNzMtMy42Ny0wLjY4LTExLjQxLjIxLTIzLC4xNy0zNC4yLDAuMTNxLTcuNTgsMC0xNS4xNywwYy00Ljg4LDAtNS42NC43NS01Ljc0LDAuOS0wLjc5LDEuMTQtLjc5LDUuNy0wLjgsOC40MiwwLDE4LjM2LDAsMzcuMzMsMCw1Ni40OVYzMTJIMjI1djI0LjkxYzAsMTYuNzIsMCwzMy4yMSwwLDUwLjY4LDAsNCwwLDguMi40LDkuNTNhNDEuNDgsNDEuNDgsMCwwLDAsNy4wNy4yNmgzLjEyYzYuNDMsMCwxMy0uMTUsMTkuMzQtMC4yOSw4LjM4LS4xOSwxNy0wLjM5LDI1LjYtMC4yNSwxLjg5LDAsMy4yNC0uMjUsMy43Ny0wLjc3czAuODktMi4wNS44OC00LjFjLTAuMTItNTIuOS0uMS0xMDYuNjcuMDYtMTU5LjhDMjg1LjI0LDIyOS4xOCwyODQuNjgsMjI4LjMxLDI4NC40NCwyMjguMDdaIj48L3BhdGg+PHBhdGggZD0iTTQ2OS41NCwxMDcuODhjLTcuNTYsMC0xNS4yNy0uMTUtMjIuNzMtMC4yOS04LjI0LS4xNS0xNi43NS0wLjMxLTI1LjE1LTAuMjktOS45MSwwLTE0LjYzLDIuMS0xNC42MywxMy44MXEwLDU1LjE3LDAsMTEwLjI5YzAsNTIuMzYuMDUsMTA2LjUxLDAsMTU5LjgxLDAsMy4wOS4zNyw3LjU2LDMuNTYsMTAuNjksMi4yOSwyLjI0LDUuNTYsMy4zNCwxMCwzLjM0LDAuMTksMCwuMzgsMCwwLjU4LDAsMTEuMTQtLjIzLDIyLjUtMC4yMiwzMy40OS0wLjE5LDQuMTEsMCw4LjIyLDAsMTIuMzMsMGgwLjUxYzEuNzYsMCwzLjI0LjA5LDQuNTYsMC4xMiw0LjgsMC4xMiw3Ljk0LjI2LDEwLjQ1LTIuMTksMi43MS0yLjY0LDIuNjItNi41MywyLjYyLTEzLDAtMzAuOTItLjE3LTYwLjY1LTAuMTctOTAuODlWMjY1aDAuNVYyMjUuNDFjMC0zMy40MywwLTY3Ljc2LDAtMTAwLjU3QzQ4NS40OCwxMTIuOSw0ODMuMjYsMTA3LjksNDY5LjU0LDEwNy44OFptNywxMTcuNTNWMjU2SDQ3NnY0My4wN2MwLDMwLjI0LjE4LDYwLC4xNyw5MC44OCwwLDIuMS4xOCw0LjgxLDAsNi4yMy0wLjk0LjA1LTIuNDMsMC0zLjc5LDBzLTMtLjEzLTQuODQtMC4xM2gwYy00LjI3LDAtOC41MiwwLTEyLjc4LDAtMTEsMC0yMi40NiwwLTMzLjcxLjIxLTIuOTQuMDYtMy44My0uNTEtNC4wOC0wLjc2cy0wLjg2LTEuMTgtLjg2LTQuMjZjMC01My4zLDAtMTA3LjQ1LDAtMTU5LjgycTAtNTUuMTMsMC0xMTAuMjhjMC0zLC4yNi00LDAuNC00LjM3LDAuNDItLjE4LDEuNjUtMC40Myw1LjI2LTAuNDQsOC4zMSwwLDE2Ljc3LjE0LDI1LC4yOSw3LjQ5LDAuMTQsMTUuMjQuMjksMjIuODksMC4yOSw1LjI5LDAsNi4xMS42NSw2LjIyLDAuNzgsMC43MiwwLjg1LjczLDUuNjIsMC43Myw3LjE5QzQ3Ni41LDE1Ny42Niw0NzYuNSwxOTIsNDc2LjUsMjI1LjQxWiI+PC9wYXRoPjxwYXRoIGQ9Ik0zODYuNDcsMTY1Ljg5Yy0yLjM2LTIuMzItNS42OS0zLjQtMTAuMjUtMy4zNC0xMSwuMTktMjIuMjUuMTYtMzMuMTEsMC4xMnEtOC4wNiwwLTE2LjExLDBjLTEzLjU2LDAtMTQuNjcsNy42LTE0LjY3LDE2Ljc2LDAsMjUuNzUsMCw1Mi4yOCwwLDc4LjcxVjI4Ny41bDAuMDYsNC41aDBjMCw3Ljc0LDAsMTUuMzgsMCwyMywwLDI2LjM1LDAsNTEuMjQtLjExLDc3Ljc5LDAsMy4zLjMyLDcsMyw5LjY3LDIuNTEsMi40Nyw2LjA4LDIuOTIsOS40LDIuOTJoMWw2LjI2LS4xNWMxNC43OC0uMzUsMzAuMDYtMC43MSw0NS0wLjQsNC4yNiwwLjA5LDcuNDEtLjkzLDkuNjMtMy4xLDMtMi45NCwzLjM4LTcuMSwzLjM3LTEwLjQtMC4wOC02Ni4wOS0uMDctMTM2LjQxLjA1LTIxNUMzOTAsMTcxLjY1LDM4OC44NSwxNjguMjQsMzg2LjQ3LDE2NS44OVptLTUuNTMsMjI1LjRjMCwzLjEzLS41NiwzLjg1LTAuNjcsNHMtMC42NC41OC0zLjE0LDAuNTNjLTE1LjE3LS4zMS0zMC41NiwwLTQ1LjQ0LjRsLTYuMjUuMTVhMTAuMTcsMTAuMTcsMCwwLDEtMy44My0uMzQsOC44LDguOCwwLDAsMS0uMzMtMy4xOWMwLjE2LTI2LjU4LjEzLTUxLjQ4LDAuMTEtNzcuODUsMC05LDAtMTguMTYsMC0yNy40NWwtMC4wNi00LjVWMjU4LjEyYzAtMjYuNDMsMC01MywwLTc4LjcxLDAtNy43NSwwLTcuNzUsNS42OS03Ljc2LDUuMzYsMCwxMC43MSwwLDE2LjA3LDAsMTAuOSwwLDIyLjE4LjA3LDMzLjI5LS4xMiwxLjg5LDAsMy4yNi4yNCwzLjc4LDAuNzUsMC4yNSwwLjI1Ljg1LDEuMTQsMC44NCw0QzM4MC44OCwyNTQuODcsMzgwLjg2LDMyNS4xOSwzODAuOTUsMzkxLjNaIj48L3BhdGg+PHBhdGggZD0iTTI5MC43NSwyMjEuNjZjLTIuMzItMi4yOC01LjY2LTMuMzctMTAuMTUtMy4yNi0xMS4zMS4yMS0yMi44NCwwLjE3LTM0LC4xM3EtNy42LDAtMTUuMjEsMGMtMTQuNDYsMC0xNS41Miw2LjkyLTE1LjU0LDE4LjMsMCwxOC4zNiwwLDM3LjM0LDAsNTYuNTFWMzIxSDIxNnYxNS45MWMwLDE2LjcyLDAsMzMuMjEsMCw1MC42OSwwLDguNjMsMCwxMywzLDE2LDIuNTYsMi41NCw2LDIuODIsMTEuMzEsMi44Mmg1LjI2YzYuNTMsMCwxMy4xNS0uMTUsMTkuNTUtMC4zLDguMjktLjE5LDE2Ljg2LTAuMzgsMjUuMjUtMC4yNSw0LjUzLDAuMSw3Ljg3LTEsMTAuMjQtMy4zNnMzLjU3LTUuODIsMy41Ni0xMC41M2MtMC4xMi01Mi44OS0uMS0xMDYuNjMuMDYtMTU5Ljc1QzI5NC4yNCwyMjkuMTQsMjkzLjg5LDIyNC43NCwyOTAuNzUsMjIxLjY2Wk0yODUuMTcsMzkyYzAsMi0uMzIsMy41NC0wLjg4LDQuMXMtMS44OC44LTMuNzcsMC43N2MtOC41Ni0uMTQtMTcuMjIuMDYtMjUuNiwwLjI1LTYuMzUuMTQtMTIuOTEsMC4yOS0xOS4zNCwwLjI5aC0zLjEyYTQxLjQ4LDQxLjQ4LDAsMCwxLTcuMDctLjI2Yy0wLjQyLTEuMzMtLjQtNS40OS0wLjQtOS41MywwLTE3LjQ3LDAtMzQsMC01MC42OFYzMTJoLTAuMTZWMjkzLjNjMC0xOS4xNiwwLTM4LjEzLDAtNTYuNDksMC0yLjcyLDAtNy4yNy44LTguNDIsMC4xLS4xNS44Ny0wLjksNS43NC0wLjlxNy41OCwwLDE1LjE3LDBjMTEuMiwwLDIyLjc4LjA4LDM0LjItLjEzLDIuNzItLjA1LDMuNS41MSwzLjY3LDAuNjhzMC44LDEuMTEuNzksNC4wOEMyODUuMDcsMjg1LjI5LDI4NS4wNSwzMzkuMDUsMjg1LjE3LDM5MloiPjwvcGF0aD48cGF0aCBkPSJNMTk1LDI3Ny4zMmMtMS41Ny0xLjYtNC40NC0zLjMyLTkuMTctMy4zMkgxODZ2LTAuMTZjLTE3LC4xLTM0LTAuMDYtNTEuNTQtMC4xNS00LjMxLDAtNy42MSwxLjA4LTkuOSwzLjM4cy0zLjQ4LDUuNjItMy40NiwxMC4wN2MwLjE0LDM2LC4xNCw3MS4xMiwwLDEwNC4zOSwwLDQuNjUsMS4xMSw4LDMuNDYsMTAuMzZzNS42NywzLjQxLDEwLjI2LDMuMzRjMTcuMzYtLjI2LDM0LjM4LTAuMjUsNTAuNiwwaDFjMy4zOSwwLDctLjM2LDkuNTktMi45MnMyLjg3LTYuMzQsMi44Mi05LjMxYy0wLjIyLTEyLjI4LS4xOC0yMy40OC0wLjE0LTM1LjM1LDAtMy40OCwwLTcsMC0xMC42NWwwLTQuNDljMC00LjM3LDAtOS4wNiwwLTEzLjk0LDAtMTIuNzQtLjA5LTI3LjE1LjE1LTM5Ljc0QzE5OC45MiwyODMuNzksMTk3LjY1LDI4MCwxOTUsMjc3LjMyWiI+PC9wYXRoPjxwYXRoIGQ9Ik0xMDAuOTQsMzMwLjY2Yy0yLjE4LTIuMTMtNS4yMS0zLjE0LTkuMzEtM2gwYy00LjcuMS05LjI3LDAuMTEtMTMuMTQsMC4xbC01LjM4LDBxLTcuOTEsMC0xNS44MiwwbC01LjMyLDBoMGMtMy44NSwwLTguNDIsMC0xMy4xLS4xMi00LjA1LS4xMi03LjA1Ljg2LTkuMiwzcy0zLjIyLDUuMjYtMy4xNyw5LjUzYzAuMTksMTguNDQuMTksMzUuNSwwLDUyLjE1LDAsNC4yMiwxLDcuMzUsMy4xOCw5LjU1czUuMDcsMy4yLDksMy4ySDkxLjc0YzQsMCw3LjA3LTEuMSw5LjItMy4yNHMzLjEzLTUsMy4xMi04LjdjLTAuMDUtMTguODIsMC0zNy43MSwwLTUzLjdDMTA0LjA4LDMzNS42MywxMDMsMzMyLjcxLDEwMC45NCwzMzAuNjZaIj48L3BhdGg+PC9zdmc+") no-repeat 0 0; +} + +.signal-3:before { + background: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGRhdGEtbmFtZT0iTGF5ZXIgMSIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHg9IjBweCIgeT0iMHB4Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6bm9uZTt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPndpZmkyMDwvdGl0bGU+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNDc1Ljc2LDExNy42NmMtMC4xMS0uMTMtMC45My0wLjc3LTYuMjItMC43OC03LjY0LDAtMTUuMzktLjE1LTIyLjg5LTAuMjktOC4xOS0uMTUtMTYuNjUtMC4zMS0yNS0wLjI5LTMuNjEsMC00Ljg0LjI2LTUuMjYsMC40NC0wLjEzLjMyLS40LDEuMzQtMC40LDQuMzdxMCw1NS4xNywwLDExMC4yOGMwLDUyLjM3LjA1LDEwNi41MiwwLDE1OS44MiwwLDMuMDguNiw0LC44Niw0LjI2czEuMTUsMC44Miw0LjA4Ljc2YzExLjI1LS4yNCwyMi42Ni0wLjIsMzMuNzEtMC4xNnE2LjM5LDAsMTIuNzgsMGMxLjgzLDAsMy40NywwLDQuODYuMDhzMi44NiwwLjA3LDMuNzksMGMwLjE4LTEuNDIsMC00LjE0LDAtNi4yNCwwLTMwLjkyLS4xNy02MC42NS0wLjE3LTkwLjg5VjI1NmgwLjVWMjI1LjQxYzAtMzMuNDMsMC02Ny43NiwwLTEwMC41NkM0NzYuNDgsMTIzLjI5LDQ3Ni40OCwxMTguNTEsNDc1Ljc2LDExNy42NloiPjwvcGF0aD48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0zODAuMTYsMTcyLjMxYy0wLjUyLS41MS0xLjktMC43OC0zLjc4LTAuNzUtMTEuMTEuMTktMjIuMzksMC4xNi0zMy4yOSwwLjEyLTUuMzYsMC0xMC43MSwwLTE2LjA3LDAtNS42OCwwLTUuNjgsMC01LjY5LDcuNzYsMCwyNS43NSwwLDUyLjI3LDAsNzguNzFWMjgzbDAuMDYsNC41YzAsOS4yOSwwLDE4LjQxLDAsMjcuNDUsMCwyNi4zNywwLDUxLjI3LS4xMSw3Ny44NWE4LjgsOC44LDAsMCwwLC4zMywzLjE5LDEwLjE2LDEwLjE2LDAsMCwwLDMuODMuMzRsNi4yNS0uMTVjMTQuODgtLjM1LDMwLjI2LTAuNzEsNDUuNDQtMC40LDIuNSwwLDMuMDgtLjQ3LDMuMTQtMC41M3MwLjY4LS44My42Ny00Yy0wLjA4LTY2LjEtLjA3LTEzNi40Mi4wNS0yMTVDMzgxLDE3My40NSwzODAuNDEsMTcyLjU2LDM4MC4xNiwxNzIuMzFaIj48L3BhdGg+PHBhdGggZD0iTTQ2OS41NCwxMDcuODhjLTcuNTYsMC0xNS4yNy0uMTUtMjIuNzMtMC4yOS04LjI0LS4xNS0xNi43NS0wLjMxLTI1LjE1LTAuMjktOS45MSwwLTE0LjYzLDIuMS0xNC42MywxMy44MXEwLDU1LjE3LDAsMTEwLjI5YzAsNTIuMzYuMDUsMTA2LjUxLDAsMTU5LjgxLDAsMy4wOS4zNyw3LjU2LDMuNTYsMTAuNjksMi4yOSwyLjI0LDUuNTYsMy4zNCwxMCwzLjM0LDAuMTksMCwuMzgsMCwwLjU4LDAsMTEuMTQtLjIzLDIyLjUtMC4yMiwzMy40OS0wLjE5LDQuMTEsMCw4LjIyLDAsMTIuMzMsMGgwLjUxYzEuNzYsMCwzLjI0LjA5LDQuNTYsMC4xMiw0LjgsMC4xMiw3Ljk0LjI2LDEwLjQ1LTIuMTksMi43MS0yLjY0LDIuNjItNi41MywyLjYyLTEzLDAtMzAuOTItLjE3LTYwLjY1LTAuMTctOTAuODlWMjY1aDAuNVYyMjUuNDFjMC0zMy40MywwLTY3Ljc2LDAtMTAwLjU3QzQ4NS40OCwxMTIuOSw0ODMuMjYsMTA3LjksNDY5LjU0LDEwNy44OFptNywxMTcuNTNWMjU2SDQ3NnY0My4wN2MwLDMwLjI0LjE4LDYwLC4xNyw5MC44OSwwLDIuMS4xOCw0LjgyLDAsNi4yNC0wLjkzLjA1LTIuNDMsMC0zLjc5LDBzLTMtLjExLTQuODYtMC4wOHEtNi40LDAtMTIuNzgsMGMtMTEsMC0yMi40Ni0uMDctMzMuNzEuMTYtMi45NC4wNi0zLjgzLS41MS00LjA4LTAuNzZzLTAuODYtMS4xOC0uODYtNC4yNmMwLTUzLjMsMC0xMDcuNDUsMC0xNTkuODJxMC01NS4xMywwLTExMC4yOGMwLTMsLjI2LTQsMC40LTQuMzcsMC40Mi0uMTgsMS42NS0wLjQzLDUuMjYtMC40NCw4LjMxLDAsMTYuNzcuMTQsMjUsLjI5LDcuNDksMC4xNCwxNS4yNC4yOSwyMi44OSwwLjI5LDUuMjksMCw2LjExLjY1LDYuMjIsMC43OCwwLjcyLDAuODUuNzMsNS42MiwwLjczLDcuMTlDNDc2LjUsMTU3LjY2LDQ3Ni41LDE5Miw0NzYuNSwyMjUuNDFaIj48L3BhdGg+PHBhdGggZD0iTTM4Ni40NywxNjUuODljLTIuMzYtMi4zMi01LjcxLTMuNC0xMC4yNS0zLjM0LTExLC4xOS0yMi4yNS4xNi0zMy4xMSwwLjEycS04LjA2LDAtMTYuMTEsMGMtMTMuNTYsMC0xNC42Nyw3LjYtMTQuNjcsMTYuNzYsMCwyNS43NSwwLDUyLjI4LDAsNzguNzFWMjg3LjVsMC4wNiw0LjVoMGMwLDcuNzQsMCwxNS4zOCwwLDIzLDAsMjYuMzUsMCw1MS4yNC0uMTEsNzcuNzksMCwzLjMuMzIsNywzLDkuNjcsMi41MSwyLjQ3LDYuMDgsMi45Miw5LjQsMi45MmgxbDYuMjYtLjE1YzE0Ljc4LS4zNSwzMC4wNi0wLjcxLDQ1LTAuNCw0LjI1LDAuMDksNy40MS0uOTMsOS42My0zLjEsMy0yLjk0LDMuMzgtNy4xLDMuMzctMTAuNC0wLjA4LTY2LjA5LS4wNy0xMzYuNDEuMDUtMjE1QzM5MCwxNzEuNjUsMzg4Ljg1LDE2OC4yNCwzODYuNDcsMTY1Ljg5Wm0tNS41MywyMjUuNGMwLDMuMTMtLjU2LDMuODUtMC42Nyw0cy0wLjY0LjU4LTMuMTQsMC41M2MtMTUuMTctLjMxLTMwLjU2LDAtNDUuNDQuNGwtNi4yNS4xNWExMC4xNiwxMC4xNiwwLDAsMS0zLjgzLS4zNCw4LjgsOC44LDAsMCwxLS4zMy0zLjE5YzAuMTYtMjYuNTguMTMtNTEuNDgsMC4xMS03Ny44NSwwLTksMC0xOC4xNiwwLTI3LjQ1bC0wLjA2LTQuNVYyNTguMTJjMC0yNi40MywwLTUzLDAtNzguNzEsMC03Ljc1LDAtNy43NSw1LjY5LTcuNzYsNS4zNiwwLDEwLjcxLDAsMTYuMDcsMCwxMC45LDAsMjIuMTguMDcsMzMuMjktLjEyLDEuODgsMCwzLjI2LjI0LDMuNzgsMC43NSwwLjI1LDAuMjUuODUsMS4xNCwwLjg0LDRDMzgwLjg4LDI1NC44NywzODAuODYsMzI1LjE5LDM4MC45NSwzOTEuM1oiPjwvcGF0aD48cGF0aCBkPSJNMjkwLjc1LDIyMS42NmMtMi4zMi0yLjI4LTUuNjYtMy4zNy0xMC4xNS0zLjI2LTExLjMxLjIxLTIyLjg0LDAuMTctMzQsLjEzcS03LjYsMC0xNS4yMSwwYy0xNC40NiwwLTE1LjUyLDYuOTItMTUuNTQsMTguMywwLDE4LjM2LDAsMzcuMzQsMCw1Ni41MVYzMjFIMjE2djE1LjkxYzAsMTYuNzIsMCwzMy4yMSwwLDUwLjY5LDAsOC42MywwLDEzLDMsMTYsMi41NiwyLjU0LDYsMi44MiwxMS4zMSwyLjgyaDUuMjZjNi41MywwLDEzLjE1LS4xNSwxOS41NS0wLjMsOC4yOS0uMTksMTYuODYtMC4zOCwyNS4yNS0wLjI1LDQuNTEsMC4xLDcuODctMSwxMC4yNC0zLjM2czMuNTctNS44MiwzLjU2LTEwLjUzYy0wLjEyLTUyLjg5LS4xLTEwNi42My4wNi0xNTkuNzVDMjk0LjI0LDIyOS4xNCwyOTMuODksMjI0Ljc0LDI5MC43NSwyMjEuNjZaIj48L3BhdGg+PHBhdGggZD0iTTE5NSwyNzcuMzJjLTEuNTctMS42LTQuNDQtMy4zMi05LjE3LTMuMzJIMTg2di0wLjE2Yy0xNywuMS0zNC0wLjA2LTUxLjU0LTAuMTUtNC4zMSwwLTcuNjEsMS4wOC05LjksMy4zOHMtMy40OCw1LjYyLTMuNDYsMTAuMDdjMC4xNCwzNiwuMTQsNzEuMTIsMCwxMDQuMzksMCw0LjY1LDEuMTEsOCwzLjQ2LDEwLjM2czUuNjksMy40MSwxMC4yNiwzLjM0YzE3LjM2LS4yNiwzNC4zOC0wLjI1LDUwLjYsMGgxYzMuMzksMCw3LS4zNiw5LjU5LTIuOTJzMi44Ny02LjM0LDIuODItOS4zMWMtMC4yMi0xMi4yOC0uMTgtMjMuNDgtMC4xNC0zNS4zNSwwLTMuNDgsMC03LDAtMTAuNjVsMC00LjQ5YzAtNC4zNywwLTkuMDYsMC0xMy45NCwwLTEyLjc0LS4wOS0yNy4xNS4xNS0zOS43NEMxOTguOTIsMjgzLjc5LDE5Ny42NSwyODAsMTk1LDI3Ny4zMloiPjwvcGF0aD48cGF0aCBkPSJNMTAwLjk0LDMzMC42NmMtMi4xNy0yLjEzLTUuMi0zLjE0LTkuMzEtM2gwYy00LjcuMS05LjI4LDAuMTEtMTMuMTQsMC4xbC01LjM4LDBxLTcuOTEsMC0xNS44MiwwbC01LjMyLDBoMGMtMy44NSwwLTguNDIsMC0xMy4xLS4xMi00LS4xMi03LjA1Ljg2LTkuMiwzcy0zLjIyLDUuMjYtMy4xNyw5LjUzYzAuMTksMTguNDQuMTksMzUuNSwwLDUyLjE1LDAsNC4yMiwxLDcuMzUsMy4xOCw5LjU1czUuMDcsMy4yLDksMy4ySDkxLjc0YzQsMCw3LjA3LTEuMSw5LjItMy4yNHMzLjEzLTUsMy4xMi04LjdjLTAuMDUtMTguODIsMC0zNy43MSwwLTUzLjdDMTA0LjA4LDMzNS42MywxMDMsMzMyLjcxLDEwMC45NCwzMzAuNjZaIj48L3BhdGg+PC9zdmc+") no-repeat 0 0; +} + +.signal-4:before { + background: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGRhdGEtbmFtZT0iTGF5ZXIgMSIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHg9IjBweCIgeT0iMHB4Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6bm9uZTt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPndpZmkyMDwvdGl0bGU+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNDc1Ljc2LDExNy42NmMtMC4xMS0uMTMtMC45My0wLjc3LTYuMjItMC43OC03LjY0LDAtMTUuMzktLjE1LTIyLjg5LTAuMjktOC4xOS0uMTUtMTYuNjYtMC4zMS0yNS0wLjI5LTMuNjEsMC00Ljg0LjI2LTUuMjYsMC40NC0wLjEzLjMyLS40LDEuMzQtMC40LDQuMzdxMCw1NS4xNywwLDExMC4yOGMwLDUyLjM3LjA1LDEwNi41MiwwLDE1OS44MiwwLDMuMDguNiw0LC44Niw0LjI2czEuMTUsMC44Miw0LjA4Ljc2YzExLjI1LS4yNCwyMi42Ni0wLjIsMzMuNzEtMC4xNiw0LjI2LDAsOC41NCwwLDEyLjc4LDAsMS44OCwwLDMuNDcsMCw0Ljg2LjA4czIuODYsMC4wNywzLjc5LDBjMC4xOC0xLjQyLDAtNC4xNCwwLTYuMjQsMC0zMC45Mi0uMTctNjAuNjUtMC4xNy05MC44OVYyNTZoMC41VjIyNS40MWMwLTMzLjQzLDAtNjcuNzYsMC0xMDAuNTZDNDc2LjQ4LDEyMy4yOSw0NzYuNDgsMTE4LjUxLDQ3NS43NiwxMTcuNjZaIj48L3BhdGg+PHBhdGggZD0iTTQ2OS41NCwxMDcuODhjLTcuNTYsMC0xNS4yNy0uMTUtMjIuNzMtMC4yOS04LjI0LS4xNS0xNi43Ni0wLjMxLTI1LjE1LTAuMjktOS45MSwwLTE0LjYzLDIuMS0xNC42MywxMy44MXEwLDU1LjE3LDAsMTEwLjI5YzAsNTIuMzYuMDUsMTA2LjUxLDAsMTU5LjgxLDAsMy4wOS4zNyw3LjU2LDMuNTYsMTAuNjksMi4yOSwyLjI0LDUuNTYsMy4zNCwxMCwzLjM0LDAuMTksMCwuMzgsMCwwLjU4LDAsMTEuMTQtLjIzLDIyLjUtMC4yMiwzMy40OS0wLjE5LDQuMTEsMCw4LjIyLDAsMTIuMzMsMGgwLjUxYzEuNzYsMCwzLjI0LjA5LDQuNTYsMC4xMiw0LjgsMC4xMiw3Ljk0LjI2LDEwLjQ1LTIuMTksMi43MS0yLjY0LDIuNjItNi41MywyLjYyLTEzLDAtMzAuOTItLjE3LTYwLjY1LTAuMTctOTAuODlWMjY1aDAuNVYyMjUuNDFjMC0zMy40MywwLTY3Ljc2LDAtMTAwLjU3QzQ4NS40OCwxMTIuOSw0ODMuMjYsMTA3LjksNDY5LjU0LDEwNy44OFptNywxMTcuNTNWMjU2SDQ3NnY0My4wN2MwLDMwLjI0LjE4LDYwLC4xNyw5MC44OSwwLDIuMS4xOCw0LjgyLDAsNi4yNC0wLjk0LjA1LTIuNDMsMC0zLjc5LDBzLTMtLjExLTQuODYtMC4wOGMtNC4yNCwwLTguNTIsMC0xMi43OCwwLTExLDAtMjIuNDYtLjA3LTMzLjcxLjE2LTIuOTQuMDYtMy44My0uNTEtNC4wOC0wLjc2cy0wLjg2LTEuMTgtLjg2LTQuMjZjMC01My4zLDAtMTA3LjQ1LDAtMTU5LjgycTAtNTUuMTMsMC0xMTAuMjhjMC0zLC4yNi00LDAuNC00LjM3LDAuNDItLjE4LDEuNjUtMC40Myw1LjI2LTAuNDQsOC4zLDAsMTYuNzcuMTQsMjUsLjI5LDcuNDksMC4xNCwxNS4yNC4yOSwyMi44OSwwLjI5LDUuMjksMCw2LjExLjY1LDYuMjIsMC43OCwwLjcyLDAuODUuNzMsNS42MiwwLjczLDcuMTlDNDc2LjUsMTU3LjY2LDQ3Ni41LDE5Miw0NzYuNSwyMjUuNDFaIj48L3BhdGg+PHBhdGggZD0iTTM4Ni40NywxNjUuODljLTIuMzYtMi4zMi01LjY5LTMuNC0xMC4yNS0zLjM0LTExLC4xOS0yMi4yNS4xNi0zMy4xMSwwLjEycS04LjA2LDAtMTYuMTEsMGMtMTMuNTYsMC0xNC42Nyw3LjYtMTQuNjcsMTYuNzYsMCwyNS43NSwwLDUyLjI4LDAsNzguNzFWMjg3LjVsMC4wNiw0LjVoMGMwLDcuNzQsMCwxNS4zOCwwLDIzLDAsMjYuMzUsMCw1MS4yNC0uMTEsNzcuNzksMCwzLjMuMzIsNywzLDkuNjcsMi41MSwyLjQ3LDYuMDgsMi45Miw5LjQsMi45MmgxbDYuMjYtLjE1YzE0Ljc4LS4zNSwzMC4wNi0wLjcxLDQ1LTAuNCw0LjI2LDAuMDksNy40MS0uOTMsOS42My0zLjEsMy0yLjk0LDMuMzgtNy4xLDMuMzctMTAuNC0wLjA4LTY2LjA5LS4wNy0xMzYuNDEuMDUtMjE1QzM5MCwxNzEuNjUsMzg4Ljg1LDE2OC4yNCwzODYuNDcsMTY1Ljg5WiI+PC9wYXRoPjxwYXRoIGQ9Ik0yOTAuNzUsMjIxLjY2Yy0yLjMyLTIuMjgtNS42Ni0zLjM3LTEwLjE1LTMuMjYtMTEuMzEuMjEtMjIuODQsMC4xNy0zNCwuMTNxLTcuNiwwLTE1LjIxLDBjLTE0LjQ2LDAtMTUuNTIsNi45Mi0xNS41NCwxOC4zLDAsMTguMzYsMCwzNy4zNCwwLDU2LjUxVjMyMUgyMTZ2MTUuOTFjMCwxNi43MiwwLDMzLjIxLDAsNTAuNjksMCw4LjYzLDAsMTMsMywxNiwyLjU2LDIuNTQsNiwyLjgyLDExLjMxLDIuODJoNS4yNmM2LjUzLDAsMTMuMTUtLjE1LDE5LjU1LTAuMyw4LjI5LS4xOSwxNi44Ni0wLjM4LDI1LjI1LTAuMjUsNC41MSwwLjEsNy44Ny0xLDEwLjI0LTMuMzZzMy41Ny01LjgyLDMuNTYtMTAuNTNjLTAuMTItNTIuODktLjEtMTA2LjYzLjA2LTE1OS43NUMyOTQuMjQsMjI5LjE0LDI5My44OSwyMjQuNzQsMjkwLjc1LDIyMS42NloiPjwvcGF0aD48cGF0aCBkPSJNMTk1LDI3Ny4zMmMtMS41Ny0xLjYtNC40NC0zLjMyLTkuMTctMy4zMkgxODZ2LTAuMTZjLTE3LC4xLTM0LTAuMDYtNTEuNTQtMC4xNS00LjMyLDAtNy42MSwxLjA4LTkuOSwzLjM4cy0zLjQ4LDUuNjItMy40NiwxMC4wN2MwLjE0LDM2LC4xNCw3MS4xMiwwLDEwNC4zOSwwLDQuNjUsMS4xMSw4LDMuNDYsMTAuMzZzNS42NywzLjQxLDEwLjI2LDMuMzRjMTcuMzYtLjI2LDM0LjM4LTAuMjUsNTAuNiwwaDFjMy4zOSwwLDctLjM2LDkuNTktMi45MnMyLjg3LTYuMzQsMi44Mi05LjMxYy0wLjIyLTEyLjI4LS4xOC0yMy40OC0wLjE0LTM1LjM1LDAtMy40OCwwLTcsMC0xMC42NWwwLTQuNDljMC00LjM3LDAtOS4wNiwwLTEzLjk0LDAtMTIuNzQtLjA5LTI3LjE1LjE1LTM5Ljc0QzE5OC45MiwyODMuNzksMTk3LjY1LDI4MCwxOTUsMjc3LjMyWiI+PC9wYXRoPjxwYXRoIGQ9Ik0xMDAuOTQsMzMwLjY2Yy0yLjE4LTIuMTMtNS4yMS0zLjE0LTkuMzEtM2gwYy00LjcuMS05LjI3LDAuMTEtMTMuMTQsMC4xbC01LjM4LDBxLTcuOTEsMC0xNS44MiwwbC01LjMyLDBoMGMtMy44NSwwLTguNDIsMC0xMy4xLS4xMi00LjA1LS4xMi03LjA1Ljg2LTkuMiwzcy0zLjIyLDUuMjYtMy4xNyw5LjUzYzAuMTksMTguNDQuMTksMzUuNSwwLDUyLjE1LDAsNC4yMiwxLDcuMzUsMy4xOCw5LjU1czUuMDcsMy4yLDksMy4ySDkxLjc0YzQsMCw3LjA3LTEuMSw5LjItMy4yNHMzLjEzLTUsMy4xMi04LjdjLTAuMDUtMTguODIsMC0zNy43MSwwLTUzLjdDMTA0LjA4LDMzNS42MywxMDMsMzMyLjcxLDEwMC45NCwzMzAuNjZaIj48L3BhdGg+PC9zdmc+") no-repeat 0 0; +} + +.signal-5:before { + background: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGRhdGEtbmFtZT0iTGF5ZXIgMSIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHg9IjBweCIgeT0iMHB4Ij48dGl0bGU+d2lmaTIwPC90aXRsZT48cGF0aCBkPSJNNDY5LjU0LDEwNy44OGMtNy41NiwwLTE1LjI3LS4xNS0yMi43My0wLjI5LTguMjQtLjE1LTE2Ljc1LTAuMzEtMjUuMTUtMC4yOS05LjkxLDAtMTQuNjMsMi4xLTE0LjYzLDEzLjgxcTAsNTUuMTcsMCwxMTAuMjljMCw1Mi4zNi4wNSwxMDYuNTEsMCwxNTkuODEsMCwzLjA5LjM3LDcuNTYsMy41NiwxMC42OSwyLjI5LDIuMjQsNS41NiwzLjM0LDEwLDMuMzQsMC4xOSwwLC4zOCwwLDAuNTgsMCwxMS4xNC0uMjMsMjIuNS0wLjIyLDMzLjQ5LTAuMTksNC4xMSwwLDguMjIsMCwxMi4zMywwaDAuNTFjMS43NiwwLDMuMjQuMDksNC41NiwwLjEyLDQuOCwwLjEyLDcuOTQuMjYsMTAuNDUtMi4xOSwyLjcxLTIuNjQsMi42Mi02LjUzLDIuNjItMTMsMC0zMC45Mi0uMTctNjAuNjUtMC4xNy05MC44OVYyNjVoMC41VjIyNS40MWMwLTMzLjQzLDAtNjcuNzYsMC0xMDAuNTdDNDg1LjQ4LDExMi45LDQ4My4yNiwxMDcuOSw0NjkuNTQsMTA3Ljg4WiI+PC9wYXRoPjxwYXRoIGQ9Ik0zODYuNDcsMTY1Ljg5Yy0yLjM2LTIuMzItNS42OC0zLjQtMTAuMjUtMy4zNC0xMSwuMTktMjIuMjUuMTYtMzMuMTEsMC4xMnEtOC4wNiwwLTE2LjExLDBjLTEzLjU2LDAtMTQuNjcsNy42LTE0LjY3LDE2Ljc2LDAsMjUuNzUsMCw1Mi4yOCwwLDc4LjcxVjI4Ny41bDAuMDYsNC41aDBjMCw3Ljc0LDAsMTUuMzgsMCwyMywwLDI2LjM1LDAsNTEuMjQtLjExLDc3Ljc5LDAsMy4zLjMyLDcsMyw5LjY3LDIuNTEsMi40Nyw2LjA4LDIuOTIsOS40LDIuOTJoMWw2LjI2LS4xNWMxNC43OC0uMzUsMzAuMDYtMC43MSw0NS0wLjQsNC4yNSwwLjA5LDcuNDEtLjkzLDkuNjMtMy4xLDMtMi45NCwzLjM4LTcuMSwzLjM3LTEwLjQtMC4wOC02Ni4wOS0uMDctMTM2LjQxLjA1LTIxNUMzOTAsMTcxLjY1LDM4OC44NSwxNjguMjQsMzg2LjQ3LDE2NS44OVoiPjwvcGF0aD48cGF0aCBkPSJNMjkwLjc1LDIyMS42NmMtMi4zMi0yLjI4LTUuNjQtMy4zNy0xMC4xNS0zLjI2LTExLjMxLjIxLTIyLjg1LDAuMTctMzQsLjEzcS03LjYsMC0xNS4yMSwwYy0xNC40NiwwLTE1LjUyLDYuOTItMTUuNTQsMTguMywwLDE4LjM2LDAsMzcuMzQsMCw1Ni41MVYzMjFIMjE2djE1LjkxYzAsMTYuNzIsMCwzMy4yMSwwLDUwLjY5LDAsOC42MywwLDEzLDMsMTYsMi41NiwyLjU0LDYsMi44MiwxMS4zMSwyLjgyaDUuMjZjNi41MywwLDEzLjE1LS4xNSwxOS41NS0wLjMsOC4yOS0uMTksMTYuODYtMC4zOCwyNS4yNS0wLjI1LDQuNTMsMC4xLDcuODctMSwxMC4yNC0zLjM2czMuNTctNS44MiwzLjU2LTEwLjUzYy0wLjEyLTUyLjg5LS4xLTEwNi42My4wNi0xNTkuNzVDMjk0LjI0LDIyOS4xNCwyOTMuODksMjI0Ljc0LDI5MC43NSwyMjEuNjZaIj48L3BhdGg+PHBhdGggZD0iTTE5NSwyNzcuMzJjLTEuNTctMS42LTQuNDQtMy4zMi05LjE3LTMuMzJIMTg2di0wLjE2Yy0xNywuMS0zNC0wLjA2LTUxLjU0LTAuMTUtNC4zMywwLTcuNjEsMS4wOC05LjksMy4zOHMtMy40OCw1LjYyLTMuNDYsMTAuMDdjMC4xNCwzNiwuMTQsNzEuMTIsMCwxMDQuMzksMCw0LjY1LDEuMTEsOCwzLjQ2LDEwLjM2czUuNjgsMy40MSwxMC4yNiwzLjM0YzE3LjM2LS4yNiwzNC4zOC0wLjI1LDUwLjYsMGgxYzMuMzksMCw3LS4zNiw5LjU5LTIuOTJzMi44Ny02LjM0LDIuODItOS4zMWMtMC4yMi0xMi4yOC0uMTgtMjMuNDgtMC4xNC0zNS4zNSwwLTMuNDgsMC03LDAtMTAuNjVsMC00LjQ5YzAtNC4zNywwLTkuMDYsMC0xMy45NCwwLTEyLjc0LS4wOS0yNy4xNS4xNS0zOS43NEMxOTguOTIsMjgzLjc5LDE5Ny42NSwyODAsMTk1LDI3Ny4zMloiPjwvcGF0aD48cGF0aCBkPSJNMTAwLjk0LDMzMC42NmMtMi4xOC0yLjEzLTUuMjEtMy4xNC05LjMxLTNoMGMtNC43LjEtOS4yNywwLjExLTEzLjE0LDAuMWwtNS4zOCwwcS03LjkxLDAtMTUuODIsMGwtNS4zMiwwaDBjLTMuODUsMC04LjQyLDAtMTMuMS0uMTItNC4wNS0uMTItNy4wNS44Ni05LjIsM3MtMy4yMiw1LjI2LTMuMTcsOS41M2MwLjE5LDE4LjQ0LjE5LDM1LjUsMCw1Mi4xNSwwLDQuMjIsMSw3LjM1LDMuMTgsOS41NXM1LjA3LDMuMiw5LDMuMkg5MS43NGM0LDAsNy4wNy0xLjEsOS4yLTMuMjRzMy4xMy01LDMuMTItOC43Yy0wLjA1LTE4LjgyLDAtMzcuNzEsMC01My43QzEwNC4wOCwzMzUuNjMsMTAzLDMzMi43MSwxMDAuOTQsMzMwLjY2WiI+PC9wYXRoPjwvc3ZnPg==") no-repeat 0 0; +} +/*** BIT RATE/SIGNAL PART ***/ diff --git a/dashboard/src/app/song-table/song-table.component.html b/dashboard/src/app/song-table/song-table.component.html new file mode 100644 index 0000000..01b5d5d --- /dev/null +++ b/dashboard/src/app/song-table/song-table.component.html @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameAlbumYearArtistAlbum ArtistPlay CountGenreBit RateRating
{{song['Track Number'] ? (("0" + song['Track Number']).slice(-2)) : "--"}}{{song.Name}} + {{song.Album}} + {{song.Year}} + {{song.Artist}} + {{song['Album Artist'] ? song['Album Artist'] : "-" }}{{song['Play Count']}} + {{song.Genre}} + + + + + + + + + + + + + + + + +
+ + + + diff --git a/dashboard/src/app/song-table/song-table.component.spec.ts b/dashboard/src/app/song-table/song-table.component.spec.ts new file mode 100644 index 0000000..bd3b23c --- /dev/null +++ b/dashboard/src/app/song-table/song-table.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { SongTableComponent } from './song-table.component'; + +describe('SongTableComponent', () => { + let component: SongTableComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ SongTableComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SongTableComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should be created', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/dashboard/src/app/song-table/song-table.component.ts b/dashboard/src/app/song-table/song-table.component.ts new file mode 100644 index 0000000..453bb09 --- /dev/null +++ b/dashboard/src/app/song-table/song-table.component.ts @@ -0,0 +1,61 @@ +import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core'; + +import { Song } from './../object/song'; +import { SortByPipe } from './../sort-by.pipe'; + +@Component({ + selector: 'app-song-table', + templateUrl: './song-table.component.html', + styleUrls: ['./song-table.component.css'] +}) +export class SongTableComponent implements OnChanges { + @Input() songs: Array = []; + @Input() sortable: boolean; + @Output() atBottom = new EventEmitter(); + + // To activate button in interface var + moreDataAvailable = false; + bottomReached = false; + nbSong = 0; + + constructor() { } + + ngOnChanges(changes: SimpleChanges) { + console.log(changes); + } + + /** + * Handle scroll: + * - load data if at bottom of screen (if needed) + * - hide/show "go to top" button + * + * @param event scroll event + */ + onScroll(event: any) { + if ((window.innerHeight + window.scrollY) >= document.body.offsetHeight) { + this.atBottom.emit(); + } + + // Show/hide 'at top' button + if (window.scrollY > window.innerHeight) { + this.bottomReached = true; + } + + if (window.scrollY === 0) { + this.bottomReached = false; + } + } + + scrollTop(): void { + window.scrollTo(0, 0); + } + + roundBitRate(bitRate: number) { + return Math.round(bitRate / 64); + } + + sort(): void { + this.songs = new SortByPipe().transform(this.songs, 'Year', 'Album', 'Track Number', 'Play Count'); + this.sortable = false; + } +}