From 72d79fcafa497b0fdbabcffbfb164b1f012457fd Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Wed, 9 Oct 2024 15:39:39 -0400 Subject: [PATCH] feat(youtube)!: Use oauth-based api library for better stability * Fixes #195 missing (404) history endpoint which only appear when using cookies * Might fix #158 due to using a different authentication method --- .gitignore | 1 + config/ytmusic.json.example | 2 - docsite/docs/configuration/configuration.mdx | 28 +- docsite/docs/configuration/google-header.jpg | Bin 231527 -> 0 bytes package-lock.json | 81 +- package.json | 2 +- patches/youtube-music-ts-api+1.7.0.patch | 68 - src/backend/common/AbstractComponent.ts | 4 + .../infrastructure/config/source/ytmusic.ts | 25 +- src/backend/server/api.ts | 3 +- src/backend/server/auth.ts | 5 + src/backend/sources/YTMusicSource.ts | 254 +- src/backend/tests/ytm/ytm.test.ts | 21 + src/backend/tests/ytm/ytres.json | 5480 +++++++++++++++++ .../statusCard/SourceStatusCard.tsx | 1 + 15 files changed, 5726 insertions(+), 249 deletions(-) delete mode 100644 docsite/docs/configuration/google-header.jpg delete mode 100644 patches/youtube-music-ts-api+1.7.0.patch create mode 100644 src/backend/tests/ytm/ytm.test.ts create mode 100644 src/backend/tests/ytm/ytres.json diff --git a/.gitignore b/.gitignore index beb432f6..b724b2a3 100644 --- a/.gitignore +++ b/.gitignore @@ -118,6 +118,7 @@ dist .pnp.* config/*.json +config/yti-* *.txt .idea/ diff --git a/config/ytmusic.json.example b/config/ytmusic.json.example index 758fb51a..ffb48e99 100644 --- a/config/ytmusic.json.example +++ b/config/ytmusic.json.example @@ -4,8 +4,6 @@ "enable": true, "clients": [], "data": { - "cookie": "VISITOR_INFO1_LIVE=jMDXz2_L8rY; __Secure-3PAPISID=3AxsXpSXGqOInSDn1jEKn; DEVICE_INFO=ChxOekU0TmTBpjek5EWZ0G; YSC=7gZdl3Zdl3; SID=TwhNsaZRXYTAtXxzGyu6rZdpg2HvGROeW8J4Ym_FhkhoZMUYEQ.; __Secure-1PSID=TwhNOsaZRXYTyRBe4rxAtXRIKsIEtk_Qot2VLBNfHQrQ.; __Secure-3PSID=ZRXYTAtXRIKsIEtk_Qot2yRBerZdpg2HvvZRXYTAtXRIKsIEtk_Qot2yRBerkuZICFQ.; HSID=A1UMmELW79; SSID=AKhomOs; APISID=IlHHmuzkPdQzZZDhHn3; SAPISID=3AxsXpy0u75Qb/n1jEKn; __Secure-1PAPISID=3AxsXpQb/AkSDn1jEKn; LOGIN_INFO=AFmP6vFpyVCZZAIgDwbkhWMBBhluaIWAPP:QUQ314UW5NWMjNmd2ZUJnYnJsakdIMjZoaE5zVVMjNmd2ZZUiHRlb3ZlV3ZIcUVyRVIMjNmdjNmd2ZZUivYlNqX2ZNZUiHdUNFNFdaYmJIW1NkJRX3hqdlU2YnFESkFuSS1uTldnZVRmLXNjWFc5OUJuR3dTd3JsZGZYa2EtZFQ2a0k2Ry1KQQ==; PREF=volume=26; SIDCC=AFvI_94PxXwls-ndqpGfPgFX3FWj80y_94PxXwls-ndqfSh15sP; __Secure-1PSIDCC=AFvIBnUbRr96I96UCIp2U4T8HRVk2B0HfKzhzxwsiP; __Secure-3PSIDCC=AFvIB3bINuUN0ETDR9gO91wpwWIVmpGki3BxT3bINuUN0ETDR9gO91wCH", - "authUser": 0 } } ] diff --git a/docsite/docs/configuration/configuration.mdx b/docsite/docs/configuration/configuration.mdx index afc95aa6..5197584f 100644 --- a/docsite/docs/configuration/configuration.mdx +++ b/docsite/docs/configuration/configuration.mdx @@ -576,28 +576,30 @@ After starting multi-scrobbler with credentials in-place open the dashboard (`ht ### [Youtube Music](https://music.youtube.com) +
+ + Migrating from YT Music cookie-based Source + + In multi-scrobbler **below v0.9.0** YT Music credentials were extracted from browser cookies. Due to authentication inconsistency and YT service changes this was approach was dropped in favor of [oauth authentication which is more stable.](https://ytjs.dev/guide/authentication.html#youtube-tv-oauth2) + + Your existing credentials cannot be migrated. However, the oauth approach is quite easy. Continue following the directions below to setup new authentication for your YT Music Source. + +
+ :::note -* YT Music authentication is "browser based" which means your credentials may expire after a (long?) period of time OR if you log out of https://music.youtube.com. In the event this happens just repeat the steps below to get new credentials. [See the FAQ](../FAQ.md#youtube-music-fails-after-some-time) for a more detailed explanation. * Communication to YT Music is **unofficial** and not supported or endorsed by Google. This means that **this integration may stop working at any time** if Google decides to change how YT Music works in the browser. * Due to this scrobble history from YTM is often inconsistent and can cause missed scrobbles. [See the FAQ](../FAQ.md#youtube-music-misses-scrobbles) for a more detailed explanation. ::: -Credentials for YT Music are obtained from a browser request to https://music.youtube.com **once you are logged in.** [Specific requirements are here and summarized below:](https://github.com/nickp10/youtube-music-ts-api/blob/master/DOCUMENTATION.md#authenticate) - -* Open a new tab -* Open the developer tools (Ctrl-Shift-I) and select the “Network” tab -* Go to https://music.youtube.com and ensure you are logged in - -Then... +To authenticate simply start multi-scrobbler with an empty YT Music configuration. An authentication URL/code will be logged in additon to being available from the dashboard. -1. Find and select an authenticated POST request. The simplest way is to filter by /browse using the search bar of the developer tools. If you don’t see the request, try scrolling down a bit or clicking on the library button in the top bar. -2. **Make sure **Headers** pane is selected and open -3. In the **Request Headers** section find and copy the **entire value** found after `Cookie:` and use this as the `cookie` value in your multi-scrobbler config -4. If present, in the **Request Headers** section find and copy the number found in `X-google-AuthUser` and use this as the value for `authUser` in your multi-scrobbler config +``` +[2024-10-09 15:24:17.358 -0400] INFO : [App] [Sources] [Ytmusic - MyYTM] ERROR: Sign in with the code 'CLV-KFA-BVKY' using the authentication link on the dashboard or https://www.google.com/device +``` -![Google Headers](google-header.jpg) +Visit the authentication URL and enter the code that was provided (also available on the dashboard). After completing the setup flow MS will log `Auth success` and the YT Music dashboard card will display as **Idle** after refreshing. Click the **Start** link to begin monitoring. #### Configuration diff --git a/docsite/docs/configuration/google-header.jpg b/docsite/docs/configuration/google-header.jpg deleted file mode 100644 index 4ca5f28b25f0e2fc44930040dadb95fba912e770..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 231527 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

c#d4 zxefeJT6b?x=Q9Ot;C!~uwk{wV0<^fmpRYPSBl9QrslxUSF79U(pk@EW0^vWA{;lw* zuLd=gkaL53pT0y{PKx!ElZ1^M+`&fT3=|O-uokrwx8o7A7O>?J5)!lKv9cD2^4N(8 zz~N&2Vs=c zh#gc=z(xeh54Zb+Uc=J?Y(`ejzsqyV#|GqMXD4ngEM_OpBP43Y&m$x*3i5#q@$-m6 z1+8p_#6*Pz#rauTY~T_KZk{eyU_CgvSlQe1Il9~0v$CApOF~vtS&CJV7sNVCYC2na z*@3uHtf~&K-oC$bbsb!6b-b)jEhiu%Dk>l<%r77YY7G?@_=TZw>xlr{%PFg~GfHQ| zOWgFdweoWF)OB-nmSR2Se|CiFXPFw&tT8jt@!Ue?z#Q&g2 zxY>F6Sb5sY+Jo%~v;f$O&Md%k<;=QVf8hDtwmmf+XagR8K^{TqsSTi_5&{ChY{2*b zq5M!=emfB>QBfXY8v!w}$?)^@hzkgc@`&3A!9{FD;lg4zpwWNo|Nln*(^F|;zsb*c z>PmiA1>Zl{(plMWZU8`gu-y{cHJu%ptJ>7g69TaTX9u2JY_Z z1;UmfEaKzkehMdpFeNzQv;pA~5WeOK3JAhqPxGyR!po@1z93c>g-NwZg8i~(9@mKYl2kPAe93E2PxzLH^2q3I->_p z>j1<7!(X;VfD4|pEG*(10DwDwa9dBBecfTJfTCx_2ZPL6WGiwR=@(Cqpby<0W_ zh;4)UPyWhd&jJ9lZ~%Dw@vl7VBmk(6053O;xLbKzoxSJut^>B69RO_R0|1E;09^PC z0E8w#?FN>emIE(_0YDeDm1++Fq@)4>hds#K^l$V&y$SNC-TouaFZ-QchJavWpZaw>9)3zQcxUL+=?rlF#wIZt_! z^6WAM1f;>iCBVfcpd=w8q5MA%Cm+De5D*SrIS3Yb58#i>5DZ|$|9NZR)D~yq^ezMz zco_n`Qb7O5bpotE3jeq&aq{b2J~@OOY|0p+^*<5*uK+35-^pBI^Lsj!X z5Al`el4a5D`Q)pqQHqptXm(`Ebw!2`q#MfLVZOOxJDi<&<4Zjw)gIiOSEn6^1-7~2 zwoRw{d&O9N6K3YW4J!ys4y&4?X0Vh=SwOS*UUDc{N=om0iucsEoqzG(G_pc`?!3I> z=k%?ZI~q}c%7NFiitGho1N&^^po)J6$m`%7b42eWtK6wHWViaG1KNil5bBp?hlH3l z12?h{Za#tYh|op1w`b9L#XM?Qc_PBh?G-cmj6&=|i=Xmh6IWwnFYYNoDK!M1n3y9Bnp~AmN1*oHh5EaIo!z#CG2~c7~-wKY7t_-;~ATd zCj;Ow2u+XO4Y|%x39;^8^X*}A+*X#~#A9!A z>)LMOYwEEdPHPcAsEEQ006`Tc1Hrz!!6h~@_7z6$d#PT;_#KQd)`&Sf=t;vov}!QR z%%!xkNYY6(C&QQ_0+}h!xtQO_oRBfSs7_m+n~iB^egT;xs}P_k)fy6{X68o37E0ht zR*l+9*b7ya_mV|P*pEMjiLElxs>gN0WS9#eTQ63Kvll3tv+iwM273niA+L#22&VNa zZ?YUE&t!pzP9`DAcY3u7_U^`4ZS6u)dp!Y-+l9}b!hX{Q5SC)D+;1wzXjn93)-;fa zDAX8a68Ta>v73ejY|Zks05xSOa9sfbdNeSMDm7ze(>8-%kfoa_Qsy)Z3=1@op+HS8 zvo={GK(8u8FZ&R5%d@~DZMSW6E&%Y@_a%m&A^!1$<)F2Vis%R>d(pRf_p}xLT~G}@ zExEvA>QAWg&o~@1r#WXBI2}|M?^f>2@Aq#NWgi&M&=D4CJ*^XXP<-W|iB8i5Zb23m z2egixFg_GK3d>IxU9qJLD;2kAZH$y?Z~1)0B*09o%WThV?hzX<;?2`Rd@TW8 zE#P!7Ll1%0lH%%0dwHedhCgCNw4nytFUUF=?N=niMx~_LD2PFYl3y1i&H`7lWcKGBJ()p;p3~`i8@_SFj{TXo!kC3Lvr`;hLizrstub3QY#m$#ncnZ_}DFb%D zANm2b+@n{k1E@NHXCuhcMKf-eXv5hZ#Zcsn8L#o%60?j}4j8519PnzyqV|^$nECck zfUYB-tgc}gFvScnIr7|(?(feWmx6`lViskG2Ijjyi_&t_41Y9@8LC8cR~vBkE;J@0 z_E%l}pMFErvI$>}8d*}`ckS7~=9ExyowLuYmEpSHwYLcm_5Py9CgX@|khfEDQ5N0XKYAm;&q6}bJO$s(E zq1$|kdT@wsBkqS2Jh=*#ucOz)tah0jj?=o=G2_DnhXT^D;~-2Klg{|$A0wtzaZV@z zG-QJ>0(}X9wPHdErvD)XzuRiGAKq*DT)9=2j}BHGSzeUqa4b16T+E_2v9=X6n z+M8F@h2nI87%6{Xouw|YV4Y50LFWZ}u61T*2JV^>hNACOR4HL?*?(aEYmD_h=232U zU~5pfl_ZO2?AKuG53BpW{T5k48hK!I=s%E3uIfNsZKChRwIFA=FTr^nGX@t)FG{~H zFt`DYl>s>t(5Z*(o61#954oFqS#xsddJ#0IJeBA6JRA2RJ9?T zni$z0D$zL3&kjC#Q9-K`HS2BT1f{zrTQyBj7|kh}@|nf6nCmkqeQbI`C|1b`W%^>u z=jc#$pQlqY5y?jGLSv0?1RJRd|rg?l-&R@0D0Xp>XBF)tgEvAN^MJ#}!cTOdV zuAvv}YmQ1>>(kDorb+ao-$>1K`ch4&J^)ZH3ETg@5NFbn<)rUyHP3l3(HEQz;b61+ z6~Jx*fL-JQ%h?1I>@&n)k{4--IZc{~-tY{0xG(jg-HRFdCL|^6(1#nXUHQ^UCbj67 z;%6=F4<`Q{Lk>7619{hyqJ{T&2M#QC;W)+Tc8nzI>UT=y4B4 zN5Sc$|9=RM9NL=BNU5=P@gV=U#XpSxi|Dipz{&xu;M9qox-Fj<$w3O~nAdvM!uI;x zsNz`DA-|Ux@%o!w!_^Ydnh})hj-S(XUTeWG4*wEK>`LXNyCvAK+0S}E+3VlcxVPRI z+trqe8D0$H>pjl;vLgQynr61Qz;HvR#Xym_M40hmr=$36YwP6)@dA^6&%SCqLsKHL ztcJz(#Kr<=TjB0SU7yHXq*ez8-TPSZeOStvqm4v5O?h!(&^PI=*84y)PgIIoqExhxUr091r+K@^{hkqdg0v`q^o< z;Gk_-5(+%VHGd>&DfWi#_c5i!{>rP0NvqCR;cUu+cc<|4S~&<;6nX2kkgU#J93EEy zp|n^yuBKNG$6bziQ~?1!tIbscwn}P-)DC!z$EkDR8FK6m{W}?c<&%AF1l?2?=%oUg z`wyfqFYlN;MI}Jy*X>+XBke$2oPmvu)4<8~!YVm5r_1?Rvv4i3e^fUr_Jc zzcBRXzlgY=f%(?R;dUhzS&irr*m+pUWL=2`8lL)T|`LrZ3ElOhkm+mAkJDZ2Prywk}d#3{^eggd5S!SI1?zc#PFX z8R`SquCIF9%V7=Fbu;HGN+HCpX3M)E{ z$QqBSXdV8T^8Ahj91$i`$7481JXV1((8(SXpD#Q7Y!(WYphK_MD%dQD-j8jbWo*nPeiXy{k%f9gsHVEyxZ*IMF{Wd>h9G%T8KZ<%XY1YB?OO&_LN ztW1*<-JXUq?vH+aljZt)vq`w-?~>S1SNEM=&Da+7 zhJ$%aBOaegq&8l{K8pO5%X!`fq+34H+=sZNuaVJSIE%jfDJX09c-w+XlA!AI^ySZS zz`NvC0N@W6ek6W2xNBe^4yOMMSQF{Hi00Yt z|HUkUkWGA;pC$&Ck4$Oo#b8QdkE?qXYZX;Z54;72ZQj}oYKWHcB-&S)W^yK(bHDde z>aF0jQ|1aXG>9m;<(gA17wgQV8ZR_JwHOEO|4Lp4hxpB_&|{=oZ&)7)oW-*8XoRLOmM_p*=irlfyIm2?2+_zisu(h@lbAyzyL`M+ z_ma#rC6vNS~Xy9CIeUa8|tBzn=85EdXP6{~-7a*^;=#{Uy{7 zS)6mZJ)BHAF#(chKt~AAlEJDOzDQG4>7^RVD^7`f|H1sr%7lz_>tTK$1v8+u>EHS@ zVL^Q3h-rf*SjtwhaF+L_E{|-ydt$#y@h{*3*PkmT@YtmfdIaXv(LTNYYiIEc9rT|6 zI0u0U*@;pn#|-C3SbRa1#caDVsGF@0`5R;y8x1pG-wHa?&!=QGvnL+vwul_~mpA^E z@o#2?=#9|j5V_;Bt%*1c_01WK84A1X;d$r~wmj+<&f{)7<0S=%$CJ3KS^eay6sw25 zwn=Cc*bUP=|1k2AY(#x_5YOigk5<^5(gaskt@gYX?P6oLSO0qV-$Be3ffFg)Fg~Gc zd(vR*QW;rpI3Rm>5C}072@crIfKD&j80+XO!g7=b&vU(sJO8?wAbIgCI!+J>Q+_(W z2^XNI2FGK7Ni*^Sy3LozE|Hp=M zd=H$P%wrlH%6fwH`!H(@N6f`*3t1CK8tuXM8%c&JIQ>Eh*B>>3PTw@zauK znQMxm+jxV(S$z+x7Vfh|C$Y6FF}=A|FEN489cD8A`w;}xJ-Bi!_#ZbYmV?~t4I*Z( zw)T(Xw?k?pW=;T-K^X7bkDZQRQJN_^*KoSMb2wzsDU()rtK?K3Uf>eCz~Z?$Evt%{ z2Sn+nUV!T|mxmCe(^;f_UY@-D4IXGpF@vTXG=(%jm`?bb-RW9+p~(oD_7%OqckHHk zHOV~DK+V^E9^hM>&pcS%4)8h%^4Z-s`PTGirUQ#8=vOU)5tH4UguI_~O1#2p)TTXW z?EA+pTL`~~Mi$`rm0A$>lC;}aQ#?k7+Fwd0^K7Bw86S z1wizSRu8TpHR-t3FBl`A4%)(kFQQ^J_#VXaB}tRQyikG);6{b8Gzl3%}N>iNCqo+EP#glULMm>a&BMX zHWr%}w4+7)`bJbu_Wl-Em4A?%MboRYGV=JHQEP_lyE%E$%Aga3c94l6|~eD!?@!{&wAMamLzl;TZj$PWo>Iomr{p~ z`cV5^n4;#Qn(EGdU*yZ^h=}{X6M3mm#8G+GtUBfwp=@?e%%jZj0xDA zFkqBi7S1x@t?XI|tG>SM@m(*UtLjSa9J>9p`%=piva&s&vs$WlsMjC0-3|8|*hHa` z7O|=UNa-@EhBwV<_=4njU#WdWoh5)*GF~QiDBQUemD=tUtL?S#^{D|}Q7Ua72pel& z@mTskJ3J*7tO-j)j;6LZcpktFJ|7qExBrm7Tn`mbpZ7v}*kosa98RVtDhS%Kf_9;(Q>_L!Z*q#DRq-N3DX1j0MAEFnJClaKCjxPlzwsVP=LO&F^Q)ifgBfH^{z!%ibUHFP9ROk zlTlvHbX$$Xj2i(~)Im-2W~AIOjUUB`Pla6zM;22dw0q_F{Z7{rg;b_{zRyZs19s&T zlLQ@v7p`_IINH9!E-Hm4(J5VoTG{x@mMK$6)`n#|wRD!hy~yazkI`25G>nr=@g?ZV1`_~@5j95EaiYS-au>m^FI>e)V6j{N~i> z!}c)`vGq+`PjF6+BdT|fht*~ghr1@XrXdW^mWoMOi`7Ph*GgEKLg%p(<=6!MIbpp< z&ZyQhR)4c=8t0zJYlqRrt#nE{^?6LvXK`d#7_ad=&iBb}Jb5Ai=tq1El60PIKI{H^ zeWSV1Fls_)Avgrw?z7_&WawOL+X^%INI<)U#X4O{A9IDnWByEm^CJFYX8q)?kJ!e| zEG3b8IK#)i+daJ1O z(RmVsYj33Ny9%cE3#|3KB+#aZ=UE3;tktqK;2%ho5_KKojo!U7Y9yB_lk1LkZMbx; zPxa&d0Yb-)K8|-?AL!;TdoL{axY#@Oe?xXgn%G5otwTmjie{jN=gVX#O`qF_Pk*<2 zxHlJi^mq<~EZp#WZvP(K$J;bV+N)nJY31xwRNXrmp?WqLhb(w1)Y{6f)=n6Dsu~vS zYWmJW;5N#=v*%Jv5m&ov+lTqN&v8|6xp+(3zJ|pV@bX1E#%t8iAK5R2z$21~nW?u1 z41|6JW<>%k&~X-heNPYZ|eSpm$ioR%NT6@+K{{KaFyo z>9cBw**TR(Lu9mpCN~cs#j0CsIpRF%YV6(?-tI1in_qq$>^%wG$~Hj!=*=~f@uScV zF#m}3&eYn9m+?XU?>6F~2K|SOYoCLQXQk;ehcC8ay@>mp!B-$}N_G&1x+7+Osd61L z-aJxYa5q@HU%u-}%w4sDYm|{ zb!6HCq$`!{9+{bpk@jarF)CABy!Vw}pDg+BQ-L8e5 zbKaW5Gm656^eOTqgZ>_)KTN~^Wr_6LcAv|mXM+{J&nG=zvZ{uu{X7&zL?i+C$?qXv zrPWYcUyS;?kUnO@(0M^5QU3B^^2EjD#iw?0w2PG$OS`Lw6S>IEU=D^3pKb87ZyRPE zG9U9aJf1xl`lD|BRT|O57Ktzt_FD~?C>Nf+=41EwN0tT)n=Y{S;ra+Cs0HMg^g3=o zHG`6HE0y@I8pqc%sTuYR$vT!1eo|AjOB_S-qqI4-FH^7>TWE2|dOa58%m~PRcoEU1 z;rL;wAyRNZ!|8IzZ)>ez8@gw8a<)@-`i1>$+J5>~>dVURNdH^1jLo_blU3wm(Emf- zTfoJ&Ec?PkaCdhNPH>mt?he5QcMWdA9R_z22<`+6mf-GAfZ)LrJb1n#$v%7Uv$M}R z_r3eQci&q4W_4G0SN9rbRagD1dUY=7wrE|1*yU~h0+o!97)|mc#(8bZ;XOW)ghNks zhACE4eRvpOU{CPwt`$a08rFz+L3*wA%!N$db}|XtPKO&)bM$y7x6b;shq^*Z`Q%d8 zp~;|WsR{+PS!hPE$fePS36@MW$WAKjEyg4R@Fj1sAvaHfur5ec3is#L(DB2f+(h?9^`WF8p@4PCGFG9XQqOJ&g)+BKkjAc$d+Q>tJ7EiBbV5F-+W1p#E zCw2pp%Q&%jaXy2jwhfG|ihX~I1%Nc3jFcU_=RiU9g2ESj-k%;`*-5^VfR1&%tu0GOaEbatY>Pg3%EBl__W#5pZ9%+F($)b}=_k^t7YOpRbp0xZH3 zaF<*)PG1XC9$eVP$y$SdG+@`mPg%rXMYNYCeU>+gBJte^s;#YWNf+x2fZ1^MGAWk` z(`3iiM1wH)bk)+1LXKzV)lm24KIrfTzkMd=7B?L1hmj9!6q`@jT_Z>U3ZYw1i9MmW zmMYJX+b+Q87$KpO9zVBbOzf=xsyuAMB%Qvd$Cdg_QzffE#dY#+go3{HP$xGVwHw}x z#9k9k>6$8;X@rwR_UhVjYz{$276w`>#d$2LL2X!rfZrtx_{)CyzW;)bvx^Jnd?~!+ zJ`fTHZW$P=HdEX5b~;w$alnF*Ykk+vDVE7ij@<1CXKWd<3)(jmb1T zNl>r3j@zTwux8JqWSwXFR)ddIh3e^}pUSM^_#n$iARL7n)bYU`mj+Upbt5RrEJ1B& zDZ2}et$y9OMJ?aDF|fNLGRTFInitfc6V7!?m~@-0R?=c8Bs^N<>2LFjZLDu=w@HE{ z)>7n8RhdOPA$qIWkc>B9Z>4ZJ@8LWj#Ca{y=-SO{B3(yJp30r8LP3Th6!Hl_ZDqyW zwZ7kZyM}`7k(BRZ@VSjrR#tOwhegMpzuJv({H_1T8~xThBpb!L_QA=NSE4jC4T-&K z@~fNzv*tRfA$HzHElLcm8H4m@n*=4MiRqR~I7~7nE>g1gCNoa z#U<&uoL1gK3R2u7nH?YeB#f3zm=66j#Cs&!qpq%$-$ zeESWsU3=B4E{=%Q+gWQWgHXicp6xNi5k5YyYQYg+nI}JQ`dE2r5S_-uOILmXv!Gpv z&6I*efJRjxDYR~}fxV|*hF#Edq;w#q7vZN{6LPBN!vE>SwV~FQKiy^J?M_P$EX#l5 zAydIeDG48R_04XNJM>G`s+)+4(@W)YN(@U+j~Y1LNZWe9bD}JAUZyiV5&z>0B#+h_ z`hi>qycS15c9x)eD63MQr7K z=mq#?aah@ytl@{(t#`bm*{iuH*Isp6n(gh8_7~p1pH4gS4gD1mAwLXW%g@j7{a^}V zemz$B4#MpqM>d}f>ZK8YpeQW2SE9`qV;nH@Rf*g+{UQKd^SreAcx3DNRLG%cXzK(3 zyD!YW?du;kf+);)?Ju?In=_ha{BrF~WkyK9fLJZVv~(cjmBcoE_irP2i1h_yh2u8l zB(s=0wi>#?1QA5Up;vFawe6_USa?FkbYzqT1q8uB|J1u5ZT|3y`}GV$iy3|RchVoB zrk~!kpM?)Ou;h3^gTcNTumXcL@pPOmEw1>h$Jg^MRAIdq7cedY+xW@+0_($0Z@s4K zer8>zV&=A$jqjiX5@^;;yZOrwIQsi(jBf4np>CRr*R5dNCyWM7i){B-x*; zSYeo%BEk_sux;SC4x5(4TJvH@10V{P(Rno}>(CgOxrnAxMWtld1&vnY8|9(*5lK)Cn z4IAMgQeljRg~7AR4^0MsH*bMaT@CBQ*0_AzwOF%g|FWOILcS!^xoI;`x5$;ArZ;5Rs;%jX5tGkzOkrRZ~7Gl*-t^wRd@dSxer4^zn$<`EEBwy3v=$ zrTi8{%GJB#WAYXpgRaBoF8OmQNcIPHZ=g42BiLWrFd-tmr=Z>f;3Q)RaAI|rdCF_N zW~B%~9-iRV$gq(&kK9|Qcq1VJlgPpBI-1VxnkMqcTM*U(hjQ%Sf@7kt=D=QS@TBcV zk;tj(%jl*QTT#tUEEb`jld+*9vxYIrX{#;Lr+PrBMBe^9z;_dZ ziMub9V6Ts>_EBfoYobN$Olge3Av&&rg;If^^1mK(j`p@?Tm^Woe3>OFDNH-9RNw z=9v{&&5ff1Z^x>5Hgrk{Cp|2OnB;WEViPR3E&q6D|E1?L_`9nEV)x^34?WmN`bTEJ zr~ieLpVbMXdf!)qOPn^SrVA{vU`ybPXJn1%NX3^)%8=giaI5v={d`CSt$&QXz$Y;=j9WU@ z>9L>1$iejox>dofx5xE7uD=iLuc^O>9IkW;C}pyCre(mGBxgGvZH0=CarG8qVEoY} z(hR1!x~@^#Mzv2505I?R3RIV=MNHc(U)m@|@=CgC0gYXQ=H!)A-c?tYJuNNg+0J@b zc4&rMT6*)@)D(tvy64%nXZh~d+qd#h{yL=JDPKmtn?E{VpT|r;1b{q9$DhYT4jj4j zfYF16Cs=Soqo?iTA%z)sAeh%4uR6@_jKqwNYN0HD(MnC-IXm1R${u>He{IFYD;4mQ z#jh^^(i6HqmHmwNy$&Mch?B8X+9r5<03XmHVb6Ka!@=v87BF~cRAwU;iUM}%S zUh}xiXg)tkBlF7{t23wQzj{x{=j{$Y8R6+`VoTzX8!r6Z9ov%ylE{H_fov6NwoXM4;_7Xv4ANIE7Vkro-? zQKv8Od0UPw>)X1vY>zQTrMQ{YI2B`UsIgbiITK=|Jn?7eh=P0Yhwv(%4G9>T~LxtSA2S_N;IE{k{Rj(GYR$=3kA4ydIcGW z7Kg2(lcyu!q>Y3mM$fDXn)9q?^qgw;B9yX^|LOi9+FP>j&)i~}+o?u}DqR?|>AZb$ z%B@4~wS&^OFt%G1TN{`J!8U;!kdR<85JMuW(+Rv9QE-*Nk@M?XZmN!cuT}P3U!{6= z`6COkaWI`yX_}s$f&ZETfJ6LPPtc%5Qi(e*nN?{{jHI#LTWs1$)TdPtAS{wRx&y%)K-J_1%2ztTcGq2NaCQs?y zMv+`=x4lNAZIETztqPXdQydhFFm@VaT-?gjM+yFPZvdf4m!&bt^tp2Tyzi#ycNzIm z<$De+J0Da{u*Ae9d;Sd|c0KAoaLIjr*BY08eD&c7Tn)Sw0sQ$dj$h1bemPHwbQ4x% zc1Gr8dCp~;I;ERFNp_(Z_gd03QOK7E8bgZE=mWXaqmu&;r6_6wz)^Is9^$i+C*pVU zkS#`k3pV{=cV}^U1$MtmcFf(MZVHoM3ONF9NZrHIhZ-$9;H;SWwi{=^Y}cjAGg+<3 zoUE`|XjEz;pML!pqXj@-uwX~Bz6xKMW&&#Cmz}>H>hojoO~* z8vR#8{m?m9h(Q{m|OJ;B5eK_bTazG*+y>)$^VmlcOTqgK zW%WScXGGh5qrm6bYP2%Rs5~TON0vraJ^_<;DDUAWalqQ^#w-~auPMV1CwhC(SE!cf zvjt$}lANL&2Ahi}j2!o67rCrghCQ1AVxbSOtY&>GuKP%Hb$TmK%W_UD?$}eqWJbC2anG|Y4V1MCGi+Q=;bn&Z8<$M8oAi8 zGyIuLyfs2)m!~o~O7@?|@W-q#)_)x0s@8Ve3|;}0)4^=u{poyjs%R>8>`IWA=bHbq z>`rcsMm`e`)6Vwc3XnO}ID5IIFXnpq%JuSa^N-#AF%5Bt2@d3Ue+Waq0f!-vfpOYv zk9SViQhwZ7e6_sibW3?BR{*NcG zdJc_shGud;M2Dyp07izfur;82J|3-u`}Q@g>l^4ZXt)w1h?A1@;T34v-H&km(57E= zc}Ku^(xMi(eOOjW-7pY&F*fwvMj(gyOXk7|quZ75$M0kM#RtlN0b{`nfW98#oy~S3 z+3PRk@)}E@cFUBltGM%Y;c=gtOI{r9_2k(n+Jg$;(IS!5{Y7WrNx#rEy;ZEDx99x$ zq()}JmbHY-5b}0fabN-1{9{F@(b9hhZik3Cnk4dI9Kgy_IoV7Vq0z{HkG3miqHrng zs=>zOsn<6J5XauK0=*lf)0Ss#c4Hlw8}|9^Et%*GIk{|XXt*avUpfEXsK9j8@mm9- zMrLIp_lZwexmrb~s>&8Z!Jl#&ZJFp`*kB9SO`oQHP&F`PpNPYEO>atL%NMxOF*z3fre#u2VpS zxz;g8&lRFih;rwxo?QyDplZ9f>n?x$F#Tb8{@|70oM-?DDDWMb4wmFVfcnQ&cH{#AN`0kMW5b+c07y-|po%KZKysY1q0i^o~ zM{u$z&DT8c(=!nxwXDu2q^J?_eW@KP)U`5l?ODTll9L_#)j<@$|cxUDG3}z7IV{QU07U-B);GlZx`I;MYY`6h+inUl^jt_4+RrX=+sx zPT)YII$ldrnrWkw^xfl-IN=yx*>V>j;};{sM-FSn!pvG@bi>?fX%9I*F1AQSMp!^< zya_A*0=hT93mlrPudQEWWIA@--FzhPP*$WqeuAg&J)a&n!AnY<_D+8}E=4iBwO4zl z&$>{w+W!g?#VajciHZQbO)nv#bZSJS2>c?+1I`0LA&P)lqbSMCgyx)#mkuO=DC)B>)BXHaM zoWC`cQnjwW4poaTF&c~w zYp;C5WrK5pJK6Kh#|9}PIuX3Qct@tMz2ZRU@Fkn93oZ2#M7`n|T3=uqOPoBtOwR?_ z$p?Yp*Ku}v#pc+@LShPp_&jYrCq(Np+v}QgJ=L)KII{O7BlDQmy^f?n(3&?+m82eR zzQ_;>k;8Tceb+1WWyN@@bu-`kDDY0nl~YR}7(Z~(lX{PGO_l$>Bm<4S;5Wccj(iTC2ng#!u5Ke{FctSs5Oi># zP%9~jI^SASsXj+$d!nRXyX(KFga3{} z{$JzK3G``DD=J*j>D{nh@4Ct}IzA@{b%xdhUOaz%lw`nisMzwM**X>>f-L*q!|edQW}^L0VMJohqEy8XA$>eGbpW(Jp&HSN;lmAUYpm@ z%_mW#dd^ZY+$a%hHXz_FHaLo6#fqs>y9W~`X6d_BiO+^1bW=w>a&qwDqSfp}nWELwfcC0_M#aY8pU}Mu-7B0>=XOoskAp(o6*X>f?%--k36At#UAxPDX^tH?Z1^ z71o^I8IOyd5n6b^Q7l^BMM*bJyZRxm)rDY1D7@sZ%necelbf_QP1JzA18M*?%3S5t zi<-zfO$6h#{BMB3snW2**W=Ujgyv9X{r)dXb_am0GeEHHx%6UP6ncHOMWH(4RruOg z6?F&xxe`-ob1v~>@B3>lY@XN!WCN3FN^PQ2@dj!X&P2(PrQS-ueYiuSkwMLFTNI%g z2$M)w-4c~DZMsefh0;NGuOp}dO`-ezvu!cfv@!#~_@cN(F>>ZbC*Vx1q$7MN4?zU}q62=>Gi$}mWz=r~y~gNczwC45 z@#UIPWa}zE9~V>nJ^#nUMXnAI{jgfd2DMG^quC0|y0v#jxdjy@dnFBuoMK~1R^cU= ziOqN@|{ z>a-aHE>`$G<~P9EO3KBl;eph-(9HsWj_fIa&qzX}v299|T+O%w-{x2RLeeZ3Pq^+Y z{*;$@))xaReU7hi+q|iZtuNr!J0?OBk<@BU5EsqU$-z5R;qxaOi4IR)c29--mR#r4 z#X*m$o3Q~dwHjpO=2q%Er!?(xcFx?Dq#Bc&y1i4VuqfqGF%==N-hl|xUvqr}^hdvC z6E1U}g|M0N)T_TIK6y$U#r6dhH7M8qKkO{eAwGHbH>a|vqVI`(uiL!ayz5CO^VR<^ zXRW3Cz^_l4E$mh5U!Ax~sXj?~JrBdaV9F76(7337a&Ji<67a#vp3_ofs)}SlnTk}; zDuibMj|s}yGWWh!XLF-_AtQ%om_WrtxW&J-$powdB80r*uj**ZUJ-Dsyxle4W9q8z7*K{xjipKq(t zBE2AgE*4Kl19idNzGV4~mq{|5Nw~Ox9-knu7Dka)A}S^|k`5f+I-IzVF#|I29Y5Dv zL}GAS5R9hNk(F)*y}3rsEB-Jd?m*zY#Cw?SKKKkgIVf-Jri0vjQrX$;jE}uteU?~X z+R)=!q7rpdST0E@o+A((8ONqFl>s-JJb(l)QJv? z{Dfi@mr!~_r}Mp(0ZKeH;cVI0Z6;fh9=PWulnRCxl%{moplLY3y$!w}hk4_W%Y5RS zxLIWuptJdF;9F{Tum)?ubYJqUN(Se6IK*{Ll!I*}i%9Ll;ZiI98^GhDXZhnQYk^K_ z!;tvKIaRh^fRve9|J=IS>EZKY;cfLpBn6@?^s0BqjWpS@;`NG~+pQ4^RbL1yJvCXV zeD4+Y)JYrcK)z$wt)vZp%FAM2M)>8@2U#bMV)WAFt7#kjwaI3>(`B@VRK&Ff;Akf} z4zQazz)FkCS(Bpq8=(87`%9hiL4ph13}U>?Jnxp#Q2&VF70*_D0tHa|MClsp5ZvhSppmxsM*MI z??T7HtHL6mZuMIGM?mLUR?TRud0KxCqIR}T_H>c0@V7l~k^9)oIEK4svkc{0+J%R1 z->;Q5&rH6TVJ%nQ{YYW|x!@OBwdXD8U~Ye^2M)aW&dUGwoc2GMK2%YA{`P0psnXoSmr1*OP2SPWgUq zh=4chUg zC>zy*3X`U;`Ny;^)Bp&6ni}bP;1|5sb{wbY^kUb@k=5t@yf8q*6o0%4j=;l%Qy;{kYW{3^rT47mXnd`W?-tLG!wl~o zJ7Ec^xO_ZK{D_B?z=k5yQ_X#F>@DPNO)UtoOw?Pf2mC|F=G)?ti?R|j3Cx<;ZA+=b z^%IJXqLF4M@A93jk|=S{pilxslwutg-0>5 zvu@h_9>V6vI0D`Dopp#3xvWc-t`3D_8Bn_u`<0*H9ODeHwCrsY0xOY+*S79S)G@Co zov7wrhTS^R%nNOd8vULMRuHA-mM)XUVwKhIsJdIfcg8UQJ!d|Qs9H)n_sXdILp>^{ zlSf%}oM?}ZJligk8%UrG13@DK8ZeN>!APuxYpHBq@cd)8qtXJsd5~m!;UZNizHN+& z!ln5^wuz`dA~8_3`{Q&Bbr*YAs2P2CaMNRbOtxfp2~N?0jF1Sa7w*wk8Ok5EUC+Zu zUdf54L@;59AvH+W(B!12d)y%K?6YSbH-xr6Ylw}gouGat>$by=P@hL2Qd1_L1j!tu z9s5%JRHamg8|tn~xqOl8jf^EIz;ukDJF{MN5VQR0n0QLMO))nOv$lyMN9ic2olOwq zg}o3RF4E`+Rc1O|tf)wd9*Xq@C+VgF{eMAtGG^5J=i>TYrC&7`x6%>d`6pK4{au1D zj{i*$|9%XATZ2VmYj>_kjx#I?KKb2_q?0qik z$)z5B)H))ajv|VEIcK0AO>R2)xXO25o)?3ypUCX8>lFUAfoThyqz-6+^zjm4btCzU z%tXYSoUv=dA?(6A;5(IT{48Z0*{2FFZ_o!oh&FJ(OMj&%P)b0uSkQTRk6%jC z*y%{7k0obyOT6{*3x!s^`G#3VN`vl#xNUvy?2sPQZ5ibiHqVAd z@!2_emnyTV=eFt8Bt(}>669@?-vGh0bf94(DuKsZ;&7PdW!(*T;JILG2>*r8+A9{l zvy-wgoQS;_O%BoIiHw}gDz)m=?<*7zL_H=YJg)YrNoJ9GNf3mM5$CgQ)tmKE;*Wx} zOGP6bB!de`vBYIT!4Yv(RF?zn{;I-mAx$|ycE9yr#WDa4X}4X)8S0 zU*ZyB=ONG;R7(gEuqn<~a&>V(1*3g6lcuQFg&+d^;(7=Qxz^4d#T-;**-mDk=QTaueNSKFOP)% zz~p~q|6KUToJid2AG6>V)BSfh4=tzAum9Zs51rg_@y+i8D`I2sjGC6wp%*?AoYtHK z6iR(XcAod8I-HcuvRp{w0c&>I;ZUvz1a{h^ceMw1ai7dngLAZpF?W#By-thLQs-cp zFsGp%SJ5D7eb;DDMw0r*0u`Hfl)4kP7;Qvw=>`+ZH@38`Nwd*7%S8KNZ3Fe69DSka zBc2c~KB&SFw{=`l@3YefNM2dNxn4q|3-GL*j%Tvq&!R@9R2vtuJH67&c`{5tpJKxW zsZRbDZ>}D7jL-mwSur>Vt;?U2W|t-U(FK!7opqh0Mqd88{v#%v%X=bfX&-?~ArAFp z$B>(k0n~@6Zvp6ovOsI0)iu?4+t71n0YgMC@=|FC?vJ>ZY3#{B;awd_@Fqu2S{3l2 z?jL44L-^ zlI%W`_doFekEepbO>!k#8DSwsc0(7@nM-LE2DY$m$iZea9}t?|KBj5Z3d1Irg-tnR z^1RimCodbJy0c=WC%)i7^KJUgMk192QBP%j3+tPcU=Z~#j^tq42xAF}aR<44orxl8 z8Y&rPt{{ngxs|YvkHt0G0uY~&oRS|qUFws$lc*;hI>K35=g3YC>`;n$joE>B*8zbJFY62s1dpX=sc^e^^fs{{G}m{H7lw zScUK(g8sYk{)G_#we%l^v_Jf9iuft^3xCcOY5zoj#ijdG-Y+%&m{$geT*Hm4UuL1m zw2zakn5b4nkQWh|(y(s~vR#JrO2wcX_QDmP!5TpIL`vB@8sO~rzS$G8GbF>CYrNr~ zuwy|Ms7ZS~N5hRns)QRa>edLvv9S@;{YB*4qTqL9LYYNRaSJ{_ya_$@=dBJ;f0m|SoXRM zfaEeC2RiT?o1an9CZ|gsz<6zWcgOeGXx~P>Z5x|ykXcuIW+Lf{%SayYA>Y7-n$A@> z!hqVJXjIj&95Wh~O_Rkk$k5+XZ4&T5aTR%HJxTci(hQ(#%#z!ylo`u+M{G&k_g z??L(9fyuvR9|ZQ_Zq1A>6azDtauTN279CJ@vwWz4kbT9qOt}+@N)L zoBI5Hl=wM>K6f`jmefO5pw5i-^rKoO@6<7sryRjJ^q_Nr4bPP(LD-Hsvh{e)`z10h zBmsRa0E0^`jlIq|o>dqw9no}{flHqjn$1So;BoeOMA+xLjU|;D6Ld%s2S-4hog?v&JoM{de zQ_KsSIvf3sC%5U(XZt~KuDaKiXk=t+*-W?;7K%U#fokPqJ>-He~p?1ck z5*Y}TW)1Q0gSoVOCHtjEd(6LE6*;ov`d7Q0+0`dKQg!V@<2UeGP$A34E6bA)I#j?3 zJ6h0lBcn|!XkPbG7Y{L?RNDj+N4?Fw?Mw&IDs{WeprnUpD^;ujesP7RDQ#&n)I1&kC_0_v81VUROo`{-SHzQR2()b_~ zS18Oh&S2d*r3%C|Q8@3~LLRIhyg=uVCWs6-ng#si*s|N25(R^ElUT9GS+D7QXmrp! zY_9zol<@}4YA^!Xw0W!4HoKAsDCQH)^(HB$!6Dqs0$lPQTcFWLTRhtFeMAui28!}B z21y?Y?GSEsriNORW!D6wCKOCqAU?!cxolN`-7&#zqm%Q9dHNu6 zd0ob0JVc4UdD`WMY;RZ(sSSx37!X?; z_dRlWhZJVtf!EdZw39v=ye7JTzHz-%MjH`u;bbhhd-3KQz~tbE>A*``_}y@L#NYlW z17aHPhgI-kZT#6R_~+bTO%FB7uiv@L|Fl;A(c%xC9Q>SR_|L+a%ot2+?`gZJrtmEdu!_>#>BNnJk)_G6+*vtTLE^gS2Hf;U0y!~+#YZ9Ww{ z?SpyTxGulm80YmOKeWb&vU8r*>;>(L_QV{~F(IM_0ZzcDm;pu^O0F)2@fxK06O+xe zL!)xF;NxSYqPQTFLlYB9RHSjLV{zvNXs^;yBJ2-MX)`>JF5m@xGFbaSYS!7~na>Bc z*WI1?ArFPeR)n<|IS-)HdJl5wMWs41G~q*NAJbzmk%KA-Qn7^YN!N4(WDvAVR>GnW zv2RU_DgDsxckn2wq@`*!U&)DDZ#f;=x*wyK&Ztgu>|x*#grv)2E3k3`1u|kHaHH)9 zI>l14#xMcNTL@GMs7i4#m0DPz=7}KL%&{Ds_^>JD1s~v0_$104AW}-!Mpy2u!CnmOpC`qtd>E_pD5CA7l_8^U4|4?D_r=jym=Um#t=`VYV40cS0=q?0zE^ z`X<;ll5TfR=$1OK4XT|*s|;+*CKI{@^tD$=b-^pvQCKRh)}{O3CA+KKz+J@i$VhJX z%#KA`3hFbTzsqQmRhO~AC+oYOxGAPh8_%ap43?5Cp+BXTdVv>0o(43!k^8b1Qvez2 zF?*21CMwmXsQEaI%z~cG<_h7s#E!e~Ml+8>G>2Ksc%wzaosgb>ZmtUxBDM}jr9zxo zTSGhI(@czBKoUK$2h%XTEX&}DW1@19yqk9=DhcyWUz|iKll4eO{KlqbBmxKJ>JtFu zfEL`^4V7jH>uSf)*HBeQsg~B~jI!MeYHjrFp{goY=7{XF7u^f0)wgeM4wg5Yk)~8` zDoivKwg*;rs;C7@Xj&KEiqX-+rG7XPQoCH8jhk1=GHx++Y6&@W;EO^DVyf?&vhM76xm4vcfX$s7H0*036_*0d85uI9jPrdW~{D-y2$b3j5cM2KvnApbw|0=L z6ebtpTmx(FYfHSUaY?o4-8Q!jY7r1Nq`g%{dQCFXWJV61EQ@!NpJgQS0#oWVQIirQ zJ=rjv2SCavYD-9OLY1hb92gDm)tan9=rC)APiBuRy7WRDV;l%vknIVUq2D4p&aM^m zTssgXyqvSek{8PSQ3$TE!r5vyEYy;h*0tMe;{k5Cq1RiW?Y0Ef8>aA+#|p;|xLT8q z<4i=)5V!s6?Jr#k5&}_ds|mW27SEQq-fu}n>&V}EzmYN#!*VvY^3AK1#mTYAT@7Wxj0hNt*|6mswMB+k#7D$&dO}Ti?!0#X8lU+JaeHAaT&?=BM z(SZ_)tup~L+|My&!g4JDK>-iNE-(zQ1xnlGKyQxXxljVXx5xM{4T1X2J<7?Edjdm0 zyVC>aPmg!Glu*`N;+UOyUoJqR)A!tm9i0f8s*iBcAa#J*pS zh8#9ATa|&d;Xvn?Z-6>vxg^_Uct;yGZ?qha1Op+j2&wuYMX48Y%SM8UVi>9eHB=T} zfsr*4xdLf*2rgA5lN%wJj>1z&7A80x!D)~N6HC|_Y3~UixpmGwRwtH;Au>VIH@MuD zC?j|y8A^xO^hI)bh#@+K=7I;U#_m`={y^C%0-QU<3xicd1R4rhDFQ+RTlkVe3HzyiWKi%}XFD;~r0n1-rK))BcO z#22iyuZX0-lQv95&5?w#JyaV^Dj;qM(Kapb^waF>>hJIe`A&7vRPnPWtz2PMeeJ|O zFMbv@%F9;6uo(`!Go(a5BGgfp^LD1nkVbY~{(Of)aEByBX-Q1ZoKYeHz=dU7^m1cE3*kYGgWzY z((f5~vv101{h8uE#&li|wuS>s`^_p0-cqBb-O`s6z6${=R}kVg^k{k>(>>26Bwxs8 zovW}R;RL-l$URv6SYvmqDdABbN%L-`|Bj3A^V)jDK#JzGu|LD}f7P!4Mj!v*2KJlL zLFC?dL8dcvREy2f`-n7{Co%IEF?5RWWlwn#@=V~J70NyJ(Cl|UXYWI~^HLQVy$(AV z`)4WNDqzZ(MCNb9v>er`vXw~}m;0#VaUJ~n0Q81T!5e;UjzSMwKaY=+J!AMZQ6{qc zJ?Z&KyoJ_HN6lg3tQG>sVziUd!`2X19v$nK7a^7=n^P6~I6Lc-TThHwbBe`Ch_&k0 z{a+AyY;nCJ(`=4fALOZJ``1#w2}*a?I+Ej7-=I>9lz`r&N%ZbW1mhxX834D1w|De8 zoZ`hd0K)XTh(}&GcfdOk_Zr;SVI~au82qOQ)n`ZYYoP>P^B*&7@oZ3yI4>57MG5@4 zx{!FHpmQTLXVW&hLySSyHG+E_&_fK8)OYE-t!;dlCFa#9fox6qRT^euDFZ`$ueWW? zJ8Gnd_b^r?|BYO(h*0Nck&e%iuay{xA5T$rG1iN>*es$RKJ4pavc~i&34c7;k~lCh zXd9iOANci3j3eh%+Hs&MH%X90|BI;(Je-iOb&kxsqZvFL-~@u&Y8%6psK3$N^44aQ zvQ^+EV5(o{BT%+`)z|Az+yXqE)(f&L=l&GNwz%)^Uip)F8M9%F-z0O6qFMyA zt)33y(La1!{9+rPaMhVi<6jc*Rce<}2;U+wroFqDyHjg}fWe20*gkf*c@ZOOM$&JV zVD29a;)_vJ@Mw|6({omNr{nf<4k5(se!62Z^+xp@z*^7AQGXAyU)ezP#R(Q}d|qn^ z^d>C}`BP7X|0QCx_9V;2>xIaSqiWDmR3{5uE5)xaSlL1_gGXFRHJaV>pQtbu z9l56lwMG~`&5Ze>m&XOk<~%6qrhKDTJYGWIb@l&aYQMgH_=|%JWT1}XGA6g7xqT^Q zg1MJP#YwWWB;-q@Vh=rW12TYURqO))xlKp*r(8iRA?KwkIxEGs?X0@g`_Xl_6-kwW z#mHFaDHgudXK6S6^ZbyCW8k-a{2A}5B+`9cim=AT%&r06aO9twKEJd^ ze*?F|AeJxg&W1*W1gYX4{Y33WjF-K(WRN62!gzRP`T@ZguQ0-P8p234L|P|ZEqF-C z3p6I2x(3OL9(Sy@xW=NBdWh&0J#<=3>Y$8sA$eYXP^hSi*nlK`&!l!D<9~u0iFT0F zZc_2eQOPKJ$|y>n01TW;RJr{E-S@)jrVKqK37|!amBq>SU<%v@Y+d>&f}x%FjnCB)Je?`y8?r z+3)>|swXXum|gA6aZ-_KJ5N+!f+JiLlmR$_?lH+iB(V|R>Vz9dalC0D5EUTNm9aMB zxZR{?z!BA(@T0uH)e|?C;g zCzzRn#|aCG#Kr>;0Jv3W#>bI|R^9rKm?6GXz88J(o+o^U3U0C=BdJ_DWR2g|af8~} zgMs0_j#_@HkLBC-9w(Eg8hy*!p9$?sMlBqMDD0ld4T;nriNBQm9pM*Dz*S%EKX7|U z4E;=CReSuntGpp_cYQz*`KoYmUpXhw0Y9wE<2;5sgB2% zW+`UMfN=CwUE?r}a3uT~&6&eMEnn=z*>jMo7mdqv(k+6}M0THY>Qj3_xDSDtZ;rWMee@KUUbn`jgTecP2-^~0iWatttIk!V z2m2^!C4~dGOffuGAlYfADMLZEL(9{S=tHnYWR+!C=#3)2UJLi;vUu_fvd>k_X1(c= z-f((>tR(%$l2;-+!mf{8G@%^yqtmw5hrhx<_D032H`^M}59!wr8PxC9A1zC2mP=}8 z05vlt%-Ffr&(6u)#|?oCX2Iv{LH+t+v%$S)M6XR|+09DP%`^S_!3T2kfc~3{4u#5w zw=0cI`(BH?k^5i{U{>+qy1+9(Lyf`jUGzWH1pmE$-uwP$?aOQ^m)0>Tka2Ch?WvC^ zV*hNRGbsam?{i8jnS;lL?0KE#tEGFJH7^>;Lh)bp`q?IMoFvkgZBo!@F1@s<^@w6E z@*l>aZ+CyYS=FCBA*89vy3>DRIH-`Cme|Ql z@*a_y&D19$Bb}X!^>q%%mcUCnM4h=4wc(@~&Eb;tQy3TR8V1ypJn7I+E)o^^TjobK zCYt7@s~eAWxZ;hyl@%2XD_jAZnbA-LKbD;RqUpbAGf!x9bD#FXs*$t^i zr*sDPOOASb1vp6qh1%A@zr;7~2}1Gr({1?|xm&_j9=;`aWcRX$u-D2rN_Q|fR~>KK z+j_1ZUte~#%Y8&qC|Wa3MWhNh3H3>5+mdlEXjauv=lhu`VOCG2mrJG|1lh2;4TAnc z{TGBpoy5xD8vkA`aUt<1%Yk1M%V&S@{-IYIS#B9v97$L$E{!BcS+#Sdj+mo99JyC! zGj11;_m*)bCd8IX_uk%894!A(Hi2*@rmPdAI=L-*kIvLQlIl)0Y#$=714f_OP$)K_>own$-@50Tz zZ-}Iv->Y`5@bwPoO1RGVreo3p=tpY^^8X}U=Pmr^KK}l0b$>&+D*XPQ{ramzhx;Y> zqM7Lvp0+#T>%_KIANKSC{OV+7b=s+A%tCm$PP9XZrhA?|B=jN0byT>jz8E~dG+rmBB$BvyPUiDN$X|0C}$fa=(`b>W4( zySux)ySpshogl#>xVu{d1b2rZ!QCx*f=h4or0PG)od5aEv;aVj+9ASk7Bz|J7ik2BRxaO$AU71E%}zMP%+f^mY2{!9 z>^5QMNH(oFxE`w~g#nXLqb-ID@;*cgKeUJHx12gYsi3Qtx$5{cn5;%PCHi?wEScks z)AuV-d2($S%0tRKkW@%*x73%l&b&i+!-@8WqtcsMrMyyy#Fdq$jTRM~*O;~pZA1Ny zQmt93c4p99+4b`N+VEYwAAeco>2L)4~4W&9u#tU%vmbO54AptZP zw7Y-o`jA9Ip0(>)FTpj=1(ZgAplCs#HO#OXCsh=^nWUCPte6mgNCm)=IT;3dn zL8Aq2?)#2-PGP4FB}Zj-R!&iLGR!&q${aP1YB`b7a55`nDJ7Jc@f^5B}BByX&}sL)48f?qUe0KyQBm7I_4=dajr#X;~2ecgSXdAbWITA#j- zxi5S74C?H;+q|U?;rVyPC$Ezi5vv(<0aj0Hw<6o`Pk9<&$X-hCdHRe&`9S(NkWqn@DBqdi1G zL?xysT6p^LNhw3dkjTv)+QSgTKc+1;Z)MG0E#OVpOu$k_z|yL5!BOEU$*d=ZzYqrd zK~`r@h7?Ly)RKyaq0rt%!r{4BJYD9GdJ!k7rVh?OfbGQ>!HTWH0-ujH1Us-6<9|SO zV(K3Fngev%84Bm1709D0WkY%&6vQ0s9ovNX8(u@m^(czgY-{gEws+>8p`qVBCx>1YH)vg(LD?c&`pG%fuf zh+d8Wp_l7p*+$B8TJM;)Ym$3&%6OOii9Be{P(JV_t3JQbk|^h}*fWoaQ49-aMaO9h z+KmHq-K3cYG}i}o&%WKwid`zLtrSY|2fP}Cd)IC{atkF+eRNJFU%On4TXpqo9(-ehvV`5rD2q??$(arQjKu$4d{0V}} zs)NSI0>j|FG#*~OY6Jz^#ZbE9VHd{ZLBV)wKgjvlbiT`RQ+vVDT5vb?dG@L4)RCI~ z<=S5-LC&J$DDvf(6{Z&1m!^IYc>sWI6%)Kt5lYQ-zhTmyK27>5G6``wf&oJVXkUFi)+1 ziJ7rd^pS$wpix7_I(h=*ilW~=maR~x3brf@z7kdbYHu+|ufz`kl}TMcX04zc8BVWm zbhywMP4ARPy9Y*u;U=NUXuxCL^JVjv+0M2C8F07`A@O6+1M9a%^Y|0h!SVe1D^&B} zsJoe)^C++!Bj0LxVYX1(^Fw#wDXwrTV~IDm^vbHVs^ijN zEX4~7t0HzrlXqvYvmj^T`xzA1bzWSr8|CpF zvOX642lGnOgOW{#S~?@`JvtB$9jvv#x;ewsy8^4%Y)YIl`??^HjE1y963N!Wk|)Z3 zP=)e}^=eVV%r$lIMb_U$Fi=j(uQHYFK*x{!~uZnZfsud^GRx z>FWPBDsP-VN11&ZSqhGF?tJ&2;?!}2!Y9Rc{(}=xtlj*Dqb8=XCjR3ZkpOdiyPF{> zj(2naN;SJAHM?YA8dDSh+0dii%6(RV|J4209&1A)4!65gckJ5~Pu2s7f6WSW!s)je{h<##`r(=V`a{2xdPzgapnP6+zbfzJ`R^N`w4Jg` zCAYx4BeOUM`ev6%?LoYy+gyBp8ttZ+EX|L%TY_?=9YD?uk`+|doJa{oGx=PeBq);h zn>~x^s1)j+)e|UqSB$N-0tbBnc@dT|G6(S|ZXHTLlXZw*fmORguf=lp0g42Km0WI$ zK?yuMl|hA~GS*W3w0OWygre^OD`w zZN^4Ffh-K-W%Y`nMQB3!hbk3h(J4*Qr7Nr*^;M^Y+iFqCFhPTw{$Y>kGj2_-+G4#~ zder9OOgtFUX=3D$qR*+XDKE4?0pcRIuV}Y4bD&V6@!hljs?ppn$!gwQLgSOlq0DlC z|M|r)cR@2Z643t>pq|EO$n{|uHS&)XKUWsM)yT+f(#m}Cy4Xr$7-Bhv2n#pkl{#s^ zcZAM(R?bz!aa(HX2LB?J=Fpgonkz>=vO_!iB?5+}B2b3Lyu&*xnY-DY?{Gwe{mE|STkp#0iznHl|A18wE}V#4ly)>cKrhd zgw(_xYPBrAc6;^Ytit&wLc7F15}g7Kxy%IKJj=0Cat7%gaUWT>ZI{S05FC>09K9j# zO1d-VOI`IlU&IE)o#bjCwqZ;r2A)b5@{>uwQ@U@QUv?RJy&=^{byK*0G{j2}n5;n5 zy{9lO-gRJW3s-WRsI`c)8gS(%ccL;?ATtxo6(88zJN0}ZKrD2aRUKU>e9j5?HsXw! z-8I*q5!Rhdfbj1b~`&}74A=6nh%I4}#d%wvXA0g2Z zTx;y|?rCFy4!ugJj!CYwUd7b&!<$BtGGd5p6!QjBy1Ix}{Rav?zjc z;5q0P_7#hR`*fzM7~`S@9kUrm2pVvdpa{bv$H#P6TBEJA^j~uflww%kY#u`C{EsR_ zF~vS}31*iJ^+mnYK``z%2ud-Oj2Eb4HEDslKE(4PkoO``?9eLSKBXA~+Gr1F?r-Uy z$7#qL2oUjN=h%?X{VS8h_HQ>aBR~WF`w)6|7z31e&vLTM4g(82D+3<`cIOM?+(pVC z=$nz-5A??{QoatG`+p%N7u{~{5X}bBe`jVEqpFxIu|%0F+b2aRHVNRg+Y3!I*HAP?tK8M>c3mfEMd{s=!rd zEf66C@rzGi0kBH?6cVB9RIAX#=&f=0$UY-%BX9FAf+Lctd^EuWlP?Z9 zn)d_>J*!60a}IF)UQ$~)p+;z4+1m#22#r`!uk)j4<^})j%#Y8ut@TuCRtq;%a^BwG zrrG%L8ZoapWG9Y4ceDzY)yL4~)q2F)`{_Ne98m3GYd5UD!N0v4m;lk9l}NG9sJp2( z#>O0c1;c*=3Q?xo_H=7gC=!Q~Hg*S`SBM_sgjQ~|uTR89w5nZMJ>4FD+57SnAmfd_%`~8V&hpe#ps%ud&I03& z-Vws{-%Th(d2_U%IC-a~wR?dCaN3L)r81Ep-B~S%RZ#{YVqQuRGVb70lbBi$RgzAl zpb-r5c$GW0BAOT$$Hc%7(Q`A7ef&z2G}u=qsKNGKxGb^8Mjf45 zrsb}2$@$E%m5zwC;y6f1R@!!Bg=H_H%-+L9G$GptRrh^^5ID~xE?2w~5@q_hGFq1} z%KRZ-8Av7^mv1%l=U@hsE09datPAn`(tKXN@fWA;z~FVVHTX#yp$^qocM|UeqSvY5 zJVR*j^zV{6)$b_PobfgZ9jdLc}(Kc@>o4VGJ~;lzzW!ak5m@U!VFa*ud^{>uTumV0L}QVV3+Y z^7+BZFGGH}jlCx$isCK&Ud|z^!RVEVCn52MmOx|bbGgq09QhuCnTcR!(iNpE?vzvB z!+Uyj^3`vK)u%?gl|vp>Y(Mnn96ck(Qp&5&A{t4Fj!Q;UIwu#3wB29A>}9uH%_Cho zAQx)$`%M`pqu7OK>2YUQs(0Gu>IPSrOI<$EHn>VO7_s{>&ZOD61Z3n=CK+*4mYbvd zEOcA{&*G<<;+*;ydQuk5D0|Cyuw#TCTLSm*N-lp;c~Cy>E{#kWWLZ5wjJ%ydceTHY zu6IfzS$Pe&^^)6*?G<*O1+js>qux22%?gR?AYB5`|7&(qHZ^xitucs?h3z<}mPGQeFDL@_{tP($)b9D>?I4Dj+}BP<#A?-FUMjpS6l+=&aChcQ}2D^;(m z=0Y7Z>mMnZ)eQ1uTu!?b_|9(@hLHK7p>4ZVQmK>HC?q_4U+x)!{pCTNz%e&Aki_Oi z2N0t>zm4zD>(4zBgg-Rc14Ovl1b>n^%iJ{g%4~cJ2y+fx7?NUDyk^-C&Hv} zEI`UiWc%L0JGdtRHsj~E%t5@Qw!qW zdQEuieh|L!Rx`)e5HUK%zx{56lFpIN2Qn2tl4$2cTDrf?uLAu(*Gf)A8fm}4%K-?q zwciyWp;Ul&h$>{Ep>ln;rrV3--k(m z<^fLGUtC&@x;&3cfUP{)qkGqKX~)Qg=+G!7WK~35FocA`%Iu26IrB=eG=mJmtUqs^ z#FSC;axAU1`LmTaNaG3FT0W_bH`CLKnrjrhts5{6G+on8u|~y0*sOsb?E_rZCx)fQ zV6M<9v%grZz@OPIW`BuadzVNdbcV8na$+P$PK z2q;hL&-yNyiS7nt=!`<5*}Lb|>f+IZsHMSCjv^r)9YnkGSBT$!=P}d%L2CF17daLB zcM|fSDae1f^;gP+27%{qtYt;+f2A*{fBLU!q2t#-u4CCQ1y5r$#U9(8fAiz`#lKVJ zuJeDJ1Q}W+3SFRp`yD|uVyrq6F-44*zlQXfH9$?{kGl-^{QzjrG>f8(bYCxL ztG9cl+jriPwsq$3TVST`P|WI$Bm7Pn;0op3*yFyZJ0C)R-{)Q_NrhX#hX42Y*+)pp zYPLm_PO=AZHQY%45TTDd{j|R9MQFN=kZ_AlWPJ!v05UG$`-4TC7>}qjRPg3&Y+GC^ zYmRPrOSz9ebAvixNe3!=Ld-UZQy|Hp^to+4COV7w>aWF2ngiiqMCJ_~*??*AbFs8q zVZj=hwyzWahY*^5az(y<5rw~s+2DP{mE~^`8ptE0;}lU5bW%(Tlv`SpKEQE6AKD{b zg(n&9$Z9){PURM$&I}_LaU9CXvr|GB1we z)KNPtds55xQ*8XGrj6ffKq}zL^>E6CCdd2W;+LR4HDSr@_DQ=*KE(jF^c&n!5)m=z+gZB!uL~@4k}_`L*~N;-JGxUW&A-;+S?2q(&PnO4fcrdnuH;u;4O4!O8DzE z28`Qr+TAa>{_edDRF@*-xiyh~`ADBOa3z;VL5!Iyn-_Dt=q*_=F0xrLaQTG+FGZJYE^6q{}64Ct=%b~g-%`bTTJ-`-v2Di5={tnmZmoW^$H!VoM-e#bT!~}IB{2hjI3f-P1w@|J`z-+{KgR3f? z(WDV`+4HMf-uR2FPzV(=nxHrajD!Vy1B=DtWr8n|-d}bf_!wZ)l6@u4IwNWd(`bD2 zDrKvVpBW6PH1%sFSI{}XyQ)`!!tHi)gvMp}SQ}sTw7`T?O*YxCZwy34IbF`7CHZh@ zAQcbr|3QXOl6jWZntmu?uAzLztZMyzXZV}#+;Ue9K|KO92!oxeci?8Cee@kK({ZM) z;tOU(+qAAKS_{GgFqWQ4Cd}iKh{vy^|3=>W_hP;1Pcwa?WX>~-mR402{0YnA-#@s_ zc?naEO~*2-vIR^;kWhqj@`u%jx*LvYjV}zh?!ruP5P4S*tJ~ZZ((> zGp0M^(ADRJOq_9^>wajnb{ClDb+ja@OBZEHrckF?LlrBLi@kY%DUkkl3i$}dMUTRgA|#G^P>yvl45KJfQO- zTJualPo}XYIlf_Dybbzb?vR!ap?{*$O&86F&YIvpjba5#G>EknAX~Y!d$OD`=*b|Y z5K1IvQdhr&CV|8f!k$=?gX3%hmQ z^<{X-@U{zp;^oyNJ?{jLIZaJ=ithumO*Lw%kSHeCrjf3^K7eI_JP^ zYSws2KA30gA9xTBzB0QyYXRUz*R);d2yr=(vXHsAykcMdoFg z8JaM&8ikqCVy8~sBAt8(oPz3ld6s;T8J-TKjG(o+Fl!vlpfX21?bLf*8Jq1WzNOL* zL3AaZ;oM#%$;3=s)Y8j_QwKSNv}2(#6Z9&l=O6>b;iQotLd7?TRhtO`i453OR?bgY z<&do7*c?A7&8BI{BXPFrb1f#$(=!ZDK0l4io*{5wIa?BjZs*a_(7F~u0WB?LqACVe znCLQrpG_JO_6SGQQ}c~!NX7BUk-WvlNSG+*9zfDh22@O0Soz7MTMUMpXR^_r)ROvd z-tw)isQkD~Snyp1+mEADp(B@>B>Dw_reshLF4aX^kw=~} z@oe%PlMa(j1@yr~CEA2*8X_gf<|`i@Pk7|}^RPQd>C-_|Wnku}?U#|za)^6YPQIr_ ze!MG>88C)>UQ`;$aULq9{jB&ys-Q9?-;W9JE ziwBAz``D<703&Uam|~(y5o2lA^~3>YM8}ib#DbLtfJKp1yUqY+vfM!qx=Jpwt`wL3 z1?-NOIFtQcrN)R%Fc{C1d8ltCfs~|4TEFY{|b=5Po)V7zoPUOW0m6ma4{{*CUyawd8pz zJ@}Ln{tvyJjnXvrK^ev4rHsaZ=t*HY=7+(GZ{=5wO#(IDN$SF;d3TB~{1npiaCJX| zWH+;rg=JuE+!4%SkGe$4hgF@>x2mB1neE*8Memcf#H#QVug!JUYmGlgXg2tn?C_Lu zt3<~1;VyEu6n=9C*M3cfURDOK1a_UlP7kQc9yy3i6P~{ng0m@ye)s<6g{{k;!NUSBf8domYko z$-Cp=MwD?A4C$UlVsB|igT6WYzSBIL(zq%<25Fq6GDQVm)yRy10usKifPIJZ*cf{k zkCwWLodkjFq+Htuj&rE1ps(bYAZR74N4j~HXmVkr5+wSxo){)UhChR5*C$!IroH2K zuQ{B(YaP;zed&=A(-aZWB*|!47xNq3dBL5sUCsX6{tiPBB+Y_ji^~D|6JYf}2U4#J zZPox)Vt2^VG6uLEYqr_-7THT_gpJlfrQ78!;y|X@xl^hS=~xJ8JI?3nvmnOxFEt?) z+x6#sX0nj5w=C5w$fXuKPdFwaG2C8mg|0v7qYxq;Qyr460~MosZGX1l2Q+ZwDla+D zV17kC;U0vlab}oc9cX99cp)z%pA*9WsuU8dCC^HqhCeOxV*Kx{qkLIpCw$@m0&Or4 zg<8Fa-Av@$#$yuY?3&86Bz{yNi)Dwb8sWx?pqa;k3I$zpv+y|z@tsFuxy}OgNOGLz zNBvZ;zE>8Ikc!24*Q>pi!9HW)yk981k^XoB?KUuf8mfjZA8F6iN8&C4H-ss(%c6rT z)ZN#`PE)B*#GvY+x!VZ45z)gl0^9d6%snQLFeV2>K80&6sI*Ic_7K7+7@O(Z(6jA$clkV0iUqh)%lSg!qGBr7XE$P%&s?UA4fa;XQFNR(PMsG#=%)kd&#!z$O3+lXq zA~*RDOM;bHR~D|ga{|wq@dOmzY^9%tzZm62f@nuI41ISdr>lEYi_+TutWUM3J%#>` z4!53z0fDEsxNjy92}1)T<*+?$#yI^UO3dm8DHN~A^;n1#PeJKI++8ydh04L5Q!sgF z+9J4`9L?>WycYWoaXR9F1~AD_dA;jK$X8U}&~JXn6aJ+R`ZvX>ztMmCLk8;KfBn^L z)5ZO+6iEH=;#2OBVvIX zeX42EgV4)T+|sDnk5-x0S|-`%nWpr;u?Yrs-?c@BoXgfrMwm$v-f0uE7oNXF{ckLK zrP8UyFh46L1P&gV@}##WJE)k?6>*+;>=M%UKIO77>cgoF_P*_GoU8>Tsoraoe-E54 zP0TA;rOVb8i0A3&f?;lP)I;2+MK3V8^QgreGSnnydbrv2il3vS$Z@$M}g{m0AIY>&P$DwT)6AopIbp z(iRIOp;!7(@}}MrF5&25&Rn{-Yv&v6vu%)kjEE^`Wl{rsu)PzeLc9$Oy=X4Z9_+}A z)3D z1^&EchUeYqmtxNqyz*|~G;2gUD3Us?5#F!R!@vKUL!s{ur$?>&`rCw*QGVqSB$OvsB!bh+>(x!fI$Yw>(1O>6^8Js_%2Bsqpe7w>GB zDChR|v1(cwsA;3PR>TXhzk66mF4ZbAW!w+bwyOJbfnf|D#+?=37jxU8*)o7Oqxc7- zl)2-C5mh8F-~L~Cwju=5bC}mcLw6tMFg;*stf#}^k;0z@ejdNaE~qM7x6jjAWpRo( zZN8q$?n{YjC{{k{MFi_7_WqJVf<_XB9AU_H)`8XR%VFD0Nbu5lU$8J$<=T@EI%RtC z^hQ;&A5}Dh?dSQ*_TM;$lv#dOtBu{^DqDV!jaZM@YL+fBKhv$~iE9?GU(_)yu0T5w zc%_EgMxoC8EwCAX@2Zntg^e#`Orm>S!4yep3vnyViZ4XcY(kX$$`GrnhzX_(;cvd+ zsX}-ir8`CwS4j94-(48~^GmE549IM39>G!bmXk)P&QgV5o+IowC_jT!3^C8q9#6Y& z?YFjyy6i|vaC?bCu=cb3IZ2a_5n{%H(1PKu5ljWXq|qlA_u3;aVH{&hjIr{@%wLQ| zT{R}eHR{vSf~2o4*ft`A73X7kHyqJAnWs6{qcYAL^%*ze#xaBxP7N%YH;iwUjPKdD zq40sxid+H9nHe=o_vpxcEI$F6lHa+-gV;V%Bv5AFhv5V#y0PaO z?v{qk5z;u>sB(bw9~gY6ujA~VqkQ#i2OE4+YIw@I%TtCiaGpXyYZob@ftD%)hlGQL zg#w2HEn)-(00W?bLqL+TsX?KlV~Ck1U1uWkgm7^ zCn6h+9|vc`89(eNoP0#rr4=HHS;Mf3G>h(;wrZ9u9G1+sRBQ^UV}o%nlABN%@f2l! z9hJ_eoC-Fb5nGN`x7Dzivs@(e`KGxeyOmB@JYGDvZWze1@!FG!R3;Ad6HtF|8f_sC z3z1y(C=^N^G1&stct_NSo~qe8I37#aY+aH5)(ihTKvmefKluFw;x)sXOZGMT zZXV>KzVGAK;i6|id`DbvjIYBs+WNKeFOl2$BnnRT@XPD3wA%WWKG?#7OGK!HR7@!y%>aA2|uWwh4)`d9=ZgljZYDvYAKb7y9?PV7#z<)zNli zAWXk4u&dPf2!Q7geJ9T{Alh+;994e5U5sibBfb}C2FOnRMkm^9w2z#QXv~9kM=y<4 zG8Z$E=^MT$)7P|0=lvGNYgsc|u~xPipNkZXQ`c)|YD4=^9)dJv&!T`~%Jp$gm-pD< z4H$gP_8h!j7W&?GO%2}jV)($~@jm=}bu6AYKLLC2EpPM)h}b0$_M?*B=;nP4?sM7J z_KU?$!U1mH>_pXTp4}J_j>}Z zPSlL>{hMD#b(yj7&Tglp_`@9u6}rgUIQBprPYFrb5ub^T4 z5@vgGu(-85TY>roP$klfwQ>O!@Xa21B#<8Gp4{%_fCxEAwp1#G9Oq2^1*fQGg-V@SqGCtfft*6I2!rhJM z-wy2OpI)cNzAtTP?~35yI1CrL$KQN6j@UR$h)76g9+k&RG zt7VS@Lp1U!hWAwJ<+eE@!K{+L^3M5j=2BtE9=tD}rGZ@~G%biqc zA5=WIkd3gC4oO4Br-mBAI|`Fwr0V} z7~1jl*=y{OP&!+L#O7>`~`vJ@7?zaDb*&3Oymh*1?mzI zrL|(ZI?&_!0ot0qn3M~Zh4oU1*lD?GKjJEd7`_vzl17l6a&a~0pNXrwQAU`R8K?Vz zkXbv$@^F(ZfO}Ssaod~jcJy)z>1L@^%W<1WoTL}Uou2>%?g3ns1Z>6yj|IDld5C4e za%f3p9+CowDvAk&Sr)Af98Mt|hwJ3m;~xU4>~a~SGg)R|U%d}Q~vms6DE zJ=9D4Jk}XVoKlyIw5O|c(JQ51Qlw(oXSuo;zP&lJnoWq!%XZQ4|KYn-4HIT(~~g+QXe}o`yeH63Sf^7 z4YbEcJedfM)Ubkl$()Ej7)059;Z$@|U0&@-Yq-5jb&Hc-=Z7hBFVMp|rVWp3e&F%n znJW3@CNv_C9GZBdg>W@(EH0%~&ZXGoagV5Hhze_A&+KyOCnI5_4UEylqL!{3$q<6# zTCLunvsC1O9D%5sIC>d(f0;>>!{@4CEM(S~nQ1{@BZ#IoX{x%e{on{ZH0E6mg5*6g zm}RGpH32^7d?J5+sokoS%Bd*<---hNe0shbk`?~d7q4}(2r<(HYh`cP)ou;HKZhm( zQz7G^_|LD;BOw6W%`Ao9G?QAC$jVyhOuzOlv_f{aTFnyAbyYZQGAD@@=J>SIy=;{IE%=^}u5C5(I_T_{ zmM40X&|ns6O{$whNSX)LF+j4DY9A>gwiUJ`k);$Mwhh>7xM*eQ?yN1lV|?{7bxOIK zMx3l~=PeUO9Aekk6wT3@^7q=uY|-x<-E&|I)rv+_5Lx@kb5O^?8DLxOHCNd8Widyc zEpSFD44ci_B^;!26@m&0*{_b>EYSwXIf1k33;AHQ@-#8?tU?w$>0pf7HVx5;foJ(? zn5KQ`1yt!4G4dk-7-@~NKwzpu;030tM)qT6 zqpTj`0d$pC1rrPVAdvJ^6uUjw6bhfJNiISY&u+eM=BW#AVL)5v@M}9~M*`rcJucVgOBC2Lc({rs;MfR)F4VWk zQQ_)gt>C-~JsC$wDb&^tNhTegY6hqj0SJKvm?MgFS9%_A+>us0#Op!^W1HA#Hcl$L*{Uevq&|ldJ~N)<2)7;C?wD|Rr>%x;Mriy%urjY@U#NqCpkb~pchVyU^Z0^ zDHet?G$nNqO&=<|c`_Q0d11Z*KAJFiPzr+Y1@a&kwY9^uP!=4Ae5#f!FZ^=^ksVy0 z38jtd6k0lL@)o#ZLQe)FC7-mRmc2AM6YUr?fl4xaWV3}t8gVTbAs-s+J?c0lOjDT& z+aVB(KNdesH-`hWCTCy&E)9=N2;qNlMp|**{$=%F< zrl?1NK^k7uX}t>zu(~_Y%yx)M-po*h+N|q$(z1s$Wj2@*#RqG8KgGuREmoOPvWwPi zq>7C7TVwG?v!wtpaBiI6Xb@8+AN`R{0$a>Imxm^N*DASj5UvU@DelO^YEfV1fFe*4 zv7oR|s`Noxl5%N27KVDxgN(XPuHIttEFTa5%hC79Ob*7wxyI0W@u^g5?yz)&WF~1E z$*y>>Oi>GJ)Nx*5Qe@r?>J})5F8HfAM~F5>11nT<6vHcw6Px*97aN_ms5|y%5b@h5 zQazH-Mord1$UrO)GCWu0;I(mKysyT3Xq`&4{Pxxo-$FkgfD}YjyBTk;nd#VfJh7{0 z#ypqW(k(1@g~LyPU>nU=5`bIivnw?@v~U{j82Az7$2BVn9<$Nv`}%eoxir=Z3{vDq zj>R2N08^MITxXEuX%Ko-gAtKKBIOlw~^6tku>qEF4~ zQo{mjRBv-fqy|`Qu!)PizG|u?_fy)9UVe%Rd7mE;PYqQ<$Jl;3tf-OJj-|@0J-qs* z#iiU<4+Y;ZsVb%HE)?mFUAIUz{*h9MDJ_m0&zu~`#(-*um(E- zEpG%|1|yZSl1Y@6Z*nppz*q0MJMHPo;jnm8?(h`V9E3Tiqii9H?-A!aGv}sLJzw5qqeELk7fj&O?^uh) zO09x{%C1ftFLqlOIxYMD_@Ed=4vgQ!6i3kZz_G-<7p1hRww8A8ad#4Jbz@)*s%&zS zE|S1LaHQ7kXH^X3pO~us)?&N{r zjB{+j{nx56l!EK~I0pg$@s(tzBJobcpo6?uEehIi!c*P-8%M@l=Qk`DcaItOzAp+Q z2hX3Wq)3QNeZD}%(8ergQXJw`v&zh|=$RxG88!8i$adNW3n%$}fqX}PQv&-ab*zYX z{eQn%oB(KTPkuHc!ImBR@5hhztm{l8s^LO6shz7;{yj; z1>Qw+Lc#Tgo%w2KW*-hx*`^=`oWtz5g8Vtl^mrgq7^;*^9;Rxq?Qg+j<6M_ZGdQfv zWY0(C-s?8N;`HY%@&x`gY{^W*vV2wyNYlsz#9t%4ttgPN%q(00;YXOC2c0f=7O$lk zZSEk$>^Cx=*P&yEc}{sQ%~e_Gt>NIwO?ajfx`_Cio8wqK>NZZX)eZMkHmrV`P!`*Z zAbxJzPRc$uXtbbZw0>Pl5Y|91NT!f=zn`+IsZlb7&pUehdPOq@7HVyWSpizRb;KhL z8Ly8O8bie=V$OjS0v*MSI7N!RLNn5w(C9!cs4fSjwpC1g&b%jk{U(Q2@KdCnnz#uQ zuKC2jh2HE@2RGcQkQNpY0cn-cGqjnUisQNDlscA?>dr{SB(7?a$FDk77cz77?mRHl zDM`{vNm$3T?GDkD_df8jj4V9H$w&zaEF`((iW1SD&YAu-2relNy9 zDa##et(Ky9XzjcZdu!k5vU*I-xD0g?de|b52ORf3dBate*=T~(fKjqWD`MtVJPv)1 zqpD_$HZUWG$IOY%EnF;pZ4a*$!pu7TG5yQZZfC{^ve&9*Qz}A~;5{_NM?;_Nv-RfO z9!|5jt`q$_+P4H5O|CXuWvM0r82kIL)#{z(eHeM<)L6@c^CwgaAN2T&8)|2D*3cCx zk2d-XRtzQYv^pgUo?rDZ$@j~z%tMRBDyq<$cibea;v zVG$#%N%M{B91dmWCbTTC!zl$WN0+fDrb<{Tc;&vu#<~T%im> z1v?EB10i$#P~*Uf^Z<#MCcArtT@WEDfZq%hm2f*;hxTWwO9Y8kQZb3Xwa zL?Q>yZ!mL03hwMfS2^j85K}_;T)*M-Z|%gSiqk4E13A?9lI#o`m=w|#=i3a%gZJJt zBcx5VGV8E!{=c}{12XnSm$VB3>V5a}_=3b$9~WTD-k%eD-ss1-Zj)kL=76F+jTo4U z{^c#aNg%$!q&#k{4|baEX@oc3>B;)5TqXV(R{GMO(Ohon(R!S${why$6MxgE?9W}p zW|2PuibI%U1>}1!+fyOpgoK)U7Dt$77Qw?Yn)ShT9fBopOhn`^vm_7-8LL*Tr7_89aFKx)b<#itE)0J39!9mmRtrniOru7#;uMW` z^z4QA4Ah8KVehf*rBO-LQ9~fAG8OE_bp>sK2;A%mc9Y@I*Hp=k?xchblMB_j`neG4 zz=lSjSwwwIQv7JsaQw+TbGNJmW+tsoB$;Mgsk6J%dsS6{{0H<9NYYK=@3Q ztK65Dl@$NvdW^t^ICuTQ1I0{%d9rYFL%jGLENYwdvl8WSUR_dM_9?7%!xd{nHgRew zetPg({wYlAMIuYhLEI0?jbRcP{A1kwQ$uIkF4>i6nU83h7ljzB*sgmYIvA^E74ekC z#~4Q@C^LYdfVPllosw}&wBG##^FhYMmnp(6P$!$rvg3}|tQ ze1G8a>m)w~Br^-q!5koLq_J|+daGt@STEQ)6AmAfBh)gOO&gW!>kY<0@4++Q@sV$n zi$`%V8Jfl(gqNU`L6L`&d8x=k4L4rWmWU626yP4$bbR9;0F=;7KN2bD3>DZ&k=X` z$(I6F@$Jj?I8s=H82*k$fBZ8-_c9u|z@&T$UP)aFEK_j9Zk50iDHd3T5$<`PbbNp* zT(wV6_YIz*JyO8Dwfi$#=+5u*^F0~|N zLoYA!d*&==w^0YMxw;NuU2-xcVKttxh&?;TaKMUh5i(*a?mKj2L&80IpP zRG&vAsa%`J%@3S7M#-~30hLJH@LQR@s|42(*Zohd`-Bpkf5Ba$zWNl5MT2_i<2Bl` z0|pkNzeW2nfjDXKFp<-vSmZVd>TB6E#pU2f7t;fG_$=-aUX@h)a~%42&_=jv;}-!S z@?ooOfbi>QSVms}G$uj;SGR2lJv6J*wByWTHx0*?)F{9cl`_Ra zvU^W$FbbZ3Ql@D9>xy%w=X$;Rw04>mlpDUmG6O~2G(>!aR=rIs%xe$PU zHIt#wKWXceE}R7X8|EoGTbqz08>iy{6&o6^rP725lb$ zIU#I$K3I_}6ynj{PyofrAs7#L^rkXAq)o{p#krxZ<)@BR%F&N75)JY4Ly(DZN1H7% z&8hH;78|y|=wZmxDwDQPVdXF%Gn1*(4sAjME&DJc5%Uw)Aq!a(M<%0Afl`6Mx%^D= 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 K_?^Iqb^idb`R*tH diff --git a/package-lock.json b/package-lock.json index 23f50f0b..3d1007dd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -80,7 +80,7 @@ "vite-express": "^0.16.0", "vlc-client": "^1.1.1", "xml2js": "0.6.0", - "youtube-music-ts-api": "^1.7.0" + "youtubei.js": "^10.5.0" }, "devDependencies": { "@dbus-types/notifications": "^0.0.5", @@ -542,6 +542,11 @@ "node": ">=6.9.0" } }, + "node_modules/@bufbuild/protobuf": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.2.0.tgz", + "integrity": "sha512-+imAQkHf7U/Rwvu0wk1XWgsP3WnpCWmK7B48f0XqSNzgk64+grljTKC7pnO/xBiEMUziF7vKRfbBnOQhg126qQ==" + }, "node_modules/@bundled-es-modules/cookie": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@bundled-es-modules/cookie/-/cookie-2.0.0.tgz", @@ -1131,6 +1136,14 @@ "npm": ">=9.0.0" } }, + "node_modules/@fastify/busboy": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", + "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", + "engines": { + "node": ">=14" + } + }, "node_modules/@fortawesome/fontawesome-common-types": { "version": "6.6.0", "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.6.0.tgz", @@ -3805,14 +3818,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/charenc": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", - "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", - "engines": { - "node": "*" - } - }, "node_modules/check-error": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", @@ -4143,14 +4148,6 @@ "node": ">= 8" } }, - "node_modules/crypt": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", - "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", - "engines": { - "node": "*" - } - }, "node_modules/css.escape": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", @@ -6593,6 +6590,17 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/jintr": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/jintr/-/jintr-2.1.1.tgz", + "integrity": "sha512-89cwX4ouogeDGOBsEVsVYsnWWvWjchmwXBB4kiBhmjOKw19FiOKhNhMhpxhTlK2ctl7DS+d/ethfmuBpzoNNgA==", + "funding": [ + "https://github.com/sponsors/LuanRT" + ], + "dependencies": { + "acorn": "^8.8.0" + } + }, "node_modules/jiti": { "version": "1.21.6", "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", @@ -9566,18 +9574,6 @@ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, - "node_modules/sha1": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/sha1/-/sha1-1.1.1.tgz", - "integrity": "sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA==", - "dependencies": { - "charenc": ">= 0.0.1", - "crypt": ">= 0.0.1" - }, - "engines": { - "node": "*" - } - }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -10682,6 +10678,17 @@ "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", "dev": true }, + "node_modules/undici": { + "version": "5.28.4", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", + "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", + "dependencies": { + "@fastify/busboy": "^2.0.0" + }, + "engines": { + "node": ">=14.0" + } + }, "node_modules/undici-types": { "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", @@ -11698,12 +11705,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/youtube-music-ts-api": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/youtube-music-ts-api/-/youtube-music-ts-api-1.7.0.tgz", - "integrity": "sha512-IaH14moHLbXTs3e8cM/Zpld+Jf4pQeYslCGmm6karfQSJ5OQ6h1dZ01qblpzKgqZrcbRF3tg7ASAYNDpB0RaFw==", + "node_modules/youtubei.js": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/youtubei.js/-/youtubei.js-10.5.0.tgz", + "integrity": "sha512-iyA+VF28c15tCCKH9ExM2RKC3zYiHzA/eixGlJ3vERANkuI+xYKzAZ4vtOhmyqwrAddu88R/DkzEsmpph5NWjg==", + "funding": [ + "https://github.com/sponsors/LuanRT" + ], "dependencies": { - "sha1": "^1.1.1" + "@bufbuild/protobuf": "^2.0.0", + "jintr": "^2.1.1", + "tslib": "^2.5.0", + "undici": "^5.19.1" } }, "node_modules/zod": { diff --git a/package.json b/package.json index 16c30fad..7ed07516 100644 --- a/package.json +++ b/package.json @@ -110,7 +110,7 @@ "vite-express": "^0.16.0", "vlc-client": "^1.1.1", "xml2js": "0.6.0", - "youtube-music-ts-api": "^1.7.0" + "youtubei.js": "^10.5.0" }, "devDependencies": { "@dbus-types/notifications": "^0.0.5", diff --git a/patches/youtube-music-ts-api+1.7.0.patch b/patches/youtube-music-ts-api+1.7.0.patch deleted file mode 100644 index 68aa5b10..00000000 --- a/patches/youtube-music-ts-api+1.7.0.patch +++ /dev/null @@ -1,68 +0,0 @@ -diff --git a/node_modules/youtube-music-ts-api/build/exports.d.ts b/node_modules/youtube-music-ts-api/build/exports.d.ts -index e256777..c151c4b 100644 ---- a/node_modules/youtube-music-ts-api/build/exports.d.ts -+++ b/node_modules/youtube-music-ts-api/build/exports.d.ts -@@ -7,7 +7,7 @@ declare module 'youtube-music-ts-api' { - } - - declare module 'youtube-music-ts-api/service/youtube-music' { -- import { IYouTubeMusic, IYouTubeMusicAuthenticated, IYouTubeMusicGuest } from "youtube-music-ts-api/interfaces-primary"; -+ import { IYouTubeMusic, IYouTubeMusicAuthenticated, IYouTubeMusicGuest, OnAuthChange } from "youtube-music-ts-api/interfaces-primary"; - /** - * Defines the main YouTube Music API object. Using this object, you can either choose to make calls as a guest or an - * authenticated user. Not all APIs are available as a guest, so it is preferred to authenticate the user if possible. -@@ -19,9 +19,10 @@ declare module 'youtube-music-ts-api/service/youtube-music' { - * @param cookiesStr The cookie string of a valid logged in user. To obtain this cookie value, log into https://music.youtube.com as a user - * and use your browser's developer tools to obtain the "cookie" value sent as a request header. Extra values in the cookie will be ignored. - * @param authUser X-Goog-AuthUser header value -+ * @param onAuthChange A callback called when cookies/authuser are updated based on YTM response - * @returns A promise that will yield authenticated access to the YouTube Music API. - */ -- authenticate(cookiesStr: string, authUser?: number): Promise; -+ authenticate(cookiesStr: string, authUser?: number, onAuthChange?: OnAuthChange): Promise; - /** - * Provides guest access to the YouTube Music API. Only non-restrictive APIs (such as public playlists) are available to guests. - * -@@ -33,6 +34,10 @@ declare module 'youtube-music-ts-api/service/youtube-music' { - - declare module 'youtube-music-ts-api/interfaces-primary' { - import { IAlbumDetail, IAlbumSummary, IArtistSummary, IPlaylistDetail, IPlaylistSummary, ITrackDetail } from "youtube-music-ts-api/interfaces-supplementary"; -+ export type OnAuthChange = (cookieStr: string, authUser: number, changed: Map) => void; - /** - * Defines the main YouTube Music API object. Using this object, you can either choose to make calls as a guest or an - * authenticated user. Not all APIs are available as a guest, so it is preferred to authenticate the user if possible. -@@ -44,9 +49,10 @@ declare module 'youtube-music-ts-api/interfaces-primary' { - * @param cookiesStr The cookie string of a valid logged in user. To obtain this cookie value, log into https://music.youtube.com as a user - * and use your browser's developer tools to obtain the "cookie" value sent as a request header. Extra values in the cookie will be ignored. - * @param authUser X-Goog-AuthUser header value -+ * @param onAuthChange A callback called when cookies/authuser are updated based on YTM response - * @returns A promise that will yield authenticated access to the YouTube Music API. - */ -- authenticate(cookiesStr: string, authUser: number): Promise; -+ authenticate(cookiesStr: string, authUser: number, onAuthChange?: OnAuthChange): Promise; - /** - * Provides guest access to the YouTube Music API. Only non-restrictive APIs (such as public playlists) are available to guests. - * -@@ -112,7 +118,7 @@ declare module 'youtube-music-ts-api/interfaces-primary' { - * - * @returns A promise that will yield a playlist with detailed information on a recently played tracks. - */ -- getLibraryHistory(): Promise; -+ getLibraryHistory(asPlaylists?: boolean): Promise; - /** - * Moves the specified track within the playlist. - * -diff --git a/node_modules/youtube-music-ts-api/build/exports.js b/node_modules/youtube-music-ts-api/build/exports.js -index ae406e1..a9d5481 100644 ---- a/node_modules/youtube-music-ts-api/build/exports.js -+++ b/node_modules/youtube-music-ts-api/build/exports.js -@@ -1,2 +1,3 @@ - #! /usr/bin/env node --!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("https"),require("sha1")):"function"==typeof define&&define.amd?define(["https","sha1"],t):"object"==typeof exports?exports["youtube-music-ts-api"]=t(require("https"),require("sha1")):e["youtube-music-ts-api"]=t(e.https,e.sha1)}(global,((e,t)=>(()=>{"use strict";var s={523:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default={context:{capabilities:{},client:{clientName:"WEB_REMIX",clientVersion:"0.1",experimentIds:[],experimentsToken:"",gl:"DE",hl:"en",locationInfo:{locationPermissionAuthorizationStatus:"LOCATION_PERMISSION_AUTHORIZATION_STATUS_UNSUPPORTED"},musicAppInfo:{musicActivityMasterSwitch:"MUSIC_ACTIVITY_MASTER_SWITCH_INDETERMINATE",musicLocationMasterSwitch:"MUSIC_LOCATION_MASTER_SWITCH_INDETERMINATE",pwaInstallabilityStatus:"PWA_INSTALLABILITY_STATUS_UNKNOWN"},utcOffsetMinutes:60},request:{internalExperimentFlags:[{key:"force_music_enable_outertube_tastebuilder_browse",value:"true"},{key:"force_music_enable_outertube_playlist_detail_browse",value:"true"},{key:"force_music_enable_outertube_search_suggestions",value:"true"}],sessionIndex:{}},user:{enableSafetyMode:!1}}}},479:function(e,t,s){var r=this&&this.__createBinding||(Object.create?function(e,t,s,r){void 0===r&&(r=s);var i=Object.getOwnPropertyDescriptor(t,s);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[s]}}),Object.defineProperty(e,r,i)}:function(e,t,s,r){void 0===r&&(r=s),e[r]=t[s]}),i=this&&this.__exportStar||function(e,t){for(var s in e)"default"===s||Object.prototype.hasOwnProperty.call(t,s)||r(t,e,s)},n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=s(116);Object.defineProperty(t,"default",{enumerable:!0,get:function(){return n(a).default}}),i(s(800),t),i(s(189),t)},800:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},189:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},175:function(e,t,s){var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=r(s(841)),n=r(s(421));class a extends i.default{constructor(){super(),this.trackParser=new n.default}parseAlbumsSummaryResponse(e){const t=[],s=this.traverse(e,"contents","singleColumnBrowseResultsRenderer","tabs","0","tabRenderer","content","sectionListRenderer","contents","*","itemSectionRenderer","contents","0","gridRenderer","items");if(Array.isArray(s))for(let e=0;e{Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{traverse(e,...t){if(e){if(Array.isArray(t)&&t.length>0){if(Array.isArray(e)&&"*"===t[0]){for(let s=0;s1){t=parseInt(n[1]);break}}return{id:this.traverse(e,"musicTwoRowItemRenderer","title","runs","0","navigationEndpoint","browseEndpoint","browseId"),name:this.traverse(e,"musicTwoRowItemRenderer","title","runs","0","text"),thumbnails:this.traverse(e,"musicTwoRowItemRenderer","thumbnailRenderer","musicThumbnailRenderer","thumbnail","thumbnails"),count:t}}parsePlaylistDetailResponse(e){const t=this.traverse(e,"contents","singleColumnBrowseResultsRenderer","tabs","0","tabRenderer","content","sectionListRenderer","contents","0","musicPlaylistShelfRenderer");if(t)return this.parsePlaylistDetail(e,t)}parsePlaylistDetailContinuation(e,t){const s=this.traverse(t,"continuationContents","musicPlaylistShelfContinuation","contents"),r=this.trackParser.parseTrackDetails(s);Array.isArray(e.tracks)&&e.tracks.push.apply(e.tracks,r),e.continuationToken=this.traverse(t,"continuationContents","musicPlaylistShelfContinuation","continuations","0","nextContinuationData","continuation")}parsePlaylistDetail(e,t){const s=void 0===this.traverse(e,"header","musicEditablePlaylistDetailHeaderRenderer"),r=s?e:this.traverse(e,"header","musicEditablePlaylistDetailHeaderRenderer"),i=s?"PUBLIC":this.traverse(r,"editHeader","musicPlaylistEditHeaderRenderer","privacy"),n=this.traverse(r,"header","musicDetailHeaderRenderer");let a=0;const o=this.traverse(n,"secondSubtitle","runs","0","text");if(o){const e=o.split(" ");e&&e.length>0&&(a=parseInt(e[0]))}const u=this.traverse(t,"contents");return{id:this.traverse(t,"playlistId"),name:this.traverse(n,"title","runs","0","text"),description:this.traverse(n,"description","runs","0","text"),privacy:i,count:a,tracks:this.trackParser.parseTrackDetails(u),continuationToken:this.traverse(t,"continuations","0","nextContinuationData","continuation")}}mergeValidPlaylistTracks(...e){const t=[];for(const s of e)for(const e of s.tracks)this.trackParser.isTrackDataMissing(e)||t.find((t=>t.id===e.id))||t.push(e);return t}}t.default=a},421:function(e,t,s){var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=r(s(841));class n extends i.default{parseTrackDetails(e){const t=[];if(Array.isArray(e))for(const s of e){const e=this.traverse(s,"musicResponsiveListItemRenderer");if(e){const s=this.parseTrackDetail(e);s&&s.id&&t.push(s)}}return t}parseTrackDetail(e){const t=[],s=[],r=this.traverse(e,"flexColumns","1","musicResponsiveListItemFlexColumnRenderer","text","runs");if(Array.isArray(r))for(const e of r){const r=this.traverse(e,"navigationEndpoint","browseEndpoint","browseId"),i=this.traverse(e,"text");i&&(r&&s.push({id:r,name:i}),t.push({id:r,name:i}))}let i;const n=this.traverse(e,"flexColumns","2","musicResponsiveListItemFlexColumnRenderer","text","runs","0");n&&(i={id:this.traverse(n,"navigationEndpoint","browseEndpoint","browseId"),name:this.traverse(n,"text")});const a=this.traverse(e,"fixedColumns","0","musicResponsiveListItemFixedColumnRenderer","text","simpleText")||this.traverse(e,"fixedColumns","0","musicResponsiveListItemFixedColumnRenderer","text","runs","0","text"),o=this.traverse(e,"menu","menuRenderer","topLevelButtons");let u="INDIFFERENT";if(Array.isArray(o))for(const e of o)e.likeButtonRenderer&&(u=e.likeButtonRenderer.likeStatus);return{id:this.traverse(e,"overlay","musicItemThumbnailOverlayRenderer","content","musicPlayButtonRenderer","playNavigationEndpoint","watchEndpoint","videoId"),alternateId:this.traverse(e,"playlistItemData","playlistSetVideoId"),title:this.traverse(e,"flexColumns","0","musicResponsiveListItemFlexColumnRenderer","text","runs","0","text"),artists:s.length>0?s:t,album:i,thumbnails:this.traverse(e,"thumbnail","musicThumbnailRenderer","thumbnail","thumbnails"),likeStatus:u,duration:a}}isTrackDataMissing(e){return"Song is private"==e.title}parseTracksDetailResponse(e){const t=this.traverse(e,"contents","singleColumnBrowseResultsRenderer","tabs","0","tabRenderer","content","sectionListRenderer","contents","*","itemSectionRenderer","contents","0","musicShelfRenderer"),s=this.traverse(t,"contents");return{continuationToken:this.traverse(t,"continuations","0","nextContinuationData","continuation"),tracks:this.parseTrackDetails(s)}}parseTracksDetailContinuation(e,t){const s=this.traverse(t,"continuationContents","musicShelfContinuation","contents"),r=this.parseTrackDetails(s);Array.isArray(e.tracks)&&e.tracks.push.apply(e.tracks,r),e.continuationToken=this.traverse(t,"continuationContents","musicShelfContinuation","continuations","0","nextContinuationData","continuation")}parseAlbumTrackDetails(e,t,s){const r=[];for(const i of e)r.push({id:this.traverse(i,"videoId"),title:this.traverse(i,"title"),artists:t,album:s,durationMillis:parseInt(this.traverse(i,"lengthMs")),trackNumber:parseInt(this.traverse(i,"albumTrackIndex"))});return r}}t.default=n},653:function(e,t,s){var r=this&&this.__awaiter||function(e,t,s,r){return new(s||(s=Promise))((function(i,n){function a(e){try{u(r.next(e))}catch(e){n(e)}}function o(e){try{u(r.throw(e))}catch(e){n(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(a,o)}u((r=r.apply(e,t||[])).next())}))},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=i(s(26)),a=i(s(418));class o extends a.default{constructor(e,t){super(),this.cookies=e,this.authUser=t}generateHeaders(){return Object.assign(Object.assign({},super.generateHeaders()),{Authorization:this.generateAuthorization(),Cookie:this.generateCookie(),"X-Goog-AuthUser":this.authUser})}generateAuthorization(){let e=(new Date).getTime();const t=`${e} ${this.cookies.get("__Secure-3PAPISID")} ${this.origin}`;return`SAPISIDHASH ${e}_${(0,n.default)(t)}`}generateCookie(){let e="";return this.cookies.forEach((function(t,s){e&&(e+=";"),e+=s+"="+t})),e}getLibraryAlbums(){return r(this,void 0,void 0,(function*(){const e=yield this.sendRequest("browse",{browseId:"FEmusic_liked_albums"});return this.albumParser.parseAlbumsSummaryResponse(e)}))}getLibraryArtists(){return r(this,void 0,void 0,(function*(){const e=yield this.sendRequest("browse",{browseId:"FEmusic_library_corpus_track_artists"});return this.artistParser.parseArtistsSummaryResponse(e)}))}getLibraryPlaylists(){return r(this,void 0,void 0,(function*(){const e=yield this.sendRequest("browse",{browseId:"FEmusic_liked_playlists"});return this.playlistParser.parsePlaylistsSummaryResponse(e)}))}getLibraryTracks(){return r(this,void 0,void 0,(function*(){return this.getLibraryTracksInternal()}))}getLibraryTracksInternal(){return r(this,void 0,void 0,(function*(){const e={browseId:"FEmusic_liked_videos"},t=yield this.sendRequest("browse",e),s=this.trackParser.parseTracksDetailResponse(t);for(;s.continuationToken;){const t=yield this.sendRequest("browse",e,`ctoken=${s.continuationToken}&continuation=${s.continuationToken}`);this.trackParser.parseTracksDetailContinuation(s,t)}return s.tracks}))}getLibraryHistory(){return r(this,void 0,void 0,(function*(){const e=yield this.sendRequest("browse",{browseId:"FEmusic_history"}),t=this.playlistParser.traverse(e,"contents","singleColumnBrowseResultsRenderer","tabs","0","tabRenderer","content","sectionListRenderer","contents"),s=[];for(const e of t)void 0!==e.musicShelfRenderer&&void 0!==e.musicShelfRenderer.contents&&e.musicShelfRenderer.contents.length>0&&s.push(e.musicShelfRenderer.contents);const r=s.flat(1);return{id:"FEmusic_history",name:"History",description:"Recently played music in reverse chronological order",privacy:"PRIVATE",count:r.length,tracks:this.trackParser.parseTrackDetails(r)}}))}createPlaylist(e,t,s,i){return r(this,void 0,void 0,(function*(){const r=yield this.sendRequest("playlist/create",{title:e,description:t,privacyStatus:s||"PRIVATE",sourcePlaylistId:this.playlistIdTrim(i)});if(r&&r.playlistId)return{id:r.playlistId,name:e,count:0}}))}deletePlaylist(e){return r(this,void 0,void 0,(function*(){return"STATUS_SUCCEEDED"===(yield this.sendRequest("playlist/delete",{playlistId:this.playlistIdTrim(e)})).status}))}addTracksToPlaylist(e,...t){return r(this,void 0,void 0,(function*(){return"STATUS_SUCCEEDED"===(yield this.sendRequest("browse/edit_playlist",{playlistId:this.playlistIdTrim(e),actions:t.map((e=>({action:"ACTION_ADD_VIDEO",addedVideoId:e.id})))})).status}))}removeTracksFromPlaylist(e,...t){return r(this,void 0,void 0,(function*(){const s=[];for(const e of t){if(!e.id)throw new Error("Track ID is missing. Ensure you have both the ID and the Alternate ID.");if(!e.alternateId)throw new Error("Track Alternate ID is missing. Ensure you have both the ID and the Alternate ID.");s.push({action:"ACTION_REMOVE_VIDEO",removedVideoId:e.id,setVideoId:e.alternateId})}return"STATUS_SUCCEEDED"===(yield this.sendRequest("browse/edit_playlist",{playlistId:this.playlistIdTrim(e),actions:s})).status}))}moveTrackWithinPlaylist(e,t,s){return r(this,void 0,void 0,(function*(){const r=[];if(!t||!t.alternateId)throw new Error("The track being moved is missing. Ensure you have specified a track to move.");return r.push({action:"ACTION_MOVE_VIDEO_BEFORE",movedSetVideoIdSuccessor:s?s.alternateId:void 0,setVideoId:t.alternateId}),"STATUS_SUCCEEDED"===(yield this.sendRequest("browse/edit_playlist",{playlistId:this.playlistIdTrim(e),actions:r})).status}))}rateTrack(e,t){return r(this,void 0,void 0,(function*(){let s;return s="LIKE"===t?"like/like":"DISLIKE"===t?"like/dislike":"like/removelike","STATUS_SUCCEEDED"===(yield this.sendRequest(s,{target:{videoId:e}})).status}))}}t.default=o},303:function(e,t,s){var r=this&&this.__createBinding||(Object.create?function(e,t,s,r){void 0===r&&(r=s);var i=Object.getOwnPropertyDescriptor(t,s);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[s]}}),Object.defineProperty(e,r,i)}:function(e,t,s,r){void 0===r&&(r=s),e[r]=t[s]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),n=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var s in e)"default"!==s&&Object.prototype.hasOwnProperty.call(e,s)&&r(t,e,s);return i(t,e),t},a=this&&this.__awaiter||function(e,t,s,r){return new(s||(s=Promise))((function(i,n){function a(e){try{u(r.next(e))}catch(e){n(e)}}function o(e){try{u(r.throw(e))}catch(e){n(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(a,o)}u((r=r.apply(e,t||[])).next())}))},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const u=n(s(799)),l=o(s(175)),c=o(s(304)),d=o(s(660)),h=o(s(421)),p=o(s(523));t.default=class{constructor(){this.hostname="music.youtube.com",this.basePath="/youtubei/v1/",this.queryString="?alt=json&key=AIzaSyC9XL3ZjWddXya6X74dJoCTL-WEYFDNX30",this.origin="https://music.youtube.com",this.albumParser=new l.default,this.artistParser=new c.default,this.playlistParser=new d.default,this.trackParser=new h.default}generateHeaders(){return{"X-Origin":this.origin}}sendRequest(e,t,s){return a(this,void 0,void 0,(function*(){let r;t&&(t=Object.assign(Object.assign({},p.default),t),r=JSON.stringify(t));const i=s?`${this.queryString}&${s}`:this.queryString,n=yield this.sendHttpsRequest({hostname:this.hostname,path:`${this.basePath}${e}${i}`,method:"POST",headers:this.generateHeaders()},r);if(200===n.statusCode&&n.body){const e=JSON.parse(n.body);if(e)return e}throw new Error(`Could not send the specified request to ${e}. Status code: ${n.statusCode}`)}))}sendHttpsRequest(e,t){return a(this,void 0,void 0,(function*(){return new Promise(((s,r)=>{const i=e.headers||{};e.headers=i,e.timeout=6e4,t&&(i["Content-Type"]="application/json",i["Content-Length"]=t.length);const n=u.request(e,(e=>{let t="";e.on("data",(e=>{t+=e})),e.on("end",(()=>{e.body=t,s(e)}))})).on("error",(e=>{r(e)}));t&&n.write(t),n.end()}))}))}playlistIdTrim(e){return e&&e.toUpperCase().startsWith("VL")?e.substring(2):e}playlistIdPad(e){return e&&!e.toUpperCase().startsWith("VL")?"VL"+e:e}}},418:function(e,t,s){var r=this&&this.__awaiter||function(e,t,s,r){return new(s||(s=Promise))((function(i,n){function a(e){try{u(r.next(e))}catch(e){n(e)}}function o(e){try{u(r.throw(e))}catch(e){n(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(a,o)}u((r=r.apply(e,t||[])).next())}))},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=i(s(303));class a extends n.default{constructor(){super()}getAlbum(e){return r(this,void 0,void 0,(function*(){const t={browseId:e,browseEndpointContextSupportedConfigs:{browseEndpointContextMusicConfig:{pageType:"MUSIC_PAGE_TYPE_ALBUM"}}},s=yield this.sendRequest("browse",t);return this.albumParser.parseAlbumDetailResponse(s)}))}getPlaylist(e,t=0){return r(this,void 0,void 0,(function*(){const s=yield this.getPlaylistInternal(e);for(;t>0;){const r=s.tracks.length!==s.count,i=!!s.tracks.find((e=>this.trackParser.isTrackDataMissing(e)));if(!r&&!i)break;{const r=yield this.getPlaylistInternal(e),i=this.playlistParser.mergeValidPlaylistTracks(s,r);s.tracks=i,t--}}return s}))}getPlaylistInternal(e){return r(this,void 0,void 0,(function*(){const t={browseId:this.playlistIdPad(e),browseEndpointContextSupportedConfigs:{browseEndpointContextMusicConfig:{pageType:"MUSIC_PAGE_TYPE_PLAYLIST"}}},s=yield this.sendRequest("browse",t),r=this.playlistParser.parsePlaylistDetailResponse(s);for(;r.continuationToken;){const e=yield this.sendRequest("browse",t,`ctoken=${r.continuationToken}&continuation=${r.continuationToken}`);this.playlistParser.parsePlaylistDetailContinuation(r,e)}return r}))}}t.default=a},116:function(e,t,s){var r=this&&this.__awaiter||function(e,t,s,r){return new(s||(s=Promise))((function(i,n){function a(e){try{u(r.next(e))}catch(e){n(e)}}function o(e){try{u(r.throw(e))}catch(e){n(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(a,o)}u((r=r.apply(e,t||[])).next())}))},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=i(s(653)),a=i(s(418));t.default=class{authenticate(e,t=0){return r(this,void 0,void 0,(function*(){if(!e)throw new Error("The specific cookie string is missing");const s=e.split(";");if(!s||0===s.length)throw new Error("An invalid cookie string was specified");const r=new Map;for(const e of s){const t=e.split("=");t&&2===t.length&&r.set(t[0].trim(),t[1].trim())}return new n.default(r,t)}))}guest(){return r(this,void 0,void 0,(function*(){return new a.default}))}}},799:t=>{t.exports=e},26:e=>{e.exports=t}},r={};return function e(t){var i=r[t];if(void 0!==i)return i.exports;var n=r[t]={exports:{}};return s[t].call(n.exports,n,n.exports,e),n.exports}(479)})())); -\ No newline at end of file -+/*! For license information please see exports.js.LICENSE.txt */ -+!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("https"),require("sha1")):"function"==typeof define&&define.amd?define(["https","sha1"],e):"object"==typeof exports?exports["youtube-music-ts-api"]=e(require("https"),require("sha1")):t["youtube-music-ts-api"]=e(t.https,t.sha1)}(global,((t,e)=>(()=>{"use strict";var r={611:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.default={context:{capabilities:{},client:{clientName:"WEB_REMIX",clientVersion:"0.1",experimentIds:[],experimentsToken:"",gl:"DE",hl:"en",locationInfo:{locationPermissionAuthorizationStatus:"LOCATION_PERMISSION_AUTHORIZATION_STATUS_UNSUPPORTED"},musicAppInfo:{musicActivityMasterSwitch:"MUSIC_ACTIVITY_MASTER_SWITCH_INDETERMINATE",musicLocationMasterSwitch:"MUSIC_LOCATION_MASTER_SWITCH_INDETERMINATE",pwaInstallabilityStatus:"PWA_INSTALLABILITY_STATUS_UNKNOWN"},utcOffsetMinutes:60},request:{internalExperimentFlags:[{key:"force_music_enable_outertube_tastebuilder_browse",value:"true"},{key:"force_music_enable_outertube_playlist_detail_browse",value:"true"},{key:"force_music_enable_outertube_search_suggestions",value:"true"}],sessionIndex:{}},user:{enableSafetyMode:!1}}}},77:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0})},98:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0})},710:function(t,e,r){function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return i(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?i(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,u=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return u=t.done,t},e:function(t){s=!0,a=t},f:function(){try{u||null==r.return||r.return()}finally{if(s)throw a}}}}function i(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r{function r(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r1&&void 0!==arguments[1]?arguments[1]:0;if(!t)throw new Error("The specific cookie string is missing");var n=t.split(";");if(!n||0===n.length)throw new Error("An invalid cookie string was specified");var o,i=new Map,a=function(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(t){if("string"==typeof t)return r(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var o=0,i=function(){};return{s:i,n:function(){return o>=t.length?{done:!0}:{done:!1,value:t[o++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,u=!0,s=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return u=t.done,t},e:function(t){s=!0,a=t},f:function(){try{u||null==n.return||n.return()}finally{if(s)throw a}}}}(n);try{for(a.s();!(o=a.n()).done;){var u=o.value.split("=");u&&2===u.length&&i.set(u[0].trim(),u[1].trim())}}catch(t){a.e(t)}finally{a.f()}return[i,e]},e.buildCookies=function(t){var e="";return t.forEach((function(t,r){e&&(e+=";"),e+=r+"="+t})),e}},445:(t,e)=>{function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function n(t){return function(t){if(Array.isArray(t))return o(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return o(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?o(t,e):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function o(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r1?e-1:0),o=1;o0){if(Array.isArray(t)&&"*"===r[0]){for(var i=0;i=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,u=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return u=t.done,t},e:function(t){s=!0,a=t},f:function(){try{u||null==r.return||r.return()}finally{if(s)throw a}}}}function i(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r1){e=parseInt(a[1]);break}}return{id:this.traverse(t,"musicTwoRowItemRenderer","title","runs","0","navigationEndpoint","browseEndpoint","browseId"),name:this.traverse(t,"musicTwoRowItemRenderer","title","runs","0","text"),thumbnails:this.traverse(t,"musicTwoRowItemRenderer","thumbnailRenderer","musicThumbnailRenderer","thumbnail","thumbnails"),count:e}}},{key:"parsePlaylistDetailResponse",value:function(t){var e=this.traverse(t,"contents","singleColumnBrowseResultsRenderer","tabs","0","tabRenderer","content","sectionListRenderer","contents","0","musicPlaylistShelfRenderer");if(e)return this.parsePlaylistDetail(t,e)}},{key:"parsePlaylistDetailContinuation",value:function(t,e){var r=this.traverse(e,"continuationContents","musicPlaylistShelfContinuation","contents"),n=this.trackParser.parseTrackDetails(r);Array.isArray(t.tracks)&&t.tracks.push.apply(t.tracks,n),t.continuationToken=this.traverse(e,"continuationContents","musicPlaylistShelfContinuation","continuations","0","nextContinuationData","continuation")}},{key:"parsePlaylistDetail",value:function(t,e){var r=void 0===this.traverse(t,"header","musicEditablePlaylistDetailHeaderRenderer"),n=r?t:this.traverse(t,"header","musicEditablePlaylistDetailHeaderRenderer"),o=r?"PUBLIC":this.traverse(n,"editHeader","musicPlaylistEditHeaderRenderer","privacy"),i=this.traverse(n,"header","musicDetailHeaderRenderer"),a=0,u=this.traverse(i,"secondSubtitle","runs","0","text");if(u){var s=u.split(" ");s&&s.length>0&&(a=parseInt(s[0]))}var c=this.traverse(e,"contents");return{id:this.traverse(e,"playlistId"),name:this.traverse(i,"title","runs","0","text"),description:this.traverse(i,"description","runs","0","text"),privacy:o,count:a,tracks:this.trackParser.parseTrackDetails(c),continuationToken:this.traverse(e,"continuations","0","nextContinuationData","continuation")}}},{key:"mergeValidPlaylistTracks",value:function(){for(var t=this,e=[],r=arguments.length,n=new Array(r),i=0;i=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,u=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return u=t.done,t},e:function(t){s=!0,a=t},f:function(){try{u||null==r.return||r.return()}finally{if(s)throw a}}}}function i(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r0?r:e,album:l,thumbnails:this.traverse(t,"thumbnail","musicThumbnailRenderer","thumbnail","thumbnails"),likeStatus:y,duration:h}}},{key:"isTrackDataMissing",value:function(t){return"Song is private"==t.title}},{key:"parseTracksDetailResponse",value:function(t){var e=this.traverse(t,"contents","singleColumnBrowseResultsRenderer","tabs","0","tabRenderer","content","sectionListRenderer","contents","*","itemSectionRenderer","contents","0","musicShelfRenderer"),r=this.traverse(e,"contents");return{continuationToken:this.traverse(e,"continuations","0","nextContinuationData","continuation"),tracks:this.parseTrackDetails(r)}}},{key:"parseTracksDetailContinuation",value:function(t,e){var r=this.traverse(e,"continuationContents","musicShelfContinuation","contents"),n=this.parseTrackDetails(r);Array.isArray(t.tracks)&&t.tracks.push.apply(t.tracks,n),t.continuationToken=this.traverse(e,"continuationContents","musicShelfContinuation","continuations","0","nextContinuationData","continuation")}},{key:"parseAlbumTrackDetails",value:function(t,e,r){var n,i=[],a=o(t);try{for(a.s();!(n=a.n()).done;){var u=n.value;i.push({id:this.traverse(u,"videoId"),title:this.traverse(u,"title"),artists:e,album:r,durationMillis:parseInt(this.traverse(u,"lengthMs")),trackNumber:parseInt(this.traverse(u,"albumTrackIndex"))})}}catch(t){a.e(t)}finally{a.f()}return i}}])&&a(e.prototype,r),Object.defineProperty(e,"prototype",{writable:!1}),f}(c(r(445)).default);e.default=l},573:function(t,e,r){function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(){o=function(){return e};var t,e={},r=Object.prototype,i=r.hasOwnProperty,a=Object.defineProperty||function(t,e,r){t[e]=r.value},u="function"==typeof Symbol?Symbol:{},s=u.iterator||"@@iterator",c=u.asyncIterator||"@@asyncIterator",l=u.toStringTag||"@@toStringTag";function f(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{f({},"")}catch(t){f=function(t,e,r){return t[e]=r}}function h(t,e,r,n){var o=e&&e.prototype instanceof g?e:g,i=Object.create(o.prototype),u=new A(n||[]);return a(i,"_invoke",{value:j(t,r,u)}),i}function p(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}e.wrap=h;var y="suspendedStart",v="suspendedYield",d="executing",m="completed",b={};function g(){}function w(){}function _(){}var k={};f(k,s,(function(){return this}));var x=Object.getPrototypeOf,S=x&&x(x(L([])));S&&S!==r&&i.call(S,s)&&(k=S);var O=_.prototype=g.prototype=Object.create(k);function E(t){["next","throw","return"].forEach((function(e){f(t,e,(function(t){return this._invoke(e,t)}))}))}function P(t,e){function r(o,a,u,s){var c=p(t[o],t,a);if("throw"!==c.type){var l=c.arg,f=l.value;return f&&"object"==n(f)&&i.call(f,"__await")?e.resolve(f.__await).then((function(t){r("next",t,u,s)}),(function(t){r("throw",t,u,s)})):e.resolve(f).then((function(t){l.value=t,u(l)}),(function(t){return r("throw",t,u,s)}))}s(c.arg)}var o;a(this,"_invoke",{value:function(t,n){function i(){return new e((function(e,o){r(t,n,e,o)}))}return o=o?o.then(i,i):i()}})}function j(e,r,n){var o=y;return function(i,a){if(o===d)throw new Error("Generator is already running");if(o===m){if("throw"===i)throw a;return{value:t,done:!0}}for(n.method=i,n.arg=a;;){var u=n.delegate;if(u){var s=R(u,n);if(s){if(s===b)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===y)throw o=m,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=d;var c=p(e,r,n);if("normal"===c.type){if(o=n.done?m:v,c.arg===b)continue;return{value:c.arg,done:n.done}}"throw"===c.type&&(o=m,n.method="throw",n.arg=c.arg)}}}function R(e,r){var n=r.method,o=e.iterator[n];if(o===t)return r.delegate=null,"throw"===n&&e.iterator.return&&(r.method="return",r.arg=t,R(e,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),b;var i=p(o,e.iterator,r.arg);if("throw"===i.type)return r.method="throw",r.arg=i.arg,r.delegate=null,b;var a=i.arg;return a?a.done?(r[e.resultName]=a.value,r.next=e.nextLoc,"return"!==r.method&&(r.method="next",r.arg=t),r.delegate=null,b):a:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,b)}function T(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function I(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function A(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(T,this),this.reset(!0)}function L(e){if(e||""===e){var r=e[s];if(r)return r.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var o=-1,a=function r(){for(;++o=0;--o){var a=this.tryEntries[o],u=a.completion;if("root"===a.tryLoc)return n("end");if(a.tryLoc<=this.prev){var s=i.call(a,"catchLoc"),c=i.call(a,"finallyLoc");if(s&&c){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&i.call(n,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),I(r),b}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;I(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,r,n){return this.delegate={iterator:L(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),b}},e}function i(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=u(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}function a(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,u=[],s=!0,c=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;s=!1}else for(;!(s=(n=i.call(r)).done)&&(u.push(n.value),u.length!==e);s=!0);}catch(t){c=!0,o=t}finally{try{if(!s&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(c)throw o}}return u}}(t,e)||u(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(t,e){if(t){if("string"==typeof t)return s(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?s(t,e):void 0}}function s(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r0&&(t?u.push({id:c.toString(),name:h.musicShelfRenderer.title.runs[0].text,description:"Recently played from ".concat(h.musicShelfRenderer.title.runs[0].text),privacy:"PRIVATE",count:h.musicShelfRenderer.contents.length,tracks:this.trackParser.parseTrackDetails(h.musicShelfRenderer.contents)}):s.push(h.musicShelfRenderer.contents)),c++}catch(t){l.e(t)}finally{l.f()}if(!t){e.next=12;break}return e.abrupt("return",u);case 12:return p=s.flat(1),e.abrupt("return",{id:"FEmusic_history",name:"History",description:"Recently played music in reverse chronological order",privacy:"PRIVATE",count:p.length,tracks:this.trackParser.parseTrackDetails(p)});case 14:case"end":return e.stop()}}),e,this)})))}},{key:"createPlaylist",value:function(t,e,r,n){return p(this,void 0,void 0,o().mark((function i(){var a;return o().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:return o.next=2,this.sendRequest("playlist/create",{title:t,description:e,privacyStatus:r||"PRIVATE",sourcePlaylistId:this.playlistIdTrim(n)});case 2:if((a=o.sent)&&a.playlistId){o.next=5;break}return o.abrupt("return",void 0);case 5:return o.abrupt("return",{id:a.playlistId,name:t,count:0});case 6:case"end":return o.stop()}}),i,this)})))}},{key:"deletePlaylist",value:function(t){return p(this,void 0,void 0,o().mark((function e(){var r;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.sendRequest("playlist/delete",{playlistId:this.playlistIdTrim(t)});case 2:return r=e.sent,e.abrupt("return","STATUS_SUCCEEDED"===r.status);case 4:case"end":return e.stop()}}),e,this)})))}},{key:"addTracksToPlaylist",value:function(t){for(var e=arguments.length,r=new Array(e>1?e-1:0),n=1;n1?e-1:0),n=1;n=0;--o){var a=this.tryEntries[o],u=a.completion;if("root"===a.tryLoc)return n("end");if(a.tryLoc<=this.prev){var s=i.call(a,"catchLoc"),c=i.call(a,"finallyLoc");if(s&&c){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&i.call(n,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),I(r),b}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;I(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,r,n){return this.delegate={iterator:L(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),b}},e}function i(t,e){for(var r=0;r=0;--o){var a=this.tryEntries[o],u=a.completion;if("root"===a.tryLoc)return n("end");if(a.tryLoc<=this.prev){var s=i.call(a,"catchLoc"),c=i.call(a,"finallyLoc");if(s&&c){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&i.call(n,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),I(r),b}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;I(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,r,n){return this.delegate={iterator:L(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),b}},e}function i(t,e){for(var r=0;r1&&void 0!==arguments[1]?arguments[1]:0;return s(this,void 0,void 0,o().mark((function r(){var n,i,a,u,s,c=this;return o().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this.getPlaylistInternal(t);case 2:n=r.sent;case 3:if(!(e>0)){r.next=18;break}if(i=n.tracks.length!==n.count,a=!!n.tracks.find((function(t){return c.trackParser.isTrackDataMissing(t)})),!i&&!a){r.next=15;break}return r.next=9,this.getPlaylistInternal(t);case 9:u=r.sent,s=this.playlistParser.mergeValidPlaylistTracks(n,u),n.tracks=s,e--,r.next=16;break;case 15:return r.abrupt("break",18);case 16:r.next=3;break;case 18:return r.abrupt("return",n);case 19:case"end":return r.stop()}}),r,this)})))}},{key:"getPlaylistInternal",value:function(t){return s(this,void 0,void 0,o().mark((function e(){var r,n,i,a;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r={browseId:this.playlistIdPad(t),browseEndpointContextSupportedConfigs:{browseEndpointContextMusicConfig:{pageType:"MUSIC_PAGE_TYPE_PLAYLIST"}}},e.next=3,this.sendRequest("browse",r);case 3:n=e.sent,i=this.playlistParser.parsePlaylistDetailResponse(n);case 5:if(!i.continuationToken){e.next=12;break}return e.next=8,this.sendRequest("browse",r,"ctoken=".concat(i.continuationToken,"&continuation=").concat(i.continuationToken));case 8:a=e.sent,this.playlistParser.parsePlaylistDetailContinuation(i,a),e.next=5;break;case 12:return e.abrupt("return",i);case 13:case"end":return e.stop()}}),e,this)})))}}],r&&i(e.prototype,r),Object.defineProperty(e,"prototype",{writable:!1}),h}(c(r(409)).default);e.default=l},365:function(t,e,r){function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(){o=function(){return e};var t,e={},r=Object.prototype,i=r.hasOwnProperty,a=Object.defineProperty||function(t,e,r){t[e]=r.value},u="function"==typeof Symbol?Symbol:{},s=u.iterator||"@@iterator",c=u.asyncIterator||"@@asyncIterator",l=u.toStringTag||"@@toStringTag";function f(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{f({},"")}catch(t){f=function(t,e,r){return t[e]=r}}function h(t,e,r,n){var o=e&&e.prototype instanceof g?e:g,i=Object.create(o.prototype),u=new A(n||[]);return a(i,"_invoke",{value:j(t,r,u)}),i}function p(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}e.wrap=h;var y="suspendedStart",v="suspendedYield",d="executing",m="completed",b={};function g(){}function w(){}function _(){}var k={};f(k,s,(function(){return this}));var x=Object.getPrototypeOf,S=x&&x(x(L([])));S&&S!==r&&i.call(S,s)&&(k=S);var O=_.prototype=g.prototype=Object.create(k);function E(t){["next","throw","return"].forEach((function(e){f(t,e,(function(t){return this._invoke(e,t)}))}))}function P(t,e){function r(o,a,u,s){var c=p(t[o],t,a);if("throw"!==c.type){var l=c.arg,f=l.value;return f&&"object"==n(f)&&i.call(f,"__await")?e.resolve(f.__await).then((function(t){r("next",t,u,s)}),(function(t){r("throw",t,u,s)})):e.resolve(f).then((function(t){l.value=t,u(l)}),(function(t){return r("throw",t,u,s)}))}s(c.arg)}var o;a(this,"_invoke",{value:function(t,n){function i(){return new e((function(e,o){r(t,n,e,o)}))}return o=o?o.then(i,i):i()}})}function j(e,r,n){var o=y;return function(i,a){if(o===d)throw new Error("Generator is already running");if(o===m){if("throw"===i)throw a;return{value:t,done:!0}}for(n.method=i,n.arg=a;;){var u=n.delegate;if(u){var s=R(u,n);if(s){if(s===b)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===y)throw o=m,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=d;var c=p(e,r,n);if("normal"===c.type){if(o=n.done?m:v,c.arg===b)continue;return{value:c.arg,done:n.done}}"throw"===c.type&&(o=m,n.method="throw",n.arg=c.arg)}}}function R(e,r){var n=r.method,o=e.iterator[n];if(o===t)return r.delegate=null,"throw"===n&&e.iterator.return&&(r.method="return",r.arg=t,R(e,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),b;var i=p(o,e.iterator,r.arg);if("throw"===i.type)return r.method="throw",r.arg=i.arg,r.delegate=null,b;var a=i.arg;return a?a.done?(r[e.resultName]=a.value,r.next=e.nextLoc,"return"!==r.method&&(r.method="next",r.arg=t),r.delegate=null,b):a:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,b)}function T(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function I(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function A(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(T,this),this.reset(!0)}function L(e){if(e||""===e){var r=e[s];if(r)return r.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var o=-1,a=function r(){for(;++o=0;--o){var a=this.tryEntries[o],u=a.completion;if("root"===a.tryLoc)return n("end");if(a.tryLoc<=this.prev){var s=i.call(a,"catchLoc"),c=i.call(a,"finallyLoc");if(s&&c){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&i.call(n,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),I(r),b}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;I(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,r,n){return this.delegate={iterator:L(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),b}},e}function i(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r1&&void 0!==arguments[1]?arguments[1]:0,r=arguments.length>2?arguments[2]:void 0;return u(this,void 0,void 0,o().mark((function n(){var a,u,s;return o().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,a=(0,c.parseAuth)(t,e),f=2,u=function(t){if(Array.isArray(t))return t}(o=a)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,u=[],s=!0,c=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;s=!1}else for(;!(s=(n=i.call(r)).done)&&(u.push(n.value),u.length!==e);s=!0);}catch(t){c=!0,o=t}finally{try{if(!s&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(c)throw o}}return u}}(o,f)||function(t,e){if(t){if("string"==typeof t)return i(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?i(t,e):void 0}}(o,f)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),s=u[0],u[1],n.abrupt("return",new l.default(s,e,r));case 5:throw n.prev=5,n.t0=n.catch(0),n.t0;case 8:case"end":return n.stop()}var o,f}),n,null,[[0,5]])})))}},{key:"guest",value:function(){return u(this,void 0,void 0,o().mark((function t(){return o().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",new f.default);case 1:case"end":return t.stop()}}),t)})))}}],r&&a(e.prototype,r),Object.defineProperty(e,"prototype",{writable:!1}),t}();e.default=h},479:function(t,e,r){var n=this&&this.__createBinding||(Object.create?function(t,e,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(e,r);o&&!("get"in o?!e.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,n,o)}:function(t,e,r,n){void 0===n&&(n=r),t[n]=e[r]}),o=this&&this.__exportStar||function(t,e){for(var r in t)"default"===r||Object.prototype.hasOwnProperty.call(e,r)||n(e,t,r)},i=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=r(365);Object.defineProperty(e,"default",{enumerable:!0,get:function(){return i(a).default}}),o(r(77),e),o(r(98),e)},799:e=>{e.exports=t},26:t=>{t.exports=e}},n={};return function t(e){var o=n[e];if(void 0!==o)return o.exports;var i=n[e]={exports:{}};return r[e].call(i.exports,i,i.exports,t),i.exports}(479)})())); -\ No newline at end of file diff --git a/src/backend/common/AbstractComponent.ts b/src/backend/common/AbstractComponent.ts index 3ae51e5f..3d42b7ee 100644 --- a/src/backend/common/AbstractComponent.ts +++ b/src/backend/common/AbstractComponent.ts @@ -318,4 +318,8 @@ export default abstract class AbstractComponent { return play; } } + + public additionalApiData(): Record { + return {}; + } } diff --git a/src/backend/common/infrastructure/config/source/ytmusic.ts b/src/backend/common/infrastructure/config/source/ytmusic.ts index 2e70513a..215a1c8d 100644 --- a/src/backend/common/infrastructure/config/source/ytmusic.ts +++ b/src/backend/common/infrastructure/config/source/ytmusic.ts @@ -1,32 +1,15 @@ import { PollingOptions } from "../common.js"; import { CommonSourceConfig, CommonSourceData, CommonSourceOptions } from "./index.js"; -export interface YTMusicCredentials { - /** - * The cookie retrieved from the Request Headers of music.youtube.com after logging in. - * - * See https://github.com/nickp10/youtube-music-ts-api/blob/master/DOCUMENTATION.md#authenticate and https://ytmusicapi.readthedocs.io/en/latest/setup.html#copy-authentication-headers for how to retrieve this value. - * - * @examples ["VISITOR_INFO1_LIVE=jMp2xA1Xz2_PbVc; __Secure-3PAPISID=3AxsXpy0M/AkISpjek; ..."] - * */ - cookie: string - /** - * If the 'X-Goog-AuthUser' header is present in the Request Headers for music.youtube.com it must also be included - * - * @example [0] - * */ - authUser?: number | string -} - -export interface YTMusicData extends YTMusicCredentials, CommonSourceData, PollingOptions { +export interface YTMusicData extends CommonSourceData, PollingOptions { } export interface YTMusicSourceConfig extends CommonSourceConfig { - data: YTMusicData + data?: YTMusicData options?: CommonSourceOptions & { /** - * When true MS will log to DEBUG what parts of the cookie are updated by YTM + * When true MS will log to DEBUG all of the credentials data it receives from YTM * */ - logAuthUpdateChanges?: boolean + logAuth?: boolean } } diff --git a/src/backend/server/api.ts b/src/backend/server/api.ts index 6335015a..1dc5ae55 100644 --- a/src/backend/server/api.ts +++ b/src/backend/server/api.ts @@ -190,7 +190,8 @@ export const setupApi = (app: ExpressWithAsync, logger: Logger, appLoggerStream: authed, players: 'players' in x ? (x as MemorySource).playersToObject() : {}, sot: ('playerSourceOfTruth' in x) ? x.playerSourceOfTruth : SOURCE_SOT.HISTORY, - supportsUpstreamRecentlyPlayed: x.supportsUpstreamRecentlyPlayed + supportsUpstreamRecentlyPlayed: x.supportsUpstreamRecentlyPlayed, + ...x.additionalApiData() }; if(!x.isReady()) { if(x.buildOK === false) { diff --git a/src/backend/server/auth.ts b/src/backend/server/auth.ts index 10898a1d..dc41fa0c 100644 --- a/src/backend/server/auth.ts +++ b/src/backend/server/auth.ts @@ -7,6 +7,7 @@ import ScrobbleClients from "../scrobblers/ScrobbleClients.js"; import LastfmSource from "../sources/LastfmSource.js"; import ScrobbleSources from "../sources/ScrobbleSources.js"; import SpotifySource from "../sources/SpotifySource.js"; +import YTMusicSource from "../sources/YTMusicSource.js"; export const setupAuthRoutes = (app: ExpressWithAsync, logger: Logger, sourceMiddle: ExpressHandler, clientMiddle: ExpressHandler, scrobbleSources: ScrobbleSources, scrobbleClients: ScrobbleClients) => { app.use('/api/client/auth', clientMiddle); @@ -49,6 +50,10 @@ export const setupAuthRoutes = (app: ExpressWithAsync, logger: Logger, sourceMid // @ts-expect-error TS(2339): Property 'deezerSource' does not exist on type 'Se... Remove this comment to see the full error message req.session.deezerSource = name; return passport.authenticate(`deezer-${source.name}`)(req,res,next); + case 'ytmusic': + await (source as YTMusicSource).reauthenticate(); + res.redirect((source as YTMusicSource).verificationUrl); + break; default: return res.status(400).send(`Specified source does not have auth implemented (${source.type})`); } diff --git a/src/backend/sources/YTMusicSource.ts b/src/backend/sources/YTMusicSource.ts index 621c8ce1..e3d7efae 100644 --- a/src/backend/sources/YTMusicSource.ts +++ b/src/backend/sources/YTMusicSource.ts @@ -1,12 +1,11 @@ import dayjs from "dayjs"; import EventEmitter from "events"; -import YouTubeMusic from "youtube-music-ts-api"; -import { IYouTubeMusicAuthenticated } from "youtube-music-ts-api/interfaces-primary"; -import { IPlaylistDetail, ITrackDetail } from "youtube-music-ts-api/interfaces-supplementary"; import { PlayObject } from "../../core/Atomic.js"; import { FormatPlayObjectOptions, InternalConfig } from "../common/infrastructure/Atomic.js"; -import { YTMusicCredentials, YTMusicSourceConfig } from "../common/infrastructure/config/source/ytmusic.js"; -import { parseDurationFromTimestamp, readJson, writeFile } from "../utils.js"; +import { YTMusicSourceConfig } from "../common/infrastructure/config/source/ytmusic.js"; +import { Innertube, UniversalCache, Parser, YTNodes, ApiResponse, IBrowseResponse } from 'youtubei.js'; +import {resolve} from 'path'; +import { sleep } from "../utils.js"; import { getPlaysDiff, humanReadableDiff, @@ -15,93 +14,177 @@ import { } from "../utils/PlayComparisonUtils.js"; import AbstractSource, { RecentlyPlayedOptions } from "./AbstractSource.js"; +export const ytiHistoryResponseToListItems = (res: ApiResponse): YTNodes.MusicResponsiveListItem[] => { + const page = Parser.parseResponse(res.data); + const items = page.contents_memo.getType(YTNodes.MusicResponsiveListItem); + return Array.from(items); +} + +const maybeJsonErrorInfo = (err: Error): object | string | undefined => { + if('info' in err) { + try { + return JSON.parse(err.info as string); + } catch (e) { + return err.info as string; + } + } + return undefined; +} + +const loggedErrorExtra = (err: Error): object | undefined => { + const maybeInfo = maybeJsonErrorInfo(err); + if(maybeInfo === undefined) { + return undefined; + } + if(typeof maybeInfo === 'string') { + return {apiResponse: maybeInfo}; + } + return maybeInfo; +} + +export const ytiHistoryResponseFromShelfToPlays = (res: ApiResponse): PlayObject[] => { + const page = Parser.parseResponse(res.data); + const items: PlayObject[] = []; + const shelves = page.contents_memo.getType(YTNodes.MusicShelf); + shelves.forEach((shelf) => { + shelf.contents.forEach((listItem) => { + items.push(YTMusicSource.formatPlayObj(listItem, {shelf: shelf.title.text})); + }); + }); + return items; +} + export default class YTMusicSource extends AbstractSource { - apiInstance?: IYouTubeMusicAuthenticated requiresAuth = true; + requiresAuthInteraction = true; declare config: YTMusicSourceConfig recentlyPlayed: PlayObject[] = []; + yti: Innertube; + userCode?: string; + verificationUrl?: string; + workingCredsPath: string; - currentCreds!: YTMusicCredentials; constructor(name: string, config: YTMusicSourceConfig, internal: InternalConfig, emitter: EventEmitter) { super('ytmusic', name, config, internal, emitter); this.canPoll = true; this.supportsUpstreamRecentlyPlayed = true; - this.workingCredsPath = `${this.configDir}/currentAuth-ytm-${name}.json`; + this.workingCredsPath = resolve(this.configDir, `yti-${this.name}`); } - protected writeCurrentAuth = async (cookie: string, authUser: number) => { - await writeFile(this.workingCredsPath, JSON.stringify({ - cookie, - authUser - })); + public additionalApiData(): Record { + const data: Record = {}; + if(this.userCode !== undefined) { + data.userCode = this.userCode; + } + return data; } protected async doBuildInitData(): Promise { - let creds: YTMusicCredentials; - try { - creds = await readJson(this.workingCredsPath, {throwOnNotFound: false}) as YTMusicCredentials; - if(creds !== undefined) { - this.currentCreds = creds; - return `Read updated credentials from file currentAuth-ytm-${this.name}.json`; + this.yti = await Innertube.create({ + cache: new UniversalCache(true, this.workingCredsPath) + }); + this.yti.session.on('update-credentials', async ({ credentials }) => { + if(this.config.options?.logAuth) { + this.logger.debug(credentials, 'Credentials updated'); + } else { + this.logger.debug('Credentials updated'); } - } catch (e) { - this.logger.warn('Current YTMusic credentials file exists but could not be parsed', { path: this.workingCredsPath }); - } - if(creds === undefined) { - if(this.config.data.cookie === undefined) { - throw new Error('No YTM cookies were found in configuration'); + await this.yti.session.oauth.cacheCredentials(); + }); + this.yti.session.on('auth-pending', async (data) => { + this.userCode = data.user_code; + this.verificationUrl = data.verification_url; + }); + this.yti.session.on('auth-error', async (data) => { + this.logger.error(new Error('YTM Authentication error', {cause: data})); + }); + this.yti.session.on('auth', async ({ credentials }) => { + if(this.config.options?.logAuth) { + this.logger.debug(credentials, 'Auth success'); + } else { + this.logger.debug('Auth success'); } - this.currentCreds = this.config.data; - return 'Read initial credentials from config'; - } + await this.yti.session.oauth.cacheCredentials(); + this.userCode = undefined; + this.verificationUrl = undefined; + this.authed = true; + }); + return true; + } + + reauthenticate = async () => { + await this.tryStopPolling(); + await this.clearCredentials(); + this.authed = false; + await this.testAuth(); + } + + clearCredentials = async () => { + await this.yti.session.signOut(); } doAuthentication = async () => { try { - await this.getRecentlyPlayed(); - return true; - } catch (e) { - if(e.message.includes('Status code: 401')) { - let hint = 'Verify your cookie and authUser are correct.'; - if(this.currentCreds.authUser === undefined) { - hint = `${hint} TIP: 'authUser' is not defined your credentials. If you are using Chrome to retrieve credentials from music.youtube.com make sure the value from the 'X-Goog-AuthUser' is used as 'authUser'.`; + await Promise.race([ + sleep(300), + this.yti.session.signIn() + ]); + if(this.authed === false && this.userCode !== undefined) { + if(this.userCode !== undefined) { + throw new Error(`Sign in with the code '${this.userCode}' using the authentication link on the dashboard or ${this.verificationUrl}`) + } else { + throw new Error('Waited too long for auth response from YTM!'); + } + } + try { + await this.yti.account.getInfo() + } catch (e) { + const info = loggedErrorExtra(e); + if(info !== undefined) { + this.logger.error(info, 'Additional API response details') } - this.logger.error(`Authentication failed with the given credentials. ${hint} | Error => ${e.message}`); + throw new Error('Credentials exist but API calls are failing. Try re-authenticating?', {cause: e}); } + return true; + } catch (e) { throw e; } } - static formatPlayObj(obj: ITrackDetail, options: FormatPlayObjectOptions = {}): PlayObject { - const {newFromSource = false} = options; + static formatPlayObj(obj: YTNodes.MusicResponsiveListItem, options: FormatPlayObjectOptions = {}): PlayObject { + const {newFromSource = false, shelf = undefined} = options; const { id, title, album: albumData, artists: artistsData, - duration: durTimestamp, // string timestamp + authors: authorData, + duration: dur, // string timestamp } = obj; - let artists = undefined, + let artists = [], album = undefined, duration = undefined; if(artistsData !== undefined) { artists = artistsData.map(x => x.name) as string[]; + } else if(authorData !== undefined) { + artists = authorData.map(x => x.name) as string[]; } + let albumArtists: string[] = []; + if(artistsData !== undefined && authorData !== undefined) { + albumArtists = authorData.map(x => x.name) as string[]; + } if(albumData !== undefined) { album = albumData.name; - if(albumData.artist !== undefined) { - albumArtists = [albumData.artist.name]; - } } - if(durTimestamp !== undefined) { - const durObj = parseDurationFromTimestamp(durTimestamp); + if(dur!== undefined) { + const durObj = dayjs.duration(dur.seconds, 's') duration = durObj.asSeconds(); } return { @@ -118,57 +201,14 @@ export default class YTMusicSource extends AbstractSource { source: 'YTMusic', trackId: id, newFromSource, + comment: shelf } } } recentlyPlayedTrackIsValid = (playObj: PlayObject) => playObj.meta.newFromSource - protected onAuthUpdate = (cookieStr: string, authUser: number, updated: Map) => { - const { - options: { - logAuthUpdateChanges = false - } = {} - } = this.config; - - if(logAuthUpdateChanges) { - const parts: string[] = []; - if(authUser !== this.currentCreds.authUser) { - parts.push(`X-Goog-Authuser: ${authUser}`); - } - for(const [k,v] of updated) { - parts.push(`Cookie ${k}: Old => ${v.old} | New => ${v.new}`); - } - this.logger.info(`Updated Auth -->\n${parts.join('\n')}`); - } else { - this.logger.verbose(`Updated Auth`); - } - - this.currentCreds = { - cookie: cookieStr, - authUser - }; - - - this.writeCurrentAuth(cookieStr, authUser).then(() => {}); - } - - api = async (): Promise => { - if(this.apiInstance !== undefined) { - return this.apiInstance; - } - // @ts-expect-error default does exist - const ytm = new YouTubeMusic.default() as YouTubeMusic; - try { - this.apiInstance = await ytm.authenticate(this.currentCreds.cookie, typeof this.config.data.authUser === 'string' ? Number.parseInt(this.config.data.authUser) : this.config.data.authUser, this.onAuthUpdate); - } catch (e: any) { - this.logger.error('Failed to authenticate', e); - throw e; - } - return this.apiInstance; - } - - protected getLibraryHistory = async (): Promise => { + protected getLibraryHistory = async (): Promise => { // internally for this call YT returns a *list* of playlists with decreasing granularity from most recent to least recent like this: // * Today // * Yesterday @@ -177,14 +217,17 @@ export default class YTMusicSource extends AbstractSource { // // the playlist returned can therefore change abruptly IE MS started yesterday and new music listened to today -> "today" playlist is cleared try { - const playlist = await (await this.api()).getLibraryHistory(); - return {tracks: [], ...playlist}; + const res = await this.yti.actions.execute('/browse', { + browse_id: 'FEmusic_history', + client: 'YTMUSIC' + }); + return res; } catch (e) { throw e; } } - protected getLibraryHistoryPlaylists = async (): Promise => { + protected getLibraryHistoryPlaylists = async (): Promise => { // internally for this call YT returns a *list* of playlists with decreasing granularity from most recent to least recent like this: // * Today // * Yesterday @@ -193,26 +236,19 @@ export default class YTMusicSource extends AbstractSource { // // the playlist returned can therefore change abruptly IE MS started yesterday and new music listened to today -> "today" playlist is cleared try { - return await (await this.api()).getLibraryHistory(true) as IPlaylistDetail[]; + const res = await this.getLibraryHistory(); + return ytiHistoryResponseFromShelfToPlays(res); } catch (e) { + const info = loggedErrorExtra(e); + if(info !== undefined) { + this.logger.error(info, 'Additional API response details') + } throw e; } } getUpstreamRecentlyPlayed = async (options: RecentlyPlayedOptions = {}): Promise => { - let playlists: IPlaylistDetail[]; - try { - playlists = await this.getLibraryHistoryPlaylists() - } catch (e) { - throw e; - } - const playlistAwareTracks: PlayObject[][] = []; - - for(const playlist of playlists) { - playlistAwareTracks.push(playlist.tracks.map((x) => YTMusicSource.formatPlayObj(x, {newFromSource: false})).map((x) => ({...x,meta: {...x.meta, comment: playlist.name}}))) - } - - return playlistAwareTracks.flat(1).slice(0, 100); + return (await this.getLibraryHistoryPlaylists()).slice(0, 100); } /** @@ -221,7 +257,7 @@ export default class YTMusicSource extends AbstractSource { getRecentlyPlayed = async (options: RecentlyPlayedOptions = {}) => { const { display = false } = options; - let playlistDetail: IPlaylistDetail; + let playlistDetail: ApiResponse; try { playlistDetail = await this.getLibraryHistory(); } catch (e) { @@ -230,7 +266,7 @@ export default class YTMusicSource extends AbstractSource { let newPlays: PlayObject[] = []; - const plays = playlistDetail.tracks.map((x) => YTMusicSource.formatPlayObj(x, {newFromSource: false})).slice(0, 20); + const plays = ytiHistoryResponseToListItems(playlistDetail).map((x) => YTMusicSource.formatPlayObj(x, {newFromSource: false})).slice(0, 20); if(this.polling === false) { this.recentlyPlayed = plays; newPlays = plays; diff --git a/src/backend/tests/ytm/ytm.test.ts b/src/backend/tests/ytm/ytm.test.ts new file mode 100644 index 00000000..9ea14d1f --- /dev/null +++ b/src/backend/tests/ytm/ytm.test.ts @@ -0,0 +1,21 @@ +import { after, before, describe, it } from 'mocha'; +import chai, { assert, expect } from 'chai'; +import asPromised from 'chai-as-promised'; +import { Innertube, UniversalCache, Parser, YTNodes, IBrowseResponse } from 'youtubei.js'; +import { ytiHistoryResponseFromShelfToPlays, ytiHistoryResponseToListItems } from "../../sources/YTMusicSource.js"; +import ytHistoryRes from './ytres.json'; + +chai.use(asPromised); + +describe('Parses History', function () { + + it(`Parses a history response to tracks`, async function () { + const items = ytiHistoryResponseToListItems(ytHistoryRes); + expect(items).length(10); + }); + + it(`Parses a history response plays with shelf name`, async function () { + const items = ytiHistoryResponseFromShelfToPlays(ytHistoryRes); + expect(items[0]?.meta?.comment).to.eq('March 2023'); + }); +}); diff --git a/src/backend/tests/ytm/ytres.json b/src/backend/tests/ytm/ytres.json new file mode 100644 index 00000000..3d1187f8 --- /dev/null +++ b/src/backend/tests/ytm/ytres.json @@ -0,0 +1,5480 @@ +{ + "success": true, + "status_code": 200, + "data": { + "responseContext": { + "serviceTrackingParams": [ + { + "service": "GFEEDBACK", + "params": [ + { + "key": "browse_id", + "value": "FEmusic_history" + }, + { + "key": "browse_id_prefix", + "value": "" + }, + { + "key": "logged_in", + "value": "1" + }, + { + "key": "e", + "value": "9406004,23804281,23966208,24004644,24077241,24181174,24241378,24439361,24459435,24542367,24548629,24566687,51009781,51010235,51017346,51020570,51025415,51041512,51050361,51053689,51063643,51064835,51065188,51089007,51098297,51098299,51111738,51115184,51117319,51124104,51125020,51133103,51152050,51157411,51157841,51157895,51158514,51160545,51162170,51165467,51169118,51176511,51177817,51178982,51183909,51186528,51190652,51195231,51204329,51217504,51221011,51223962,51224135,51225967,51227037,51228350,51230241,51230478,51231814,51237842,51239093,51241028,51242447,51243940,51248255,51248734,51251836,51255676,51255680,51255743,51256084,51258066,51266454,51267568,51268362,51275782,51276557,51276565,51276640,51281227,51284653,51286051,51287196,51287500,51289938,51295132,51295408,51296439,51298018,51298829,51299710,51299724,51300414,51300530,51300699,51300760,51302359,51302492,51302680,51303666,51303667,51303669,51303790,51304121,51304155,51305840,51305952,51307723,51309313,51310323,51312153,51313148" + } + ] + }, + { + "service": "CSI", + "params": [ + { + "key": "c", + "value": "WEB_REMIX" + }, + { + "key": "cver", + "value": "1.20211213.00.00" + }, + { + "key": "yt_li", + "value": "1" + }, + { + "key": "GetBrowseHistoryPage_rid", + "value": "0xdaafccf3094c8a75" + } + ] + }, + { + "service": "ECATCHER", + "params": [ + { + "key": "client.version", + "value": "1.20000101" + }, + { + "key": "client.name", + "value": "WEB_REMIX" + } + ] + } + ], + "maxAgeSeconds": 0 + }, + "contents": { + "singleColumnBrowseResultsRenderer": { + "tabs": [ + { + "tabRenderer": { + "title": "Recently played", + "selected": true, + "content": { + "sectionListRenderer": { + "contents": [ + { + "musicShelfRenderer": { + "title": { + "runs": [ + { + "text": "March 2023" + } + ] + }, + "contents": [ + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CJoBEMn0AhgAIhMIt_TqieGBiQMVxdVyCR1QITDt", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/lK5HVlcs0og/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3n6IBQoqXjxzwft7oN7A06fHgAzLQ", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CKcBEIS_AiITCLf06onhgYkDFcXVcgkdUCEw7Q==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CKYBEMjeAiITCLf06onhgYkDFcXVcgkdUCEw7Q==", + "watchEndpoint": { + "videoId": "lK5HVlcs0og", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "trackingParams": "CKYBEMjeAiITCLf06onhgYkDFcXVcgkdUCEw7Q==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Oil - Gorillaz" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Oil - Gorillaz" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Oil (feat. Stevie Nicks)", + "navigationEndpoint": { + "clickTrackingParams": "CJoBEMn0AhgAIhMIt_TqieGBiQMVxdVyCR1QITDt", + "watchEndpoint": { + "videoId": "lK5HVlcs0og", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Gorillaz", + "navigationEndpoint": { + "clickTrackingParams": "CJoBEMn0AhgAIhMIt_TqieGBiQMVxdVyCR1QITDt", + "browseEndpoint": { + "browseId": "UCNIV5B_aJnLrKDSnW_MOmcQ", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + }, + { + "text": " • " + }, + { + "text": "2.1M views" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "3:51" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKUBEJvzBRgAIhMIt_TqieGBiQMVxdVyCR1QITDt", + "watchEndpoint": { + "videoId": "lK5HVlcs0og", + "playlistId": "RDAMVMlK5HVlcs0og", + "params": "wAEB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1sSzVIVmxjczBvZw%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "trackingParams": "CKUBEJvzBRgAIhMIt_TqieGBiQMVxdVyCR1QITDt" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKMBEL7uBRgBIhMIt_TqieGBiQMVxdVyCR1QITDt", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "lK5HVlcs0og", + "onEmptyQueue": { + "clickTrackingParams": "CKMBEL7uBRgBIhMIt_TqieGBiQMVxdVyCR1QITDt", + "watchEndpoint": { + "videoId": "lK5HVlcs0og" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CKMBEL7uBRgBIhMIt_TqieGBiQMVxdVyCR1QITDt", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CKQBEMrHAyITCLf06onhgYkDFcXVcgkdUCEw7Q==" + } + } + } + } + ] + } + }, + "trackingParams": "CKMBEL7uBRgBIhMIt_TqieGBiQMVxdVyCR1QITDt" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKEBEPvvBRgCIhMIt_TqieGBiQMVxdVyCR1QITDt", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "lK5HVlcs0og", + "onEmptyQueue": { + "clickTrackingParams": "CKEBEPvvBRgCIhMIt_TqieGBiQMVxdVyCR1QITDt", + "watchEndpoint": { + "videoId": "lK5HVlcs0og" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CKEBEPvvBRgCIhMIt_TqieGBiQMVxdVyCR1QITDt", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CKIBEMrHAyITCLf06onhgYkDFcXVcgkdUCEw7Q==" + } + } + } + } + ] + } + }, + "trackingParams": "CKEBEPvvBRgCIhMIt_TqieGBiQMVxdVyCR1QITDt" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKABEMOUBhgDIhMIt_TqieGBiQMVxdVyCR1QITDt", + "addToPlaylistEndpoint": { + "videoId": "lK5HVlcs0og" + } + }, + "trackingParams": "CKABEMOUBhgDIhMIt_TqieGBiQMVxdVyCR1QITDt" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJ8BEJD7BRgEIhMIt_TqieGBiQMVxdVyCR1QITDt", + "browseEndpoint": { + "browseId": "UCNIV5B_aJnLrKDSnW_MOmcQ", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + }, + "trackingParams": "CJ8BEJD7BRgEIhMIt_TqieGBiQMVxdVyCR1QITDt" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJ4BEJH7BRgFIhMIt_TqieGBiQMVxdVyCR1QITDt", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtsSzVIVmxjczBvZw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CJ4BEJH7BRgFIhMIt_TqieGBiQMVxdVyCR1QITDt" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Remove from history" + } + ] + }, + "icon": { + "iconType": "REMOVE_FROM_HISTORY" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJsBEKc7IhMIt_TqieGBiQMVxdVyCR1QITDt", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpK44OPe9xRf5FyjrM14f9l0jy-shAx9lcuoSa1AXxSX8teMWvyCmPZhJp1CLrGGTSF-CAe7NG2FwuuFHCKpzdP9aWH6PA", + "actions": [ + { + "clickTrackingParams": "CJsBEKc7IhMIt_TqieGBiQMVxdVyCR1QITDt", + "hideEnclosingAction": { + "hack": true + } + }, + { + "clickTrackingParams": "CJsBEKc7IhMIt_TqieGBiQMVxdVyCR1QITDt", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "This item has been removed from your history." + } + ] + }, + "trackingParams": "CJ0BEMrHAyITCLf06onhgYkDFcXVcgkdUCEw7Q==" + } + } + } + } + ] + } + }, + "trackingParams": "CJsBEKc7IhMIt_TqieGBiQMVxdVyCR1QITDt" + } + } + ], + "trackingParams": "CJsBEKc7IhMIt_TqieGBiQMVxdVyCR1QITDt", + "topLevelButtons": [ + { + "likeButtonRenderer": { + "target": { + "videoId": "lK5HVlcs0og" + }, + "likeStatus": "INDIFFERENT", + "trackingParams": "CJwBEKVBGAciEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "CJwBEKVBGAciEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "likeEndpoint": { + "status": "LIKE", + "target": { + "videoId": "lK5HVlcs0og" + } + } + }, + { + "clickTrackingParams": "CJwBEKVBGAciEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "likeEndpoint": { + "status": "DISLIKE", + "target": { + "videoId": "lK5HVlcs0og" + } + } + }, + { + "clickTrackingParams": "CJwBEKVBGAciEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "videoId": "lK5HVlcs0og" + } + } + } + ] + } + } + ], + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "playlistItemData": { + "videoId": "lK5HVlcs0og" + } + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CIwBEMn0AhgBIhMIt_TqieGBiQMVxdVyCR1QITDt", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/S03T47hapAc/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3mpyeV7fqoxVkHya4TPBGkZvJpuBg", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CJkBEIS_AiITCLf06onhgYkDFcXVcgkdUCEw7Q==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CJgBEMjeAiITCLf06onhgYkDFcXVcgkdUCEw7Q==", + "watchEndpoint": { + "videoId": "S03T47hapAc", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "trackingParams": "CJgBEMjeAiITCLf06onhgYkDFcXVcgkdUCEw7Q==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Cracker Island - Gorillaz" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Cracker Island - Gorillaz" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Cracker Island (feat. Thundercat)", + "navigationEndpoint": { + "clickTrackingParams": "CIwBEMn0AhgBIhMIt_TqieGBiQMVxdVyCR1QITDt", + "watchEndpoint": { + "videoId": "S03T47hapAc", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Gorillaz", + "navigationEndpoint": { + "clickTrackingParams": "CIwBEMn0AhgBIhMIt_TqieGBiQMVxdVyCR1QITDt", + "browseEndpoint": { + "browseId": "UCNIV5B_aJnLrKDSnW_MOmcQ", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + }, + { + "text": " • " + }, + { + "text": "47M views" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "3:39" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJcBEJvzBRgAIhMIt_TqieGBiQMVxdVyCR1QITDt", + "watchEndpoint": { + "videoId": "S03T47hapAc", + "playlistId": "RDAMVMS03T47hapAc", + "params": "wAEB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1TMDNUNDdoYXBBYw%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "trackingParams": "CJcBEJvzBRgAIhMIt_TqieGBiQMVxdVyCR1QITDt" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJUBEL7uBRgBIhMIt_TqieGBiQMVxdVyCR1QITDt", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "S03T47hapAc", + "onEmptyQueue": { + "clickTrackingParams": "CJUBEL7uBRgBIhMIt_TqieGBiQMVxdVyCR1QITDt", + "watchEndpoint": { + "videoId": "S03T47hapAc" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CJUBEL7uBRgBIhMIt_TqieGBiQMVxdVyCR1QITDt", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CJYBEMrHAyITCLf06onhgYkDFcXVcgkdUCEw7Q==" + } + } + } + } + ] + } + }, + "trackingParams": "CJUBEL7uBRgBIhMIt_TqieGBiQMVxdVyCR1QITDt" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJMBEPvvBRgCIhMIt_TqieGBiQMVxdVyCR1QITDt", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "S03T47hapAc", + "onEmptyQueue": { + "clickTrackingParams": "CJMBEPvvBRgCIhMIt_TqieGBiQMVxdVyCR1QITDt", + "watchEndpoint": { + "videoId": "S03T47hapAc" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CJMBEPvvBRgCIhMIt_TqieGBiQMVxdVyCR1QITDt", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CJQBEMrHAyITCLf06onhgYkDFcXVcgkdUCEw7Q==" + } + } + } + } + ] + } + }, + "trackingParams": "CJMBEPvvBRgCIhMIt_TqieGBiQMVxdVyCR1QITDt" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJIBEMOUBhgDIhMIt_TqieGBiQMVxdVyCR1QITDt", + "addToPlaylistEndpoint": { + "videoId": "S03T47hapAc" + } + }, + "trackingParams": "CJIBEMOUBhgDIhMIt_TqieGBiQMVxdVyCR1QITDt" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJEBEJD7BRgEIhMIt_TqieGBiQMVxdVyCR1QITDt", + "browseEndpoint": { + "browseId": "UCNIV5B_aJnLrKDSnW_MOmcQ", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + }, + "trackingParams": "CJEBEJD7BRgEIhMIt_TqieGBiQMVxdVyCR1QITDt" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJABEJH7BRgFIhMIt_TqieGBiQMVxdVyCR1QITDt", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtTMDNUNDdoYXBBYw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CJABEJH7BRgFIhMIt_TqieGBiQMVxdVyCR1QITDt" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Remove from history" + } + ] + }, + "icon": { + "iconType": "REMOVE_FROM_HISTORY" + }, + "serviceEndpoint": { + "clickTrackingParams": "CI0BEKc7IhMIt_TqieGBiQMVxdVyCR1QITDt", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJEZGr5oUyd1nMJS28h8PuaYqLd1991E-0MR78jcHoAq5vXzOB7bqAi4IXaPoVOPketJdtJCMvn89R8j4Xyb3etB-xKSQ", + "actions": [ + { + "clickTrackingParams": "CI0BEKc7IhMIt_TqieGBiQMVxdVyCR1QITDt", + "hideEnclosingAction": { + "hack": true + } + }, + { + "clickTrackingParams": "CI0BEKc7IhMIt_TqieGBiQMVxdVyCR1QITDt", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "This item has been removed from your history." + } + ] + }, + "trackingParams": "CI8BEMrHAyITCLf06onhgYkDFcXVcgkdUCEw7Q==" + } + } + } + } + ] + } + }, + "trackingParams": "CI0BEKc7IhMIt_TqieGBiQMVxdVyCR1QITDt" + } + } + ], + "trackingParams": "CI0BEKc7IhMIt_TqieGBiQMVxdVyCR1QITDt", + "topLevelButtons": [ + { + "likeButtonRenderer": { + "target": { + "videoId": "S03T47hapAc" + }, + "likeStatus": "INDIFFERENT", + "trackingParams": "CI4BEKVBGAciEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "CI4BEKVBGAciEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "likeEndpoint": { + "status": "LIKE", + "target": { + "videoId": "S03T47hapAc" + } + } + }, + { + "clickTrackingParams": "CI4BEKVBGAciEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "likeEndpoint": { + "status": "DISLIKE", + "target": { + "videoId": "S03T47hapAc" + } + } + }, + { + "clickTrackingParams": "CI4BEKVBGAciEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "videoId": "S03T47hapAc" + } + } + } + ] + } + } + ], + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "playlistItemData": { + "videoId": "S03T47hapAc" + } + } + } + ], + "trackingParams": "CIsBEPleGAAiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "shelfDivider": { + "musicShelfDividerRenderer": { + "hidden": true + } + } + } + }, + { + "musicShelfRenderer": { + "title": { + "runs": [ + { + "text": "February 2023" + } + ] + }, + "contents": [ + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CHsQyfQCGAAiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/aZlTfoNytQ8aa6nJkrN3GclMwvPpTWoWNjaIhH4k1IZ_FB1olspeJWZELsABC032Gcm1Vq7VWUx7x2gXug=w60-h60-l90-rj", + "width": 60, + "height": 60 + }, + { + "url": "https://lh3.googleusercontent.com/aZlTfoNytQ8aa6nJkrN3GclMwvPpTWoWNjaIhH4k1IZ_FB1olspeJWZELsABC032Gcm1Vq7VWUx7x2gXug=w120-h120-l90-rj", + "width": 120, + "height": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CIoBEIS_AiITCLf06onhgYkDFcXVcgkdUCEw7Q==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CIkBEMjeAiITCLf06onhgYkDFcXVcgkdUCEw7Q==", + "watchEndpoint": { + "videoId": "LlAhFxf-BV0", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CIkBEMjeAiITCLf06onhgYkDFcXVcgkdUCEw7Q==", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Gourmet Race (From \"Kirby Superstar\") - The 8-Bit Big Band" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Gourmet Race (From \"Kirby Superstar\") - The 8-Bit Big Band" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Gourmet Race (From \"Kirby Superstar\") (feat. Sam Dillon)", + "navigationEndpoint": { + "clickTrackingParams": "CHsQyfQCGAAiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "watchEndpoint": { + "videoId": "LlAhFxf-BV0", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "The 8-Bit Big Band", + "navigationEndpoint": { + "clickTrackingParams": "CHsQyfQCGAAiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "browseEndpoint": { + "browseId": "UC4gpHwG5SQKJzV2qObgJdJg", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Backwards Compatible", + "navigationEndpoint": { + "clickTrackingParams": "CHsQyfQCGAAiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "browseEndpoint": { + "browseId": "MPREb_QwI9tAIYSEf", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "3:35" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIgBEJvzBRgAIhMIt_TqieGBiQMVxdVyCR1QITDt", + "watchEndpoint": { + "videoId": "LlAhFxf-BV0", + "playlistId": "RDAMVMLlAhFxf-BV0", + "params": "wAEB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1MbEFoRnhmLUJWMA%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CIgBEJvzBRgAIhMIt_TqieGBiQMVxdVyCR1QITDt" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIYBEL7uBRgBIhMIt_TqieGBiQMVxdVyCR1QITDt", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "LlAhFxf-BV0", + "onEmptyQueue": { + "clickTrackingParams": "CIYBEL7uBRgBIhMIt_TqieGBiQMVxdVyCR1QITDt", + "watchEndpoint": { + "videoId": "LlAhFxf-BV0" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CIYBEL7uBRgBIhMIt_TqieGBiQMVxdVyCR1QITDt", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CIcBEMrHAyITCLf06onhgYkDFcXVcgkdUCEw7Q==" + } + } + } + } + ] + } + }, + "trackingParams": "CIYBEL7uBRgBIhMIt_TqieGBiQMVxdVyCR1QITDt" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIQBEPvvBRgCIhMIt_TqieGBiQMVxdVyCR1QITDt", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "LlAhFxf-BV0", + "onEmptyQueue": { + "clickTrackingParams": "CIQBEPvvBRgCIhMIt_TqieGBiQMVxdVyCR1QITDt", + "watchEndpoint": { + "videoId": "LlAhFxf-BV0" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CIQBEPvvBRgCIhMIt_TqieGBiQMVxdVyCR1QITDt", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CIUBEMrHAyITCLf06onhgYkDFcXVcgkdUCEw7Q==" + } + } + } + } + ] + } + }, + "trackingParams": "CIQBEPvvBRgCIhMIt_TqieGBiQMVxdVyCR1QITDt" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Save to library" + } + ] + }, + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CIMBEIT_BRgDIhMIt_TqieGBiQMVxdVyCR1QITDt", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpLE7NQR22Wj326Z7Wfc8g1V-OT7QenQFJR82j_TpPlWdLnw9IgVKXsv1t3rJJB6fkfMIaBf_Q3joFZn1UZlsL8nzyXnFg" + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove from library" + } + ] + }, + "toggledIcon": { + "iconType": "LIBRARY_SAVED" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CIMBEIT_BRgDIhMIt_TqieGBiQMVxdVyCR1QITDt", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpK6N-46lmyH--aqaRbTL0De2JmFIYc8m5GQMnI5kIjpCElMko97vSDSlXqBMo5rJShJVGEFJNu1-xisheQ455C_DcV2Uw" + } + }, + "trackingParams": "CIMBEIT_BRgDIhMIt_TqieGBiQMVxdVyCR1QITDt" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIIBEMOUBhgEIhMIt_TqieGBiQMVxdVyCR1QITDt", + "addToPlaylistEndpoint": { + "videoId": "LlAhFxf-BV0" + } + }, + "trackingParams": "CIIBEMOUBhgEIhMIt_TqieGBiQMVxdVyCR1QITDt" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Go to album" + } + ] + }, + "icon": { + "iconType": "ALBUM" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIEBEI_7BRgFIhMIt_TqieGBiQMVxdVyCR1QITDt", + "browseEndpoint": { + "browseId": "MPREb_QwI9tAIYSEf", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + }, + "trackingParams": "CIEBEI_7BRgFIhMIt_TqieGBiQMVxdVyCR1QITDt" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIABEJD7BRgGIhMIt_TqieGBiQMVxdVyCR1QITDt", + "browseEndpoint": { + "browseId": "UC4gpHwG5SQKJzV2qObgJdJg", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + }, + "trackingParams": "CIABEJD7BRgGIhMIt_TqieGBiQMVxdVyCR1QITDt" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CH8QkfsFGAciEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtMbEFoRnhmLUJWMA%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CH8QkfsFGAciEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Remove from history" + } + ] + }, + "icon": { + "iconType": "REMOVE_FROM_HISTORY" + }, + "serviceEndpoint": { + "clickTrackingParams": "CHwQpzsiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpL2De8IUZhbv7DfcRX76elE4nbKHRdVVrf1PwRPlaJrakFmOzxj-qllXWTWRvrAEMi9fn04rzYAJbzDEW3wm5FXlyCvqw", + "actions": [ + { + "clickTrackingParams": "CHwQpzsiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "hideEnclosingAction": { + "hack": true + } + }, + { + "clickTrackingParams": "CHwQpzsiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "This item has been removed from your history." + } + ] + }, + "trackingParams": "CH4QyscDIhMIt_TqieGBiQMVxdVyCR1QITDt" + } + } + } + } + ] + } + }, + "trackingParams": "CHwQpzsiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + } + ], + "trackingParams": "CHwQpzsiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "topLevelButtons": [ + { + "likeButtonRenderer": { + "target": { + "videoId": "LlAhFxf-BV0" + }, + "likeStatus": "INDIFFERENT", + "trackingParams": "CH0QpUEYCSITCLf06onhgYkDFcXVcgkdUCEw7Q==", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "CH0QpUEYCSITCLf06onhgYkDFcXVcgkdUCEw7Q==", + "likeEndpoint": { + "status": "LIKE", + "target": { + "videoId": "LlAhFxf-BV0" + }, + "actions": [ + { + "clickTrackingParams": "CH0QpUEYCSITCLf06onhgYkDFcXVcgkdUCEw7Q==", + "musicLibraryStatusUpdateCommand": { + "libraryStatus": "MUSIC_LIBRARY_STATUS_IN_LIBRARY", + "addToLibraryFeedbackToken": "AB9zfpLE7NQR22Wj326Z7Wfc8g1V-OT7QenQFJR82j_TpPlWdLnw9IgVKXsv1t3rJJB6fkfMIaBf_Q3joFZn1UZlsL8nzyXnFg" + } + } + ] + } + }, + { + "clickTrackingParams": "CH0QpUEYCSITCLf06onhgYkDFcXVcgkdUCEw7Q==", + "likeEndpoint": { + "status": "DISLIKE", + "target": { + "videoId": "LlAhFxf-BV0" + } + } + }, + { + "clickTrackingParams": "CH0QpUEYCSITCLf06onhgYkDFcXVcgkdUCEw7Q==", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "videoId": "LlAhFxf-BV0" + } + } + } + ] + } + } + ], + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "playlistItemData": { + "videoId": "LlAhFxf-BV0" + } + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CGoQyfQCGAEiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/TyYSkfW7KK5oCV0rO0_NL9TZyhre2KffMonya2ll6L5xsARE1MYCMxKwIICNzDk9Cxd_L9Kxw3c8SmjjBw=w60-h60-l90-rj", + "width": 60, + "height": 60 + }, + { + "url": "https://lh3.googleusercontent.com/TyYSkfW7KK5oCV0rO0_NL9TZyhre2KffMonya2ll6L5xsARE1MYCMxKwIICNzDk9Cxd_L9Kxw3c8SmjjBw=w120-h120-l90-rj", + "width": 120, + "height": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CHoQhL8CIhMIt_TqieGBiQMVxdVyCR1QITDt" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CHkQyN4CIhMIt_TqieGBiQMVxdVyCR1QITDt", + "watchEndpoint": { + "videoId": "UFFa0QoHWvE", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CHkQyN4CIhMIt_TqieGBiQMVxdVyCR1QITDt", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Tank! - Seatbelts" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Tank! - Seatbelts" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Tank!", + "navigationEndpoint": { + "clickTrackingParams": "CGoQyfQCGAEiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "watchEndpoint": { + "videoId": "UFFa0QoHWvE", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Seatbelts", + "navigationEndpoint": { + "clickTrackingParams": "CGoQyfQCGAEiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "browseEndpoint": { + "browseId": "UCFhMA8ygjzH72UqPf7PmlUg", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "COWBOY BEBOP (Original Motion Picture Soundtrack)", + "navigationEndpoint": { + "clickTrackingParams": "CGoQyfQCGAEiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "browseEndpoint": { + "browseId": "MPREb_asHLU4Jr7nQ", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "3:31" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CHgQm_MFGAAiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "watchEndpoint": { + "videoId": "UFFa0QoHWvE", + "playlistId": "RDAMVMUFFa0QoHWvE", + "params": "wAEB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1VRkZhMFFvSFd2RQ%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CHgQm_MFGAAiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CHYQvu4FGAEiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "UFFa0QoHWvE", + "onEmptyQueue": { + "clickTrackingParams": "CHYQvu4FGAEiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "watchEndpoint": { + "videoId": "UFFa0QoHWvE" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CHYQvu4FGAEiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CHcQyscDIhMIt_TqieGBiQMVxdVyCR1QITDt" + } + } + } + } + ] + } + }, + "trackingParams": "CHYQvu4FGAEiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CHQQ--8FGAIiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "UFFa0QoHWvE", + "onEmptyQueue": { + "clickTrackingParams": "CHQQ--8FGAIiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "watchEndpoint": { + "videoId": "UFFa0QoHWvE" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CHQQ--8FGAIiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CHUQyscDIhMIt_TqieGBiQMVxdVyCR1QITDt" + } + } + } + } + ] + } + }, + "trackingParams": "CHQQ--8FGAIiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Save to library" + } + ] + }, + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CHMQhP8FGAMiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpLZbVGiTSImuqmPNeXJmm2W-Y1TyQzRvdo5NpgVtyiRGffScEIAt5IJNuo7JMCJIgZM3tYogOBrBw9xXYvD7AdX3-U-Ww" + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove from library" + } + ] + }, + "toggledIcon": { + "iconType": "LIBRARY_SAVED" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CHMQhP8FGAMiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpLAw74GT5zUOhXXJYMV1uZjXKUMqOfqXWa11MVrTMeqJvKd5zMQuEExBq9spm18mvDFBo8KUzK3Xfo5ICvjwuMWRRLQXw" + } + }, + "trackingParams": "CHMQhP8FGAMiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CHIQw5QGGAQiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "addToPlaylistEndpoint": { + "videoId": "UFFa0QoHWvE" + } + }, + "trackingParams": "CHIQw5QGGAQiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Go to album" + } + ] + }, + "icon": { + "iconType": "ALBUM" + }, + "navigationEndpoint": { + "clickTrackingParams": "CHEQj_sFGAUiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "browseEndpoint": { + "browseId": "MPREb_asHLU4Jr7nQ", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + }, + "trackingParams": "CHEQj_sFGAUiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CHAQkPsFGAYiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "browseEndpoint": { + "browseId": "UCFhMA8ygjzH72UqPf7PmlUg", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + }, + "trackingParams": "CHAQkPsFGAYiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "View song credits" + } + ] + }, + "icon": { + "iconType": "PEOPLE_GROUP" + }, + "navigationEndpoint": { + "clickTrackingParams": "CG8Qr6MKGAciEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "browseEndpoint": { + "browseId": "MPTCUFFa0QoHWvE", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + } + } + }, + "trackingParams": "CG8Qr6MKGAciEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CG4QkfsFGAgiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtVRkZhMFFvSFd2RQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CG4QkfsFGAgiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Remove from history" + } + ] + }, + "icon": { + "iconType": "REMOVE_FROM_HISTORY" + }, + "serviceEndpoint": { + "clickTrackingParams": "CGsQpzsiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpIvqzNn3JiRi5Ie3KsGTM3Ls0y1L9FYXSd7L2D4NEOlMbbTKry-AkWQLZSVAfFFFiUt4vlFjagf3vuq8YeLmeyaENEnsg", + "actions": [ + { + "clickTrackingParams": "CGsQpzsiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "hideEnclosingAction": { + "hack": true + } + }, + { + "clickTrackingParams": "CGsQpzsiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "This item has been removed from your history." + } + ] + }, + "trackingParams": "CG0QyscDIhMIt_TqieGBiQMVxdVyCR1QITDt" + } + } + } + } + ] + } + }, + "trackingParams": "CGsQpzsiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + } + ], + "trackingParams": "CGsQpzsiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "topLevelButtons": [ + { + "likeButtonRenderer": { + "target": { + "videoId": "UFFa0QoHWvE" + }, + "likeStatus": "INDIFFERENT", + "trackingParams": "CGwQpUEYCiITCLf06onhgYkDFcXVcgkdUCEw7Q==", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "CGwQpUEYCiITCLf06onhgYkDFcXVcgkdUCEw7Q==", + "likeEndpoint": { + "status": "LIKE", + "target": { + "videoId": "UFFa0QoHWvE" + }, + "actions": [ + { + "clickTrackingParams": "CGwQpUEYCiITCLf06onhgYkDFcXVcgkdUCEw7Q==", + "musicLibraryStatusUpdateCommand": { + "libraryStatus": "MUSIC_LIBRARY_STATUS_IN_LIBRARY", + "addToLibraryFeedbackToken": "AB9zfpLZbVGiTSImuqmPNeXJmm2W-Y1TyQzRvdo5NpgVtyiRGffScEIAt5IJNuo7JMCJIgZM3tYogOBrBw9xXYvD7AdX3-U-Ww" + } + } + ] + } + }, + { + "clickTrackingParams": "CGwQpUEYCiITCLf06onhgYkDFcXVcgkdUCEw7Q==", + "likeEndpoint": { + "status": "DISLIKE", + "target": { + "videoId": "UFFa0QoHWvE" + } + } + }, + { + "clickTrackingParams": "CGwQpUEYCiITCLf06onhgYkDFcXVcgkdUCEw7Q==", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "videoId": "UFFa0QoHWvE" + } + } + } + ] + } + } + ], + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "playlistItemData": { + "videoId": "UFFa0QoHWvE" + } + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CFgQyfQCGAIiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/QgFG5RHpesQcNq4JDY51ot0i2GRRf7GFpiO49zyAVO2C5YyKxCTglY0A9c4zBCHWkLrtg7mi-0UY5Uc=w60-h60-l90-rj", + "width": 60, + "height": 60 + }, + { + "url": "https://lh3.googleusercontent.com/QgFG5RHpesQcNq4JDY51ot0i2GRRf7GFpiO49zyAVO2C5YyKxCTglY0A9c4zBCHWkLrtg7mi-0UY5Uc=w120-h120-l90-rj", + "width": 120, + "height": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CGkQhL8CIhMIt_TqieGBiQMVxdVyCR1QITDt" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CGgQyN4CIhMIt_TqieGBiQMVxdVyCR1QITDt", + "watchEndpoint": { + "videoId": "Cg90gxYZ1C0", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CGgQyN4CIhMIt_TqieGBiQMVxdVyCR1QITDt", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Dang! - Mac Miller" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Dang! - Mac Miller" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Dang! (feat. Anderson .Paak)", + "navigationEndpoint": { + "clickTrackingParams": "CFgQyfQCGAIiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "watchEndpoint": { + "videoId": "Cg90gxYZ1C0", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Mac Miller", + "navigationEndpoint": { + "clickTrackingParams": "CFgQyfQCGAIiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "browseEndpoint": { + "browseId": "UC52ZqHVQz5OoGhvbWiRal6g", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "The Divine Feminine", + "navigationEndpoint": { + "clickTrackingParams": "CFgQyfQCGAIiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "browseEndpoint": { + "browseId": "MPREb_kCZ6WUs8Rg3", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "5:06" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CGcQm_MFGAAiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "watchEndpoint": { + "videoId": "Cg90gxYZ1C0", + "playlistId": "RDAMVMCg90gxYZ1C0", + "params": "wAEB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1DZzkwZ3hZWjFDMA%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CGcQm_MFGAAiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CGUQvu4FGAEiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "Cg90gxYZ1C0", + "onEmptyQueue": { + "clickTrackingParams": "CGUQvu4FGAEiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "watchEndpoint": { + "videoId": "Cg90gxYZ1C0" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CGUQvu4FGAEiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CGYQyscDIhMIt_TqieGBiQMVxdVyCR1QITDt" + } + } + } + } + ] + } + }, + "trackingParams": "CGUQvu4FGAEiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CGMQ--8FGAIiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "Cg90gxYZ1C0", + "onEmptyQueue": { + "clickTrackingParams": "CGMQ--8FGAIiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "watchEndpoint": { + "videoId": "Cg90gxYZ1C0" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CGMQ--8FGAIiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CGQQyscDIhMIt_TqieGBiQMVxdVyCR1QITDt" + } + } + } + } + ] + } + }, + "trackingParams": "CGMQ--8FGAIiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Remove from library" + } + ] + }, + "defaultIcon": { + "iconType": "LIBRARY_SAVED" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CGIQhP8FGAMiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpKCoTcJoGS7RGWGTxtTbZPe-SIBzyeO79F_h1Wv4Mq1PJK6JQrNoNsg-oJax_Qt-gjVL72Lm3o1A25yTP_kg_xIliwJQw" + } + }, + "toggledText": { + "runs": [ + { + "text": "Save to library" + } + ] + }, + "toggledIcon": { + "iconType": "LIBRARY_ADD" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CGIQhP8FGAMiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpLanq6fYOBQp2MpLP0zOfqAu9vm5oGQoiD5EhyUTSkBowi6IvsQ_vk1Chd-gUnoo1ESxOw4svtrC-i_shCEm1hh_R96ng" + } + }, + "trackingParams": "CGIQhP8FGAMiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CGEQw5QGGAQiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "addToPlaylistEndpoint": { + "videoId": "Cg90gxYZ1C0" + } + }, + "trackingParams": "CGEQw5QGGAQiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Go to album" + } + ] + }, + "icon": { + "iconType": "ALBUM" + }, + "navigationEndpoint": { + "clickTrackingParams": "CGAQj_sFGAUiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "browseEndpoint": { + "browseId": "MPREb_kCZ6WUs8Rg3", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + }, + "trackingParams": "CGAQj_sFGAUiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CF8QkPsFGAYiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "browseEndpoint": { + "browseId": "UC52ZqHVQz5OoGhvbWiRal6g", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + }, + "trackingParams": "CF8QkPsFGAYiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "View song credits" + } + ] + }, + "icon": { + "iconType": "PEOPLE_GROUP" + }, + "navigationEndpoint": { + "clickTrackingParams": "CF4Qr6MKGAciEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "browseEndpoint": { + "browseId": "MPTCCg90gxYZ1C0", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + } + } + }, + "trackingParams": "CF4Qr6MKGAciEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CF0QkfsFGAgiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtDZzkwZ3hZWjFDMA%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CF0QkfsFGAgiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Remove from history" + } + ] + }, + "icon": { + "iconType": "REMOVE_FROM_HISTORY" + }, + "serviceEndpoint": { + "clickTrackingParams": "CFoQpzsiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpKD66WoJdanHu2afRa1D2sUJ2KBQEIQkXYQqw-bVqTwgblrd0Y2Yrk4sakynVmcj8iAV-JKHahNbnRyMIUe_aqsT9wvpA", + "actions": [ + { + "clickTrackingParams": "CFoQpzsiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "hideEnclosingAction": { + "hack": true + } + }, + { + "clickTrackingParams": "CFoQpzsiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "This item has been removed from your history." + } + ] + }, + "trackingParams": "CFwQyscDIhMIt_TqieGBiQMVxdVyCR1QITDt" + } + } + } + } + ] + } + }, + "trackingParams": "CFoQpzsiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + } + ], + "trackingParams": "CFoQpzsiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "topLevelButtons": [ + { + "likeButtonRenderer": { + "target": { + "videoId": "Cg90gxYZ1C0" + }, + "likeStatus": "INDIFFERENT", + "trackingParams": "CFsQpUEYCiITCLf06onhgYkDFcXVcgkdUCEw7Q==", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "CFsQpUEYCiITCLf06onhgYkDFcXVcgkdUCEw7Q==", + "likeEndpoint": { + "status": "LIKE", + "target": { + "videoId": "Cg90gxYZ1C0" + }, + "actions": [ + { + "clickTrackingParams": "CFsQpUEYCiITCLf06onhgYkDFcXVcgkdUCEw7Q==", + "musicLibraryStatusUpdateCommand": { + "libraryStatus": "MUSIC_LIBRARY_STATUS_IN_LIBRARY", + "addToLibraryFeedbackToken": "AB9zfpLanq6fYOBQp2MpLP0zOfqAu9vm5oGQoiD5EhyUTSkBowi6IvsQ_vk1Chd-gUnoo1ESxOw4svtrC-i_shCEm1hh_R96ng" + } + } + ] + } + }, + { + "clickTrackingParams": "CFsQpUEYCiITCLf06onhgYkDFcXVcgkdUCEw7Q==", + "likeEndpoint": { + "status": "DISLIKE", + "target": { + "videoId": "Cg90gxYZ1C0" + } + } + }, + { + "clickTrackingParams": "CFsQpUEYCiITCLf06onhgYkDFcXVcgkdUCEw7Q==", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "videoId": "Cg90gxYZ1C0" + } + } + } + ] + } + } + ], + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "badges": [ + { + "musicInlineBadgeRenderer": { + "trackingParams": "CFkQoe0CGAQiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "icon": { + "iconType": "MUSIC_EXPLICIT_BADGE" + }, + "accessibilityData": { + "accessibilityData": { + "label": "Explicit" + } + } + } + } + ], + "playlistItemData": { + "videoId": "Cg90gxYZ1C0" + } + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CEgQyfQCGAMiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/aZlTfoNytQ8aa6nJkrN3GclMwvPpTWoWNjaIhH4k1IZ_FB1olspeJWZELsABC032Gcm1Vq7VWUx7x2gXug=w60-h60-l90-rj", + "width": 60, + "height": 60 + }, + { + "url": "https://lh3.googleusercontent.com/aZlTfoNytQ8aa6nJkrN3GclMwvPpTWoWNjaIhH4k1IZ_FB1olspeJWZELsABC032Gcm1Vq7VWUx7x2gXug=w120-h120-l90-rj", + "width": 120, + "height": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CFcQhL8CIhMIt_TqieGBiQMVxdVyCR1QITDt" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CFYQyN4CIhMIt_TqieGBiQMVxdVyCR1QITDt", + "watchEndpoint": { + "videoId": "2SqWRLU32BU", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CFYQyN4CIhMIt_TqieGBiQMVxdVyCR1QITDt", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Want You Gone (From \"Portal 2\") - The 8-Bit Big Band" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Want You Gone (From \"Portal 2\") - The 8-Bit Big Band" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Want You Gone (From \"Portal 2\") (feat. Benny Benack III)", + "navigationEndpoint": { + "clickTrackingParams": "CEgQyfQCGAMiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "watchEndpoint": { + "videoId": "2SqWRLU32BU", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "The 8-Bit Big Band", + "navigationEndpoint": { + "clickTrackingParams": "CEgQyfQCGAMiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "browseEndpoint": { + "browseId": "UC4gpHwG5SQKJzV2qObgJdJg", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Backwards Compatible", + "navigationEndpoint": { + "clickTrackingParams": "CEgQyfQCGAMiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "browseEndpoint": { + "browseId": "MPREb_QwI9tAIYSEf", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "3:41" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CFUQm_MFGAAiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "watchEndpoint": { + "videoId": "2SqWRLU32BU", + "playlistId": "RDAMVM2SqWRLU32BU", + "params": "wAEB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk0yU3FXUkxVMzJCVQ%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CFUQm_MFGAAiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CFMQvu4FGAEiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "2SqWRLU32BU", + "onEmptyQueue": { + "clickTrackingParams": "CFMQvu4FGAEiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "watchEndpoint": { + "videoId": "2SqWRLU32BU" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CFMQvu4FGAEiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CFQQyscDIhMIt_TqieGBiQMVxdVyCR1QITDt" + } + } + } + } + ] + } + }, + "trackingParams": "CFMQvu4FGAEiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CFEQ--8FGAIiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "2SqWRLU32BU", + "onEmptyQueue": { + "clickTrackingParams": "CFEQ--8FGAIiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "watchEndpoint": { + "videoId": "2SqWRLU32BU" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CFEQ--8FGAIiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CFIQyscDIhMIt_TqieGBiQMVxdVyCR1QITDt" + } + } + } + } + ] + } + }, + "trackingParams": "CFEQ--8FGAIiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Save to library" + } + ] + }, + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CFAQhP8FGAMiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpLlPWHHrxpeMjCiq0OOYwhvoD09J3NyLMsf-FOjvxjEM4z73aluqVrtTi1caj7mlc7mNzjvfQ8-YHRywKUdAAvMKXcVBQ" + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove from library" + } + ] + }, + "toggledIcon": { + "iconType": "LIBRARY_SAVED" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CFAQhP8FGAMiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpI0qa28UYPekFWZkSvvEgFGDH79RQF6vYaxiT62Y_jtsqlCSr7pxiEplJrSjuTtNNaPSdvRZuDCMg4HPzg0x36eOErmKg" + } + }, + "trackingParams": "CFAQhP8FGAMiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CE8Qw5QGGAQiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "addToPlaylistEndpoint": { + "videoId": "2SqWRLU32BU" + } + }, + "trackingParams": "CE8Qw5QGGAQiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Go to album" + } + ] + }, + "icon": { + "iconType": "ALBUM" + }, + "navigationEndpoint": { + "clickTrackingParams": "CE4Qj_sFGAUiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "browseEndpoint": { + "browseId": "MPREb_QwI9tAIYSEf", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + }, + "trackingParams": "CE4Qj_sFGAUiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CE0QkPsFGAYiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "browseEndpoint": { + "browseId": "UC4gpHwG5SQKJzV2qObgJdJg", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + }, + "trackingParams": "CE0QkPsFGAYiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CEwQkfsFGAciEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "shareEntityEndpoint": { + "serializedShareEntity": "CgsyU3FXUkxVMzJCVQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CEwQkfsFGAciEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Remove from history" + } + ] + }, + "icon": { + "iconType": "REMOVE_FROM_HISTORY" + }, + "serviceEndpoint": { + "clickTrackingParams": "CEkQpzsiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJ8N3kDghKreUTXjJNCA4M3mYI8JJ5Fwubaj0sgNejydirRhHEEp_zLnXMRxuwptDlmLl7whMofuuj7PimO7s2G5Vmk4w", + "actions": [ + { + "clickTrackingParams": "CEkQpzsiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "hideEnclosingAction": { + "hack": true + } + }, + { + "clickTrackingParams": "CEkQpzsiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "This item has been removed from your history." + } + ] + }, + "trackingParams": "CEsQyscDIhMIt_TqieGBiQMVxdVyCR1QITDt" + } + } + } + } + ] + } + }, + "trackingParams": "CEkQpzsiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + } + ], + "trackingParams": "CEkQpzsiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "topLevelButtons": [ + { + "likeButtonRenderer": { + "target": { + "videoId": "2SqWRLU32BU" + }, + "likeStatus": "INDIFFERENT", + "trackingParams": "CEoQpUEYCSITCLf06onhgYkDFcXVcgkdUCEw7Q==", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "CEoQpUEYCSITCLf06onhgYkDFcXVcgkdUCEw7Q==", + "likeEndpoint": { + "status": "LIKE", + "target": { + "videoId": "2SqWRLU32BU" + }, + "actions": [ + { + "clickTrackingParams": "CEoQpUEYCSITCLf06onhgYkDFcXVcgkdUCEw7Q==", + "musicLibraryStatusUpdateCommand": { + "libraryStatus": "MUSIC_LIBRARY_STATUS_IN_LIBRARY", + "addToLibraryFeedbackToken": "AB9zfpLlPWHHrxpeMjCiq0OOYwhvoD09J3NyLMsf-FOjvxjEM4z73aluqVrtTi1caj7mlc7mNzjvfQ8-YHRywKUdAAvMKXcVBQ" + } + } + ] + } + }, + { + "clickTrackingParams": "CEoQpUEYCSITCLf06onhgYkDFcXVcgkdUCEw7Q==", + "likeEndpoint": { + "status": "DISLIKE", + "target": { + "videoId": "2SqWRLU32BU" + } + } + }, + { + "clickTrackingParams": "CEoQpUEYCSITCLf06onhgYkDFcXVcgkdUCEw7Q==", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "videoId": "2SqWRLU32BU" + } + } + } + ] + } + } + ], + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "playlistItemData": { + "videoId": "2SqWRLU32BU" + } + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CDgQyfQCGAQiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/Ks-HeVbqttdGlZO1T78EaBW7IAnh1jqjL7hNrN6FP5if_GnKplO5kPq2LEI826hmEfMwk0_OizVEBCTT=w60-h60-l90-rj", + "width": 60, + "height": 60 + }, + { + "url": "https://lh3.googleusercontent.com/Ks-HeVbqttdGlZO1T78EaBW7IAnh1jqjL7hNrN6FP5if_GnKplO5kPq2LEI826hmEfMwk0_OizVEBCTT=w120-h120-l90-rj", + "width": 120, + "height": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CEcQhL8CIhMIt_TqieGBiQMVxdVyCR1QITDt" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CEYQyN4CIhMIt_TqieGBiQMVxdVyCR1QITDt", + "watchEndpoint": { + "videoId": "oHk4YYGjmHw", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CEYQyN4CIhMIt_TqieGBiQMVxdVyCR1QITDt", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Still Alive (From \"Portal\") - The 8-Bit Big Band" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Still Alive (From \"Portal\") - The 8-Bit Big Band" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Still Alive (From \"Portal\")", + "navigationEndpoint": { + "clickTrackingParams": "CDgQyfQCGAQiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "watchEndpoint": { + "videoId": "oHk4YYGjmHw", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "The 8-Bit Big Band", + "navigationEndpoint": { + "clickTrackingParams": "CDgQyfQCGAQiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "browseEndpoint": { + "browseId": "UC4gpHwG5SQKJzV2qObgJdJg", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Choose Your Character!", + "navigationEndpoint": { + "clickTrackingParams": "CDgQyfQCGAQiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "browseEndpoint": { + "browseId": "MPREb_c367wl7Zw7K", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "3:12" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CEUQm_MFGAAiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "watchEndpoint": { + "videoId": "oHk4YYGjmHw", + "playlistId": "RDAMVMoHk4YYGjmHw", + "params": "wAEB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1vSGs0WVlHam1Idw%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CEUQm_MFGAAiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CEMQvu4FGAEiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "oHk4YYGjmHw", + "onEmptyQueue": { + "clickTrackingParams": "CEMQvu4FGAEiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "watchEndpoint": { + "videoId": "oHk4YYGjmHw" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CEMQvu4FGAEiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CEQQyscDIhMIt_TqieGBiQMVxdVyCR1QITDt" + } + } + } + } + ] + } + }, + "trackingParams": "CEMQvu4FGAEiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CEEQ--8FGAIiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "oHk4YYGjmHw", + "onEmptyQueue": { + "clickTrackingParams": "CEEQ--8FGAIiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "watchEndpoint": { + "videoId": "oHk4YYGjmHw" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CEEQ--8FGAIiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CEIQyscDIhMIt_TqieGBiQMVxdVyCR1QITDt" + } + } + } + } + ] + } + }, + "trackingParams": "CEEQ--8FGAIiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Save to library" + } + ] + }, + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CEAQhP8FGAMiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJSgYpvN9UPyc35j80lfhua3PI4HDiHZhFvW0JYRiviCt8jDSi1Z_IBqrQRi6r6SyOwFF7S_hydAKnEeBB3wKPPHFG4mA" + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove from library" + } + ] + }, + "toggledIcon": { + "iconType": "LIBRARY_SAVED" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CEAQhP8FGAMiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpIH8l8P0YOBro7HQXuq8iSR5kmNXF4XB1UTr7uzQUjPGGVmZLy25JtttODE658jDS2HmJWIaKQ0S2mvLHtdC5JnNcdJlw" + } + }, + "trackingParams": "CEAQhP8FGAMiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CD8Qw5QGGAQiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "addToPlaylistEndpoint": { + "videoId": "oHk4YYGjmHw" + } + }, + "trackingParams": "CD8Qw5QGGAQiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Go to album" + } + ] + }, + "icon": { + "iconType": "ALBUM" + }, + "navigationEndpoint": { + "clickTrackingParams": "CD4Qj_sFGAUiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "browseEndpoint": { + "browseId": "MPREb_c367wl7Zw7K", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + }, + "trackingParams": "CD4Qj_sFGAUiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CD0QkPsFGAYiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "browseEndpoint": { + "browseId": "UC4gpHwG5SQKJzV2qObgJdJg", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + }, + "trackingParams": "CD0QkPsFGAYiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CDwQkfsFGAciEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtvSGs0WVlHam1Idw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CDwQkfsFGAciEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Remove from history" + } + ] + }, + "icon": { + "iconType": "REMOVE_FROM_HISTORY" + }, + "serviceEndpoint": { + "clickTrackingParams": "CDkQpzsiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpLzTm-h1Kkqs50pWrr3wO8sBRvhrQG-nXtPo5pRhvbuAyvOzayjptqjneqX1K905qkW08-qRS6dnfvRvQHG01WC_QMuiA", + "actions": [ + { + "clickTrackingParams": "CDkQpzsiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "hideEnclosingAction": { + "hack": true + } + }, + { + "clickTrackingParams": "CDkQpzsiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "This item has been removed from your history." + } + ] + }, + "trackingParams": "CDsQyscDIhMIt_TqieGBiQMVxdVyCR1QITDt" + } + } + } + } + ] + } + }, + "trackingParams": "CDkQpzsiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + } + ], + "trackingParams": "CDkQpzsiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "topLevelButtons": [ + { + "likeButtonRenderer": { + "target": { + "videoId": "oHk4YYGjmHw" + }, + "likeStatus": "INDIFFERENT", + "trackingParams": "CDoQpUEYCSITCLf06onhgYkDFcXVcgkdUCEw7Q==", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "CDoQpUEYCSITCLf06onhgYkDFcXVcgkdUCEw7Q==", + "likeEndpoint": { + "status": "LIKE", + "target": { + "videoId": "oHk4YYGjmHw" + }, + "actions": [ + { + "clickTrackingParams": "CDoQpUEYCSITCLf06onhgYkDFcXVcgkdUCEw7Q==", + "musicLibraryStatusUpdateCommand": { + "libraryStatus": "MUSIC_LIBRARY_STATUS_IN_LIBRARY", + "addToLibraryFeedbackToken": "AB9zfpJSgYpvN9UPyc35j80lfhua3PI4HDiHZhFvW0JYRiviCt8jDSi1Z_IBqrQRi6r6SyOwFF7S_hydAKnEeBB3wKPPHFG4mA" + } + } + ] + } + }, + { + "clickTrackingParams": "CDoQpUEYCSITCLf06onhgYkDFcXVcgkdUCEw7Q==", + "likeEndpoint": { + "status": "DISLIKE", + "target": { + "videoId": "oHk4YYGjmHw" + } + } + }, + { + "clickTrackingParams": "CDoQpUEYCSITCLf06onhgYkDFcXVcgkdUCEw7Q==", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "videoId": "oHk4YYGjmHw" + } + } + } + ] + } + } + ], + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "playlistItemData": { + "videoId": "oHk4YYGjmHw" + } + } + } + ], + "trackingParams": "CDcQ-V4YASITCLf06onhgYkDFcXVcgkdUCEw7Q==", + "shelfDivider": { + "musicShelfDividerRenderer": { + "hidden": true + } + } + } + }, + { + "musicShelfRenderer": { + "title": { + "runs": [ + { + "text": "January 2023" + } + ] + }, + "contents": [ + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CCYQyfQCGAAiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/2ORsVnMoDz54nNIDYYE14YP5r7C1NQXsIVFgO5IMs6y64rY2u4VRQYsvjpaiXlew0hQf9IFmfq4gw6-u=w60-h60-l90-rj", + "width": 60, + "height": 60 + }, + { + "url": "https://lh3.googleusercontent.com/2ORsVnMoDz54nNIDYYE14YP5r7C1NQXsIVFgO5IMs6y64rY2u4VRQYsvjpaiXlew0hQf9IFmfq4gw6-u=w120-h120-l90-rj", + "width": 120, + "height": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CDYQhL8CIhMIt_TqieGBiQMVxdVyCR1QITDt" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CDUQyN4CIhMIt_TqieGBiQMVxdVyCR1QITDt", + "watchEndpoint": { + "videoId": "bsL1wgy1j-Q", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CDUQyN4CIhMIt_TqieGBiQMVxdVyCR1QITDt", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Shadow Stabbing - CAKE" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Shadow Stabbing - CAKE" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Shadow Stabbing", + "navigationEndpoint": { + "clickTrackingParams": "CCYQyfQCGAAiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "watchEndpoint": { + "videoId": "bsL1wgy1j-Q", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "CAKE", + "navigationEndpoint": { + "clickTrackingParams": "CCYQyfQCGAAiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "browseEndpoint": { + "browseId": "UCPEA0kfpI53U9vmqnc9lJ-A", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Comfort Eagle", + "navigationEndpoint": { + "clickTrackingParams": "CCYQyfQCGAAiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "browseEndpoint": { + "browseId": "MPREb_sHzavCc6vDo", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "3:08" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CDQQm_MFGAAiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "watchEndpoint": { + "videoId": "bsL1wgy1j-Q", + "playlistId": "RDAMVMbsL1wgy1j-Q", + "params": "wAEB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1ic0wxd2d5MWotUQ%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CDQQm_MFGAAiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CDIQvu4FGAEiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "bsL1wgy1j-Q", + "onEmptyQueue": { + "clickTrackingParams": "CDIQvu4FGAEiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "watchEndpoint": { + "videoId": "bsL1wgy1j-Q" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CDIQvu4FGAEiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CDMQyscDIhMIt_TqieGBiQMVxdVyCR1QITDt" + } + } + } + } + ] + } + }, + "trackingParams": "CDIQvu4FGAEiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CDAQ--8FGAIiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "bsL1wgy1j-Q", + "onEmptyQueue": { + "clickTrackingParams": "CDAQ--8FGAIiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "watchEndpoint": { + "videoId": "bsL1wgy1j-Q" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CDAQ--8FGAIiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CDEQyscDIhMIt_TqieGBiQMVxdVyCR1QITDt" + } + } + } + } + ] + } + }, + "trackingParams": "CDAQ--8FGAIiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Save to library" + } + ] + }, + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CC8QhP8FGAMiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpL_ryR1M99Jzih_0ldsLXcBwa4YGduyKopUYo8Ka7aMdQNQWnj8v3eZIlKFqQHyuXwZtz1vbGuO7yjwir5jA34vnBAagA" + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove from library" + } + ] + }, + "toggledIcon": { + "iconType": "LIBRARY_SAVED" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CC8QhP8FGAMiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJ8B1uAfrhorrrb3LNFyLRKK6pd4PVOAd17lrSURsNhvdD81oVCsQv3C_aNcDZg34A5Xiq5M3OnX1AFXYLmSNk4OiCEyg" + } + }, + "trackingParams": "CC8QhP8FGAMiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CC4Qw5QGGAQiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "addToPlaylistEndpoint": { + "videoId": "bsL1wgy1j-Q" + } + }, + "trackingParams": "CC4Qw5QGGAQiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Go to album" + } + ] + }, + "icon": { + "iconType": "ALBUM" + }, + "navigationEndpoint": { + "clickTrackingParams": "CC0Qj_sFGAUiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "browseEndpoint": { + "browseId": "MPREb_sHzavCc6vDo", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + }, + "trackingParams": "CC0Qj_sFGAUiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CCwQkPsFGAYiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "browseEndpoint": { + "browseId": "UCPEA0kfpI53U9vmqnc9lJ-A", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + }, + "trackingParams": "CCwQkPsFGAYiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "View song credits" + } + ] + }, + "icon": { + "iconType": "PEOPLE_GROUP" + }, + "navigationEndpoint": { + "clickTrackingParams": "CCsQr6MKGAciEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "browseEndpoint": { + "browseId": "MPTCbsL1wgy1j-Q", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + } + } + }, + "trackingParams": "CCsQr6MKGAciEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CCoQkfsFGAgiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "shareEntityEndpoint": { + "serializedShareEntity": "Cgtic0wxd2d5MWotUQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CCoQkfsFGAgiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Remove from history" + } + ] + }, + "icon": { + "iconType": "REMOVE_FROM_HISTORY" + }, + "serviceEndpoint": { + "clickTrackingParams": "CCcQpzsiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpKVzCu4tmZ5slH81PeCcXKhErbHcynfcKk116yMYjUcQGST276b7LBoU3gJl0tAHdC-LPkZOViU_hzzX71pkrp5DQ1XFw", + "actions": [ + { + "clickTrackingParams": "CCcQpzsiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "hideEnclosingAction": { + "hack": true + } + }, + { + "clickTrackingParams": "CCcQpzsiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "This item has been removed from your history." + } + ] + }, + "trackingParams": "CCkQyscDIhMIt_TqieGBiQMVxdVyCR1QITDt" + } + } + } + } + ] + } + }, + "trackingParams": "CCcQpzsiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + } + ], + "trackingParams": "CCcQpzsiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "topLevelButtons": [ + { + "likeButtonRenderer": { + "target": { + "videoId": "bsL1wgy1j-Q" + }, + "likeStatus": "INDIFFERENT", + "trackingParams": "CCgQpUEYCiITCLf06onhgYkDFcXVcgkdUCEw7Q==", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "CCgQpUEYCiITCLf06onhgYkDFcXVcgkdUCEw7Q==", + "likeEndpoint": { + "status": "LIKE", + "target": { + "videoId": "bsL1wgy1j-Q" + }, + "actions": [ + { + "clickTrackingParams": "CCgQpUEYCiITCLf06onhgYkDFcXVcgkdUCEw7Q==", + "musicLibraryStatusUpdateCommand": { + "libraryStatus": "MUSIC_LIBRARY_STATUS_IN_LIBRARY", + "addToLibraryFeedbackToken": "AB9zfpL_ryR1M99Jzih_0ldsLXcBwa4YGduyKopUYo8Ka7aMdQNQWnj8v3eZIlKFqQHyuXwZtz1vbGuO7yjwir5jA34vnBAagA" + } + } + ] + } + }, + { + "clickTrackingParams": "CCgQpUEYCiITCLf06onhgYkDFcXVcgkdUCEw7Q==", + "likeEndpoint": { + "status": "DISLIKE", + "target": { + "videoId": "bsL1wgy1j-Q" + } + } + }, + { + "clickTrackingParams": "CCgQpUEYCiITCLf06onhgYkDFcXVcgkdUCEw7Q==", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "videoId": "bsL1wgy1j-Q" + } + } + } + ] + } + } + ], + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "playlistItemData": { + "videoId": "bsL1wgy1j-Q" + } + } + } + ], + "trackingParams": "CCUQ-V4YAiITCLf06onhgYkDFcXVcgkdUCEw7Q==", + "shelfDivider": { + "musicShelfDividerRenderer": { + "hidden": true + } + } + } + }, + { + "musicShelfRenderer": { + "title": { + "runs": [ + { + "text": "December 2022" + } + ] + }, + "contents": [ + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CBQQyfQCGAAiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/kSPVOVNh0C9kfkYFD8UuurMsnCB8r5WKzvxSP68HxM1fZnOs-FetIJlatZpXeTuoTIBFd_jrK-Y8W6wn=w60-h60-l90-rj", + "width": 60, + "height": 60 + }, + { + "url": "https://lh3.googleusercontent.com/kSPVOVNh0C9kfkYFD8UuurMsnCB8r5WKzvxSP68HxM1fZnOs-FetIJlatZpXeTuoTIBFd_jrK-Y8W6wn=w120-h120-l90-rj", + "width": 120, + "height": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CCQQhL8CIhMIt_TqieGBiQMVxdVyCR1QITDt" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CCMQyN4CIhMIt_TqieGBiQMVxdVyCR1QITDt", + "watchEndpoint": { + "videoId": "Bcus42ihkTI", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CCMQyN4CIhMIt_TqieGBiQMVxdVyCR1QITDt", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play I'd Rather Go Blind - Etta James" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause I'd Rather Go Blind - Etta James" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "I'd Rather Go Blind", + "navigationEndpoint": { + "clickTrackingParams": "CBQQyfQCGAAiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "watchEndpoint": { + "videoId": "Bcus42ihkTI", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Etta James", + "navigationEndpoint": { + "clickTrackingParams": "CBQQyfQCGAAiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "browseEndpoint": { + "browseId": "UCieyolnCbsWzyEt6wsd7lgQ", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Tell Mama", + "navigationEndpoint": { + "clickTrackingParams": "CBQQyfQCGAAiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "browseEndpoint": { + "browseId": "MPREb_zqisM59IhFI", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "2:37" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CCIQm_MFGAAiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "watchEndpoint": { + "videoId": "Bcus42ihkTI", + "playlistId": "RDAMVMBcus42ihkTI", + "params": "wAEB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1CY3VzNDJpaGtUSQ%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CCIQm_MFGAAiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CCAQvu4FGAEiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "Bcus42ihkTI", + "onEmptyQueue": { + "clickTrackingParams": "CCAQvu4FGAEiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "watchEndpoint": { + "videoId": "Bcus42ihkTI" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CCAQvu4FGAEiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CCEQyscDIhMIt_TqieGBiQMVxdVyCR1QITDt" + } + } + } + } + ] + } + }, + "trackingParams": "CCAQvu4FGAEiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CB4Q--8FGAIiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "Bcus42ihkTI", + "onEmptyQueue": { + "clickTrackingParams": "CB4Q--8FGAIiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "watchEndpoint": { + "videoId": "Bcus42ihkTI" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CB4Q--8FGAIiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CB8QyscDIhMIt_TqieGBiQMVxdVyCR1QITDt" + } + } + } + } + ] + } + }, + "trackingParams": "CB4Q--8FGAIiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Save to library" + } + ] + }, + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CB0QhP8FGAMiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpLHMvI9NTAH1b72E3E8M_TiRHfeAV2QQG99zKHXwLc1s4bS1bRiAuxjZcPZa8eCR9-LkFBlnpMLPwhsWd5JH6-jwLOk0Q" + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove from library" + } + ] + }, + "toggledIcon": { + "iconType": "LIBRARY_SAVED" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CB0QhP8FGAMiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJmCHH0N61R-ck4nVDG4wtOOshhZc320HAfVdKraBseoCJBO23YO04iwGWaW3Ss4OOjDmHbiQo67BXYjioJ6O5s3e5uLg" + } + }, + "trackingParams": "CB0QhP8FGAMiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CBwQw5QGGAQiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "addToPlaylistEndpoint": { + "videoId": "Bcus42ihkTI" + } + }, + "trackingParams": "CBwQw5QGGAQiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Go to album" + } + ] + }, + "icon": { + "iconType": "ALBUM" + }, + "navigationEndpoint": { + "clickTrackingParams": "CBsQj_sFGAUiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "browseEndpoint": { + "browseId": "MPREb_zqisM59IhFI", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + }, + "trackingParams": "CBsQj_sFGAUiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CBoQkPsFGAYiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "browseEndpoint": { + "browseId": "UCieyolnCbsWzyEt6wsd7lgQ", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + }, + "trackingParams": "CBoQkPsFGAYiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "View song credits" + } + ] + }, + "icon": { + "iconType": "PEOPLE_GROUP" + }, + "navigationEndpoint": { + "clickTrackingParams": "CBkQr6MKGAciEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "browseEndpoint": { + "browseId": "MPTCBcus42ihkTI", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + } + } + }, + "trackingParams": "CBkQr6MKGAciEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CBgQkfsFGAgiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtCY3VzNDJpaGtUSQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CBgQkfsFGAgiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Remove from history" + } + ] + }, + "icon": { + "iconType": "REMOVE_FROM_HISTORY" + }, + "serviceEndpoint": { + "clickTrackingParams": "CBUQpzsiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJej_VTpKrs8fIOKS7t0oBIpfXVkIK34ypeEKoP6dsYm3e-A0EiO80JiEWv-k0dVGYDMAiyJz_BmNEvHFta1l-1f_eYoQ", + "actions": [ + { + "clickTrackingParams": "CBUQpzsiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "hideEnclosingAction": { + "hack": true + } + }, + { + "clickTrackingParams": "CBUQpzsiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "This item has been removed from your history." + } + ] + }, + "trackingParams": "CBcQyscDIhMIt_TqieGBiQMVxdVyCR1QITDt" + } + } + } + } + ] + } + }, + "trackingParams": "CBUQpzsiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + } + ], + "trackingParams": "CBUQpzsiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "topLevelButtons": [ + { + "likeButtonRenderer": { + "target": { + "videoId": "Bcus42ihkTI" + }, + "likeStatus": "INDIFFERENT", + "trackingParams": "CBYQpUEYCiITCLf06onhgYkDFcXVcgkdUCEw7Q==", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "CBYQpUEYCiITCLf06onhgYkDFcXVcgkdUCEw7Q==", + "likeEndpoint": { + "status": "LIKE", + "target": { + "videoId": "Bcus42ihkTI" + }, + "actions": [ + { + "clickTrackingParams": "CBYQpUEYCiITCLf06onhgYkDFcXVcgkdUCEw7Q==", + "musicLibraryStatusUpdateCommand": { + "libraryStatus": "MUSIC_LIBRARY_STATUS_IN_LIBRARY", + "addToLibraryFeedbackToken": "AB9zfpLHMvI9NTAH1b72E3E8M_TiRHfeAV2QQG99zKHXwLc1s4bS1bRiAuxjZcPZa8eCR9-LkFBlnpMLPwhsWd5JH6-jwLOk0Q" + } + } + ] + } + }, + { + "clickTrackingParams": "CBYQpUEYCiITCLf06onhgYkDFcXVcgkdUCEw7Q==", + "likeEndpoint": { + "status": "DISLIKE", + "target": { + "videoId": "Bcus42ihkTI" + } + } + }, + { + "clickTrackingParams": "CBYQpUEYCiITCLf06onhgYkDFcXVcgkdUCEw7Q==", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "videoId": "Bcus42ihkTI" + } + } + } + ] + } + } + ], + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "playlistItemData": { + "videoId": "Bcus42ihkTI" + } + } + } + ], + "trackingParams": "CBMQ-V4YAyITCLf06onhgYkDFcXVcgkdUCEw7Q==", + "shelfDivider": { + "musicShelfDividerRenderer": { + "hidden": true + } + } + } + }, + { + "musicShelfRenderer": { + "title": { + "runs": [ + { + "text": "July 2022" + } + ] + }, + "contents": [ + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CAUQyfQCGAAiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/iBs8XgoNe1c/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3kTwvgU5Fs-nyi0thvefssM2_6h3g", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CBIQhL8CIhMIt_TqieGBiQMVxdVyCR1QITDt" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CBEQyN4CIhMIt_TqieGBiQMVxdVyCR1QITDt", + "watchEndpoint": { + "videoId": "iBs8XgoNe1c", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "trackingParams": "CBEQyN4CIhMIt_TqieGBiQMVxdVyCR1QITDt", + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "pauseIcon": { + "iconType": "PAUSE" + }, + "iconColor": 4294967295, + "backgroundColor": 0, + "activeBackgroundColor": 0, + "loadingIndicatorColor": 14745645, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "iconLoadingColor": 0, + "activeScaleFactor": 1, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Generous Heart - Maya Hawke" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Generous Heart - Maya Hawke" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Generous Heart", + "navigationEndpoint": { + "clickTrackingParams": "CAUQyfQCGAAiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "watchEndpoint": { + "videoId": "iBs8XgoNe1c", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Maya Hawke", + "navigationEndpoint": { + "clickTrackingParams": "CAUQyfQCGAAiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "browseEndpoint": { + "browseId": "UCpCdLTLfDakfXAI29jeytkg", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + }, + { + "text": " • " + }, + { + "text": "1.1M views" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": {}, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM" + } + } + ], + "fixedColumns": [ + { + "musicResponsiveListItemFixedColumnRenderer": { + "text": { + "runs": [ + { + "text": "3:49" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "size": "MUSIC_RESPONSIVE_LIST_ITEM_FIXED_COLUMN_SIZE_SMALL" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CBAQm_MFGAAiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "watchEndpoint": { + "videoId": "iBs8XgoNe1c", + "playlistId": "RDAMVMiBs8XgoNe1c", + "params": "wAEB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1pQnM4WGdvTmUxYw%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "trackingParams": "CBAQm_MFGAAiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CA4Qvu4FGAEiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "iBs8XgoNe1c", + "onEmptyQueue": { + "clickTrackingParams": "CA4Qvu4FGAEiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "watchEndpoint": { + "videoId": "iBs8XgoNe1c" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CA4Qvu4FGAEiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CA8QyscDIhMIt_TqieGBiQMVxdVyCR1QITDt" + } + } + } + } + ] + } + }, + "trackingParams": "CA4Qvu4FGAEiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CAwQ--8FGAIiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "iBs8XgoNe1c", + "onEmptyQueue": { + "clickTrackingParams": "CAwQ--8FGAIiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "watchEndpoint": { + "videoId": "iBs8XgoNe1c" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CAwQ--8FGAIiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CA0QyscDIhMIt_TqieGBiQMVxdVyCR1QITDt" + } + } + } + } + ] + } + }, + "trackingParams": "CAwQ--8FGAIiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CAsQw5QGGAMiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "addToPlaylistEndpoint": { + "videoId": "iBs8XgoNe1c" + } + }, + "trackingParams": "CAsQw5QGGAMiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CAoQkPsFGAQiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "browseEndpoint": { + "browseId": "UCpCdLTLfDakfXAI29jeytkg", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + }, + "trackingParams": "CAoQkPsFGAQiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CAkQkfsFGAUiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtpQnM4WGdvTmUxYw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CAkQkfsFGAUiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Remove from history" + } + ] + }, + "icon": { + "iconType": "REMOVE_FROM_HISTORY" + }, + "serviceEndpoint": { + "clickTrackingParams": "CAYQpzsiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJ3thZOEUQswqS4m4Lzmd53sj00aZ0LU4nzWKeZhzICUgXTnd6_HTpAYp-SaerIhrB2gYL5Y_evqwErFfx8qiUAGzpHZA", + "actions": [ + { + "clickTrackingParams": "CAYQpzsiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "hideEnclosingAction": { + "hack": true + } + }, + { + "clickTrackingParams": "CAYQpzsiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "This item has been removed from your history." + } + ] + }, + "trackingParams": "CAgQyscDIhMIt_TqieGBiQMVxdVyCR1QITDt" + } + } + } + } + ] + } + }, + "trackingParams": "CAYQpzsiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + } + ], + "trackingParams": "CAYQpzsiEwi39OqJ4YGJAxXF1XIJHVAhMO0=", + "topLevelButtons": [ + { + "likeButtonRenderer": { + "target": { + "videoId": "iBs8XgoNe1c" + }, + "likeStatus": "INDIFFERENT", + "trackingParams": "CAcQpUEYByITCLf06onhgYkDFcXVcgkdUCEw7Q==", + "likesAllowed": true, + "serviceEndpoints": [ + { + "clickTrackingParams": "CAcQpUEYByITCLf06onhgYkDFcXVcgkdUCEw7Q==", + "likeEndpoint": { + "status": "LIKE", + "target": { + "videoId": "iBs8XgoNe1c" + } + } + }, + { + "clickTrackingParams": "CAcQpUEYByITCLf06onhgYkDFcXVcgkdUCEw7Q==", + "likeEndpoint": { + "status": "DISLIKE", + "target": { + "videoId": "iBs8XgoNe1c" + } + } + }, + { + "clickTrackingParams": "CAcQpUEYByITCLf06onhgYkDFcXVcgkdUCEw7Q==", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "videoId": "iBs8XgoNe1c" + } + } + } + ] + } + } + ], + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "playlistItemData": { + "videoId": "iBs8XgoNe1c" + } + } + } + ], + "trackingParams": "CAQQ-V4YBCITCLf06onhgYkDFcXVcgkdUCEw7Q==", + "shelfDivider": { + "musicShelfDividerRenderer": { + "hidden": true + } + } + } + } + ], + "trackingParams": "CAMQui8iEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + "tabIdentifier": "FEmusic_history", + "trackingParams": "CAIQ8JMBGAAiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + } + ] + } + }, + "header": { + "musicHeaderRenderer": { + "title": { + "runs": [ + { + "text": "History" + } + ] + }, + "trackingParams": "CAEQ4HIiEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } + }, + "trackingParams": "CAAQhGciEwi39OqJ4YGJAxXF1XIJHVAhMO0=" + } +} diff --git a/src/client/components/statusCard/SourceStatusCard.tsx b/src/client/components/statusCard/SourceStatusCard.tsx index 269db1db..475ae06e 100644 --- a/src/client/components/statusCard/SourceStatusCard.tsx +++ b/src/client/components/statusCard/SourceStatusCard.tsx @@ -81,6 +81,7 @@ const SourceStatusCard = (props: SourceStatusCardData) => {

{upstreamRecent} {canPoll && hasAuthInteraction ? (Re)authenticate : null} + {type === 'ytmusic' && 'userCode' in data ?
Code: {data.userCode as string}
: null} ); } return (