[GH-ISSUE #1623] Librespot fails to play any tracks #739

Closed
opened 2026-02-27 19:32:13 +03:00 by kerem · 40 comments
Owner

Originally created by @YutongGu on GitHub (Nov 6, 2025).
Original GitHub issue: https://github.com/librespot-org/librespot/issues/1623

Description

Looks like Spotify changed something again on their servers and is causing librespot to stop playing tracks. I can successfully connect but tracks do not play. On initial connect there is a log that indicates setup of state failed: invalid state and a 400 bad request with the message that the client specified an invalid argument. Skipping to the next track causes librespot to fail with continuous Track should be available, but no alternatives found

Appears that Spotify's servers made some breaking changes to their API. Thoughts?

Version

dev, v0.7.0, v0.7.1

How to reproduce

  1. Launch librespot in release mode with no additional parameters except "--name"
  2. Connect with Spotify Connect on iPhone Spotify app (Have not tested on android)
  3. In the app, select a song to play
  4. Selected song does not play

Log

[2025-11-06T18:03:15Z INFO  librespot] librespot 0.7.1 9142e69 (Built on 2025-11-06, Build ID: c7oa5hj0, Profile: release)
[2025-11-06T18:03:15Z TRACE librespot] Command line argument(s):
[2025-11-06T18:03:15Z TRACE librespot] 		verbose
[2025-11-06T18:03:15Z TRACE librespot] 		name "test"
[2025-11-06T18:03:15Z DEBUG librespot_core::session] new Session
[2025-11-06T18:03:15Z DEBUG librespot_discovery::server] Zeroconf server listening on 0.0.0.0:45795
[2025-11-06T18:03:15Z INFO  librespot_playback::mixer::softmixer] Mixing with softvol and volume control: Log(60.0)
[2025-11-06T18:03:15Z DEBUG librespot_playback::player] new Player [0]
[2025-11-06T18:03:15Z INFO  librespot_playback::convert] Converting with ditherer: tpdf
[2025-11-06T18:03:15Z INFO  librespot_playback::audio_backend::rodio] Using Rodio sink with format S16 and cpal host: ALSA
[2025-11-06T18:03:15Z INFO  librespot_playback::audio_backend::rodio] Using audio device: default
[2025-11-06T18:03:15Z DEBUG librespot_playback::audio_backend::rodio] Rodio sink was created
[2025-11-06T18:03:24Z DEBUG librespot_discovery::server] POST "/" {}
[2025-11-06T18:03:24Z DEBUG librespot_core::session] Shutdown: Invalidating session
[2025-11-06T18:03:24Z DEBUG librespot::component] new MercuryManager
[2025-11-06T18:03:24Z DEBUG librespot::component] new ChannelManager
[2025-11-06T18:03:24Z DEBUG librespot_core::session] new Session
[2025-11-06T18:03:24Z DEBUG librespot_connect::spirc] new Spirc[0]
[2025-11-06T18:03:24Z DEBUG librespot_playback::player] command=SetSession
[2025-11-06T18:03:24Z DEBUG librespot::component] new DealerManager
[2025-11-06T18:03:24Z DEBUG librespot_core::session] drop Session
[2025-11-06T18:03:24Z DEBUG librespot::component] drop ChannelManager
[2025-11-06T18:03:24Z DEBUG librespot::component] drop MercuryManager
[2025-11-06T18:03:24Z DEBUG librespot::component] new SpClient
[2025-11-06T18:03:24Z DEBUG librespot_core::spclient] Client token unavailable or expired, requesting new token.
[2025-11-06T18:03:24Z DEBUG librespot_core::http_client] Requesting https://clienttoken.spotify.com/v1/clienttoken
[2025-11-06T18:03:25Z DEBUG librespot_core::spclient] Received a granted token
[2025-11-06T18:03:25Z TRACE librespot_core::spclient] Got client token: GrantedTokenResponse { token: "AACDGhgNWBXLGpXr5cXw9gKyG7IZiAvnSEo0U7bD1+xQ+Hukh+GjKLdceMHw3QQc1y1AL6qwVKIEcRVbGsGCcIEqNlQ4/MixMLxl9pejgw02uc8/B9D20Zr7KHac5IAfKDdrWGi4RISZNlOFDAcaHgjlZLTX06a6ACzo051US58NSd3NfKnPDGiN0NgwAvJfPRKFMx6LaNeOeY6exyqZv13ErJnAxQlh+l2SW8h2a82GvoSUYoxiz9HFrZ4wcC7GOEIMRPTG0RrIkLEW5PkDTC2Syvt+w7J6+ddYXk1PrhAY/3yOqZDg5IRJNOXjV72bxEygrt28LzM=", expires_after_seconds: 1216800, refresh_after_seconds: 1209600, domains: [TokenDomain { domain: "spotify.com", special_fields: SpecialFields { unknown_fields: UnknownFields { fields: None }, cached_size: CachedSize { size: 0 } } }, TokenDomain { domain: "spotify.net", special_fields: SpecialFields { unknown_fields: UnknownFields { fields: None }, cached_size: CachedSize { size: 0 } } }], special_fields: SpecialFields { unknown_fields: UnknownFields { fields: None }, cached_size: CachedSize { size: 0 } } }
[2025-11-06T18:03:25Z DEBUG librespot::component] new ApResolver
[2025-11-06T18:03:25Z DEBUG librespot_core::http_client] Requesting https://apresolve.spotify.com/?type=accesspoint&type=dealer&type=spclient
[2025-11-06T18:03:25Z WARN  librespot_core::apresolve] Failed to resolve all access points, using fallbacks
[2025-11-06T18:03:25Z WARN  librespot_core::apresolve] Resolve access points error: Service unavailable { client error (Connect) }
[2025-11-06T18:03:25Z INFO  librespot_core::session] Connecting to AP "ap.spotify.com:443"
[2025-11-06T18:03:25Z DEBUG librespot_core::connection] Connection to AP established.
[2025-11-06T18:03:25Z DEBUG librespot_core::connection] Authenticating with AP using AUTHENTICATION_STORED_SPOTIFY_CREDENTIALS
[2025-11-06T18:03:25Z INFO  librespot_core::session] Authenticated as '1219828745' !
[2025-11-06T18:03:25Z DEBUG librespot::component] new Login5Manager
[2025-11-06T18:03:25Z DEBUG librespot_core::http_client] Requesting https://login5.spotify.com/v3/login
[2025-11-06T18:03:25Z TRACE librespot_core::session] Received Ping
[2025-11-06T18:03:25Z TRACE librespot_core::session] keep-alive state: PendingPong, timeout in 60.0
[2025-11-06T18:03:25Z DEBUG librespot_core::session] Session strong=5 weak=6
[2025-11-06T18:03:25Z INFO  librespot_core::session] Country: "US"
[2025-11-06T18:03:25Z TRACE librespot_core::session] Received product info: {
        "jam": "1",
        "collection": "1",
        "image-url": "https://i.scdn.co/image/{file_id}",
        "is-tuna": "0",
        "network-operator-premium-activation": "1",
        "is-standalone-audiobooks": "0",
        "jam-social-session": "EXPANDED",
        "rating-access": "1",
        "financial-product": "pr:premium,tc:0,rt:v2_US_default_individual-basic-1m-1m_10.99_USD_default",
        "app-developer": "0",
        "unrestricted": "1",
        "ad-formats-preroll-video": "0",
        "audiobook-onboarding-completed": "0",
        "shows-collection-jam": "1",
        "shuffle": "0",
        "video-device-blacklisted": "0",
        "mobile": "1",
        "arsenal_country": "1",
        "ab-ad-player-targeting": "1",
        "key-caching-max-count": "10000",
        "catalogue": "premium",
        "prefetch-strategy": "18",
        "video-cdn-sampling": "100",
        "streaming": "1",
        "ab-watch-now": "0",
        "incognito_mode_timeout": "21600",
        "metadata-link-lookup-modes": "0",
        "license-acceptance-grace-days": "30",
        "on-demand-trial-in-progress": "0",
        "audio-preview-url-template": "https://p.scdn.co/mp3-preview/{id}",
        "capping-bar-threshold": "3601",
        "explicit-content": "1",
        "head-files-url": "https://heads-fa-tls13.spotifycdn.com/head/{file_id}",
        "prefetch-keys": "1",
        "sidebar-navigation-enabled": "0",
        "name": "Spotify Premium",
        "loudness-levels": "1:-5.0,0.0,3.0:-2.0",
        "player-license-v2": "premium",
        "user-profile-show-invitation-codes": "0",
        "nft-disabled": "1",
        "audio-quality": "1",
        "public-toplist": "7",
        "is-cheetara": "0",
        "setup-headphones-changes": "0",
        "shuffle-algorithm": "FRESH",
        "video-manifest-url": "https://spclient.wg.spotify.com/manifests/v6/{type}/sources/{source_id}/options/supports_drm",
        "shows-collection": "1",
        "yl-kids-restricted-content": "0",
        "browse-overview-enabled": "1",
        "dma-mode-available": "0",
        "dsa-mode-enabled": "0",
        "type": "premium",
        "enable-crossfade": "1",
        "key-memory-cache-mode": "1:15,300",
        "payments-locked-state": "0",
        "playlist-annotations-markup": "0",
        "publish-playlist": "1",
        "ads": "0",
        "head-file-caching": "1",
        "is-pigeon": "0",
        "mobile-payment": "0",
        "high-bitrate": "1",
        "dma-mode-enabled": "0",
        "restrict-playlist-collaboration": "0",
        "streaming-only-premium": "0",
        "pick-and-shuffle": "0",
        "preferred-locale": "en-us",
        "enable-annotations": "2",
        "has-audiobooks-subscription": "0",
        "is-puffin": "0",
        "offline": "1",
        "social-session": "1",
        "enable-annotations-read": "0",
        "ab_recently_played_feature_time_filter_threshold": "com.spotify.gaia=30,driving-mode=120,spotify%3Ainternal%3Astartpage=30",
        "send-email": "0",
        "player-license": "premium",
        "ugc-abuse-report": "1",
        "apply-child-content-restrictions": "0",
        "key-caching-auto-offline": "0",
        "prefetch-window-max": "2",
        "publish-activity": "0",
        "dsa-mode-available": "0",
        "libspotify": "1",
        "radio": "1",
        "widevine-license-url": "https://spclient.wg.spotify.com/widevine-license/v1/video/license",
        "autoplay": "1",
        "is_email_verified": "1",
        "ad-session-persistence": "1",
        "key-caching-max-offline-seconds": "1800",
        "obfuscate-restricted-tracks": "0",
        "on-demand": "1",
        "storage-size-config": "10240,90,500,3",
        "ugc-abuse-report-url": "https://support.spotify.com/abuse/?uri={uri}",
        "filter-explicit-content": "0",
        "employee-free-opt-in": "0",
        "payments-initial-campaign": "default",
        "remote-control": "6",
        "social-session-free-tier": "0",
        "is-thalia": "1",
        "video-keyframe-url": "http://keyframes-fa.cdn.spotify.com/keyframes/v1/sources/{source_id}/keyframe/heights/{height}/timestamps/{timestamp_ms}.jpg",
    }
[2025-11-06T18:03:25Z DEBUG librespot::component] new MercuryManager
[2025-11-06T18:03:25Z TRACE librespot_core::mercury] mercury response <hm://pusher/v1/connections/YTk0YThmZTVjY2IxOWJhNjFjNGMwODczZDM5MWU5ODc5ODJmYmJkMytBUCt0Y3A6Ly8wYWIxNDgzMy5pcC5ndWMzLnNwb3RpZnkubmV0OjUwMTYrRjJDMjEwOEI4M0UxQTMxM0RDNUQ1RDRFQzkyMzJDQ0FGNzA2REE4Qjk1MDUxNjEwNUM2QzNFN0EwNTQ3NkJDNg%3D%3D> is handled by dealer
[2025-11-06T18:03:25Z TRACE librespot_core::login5] Got auth token: Token { access_token: "BQC8brYClX3JYVjT0gBZWak0TdVGWD7wN5OCuefUDnuUFwqjeaEd6zHFiuaYntEEnC_5NIhrEVO7kjymTJCbbdREkB_wCEPyNIBvJMrBpGQOYeBHhlY9W8ev6naB0eVRBDCusSIl1IiJEp5qBVnAf1-vVBYKO89xikh5Fk8QOhsATMmF904nNULIC1UNxEBnJlmuvxu-sv2xaY6sGSb8MvOGcieWjcHY0uIRSf1TCesy__1Zdok7v-JOAhyhDTRg0lHkBSpyR1Tclza3Bg54OHx_Hf3TP-Jpddj1yKbF-BUT8u45sC0yCLVqr6v2QOPHxRLK1EwExefeJUjgIuXHC1EoswPrc9nLXmFmvIjE-onyEyFJIMK2nH0W9ySBGNfqIuY_BakPnnw8tf8SAnYxbxLv7xyc", expires_in: 3600s, token_type: "Bearer", scopes: [], timestamp: Instant { tv_sec: 470144, tv_nsec: 769129754 } }
[2025-11-06T18:03:25Z DEBUG librespot_connect::spirc] SpircTask::set_volume(32767)
[2025-11-06T18:03:25Z DEBUG librespot_playback::player] command=AddEventSender
[2025-11-06T18:03:25Z DEBUG librespot_playback::mixer::mappings] Input volume 32767 mapped to: 3.16%
[2025-11-06T18:03:25Z DEBUG librespot_core::dealer::manager] Launching dealer
[2025-11-06T18:03:25Z DEBUG librespot_core::http_client] Requesting https://apresolve.spotify.com/?type=accesspoint&type=dealer&type=spclient
[2025-11-06T18:03:25Z WARN  librespot_core::apresolve] Failed to resolve all access points, using fallbacks
[2025-11-06T18:03:25Z WARN  librespot_core::apresolve] Resolve access points error: Service unavailable { client error (Connect) }
[2025-11-06T18:03:26Z TRACE librespot_core::dealer] Sent ping
[2025-11-06T18:03:26Z TRACE librespot_connect::spirc] Received connection ID update: "NTE3MTUyZmEtN2FkYy00NTZlLWE4NzUtMjhlM2Y3YTMyZDRhK2RlYWxlcit0Y3A6Ly8wYWIxNDhlOC5pcC5ndWMzLnNwb3RpZnkubmV0OjU3MDArOEFGODc2OEQ1QkMzMDdFRjMwMkQ0OEM4ODgwMDQwQTg5MTQzQTBGNTUxNDAzRTNCNkM5MzgzM0YxQTQwOUUyQg=="
[2025-11-06T18:03:26Z DEBUG librespot_core::http_client] Requesting https://apresolve.spotify.com/?type=accesspoint&type=dealer&type=spclient
[2025-11-06T18:03:26Z WARN  librespot_core::apresolve] Failed to resolve all access points, using fallbacks
[2025-11-06T18:03:26Z WARN  librespot_core::apresolve] Resolve access points error: Service unavailable { client error (Connect) }
[2025-11-06T18:03:26Z INFO  librespot_core::spclient] Resolved "spclient.wg.spotify.com:443" as spclient access point
[2025-11-06T18:03:26Z DEBUG librespot_core::http_client] Requesting https://spclient.wg.spotify.com:443/connect-state/v1/devices/a94a8fe5ccb19ba61c4c0873d391e987982fbbd3?product=0&country=US&salt=1887626871
[2025-11-06T18:03:26Z TRACE librespot_core::dealer] Received pong
[2025-11-06T18:03:26Z TRACE librespot_core::dealer] dealer request hm://connect-state/v1/player/command
[2025-11-06T18:03:26Z TRACE librespot_core::dealer::protocol] message was sent with gzip encoding 
[2025-11-06T18:03:26Z TRACE librespot_core::dealer::protocol] websocket request: Object {
        "command": Object {
            "data": String("CjQIABAAGAAlAAAAACoKCgNqYW0SA29mZiobChNjb250ZXh0X2VuaGFuY2VtZW50EgROT05FEqoCCKCG2dKlMxCqJRkAAAAAAAAAACABKpICCiRzcG90aWZ5OnRyYWNrOjdnZjVmZm1TcUtRQkRua21TZTJEdDcSEGQ2YzA2ZGIzYTRkMzgwOTkaEO6bKlgWL0Unuac35EwEkTkiOwoKZW50aXR5X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIjcKC2RlY2lzaW9uX2lkEihzc3B+MDY0MmYwZGYzY2ZkOGFhOTM5ODJkN2ExYTMxYTIwMGYzOGZhIjwKC2NvbnRleHRfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiEgoNY29udGV4dF9pbmRleBIBMBrMawoXCgASABoAIgAqADIAOgdjb25uZWN0QgASmmsKLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaBI3Y29udGV4dDovL3Nwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCIAKq1qIpICCiRzcG90aWZ5OnRyYWNrOjdnZjVmZm1TcUtRQkRua21TZTJEdDcSEGQ2YzA2ZGIzYTRkMzgwOTkaEO6bKlgWL0Unuac35EwEkTkiOwoKZW50aXR5X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIjcKC2RlY2lzaW9uX2lkEihzc3B+MDY0MmYwZGYzY2ZkOGFhOTM5ODJkN2ExYTMxYTIwMGYzOGZhIjwKC2NvbnRleHRfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiEgoNY29udGV4dF9pbmRleBIBMCKSAgokc3BvdGlmeTp0cmFjazowaHRORE5OUmtGbVF1RVNrcTRlb3FqEhBlMWM5NmU2ODczODBjYzEyGhAJQ4xoJApNAJ7GzjY4I2NPIjsKCmVudGl0eV91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCI3CgtkZWNpc2lvbl9pZBIoc3NwfjA2NDJmMGRmM2NmZDhhYTkzOTgyZDdhMWEzMWEyMDBmMzhmYSI8Cgtjb250ZXh0X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIhIKDWNvbnRleHRfaW5kZXgSATEikgIKJHNwb3RpZnk6dHJhY2s6MVl6SXBxd25qNU04cXlsd24xVHI5WhIQNzRlN2M2MDZkNjMxNWIwMhoQQPWHl1zXQ0OADBNddBHHzyI7CgplbnRpdHlfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiNwoLZGVjaXNpb25faWQSKHNzcH4wNjQyZjBkZjNjZmQ4YWE5Mzk4MmQ3YTFhMzFhMjAwZjM4ZmEiPAoLY29udGV4dF91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCISCg1jb250ZXh0X2luZGV4EgEyIpICCiRzcG90aWZ5OnRyYWNrOjN4T2kwWWhEUkVLUlVSRkhvTmFBT1ESEDZkMmQ2ZTRjYzMzNTQwZmIaEHR9HxTaZ0Msu4s70W2rfeAiOwoKZW50aXR5X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIjcKC2RlY2lzaW9uX2lkEihzc3B+MDY0MmYwZGYzY2ZkOGFhOTM5ODJkN2ExYTMxYTIwMGYzOGZhIjwKC2NvbnRleHRfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiEgoNY29udGV4dF9pbmRleBIBMyKSAgokc3BvdGlmeTp0cmFjazo0R1VhRzNkZjluYnJqNzdHS0VCNzZqEhBkNjUwOWEyMGU4YjUzOWE4GhCaKlmG8N5DAKLuipwSwMk7IjsKCmVudGl0eV91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCI3CgtkZWNpc2lvbl9pZBIoc3NwfjA2NDJmMGRmM2NmZDhhYTkzOTgyZDdhMWEzMWEyMDBmMzhmYSI8Cgtjb250ZXh0X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIhIKDWNvbnRleHRfaW5kZXgSATQikgIKJHNwb3RpZnk6dHJhY2s6MjJZdlVjR3pWTGp0SzN1MmZTTUFachIQMzM0YWM0MzhiNjBlOGJiMBoQQ0p1+6kHSz+EBTM4gvx78SI7CgplbnRpdHlfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiNwoLZGVjaXNpb25faWQSKHNzcH4wNjQyZjBkZjNjZmQ4YWE5Mzk4MmQ3YTFhMzFhMjAwZjM4ZmEiPAoLY29udGV4dF91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCISCg1jb250ZXh0X2luZGV4EgE2IpICCiRzcG90aWZ5OnRyYWNrOjV2c2FzcEY2d0laT1BXTkNkSFVGTFASEDA0YTZmZmVhMmNkNTI5NGIaELT0F0EfK0RCpeHN1r88u4kiOwoKZW50aXR5X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIjcKC2RlY2lzaW9uX2lkEihzc3B+MDY0MmYwZGYzY2ZkOGFhOTM5ODJkN2ExYTMxYTIwMGYzOGZhIjwKC2NvbnRleHRfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiEgoNY29udGV4dF9pbmRleBIBNyKSAgokc3BvdGlmeTp0cmFjazozQkNzTk0ydzZIY0NiclZXbGhqVHBrEhAxNzVlNjAxNTk4MDRlZGI2GhB2gel8vXlEELEslpz5PuHWIjsKCmVudGl0eV91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCI3CgtkZWNpc2lvbl9pZBIoc3NwfjA2NDJmMGRmM2NmZDhhYTkzOTgyZDdhMWEzMWEyMDBmMzhmYSI8Cgtjb250ZXh0X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIhIKDWNvbnRleHRfaW5kZXgSATgikgIKJHNwb3RpZnk6dHJhY2s6NmRBTmNRMDB1aWlXb0JEWVZyc0d2ehIQZWYwNmVhNGU1MWY2Y2YxNxoQzFhQBJRdQYSeCqUnFpXgfSI7CgplbnRpdHlfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiNwoLZGVjaXNpb25faWQSKHNzcH4wNjQyZjBkZjNjZmQ4YWE5Mzk4MmQ3YTFhMzFhMjAwZjM4ZmEiPAoLY29udGV4dF91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCISCg1jb250ZXh0X2luZGV4EgE5IpMCCiRzcG90aWZ5OnRyYWNrOjRKbjJDZFpZcXRJc1BwSVJZQjFvNDcSEDRmZWY0NTQ0ZTRlNTM3NmEaEJt42zuhbEYcu28j/jyw6WciOwoKZW50aXR5X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIjcKC2RlY2lzaW9uX2lkEihzc3B+MDY0MmYwZGYzY2ZkOGFhOTM5ODJkN2ExYTMxYTIwMGYzOGZhIjwKC2NvbnRleHRfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiEwoNY29udGV4dF9pbmRleBICMTAikwIKJHNwb3RpZnk6dHJhY2s6MW1VVHBEZTNFOHBNTDYzN3pPRkw1RBIQNzViODRhN2U4NjQ0ODJmYhoQLQCF6Ol/RGesfoTeB5yn0SI7CgplbnRpdHlfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiNwoLZGVjaXNpb25faWQSKHNzcH4wNjQyZjBkZjNjZmQ4YWE5Mzk4MmQ3YTFhMzFhMjAwZjM4ZmEiPAoLY29udGV4dF91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCITCg1jb250ZXh0X2luZGV4EgIxMSKTAgokc3BvdGlmeTp0cmFjazoyVzVkU3VNN0REZFd5bWp6WnNJQ0JuEhA5YzgwNTBkMWQ3MGMxYmU5GhBgftPqSRFLXoyyEQ5i7QWlIjsKCmVudGl0eV91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCI3CgtkZWNpc2lvbl9pZBIoc3NwfjA2NDJmMGRmM2NmZDhhYTkzOTgyZDdhMWEzMWEyMDBmMzhmYSI8Cgtjb250ZXh0X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIhMKDWNvbnRleHRfaW5kZXgSAjEyIpMCCiRzcG90aWZ5OnRyYWNrOjFzMEIwZGtaSGZ5blNjcExPMFV6SlgSEDM1YjkzYjU3ODM4M2Q4ZGUaEC+zVmW2906ZjH7FaUwF++0iOwoKZW50aXR5X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIjcKC2RlY2lzaW9uX2lkEihzc3B+MDY0MmYwZGYzY2ZkOGFhOTM5ODJkN2ExYTMxYTIwMGYzOGZhIjwKC2NvbnRleHRfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiEwoNY29udGV4dF9pbmRleBICMTMikwIKJHNwb3RpZnk6dHJhY2s6M1I2eU5pY3NacldGOHlibDAyaW1jQhIQZmMxYjAyZTFjMDRhMWQyMRoQfrbGLUziRS+u+Q04F9KItSI7CgplbnRpdHlfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiNwoLZGVjaXNpb25faWQSKHNzcH4wNjQyZjBkZjNjZmQ4YWE5Mzk4MmQ3YTFhMzFhMjAwZjM4ZmEiPAoLY29udGV4dF91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCITCg1jb250ZXh0X2luZGV4EgIxNCKTAgokc3BvdGlmeTp0cmFjazo0Nm9EQmRkaHd1MGdmRnIyejFmdmg1EhAwY2E1MzEyOTE1MzNlM2UyGhCG0VYPNZtG8L4T4zPdLJ/XIjsKCmVudGl0eV91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCI3CgtkZWNpc2lvbl9pZBIoc3NwfjA2NDJmMGRmM2NmZDhhYTkzOTgyZDdhMWEzMWEyMDBmMzhmYSI8Cgtjb250ZXh0X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIhMKDWNvbnRleHRfaW5kZXgSAjE1IpMCCiRzcG90aWZ5OnRyYWNrOjZwYW1hZkQ5cDBLN0ZIZkpQejZUWUYSEDk3NWZhMDNhMjBlNDZhYmYaENJ6eEJzOUlPr9QtUZ3WAu0iOwoKZW50aXR5X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIjcKC2RlY2lzaW9uX2lkEihzc3B+MDY0MmYwZGYzY2ZkOGFhOTM5ODJkN2ExYTMxYTIwMGYzOGZhIjwKC2NvbnRleHRfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiEwoNY29udGV4dF9pbmRleBICMTYikwIKJHNwb3RpZnk6dHJhY2s6NXowTFNEcFBwR3djMlp5Skhwc0UzShIQMzRhM2I2MTMzMDYzOGIyMhoQttbPik+JT1SfMEf35XRQFyI7CgplbnRpdHlfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiNwoLZGVjaXNpb25faWQSKHNzcH4wNjQyZjBkZjNjZmQ4YWE5Mzk4MmQ3YTFhMzFhMjAwZjM4ZmEiPAoLY29udGV4dF91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCITCg1jb250ZXh0X2luZGV4EgIxNyKTAgokc3BvdGlmeTp0cmFjazo2Y1VKbXpVMjRHb3JSaGVLZ2htTmtZEhAyM2FkM2UyZDdmMjFmYmViGhDL/EYCs+VCbp/tCQylWNS4IjsKCmVudGl0eV91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCI3CgtkZWNpc2lvbl9pZBIoc3NwfjA2NDJmMGRmM2NmZDhhYTkzOTgyZDdhMWEzMWEyMDBmMzhmYSI8Cgtjb250ZXh0X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIhMKDWNvbnRleHRfaW5kZXgSAjE4IpMCCiRzcG90aWZ5OnRyYWNrOjVYbE1qNDlQM2pqbVhwQWRWR09MeVcSEGM5ODAzMjhmYjMxMjdmOTMaEMO8yS/fMUFQqAIdcluHMmIiOwoKZW50aXR5X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIjcKC2RlY2lzaW9uX2lkEihzc3B+MDY0MmYwZGYzY2ZkOGFhOTM5ODJkN2ExYTMxYTIwMGYzOGZhIjwKC2NvbnRleHRfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiEwoNY29udGV4dF9pbmRleBICMTkikwIKJHNwb3RpZnk6dHJhY2s6NnlLaFJpa0JIWHk0TXlMeTRLOEt1WBIQNmUyODk2NzEyZmZjNzY2ZhoQ144YaM0xTsWmonUUCw4nVyI7CgplbnRpdHlfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiNwoLZGVjaXNpb25faWQSKHNzcH4wNjQyZjBkZjNjZmQ4YWE5Mzk4MmQ3YTFhMzFhMjAwZjM4ZmEiPAoLY29udGV4dF91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCITCg1jb250ZXh0X2luZGV4EgIyMCKTAgokc3BvdGlmeTp0cmFjazoxOU1rd01yUmpPNzc3M3pwdUdzczFvEhAwOGYzMjYwNTE2YjE0Zjg0GhAmCh2BKFtLfKngJyQVyCyGIjsKCmVudGl0eV91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCI3CgtkZWNpc2lvbl9pZBIoc3NwfjA2NDJmMGRmM2NmZDhhYTkzOTgyZDdhMWEzMWEyMDBmMzhmYSI8Cgtjb250ZXh0X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIhMKDWNvbnRleHRfaW5kZXgSAjIxIpMCCiRzcG90aWZ5OnRyYWNrOjBPV2hLdnZzSHB0dDZ2bm5OVVNNOWESEDlmYjcxMWRhNjgwMzMzMzkaEBr+5EB5pEJhnEhmXFE7zegiOwoKZW50aXR5X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIjcKC2RlY2lzaW9uX2lkEihzc3B+MDY0MmYwZGYzY2ZkOGFhOTM5ODJkN2ExYTMxYTIwMGYzOGZhIjwKC2NvbnRleHRfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiEwoNY29udGV4dF9pbmRleBICMjIikwIKJHNwb3RpZnk6dHJhY2s6MGhjMnM3c2JQVG9tZWdEWHBJeVNvaxIQYjc3MDA3ZjYyZjI1NmRhYxoQCRyvG3iFQSO0b2LgNZ9AjCI7CgplbnRpdHlfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiNwoLZGVjaXNpb25faWQSKHNzcH4wNjQyZjBkZjNjZmQ4YWE5Mzk4MmQ3YTFhMzFhMjAwZjM4ZmEiPAoLY29udGV4dF91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCITCg1jb250ZXh0X2luZGV4EgIyMyKTAgokc3BvdGlmeTp0cmFjazo0Z2k4MWNnYVUwWG1lazFJdU9FTk01EhA4NzYxMDRiNjgzOTYwYjk2GhCMD8M/HUVAL4aIELG1ntwJIjsKCmVudGl0eV91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCI3CgtkZWNpc2lvbl9pZBIoc3NwfjA2NDJmMGRmM2NmZDhhYTkzOTgyZDdhMWEzMWEyMDBmMzhmYSI8Cgtjb250ZXh0X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIhMKDWNvbnRleHRfaW5kZXgSAjI0IpMCCiRzcG90aWZ5OnRyYWNrOjdKMEdnV1BNZjVPVFNKSzZ1WHhGZTASEDI2ODBmY2FkNDE3NTkxMGUaEP3Z/jhUMEdAhlue3CvD1HAiOwoKZW50aXR5X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIjcKC2RlY2lzaW9uX2lkEihzc3B+MDY0MmYwZGYzY2ZkOGFhOTM5ODJkN2ExYTMxYTIwMGYzOGZhIjwKC2NvbnRleHRfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiEwoNY29udGV4dF9pbmRleBICMjUikwIKJHNwb3RpZnk6dHJhY2s6NzE0dEYwVnQ5b2hDOXVXd0V5SVJBbxIQNTMwNDE5MGQ4ODgzNzJiORoQ5pDzr+v1QZCOCUtN3mP7ZCI7CgplbnRpdHlfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiNwoLZGVjaXNpb25faWQSKHNzcH4wNjQyZjBkZjNjZmQ4YWE5Mzk4MmQ3YTFhMzFhMjAwZjM4ZmEiPAoLY29udGV4dF91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCITCg1jb250ZXh0X2luZGV4EgIyNiKTAgokc3BvdGlmeTp0cmFjazoyMGRrZWJCdFBSNEFKOHZWb3M0MUd3EhBiYWIzNTQxNTMyMGM1MmQ3GhBB097Ox8hP95wkiaK+p5CwIjsKCmVudGl0eV91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCI3CgtkZWNpc2lvbl9pZBIoc3NwfjA2NDJmMGRmM2NmZDhhYTkzOTgyZDdhMWEzMWEyMDBmMzhmYSI8Cgtjb250ZXh0X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIhMKDWNvbnRleHRfaW5kZXgSAjI3IpMCCiRzcG90aWZ5OnRyYWNrOjVqZmhMQ1NJRlVPNG5kek5SaDR3NEcSEGU5NDRkMWJkMjdlM2VmYWIaEK575ffsDE/fnf83t6LZHbIiOwoKZW50aXR5X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIjcKC2RlY2lzaW9uX2lkEihzc3B+MDY0MmYwZGYzY2ZkOGFhOTM5ODJkN2ExYTMxYTIwMGYzOGZhIjwKC2NvbnRleHRfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiEwoNY29udGV4dF9pbmRleBICMjgikwIKJHNwb3RpZnk6dHJhY2s6MFZCS2JndDdROGZ2UjRCNURydlZwaBIQZmQ4NGJjMDJmNGQyOWE0MBoQHoecyJ+URC+p/NUMDcgXmyI7CgplbnRpdHlfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiNwoLZGVjaXNpb25faWQSKHNzcH4wNjQyZjBkZjNjZmQ4YWE5Mzk4MmQ3YTFhMzFhMjAwZjM4ZmEiPAoLY29udGV4dF91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCITCg1jb250ZXh0X2luZGV4EgIyOSKTAgokc3BvdGlmeTp0cmFjazoyUVpNT1phWENON0dRanIzcUtXQXdBEhBjNWQwNmQ5ZjdlMzAyYzE3GhBdzJjO40dBAKhKYyTOuQaEIjsKCmVudGl0eV91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCI3CgtkZWNpc2lvbl9pZBIoc3NwfjA2NDJmMGRmM2NmZDhhYTkzOTgyZDdhMWEzMWEyMDBmMzhmYSI8Cgtjb250ZXh0X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIhMKDWNvbnRleHRfaW5kZXgSAjMwIpMCCiRzcG90aWZ5OnRyYWNrOjdBZU0xQkdZTTdlbXJxbVFuMVB1V3YSEDgzYWIzZWJjMTRjNDVkZjIaEPkz09EVqEZUoeSuICopZzsiOwoKZW50aXR5X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIjcKC2RlY2lzaW9uX2lkEihzc3B+MDY0MmYwZGYzY2ZkOGFhOTM5ODJkN2ExYTMxYTIwMGYzOGZhIjwKC2NvbnRleHRfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiEwoNY29udGV4dF9pbmRleBICMzEikwIKJHNwb3RpZnk6dHJhY2s6MlJvTVFBcnoxVjZ1aU1lckQ4MnNLbRIQMWE4NDY4ZWU3NDJmMzQwZBoQXgNNYPK7SL25jP1046pQ+iI7CgplbnRpdHlfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiNwoLZGVjaXNpb25faWQSKHNzcH4wNjQyZjBkZjNjZmQ4YWE5Mzk4MmQ3YTFhMzFhMjAwZjM4ZmEiPAoLY29udGV4dF91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCITCg1jb250ZXh0X2luZGV4EgIzMiKTAgokc3BvdGlmeTp0cmFjazo0YTJ1cVZscFJDaEhqMzJFakpMdTdHEhAxYTI0MjNiZTYzYjRkNGY4GhCIv4p0AohMOLAmS26fUu5MIjsKCmVudGl0eV91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCI3CgtkZWNpc2lvbl9pZBIoc3NwfjA2NDJmMGRmM2NmZDhhYTkzOTgyZDdhMWEzMWEyMDBmMzhmYSI8Cgtjb250ZXh0X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIhMKDWNvbnRleHRfaW5kZXgSAjMzIpMCCiRzcG90aWZ5OnRyYWNrOjBIRXl0R1FNM2JHMXZLeEVSN0lnVksSEGZkNGQxMmFmNzgwZmU5ZmIaEBcibPrl903LjLnYn0K5BCwiOwoKZW50aXR5X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIjcKC2RlY2lzaW9uX2lkEihzc3B+MDY0MmYwZGYzY2ZkOGFhOTM5ODJkN2ExYTMxYTIwMGYzOGZhIjwKC2NvbnRleHRfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiEwoNY29udGV4dF9pbmRleBICMzQikwIKJHNwb3RpZnk6dHJhY2s6ME5kRWRzWFM5amJYMWhudWZhd1owehIQMTlhZTUxOGI4MDE0MmJiNRoQGhWMrgu6TDe9tY2rLDcs1yI7CgplbnRpdHlfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiNwoLZGVjaXNpb25faWQSKHNzcH4wNjQyZjBkZjNjZmQ4YWE5Mzk4MmQ3YTFhMzFhMjAwZjM4ZmEiPAoLY29udGV4dF91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCITCg1jb250ZXh0X2luZGV4EgIzNSKTAgokc3BvdGlmeTp0cmFjazoxT1lIWEN1SGR6SGpwSHFIbFkxZzFyEhA0M2UwNGVhNDkwN2RkNDdkGhA734xQJV5EupgOjA1NRCNxIjsKCmVudGl0eV91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCI3CgtkZWNpc2lvbl9pZBIoc3NwfjA2NDJmMGRmM2NmZDhhYTkzOTgyZDdhMWEzMWEyMDBmMzhmYSI8Cgtjb250ZXh0X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIhMKDWNvbnRleHRfaW5kZXgSAjM2IpMCCiRzcG90aWZ5OnRyYWNrOjVBUU5xZHBsNlNFVjlyQUhXeTdVOXcSEGZlMDY2ZmM1ZmNjNzhhZDgaELfQUT8lRUp0iNyNy1lqKJYiOwoKZW50aXR5X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIjcKC2RlY2lzaW9uX2lkEihzc3B+MDY0MmYwZGYzY2ZkOGFhOTM5ODJkN2ExYTMxYTIwMGYzOGZhIjwKC2NvbnRleHRfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiEwoNY29udGV4dF9pbmRleBICMzcikwIKJHNwb3RpZnk6dHJhY2s6MzExR3Z4cHVldXU0THZXWVo3Znd2YRIQYzY0NjA1NzkzZTExMWEwNhoQYx1rrIchQlKjB77sblpMZCI7CgplbnRpdHlfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiNwoLZGVjaXNpb25faWQSKHNzcH4wNjQyZjBkZjNjZmQ4YWE5Mzk4MmQ3YTFhMzFhMjAwZjM4ZmEiPAoLY29udGV4dF91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCITCg1jb250ZXh0X2luZGV4EgIzOCKTAgokc3BvdGlmeTp0cmFjazozRnE0c2hoSmRFTlFod2xMazlxb0R4EhAwN2E5NWQ2MjZlN2MyZjM5GhB4hXZ0779AAqmV6m2Ux0xzIjsKCmVudGl0eV91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCI3CgtkZWNpc2lvbl9pZBIoc3NwfjA2NDJmMGRmM2NmZDhhYTkzOTgyZDdhMWEzMWEyMDBmMzhmYSI8Cgtjb250ZXh0X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIhMKDWNvbnRleHRfaW5kZXgSAjM5IpMCCiRzcG90aWZ5OnRyYWNrOjNHbjF6dUhOTHRHdUdFT1h3cTBrN2USEDg1MWFiYzcwMGM3NDU5MzgaEHkGdqOcA0tnjEqepaktzXAiOwoKZW50aXR5X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIjcKC2RlY2lzaW9uX2lkEihzc3B+MDY0MmYwZGYzY2ZkOGFhOTM5ODJkN2ExYTMxYTIwMGYzOGZhIjwKC2NvbnRleHRfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiEwoNY29udGV4dF9pbmRleBICNDAikwIKJHNwb3RpZnk6dHJhY2s6NEtVTEF5bUJCSmNQUnBrMXlPNGRPRxIQOWZjYTVjYmZkOGVlZmQ2MxoQnEpSDF/QSAevjKu+85LDeiI7CgplbnRpdHlfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiNwoLZGVjaXNpb25faWQSKHNzcH4wNjQyZjBkZjNjZmQ4YWE5Mzk4MmQ3YTFhMzFhMjAwZjM4ZmEiPAoLY29udGV4dF91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCITCg1jb250ZXh0X2luZGV4EgI0MSKTAgokc3BvdGlmeTp0cmFjazoxRkhJWmtuT05yVjJjMjB3MHg1QVZHEhA1ZmViYTVhZjhiZjBiNDczGhA29WHXPzxAP4GWCVTR2ZVwIjsKCmVudGl0eV91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCI3CgtkZWNpc2lvbl9pZBIoc3NwfjA2NDJmMGRmM2NmZDhhYTkzOTgyZDdhMWEzMWEyMDBmMzhmYSI8Cgtjb250ZXh0X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIhMKDWNvbnRleHRfaW5kZXgSAjQyIpMCCiRzcG90aWZ5OnRyYWNrOjdBbXprMmhDTFUyZ1RKdnFZc1dtazcSEGNlODU2OGYwY2Q5YzliZDEaEPlE4m87UE6JoUP35Dlj+6ciOwoKZW50aXR5X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIjcKC2RlY2lzaW9uX2lkEihzc3B+MDY0MmYwZGYzY2ZkOGFhOTM5ODJkN2ExYTMxYTIwMGYzOGZhIjwKC2NvbnRleHRfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiEwoNY29udGV4dF9pbmRleBICNDMikwIKJHNwb3RpZnk6dHJhY2s6NjVCbVVxeVB1SDRRTGZRamNvSlBGTBIQM2EzNzk5MDgyMjcyMmFhOBoQyBw8i+XHRXeWqdcYhq7JQSI7CgplbnRpdHlfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiNwoLZGVjaXNpb25faWQSKHNzcH4wNjQyZjBkZjNjZmQ4YWE5Mzk4MmQ3YTFhMzFhMjAwZjM4ZmEiPAoLY29udGV4dF91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCITCg1jb250ZXh0X2luZGV4EgI0NCKTAgokc3BvdGlmeTp0cmFjazo1VnQyb1haYmtRZ0ZXSDFUaWgxb2tWEhAzNzY4ZDE0YWQ3ZGU5NWE3GhDCvVZPPbdCzqi4yLES1Pd5IjsKCmVudGl0eV91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCI3CgtkZWNpc2lvbl9pZBIoc3NwfjA2NDJmMGRmM2NmZDhhYTkzOTgyZDdhMWEzMWEyMDBmMzhmYSI8Cgtjb250ZXh0X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIhMKDWNvbnRleHRfaW5kZXgSAjQ1IpMCCiRzcG90aWZ5OnRyYWNrOjViN0Y1RHo1TGp4TUd2VTNuMnZxYzUSEGE0MDljNmY5YzA3YThiYTQaEKot4UCdTEocnG6qHHKK5l0iOwoKZW50aXR5X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIjcKC2RlY2lzaW9uX2lkEihzc3B+MDY0MmYwZGYzY2ZkOGFhOTM5ODJkN2ExYTMxYTIwMGYzOGZhIjwKC2NvbnRleHRfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiEwoNY29udGV4dF9pbmRleBICNDYikwIKJHNwb3RpZnk6dHJhY2s6M1dNajhtb0lBWEpoSHN5TGFxSUlISRIQM2JkNzdjNDRjMmQ3MTA2MRoQgbh1wRuFTBWwrlLXWpA3BiI7CgplbnRpdHlfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiNwoLZGVjaXNpb25faWQSKHNzcH4wNjQyZjBkZjNjZmQ4YWE5Mzk4MmQ3YTFhMzFhMjAwZjM4ZmEiPAoLY29udGV4dF91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCITCg1jb250ZXh0X2luZGV4EgI0NyKTAgokc3BvdGlmeTp0cmFjazo1QmxHbXlzOVZxbUhaYmY3ZXN3eEcxEhA2ODBhOGI3MWMyYmYwYmE0GhC4E+bYkq1DN6sGSIUAVFfxIjsKCmVudGl0eV91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCI3CgtkZWNpc2lvbl9pZBIoc3NwfjA2NDJmMGRmM2NmZDhhYTkzOTgyZDdhMWEzMWEyMDBmMzhmYSI8Cgtjb250ZXh0X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIhMKDWNvbnRleHRfaW5kZXgSAjQ4IpMCCiRzcG90aWZ5OnRyYWNrOjNRRTlxeVFySWdlZnpuU2NoQVlKUEISEDRhMDFhMGQ2M2NmYmFhOTIaEH54nCFY3k8UtY910DDr+3MiOwoKZW50aXR5X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIjcKC2RlY2lzaW9uX2lkEihzc3B+MDY0MmYwZGYzY2ZkOGFhOTM5ODJkN2ExYTMxYTIwMGYzOGZhIjwKC2NvbnRleHRfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiEwoNY29udGV4dF9pbmRleBICNDkaEGQ2YzA2ZGIzYTRkMzgwOTkqADIAIg8QABoLCOLFs8gGEIDokiY="),
            "endpoint": String("transfer"),
            "from_device_identifier": String("dcfa067efb666b0a9e0045e33e6eda9bb5a5fe6d"),
            "logging_params": Object {
                "command_id": String("d6c0a8405c494362ae577894ba422c53"),
                "interaction_ids": Array [
                    String("E198475A-E04A-456C-9C4B-8AEFDED03FEE"),
                ],
            },
            "options": Object {
                "license": String("premium"),
                "restore_paused": String("restore"),
                "restore_position": String("last_known"),
                "restore_track": String("always_play_something"),
                "retain_session": String("do_not_retain"),
            },
        },
        "message_id": Number(1515616333),
        "play_on_secondary_stream": Null,
        "sent_by_device_id": String("dcfa067efb666b0a9e0045e33e6eda9bb5a5fe6d"),
        "target_alias_id": Null,
    }
[2025-11-06T18:03:26Z DEBUG librespot_connect::spirc] successfully put connect state for a94a8fe5ccb19ba61c4c0873d391e987982fbbd3 with connection-id NTE3MTUyZmEtN2FkYy00NTZlLWE4NzUtMjhlM2Y3YTMyZDRhK2RlYWxlcit0Y3A6Ly8wYWIxNDhlOC5pcC5ndWMzLnNwb3RpZnkubmV0OjU3MDArOEFGODc2OEQ1QkMzMDdFRjMwMkQ0OEM4ODgwMDQwQTg5MTQzQTBGNTUxNDAzRTNCNkM5MzgzM0YxQTQwOUUyQg==
[2025-11-06T18:03:26Z INFO  librespot_connect::spirc] active device is <> with session <45d8a9954d454e389a895c3ac5c4cd5c>
[2025-11-06T18:03:26Z DEBUG librespot_connect::spirc] handling: 'endpoint: transfer' from dcfa067efb666b0a9e0045e33e6eda9bb5a5fe6d
[2025-11-06T18:03:26Z WARN  librespot_connect::state::context] couldn't load context info because: context is not available. type: Default
[2025-11-06T18:03:26Z DEBUG librespot_connect::spirc] found initial track <spotify:track:7gf5ffmSqKQBDnkmSe2Dt7>
[2025-11-06T18:03:26Z TRACE librespot_connect::context_resolver] added spotify:station:artist:4YLtscXsxbVgi031ovDDdh to resolver queue
[2025-11-06T18:03:26Z DEBUG librespot_connect::context_resolver] update for resolve_uri: <Some("spotify:station:artist:4YLtscXsxbVgi031ovDDdh")>, context_uri: <spotify:station:artist:4YLtscXsxbVgi031ovDDdh>, update: <Default> is already added
[2025-11-06T18:03:26Z TRACE librespot_connect::state::transfer] shuffle_seed: <None> (spotify), <None> (own)
[2025-11-06T18:03:26Z DEBUG librespot_playback::player] command=EmitSessionConnectedEvent("NTE3MTUyZmEtN2FkYy00NTZlLWE4NzUtMjhlM2Y3YTMyZDRhK2RlYWxlcit0Y3A6Ly8wYWIxNDhlOC5pcC5ndWMzLnNwb3RpZnkubmV0OjU3MDArOEFGODc2OEQ1QkMzMDdFRjMwMkQ0OEM4ODgwMDQwQTg5MTQzQTBGNTUxNDAzRTNCNkM5MzgzM0YxQTQwOUUyQg==", "1219828745")
[2025-11-06T18:03:26Z DEBUG librespot_connect::state] updated connect play status playing: true, paused: true, buffering: true
[2025-11-06T18:03:26Z DEBUG librespot_connect::state] updated connect play status playing: true, paused: true, buffering: true
[2025-11-06T18:03:26Z DEBUG librespot_playback::player] command=EmitSessionClientChangedEvent("65b708073fc0480ea92a077233ca87bd", "", "", "")
[2025-11-06T18:03:26Z DEBUG librespot_playback::player] command=EmitVolumeChangedEvent(32767)
[2025-11-06T18:03:26Z DEBUG librespot_playback::player] command=EmitAutoPlayChangedEvent(true)
[2025-11-06T18:03:26Z DEBUG librespot_playback::player] command=EmitFilterExplicitContentChangedEvent(false)
[2025-11-06T18:03:26Z DEBUG librespot_playback::player] command=EmitShuffleChangedEvent(false)
[2025-11-06T18:03:26Z DEBUG librespot_playback::player] command=EmitRepeatChangedEvent(false, false)
[2025-11-06T18:03:26Z DEBUG librespot_core::http_client] Requesting https://spclient.wg.spotify.com:443/connect-state/v1/devices/a94a8fe5ccb19ba61c4c0873d391e987982fbbd3?product=0&country=US&salt=2696203153
[2025-11-06T18:03:26Z DEBUG librespot_playback::player] command=Load(SpotifyUri("spotify:track:7gf5ffmSqKQBDnkmSe2Dt7"), false, 4778)
[2025-11-06T18:03:26Z DEBUG librespot_core::http_client] Requesting https://spclient.wg.spotify.com/metadata/4/track/ee9b2a58162f4527b9a737e44c049139?product=0&country=US&salt=2873679427
[2025-11-06T18:03:26Z TRACE librespot_metadata] Received metadata: Track {
        gid: Some(
            [
                238,
                155,
                42,
                88,
                22,
                47,
                69,
                39,
                185,
                167,
                55,
                228,
                76,
                4,
                145,
                57,
            ],
        ),
        name: Some(
            "It Takes A Woman",
        ),
        album: MessageField(
            Some(
                Album {
                    gid: Some(
                        [
                            207,
                            217,
                            226,
                            38,
                            16,
                            173,
                            76,
                            72,
                            152,
                            71,
                            20,
                            135,
                            152,
                            104,
                            6,
                            140,
                        ],
                    ),
                    name: Some(
                        "Higher",
                    ),
                    artist: [
                        Artist {
                            gid: Some(
                                [
                                    163,
                                    161,
                                    83,
                                    58,
                                    113,
                                    62,
                                    76,
                                    248,
                                    175,
                                    83,
                                    213,
                                    47,
                                    27,
                                    21,
                                    138,
                                    75,
                                ],
                            ),
                            name: Some(
                                "Chris Stapleton",
                            ),
                            popularity: None,
                            top_track: [],
                            album_group: [],
                            single_group: [],
                            compilation_group: [],
                            appears_on_group: [],
                            external_id: [],
                            portrait: [],
                            biography: [],
                            activity_period: [],
                            restriction: [],
                            related: [],
                            is_portrait_album_cover: None,
                            portrait_group: MessageField(
                                None,
                            ),
                            sale_period: [],
                            availability: [],
                            special_fields: SpecialFields {
                                unknown_fields: UnknownFields {
                                    fields: None,
                                },
                                cached_size: CachedSize {
                                    size: 0,
                                },
                            },
                        },
                    ],
                    type_: None,
                    label: Some(
                        "Mercury Nashville",
                    ),
                    date: MessageField(
                        Some(
                            Date {
                                year: Some(
                                    2023,
                                ),
                                month: Some(
                                    11,
                                ),
                                day: Some(
                                    10,
                                ),
                                hour: None,
                                minute: None,
                                special_fields: SpecialFields {
                                    unknown_fields: UnknownFields {
                                        fields: None,
                                    },
                                    cached_size: CachedSize {
                                        size: 0,
                                    },
                                },
                            },
                        ),
                    ),
                    popularity: None,
                    cover: [],
                    external_id: [],
                    disc: [],
                    review: [],
                    copyright: [],
                    restriction: [],
                    related: [],
                    sale_period: [],
                    cover_group: MessageField(
                        Some(
                            ImageGroup {
                                image: [
                                    Image {
                                        file_id: Some(
                                            [
                                                171,
                                                103,
                                                97,
                                                109,
                                                0,
                                                0,
                                                30,
                                                2,
                                                222,
                                                46,
                                                48,
                                                207,
                                                114,
                                                5,
                                                180,
                                                90,
                                                11,
                                                163,
                                                135,
                                                127,
                                            ],
                                        ),
                                        size: Some(
                                            DEFAULT,
                                        ),
                                        width: Some(
                                            300,
                                        ),
                                        height: Some(
                                            300,
                                        ),
                                        special_fields: SpecialFields {
                                            unknown_fields: UnknownFields {
                                                fields: None,
                                            },
                                            cached_size: CachedSize {
                                                size: 0,
                                            },
                                        },
                                    },
                                    Image {
                                        file_id: Some(
                                            [
                                                171,
                                                103,
                                                97,
                                                109,
                                                0,
                                                0,
                                                72,
                                                81,
                                                222,
                                                46,
                                                48,
                                                207,
                                                114,
                                                5,
                                                180,
                                                90,
                                                11,
                                                163,
                                                135,
                                                127,
                                            ],
                                        ),
                                        size: Some(
                                            SMALL,
                                        ),
                                        width: Some(
                                            64,
                                        ),
                                        height: Some(
                                            64,
                                        ),
                                        special_fields: SpecialFields {
                                            unknown_fields: UnknownFields {
                                                fields: None,
                                            },
                                            cached_size: CachedSize {
                                                size: 0,
                                            },
                                        },
                                    },
                                    Image {
                                        file_id: Some(
                                            [
                                                171,
                                                103,
                                                97,
                                                109,
                                                0,
                                                0,
                                                178,
                                                115,
                                                222,
                                                46,
                                                48,
                                                207,
                                                114,
                                                5,
                                                180,
                                                90,
                                                11,
                                                163,
                                                135,
                                                127,
                                            ],
                                        ),
                                        size: Some(
                                            LARGE,
                                        ),
                                        width: Some(
                                            640,
                                        ),
                                        height: Some(
                                            640,
                                        ),
                                        special_fields: SpecialFields {
                                            unknown_fields: UnknownFields {
                                                fields: None,
                                            },
                                            cached_size: CachedSize {
                                                size: 0,
                                            },
                                        },
                                    },
                                ],
                                special_fields: SpecialFields {
                                    unknown_fields: UnknownFields {
                                        fields: None,
                                    },
                                    cached_size: CachedSize {
                                        size: 0,
                                    },
                                },
                            },
                        ),
                    ),
                    original_title: None,
                    version_title: None,
                    type_str: None,
                    availability: [],
                    special_fields: SpecialFields {
                        unknown_fields: UnknownFields {
                            fields: Some(
                                {
                                    25: UnknownValues {
                                        fixed32: [],
                                        fixed64: [],
                                        varint: [],
                                        length_delimited: [
                                            [
                                                10,
                                                16,
                                                254,
                                                53,
                                                142,
                                                169,
                                                135,
                                                226,
                                                66,
                                                77,
                                                144,
                                                33,
                                                194,
                                                102,
                                                90,
                                                6,
                                                103,
                                                183,
                                            ],
                                        ],
                                    },
                                    37: UnknownValues {
                                        fixed32: [],
                                        fixed64: [],
                                        varint: [],
                                        length_delimited: [
                                            [
                                                10,
                                                9,
                                                8,
                                                206,
                                                31,
                                                16,
                                                22,
                                                24,
                                                18,
                                                32,
                                                22,
                                                18,
                                                9,
                                                8,
                                                206,
                                                31,
                                                16,
                                                22,
                                                24,
                                                18,
                                                32,
                                                22,
                                            ],
                                        ],
                                    },
                                },
                            ),
                        },
                        cached_size: CachedSize {
                            size: 0,
                        },
                    },
                },
            ),
        ),
        artist: [
            Artist {
                gid: Some(
                    [
                        163,
                        161,
                        83,
                        58,
                        113,
                        62,
                        76,
                        248,
                        175,
                        83,
                        213,
                        47,
                        27,
                        21,
                        138,
                        75,
                    ],
                ),
                name: Some(
                    "Chris Stapleton",
                ),
                popularity: None,
                top_track: [],
                album_group: [],
                single_group: [],
                compilation_group: [],
                appears_on_group: [],
                external_id: [],
                portrait: [],
                biography: [],
                activity_period: [],
                restriction: [],
                related: [],
                is_portrait_album_cover: None,
                portrait_group: MessageField(
                    None,
                ),
                sale_period: [],
                availability: [],
                special_fields: SpecialFields {
                    unknown_fields: UnknownFields {
                        fields: None,
                    },
                    cached_size: CachedSize {
                        size: 0,
                    },
                },
            },
        ],
        number: Some(
            4,
        ),
        disc_number: Some(
            1,
        ),
        duration: Some(
            246986,
        ),
        popularity: Some(
            60,
        ),
        explicit: None,
        external_id: [
            ExternalId {
                type_: Some(
                    "isrc",
                ),
                id: Some(
                    "USUG12300475",
                ),
                special_fields: SpecialFields {
                    unknown_fields: UnknownFields {
                        fields: None,
                    },
                    cached_size: CachedSize {
                        size: 0,
                    },
                },
            },
        ],
        restriction: [],
        file: [],
        alternative: [],
        sale_period: [],
        preview: [],
        tags: [],
        earliest_live_timestamp: Some(
            1699527600,
        ),
        has_lyrics: Some(
            true,
        ),
        availability: [],
        licensor: MessageField(
            Some(
                Licensor {
                    uuid: Some(
                        [
                            254,
                            53,
                            142,
                            169,
                            135,
                            226,
                            66,
                            77,
                            144,
                            33,
                            194,
                            102,
                            90,
                            6,
                            103,
                            183,
                        ],
                    ),
                    special_fields: SpecialFields {
                        unknown_fields: UnknownFields {
                            fields: None,
                        },
                        cached_size: CachedSize {
                            size: 0,
                        },
                    },
                },
            ),
        ),
        language_of_performance: [
            "en",
        ],
        original_audio: MessageField(
            Some(
                Audio {
                    uuid: Some(
                        [
                            109,
                            171,
                            217,
                            68,
                            196,
                            86,
                            75,
                            140,
                            191,
                            199,
                            179,
                            170,
                            61,
                            104,
                            63,
                            239,
                        ],
                    ),
                    special_fields: SpecialFields {
                        unknown_fields: UnknownFields {
                            fields: Some(
                                {
                                    2: UnknownValues {
                                        fixed32: [],
                                        fixed64: [],
                                        varint: [
                                            1,
                                        ],
                                        length_delimited: [],
                                    },
                                },
                            ),
                        },
                        cached_size: CachedSize {
                            size: 0,
                        },
                    },
                },
            ),
        ),
        content_rating: [],
        original_title: Some(
            "It Takes A Woman",
        ),
        version_title: None,
        artist_with_role: [
            ArtistWithRole {
                artist_gid: Some(
                    [
                        163,
                        161,
                        83,
                        58,
                        113,
                        62,
                        76,
                        248,
                        175,
                        83,
                        213,
                        47,
                        27,
                        21,
                        138,
                        75,
                    ],
                ),
                artist_name: Some(
                    "Chris Stapleton",
                ),
                role: Some(
                    ARTIST_ROLE_MAIN_ARTIST,
                ),
                special_fields: SpecialFields {
                    unknown_fields: UnknownFields {
                        fields: None,
                    },
                    cached_size: CachedSize {
                        size: 0,
                    },
                },
            },
        ],
        canonical_uri: Some(
            "spotify:track:7gf5ffmSqKQBDnkmSe2Dt7",
        ),
        original_video: [],
        special_fields: SpecialFields {
            unknown_fields: UnknownFields {
                fields: Some(
                    {
                        44: UnknownValues {
                            fixed32: [],
                            fixed64: [],
                            varint: [],
                            length_delimited: [
                                [
                                    18,
                                    11,
                                    8,
                                    254,
                                    224,
                                    193,
                                    165,
                                    6,
                                    16,
                                    128,
                                    131,
                                    129,
                                    41,
                                ],
                            ],
                        },
                        37: UnknownValues {
                            fixed32: [],
                            fixed64: [],
                            varint: [],
                            length_delimited: [
                                [
                                    10,
                                    9,
                                    8,
                                    206,
                                    31,
                                    16,
                                    22,
                                    24,
                                    18,
                                    32,
                                    22,
                                ],
                            ],
                        },
                        39: UnknownValues {
                            fixed32: [],
                            fixed64: [],
                            varint: [],
                            length_delimited: [
                                [],
                            ],
                        },
                        41: UnknownValues {
                            fixed32: [],
                            fixed64: [],
                            varint: [],
                            length_delimited: [
                                [
                                    10,
                                    20,
                                    10,
                                    16,
                                    109,
                                    171,
                                    217,
                                    68,
                                    196,
                                    86,
                                    75,
                                    140,
                                    191,
                                    199,
                                    179,
                                    170,
                                    61,
                                    104,
                                    63,
                                    239,
                                    16,
                                    1,
                                ],
                            ],
                        },
                        43: UnknownValues {
                            fixed32: [],
                            fixed64: [],
                            varint: [
                                0,
                            ],
                            length_delimited: [],
                        },
                    },
                ),
            },
            cached_size: CachedSize {
                size: 0,
            },
        },
    }
[2025-11-06T18:03:26Z ERROR librespot_playback::player] Track should be available, but no alternatives found.
[2025-11-06T18:03:26Z WARN  librespot_playback::player] spotify:track:<7gf5ffmSqKQBDnkmSe2Dt7> is not available
[2025-11-06T18:03:26Z ERROR librespot_playback::player] Skipping to next track, unable to load track <SpotifyUri("spotify:track:7gf5ffmSqKQBDnkmSe2Dt7")>: ()
[2025-11-06T18:03:26Z DEBUG librespot_core::http_client] Requesting https://spclient.wg.spotify.com:443/context-resolve/v1/spotify:station:artist:4YLtscXsxbVgi031ovDDdh
[2025-11-06T18:03:26Z DEBUG librespot_core::http_client] Requesting https://spclient.wg.spotify.com:443/context-resolve/v1/spotify:station:artist:4YLtscXsxbVgi031ovDDdh
[2025-11-06T18:03:26Z DEBUG librespot_core::http_client] Requesting https://spclient.wg.spotify.com:443/context-resolve/v1/spotify:station:artist:4YLtscXsxbVgi031ovDDdh
[2025-11-06T18:03:26Z TRACE librespot_connect::spirc] ==> LoadingPause
[2025-11-06T18:03:26Z DEBUG librespot_connect::state::tracks] marking spotify:track:7gf5ffmSqKQBDnkmSe2Dt7 as unavailable
[2025-11-06T18:03:26Z ERROR librespot_connect::spirc] could not dispatch player event: Invalid state { context is not available. type: Default }
[2025-11-06T18:03:26Z DEBUG librespot_core::dealer::manager] replying to ws request: Success
[2025-11-06T18:03:27Z DEBUG librespot_connect::state] updated connect play status playing: true, paused: true, buffering: true
[2025-11-06T18:03:27Z DEBUG librespot_core::http_client] Requesting https://spclient.wg.spotify.com:443/connect-state/v1/devices/a94a8fe5ccb19ba61c4c0873d391e987982fbbd3?product=0&country=US&salt=1407352145

Host (what you are running librespot on):

  • OS: Linux
  • Platform: Lenovo T14

Additional context

Originally created by @YutongGu on GitHub (Nov 6, 2025). Original GitHub issue: https://github.com/librespot-org/librespot/issues/1623 ### Description Looks like Spotify changed something again on their servers and is causing librespot to stop playing tracks. I can successfully connect but tracks do not play. On initial connect there is a log that indicates `setup of state failed: invalid state` and a `400 bad request` with the message that the client specified an invalid argument. Skipping to the next track causes librespot to fail with continuous `Track should be available, but no alternatives found` Appears that Spotify's servers made some breaking changes to their API. Thoughts? ### Version dev, v0.7.0, v0.7.1 ### How to reproduce 1. Launch librespot in release mode with no additional parameters except "--name" 2. Connect with Spotify Connect on iPhone Spotify app (Have not tested on android) 3. In the app, select a song to play 5. Selected song does not play ### Log ``` [2025-11-06T18:03:15Z INFO librespot] librespot 0.7.1 9142e69 (Built on 2025-11-06, Build ID: c7oa5hj0, Profile: release) [2025-11-06T18:03:15Z TRACE librespot] Command line argument(s): [2025-11-06T18:03:15Z TRACE librespot] verbose [2025-11-06T18:03:15Z TRACE librespot] name "test" [2025-11-06T18:03:15Z DEBUG librespot_core::session] new Session [2025-11-06T18:03:15Z DEBUG librespot_discovery::server] Zeroconf server listening on 0.0.0.0:45795 [2025-11-06T18:03:15Z INFO librespot_playback::mixer::softmixer] Mixing with softvol and volume control: Log(60.0) [2025-11-06T18:03:15Z DEBUG librespot_playback::player] new Player [0] [2025-11-06T18:03:15Z INFO librespot_playback::convert] Converting with ditherer: tpdf [2025-11-06T18:03:15Z INFO librespot_playback::audio_backend::rodio] Using Rodio sink with format S16 and cpal host: ALSA [2025-11-06T18:03:15Z INFO librespot_playback::audio_backend::rodio] Using audio device: default [2025-11-06T18:03:15Z DEBUG librespot_playback::audio_backend::rodio] Rodio sink was created [2025-11-06T18:03:24Z DEBUG librespot_discovery::server] POST "/" {} [2025-11-06T18:03:24Z DEBUG librespot_core::session] Shutdown: Invalidating session [2025-11-06T18:03:24Z DEBUG librespot::component] new MercuryManager [2025-11-06T18:03:24Z DEBUG librespot::component] new ChannelManager [2025-11-06T18:03:24Z DEBUG librespot_core::session] new Session [2025-11-06T18:03:24Z DEBUG librespot_connect::spirc] new Spirc[0] [2025-11-06T18:03:24Z DEBUG librespot_playback::player] command=SetSession [2025-11-06T18:03:24Z DEBUG librespot::component] new DealerManager [2025-11-06T18:03:24Z DEBUG librespot_core::session] drop Session [2025-11-06T18:03:24Z DEBUG librespot::component] drop ChannelManager [2025-11-06T18:03:24Z DEBUG librespot::component] drop MercuryManager [2025-11-06T18:03:24Z DEBUG librespot::component] new SpClient [2025-11-06T18:03:24Z DEBUG librespot_core::spclient] Client token unavailable or expired, requesting new token. [2025-11-06T18:03:24Z DEBUG librespot_core::http_client] Requesting https://clienttoken.spotify.com/v1/clienttoken [2025-11-06T18:03:25Z DEBUG librespot_core::spclient] Received a granted token [2025-11-06T18:03:25Z TRACE librespot_core::spclient] Got client token: GrantedTokenResponse { token: "AACDGhgNWBXLGpXr5cXw9gKyG7IZiAvnSEo0U7bD1+xQ+Hukh+GjKLdceMHw3QQc1y1AL6qwVKIEcRVbGsGCcIEqNlQ4/MixMLxl9pejgw02uc8/B9D20Zr7KHac5IAfKDdrWGi4RISZNlOFDAcaHgjlZLTX06a6ACzo051US58NSd3NfKnPDGiN0NgwAvJfPRKFMx6LaNeOeY6exyqZv13ErJnAxQlh+l2SW8h2a82GvoSUYoxiz9HFrZ4wcC7GOEIMRPTG0RrIkLEW5PkDTC2Syvt+w7J6+ddYXk1PrhAY/3yOqZDg5IRJNOXjV72bxEygrt28LzM=", expires_after_seconds: 1216800, refresh_after_seconds: 1209600, domains: [TokenDomain { domain: "spotify.com", special_fields: SpecialFields { unknown_fields: UnknownFields { fields: None }, cached_size: CachedSize { size: 0 } } }, TokenDomain { domain: "spotify.net", special_fields: SpecialFields { unknown_fields: UnknownFields { fields: None }, cached_size: CachedSize { size: 0 } } }], special_fields: SpecialFields { unknown_fields: UnknownFields { fields: None }, cached_size: CachedSize { size: 0 } } } [2025-11-06T18:03:25Z DEBUG librespot::component] new ApResolver [2025-11-06T18:03:25Z DEBUG librespot_core::http_client] Requesting https://apresolve.spotify.com/?type=accesspoint&type=dealer&type=spclient [2025-11-06T18:03:25Z WARN librespot_core::apresolve] Failed to resolve all access points, using fallbacks [2025-11-06T18:03:25Z WARN librespot_core::apresolve] Resolve access points error: Service unavailable { client error (Connect) } [2025-11-06T18:03:25Z INFO librespot_core::session] Connecting to AP "ap.spotify.com:443" [2025-11-06T18:03:25Z DEBUG librespot_core::connection] Connection to AP established. [2025-11-06T18:03:25Z DEBUG librespot_core::connection] Authenticating with AP using AUTHENTICATION_STORED_SPOTIFY_CREDENTIALS [2025-11-06T18:03:25Z INFO librespot_core::session] Authenticated as '1219828745' ! [2025-11-06T18:03:25Z DEBUG librespot::component] new Login5Manager [2025-11-06T18:03:25Z DEBUG librespot_core::http_client] Requesting https://login5.spotify.com/v3/login [2025-11-06T18:03:25Z TRACE librespot_core::session] Received Ping [2025-11-06T18:03:25Z TRACE librespot_core::session] keep-alive state: PendingPong, timeout in 60.0 [2025-11-06T18:03:25Z DEBUG librespot_core::session] Session strong=5 weak=6 [2025-11-06T18:03:25Z INFO librespot_core::session] Country: "US" [2025-11-06T18:03:25Z TRACE librespot_core::session] Received product info: { "jam": "1", "collection": "1", "image-url": "https://i.scdn.co/image/{file_id}", "is-tuna": "0", "network-operator-premium-activation": "1", "is-standalone-audiobooks": "0", "jam-social-session": "EXPANDED", "rating-access": "1", "financial-product": "pr:premium,tc:0,rt:v2_US_default_individual-basic-1m-1m_10.99_USD_default", "app-developer": "0", "unrestricted": "1", "ad-formats-preroll-video": "0", "audiobook-onboarding-completed": "0", "shows-collection-jam": "1", "shuffle": "0", "video-device-blacklisted": "0", "mobile": "1", "arsenal_country": "1", "ab-ad-player-targeting": "1", "key-caching-max-count": "10000", "catalogue": "premium", "prefetch-strategy": "18", "video-cdn-sampling": "100", "streaming": "1", "ab-watch-now": "0", "incognito_mode_timeout": "21600", "metadata-link-lookup-modes": "0", "license-acceptance-grace-days": "30", "on-demand-trial-in-progress": "0", "audio-preview-url-template": "https://p.scdn.co/mp3-preview/{id}", "capping-bar-threshold": "3601", "explicit-content": "1", "head-files-url": "https://heads-fa-tls13.spotifycdn.com/head/{file_id}", "prefetch-keys": "1", "sidebar-navigation-enabled": "0", "name": "Spotify Premium", "loudness-levels": "1:-5.0,0.0,3.0:-2.0", "player-license-v2": "premium", "user-profile-show-invitation-codes": "0", "nft-disabled": "1", "audio-quality": "1", "public-toplist": "7", "is-cheetara": "0", "setup-headphones-changes": "0", "shuffle-algorithm": "FRESH", "video-manifest-url": "https://spclient.wg.spotify.com/manifests/v6/{type}/sources/{source_id}/options/supports_drm", "shows-collection": "1", "yl-kids-restricted-content": "0", "browse-overview-enabled": "1", "dma-mode-available": "0", "dsa-mode-enabled": "0", "type": "premium", "enable-crossfade": "1", "key-memory-cache-mode": "1:15,300", "payments-locked-state": "0", "playlist-annotations-markup": "0", "publish-playlist": "1", "ads": "0", "head-file-caching": "1", "is-pigeon": "0", "mobile-payment": "0", "high-bitrate": "1", "dma-mode-enabled": "0", "restrict-playlist-collaboration": "0", "streaming-only-premium": "0", "pick-and-shuffle": "0", "preferred-locale": "en-us", "enable-annotations": "2", "has-audiobooks-subscription": "0", "is-puffin": "0", "offline": "1", "social-session": "1", "enable-annotations-read": "0", "ab_recently_played_feature_time_filter_threshold": "com.spotify.gaia=30,driving-mode=120,spotify%3Ainternal%3Astartpage=30", "send-email": "0", "player-license": "premium", "ugc-abuse-report": "1", "apply-child-content-restrictions": "0", "key-caching-auto-offline": "0", "prefetch-window-max": "2", "publish-activity": "0", "dsa-mode-available": "0", "libspotify": "1", "radio": "1", "widevine-license-url": "https://spclient.wg.spotify.com/widevine-license/v1/video/license", "autoplay": "1", "is_email_verified": "1", "ad-session-persistence": "1", "key-caching-max-offline-seconds": "1800", "obfuscate-restricted-tracks": "0", "on-demand": "1", "storage-size-config": "10240,90,500,3", "ugc-abuse-report-url": "https://support.spotify.com/abuse/?uri={uri}", "filter-explicit-content": "0", "employee-free-opt-in": "0", "payments-initial-campaign": "default", "remote-control": "6", "social-session-free-tier": "0", "is-thalia": "1", "video-keyframe-url": "http://keyframes-fa.cdn.spotify.com/keyframes/v1/sources/{source_id}/keyframe/heights/{height}/timestamps/{timestamp_ms}.jpg", } [2025-11-06T18:03:25Z DEBUG librespot::component] new MercuryManager [2025-11-06T18:03:25Z TRACE librespot_core::mercury] mercury response <hm://pusher/v1/connections/YTk0YThmZTVjY2IxOWJhNjFjNGMwODczZDM5MWU5ODc5ODJmYmJkMytBUCt0Y3A6Ly8wYWIxNDgzMy5pcC5ndWMzLnNwb3RpZnkubmV0OjUwMTYrRjJDMjEwOEI4M0UxQTMxM0RDNUQ1RDRFQzkyMzJDQ0FGNzA2REE4Qjk1MDUxNjEwNUM2QzNFN0EwNTQ3NkJDNg%3D%3D> is handled by dealer [2025-11-06T18:03:25Z TRACE librespot_core::login5] Got auth token: Token { access_token: "BQC8brYClX3JYVjT0gBZWak0TdVGWD7wN5OCuefUDnuUFwqjeaEd6zHFiuaYntEEnC_5NIhrEVO7kjymTJCbbdREkB_wCEPyNIBvJMrBpGQOYeBHhlY9W8ev6naB0eVRBDCusSIl1IiJEp5qBVnAf1-vVBYKO89xikh5Fk8QOhsATMmF904nNULIC1UNxEBnJlmuvxu-sv2xaY6sGSb8MvOGcieWjcHY0uIRSf1TCesy__1Zdok7v-JOAhyhDTRg0lHkBSpyR1Tclza3Bg54OHx_Hf3TP-Jpddj1yKbF-BUT8u45sC0yCLVqr6v2QOPHxRLK1EwExefeJUjgIuXHC1EoswPrc9nLXmFmvIjE-onyEyFJIMK2nH0W9ySBGNfqIuY_BakPnnw8tf8SAnYxbxLv7xyc", expires_in: 3600s, token_type: "Bearer", scopes: [], timestamp: Instant { tv_sec: 470144, tv_nsec: 769129754 } } [2025-11-06T18:03:25Z DEBUG librespot_connect::spirc] SpircTask::set_volume(32767) [2025-11-06T18:03:25Z DEBUG librespot_playback::player] command=AddEventSender [2025-11-06T18:03:25Z DEBUG librespot_playback::mixer::mappings] Input volume 32767 mapped to: 3.16% [2025-11-06T18:03:25Z DEBUG librespot_core::dealer::manager] Launching dealer [2025-11-06T18:03:25Z DEBUG librespot_core::http_client] Requesting https://apresolve.spotify.com/?type=accesspoint&type=dealer&type=spclient [2025-11-06T18:03:25Z WARN librespot_core::apresolve] Failed to resolve all access points, using fallbacks [2025-11-06T18:03:25Z WARN librespot_core::apresolve] Resolve access points error: Service unavailable { client error (Connect) } [2025-11-06T18:03:26Z TRACE librespot_core::dealer] Sent ping [2025-11-06T18:03:26Z TRACE librespot_connect::spirc] Received connection ID update: "NTE3MTUyZmEtN2FkYy00NTZlLWE4NzUtMjhlM2Y3YTMyZDRhK2RlYWxlcit0Y3A6Ly8wYWIxNDhlOC5pcC5ndWMzLnNwb3RpZnkubmV0OjU3MDArOEFGODc2OEQ1QkMzMDdFRjMwMkQ0OEM4ODgwMDQwQTg5MTQzQTBGNTUxNDAzRTNCNkM5MzgzM0YxQTQwOUUyQg==" [2025-11-06T18:03:26Z DEBUG librespot_core::http_client] Requesting https://apresolve.spotify.com/?type=accesspoint&type=dealer&type=spclient [2025-11-06T18:03:26Z WARN librespot_core::apresolve] Failed to resolve all access points, using fallbacks [2025-11-06T18:03:26Z WARN librespot_core::apresolve] Resolve access points error: Service unavailable { client error (Connect) } [2025-11-06T18:03:26Z INFO librespot_core::spclient] Resolved "spclient.wg.spotify.com:443" as spclient access point [2025-11-06T18:03:26Z DEBUG librespot_core::http_client] Requesting https://spclient.wg.spotify.com:443/connect-state/v1/devices/a94a8fe5ccb19ba61c4c0873d391e987982fbbd3?product=0&country=US&salt=1887626871 [2025-11-06T18:03:26Z TRACE librespot_core::dealer] Received pong [2025-11-06T18:03:26Z TRACE librespot_core::dealer] dealer request hm://connect-state/v1/player/command [2025-11-06T18:03:26Z TRACE librespot_core::dealer::protocol] message was sent with gzip encoding [2025-11-06T18:03:26Z TRACE librespot_core::dealer::protocol] websocket request: Object { "command": Object { "data": String("CjQIABAAGAAlAAAAACoKCgNqYW0SA29mZiobChNjb250ZXh0X2VuaGFuY2VtZW50EgROT05FEqoCCKCG2dKlMxCqJRkAAAAAAAAAACABKpICCiRzcG90aWZ5OnRyYWNrOjdnZjVmZm1TcUtRQkRua21TZTJEdDcSEGQ2YzA2ZGIzYTRkMzgwOTkaEO6bKlgWL0Unuac35EwEkTkiOwoKZW50aXR5X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIjcKC2RlY2lzaW9uX2lkEihzc3B+MDY0MmYwZGYzY2ZkOGFhOTM5ODJkN2ExYTMxYTIwMGYzOGZhIjwKC2NvbnRleHRfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiEgoNY29udGV4dF9pbmRleBIBMBrMawoXCgASABoAIgAqADIAOgdjb25uZWN0QgASmmsKLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaBI3Y29udGV4dDovL3Nwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCIAKq1qIpICCiRzcG90aWZ5OnRyYWNrOjdnZjVmZm1TcUtRQkRua21TZTJEdDcSEGQ2YzA2ZGIzYTRkMzgwOTkaEO6bKlgWL0Unuac35EwEkTkiOwoKZW50aXR5X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIjcKC2RlY2lzaW9uX2lkEihzc3B+MDY0MmYwZGYzY2ZkOGFhOTM5ODJkN2ExYTMxYTIwMGYzOGZhIjwKC2NvbnRleHRfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiEgoNY29udGV4dF9pbmRleBIBMCKSAgokc3BvdGlmeTp0cmFjazowaHRORE5OUmtGbVF1RVNrcTRlb3FqEhBlMWM5NmU2ODczODBjYzEyGhAJQ4xoJApNAJ7GzjY4I2NPIjsKCmVudGl0eV91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCI3CgtkZWNpc2lvbl9pZBIoc3NwfjA2NDJmMGRmM2NmZDhhYTkzOTgyZDdhMWEzMWEyMDBmMzhmYSI8Cgtjb250ZXh0X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIhIKDWNvbnRleHRfaW5kZXgSATEikgIKJHNwb3RpZnk6dHJhY2s6MVl6SXBxd25qNU04cXlsd24xVHI5WhIQNzRlN2M2MDZkNjMxNWIwMhoQQPWHl1zXQ0OADBNddBHHzyI7CgplbnRpdHlfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiNwoLZGVjaXNpb25faWQSKHNzcH4wNjQyZjBkZjNjZmQ4YWE5Mzk4MmQ3YTFhMzFhMjAwZjM4ZmEiPAoLY29udGV4dF91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCISCg1jb250ZXh0X2luZGV4EgEyIpICCiRzcG90aWZ5OnRyYWNrOjN4T2kwWWhEUkVLUlVSRkhvTmFBT1ESEDZkMmQ2ZTRjYzMzNTQwZmIaEHR9HxTaZ0Msu4s70W2rfeAiOwoKZW50aXR5X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIjcKC2RlY2lzaW9uX2lkEihzc3B+MDY0MmYwZGYzY2ZkOGFhOTM5ODJkN2ExYTMxYTIwMGYzOGZhIjwKC2NvbnRleHRfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiEgoNY29udGV4dF9pbmRleBIBMyKSAgokc3BvdGlmeTp0cmFjazo0R1VhRzNkZjluYnJqNzdHS0VCNzZqEhBkNjUwOWEyMGU4YjUzOWE4GhCaKlmG8N5DAKLuipwSwMk7IjsKCmVudGl0eV91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCI3CgtkZWNpc2lvbl9pZBIoc3NwfjA2NDJmMGRmM2NmZDhhYTkzOTgyZDdhMWEzMWEyMDBmMzhmYSI8Cgtjb250ZXh0X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIhIKDWNvbnRleHRfaW5kZXgSATQikgIKJHNwb3RpZnk6dHJhY2s6MjJZdlVjR3pWTGp0SzN1MmZTTUFachIQMzM0YWM0MzhiNjBlOGJiMBoQQ0p1+6kHSz+EBTM4gvx78SI7CgplbnRpdHlfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiNwoLZGVjaXNpb25faWQSKHNzcH4wNjQyZjBkZjNjZmQ4YWE5Mzk4MmQ3YTFhMzFhMjAwZjM4ZmEiPAoLY29udGV4dF91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCISCg1jb250ZXh0X2luZGV4EgE2IpICCiRzcG90aWZ5OnRyYWNrOjV2c2FzcEY2d0laT1BXTkNkSFVGTFASEDA0YTZmZmVhMmNkNTI5NGIaELT0F0EfK0RCpeHN1r88u4kiOwoKZW50aXR5X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIjcKC2RlY2lzaW9uX2lkEihzc3B+MDY0MmYwZGYzY2ZkOGFhOTM5ODJkN2ExYTMxYTIwMGYzOGZhIjwKC2NvbnRleHRfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiEgoNY29udGV4dF9pbmRleBIBNyKSAgokc3BvdGlmeTp0cmFjazozQkNzTk0ydzZIY0NiclZXbGhqVHBrEhAxNzVlNjAxNTk4MDRlZGI2GhB2gel8vXlEELEslpz5PuHWIjsKCmVudGl0eV91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCI3CgtkZWNpc2lvbl9pZBIoc3NwfjA2NDJmMGRmM2NmZDhhYTkzOTgyZDdhMWEzMWEyMDBmMzhmYSI8Cgtjb250ZXh0X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIhIKDWNvbnRleHRfaW5kZXgSATgikgIKJHNwb3RpZnk6dHJhY2s6NmRBTmNRMDB1aWlXb0JEWVZyc0d2ehIQZWYwNmVhNGU1MWY2Y2YxNxoQzFhQBJRdQYSeCqUnFpXgfSI7CgplbnRpdHlfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiNwoLZGVjaXNpb25faWQSKHNzcH4wNjQyZjBkZjNjZmQ4YWE5Mzk4MmQ3YTFhMzFhMjAwZjM4ZmEiPAoLY29udGV4dF91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCISCg1jb250ZXh0X2luZGV4EgE5IpMCCiRzcG90aWZ5OnRyYWNrOjRKbjJDZFpZcXRJc1BwSVJZQjFvNDcSEDRmZWY0NTQ0ZTRlNTM3NmEaEJt42zuhbEYcu28j/jyw6WciOwoKZW50aXR5X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIjcKC2RlY2lzaW9uX2lkEihzc3B+MDY0MmYwZGYzY2ZkOGFhOTM5ODJkN2ExYTMxYTIwMGYzOGZhIjwKC2NvbnRleHRfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiEwoNY29udGV4dF9pbmRleBICMTAikwIKJHNwb3RpZnk6dHJhY2s6MW1VVHBEZTNFOHBNTDYzN3pPRkw1RBIQNzViODRhN2U4NjQ0ODJmYhoQLQCF6Ol/RGesfoTeB5yn0SI7CgplbnRpdHlfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiNwoLZGVjaXNpb25faWQSKHNzcH4wNjQyZjBkZjNjZmQ4YWE5Mzk4MmQ3YTFhMzFhMjAwZjM4ZmEiPAoLY29udGV4dF91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCITCg1jb250ZXh0X2luZGV4EgIxMSKTAgokc3BvdGlmeTp0cmFjazoyVzVkU3VNN0REZFd5bWp6WnNJQ0JuEhA5YzgwNTBkMWQ3MGMxYmU5GhBgftPqSRFLXoyyEQ5i7QWlIjsKCmVudGl0eV91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCI3CgtkZWNpc2lvbl9pZBIoc3NwfjA2NDJmMGRmM2NmZDhhYTkzOTgyZDdhMWEzMWEyMDBmMzhmYSI8Cgtjb250ZXh0X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIhMKDWNvbnRleHRfaW5kZXgSAjEyIpMCCiRzcG90aWZ5OnRyYWNrOjFzMEIwZGtaSGZ5blNjcExPMFV6SlgSEDM1YjkzYjU3ODM4M2Q4ZGUaEC+zVmW2906ZjH7FaUwF++0iOwoKZW50aXR5X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIjcKC2RlY2lzaW9uX2lkEihzc3B+MDY0MmYwZGYzY2ZkOGFhOTM5ODJkN2ExYTMxYTIwMGYzOGZhIjwKC2NvbnRleHRfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiEwoNY29udGV4dF9pbmRleBICMTMikwIKJHNwb3RpZnk6dHJhY2s6M1I2eU5pY3NacldGOHlibDAyaW1jQhIQZmMxYjAyZTFjMDRhMWQyMRoQfrbGLUziRS+u+Q04F9KItSI7CgplbnRpdHlfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiNwoLZGVjaXNpb25faWQSKHNzcH4wNjQyZjBkZjNjZmQ4YWE5Mzk4MmQ3YTFhMzFhMjAwZjM4ZmEiPAoLY29udGV4dF91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCITCg1jb250ZXh0X2luZGV4EgIxNCKTAgokc3BvdGlmeTp0cmFjazo0Nm9EQmRkaHd1MGdmRnIyejFmdmg1EhAwY2E1MzEyOTE1MzNlM2UyGhCG0VYPNZtG8L4T4zPdLJ/XIjsKCmVudGl0eV91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCI3CgtkZWNpc2lvbl9pZBIoc3NwfjA2NDJmMGRmM2NmZDhhYTkzOTgyZDdhMWEzMWEyMDBmMzhmYSI8Cgtjb250ZXh0X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIhMKDWNvbnRleHRfaW5kZXgSAjE1IpMCCiRzcG90aWZ5OnRyYWNrOjZwYW1hZkQ5cDBLN0ZIZkpQejZUWUYSEDk3NWZhMDNhMjBlNDZhYmYaENJ6eEJzOUlPr9QtUZ3WAu0iOwoKZW50aXR5X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIjcKC2RlY2lzaW9uX2lkEihzc3B+MDY0MmYwZGYzY2ZkOGFhOTM5ODJkN2ExYTMxYTIwMGYzOGZhIjwKC2NvbnRleHRfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiEwoNY29udGV4dF9pbmRleBICMTYikwIKJHNwb3RpZnk6dHJhY2s6NXowTFNEcFBwR3djMlp5Skhwc0UzShIQMzRhM2I2MTMzMDYzOGIyMhoQttbPik+JT1SfMEf35XRQFyI7CgplbnRpdHlfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiNwoLZGVjaXNpb25faWQSKHNzcH4wNjQyZjBkZjNjZmQ4YWE5Mzk4MmQ3YTFhMzFhMjAwZjM4ZmEiPAoLY29udGV4dF91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCITCg1jb250ZXh0X2luZGV4EgIxNyKTAgokc3BvdGlmeTp0cmFjazo2Y1VKbXpVMjRHb3JSaGVLZ2htTmtZEhAyM2FkM2UyZDdmMjFmYmViGhDL/EYCs+VCbp/tCQylWNS4IjsKCmVudGl0eV91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCI3CgtkZWNpc2lvbl9pZBIoc3NwfjA2NDJmMGRmM2NmZDhhYTkzOTgyZDdhMWEzMWEyMDBmMzhmYSI8Cgtjb250ZXh0X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIhMKDWNvbnRleHRfaW5kZXgSAjE4IpMCCiRzcG90aWZ5OnRyYWNrOjVYbE1qNDlQM2pqbVhwQWRWR09MeVcSEGM5ODAzMjhmYjMxMjdmOTMaEMO8yS/fMUFQqAIdcluHMmIiOwoKZW50aXR5X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIjcKC2RlY2lzaW9uX2lkEihzc3B+MDY0MmYwZGYzY2ZkOGFhOTM5ODJkN2ExYTMxYTIwMGYzOGZhIjwKC2NvbnRleHRfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiEwoNY29udGV4dF9pbmRleBICMTkikwIKJHNwb3RpZnk6dHJhY2s6NnlLaFJpa0JIWHk0TXlMeTRLOEt1WBIQNmUyODk2NzEyZmZjNzY2ZhoQ144YaM0xTsWmonUUCw4nVyI7CgplbnRpdHlfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiNwoLZGVjaXNpb25faWQSKHNzcH4wNjQyZjBkZjNjZmQ4YWE5Mzk4MmQ3YTFhMzFhMjAwZjM4ZmEiPAoLY29udGV4dF91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCITCg1jb250ZXh0X2luZGV4EgIyMCKTAgokc3BvdGlmeTp0cmFjazoxOU1rd01yUmpPNzc3M3pwdUdzczFvEhAwOGYzMjYwNTE2YjE0Zjg0GhAmCh2BKFtLfKngJyQVyCyGIjsKCmVudGl0eV91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCI3CgtkZWNpc2lvbl9pZBIoc3NwfjA2NDJmMGRmM2NmZDhhYTkzOTgyZDdhMWEzMWEyMDBmMzhmYSI8Cgtjb250ZXh0X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIhMKDWNvbnRleHRfaW5kZXgSAjIxIpMCCiRzcG90aWZ5OnRyYWNrOjBPV2hLdnZzSHB0dDZ2bm5OVVNNOWESEDlmYjcxMWRhNjgwMzMzMzkaEBr+5EB5pEJhnEhmXFE7zegiOwoKZW50aXR5X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIjcKC2RlY2lzaW9uX2lkEihzc3B+MDY0MmYwZGYzY2ZkOGFhOTM5ODJkN2ExYTMxYTIwMGYzOGZhIjwKC2NvbnRleHRfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiEwoNY29udGV4dF9pbmRleBICMjIikwIKJHNwb3RpZnk6dHJhY2s6MGhjMnM3c2JQVG9tZWdEWHBJeVNvaxIQYjc3MDA3ZjYyZjI1NmRhYxoQCRyvG3iFQSO0b2LgNZ9AjCI7CgplbnRpdHlfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiNwoLZGVjaXNpb25faWQSKHNzcH4wNjQyZjBkZjNjZmQ4YWE5Mzk4MmQ3YTFhMzFhMjAwZjM4ZmEiPAoLY29udGV4dF91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCITCg1jb250ZXh0X2luZGV4EgIyMyKTAgokc3BvdGlmeTp0cmFjazo0Z2k4MWNnYVUwWG1lazFJdU9FTk01EhA4NzYxMDRiNjgzOTYwYjk2GhCMD8M/HUVAL4aIELG1ntwJIjsKCmVudGl0eV91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCI3CgtkZWNpc2lvbl9pZBIoc3NwfjA2NDJmMGRmM2NmZDhhYTkzOTgyZDdhMWEzMWEyMDBmMzhmYSI8Cgtjb250ZXh0X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIhMKDWNvbnRleHRfaW5kZXgSAjI0IpMCCiRzcG90aWZ5OnRyYWNrOjdKMEdnV1BNZjVPVFNKSzZ1WHhGZTASEDI2ODBmY2FkNDE3NTkxMGUaEP3Z/jhUMEdAhlue3CvD1HAiOwoKZW50aXR5X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIjcKC2RlY2lzaW9uX2lkEihzc3B+MDY0MmYwZGYzY2ZkOGFhOTM5ODJkN2ExYTMxYTIwMGYzOGZhIjwKC2NvbnRleHRfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiEwoNY29udGV4dF9pbmRleBICMjUikwIKJHNwb3RpZnk6dHJhY2s6NzE0dEYwVnQ5b2hDOXVXd0V5SVJBbxIQNTMwNDE5MGQ4ODgzNzJiORoQ5pDzr+v1QZCOCUtN3mP7ZCI7CgplbnRpdHlfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiNwoLZGVjaXNpb25faWQSKHNzcH4wNjQyZjBkZjNjZmQ4YWE5Mzk4MmQ3YTFhMzFhMjAwZjM4ZmEiPAoLY29udGV4dF91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCITCg1jb250ZXh0X2luZGV4EgIyNiKTAgokc3BvdGlmeTp0cmFjazoyMGRrZWJCdFBSNEFKOHZWb3M0MUd3EhBiYWIzNTQxNTMyMGM1MmQ3GhBB097Ox8hP95wkiaK+p5CwIjsKCmVudGl0eV91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCI3CgtkZWNpc2lvbl9pZBIoc3NwfjA2NDJmMGRmM2NmZDhhYTkzOTgyZDdhMWEzMWEyMDBmMzhmYSI8Cgtjb250ZXh0X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIhMKDWNvbnRleHRfaW5kZXgSAjI3IpMCCiRzcG90aWZ5OnRyYWNrOjVqZmhMQ1NJRlVPNG5kek5SaDR3NEcSEGU5NDRkMWJkMjdlM2VmYWIaEK575ffsDE/fnf83t6LZHbIiOwoKZW50aXR5X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIjcKC2RlY2lzaW9uX2lkEihzc3B+MDY0MmYwZGYzY2ZkOGFhOTM5ODJkN2ExYTMxYTIwMGYzOGZhIjwKC2NvbnRleHRfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiEwoNY29udGV4dF9pbmRleBICMjgikwIKJHNwb3RpZnk6dHJhY2s6MFZCS2JndDdROGZ2UjRCNURydlZwaBIQZmQ4NGJjMDJmNGQyOWE0MBoQHoecyJ+URC+p/NUMDcgXmyI7CgplbnRpdHlfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiNwoLZGVjaXNpb25faWQSKHNzcH4wNjQyZjBkZjNjZmQ4YWE5Mzk4MmQ3YTFhMzFhMjAwZjM4ZmEiPAoLY29udGV4dF91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCITCg1jb250ZXh0X2luZGV4EgIyOSKTAgokc3BvdGlmeTp0cmFjazoyUVpNT1phWENON0dRanIzcUtXQXdBEhBjNWQwNmQ5ZjdlMzAyYzE3GhBdzJjO40dBAKhKYyTOuQaEIjsKCmVudGl0eV91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCI3CgtkZWNpc2lvbl9pZBIoc3NwfjA2NDJmMGRmM2NmZDhhYTkzOTgyZDdhMWEzMWEyMDBmMzhmYSI8Cgtjb250ZXh0X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIhMKDWNvbnRleHRfaW5kZXgSAjMwIpMCCiRzcG90aWZ5OnRyYWNrOjdBZU0xQkdZTTdlbXJxbVFuMVB1V3YSEDgzYWIzZWJjMTRjNDVkZjIaEPkz09EVqEZUoeSuICopZzsiOwoKZW50aXR5X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIjcKC2RlY2lzaW9uX2lkEihzc3B+MDY0MmYwZGYzY2ZkOGFhOTM5ODJkN2ExYTMxYTIwMGYzOGZhIjwKC2NvbnRleHRfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiEwoNY29udGV4dF9pbmRleBICMzEikwIKJHNwb3RpZnk6dHJhY2s6MlJvTVFBcnoxVjZ1aU1lckQ4MnNLbRIQMWE4NDY4ZWU3NDJmMzQwZBoQXgNNYPK7SL25jP1046pQ+iI7CgplbnRpdHlfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiNwoLZGVjaXNpb25faWQSKHNzcH4wNjQyZjBkZjNjZmQ4YWE5Mzk4MmQ3YTFhMzFhMjAwZjM4ZmEiPAoLY29udGV4dF91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCITCg1jb250ZXh0X2luZGV4EgIzMiKTAgokc3BvdGlmeTp0cmFjazo0YTJ1cVZscFJDaEhqMzJFakpMdTdHEhAxYTI0MjNiZTYzYjRkNGY4GhCIv4p0AohMOLAmS26fUu5MIjsKCmVudGl0eV91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCI3CgtkZWNpc2lvbl9pZBIoc3NwfjA2NDJmMGRmM2NmZDhhYTkzOTgyZDdhMWEzMWEyMDBmMzhmYSI8Cgtjb250ZXh0X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIhMKDWNvbnRleHRfaW5kZXgSAjMzIpMCCiRzcG90aWZ5OnRyYWNrOjBIRXl0R1FNM2JHMXZLeEVSN0lnVksSEGZkNGQxMmFmNzgwZmU5ZmIaEBcibPrl903LjLnYn0K5BCwiOwoKZW50aXR5X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIjcKC2RlY2lzaW9uX2lkEihzc3B+MDY0MmYwZGYzY2ZkOGFhOTM5ODJkN2ExYTMxYTIwMGYzOGZhIjwKC2NvbnRleHRfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiEwoNY29udGV4dF9pbmRleBICMzQikwIKJHNwb3RpZnk6dHJhY2s6ME5kRWRzWFM5amJYMWhudWZhd1owehIQMTlhZTUxOGI4MDE0MmJiNRoQGhWMrgu6TDe9tY2rLDcs1yI7CgplbnRpdHlfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiNwoLZGVjaXNpb25faWQSKHNzcH4wNjQyZjBkZjNjZmQ4YWE5Mzk4MmQ3YTFhMzFhMjAwZjM4ZmEiPAoLY29udGV4dF91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCITCg1jb250ZXh0X2luZGV4EgIzNSKTAgokc3BvdGlmeTp0cmFjazoxT1lIWEN1SGR6SGpwSHFIbFkxZzFyEhA0M2UwNGVhNDkwN2RkNDdkGhA734xQJV5EupgOjA1NRCNxIjsKCmVudGl0eV91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCI3CgtkZWNpc2lvbl9pZBIoc3NwfjA2NDJmMGRmM2NmZDhhYTkzOTgyZDdhMWEzMWEyMDBmMzhmYSI8Cgtjb250ZXh0X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIhMKDWNvbnRleHRfaW5kZXgSAjM2IpMCCiRzcG90aWZ5OnRyYWNrOjVBUU5xZHBsNlNFVjlyQUhXeTdVOXcSEGZlMDY2ZmM1ZmNjNzhhZDgaELfQUT8lRUp0iNyNy1lqKJYiOwoKZW50aXR5X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIjcKC2RlY2lzaW9uX2lkEihzc3B+MDY0MmYwZGYzY2ZkOGFhOTM5ODJkN2ExYTMxYTIwMGYzOGZhIjwKC2NvbnRleHRfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiEwoNY29udGV4dF9pbmRleBICMzcikwIKJHNwb3RpZnk6dHJhY2s6MzExR3Z4cHVldXU0THZXWVo3Znd2YRIQYzY0NjA1NzkzZTExMWEwNhoQYx1rrIchQlKjB77sblpMZCI7CgplbnRpdHlfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiNwoLZGVjaXNpb25faWQSKHNzcH4wNjQyZjBkZjNjZmQ4YWE5Mzk4MmQ3YTFhMzFhMjAwZjM4ZmEiPAoLY29udGV4dF91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCITCg1jb250ZXh0X2luZGV4EgIzOCKTAgokc3BvdGlmeTp0cmFjazozRnE0c2hoSmRFTlFod2xMazlxb0R4EhAwN2E5NWQ2MjZlN2MyZjM5GhB4hXZ0779AAqmV6m2Ux0xzIjsKCmVudGl0eV91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCI3CgtkZWNpc2lvbl9pZBIoc3NwfjA2NDJmMGRmM2NmZDhhYTkzOTgyZDdhMWEzMWEyMDBmMzhmYSI8Cgtjb250ZXh0X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIhMKDWNvbnRleHRfaW5kZXgSAjM5IpMCCiRzcG90aWZ5OnRyYWNrOjNHbjF6dUhOTHRHdUdFT1h3cTBrN2USEDg1MWFiYzcwMGM3NDU5MzgaEHkGdqOcA0tnjEqepaktzXAiOwoKZW50aXR5X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIjcKC2RlY2lzaW9uX2lkEihzc3B+MDY0MmYwZGYzY2ZkOGFhOTM5ODJkN2ExYTMxYTIwMGYzOGZhIjwKC2NvbnRleHRfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiEwoNY29udGV4dF9pbmRleBICNDAikwIKJHNwb3RpZnk6dHJhY2s6NEtVTEF5bUJCSmNQUnBrMXlPNGRPRxIQOWZjYTVjYmZkOGVlZmQ2MxoQnEpSDF/QSAevjKu+85LDeiI7CgplbnRpdHlfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiNwoLZGVjaXNpb25faWQSKHNzcH4wNjQyZjBkZjNjZmQ4YWE5Mzk4MmQ3YTFhMzFhMjAwZjM4ZmEiPAoLY29udGV4dF91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCITCg1jb250ZXh0X2luZGV4EgI0MSKTAgokc3BvdGlmeTp0cmFjazoxRkhJWmtuT05yVjJjMjB3MHg1QVZHEhA1ZmViYTVhZjhiZjBiNDczGhA29WHXPzxAP4GWCVTR2ZVwIjsKCmVudGl0eV91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCI3CgtkZWNpc2lvbl9pZBIoc3NwfjA2NDJmMGRmM2NmZDhhYTkzOTgyZDdhMWEzMWEyMDBmMzhmYSI8Cgtjb250ZXh0X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIhMKDWNvbnRleHRfaW5kZXgSAjQyIpMCCiRzcG90aWZ5OnRyYWNrOjdBbXprMmhDTFUyZ1RKdnFZc1dtazcSEGNlODU2OGYwY2Q5YzliZDEaEPlE4m87UE6JoUP35Dlj+6ciOwoKZW50aXR5X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIjcKC2RlY2lzaW9uX2lkEihzc3B+MDY0MmYwZGYzY2ZkOGFhOTM5ODJkN2ExYTMxYTIwMGYzOGZhIjwKC2NvbnRleHRfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiEwoNY29udGV4dF9pbmRleBICNDMikwIKJHNwb3RpZnk6dHJhY2s6NjVCbVVxeVB1SDRRTGZRamNvSlBGTBIQM2EzNzk5MDgyMjcyMmFhOBoQyBw8i+XHRXeWqdcYhq7JQSI7CgplbnRpdHlfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiNwoLZGVjaXNpb25faWQSKHNzcH4wNjQyZjBkZjNjZmQ4YWE5Mzk4MmQ3YTFhMzFhMjAwZjM4ZmEiPAoLY29udGV4dF91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCITCg1jb250ZXh0X2luZGV4EgI0NCKTAgokc3BvdGlmeTp0cmFjazo1VnQyb1haYmtRZ0ZXSDFUaWgxb2tWEhAzNzY4ZDE0YWQ3ZGU5NWE3GhDCvVZPPbdCzqi4yLES1Pd5IjsKCmVudGl0eV91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCI3CgtkZWNpc2lvbl9pZBIoc3NwfjA2NDJmMGRmM2NmZDhhYTkzOTgyZDdhMWEzMWEyMDBmMzhmYSI8Cgtjb250ZXh0X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIhMKDWNvbnRleHRfaW5kZXgSAjQ1IpMCCiRzcG90aWZ5OnRyYWNrOjViN0Y1RHo1TGp4TUd2VTNuMnZxYzUSEGE0MDljNmY5YzA3YThiYTQaEKot4UCdTEocnG6qHHKK5l0iOwoKZW50aXR5X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIjcKC2RlY2lzaW9uX2lkEihzc3B+MDY0MmYwZGYzY2ZkOGFhOTM5ODJkN2ExYTMxYTIwMGYzOGZhIjwKC2NvbnRleHRfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiEwoNY29udGV4dF9pbmRleBICNDYikwIKJHNwb3RpZnk6dHJhY2s6M1dNajhtb0lBWEpoSHN5TGFxSUlISRIQM2JkNzdjNDRjMmQ3MTA2MRoQgbh1wRuFTBWwrlLXWpA3BiI7CgplbnRpdHlfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiNwoLZGVjaXNpb25faWQSKHNzcH4wNjQyZjBkZjNjZmQ4YWE5Mzk4MmQ3YTFhMzFhMjAwZjM4ZmEiPAoLY29udGV4dF91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCITCg1jb250ZXh0X2luZGV4EgI0NyKTAgokc3BvdGlmeTp0cmFjazo1QmxHbXlzOVZxbUhaYmY3ZXN3eEcxEhA2ODBhOGI3MWMyYmYwYmE0GhC4E+bYkq1DN6sGSIUAVFfxIjsKCmVudGl0eV91cmkSLXNwb3RpZnk6c3RhdGlvbjphcnRpc3Q6NFlMdHNjWHN4YlZnaTAzMW92RERkaCI3CgtkZWNpc2lvbl9pZBIoc3NwfjA2NDJmMGRmM2NmZDhhYTkzOTgyZDdhMWEzMWEyMDBmMzhmYSI8Cgtjb250ZXh0X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIhMKDWNvbnRleHRfaW5kZXgSAjQ4IpMCCiRzcG90aWZ5OnRyYWNrOjNRRTlxeVFySWdlZnpuU2NoQVlKUEISEDRhMDFhMGQ2M2NmYmFhOTIaEH54nCFY3k8UtY910DDr+3MiOwoKZW50aXR5X3VyaRItc3BvdGlmeTpzdGF0aW9uOmFydGlzdDo0WUx0c2NYc3hiVmdpMDMxb3ZERGRoIjcKC2RlY2lzaW9uX2lkEihzc3B+MDY0MmYwZGYzY2ZkOGFhOTM5ODJkN2ExYTMxYTIwMGYzOGZhIjwKC2NvbnRleHRfdXJpEi1zcG90aWZ5OnN0YXRpb246YXJ0aXN0OjRZTHRzY1hzeGJWZ2kwMzFvdkREZGgiEwoNY29udGV4dF9pbmRleBICNDkaEGQ2YzA2ZGIzYTRkMzgwOTkqADIAIg8QABoLCOLFs8gGEIDokiY="), "endpoint": String("transfer"), "from_device_identifier": String("dcfa067efb666b0a9e0045e33e6eda9bb5a5fe6d"), "logging_params": Object { "command_id": String("d6c0a8405c494362ae577894ba422c53"), "interaction_ids": Array [ String("E198475A-E04A-456C-9C4B-8AEFDED03FEE"), ], }, "options": Object { "license": String("premium"), "restore_paused": String("restore"), "restore_position": String("last_known"), "restore_track": String("always_play_something"), "retain_session": String("do_not_retain"), }, }, "message_id": Number(1515616333), "play_on_secondary_stream": Null, "sent_by_device_id": String("dcfa067efb666b0a9e0045e33e6eda9bb5a5fe6d"), "target_alias_id": Null, } [2025-11-06T18:03:26Z DEBUG librespot_connect::spirc] successfully put connect state for a94a8fe5ccb19ba61c4c0873d391e987982fbbd3 with connection-id NTE3MTUyZmEtN2FkYy00NTZlLWE4NzUtMjhlM2Y3YTMyZDRhK2RlYWxlcit0Y3A6Ly8wYWIxNDhlOC5pcC5ndWMzLnNwb3RpZnkubmV0OjU3MDArOEFGODc2OEQ1QkMzMDdFRjMwMkQ0OEM4ODgwMDQwQTg5MTQzQTBGNTUxNDAzRTNCNkM5MzgzM0YxQTQwOUUyQg== [2025-11-06T18:03:26Z INFO librespot_connect::spirc] active device is <> with session <45d8a9954d454e389a895c3ac5c4cd5c> [2025-11-06T18:03:26Z DEBUG librespot_connect::spirc] handling: 'endpoint: transfer' from dcfa067efb666b0a9e0045e33e6eda9bb5a5fe6d [2025-11-06T18:03:26Z WARN librespot_connect::state::context] couldn't load context info because: context is not available. type: Default [2025-11-06T18:03:26Z DEBUG librespot_connect::spirc] found initial track <spotify:track:7gf5ffmSqKQBDnkmSe2Dt7> [2025-11-06T18:03:26Z TRACE librespot_connect::context_resolver] added spotify:station:artist:4YLtscXsxbVgi031ovDDdh to resolver queue [2025-11-06T18:03:26Z DEBUG librespot_connect::context_resolver] update for resolve_uri: <Some("spotify:station:artist:4YLtscXsxbVgi031ovDDdh")>, context_uri: <spotify:station:artist:4YLtscXsxbVgi031ovDDdh>, update: <Default> is already added [2025-11-06T18:03:26Z TRACE librespot_connect::state::transfer] shuffle_seed: <None> (spotify), <None> (own) [2025-11-06T18:03:26Z DEBUG librespot_playback::player] command=EmitSessionConnectedEvent("NTE3MTUyZmEtN2FkYy00NTZlLWE4NzUtMjhlM2Y3YTMyZDRhK2RlYWxlcit0Y3A6Ly8wYWIxNDhlOC5pcC5ndWMzLnNwb3RpZnkubmV0OjU3MDArOEFGODc2OEQ1QkMzMDdFRjMwMkQ0OEM4ODgwMDQwQTg5MTQzQTBGNTUxNDAzRTNCNkM5MzgzM0YxQTQwOUUyQg==", "1219828745") [2025-11-06T18:03:26Z DEBUG librespot_connect::state] updated connect play status playing: true, paused: true, buffering: true [2025-11-06T18:03:26Z DEBUG librespot_connect::state] updated connect play status playing: true, paused: true, buffering: true [2025-11-06T18:03:26Z DEBUG librespot_playback::player] command=EmitSessionClientChangedEvent("65b708073fc0480ea92a077233ca87bd", "", "", "") [2025-11-06T18:03:26Z DEBUG librespot_playback::player] command=EmitVolumeChangedEvent(32767) [2025-11-06T18:03:26Z DEBUG librespot_playback::player] command=EmitAutoPlayChangedEvent(true) [2025-11-06T18:03:26Z DEBUG librespot_playback::player] command=EmitFilterExplicitContentChangedEvent(false) [2025-11-06T18:03:26Z DEBUG librespot_playback::player] command=EmitShuffleChangedEvent(false) [2025-11-06T18:03:26Z DEBUG librespot_playback::player] command=EmitRepeatChangedEvent(false, false) [2025-11-06T18:03:26Z DEBUG librespot_core::http_client] Requesting https://spclient.wg.spotify.com:443/connect-state/v1/devices/a94a8fe5ccb19ba61c4c0873d391e987982fbbd3?product=0&country=US&salt=2696203153 [2025-11-06T18:03:26Z DEBUG librespot_playback::player] command=Load(SpotifyUri("spotify:track:7gf5ffmSqKQBDnkmSe2Dt7"), false, 4778) [2025-11-06T18:03:26Z DEBUG librespot_core::http_client] Requesting https://spclient.wg.spotify.com/metadata/4/track/ee9b2a58162f4527b9a737e44c049139?product=0&country=US&salt=2873679427 [2025-11-06T18:03:26Z TRACE librespot_metadata] Received metadata: Track { gid: Some( [ 238, 155, 42, 88, 22, 47, 69, 39, 185, 167, 55, 228, 76, 4, 145, 57, ], ), name: Some( "It Takes A Woman", ), album: MessageField( Some( Album { gid: Some( [ 207, 217, 226, 38, 16, 173, 76, 72, 152, 71, 20, 135, 152, 104, 6, 140, ], ), name: Some( "Higher", ), artist: [ Artist { gid: Some( [ 163, 161, 83, 58, 113, 62, 76, 248, 175, 83, 213, 47, 27, 21, 138, 75, ], ), name: Some( "Chris Stapleton", ), popularity: None, top_track: [], album_group: [], single_group: [], compilation_group: [], appears_on_group: [], external_id: [], portrait: [], biography: [], activity_period: [], restriction: [], related: [], is_portrait_album_cover: None, portrait_group: MessageField( None, ), sale_period: [], availability: [], special_fields: SpecialFields { unknown_fields: UnknownFields { fields: None, }, cached_size: CachedSize { size: 0, }, }, }, ], type_: None, label: Some( "Mercury Nashville", ), date: MessageField( Some( Date { year: Some( 2023, ), month: Some( 11, ), day: Some( 10, ), hour: None, minute: None, special_fields: SpecialFields { unknown_fields: UnknownFields { fields: None, }, cached_size: CachedSize { size: 0, }, }, }, ), ), popularity: None, cover: [], external_id: [], disc: [], review: [], copyright: [], restriction: [], related: [], sale_period: [], cover_group: MessageField( Some( ImageGroup { image: [ Image { file_id: Some( [ 171, 103, 97, 109, 0, 0, 30, 2, 222, 46, 48, 207, 114, 5, 180, 90, 11, 163, 135, 127, ], ), size: Some( DEFAULT, ), width: Some( 300, ), height: Some( 300, ), special_fields: SpecialFields { unknown_fields: UnknownFields { fields: None, }, cached_size: CachedSize { size: 0, }, }, }, Image { file_id: Some( [ 171, 103, 97, 109, 0, 0, 72, 81, 222, 46, 48, 207, 114, 5, 180, 90, 11, 163, 135, 127, ], ), size: Some( SMALL, ), width: Some( 64, ), height: Some( 64, ), special_fields: SpecialFields { unknown_fields: UnknownFields { fields: None, }, cached_size: CachedSize { size: 0, }, }, }, Image { file_id: Some( [ 171, 103, 97, 109, 0, 0, 178, 115, 222, 46, 48, 207, 114, 5, 180, 90, 11, 163, 135, 127, ], ), size: Some( LARGE, ), width: Some( 640, ), height: Some( 640, ), special_fields: SpecialFields { unknown_fields: UnknownFields { fields: None, }, cached_size: CachedSize { size: 0, }, }, }, ], special_fields: SpecialFields { unknown_fields: UnknownFields { fields: None, }, cached_size: CachedSize { size: 0, }, }, }, ), ), original_title: None, version_title: None, type_str: None, availability: [], special_fields: SpecialFields { unknown_fields: UnknownFields { fields: Some( { 25: UnknownValues { fixed32: [], fixed64: [], varint: [], length_delimited: [ [ 10, 16, 254, 53, 142, 169, 135, 226, 66, 77, 144, 33, 194, 102, 90, 6, 103, 183, ], ], }, 37: UnknownValues { fixed32: [], fixed64: [], varint: [], length_delimited: [ [ 10, 9, 8, 206, 31, 16, 22, 24, 18, 32, 22, 18, 9, 8, 206, 31, 16, 22, 24, 18, 32, 22, ], ], }, }, ), }, cached_size: CachedSize { size: 0, }, }, }, ), ), artist: [ Artist { gid: Some( [ 163, 161, 83, 58, 113, 62, 76, 248, 175, 83, 213, 47, 27, 21, 138, 75, ], ), name: Some( "Chris Stapleton", ), popularity: None, top_track: [], album_group: [], single_group: [], compilation_group: [], appears_on_group: [], external_id: [], portrait: [], biography: [], activity_period: [], restriction: [], related: [], is_portrait_album_cover: None, portrait_group: MessageField( None, ), sale_period: [], availability: [], special_fields: SpecialFields { unknown_fields: UnknownFields { fields: None, }, cached_size: CachedSize { size: 0, }, }, }, ], number: Some( 4, ), disc_number: Some( 1, ), duration: Some( 246986, ), popularity: Some( 60, ), explicit: None, external_id: [ ExternalId { type_: Some( "isrc", ), id: Some( "USUG12300475", ), special_fields: SpecialFields { unknown_fields: UnknownFields { fields: None, }, cached_size: CachedSize { size: 0, }, }, }, ], restriction: [], file: [], alternative: [], sale_period: [], preview: [], tags: [], earliest_live_timestamp: Some( 1699527600, ), has_lyrics: Some( true, ), availability: [], licensor: MessageField( Some( Licensor { uuid: Some( [ 254, 53, 142, 169, 135, 226, 66, 77, 144, 33, 194, 102, 90, 6, 103, 183, ], ), special_fields: SpecialFields { unknown_fields: UnknownFields { fields: None, }, cached_size: CachedSize { size: 0, }, }, }, ), ), language_of_performance: [ "en", ], original_audio: MessageField( Some( Audio { uuid: Some( [ 109, 171, 217, 68, 196, 86, 75, 140, 191, 199, 179, 170, 61, 104, 63, 239, ], ), special_fields: SpecialFields { unknown_fields: UnknownFields { fields: Some( { 2: UnknownValues { fixed32: [], fixed64: [], varint: [ 1, ], length_delimited: [], }, }, ), }, cached_size: CachedSize { size: 0, }, }, }, ), ), content_rating: [], original_title: Some( "It Takes A Woman", ), version_title: None, artist_with_role: [ ArtistWithRole { artist_gid: Some( [ 163, 161, 83, 58, 113, 62, 76, 248, 175, 83, 213, 47, 27, 21, 138, 75, ], ), artist_name: Some( "Chris Stapleton", ), role: Some( ARTIST_ROLE_MAIN_ARTIST, ), special_fields: SpecialFields { unknown_fields: UnknownFields { fields: None, }, cached_size: CachedSize { size: 0, }, }, }, ], canonical_uri: Some( "spotify:track:7gf5ffmSqKQBDnkmSe2Dt7", ), original_video: [], special_fields: SpecialFields { unknown_fields: UnknownFields { fields: Some( { 44: UnknownValues { fixed32: [], fixed64: [], varint: [], length_delimited: [ [ 18, 11, 8, 254, 224, 193, 165, 6, 16, 128, 131, 129, 41, ], ], }, 37: UnknownValues { fixed32: [], fixed64: [], varint: [], length_delimited: [ [ 10, 9, 8, 206, 31, 16, 22, 24, 18, 32, 22, ], ], }, 39: UnknownValues { fixed32: [], fixed64: [], varint: [], length_delimited: [ [], ], }, 41: UnknownValues { fixed32: [], fixed64: [], varint: [], length_delimited: [ [ 10, 20, 10, 16, 109, 171, 217, 68, 196, 86, 75, 140, 191, 199, 179, 170, 61, 104, 63, 239, 16, 1, ], ], }, 43: UnknownValues { fixed32: [], fixed64: [], varint: [ 0, ], length_delimited: [], }, }, ), }, cached_size: CachedSize { size: 0, }, }, } [2025-11-06T18:03:26Z ERROR librespot_playback::player] Track should be available, but no alternatives found. [2025-11-06T18:03:26Z WARN librespot_playback::player] spotify:track:<7gf5ffmSqKQBDnkmSe2Dt7> is not available [2025-11-06T18:03:26Z ERROR librespot_playback::player] Skipping to next track, unable to load track <SpotifyUri("spotify:track:7gf5ffmSqKQBDnkmSe2Dt7")>: () [2025-11-06T18:03:26Z DEBUG librespot_core::http_client] Requesting https://spclient.wg.spotify.com:443/context-resolve/v1/spotify:station:artist:4YLtscXsxbVgi031ovDDdh [2025-11-06T18:03:26Z DEBUG librespot_core::http_client] Requesting https://spclient.wg.spotify.com:443/context-resolve/v1/spotify:station:artist:4YLtscXsxbVgi031ovDDdh [2025-11-06T18:03:26Z DEBUG librespot_core::http_client] Requesting https://spclient.wg.spotify.com:443/context-resolve/v1/spotify:station:artist:4YLtscXsxbVgi031ovDDdh [2025-11-06T18:03:26Z TRACE librespot_connect::spirc] ==> LoadingPause [2025-11-06T18:03:26Z DEBUG librespot_connect::state::tracks] marking spotify:track:7gf5ffmSqKQBDnkmSe2Dt7 as unavailable [2025-11-06T18:03:26Z ERROR librespot_connect::spirc] could not dispatch player event: Invalid state { context is not available. type: Default } [2025-11-06T18:03:26Z DEBUG librespot_core::dealer::manager] replying to ws request: Success [2025-11-06T18:03:27Z DEBUG librespot_connect::state] updated connect play status playing: true, paused: true, buffering: true [2025-11-06T18:03:27Z DEBUG librespot_core::http_client] Requesting https://spclient.wg.spotify.com:443/connect-state/v1/devices/a94a8fe5ccb19ba61c4c0873d391e987982fbbd3?product=0&country=US&salt=1407352145 ``` ### Host (what you are running `librespot` on): - OS: Linux - Platform: Lenovo T14 ### Additional context
kerem 2026-02-27 19:32:13 +03:00
  • closed this issue
  • added the
    bug
    label
Author
Owner

@GabeMillikan commented on GitHub (Nov 6, 2025):

+1 identical issue on both windows and macos, same code was working yesterday

<!-- gh-comment-id:3499705191 --> @GabeMillikan commented on GitHub (Nov 6, 2025): +1 identical issue on both windows and macos, same code was working yesterday
Author
Owner

@timglong commented on GitHub (Nov 6, 2025):

I was still using 0.6.0 with apresolve.spotify.com blocked and it broke that as well, in case anyone else has been waiting to update.

<!-- gh-comment-id:3499801738 --> @timglong commented on GitHub (Nov 6, 2025): I was still using 0.6.0 with apresolve.spotify.com blocked and it broke that as well, in case anyone else has been waiting to update.
Author
Owner

@kingosticks commented on GitHub (Nov 6, 2025):

See #1622

<!-- gh-comment-id:3499848791 --> @kingosticks commented on GitHub (Nov 6, 2025): See #1622
Author
Owner

@YutongGu commented on GitHub (Nov 7, 2025):

Tested out #1622 and it worked like a charm. Thanks @photovoltex for responding quickly with a PR!

<!-- gh-comment-id:3500173491 --> @YutongGu commented on GitHub (Nov 7, 2025): Tested out #1622 and it worked like a charm. Thanks @photovoltex for responding quickly with a PR!
Author
Owner

@milnivlek commented on GitHub (Nov 7, 2025):

Yes, the fix works great! Thank you @photovoltex!

<!-- gh-comment-id:3500419182 --> @milnivlek commented on GitHub (Nov 7, 2025): Yes, the fix works great! Thank you @photovoltex!
Author
Owner

@Semmu commented on GitHub (Nov 7, 2025):

Spotify seems to change their backend very frequently, breaking librespot and other projects as a result. I really wonder how they keep all their official clients working and what API those actually use. (I mean the more obscure clients, such as the IKEA Symfonisk speaker or various smart TV apps, etc.)

<!-- gh-comment-id:3502560176 --> @Semmu commented on GitHub (Nov 7, 2025): Spotify seems to change their backend very frequently, breaking librespot and other projects as a result. I really wonder how they keep all their official clients working and what API those actually use. (I mean the more obscure clients, such as the IKEA Symfonisk speaker or various smart TV apps, etc.)
Author
Owner

@miltieIV2 commented on GitHub (Nov 7, 2025):

Can we please get regular releases after break/fix situations like this?
It will help build trust with the project - when things break and the latest is still v0.7.1 from Aug, it breaks down trust.
I know this fix has only been out for 20h, but this comment is more about past break/fix situations...

<!-- gh-comment-id:3502691967 --> @miltieIV2 commented on GitHub (Nov 7, 2025): Can we please get regular releases after break/fix situations like this? It will help build trust with the project - when things break and the latest is still v0.7.1 from Aug, it breaks down trust. I know this fix has only been out for 20h, but this comment is more about past break/fix situations...
Author
Owner

@timglong commented on GitHub (Nov 7, 2025):

To provide a counterweight to the above, it's incredible to me that this project exists and that a fix (for this issue, and for the previous issue that led to 0.7.0) was in place basically instantaneously. This project has motivated me to add "learn Rust so I can help with librespot at some point" to my to-do list.

<!-- gh-comment-id:3503055491 --> @timglong commented on GitHub (Nov 7, 2025): To provide a counterweight to the above, it's incredible to me that this project exists and that a fix (for this issue, and for the previous issue that led to 0.7.0) was in place basically instantaneously. This project has motivated me to add "learn Rust so I can help with librespot at some point" to my to-do list.
Author
Owner

@Semmu commented on GitHub (Nov 7, 2025):

Yes, we should be grateful that librespot exists in the first place. (Though if it didn't, I would have stopped giving any money to Spotify a long time ago...)

<!-- gh-comment-id:3503083176 --> @Semmu commented on GitHub (Nov 7, 2025): Yes, we should be grateful that librespot exists in the first place. (Though if it didn't, I would have stopped giving any money to Spotify a long time ago...)
Author
Owner

@roderickvd commented on GitHub (Nov 7, 2025):

Of course this always has to happen when I'm abroad 😏

Let's go through the PRs and will coordinate with @photovoltex and @kingosticks to do a point release coming days.
While we feel the responsibility to the community, remember this is a after-work hobby for all of us.

<!-- gh-comment-id:3503714872 --> @roderickvd commented on GitHub (Nov 7, 2025): Of course this always has to happen when I'm abroad 😏 Let's go through the PRs and will coordinate with @photovoltex and @kingosticks to do a point release coming days. While we feel the responsibility to the community, remember this is a after-work hobby for all of us.
Author
Owner

@naed437 commented on GitHub (Nov 7, 2025):

Any fix for the java version?

<!-- gh-comment-id:3504214076 --> @naed437 commented on GitHub (Nov 7, 2025): Any fix for the java version?
Author
Owner

@LowerHater commented on GitHub (Nov 7, 2025):

Will add my voice to that Thank Yous. Librespot (incorporated into Raspotify piped to Owntone; allows me to use cheap ancient $10 Airport Expresses to stream multiroom audio to 5 rooms where I have active speakers and/or amps.

<!-- gh-comment-id:3504408306 --> @LowerHater commented on GitHub (Nov 7, 2025): Will add my voice to that Thank Yous. Librespot (incorporated into [Raspotify ](https://github.com/dtcooper/raspotify) piped to Owntone; allows me to use cheap ancient $10 Airport Expresses to stream multiroom audio to 5 rooms where I have active speakers and/or amps.
Author
Owner

@roelandp commented on GitHub (Nov 7, 2025):

Found this thread when debugging Gstreamer for Mopidy, based on libspotify and wanted to chime in to thank the maintainers for doing the hard work in making our lives more fun by having opensource audio enriching our experience on earth. Hope I can pay back soon with a simple party upvote playlist app and opensource that.

<!-- gh-comment-id:3505187127 --> @roelandp commented on GitHub (Nov 7, 2025): Found this thread when debugging Gstreamer for Mopidy, based on libspotify and wanted to chime in to thank the maintainers for doing the hard work in making our lives more fun by having opensource audio enriching our experience on earth. Hope I can pay back soon with a simple party upvote playlist app and opensource that.
Author
Owner

@hechtoid commented on GitHub (Nov 7, 2025):

Cheers on the speedy resolution!!

Already streaming again down on Raspbian

<!-- gh-comment-id:3505243002 --> @hechtoid commented on GitHub (Nov 7, 2025): Cheers on the speedy resolution!! Already streaming again down on Raspbian
Author
Owner

@gfro84 commented on GitHub (Nov 7, 2025):

My biggest fear of any open source project that I love getting too popular is that it spoils the fun of it for the author! I'm disappointed Spotify have killed the lossless and I don't know if this new issue is spite on their behalf, but I am very grateful for the years of enjoyment I've had out of librespot for many

Of course this always has to happen when I'm abroad 😏

Let's go through the PRs and will coordinate with @photovoltex and @kingosticks to do a point release coming days.
While we feel the responsibility to the community, remember this is a after-work hobby for all of us.

<!-- gh-comment-id:3505248273 --> @gfro84 commented on GitHub (Nov 7, 2025): My biggest fear of any open source project that I love getting too popular is that it spoils the fun of it for the author! I'm disappointed Spotify have killed the lossless and I don't know if this new issue is spite on their behalf, but I am very grateful for the years of enjoyment I've had out of librespot for many > Of course this always has to happen when I'm abroad 😏 > > Let's go through the PRs and will coordinate with @photovoltex and @kingosticks to do a point release coming days. > While we feel the responsibility to the community, remember this is a after-work hobby for all of us.
Author
Owner

@photovoltex commented on GitHub (Nov 7, 2025):

This issue here was bound to happen at some point. We previously just implemented a quick workout and forgot to replace it with the clean solution.

So the lossless part and this topic is probably totally unrelated and just a move on modernising their infrastructure.

<!-- gh-comment-id:3505300384 --> @photovoltex commented on GitHub (Nov 7, 2025): This issue here was bound to happen at some point. We previously just implemented a quick workout and forgot to replace it with the clean solution. So the lossless part and this topic is probably totally unrelated and just a move on modernising their infrastructure.
Author
Owner

@Moltey commented on GitHub (Nov 8, 2025):

Thank you for your great work in immediate resolution of the issue.

The issue is bringing up one question in me, as this was not the first time that spotify is implementing breaking changes in their infrastructure:

  • There are millions of devices of third party vendors in the world. Are they breaking down and rendered useless by these breaking changes, too? (Unless they do not receive any update.)

Would greatly appreciate if someone could share their insights.

<!-- gh-comment-id:3506332900 --> @Moltey commented on GitHub (Nov 8, 2025): Thank you for your great work in immediate resolution of the issue. The issue is bringing up one question in me, as this was not the first time that spotify is implementing breaking changes in their infrastructure: - There are millions of devices of third party vendors in the world. Are they breaking down and rendered useless by these breaking changes, too? (Unless they do not receive any update.) Would greatly appreciate if someone could share their insights.
Author
Owner

@roderickvd commented on GitHub (Nov 8, 2025):

  • There are millions of devices of third party vendors in the world. Are they breaking down and rendered useless by these breaking changes, too? (Unless they do not receive any update.)

Most of them seem fine. Then again, they are using some official SDK that was acting different in the first place, or possibly have had fallback mechanism in place. We only try and mimic what we see.

<!-- gh-comment-id:3506476654 --> @roderickvd commented on GitHub (Nov 8, 2025): > * There are millions of devices of third party vendors in the world. Are they breaking down and rendered useless by these breaking changes, too? (Unless they do not receive any update.) Most of them seem fine. Then again, they are using some official SDK that was acting different in the first place, or possibly have had fallback mechanism in place. We only _try_ and mimic what we see.
Author
Owner

@kingosticks commented on GitHub (Nov 8, 2025):

They are in control of (most of) their changes. They can keep old and new versions going, update client software to new version, yank old version, nobody notices. We use old version until it's suddenly yanked and then we scramble to find and implement the new version, so we notice. There's no way around this when using private, undocumented APIs.

<!-- gh-comment-id:3506483176 --> @kingosticks commented on GitHub (Nov 8, 2025): They are in control of (most of) their changes. They can keep old and new versions going, update client software to new version, yank old version, nobody notices. We use old version until it's suddenly yanked and then we scramble to find and implement the new version, so we notice. There's no way around this when using private, undocumented APIs.
Author
Owner

@abemagro commented on GitHub (Nov 8, 2025):

Hello everyone. Having the same problem with spotifyd on raspberry pi. I am a newbie. Do I understand correctly that the solution is to Build spotifyd myself from source with the new librespot?

<!-- gh-comment-id:3506647591 --> @abemagro commented on GitHub (Nov 8, 2025): Hello everyone. Having the same problem with spotifyd on raspberry pi. I am a newbie. Do I understand correctly that the solution is to Build spotifyd myself from source with the new librespot?
Author
Owner

@paulbastian commented on GitHub (Nov 9, 2025):

Is it possible to do a new release including this fix?

<!-- gh-comment-id:3508394065 --> @paulbastian commented on GitHub (Nov 9, 2025): Is it possible to do a new release including this fix?
Author
Owner

@photovoltex commented on GitHub (Nov 9, 2025):

That's the plan. But as this is just an side project for most maintainers, it can take a bit until the time is found to do the releases. We are working on improving the cycles in which we can do release, but currently it has to wait a bit until the time is found.

If you need the current version ASAP you can always include the repository as git dependency see: https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html#specifying-dependencies-from-git-repositories

<!-- gh-comment-id:3508404471 --> @photovoltex commented on GitHub (Nov 9, 2025): That's the plan. But as this is just an side project for most maintainers, it can take a bit until the time is found to do the releases. We are working on improving the cycles in which we can do release, but currently it has to wait a bit until the time is found. If you need the current version ASAP you can always include the repository as git dependency see: https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html#specifying-dependencies-from-git-repositories
Author
Owner

@pejobo commented on GitHub (Nov 9, 2025):

@abemagro should be.
I'm not an expert, actually I'm currently struggling with either the rebuild or I'm running into another issue.
@photovoltex maybe you could help?

This is my log after updating (see comment below):

Nov 09 14:12:21 xxxxxx systemd[1]: Started Librespot (an open source Spotify client).
Nov 09 14:12:21 xxxxxx librespot[7142]: [2025-11-09T13:12:21Z INFO  librespot] librespot 0.6.0-dev c4766ce (Built on 2025-11-09, Build ID: FcBCuS0l, Profile: release)
Nov 09 14:12:21 xxxxxx librespot[7142]: [2025-11-09T13:12:21Z INFO  librespot_playback::mixer::softmixer] Mixing with softvol and volume control: Log(60.0)
Nov 09 14:12:21 xxxxxx librespot[7142]: [2025-11-09T13:12:21Z INFO  librespot_playback::convert] Converting with ditherer: tpdf
Nov 09 14:12:21 xxxxxx librespot[7142]: [2025-11-09T13:12:21Z INFO  librespot_playback::audio_backend::alsa] Using AlsaSink with format: S16
Nov 09 14:13:17 xxxxxx librespot[7142]: [2025-11-09T13:13:17Z INFO  librespot_core::session] Connecting to AP "ap-gew4.spotify.com:4070"
Nov 09 14:13:17 xxxxxx librespot[7142]: [2025-11-09T13:13:17Z INFO  librespot_core::session] Authenticated as 'xxxxxxxxxxxx' !
Nov 09 14:13:17 xxxxxx librespot[7142]: [2025-11-09T13:13:17Z INFO  librespot_core::session] Country: "XX"
Nov 09 14:13:18 xxxxxx librespot[7142]: [2025-11-09T13:13:18Z INFO  librespot_core::spclient] Resolved "gew4-spclient.spotify.com:443" as spclient access point
Nov 09 14:13:19 xxxxxx librespot[7142]: [2025-11-09T13:13:19Z INFO  librespot_connect::spirc] active device is <> with session <6qD0Enjii3kfk6A0SXFoZR>
Nov 09 14:13:19 xxxxxx librespot[7142]: [2025-11-09T13:13:19Z WARN  librespot_connect::state::context] couldn't load context info because: context is not available. type: Default
Nov 09 14:13:19 xxxxxx librespot[7142]: [2025-11-09T13:13:19Z INFO  librespot_connect::spirc] session update: <Ok(NEW_SESSION)> for self, current session_id ab7f19c6f95d428a96d027e90e976a12, n>
Nov 09 14:13:19 xxxxxx librespot[7142]: [2025-11-09T13:13:19Z ERROR librespot_playback::player] Track should be available, but no alternatives found.
Nov 09 14:13:19 xxxxxx librespot[7142]: [2025-11-09T13:13:19Z WARN  librespot_playback::player] <spotify:track:1EW8uRPxmDgAIyiaIZvPQn> is not available
Nov 09 14:13:19 xxxxxx librespot[7142]: [2025-11-09T13:13:19Z ERROR librespot_playback::player] Skipping to next track, unable to load track <SpotifyId("spotify:track:1EW8uRPxmDgAIyiaIZvPQn")>>
Nov 09 14:13:19 xxxxxx librespot[7142]: [2025-11-09T13:13:19Z ERROR librespot_connect::spirc] could not dispatch player event: Invalid state { context is not available. type: Default }

What startles me is that in the log this is still reporting as commit id c4766ce, which is the last time I updated.
I'm using docker cross compile, I even tried with a fresh clone of the repository to ensure that no temporary files were sitting around (I also deleted the entire /tmp/librespot-build directory).

<!-- gh-comment-id:3508408514 --> @pejobo commented on GitHub (Nov 9, 2025): @abemagro should be. I'm not an expert, actually I'm currently struggling with either the rebuild or I'm running into another issue. @photovoltex maybe you could help? This is my log after updating (see comment below): ``` Nov 09 14:12:21 xxxxxx systemd[1]: Started Librespot (an open source Spotify client). Nov 09 14:12:21 xxxxxx librespot[7142]: [2025-11-09T13:12:21Z INFO librespot] librespot 0.6.0-dev c4766ce (Built on 2025-11-09, Build ID: FcBCuS0l, Profile: release) Nov 09 14:12:21 xxxxxx librespot[7142]: [2025-11-09T13:12:21Z INFO librespot_playback::mixer::softmixer] Mixing with softvol and volume control: Log(60.0) Nov 09 14:12:21 xxxxxx librespot[7142]: [2025-11-09T13:12:21Z INFO librespot_playback::convert] Converting with ditherer: tpdf Nov 09 14:12:21 xxxxxx librespot[7142]: [2025-11-09T13:12:21Z INFO librespot_playback::audio_backend::alsa] Using AlsaSink with format: S16 Nov 09 14:13:17 xxxxxx librespot[7142]: [2025-11-09T13:13:17Z INFO librespot_core::session] Connecting to AP "ap-gew4.spotify.com:4070" Nov 09 14:13:17 xxxxxx librespot[7142]: [2025-11-09T13:13:17Z INFO librespot_core::session] Authenticated as 'xxxxxxxxxxxx' ! Nov 09 14:13:17 xxxxxx librespot[7142]: [2025-11-09T13:13:17Z INFO librespot_core::session] Country: "XX" Nov 09 14:13:18 xxxxxx librespot[7142]: [2025-11-09T13:13:18Z INFO librespot_core::spclient] Resolved "gew4-spclient.spotify.com:443" as spclient access point Nov 09 14:13:19 xxxxxx librespot[7142]: [2025-11-09T13:13:19Z INFO librespot_connect::spirc] active device is <> with session <6qD0Enjii3kfk6A0SXFoZR> Nov 09 14:13:19 xxxxxx librespot[7142]: [2025-11-09T13:13:19Z WARN librespot_connect::state::context] couldn't load context info because: context is not available. type: Default Nov 09 14:13:19 xxxxxx librespot[7142]: [2025-11-09T13:13:19Z INFO librespot_connect::spirc] session update: <Ok(NEW_SESSION)> for self, current session_id ab7f19c6f95d428a96d027e90e976a12, n> Nov 09 14:13:19 xxxxxx librespot[7142]: [2025-11-09T13:13:19Z ERROR librespot_playback::player] Track should be available, but no alternatives found. Nov 09 14:13:19 xxxxxx librespot[7142]: [2025-11-09T13:13:19Z WARN librespot_playback::player] <spotify:track:1EW8uRPxmDgAIyiaIZvPQn> is not available Nov 09 14:13:19 xxxxxx librespot[7142]: [2025-11-09T13:13:19Z ERROR librespot_playback::player] Skipping to next track, unable to load track <SpotifyId("spotify:track:1EW8uRPxmDgAIyiaIZvPQn")>> Nov 09 14:13:19 xxxxxx librespot[7142]: [2025-11-09T13:13:19Z ERROR librespot_connect::spirc] could not dispatch player event: Invalid state { context is not available. type: Default } ``` What startles me is that in the log this is still reporting as commit id c4766ce, which is the last time I updated. I'm using docker cross compile, I even tried with a fresh clone of the repository to ensure that no temporary files were sitting around (I also deleted the entire /tmp/librespot-build directory).
Author
Owner

@photovoltex commented on GitHub (Nov 9, 2025):

@abemagro It's not as easy to update something like spotifyd. But you can probably start with one of these PR's https://github.com/Spotifyd/spotifyd/pull/1371 / https://github.com/Spotifyd/spotifyd/pull/1362 and then change the dependencies from the versioned dependencys to a git dependency. This will probably break some code tho.

As for @pejobo, you still seem to use a old version without the fixes see the referenced commit c4766ce.

<!-- gh-comment-id:3508415441 --> @photovoltex commented on GitHub (Nov 9, 2025): @abemagro It's not as easy to update something like `spotifyd`. But you can probably start with one of these PR's https://github.com/Spotifyd/spotifyd/pull/1371 / https://github.com/Spotifyd/spotifyd/pull/1362 and then change the dependencies from the versioned dependencys to a [git dependency](https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html#specifying-dependencies-from-git-repositories). This will probably break some code tho. As for @pejobo, you still seem to use a old version without the fixes see the referenced commit c4766ce.
Author
Owner

@pejobo commented on GitHub (Nov 9, 2025):

Thanks for the quick reply @photovoltex - I was assuming the same. During compilation, are there some cache directories used somewhere (besides in the build directory, which I deleted completely)?

$ git log --name-status HEAD^..HEAD
commit 84a3302168b8b25d44f1b313ca20155959f553e0 (HEAD -> dev, origin/dev, origin/HEAD)
Author: zappolowski <zappolowski@users.noreply.github.com>
...
<!-- gh-comment-id:3508432386 --> @pejobo commented on GitHub (Nov 9, 2025): Thanks for the quick reply @photovoltex - I was assuming the same. During compilation, are there some cache directories used somewhere (besides in the build directory, which I deleted completely)? ``` $ git log --name-status HEAD^..HEAD commit 84a3302168b8b25d44f1b313ca20155959f553e0 (HEAD -> dev, origin/dev, origin/HEAD) Author: zappolowski <zappolowski@users.noreply.github.com> ... ```
Author
Owner

@photovoltex commented on GitHub (Nov 9, 2025):

Could you provide the changes you applied to your Cargo.toml?

<!-- gh-comment-id:3508435627 --> @photovoltex commented on GitHub (Nov 9, 2025): Could you provide the changes you applied to your `Cargo.toml`?
Author
Owner

@pejobo commented on GitHub (Nov 9, 2025):

I've got no changes on Cargo.toml, but I think I found it - the old docker image was still lying around and it seems to have the (old) code baked in - next attempt is currently running.
I will report back - meanwhile many thanks for your support!

UPDATE:
That seems to be the case - at least now I'm sitting on a build failure
UPDATE 2:
Now all works again 🎉 . Build failure was a missing setting in my build script.

<!-- gh-comment-id:3508438171 --> @pejobo commented on GitHub (Nov 9, 2025): I've got no changes on Cargo.toml, but I think I found it - the old docker image was still lying around and it seems to have the (old) code baked in - next attempt is currently running. I will report back - meanwhile many thanks for your support! UPDATE: That seems to be the case - at least now I'm sitting on a build failure UPDATE 2: Now all works again 🎉 . Build failure was a missing setting in my build script.
Author
Owner

@rwjack commented on GitHub (Nov 9, 2025):

Does anyone know how I can build and install the latest Librespot commit on an alpine container?

I currently just install the latest built package as per: github.com/rwjack/addon-snapserver-spotify@48163102ce/snapserver/Dockerfile (L18)

<!-- gh-comment-id:3508466591 --> @rwjack commented on GitHub (Nov 9, 2025): Does anyone know how I can build and install the latest Librespot commit on an alpine container? I currently just install the latest built package as per: https://github.com/rwjack/addon-snapserver-spotify/blob/48163102ce245835052f2e3b02c5e2f37676daf7/snapserver/Dockerfile#L18
Author
Owner

@timglong commented on GitHub (Nov 9, 2025):

That's the plan. But as this is just an side project for most maintainers, it can take a bit until the time is found to do the releases. We are working on improving the cycles in which we can do release, but currently it has to wait a bit until the time is found.

If you need the current version ASAP you can always include the repository as git dependency see: https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html#specifying-dependencies-from-git-repositories

Thanks for this @photovoltex ! This gave me the hint I needed to figure out where to look to find the --git option for cargo install.

If there are other folks with limited Rust experience trying to figure out how to get the update working, the following worked for me (Raspberry Pi 4B running bookworm, previously followed the instructions to set up Rust and install librespot, etc.):

cargo install --git https://github.com/librespot-org/librespot --branch dev

If there's some reason to avoid this approach, please let me know. The only downside I see is that this approach requires a commit, which might add a slight delay if speed is the primary concern (in this case less than 2 days). I suppose there's also a risk because other commits can be pulled in, but my understanding is this can be avoided if desired by using --rev instead of --branch and specifying the specific commit hash.

<!-- gh-comment-id:3508488652 --> @timglong commented on GitHub (Nov 9, 2025): > That's the plan. But as this is just an side project for most maintainers, it can take a bit until the time is found to do the releases. We are working on improving the cycles in which we can do release, but currently it has to wait a bit until the time is found. > > If you need the current version ASAP you can always include the repository as git dependency see: https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html#specifying-dependencies-from-git-repositories Thanks for this @photovoltex ! This gave me the hint I needed to figure out where to look to find the `--git` option for `cargo install`. If there are other folks with limited Rust experience trying to figure out how to get the update working, the following worked for me (Raspberry Pi 4B running bookworm, previously followed the instructions to set up Rust and install librespot, etc.): `cargo install --git https://github.com/librespot-org/librespot --branch dev` If there's some reason to avoid this approach, please let me know. The only downside I see is that this approach requires a commit, which might add a slight delay if speed is the primary concern (in this case less than 2 days). I suppose there's also a risk because other commits can be pulled in, but my understanding is this can be avoided if desired by using `--rev` instead of `--branch` and specifying the specific commit hash.
Author
Owner

@pejobo commented on GitHub (Nov 9, 2025):

@timglong even so I screwed it this time it's maybe easier to cross compile with the docker environment, either on another computer (more powerful and therefore faster) or on the Pi itself (less impact on the host system due to additional packages).
See https://github.com/librespot-org/librespot/wiki/Cross-compiling

<!-- gh-comment-id:3508558476 --> @pejobo commented on GitHub (Nov 9, 2025): @timglong even so I screwed it this time it's maybe easier to cross compile with the docker environment, either on another computer (more powerful and therefore faster) or on the Pi itself (less impact on the host system due to additional packages). See https://github.com/librespot-org/librespot/wiki/Cross-compiling
Author
Owner

@abemagro commented on GitHub (Nov 9, 2025):

I actually tried to build spotifyd myself from source with the new librespot but got several errors and while troubleshooting realized that @eladyn already made the change to spotifyd. So I was able to successfully build with the following commit. github.com/Spotifyd/spotifyd@59482ed710

However I still observe similar behaviour

[INFO] active device is <> with session <7e94d084f3e066529569b7862b08fd03>
^[[A[WARN] couldn't load context info because: context is not available. type: Default
[ERROR] Unable to load audio item: Error { kind: NotFound, error: StatusCode(404) }
[ERROR] Skipping to next track, unable to load track <SpotifyId("spotify:episode:3JlhJOvpqIegWT7pOq1dPm")>: ()
[ERROR] could not dispatch player event: Invalid state { context is not available. type: Default }
[WARN] couldn't load context info because: context is not available. type: Default
[ERROR] Track should be available, but no alternatives found.
[WARN] spotify:track:3n3Ppam7vgaVa1iaRUc9Lp is not available
[ERROR] Skipping to next track, unable to load track <SpotifyId("spotify:track:3n3Ppam7vgaVa1iaRUc9Lp")>: ()
[INFO] Not playing next track because there are no more tracks left in queue.

Any idea why it would not work for me? Did it work for others

By the way thanks a lot for your support so far!

<!-- gh-comment-id:3508874577 --> @abemagro commented on GitHub (Nov 9, 2025): I actually tried to build spotifyd myself from source with the new librespot but got several errors and while troubleshooting realized that @eladyn already made the change to spotifyd. So I was able to successfully build with the following commit. https://github.com/Spotifyd/spotifyd/commit/59482ed710cacb45aab1b6b3ef6aebdef712cdd7 However I still observe similar behaviour [INFO] active device is <> with session <7e94d084f3e066529569b7862b08fd03> ^[[A[WARN] couldn't load context info because: context is not available. type: Default [ERROR] Unable to load audio item: Error { kind: NotFound, error: StatusCode(404) } [ERROR] Skipping to next track, unable to load track <SpotifyId("spotify:episode:3JlhJOvpqIegWT7pOq1dPm")>: () [ERROR] could not dispatch player event: Invalid state { context is not available. type: Default } [WARN] couldn't load context info because: context is not available. type: Default [ERROR] Track should be available, but no alternatives found. [WARN] spotify:track:3n3Ppam7vgaVa1iaRUc9Lp is not available [ERROR] Skipping to next track, unable to load track <SpotifyId("spotify:track:3n3Ppam7vgaVa1iaRUc9Lp")>: () [INFO] Not playing next track because there are no more tracks left in queue. Any idea why it would not work for me? Did it work for others By the way thanks a lot for your support so far!
Author
Owner

@michaelcadilhac commented on GitHub (Nov 10, 2025):

Using master, still no track gets playing:

[2025-11-10T15:31:03Z INFO  librespot_core::session] Connecting to AP "ap-gue1.spotify.com:4070"
[2025-11-10T15:31:03Z INFO  librespot_core::session] Authenticated as 'xxxx' !
[2025-11-10T15:31:03Z INFO  librespot_core::session] Country: "US"
[2025-11-10T15:31:03Z INFO  librespot_core::spclient] Resolved "gue1-spclient.spotify.com:443" as spclient access point
[2025-11-10T15:31:03Z INFO  librespot_connect::spirc] active device is <xxx> with session <xxx>
[2025-11-10T15:31:04Z WARN  librespot_connect::state::context] couldn't load context info because: context is not available. type: Default
[2025-11-10T15:31:04Z ERROR librespot_playback::player] Track should be available, but no alternatives found.
[2025-11-10T15:31:04Z WARN  librespot_playback::player] <spotify:track:xxx> is not available
[2025-11-10T15:31:04Z ERROR librespot_playback::player] Skipping to next track, unable to load track <SpotifyId("spotify:track:xxx")>: ()
[2025-11-10T15:31:04Z INFO  librespot_connect::spirc] device became inactive
[2025-11-10T15:31:04Z WARN  librespot_connect::state::context] couldn't load context info because: context is not available. type: Default
[2025-11-10T15:31:04Z WARN  librespot_connect::spirc] failed filling up next_track during stopping: Invalid state { context is not available. type: Default }
[2025-11-10T15:31:04Z ERROR librespot_connect::spirc] could not dispatch player event: Invalid state { context is not available. type: Default }
<!-- gh-comment-id:3512443287 --> @michaelcadilhac commented on GitHub (Nov 10, 2025): Using master, still no track gets playing: ``` [2025-11-10T15:31:03Z INFO librespot_core::session] Connecting to AP "ap-gue1.spotify.com:4070" [2025-11-10T15:31:03Z INFO librespot_core::session] Authenticated as 'xxxx' ! [2025-11-10T15:31:03Z INFO librespot_core::session] Country: "US" [2025-11-10T15:31:03Z INFO librespot_core::spclient] Resolved "gue1-spclient.spotify.com:443" as spclient access point [2025-11-10T15:31:03Z INFO librespot_connect::spirc] active device is <xxx> with session <xxx> [2025-11-10T15:31:04Z WARN librespot_connect::state::context] couldn't load context info because: context is not available. type: Default [2025-11-10T15:31:04Z ERROR librespot_playback::player] Track should be available, but no alternatives found. [2025-11-10T15:31:04Z WARN librespot_playback::player] <spotify:track:xxx> is not available [2025-11-10T15:31:04Z ERROR librespot_playback::player] Skipping to next track, unable to load track <SpotifyId("spotify:track:xxx")>: () [2025-11-10T15:31:04Z INFO librespot_connect::spirc] device became inactive [2025-11-10T15:31:04Z WARN librespot_connect::state::context] couldn't load context info because: context is not available. type: Default [2025-11-10T15:31:04Z WARN librespot_connect::spirc] failed filling up next_track during stopping: Invalid state { context is not available. type: Default } [2025-11-10T15:31:04Z ERROR librespot_connect::spirc] could not dispatch player event: Invalid state { context is not available. type: Default } ```
Author
Owner

@roelandp commented on GitHub (Nov 10, 2025):

Using master, still no track gets playing:

@michaelcadilhac afaiu dev branch has all the fixes implemented. maybe try that?

<!-- gh-comment-id:3513269146 --> @roelandp commented on GitHub (Nov 10, 2025): > Using master, still no track gets playing: @michaelcadilhac afaiu dev branch has all the fixes implemented. maybe try that?
Author
Owner

@michaelcadilhac commented on GitHub (Nov 10, 2025):

Using master, still no track gets playing:

@michaelcadilhac afaiu dev branch has all the fixes implemented. maybe try that?

It may, but it does not compile:

error[E0308]: mismatched types
    --> playback/src/player.rs:1126:47
     |
1126 |                 symphonia_decoder(audio_file, format)
     |                 -----------------             ^^^^^^ expected `Hint`, found `AudioFileFormat`
     |                 |
     |                 arguments to this function are incorrect
     |
note: closure parameter defined here
    --> playback/src/player.rs:1111:54
     |
1111 |             let mut symphonia_decoder = |audio_file, format| {
     |                                                      ^^^^^^

This is on Arch Linux using the AUR parameters:

_features=(           
 native-tls                                                             
 alsa-backend
 gstreamer-backend
 jackaudio-backend
 portaudio-backend
 pulseaudio-backend
 rodio-backend
 rodiojack-backend
 sdl-backend
 passthrough-decoder
 with-avahi
 with-dns-sd
 with-libmdns
)
export RUSTUP_TOOLCHAIN=stable           
export CARGO_TARGET_DIR=target
cargo build --release --frozen --features "${_features[*]}" --workspace

One of the fixes between dev and master fixed it.

<!-- gh-comment-id:3513543539 --> @michaelcadilhac commented on GitHub (Nov 10, 2025): > > Using master, still no track gets playing: > > [@michaelcadilhac](https://github.com/michaelcadilhac) afaiu dev branch has all the fixes implemented. maybe try that? It may, but it does not compile: ``` error[E0308]: mismatched types --> playback/src/player.rs:1126:47 | 1126 | symphonia_decoder(audio_file, format) | ----------------- ^^^^^^ expected `Hint`, found `AudioFileFormat` | | | arguments to this function are incorrect | note: closure parameter defined here --> playback/src/player.rs:1111:54 | 1111 | let mut symphonia_decoder = |audio_file, format| { | ^^^^^^ ``` This is on Arch Linux using the AUR parameters: ``` _features=( native-tls alsa-backend gstreamer-backend jackaudio-backend portaudio-backend pulseaudio-backend rodio-backend rodiojack-backend sdl-backend passthrough-decoder with-avahi with-dns-sd with-libmdns ) export RUSTUP_TOOLCHAIN=stable export CARGO_TARGET_DIR=target cargo build --release --frozen --features "${_features[*]}" --workspace ``` One of the fixes between dev and master fixed it.
Author
Owner

@photovoltex commented on GitHub (Nov 10, 2025):

That issue was resolve with github.com/librespot-org/librespot@56dc25d0fe. Please check if your fork/repository uses the latest git version.

<!-- gh-comment-id:3513580244 --> @photovoltex commented on GitHub (Nov 10, 2025): That issue was resolve with https://github.com/librespot-org/librespot/commit/56dc25d0fe2b13bc4acc9beaca46414506d77a31. Please check if your fork/repository uses the latest git version.
Author
Owner

@michaelcadilhac commented on GitHub (Nov 10, 2025):

That issue was resolve with 56dc25d. Please check if your fork/repository uses the latest git version.

That's on me, you're entirely right. dev and the AUR package work now; sorry for the noise.

<!-- gh-comment-id:3513701366 --> @michaelcadilhac commented on GitHub (Nov 10, 2025): > That issue was resolve with [56dc25d](https://github.com/librespot-org/librespot/commit/56dc25d0fe2b13bc4acc9beaca46414506d77a31). Please check if your fork/repository uses the latest git version. That's on me, you're entirely right. `dev` and the AUR package work now; sorry for the noise.
Author
Owner

@Tsjippy commented on GitHub (Nov 16, 2025):

When will this be released?

<!-- gh-comment-id:3538834509 --> @Tsjippy commented on GitHub (Nov 16, 2025): When will this be released?
Author
Owner

@poettig commented on GitHub (Nov 16, 2025):

When will this be released?

6 days ago

<!-- gh-comment-id:3538846695 --> @poettig commented on GitHub (Nov 16, 2025): > When will this be released? [6 days ago](https://github.com/librespot-org/librespot/releases/tag/v0.8.0)
Author
Owner

@Tsjippy commented on GitHub (Nov 16, 2025):

When will this be released?

6 days ago

Sorry that was a stupid question.
I use Spotifyd any clue how I update librespot while waiting for a new release of apotifyd

<!-- gh-comment-id:3539166901 --> @Tsjippy commented on GitHub (Nov 16, 2025): > > When will this be released? > > [6 days ago](https://github.com/librespot-org/librespot/releases/tag/v0.8.0) Sorry that was a stupid question. I use Spotifyd any clue how I update librespot while waiting for a new release of apotifyd
Author
Owner

@photovoltex commented on GitHub (Nov 16, 2025):

You can see the progress here (https://github.com/Spotifyd/spotifyd/pull/1376) and probably be able to checkout the branch to use it.

<!-- gh-comment-id:3539259248 --> @photovoltex commented on GitHub (Nov 16, 2025): You can see the progress here (https://github.com/Spotifyd/spotifyd/pull/1376) and probably be able to checkout the branch to use it.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/librespot#739
No description provided.