From 3a55ebd95cbbc1ec7f5a8f19597eae6b3961c52c Mon Sep 17 00:00:00 2001 From: TheCaptain989 Date: Sun, 6 Jun 2021 11:10:41 -0500 Subject: [PATCH] Release 2.0 - Script can now be called with no arguments. Languages are pulled from the configured quality or language profile. Command line arguments are still supported and override what is detected. - Only Radarr and Sonarr version 3 and later are supported. Using API v3 for most functions. - Losing quality setting during rescan is 100% fixed in both Radarr and Sonarr - Now uses the API to detect RecycleBin (removing undocumented dependency on sqlite3) - Fixes formatting bug with submitted JSON in curl - Adding URL quoting to curl commands - Renamed more variables to avoid name collisions - Added additional debug logging --- .assets/radarr-quality-profile.png | Bin 0 -> 39181 bytes .assets/sonarr-language-profile.png | Bin 0 -> 30245 bytes .assets/striptracks-v3-custom-script.png | Bin 64455 -> 64455 bytes README.md | 81 ++-- SECURITY.md | 3 +- root/usr/local/bin/striptracks-debug.sh | 3 + root/usr/local/bin/striptracks-dut.sh | 2 +- root/usr/local/bin/striptracks.sh | 489 +++++++++++++++-------- 8 files changed, 353 insertions(+), 225 deletions(-) create mode 100644 .assets/radarr-quality-profile.png create mode 100644 .assets/sonarr-language-profile.png create mode 100644 root/usr/local/bin/striptracks-debug.sh diff --git a/.assets/radarr-quality-profile.png b/.assets/radarr-quality-profile.png new file mode 100644 index 0000000000000000000000000000000000000000..753448e0121405304953b68109b5cd35a29a78f4 GIT binary patch literal 39181 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 E18#Wi7XSbN literal 0 HcmV?d00001 diff --git a/.assets/sonarr-language-profile.png b/.assets/sonarr-language-profile.png new file mode 100644 index 0000000000000000000000000000000000000000..27a38e87168656d623ae7d84108bbbd9bfc3c6c2 GIT binary patch literal 30245 zcmce-1yGzp6E>LOF2OxO65I*ynxMhm7ALs7%iz$gNcebaer=Nbh!+$79qoWX`ynFW!{rfiw<#+F3X5PJf-++Vw?OC)j z{tf+l@1!g(_O5cA^Z@z*XD%u)`tDs#Eb6lnJoFja{+pK5yLTA9|32>r?La2)-nq1V zmk?ET*FRZB)>WO|L_E*#dB-jUM*!CiC+R?)ZBm)~vnYwls=07SyXaue{6@cQLfMPu zCbh_tS&NXld0Y834@gT7;LH)*&%p@H5sMG%0lrS8Hh1|0*K^qKpKepz?y~sZc<;t{ zxXs5`O5j2iUv|L>qE!DHeJ)IZwwHE(6!yP1wR+EmBw}is0{qub-@|_W*BggN2nzq# zQQjpYF9B^P@Ca7_`85OU51fA^v;qRs{tXyHL7VwEKtkOx=gYqlwJ`rbOz}e$#)ZDo zXOhB4cp)Zo1lNMwc%

+$TyYRU|fQRO#M#gcfa|W<1rzghFwvM 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%0Dh4?j{-wn0@t5 zR(W{2T0}uo(pmiG_KHg(gNx|yVvEJ2e?FVr5^Onh)w(jl)^vT)IvPyfVO)UXIeZo^ z+Rd6B(N}x_Ofkr4OXMb|Zx|*16Lfp8Hl$B%`njhHp7dMf9EPdHmezHEjF)RuBfa_wDLO}50rqXeo zxgD+|%g&)7j|@k1Mpd09ql0^35TMqY3Oo9NC#ap%MdT5Tp%1xVBO-ZoP4hUn!FWq^ zak)tx*5Q|ayTNrV)mXD3ukbk~s-;sGUo(QuN6n{(ei9imzq!G=D$jbeP8_+#ar$A< zIO%wB|6p8F^W(mLs3PjH16PL|@46Oa+QzU$Gvjx=lSIz$5^R}hv2%pO0FdlEPSdJB zd()I~ADo|IH8qLX8+)8K;4FsR(FJ+ZDDZg9^EASMw3rEUP75q3s6y)S^jSxbl$n`K zQR}s4q&_>N!X2i#bavvELnXTdsM%K{eJ>uqvOVvRUojcUPb_@8Wpp)`!8ITS(d-`~ zY0o%(SVG-VF6oh){cLs!!2J`oV#eJskCtXR6|HCcLYI^__Xb6;;Pq}V{9pl`TFa6wG6_J5Q&Gl*_z)#)gy6dkbN(w-b z%&>;`ld!xcdiH)iC^+soettjv0?xu7jT6YwYs0{1u1hV;TWv$R?SV(L6AwLILTeXF z7HJSdv=ZPxg5MU-kw_#DdP-VKUGT+SD5r)CG%uhj<|uA!%fg@EZvJ_yDUVDdwDB@k z(`1?xE3F$<|G5Kj(YrjH2Afqxc3$mquK0RP)_NZbCCnRi?Uui`&KT(vF{A=bJNl^G z^4x<6&&{H)-7*Ss)hprF<~)thrbw^oC9ZYpa&~pFnTO~J1SuWb$(PYqgL2^u7-_o1 zD>Z3eezt?(8-9rRD_oLam1bOrJ5O>Y@mYyLBe0{(Xn@IQ$GI<#$s?bN>VTOPi0o$e zLj`WSV8(}qs$9K`6b1f$C@T}%p*b2;sMq%bhu)EaJ;YrA5$D0h^u{VHjAuC8Mm&;2 zlyF{`ADWXH;vw{CF(cycCOu?eP`Q0)+2pMyej=QI> z7Z?dB17p5W2b(gb7%hEG zq(#Gq=TnEL4~6(OD-GzzA3}}U`~u#cwsh9*PtLf zp~$(1bXqVXWE!`<$smNPe>aG0<-*LV;sYdB;_MmsmQXT?!Vi!C&;pH52#?^Z#!i?V z_T(aI`fKz6(I;@i@Zc)5@71PxoY~hiU_J*kNYA;&R01MFrc85eQQB@; z*09WBdblBWP_58q=Y>|r@{3yf%q3Xjs<)cr9@I`mZqJdja!PMiVo{?Sn~N)m*ei-G zw>_LM^{!*Vq?_(kQ|UOfF=)&5Ip_rp#l?93SM9x3yjEqV4k*NwDyQC_BWf6!JQ|Wo zZ<7sax6+8HWmu@aJL2zpM{{*X6ZR^Dqs0mOTC1Gp@Nz#$i9$3-hCxXOpt5%RW5?t+3vv8YZNqW94HbiZi>`sDB)TiAxtz6X z(4(e7hAY3`u*>2ZL@Rd&w{#?CzxOFqtN9XpGYLO#+@;Bgf~|>T*h$3I740+^e!&*1 zO-LWI>d-1@?7@sGiLw=ul$3PQq_&6|kl46=y)hGwI9LIw*s8p}$-NKpkgt>85!S}y zMV;pb%5OfiPqf-xvC&glXLdWPHLv)>U{<1`^u^@;OU1b*wh5U;=N#u+*1nN`VUw@P zN<|sc*(|$C{fU>U$=8avjBnGWhdzb9l)|)gm>g+c_)Q~PFGSHmne?)+tinWpzn5b_Wut!3;{eJWM&uzQg?cTmV1blX%w?byJK`^rA zwKYwSK(<ico_@e%M+s$OhQ!&w-W!E#~ECrVG zft8GpC{Kp_eX@<&l_VL<6?(_ja_gdu&S$mJRYoY7rd{aS7M{Hvm57aFe(Gq#{7i(mQk zsNJBq&^@=NQ|#yIO)1;%u=#+SR>O+?^-+#-*`Qb`jkqsv-1@@PA98a?$d<3QTIFt( ze(REe-@?IfVt0M)_N?7&M;ZbGKAcsb@}a5}#0}mksL@L1bl=NfaFFE3TGEpj7j{`7 zd)!;V9P0?I&|$Gi64z$Nx)35 z-(nEKXjka0mvc*e!9bC$g@T2o82g4#H^gg$Y8rIiafMoRXWk)x^ucj6FIv*9WJAzyzY*t5WoZ)+32+}4*WKgjylP_ztdPdlv8{lCmA%V9R z4YJy9TJH1Y#Isl9oG)0sSU2!b;RQ(|Za$kft8~%r8g!8wU~ZZ*hiBD6DU?)_ejuFi z+J@~=rN=r29AD!wFIO@W(r!96UPZPn%G2=Fm+f=z#shR^KPRQ@RP4p-j#J}67-7Y` z;bQt$g{7DT1O#8c*sm|Nn*newEq;X*B`*%qsS;|amkgQ#+Miii{CEeA&sBuLr_J;c z=rd&aG5~pcb zey=zAJ>m&zPjc?s^Vd*XH&%w<1E3#DZRdcA@?MJ-??Tiu*?HZSiW@wFX-J`tWqXTaT zSCWU0elCzlWGPhluK`^ZTBCu|K}QZNQ-sUcH!G&w=f*qdpC9t)Xq)<#j%`nNXXcFU zLBi1*I(dh?ypqK8kq?yUQIncJ_QDnqbDJvhQ>4E0?%=EuQVQmYRr#{7@OrM!x93SQqE)nm=Z7s@@Q^ zs7>O>3juD%Id=>GbZwvx;RmJbO-8!j1&))V-^>6gO51JE!Ftb`^w2xT@4W|w1hS<4 zBCO8cZosIDy;-?*3a=f*^R?S&N`C8kn1l?SgVf`d8nJWACkc8@T5Z4d<@KVcV4@?{ zDkrT+^C^jytO*vI;y6uIl>`k|l>9XKqv<_wQ^ap@_XjEc5*XZ6V)mu1Jq_*9kmsy- zOk6Jn~qL-Tp|9$^5-9MSDNQpziO|C403KChf9r4M{v21MG=k=Rs8S%-cR7?^3VF7d= znjOBNqdSs?>j-+Gb2{}riZpSvpriBbzGplt@#cO7{$-8wAtwJDUP&c;bpw5>KKSNG zSm?%b=QG9o4Tfa)gFxPUd?AQ=gfsH@ToQ{@mgw(=mo5Jr1K?j;{QoqF%2mwxaJ&x_ zkHz?h|H@~+^Snbd{bEq={Y@l16!?30Ke>In6kKCs_;>g}f9cWO!52Dz9i}Bfyt5^N{elV#`ZQE4!H{2d?^;z>sd<~E^L zJxlhEz?vrfC+Zk*rpxer?V`it|C;lmFyiZ z%fcty=qrG zX%~0qMZI}zY5!&h|M_CcMrrlp#?corC2TC^a4GP8QlJwPU#-RqkSg`r_vmjz_C?7( z2T;|8?K9uzrxffsz1mMM_Ko4M8{q5OKO>x9qC%B=;zIIsYelz9pO9rYG+$%ip5~zT zR|$OmMhy=t0Fmn&4yGT4B58EPR(*}{EbuQ!;SNh`B_h`kK1w6c44b8<7(8ml8mz7~ zWbgu-i$D+ak`W3~)nNtPN5#fXIbs*JWO7ZmtMEk8)i$rpeiV}T@u>XT4cAQQ2brqC<8XyPjq%M2x*%~a0ix~K3+FQl-CyoH$2zQ6pFy@4ry*J{?T6lXJ)bNZ z!aTF}ReMh3>XTDv&Z+rJbVGl5xh}!-rQf@31!=&@#VhV^lj0nvarUg?Sw5>ahFn^} zbYu9tVrm-S&>(gijy$AlF+msvl4^!VzZ-r>LaE%B3S6n9rhxK(<%%twH zZ1ztQmv!9Dt6GYSIEPmX6Xn;Y1A_8sz|Fg&4EPg@!{$VtG_-|`sL)*G64K-)^vK@3 zQy#PN^zrpPhkAK&DXr_BwifST>psgJO@M0zQv8~+$j4{6K1|Jx3n?b-AtlmyNEy8g zw-oWkMI@6(*(e(=g6^bbm-w#<*8L{t=Z(x6L^(joH-+U6o$HufRAkIk7w%a=upBc> zaoc3^_h~Vj!suTC@C+iHaqz?iuH=*`I*obx011R+#E}Eh$+%jSQGJbEA85?6Iiehz z|9B-|oNJiock)`iDq&K2W+G+qdw9~YWpHq-b!`M9=MbSx-y6F-AzcU?am=G zpdA_S7;&Mx!YG8&xApYqF&s9ZnKmUV>G-t5$aSA`;Dn5z;*v*_RIZc*MaN~H0Ul5< zwExwIAKJ+&i)udIm?4dK#<(E21VYiatL@PCOTQAqulw% znn0Ew2>jX=D?P_%uUYk~`QJir5l3SuriR9dHS2aOG5s0MyatMz52!}UH0dwPe9e@3 zaXRGHd1A66ZoBLoG0>_-0s88g#wG>wXxifX6(9AU3KF|SN5k1e>%F40PuC72l=afD zx~n!!v`!nM7kd}Tn1NTH_BbIdW`i-+>P0`6`Lr8FgXIj*K;>DpLRvFb2_cZiG+{J3 zcoz-UrMvaj;(GV72aS{19lFy3IU3bD`D|8B^E=d3%}17^+bT>u@0Y!|+>h(vzL71J zhce$(Gl)k;!U(ci!)&GhbYDL;3NcPQyDh2|}PNlWqwxCjbOVjWWeoY9f zfrl0@4Nk6f(zb-{Ptxgtrd-n^31IrID8=PkMz%9$D`P$rFtj>0U2FQ3$PUmIe>=2V zLVn^_-XwMh0e*-e393HQ#Ny3%P?k+6@86(La=+Co{ zo8tD;Cy#PD&e81}uRwxK&9L7XeHTW%TOX_q$zc2=)r5WgKB@G)g$XP9yq1}mjw9Ul zO}6>#cKbJIHtaz3Z-0ueb*%bI@RaDytK7j&!^?mIAc+xtfws^_RUXL^Z3XN18^kBK z>*C5gd^>x}6yvP4S3&?_ft&bLlw~3W*xs(HZn!S zxpG371;j!1IeNon=wzJQ$2|wO zf}N?t?DU_}X>x{kBjv1HUda8@c5SLYxHS+e08t))KYfwIKTs+CsS#@0$+dPSbbHvN zqmVX4BXD{b^yBc2o9mT0zRgJ_%H;}mwUMtMZllZB)yDkps)ph6w{}<sKV|{X_+1XNP(g|GT`}oUNjUN|d3v535&{Ma)_HIY7g0QaXHVPi2^9t+8>%VASGdmow|lTOpE*Dr65t6Vhpt1jQx5<~O*B!+YwRcFH# zjm*}e#(^@=n1p7?T@?yC8~}foT33FGf;x|~BO2InoOFx5BJ11vI$aaE*yg8v3|PH! z$NA*)#~5|T*u(^5NllrlX|GI@TE&rq!UyBrmlHl$^2E=YBb1r%%+E8^4?kQFwA$ymhT|bX4U3 zs&sjPV~GNgX}2n@1MD39oe3xZP}^GCz^?nThqBjRn=c3Wa@=C0`J^O!3_qimr|&4Y zK+|<-Oo4M)4^{4CZYYIg8(DHPJW1YO@t#&JdhLy`^lqDe0iaLKRt@g`Ad=3?{>k@E z(yKf)v`xMZj2cptx;>$Jwd(obf^PD&6*btYkof4H!%&Y1)4aOlOS{z&vJ79sOYsgX zJ@#T1hO3_^-O2}vlhE%`$LUN7#a?cx1rOSRZ2#PqNmr#H%ySs{EUHS;TK}4}DC=y2 zIl3U3n&&OUHlQVEw*N|PJv8yUoqMOd3GVR*GMKq$oeX!mk0|E|yD_$<1YuDpF^qXn-Y(toITYTmLgjp$?RK{NV zqm^RY2i~*OfN$#Y^kg#%4u>F*zUsKdxj7TYIMun>!dsjBdPUqJAs|HIRR-n4d)r< zn{hqo`(AgTOik*g=S|DR3r}=v!(C<>U{X*#+ zH7ux^5428?rXOsK%2Nr;;IQQskeNK#kA`yeev_eE=M$mViof!vcI;4>+LA8c4L@7; z%Ai;O`jyJ=6A>9m^pckE`ne;{_RjkeEWHzy%FzkWc$eX4>O^)ON&Coa-0Egu61!~; zb_>San16!pzsK69lav4Hu6${rlT|q|S2v`&ZOfsaX874RosV;!&srO0Rf??4Fmj%x z482BCd*AKxdc!|78t8<7p-NIp@ILr8@ z5~tQ1ML;<2aGk`oBLr^6uzwSZx1LJ;I`9au&v7qbT~4S=EJ^eF@q64N73-;lQqA55 zri?StPnxVM6Z3Tn8=`M@n8O8Fl~ezLmG@bP#KKfgP?%HBk6rhuzh9gPWcT{#jqEaM zX@|17jj~v`?_R9L=rk^%ufgfn_)5W+b84*HapWkEZ}oi_T80^dDFXi^14A z4aPYJ?Ao?R>JGjI#YccOpFz7@Uoa#0)1L-$Tqi!|so12(7Jc`WHfkenV#mv+M8zc- zrp!G6rQvhlwm8z#G{ujbVA2ni&t<~%;Vvt;`Mn*o$fMf}<1?TSaiU?Sddg>H+3>Ze;RI)7krf)E} zNyciGI*ruTy=T@9_iMrKCNozR_9EaVR91XR2LRNz~^?Px;D3ce~KrG_n3oE$ybJgLe+aq-usM zVT#7}6OUg&q0D0f@jLg_b3RPhrW}||)K9m@uj;>%h!(u&Ca>ig{~TGDP0*ssCL4JD z?MhT%=HP2BqX*8rUhP-ITWscL2!r?&wO_El<^|8&r?wtewqWWYx2dz09T)KRycYEWsv)~C3ZssD4OigQonFrO))Xt{1XO6U& zU^$`9C#>E=ee|LsSzg5{Qf3o$~UE9?=Ob@yN^@YqOff9{lZ#C3ue4?BPY%eBu3)dw#J!X+;-WciEa}^Eld9ghE`sVG>R+ z-R}!3=1DZU@ggceFO2H8n>S=`MOf7w(-|Cj?adMn&N?mAml;7PL}u7*tWTfedC;)-1+XYW%q92@GW zmO-iM#dW%kSQ=@#SlfX^`A>xE#{3@DTT+ECfqi)37uKuTJ zMVgjGDFXx|m#sfi8ueL4hTnNQ0jHZ$B_vI4R?e&u9%B4Ye#dnR!OskX%zEirhSz$4 zrI!G88>u3XZ94e*&eV!3U$!c7oqp zurFAroE=D@Zm1(0hj3&L`ea5B6#&t!1-Z0xT=RQIHSRwc;yQPY2>(0+H%H)JDqaB_YPGm< zSsEmqWk6l?n$tNJb!w`fUfBC{uY7%;+V-c2R?p2* zri^|4q5Zm^mSJGY>%%Q@^V44IS5X&}lDhR-@4);TD&S@u_uRmG&`#_^fOl&WwNrU` z_^$XswAjIQ^CRoRXV(zBZ^w{hf&9T6@giS4?&dpJG)JBDFdyqRrbd&+$TU%0{^h&a zn%Q@}yYH`uttjqsHlBvZO#O^XTh6T1>!%a=ALZe%@URpJB)XkEW`)?i1o3f>s298| z8@?+ij0l`NSXm57ngk-iRGZZ*;`$zI3ohc{z2s@4PWD57AQ7WOmCtSDYTz@_H9MB= z`nNgy*cTicGAD@RSGb#y28yYgC3s6;hH=oe;ggc~?Ab-1Z;=apH(Zb`W?}>Qqis^r zKbaVImyzE9ka5H@T3q0dh&59mE$H>ICa>$>3`V?{7t|u_GM5unzx_&(?3_g<0?sOZ z_8O1Sqq?LDWw>{e%Rc=zOe~P z#!ylX_y|QN!tMh6obM?ePye780yruvFOw`m_4{wopQV3-9=cr9U=oa&T zND)~=Fn!^_Y<4IZ^S>_Q{a?sx8o^D?Ax0C`zXbFBaq{Rt<(M%Z_YHu z8;f=HeHsp?)Vv|1^`AXJpsY7$oP$%Ea+V8*#T7fM$@zGN#X1)_`R1-xjn8J~@k`;M zU&b?ND-NEXHwbVIAR7Q$``JN3*9~5PUCT`>&$YUXB@Sy1K(?%(`~FWTjzTBDBj(d-2PJ-<~XB1 zo3lAznb)P0LdGbK5|nGWHg$yXX052B!{60U3^JSTaoz}fm2nsF$}aLDo_D0put)sB z;$|2eX=itb?s_0`Rs*yiGfC>_3Z2QwjN1v4(Qn0U{BYPSqHMgXr}z)I4_LUrxwIA> zmjSbC?a> zoGYu4e#bf+>$(2$<|e_$mI<0}e0NPA?6s*V1-*3bYliCYKh-&ofufhOS(4Q818^)- z+l|{K78PY_363WxTud=roR8CHz!CpM0I+A_$2L;qPg+7(+uI&n-E`3ZLV1c7RAYOY zY1Xjf$67AkH<8{AXQ+9E{m(m3c-W@mR$tEm{++gEt<5~J3RhIY=fDrXpXjsAbx6zU z&O6D?BYctzN^75+A!+t|ftoI>{>L)9B{o4oDI~~vKvg?mSO3UN;|H_!-T)1UYGq}n(C;Jw;7o;o;X`y$%)mWM$cfnylBH0?0B<`T* zmuPvnEWNj4xG8v#(mvhcq7@Qp(V*Io?35)&c@9Muyolad8f;9D=K{SK65}Ld{{vmY zc2t_u|D=$&zDE#W3wGFl_%CO;YLh2igVm4`Bt8kP?5zamuNf`4dRH@k4Bn1miOYQi74b{xKWG5NE0n6vBNcgiQ zJx9x`Q+Q{$odd?f_fNz3BM5*#Poagv<&_?}kDnwGj8_H=)?! z#{%!ay2Y`L{v86u^%5J*o!JdlkuI|O&+KC~|NbkG5z&_N@oqx5t;z{JqijRoW|QcE^*N4{B=9VGMLxmqj0bNSA%!gZija<`)&Omb*;e z2OdRsSiWz}+v8QMY4@skrdq_L;Y6i+ukRC5@))~{g|Yv3jqMK?C*VqmCik!HLS1Y; znmj?edIIVD0=2S=idgyk1SQrtI2dA38q)k7ADvFE#MMef;Df~b_wOI1v6D?Y+O-zP{}8FRjSb+1TgytGgpV=lFxR ze-3(+oKGuM3E9T8n7aJibOO@8yto1cZFjWp-M+;$pToI>-SoJ?RL0X9Z0&U%SQE%# z&q4z1h~h-0iA&=i_|5bR+AKj&rmnXi21)9**<88WyI4Q!+j(JaQ1Ph2WYpoL-`9Gf znT&RLa;R1v`%mXiYkdYkusr!i{ENK=?j%3ku-cee(me+)JXzcd6%BDJqd(b0nXmYY(k-gacb}lCEd@qorjK=_DZlLQTjsSDM2~t=CKvx2a+DcDkhmUHPU90|*L+UXoF-0qijEQ_{pOn| z9NMSlU1cJwaeDwzFYMS^lh~)!K43}o4#`>Uhr(ST1L7H^i|zQ|jR8w?un#s?8+88YeTh9jNFv6p{u8vOUBd%zRLmqsHjXhs0bqitUt z$y5z?!U`A%Lf4MHrGolH_fO+E2ZLrjAqi?BivdYmW^OD8@XLgV3SE`d`xdd!N%sw5 zU{=7YYUhTIQPeh~@vD1wpXrA$QTa>lvNfk2V|T2rni<}Huurgn6g@rt31*BbaXLsX zJhaqzA+lIE5`bSfLaY`yaJ}S_&iB!di+k@6iBG#h{zQ4-VLFfmZGm#A>}04Ab#Q)Y zpw`)ul57)?Ez2ggRP4iA)$QO2d#PXWjrJ2+idlb&L2rAAj!&O>*5X&#xTy}r&^() zHFyLlVb8y-9Q4H1Caml5CgHkIaeTZZb^1aG`Sr`o`yN3cbc^Kvx$dry!M52` ztp5A^vyoT&LN)U1?wfjsGzUy=_t-pq5Bj>P7EUKM)7*-ZW3OfBUu7p)yp$~b2ksM( ziI)F+t=IT-bj$xyNcC@ZApWht`uD4K{%>k={=GIx;NNYO%!gcA*O01e=&@Yr5%Q6zlz41Zbm@wVm($no@>;qZ z%sK~Q0gd|^&sWn+L%j3nMgbRC=Y$=Zu~l%q`O?ro6LDNau4qa8UKuJK7rCQ*7-~{e z5tEw#=J3~uPjkP<_jVG8wni22Cq(T%#<~Y52%xh{)1du&5J;fs6rw!KMkH13j0nBd zJ9Z@b6LvEEn!fto1z@7@a#+P^YaX$iLN`(Q8Z!J|KSJhhG;ZV7NsyB&s@lQ^O$L_f zKF3BwHqg;W#K&r2x@NKvl>WZ2ee7WD-szeNP1=izocrSh791ceyHMHBSa)5){y z*6A@33HhoqAO{)Kbzk@vp1w;-`S$pFSVVV@dZ;@$? z)58lzw@5z)F1$&E^-m761z1~dK-wl)|T6wo>X(9*gP zJrxO+-89w4md_W3hIxvvdainANr{f2hbyw2<55SoRs*3zS$kDt1wNdXTh9c017ow% z`pQnE#rwVLD~+`%FL^Yigptz}62sD9hnJZ0XjSB#SC)d*+JP>UGntykbV}K)Sq~B{ zCRSfIa!!p81u*_K!?CQ_Go^SY@MymI()jycgA7BMfn=^Tu*|YH+Pr8H zdE~(P_1&ysynz!N?eXjFb>*U1<2R>$=7>%0om#nAh z|M{%NpC@;^sgE!>yUNFD2lxR=J$&<2Nxg(AV^V&L(fwB!W(tdRqu+D#8*-1tSjJAIw6=bb4dw)k47NQfiUHjN05Tu&*WTxhdz8e==q zy@*{OLt4?>9m7l;^?^vr-M~+peT#XUIj4rJ2pzN1m_viy5q-g40E!Gc_V)HV5US|F z^R0SE-w&Q67GwW)h$lJDd0&-VEjxOXNLBWzVeso{_UByI-^N7-AX^2g-j=&E_4@Wie*cpdKuo@grgT*i|$o&1oACO`I3`R5+FqFG3gJt{YigG`<~+O{jYQe)%f(7Hc`51n2& z*LbknXzpgYeonFDkgJi~ihZq7YgI8(9JNMX4N;8np@xO**j-dq2s#6f&Z;IY4i>DL)9}YZ%l7$W6=_ z^N1v8hkaMq0}8bEBK$&Nn8WJUJb_pfIenu}Tz2_|Nw2ZQ9Q_(xiG}gZGJlgJFB?ZD zNy$zzmXh9SPMUl}JhI~!^f^VOsG2aXU@yW9{eujy$c`GR=4>bYr(m$yb8 zOm5VmF_h8AfV&7$%dR0S1P&r6XpxUrc5V;Sl+x!(_vctCH$D3BL8ZqLENF6|HtKkh zHLa%c0;t}JCgaF9=d_9zj5ge0G?0BbEO0|DxJHn3a#*nyK3KaGmOVi>h81g17{e7AIK~Epl9kDsnij#H?pY6)OJ|kdB0sn zU>}^oyzJ?u^d`tQ@M}zIZ)?Peh5pc*jNTo<0X}2d0lBW}4U1GIS;>RsV68@B?XfS> zrdD@>r8Usyj)m3pm2E!3RK_zn{)vU}VnAnxPY_5<->*|x@_>EMR^>~`pHR_rlohfO zu2qilVa20n6wh>8V9_{4S|QFAzwfr@v45D*AA>N7uSsVY&UMJ{VrR)+(xav zexk)#JxXRmqu0|Xar!OLt$G$D+$pB&TdqbzS@R}|*M`yHT-97~m4V)S63lAQ1ahcT zvE-&3v{;^VBKF>8?W|U9H!TCD{vvZYODQ_#&+5P*I%Bjj?h&MQR{8CHU)N{Tn`WP( z@&Y|Qv$|IZcvYHbR?`nK|C)hYN}Y1yf=te|J6@ZShvGhYImC2Q zy8YLL4`$vwsZQYKuEJ4pPb3M#O4Z@Rf@)Em;6xFXmx;SL%Cnz{MSThjjY+9J+rI?L zT`;aKl)ycjJ!z}nFEa5HI0AFU#H#z{v{gv`JAtw%LS~}L=sZy<=jeJF#m3xi>Y4nF=4*$*hQZo8~qwTH3;`*|z;V2}y zy97vppuyc80tA9dww(XKJUjrc~Vr}x>TLB z_TFo+y$%rbctL=iCFI9_%+vp9!)8Yy-35Q(=oRqkuEk@5^?l+!T;W^#HqO(O=ByU~ zHDuOgYKrE_pyz>0ozTQCzMblPU(fjpZa3BM4&pt1Qj(%0sIuS%mO~{<*p)ob1Cd|B zD|rCL@RYCTHf!P4jTwnU2s@>azaa)*i)3naG06a$?SvMr+ve1d`< zEA59DN{ttmJ$5y&J8zm|nxEuf`4AD);6Mw#(X{8~DPJVktJ{4 zlR8C!O3w0f+jC_|x@BH56C>AQA5jYJrHY}&vs{sA?89xXU$-mdvO;2fGY2l}l-goA z2#;^1$sVEzBvHF$nx;EerSYWg1|;X=@rLz&ecpb@l&8>xf1tV(ZbKxnzAd<3an}B1 z=(3~%D>S1uP_%LL8#4hZ;dSxV@AR6L?A?P3RDF z!s)qtE+K!_^6SLy6B)ElpK<9>(_GLo9#g{p`d8Fl?xE$E0MmB_i#B??N1^yf-l*A9 zx#scHDRsm~R)m+F57MQk4T}H7rPhaNJEqp@5DCz^qF7E$^>Iqc_-@RPOj^#`)JSWtYRT= zMcwtKPL~;r^)NFYe3xTm2xanit*)$wu~Kf(s;H`FtPpf&U8ohDu{+&VukJ{94&{qG zWFR|twSp3^L|1m&3-wW0kQKz@B7GJI1(?U2_ZS!4>9b9`F%p=+#Mz&AdsYR+`8GFA zLsymfJf2ysCBAQz`ASe)A~J-zrM3HMhk=tNDCwSN5pN2enKap9K?)ZA!tluuCO9Cz zw31(pxtg4wn8MKnO=PuYx%vsq=JNURAj@N$;-j+PP!c9t+mBZXO*^5nfGhmkJRtb4 z&_`=iwVbZE(dH^(f169`svhCeb5pA);HX4y{81lJ)g?rBXJA%Mf+=xzVQx}B<#9Q? zc*aRqC19tE)@u%B?a1}`RKa{c$b!^{e4?6$gC2=va2-2Z@4(npsq#q#dru*TH+%a_ zGd?dVQ}8Z)H75%?X*Gv@fSz4H;PieEIYv8>+xo#bQ!}u6NCQn(&hzIz@^CLE+T_FM z6?)!Xq~?PvSdN`hN)Wht_*#IlPbt%Yh}jw5=l3H14=cFNLE>x%#%giqk~W{ zv5mUXRQca2$nOFiN48_lU%40MbH5m^1gwm9RcDRia2Hj2=#jkHiZf!60cd201Xnz2 z^ch5=LyCq;MTqViFwF56o+=XBRMdT|(dnt#U)C^h9_gKMi4~WtJM@@ER97(|BHDb5 zLNk-5qsWFOchO)xn%%LMFo`apk>FFCHmE%0M8re!`h<$e9=x z1JX`s%r{@J_}Y6u%k?{a%mA{Z%w;|fbfa{IkVp8Q!S-nwMRqAE>ieKc9=&85XVx~e zQ2c?BPf^@?qPb^W7TOyY!e9pV{iEXNWcPkGiQJsd3?J)t-548tCJQojcBBD~5~ zSMA4_(_Gvm)0G0IJOV7paN=CA_=fn>cb5FzdZbkps_yEBo ziNSK^j&w`D5JwQ|%6&Xb-Rd2!=4wRfqbH$9MnozCOOaxvjdeI0Zm{Wex&;7KppnTk zT6sLCJk|clp0+yH0iX#N5olN%6BA6&wu$WyxlqE^>K*B7V~{yq+mT<7ZsL!se`H*3 z9xW5q3_wdaRbSrJze|HX&EyEq2()^@THi9>o?EDKgm%De?%6H3dKkU{#wGS&kuh0zrms7Ef30@$0)`3Me&3o2jwU8CKS<`( z*$6lX3VQ8_@aLTu-tlwMqk5dEy3mXtCK*E6+nkl~$vQkC9t%2Zy{TB6u6u_iriW|H z{_AJG7`hjc|nZVVCf_~>ZAC8I*Bl%g{ zhLW2*&qV{BKt3?;V%X@yCrW4{SP&e`LG(qH)SQnhsiP#xNg4Cf9%@P#C1=X5sR<)g z_y`X?+94^1v3`k>ep>N*wN%vp;2w-=nY&pO>l#5FfcN~f^{p(TQ+qH}4N*(LYaS^K z2i75|_Y1it)r7GTsO@qp#9?=dy{E8xs$cNk$ufCOrf27kB&%#sx{g5$ zpmcP&1@6UP4zHOBrQd_X6z_KbUsb8*(5%x7fPcuOq#2Q|dV{M(L#q6lU~!Dn;aqiw zo)OGkmTUkGB_jJy-}gyLiOR`nq+4DxO%`1;VIm6IyF@XJQk9xm-#Pn2UnUgVp_&%d;a%C|FC3xP z8r($%xImYsNtlPVr0^r%R1fUhvA?l> z#93>a#et?w9>J1rX!+=Hx5EZ!9u>f461ZjZdWi>~Vx}rm#(zy9PI^?sh+Cp$mzN?A z-bKn(V$H|o?AIFyrhv8(bcqs&3G;SkG52N{=7&*yEK^JKDRC-|I+S{v+1A{QP~fYw zJ|3A~P95&vl%F1T@k3tk0QUpsaF&SyV?9QIJdY`_1Dobe!AHqU8KV%aOM8230p@D()Hg@T9mlHifrEV!=nH<7H`m45^ZiEwAqME^ znfMQyBYi_sR5w>mltNB21=7=M=PW08%~U)xHUgTQ$&Zw?KP=~Tn>tr;vwKQ|{6ulJn1l8pMg9Hdvv#!TB zGI23#$<|Hey0sP5L3?H~K7M)Gybn`vat$BLECQ<%qM+Z&M}GD!Wg-Tu4Np(=_3!VI zT-4n#77%59^aB~WSO@M;?tW;IPnZoY!ajGNc^)_LOREoT6^X1IXX#D5ytZ_0;AtR4 zSG;AGMcm=cFj-Bh{h=-eYt&)7;FKN;8`faYWryd_uXe6ws&e`+>fQmV$5B#?+Lbd2 z#~XD-#*e)Wb+1YUJBbXa{N6T-Qza{4XGcFsW_Wn_B*-0I%?aUKbS3Co0J_hto%nGO z_)YNm5*7RNK;2ZK^|>@FwPmUjI`H`pUuY{6uOg#25bRy{B}=Nzv}IQ#7Qm*J>_jKN zLf><8xW!q+7kfKNy)q{8V@v4EMZiFsno2a+ubV{dm`5Ef`d&AHnR<|T2Po(&>wqnF zl77Kx#F8Ps36FC&CX!~{7mE0EG}$98j6{ml+vzPn41dt#(~c$0{JaDlj2%U|sgD-s zlS}>X=x&VsSFb?&;nU>a^|xf*Wj%1KEwdxdpeROj4mcob5w~j8?3NpF#U!KxUFv$W-6jpMf1&l` z?RxE(T>M&nUK(62j9qVzrPOA74A*d0KxQstj=V8iN7c1rfMXQ;Nup96Qu&jU`+))Na8;OJ@^09d7u1X=Es+_>Rdpuh)P3 zVTBfV)RhFd7j(F>MfOrx8yP(hl&KyKr&_R{UPLb%*!ZdZ##M{vWzP=F@ObU>d9{6s zN^@}@Uwq8`mV+ozj9?seUO}}iLsr8+6V>0v*WablpS@q=PJ@rLW6)ts%;@CMHt`@e z+~_LlSreGX%|TXSWg3Kwtv$0|2j3To<@+mt(sB>jh0kuK6s?Vd#uX`*8kMxo+>+p# zNK6PR@W`^Xwx-0kh%tymm>lSE!r6>A_;sprW2VYl%ieN1NE}0+)QN*oqgS-f7IMQE$(QnTb>L*wws&^(EAFJ8ocz31m0^C(Y_ z2Nm4$({7djEj^NZ_>85q+f#1lHG^4DfJOk=$%a+^$M`lmvGFUa_$onM-#xz>0LfQc zm{`FYem9ABbwE+1Wo{5fG85yx;RW8T{R==)m}Eu#X+vkDH%sTOM>Q$L;%Rm;@u_Jz zsqyq_7`3gl(V^TZb;b`){35kJPfwklA_lO#D#w;96sO7j)_Ax;YbnnIK%y?K66#Zc z8v%bO{=X4^Kw7o`JFg4KEB>{)3;g2}|J3#I%Q3Hax}cDil?_WyrVW+p?Cpi2p`kGx zN%Q9P@$>6;`CIq+<{dpf3IPE@NhPSnAWt9L2@4B*qN%Cr2nQ;Zt~1^Y6yXcX6^l}j zFu{+Ybim zLs0|kDT^zbo#`un*;GzRrc9r^ph9G)3T*DD3A*l%GoXm<<9Ck}XTBpR9#I)dP zq$h_D&jji~kr2`9cTRjzoF^9L_V7R$g3F;m@Rm4lPWJQXkvdxw#~l4U`DkVoU;g4$ z$!4PMFJz$+jK&CoL8t(0qM0vuqRO+K7NyElw66harGNoah?mcr!>S~!bCqvmRXx^Acl8@JJX@a%y`$JV+P?vhc3!X2?{b*TN{89Re!**|Eol(OU{=GK>}ti zvV{=ocz-xYEYZ%|d<`rHS7!Z2&R2yNf-Ah!iK8e^Trgi=Mv4;@2_A01Q7WXI7`=!aZX*6TMCpJ=&q#?;5VGL&%Y9ZpAi%& z3P@Ag3eZS*T?Puuyn0)pHKb$*X~;yQ(aRTpc?(=ym;`ZZl$_vstt6`OEy!gYim>bS zuSb8FRHW8s{jxEOZ7vBLM$>BdIywpKaOFv4CCmV)Pg=CZ)9;L!8~os!fQRS-HVxBI zQsqPMR8LF%@e&a}v3RC)QkBwg?ce0!P;94AA8IUY07m`Ju0_9a1DH>9v=uO-PD%K@ z))IcXDrvf8hgz__DGQ*Pl^PfyEuQHX05>o0@3oeC>EY{15cf;h(W~GCHYN>bN~|@9 zqaagFU0Sd$28wpsIY7>cvedD78zTGx&qsuwcg~+?ejf#j2)c(R zh?(dKrcykDgE`feudm6&2r;&;!<{x+8ClkmJ7h!Fc=<8T9i4PZUl4H$d0!I1v~nXO z%lkpzO^qP^gI*9>!Qeq#-GoVr@fx=wAjge$bxQ6)&KW;zTqgjy;6~k-yb4q- zXu;TN8ud(W6J>EsD{Ju8%J3x!pHtA@Ih~kB&-aMHPiZzg)oYzR_<~ytFA+`CHrt5# zWse6&+A02|P?(sQUiF_;FW_d7N?>&--~yGQOrPUzL64O-y_+B)7Q{=4e)2#0-sCA3 z6cnUHn6oGf$l}YYgSaIQQRYlgDi&)9iHpOWnm9=7z89>osYwwE#5lzQUwic?MP*&ucFD$;jx?%AooLikB7C zKG@-L29&Ig)W~hW$}ad~I$uUeB&$9Wtu---JLuC9Rp;~K&4WID$U#)!TA9|?W(WpF z8{9V&ndwqn%1bC;{~M`gH7C@H6GMLy9Dn+@GM|+I8Wd+c-#4|#r2N${SH2SrYx?s| z&%^_kM~ehio!~O*ZvPX!(|lSOS*Oe;D)yrYu0OTpB`jH#mZQsjj(@LhRjQj%zw1pm zW}q|K=Q(^MjE3M9J0rhpj5BOayxAY?kLi>f{?KJ->Sydj1SAEsjU{^)OVT3{vcC?u z)vE>R=b&)e>mM@5!km};FhW^!VEx$@Lfz7B%Ji(bKQ@q!HuRfy)~k*BHOZu8_YAet z0@{x)-2|S;y&!(%Lyb3~ez1V(4?csNX8|IGS){-X%Y5Q0&2Li)>Glw^=2NA9J$8?d z_)$IpH%h}rSCa@|05a@u1q>>IGKH?Usg1$!3QSd6=7cilaaHDbM1eG)t8Yn`QN0KA zbS_?qrbQhjn{hE)Jv^2zX$(Gy_P#0!AaZ+hJdfi+l96?wN3m67vh3 zg4r5GoJhpZMot(4#C=m^&rQD$AHBemW8Z;SQ;g8)}%RkwjO;A#p?2ug>ij8S>7^K;{z(mgqpUp$n1Dpa-`*B9cuRB2 zWahUioh<+{m4F*W$Ma#s+^Qd-D=G2>9{4qLp=~0#qG@tlgld=vZ_w!$1%)vw)o>|* z0{k>>@acbzrQ-D}+0Z%@)pN)sh*5qsG`qA0oXFt%dk=YKO017zPg=^}DalKeXQldz zoTnTiKQnScaR)5Pa#m<-2t1!C#qU(n7wX?5>Hi&&0{<%{Wwe`8a)e<_V>(@1 zo9^AqT06d=J2$Bguv#+WX^ljOx$dyK!T0$%UtM;?D|>FFDq60cbHBh7Z%LO;oJuRv z*;CkuM-Z4kL1m3td~v|3vKlUIKV`2r9vv9pZMq)7y%^$i3JQ?!$~tPOM(+X=8is`j z?68TQYWC-`e}Wa8G1f;<>w_x6KJ%S$MD&8*>w63iRaIo5f+3s;@p%uc{RFH|)=+0b zG<51kFgf0<`p+t^e-IM_q@RUba8IVoDbZqm(julSIbiDS(vN!!W@6ZSVQ&iP3)d7Q zQqS;$#XgJtgvBg1koZ8ap4?i%21-f30@LaUoy8s0yB!y`Jl?TsO-AXn0?}64s5K9! zPnZE8-4?U{kNxossI)fErS@TXgEW%9`E3)mg1hHJVdfjv%WY?rwEO||M&a9^%6hLO zJrNrcG7{7y-W2{u&Z<(c$V3jG&|~+3N{4o}2oE!2S@}ddml}@o$*2;e1JAC7iPJOP zLc+G1q=V(0DtCD;O1K18_z0*v{&$Vfft=vJ=-4RJ7&&M5Nu{M_yArzbDO7=mz`ZdN z(p}9$3nI6mGA6=HOjw?e-ZAY7O4cT($9A2`oQ0}Cc17~KqL7wvN9(7=tbMv$H$}tVrhQCb0n}ROoM_% zWhXyoOWq~!LvmJBKU*UI?qTE90nzqUNq4{ZmLf|U=$(rJOh<4>n@;U`F#P<&G^el^ z-5+0dCgo7&a9l4-HBGF}`zslqwF|i7w1#$)fEKbqLpznc`us{kCB~%NN2XQgEg6}i-2VsnReuGjhVV1;bT_MS>xk~Wn z?7sl*bq0aq)EW^nHv83XR@{&?OUl~44*bxR;A&igT0H-hrBEU&&S%-Qo2ibW;SQ;x z<@2NA?hGr6U&cNL@*qI1be||?sMM@U4-Ba@9L_BZyU&RE`H{X-;Q@l0K9L3h-07!sJs&>;icxirf6OwGgEh2SZ-B{Z`fRCw z-S}J$O@ujMk2gU2v1M8Is+)o69xF&JK$5)#PPO=|rNO{uoes=^=dysIm>#GX#A!~{ zv;-UqMJ-Qj^SvKrKOnU4jP%b;D1nvg6(qpRxauGHllfE%=pPR$-5n59EkwRjP0s$% z6za+O6g;Jca(|W&3}pRGvBO*FJpxSWW#(RbpW}MKG+S^}X9@uv*de_trF*d)_kA~P z7gBBnQ2%xZ1q3I4^GV=C-jLc3{P~v?YW_+d{<{#^*qz816%*rgb8F%h#-^mCtocu6 z$yK;MB(nV%ObPHO9{%#A5|lgoE20Ea&%B%#0rz1fDw$M@NGJhlF-V?E2^J0Ne5IlT z)K93WQteLK!jN5u7lo5jRJ2Pk=H9&R5rCRRFkG7>B)P5fOrrpOQk%Yj6;9f&=&SZP z^^kNqmoltkH#>eF<%ohL^g1lJciOk^k)L|3DF^gC1(>-f%gX7wW z*Iq~&%%w_aNAWs+P$=Z|PDnG{U&8hxNnK%0azGtSI?ytB$CE7xHRxsXq*`Np{cR|U z4W{%;|HbCBh_KyVvKgl@V{7rNVJL8k zFeyv)hf0YTMSyQ#4Ex}f$Qo!`KUos+x;;yMl}#(H>5OH0{SeA|?K6c2IDh2Z|EE$Q zrthQXIu$CYG$uxjFNrYk${s)~tx=*MRKIAA*(s;n+u$>FC4qr%J^Y~{9FOJo+{%e@ zZ~0{<*5n_NVoh+YKj3Jszv^xN(_j6m-+QB?A_tAxwWrfolQ4}MalwwoL!IS^wSM!s zK`#VyWezu}Dga{~Q1b3Uw%}gVh+Fa~Y!H-8G{J&qURyd%7-t$&wW~)2##{)GIKi%X zj&tzbAo86Y0{8LP?_cdY_}JeYB4fCj+^JS_AXEI_K7c3r$Ug-dY}J=rT{l1HD6n7S ztXWgWM@w$WIBaZWFPj*=_n{ievgXJ+qYq0kCujcTeC1i}nKP#XkH{lK^DtFvV8F;Q zK81Y{A6QZtSyvcSP6fs(OfXInTQkbEh_EdGtbOnEBedDp1Qq{2kt_pQZ5! z0Nn$6u8FV1;tN6ndt^Q1D)6r1kwL@>SH>Hz4&{Iue4(u_N=#p&V#t7EW%&7xHq87; zb@Zv9ao)f;ZbNGZm}a5%03s%rMpZs%=2yNb6=80}oIGU6&{Z$qj0Ro4B};z2A|~(;0_PJ zjUT)E(4Nfv;_(z~Gz+u&0*?XIgH;29u)Yb84IN3fGd%v&;)b#58g1;TqM2YUu-uX# z=IX#>QU({QkKga{!(Pt^Jpm9tUIR0~EpSDNAm0iEPp~oo{~V3dvN8{;x&<|OF<# zC48f&&4Ys<6e9dIql?_B%NusVw=mx|akvvF)Xp?D`fV82R~kfA4x~mA#f?zXt^%3m$d< zZCWYjcvr1I{shhiITSxW6lZgxDUic-6hJ}#JYSKBga|*sGFK?~&O$X#4{O`{`>ZD38ni>54a%QCl#of3G#aej{%U9jDe26}bGM&_rt~5>7t2`T$<@XrC8sVq^*R zPb$v56lWOjGs)XUFM>dteOyOxD};!0)t^@$70IfMHM>_3dOPd|$XBnX(p)5o6f>W9rr2P(^-?dR=I!V@@l z(&Fz*cM<3MW7dHjeyrK(l}fRQ`z*5AN8A|s5JPrmxX_5cSO$~I6ORQlgSA9 z?oo!WV82*dS^#F85Uw<#intJzar2<%ptv9?sWK$6@-5D{a(OSyg;9jX zZBVo#h4&8l3>{gAl>>a->`}_dQyW?Q)C@ymk}@z%f6>VO(lZe*Vo7GfajLZp1~O>aLcoK*Cv3*IG$=CW}bSx*BC-!2F7yY9TqtP}$$_F!~=x^P+-s z)rqWD&$yhYu@%6w!C=0!gL!Djt#BNS;g z2K@Mew!SsBp9C-KXJ=)_7l=U(DSZStBW^?)L{S0AMdVQ-aT*fAz!{GJxGLm4YJHaR9sxZ zWT9#wSZHMwfz8?~Gx&D*bgfq$ZqE#8Fn^{NQtlUSyv`GX0dPxbZ=lrf7Ql`tbt;d4 z@RCJ~I|IwgVk4LFcxvVcSm1Rw?Q^MtV^I>v1Z6PVUQq0_;)RqPj{?#0m;BinSr_`t zA8Vj2!NcCxv*RiCIWWvwEwdj`M_7}MUPdEO52!8T^vC;&x`Qsw)8JR5TlH5xkssZ` zZ95LvrLXT}1v4fyG(IZ>R;+e!U#(zntQgDQO8sn@+KRdX6GZYH&|1D$yGHIRAvWgP zhLBaySNlM^rLr1cToe;Ju!Q2R00AknEQA;NZ@b2Iro;Vwy5~6&!+knIVA`5U+A9b) zmlmNTgn01*FiKBFIm;A#!!Q?e==?epSh1o6ONR3GXJADQA=ta|W?A3r<}PpUP=tml zJGAB}zN7!VK|1q$vX=wF+q|>v2ty0fG%{5G@LfDx7gfPxb3!zVg6`A!2cOb>yWqq zBbL^To#NQDBREx?A1n5dz|mVeSU(v|!zFEC$2`;Le6HE9)3urI<5+#PiV)8j!JG6~ zaWtTw9g9C3?L**WRafsj^s(PX7(fM9VMg0UC;TkS?M2^4G2!G5N0q3Yi!fxJ0o&bt zOO?M(#L4$9$Y&vV=;)0p>L~mF>F~+zsg0OaASTF1ePa9dvrnvd2Hku7+4cp(@zE?y zY$;jz+hB?yp`i0dHbm(*w09^WB=p(nPQg2`MRxjvDb{qh62^d6(nxJZ#9?!pM0`@f z>n)lm2b?SNmmh)mFm$q9=`JZ47fLg=I)2iWhP3S@pOZ2Q>Tg7O7L;jn{Rrq}FrOBu zV$CafX~Ci=5biy<$k%=AXPe)&JFW|HXk+$DmW;{u`5)^mJ$0$xyVv%fAvGUkd zz491&rlF!dzr^zp9=zc*8IyOF{qX*4D>bfmmDW9sijh zhfAN$4s+OUsb$A88!2`FX!86(s$EV>8BO*()jRCNORbPr!36GNk#gpP%-K8{O)wDw zV8KiT@g1ZfDrZfxAhbtIc->wXCa7yzIjsM7bvTQ+9jzwag0_+~@vB+Gf|fN~@33on zAi!q7cf9>tv!2oGh&?2Tldgb;TdH!;M}weKEalX*I39znmGBn5}`*BU7%<`rJ8$ywkd?tI_>jZrm~m=mmzpS+&?$8FZL|5v5yA1#zRX1TiBi;|aMSm)L?ky$5(4xi2fEa$-0v?%;p3a z5_v28-PuwyA0f7sf>O>J%1^aUsgc3tW9sd>F?g&t7vAQN#08;0o;71^wY6E*=Ef8k z%DKS?52!4vsrd!*RS78ms$^JXd&fZWq}g;P6zQa)Bw{NJSg7FQRLOzUlVyo9Q?+0D zDI;UYPi6g(s25dNbQgE1ARB5`@BOB00P`SI2I6wDrLfQHAXjkoI-#e`)7f|P6BE6Z zl;C*^==ld}a}k5|JP9F%5>vRZpDTIg4l zQZOpI`+&9Csr?%V-DHTg%ls2M%DanVmjvcR5v&@tw1I5Bt%cl z`((PA14Dr;>q|(?Q~}-Lu+WPy77Z)0fc&5O)Z`jVBbEu%T7%%}R)y>IS1;Fc{~Yt* zYCPMbZKhf1!9Rnf8*exE0|dUrrxGs*lo;KxfXy57Z5^pK4&`y=@y}* z+kIi#)WHB*FY0BtSfk&1keX7}foFKzO`Cuj++$=Nns-cs!ZuScw6V$0-a&i;7ZpBd zB7#^*Kg{;&?}{xh2QHQFZ&B{~_`n-b^jnhGQJ#M(Ok+9b;2XM%u~%py_$CtgBrG4} zvs7Kwo(6P$b^KJO&q5&SvNO%No`}IRrfrgLwl9{kW2#%Cb5$&PFspC#xOm?Zk z7&to6fC7#3M1)MII#gVJDu6oCr;TS`c_~w5>|2@(T6Y8z^2AF>Zoc`+xuuN{QPL$g zOeH1=HX3%gzc!IG?J^ffHQ@U8i)^gIo};uq29T+OH&=;>Q_mgq*7hK*6SvM{-ub4& zAz`deyE|~~gW~Sj(*n%X^k*fH1?2s;e%-q0cgb$A%QYhE4B+_7DO;ws_OGvj3*oSBMR06!I;!M*Q-)GZ zz?jIT*3b!D%mY$=WM&OH(zv92cOzCHY_0aS^%&B1y%LLn|8NWRqU86J+e7jUaiC8r zM`ZWpU>fVYS{}{c@A%&c)&8bao9`>n4JJ%-O+_@NJ!s3zgs3Z$PgJ8Q?;10Y55GMn zacZSudSwDA`RJ*Jyb(DdUo~~R=9{TxsAC*zFP-QsIsBD4sU_5Y>7bSJT=uFMptEb9 z{xf8+bZB)2yi;m0W?3!B_(mI{ zlAcWH9dg4{qF1Z5)X`V6Q2_5!U%y&}>kl&1y#HBD%VD+p!s&dQ2n0;CNg@ z$Wu8K%f5bj-&)=~`ivqHMnOU0t3SOgtlv54CRr(Plkur18}Poqz8>DY7{)|PDzZ$Yj+xm&lrHF9C;I2{zn}64fM@VQ zzPP{q7SeoM3QgaV8K>lKOGhB6Cvj4P`An=gNE)0Y)g;!uJX=ym4CZvfoLh7_`t(|jfEUSKrWK7o!0jn}ww05aYsagp&OXsb6=1T)@~ zmb>h5Yd%*#CRViyo^8%oZ&l6;DXsaQq>zbJ621n%WgL0smZe_x%XuVetIP=5Y6ED^kSYBgeB7(j3ooEa&?*2#&_X%J?Ha-BhM&Vw<=rr_;}Bi+SM6w1k{~+wDc?x z@uUL?bsuJxZs`r)J6ZfhCL<2IKz@Lf%PC`Dx-ic^JjP$JTAuiD$|^jWZ+cfr$>MD` zwyI$GdD4(=o5|&F)8X7oT-fj@j>~vQEp9?e{+nE*=KtCKqpPjfFTs=d?f$-~2g?A!|A)6~rrNgT`-P+?ho}%!nBf{&LcCXA)Xtn8@bd>4k7R z355gKCrdEc0v-Ye% z`4PDZVfbg=?~xnITkunp@$3Nq;WCA>srmXIzcvcN(yEljh-pyZ@*OUnUy%G!R`OC|h`;8@MZKpC3J)twp9$pl|gbW7ts zn5inMl16Ci(FRb4EYsErzKhI)o>5?wxw)kYgh`t$vDot`0FV8C*J~PI-#V}$>1Aj# z--PBNMA#50J&7l%CQC21uNi8K>{xO*kIOx#j5v9fQQQYExU zQVv&7>+O(`nM@%{2>2gN`>I?u|8Yr3`SWj&KLz*SACgg~aWqGU1PucNBAFN;7X9PC z2f3R@?R4WH+-mdG96v3vW=IVmJQ!uuV4s?T2Gbn5;%SyjzR6%ULu-pNJ@D60!v}Z% z;qS-O%@6vUa?>KttO~~GHxEQXz=(f$kf>5nf=ESA{R#j|cyIVH{$OC5@#_D5D-n`& z>19IneI}OV>fm{e)PEl8Ajopwb30Teeg}c-2XTbfGSK%90F~7)q3aqU zLj4IBFLW*k390B4!7`F@)0yG^$zmr-=;ZFiDQ@J!!|F3IJ=lBWIES{ zAj(n$v(^?G@y~c7i5UQJv&-DeVTF#pjyfh-_SKKpL6+G&%CL6`jtz7~b>gQ+_^0A4t@GqOtV^xxdkWJ||!Dp!c-LEX+5 zG97j34`^peho(8WpagJjilozt+H`rJ=h@Jut#>4O@5Boo#ZPFmnbPspLa|GUWhg#3 z>4z0*xvuR_a2_OIt%!74E=9756jey$6}H)J7@_KCx>4gkjE6%RXiB^l^521d3dB!x z(S1#!CVsY|hk9l)wuQ~PM{5y1AIOU4fHY!MOaAShsfukUYC2SEqa;l$OMzg<+Sp@r zW4(J{UehDbgD@}BkMYr;J3kmL$m#LpR{JwJ+H!Meg8Qr5tHh(J3%T4jW+}{6H|oYV zmg*HG)E9?)#q5PyqJGdz_RPsuhypRyegSXZJRV)CK?}WXC!uMXIy+&tO^n}D+j1Fd z*>i20+G3AB3^6%WWxj&FUz?~5z+zRyuWrbi!KPj?W1PPzC?m|BI#E=LHvw&ks$k01 z8OZu!Ums;~-`D2~rMRxrEm0?BWjyB!sWLjmEI;p^LdIbvmZIMGviQuXrv(%_EjpLS zxhdS-NLH+8qPcEywiy@gx#?^I#+ygxxkVz(dpw6tOicyJ=8ajk9`o<|PVv(#H?eBF zXm3>R_jjXuOS-P7dnbs^e?X~khSZo299o%y$FHT3I9F1zDN9rx$d|HlKVVkK4K>}5 zpYU^ho&}G9u%JFk1Yk@v?0~6rhAo3EHWul{E>!09?>a^Xvu7NVM06{&wZ`d}XmMgh z0~2Ra@e|k2IF@ou>-$c>Ce7H+IXWNI4P1|$X5%0c7HT`=DdN|!!tXi6AJ)xQXus@Z zVcv=uTa3h;D+A)QRVM8@G2+(3_xfQ?#>7+OnJJg!)bb*K zPP1vnO*Ov42-a2eYx~{#>(J*nSN3F2c_lxkpi6L1x+_fOI|tqbyqYe2_c&wJ%9|l> z-8y*DS3y)C!hVjO_O$V13U`S{ZeO!ZPo`pyP-CJ>wQ2eT?l2z@?x^%s46o~#wrKGM z8$q-5`258dvm4_9ZYH3vAzj7$X0lQ!e0OrO0UyJ3T-92(V(a_UI+JeO03+oB_+*z1 zi(U0p1j%Z0$4mNab*7JPQ0L>)G=mcX(%g!6Z8XMvO*8ELs<~tG;k}y8!oIUhSk3Ya4PKZ&9Gw+^-D(-yB4>2~vB=4K)gu@36XI1Ut8u-*n_6+v| z^i-N?6r!B_VGrCvdGPBI&7eZvRg6)iZ65bZ(-=e}}JC(1pSAII_l%v*&ES|(y z&DR^L7FUnYCag7!sXs-{BrwkA<}oY!ZkGQeY3$R8V%##3J=cY{?bfi{?nr8>T~=eZ z-Yv;QkLkM4mBti+`A+?!FZKC&{%5bt;*TTW_kDJqjAo$1XjsbxjPkE?t@<;KO=;dM zxZGqm@r32Gukeh#(|>MPq>@%VuE3&3km`|Myd*@YXe;kYWz9+RVPyxCORvcKV;18X z%aOuz57RfV=0+|JKdqbs1AZd4&O3^5pW@4~YeVn8! zziwiwh?b%CqeJ88#{FLDKRXHb`7lwPc#e0qF;W!Rkg>|W_&M(dGWeJOE<$kbr zdDsC(0L^?6#{JRwFm92o+!voHm-9-PIgNZ=r^JTPuKazahiNw9y{N*eE1`jLljSc9 zNT{i8xT6(RK)xIL;0kKmxlyvg-1*_&k%>Wu#R3=m3rdm;)WY}1#fMxUZ-og)>zJ;M zfw=`7EIovf*NuVt)RRRRu8ikV+`H%#O7)5~lcQV%=Mmi{p9%h~`OA95t?fh$@Bs7% zf#*&YV=o`o^O;C3eTD6qZVwKNk!Q=+dghGeoB+-ZMDM=1 zCSVzu$a^%ki)NFtwr$MHkk=d)`(5CX2Cf7PF{` zCr}1;jstJq8L!l$GRllTT~RHSS!C{mqDd97FTchtL%N={JZDo_x>x&NMN6Nn>cC0F zm(qSu_<*kb{{CLRfkzd4&Yq%J%G$Ph1?r;V?fyE>C9|32UC+3}ty8T@<@@SNcKhS0 ztl(HX4`#i%DnopE^U$xgakeAhLRMg4;AGcA%p`yHPb8i84($o;7_^~`H|xZV-Qo-b zoZ{gZft78hM>~0UYGK4q^I7#4dzlz^WV>FuYnfG7OmkCnc!q=MV-(I+dK7!S;jQeQ zxkD3*%BBmbbV8AhfV9v-YIG|l0i?H3)eIF_X*_$AMeYJIH`cC74jRcL(ZnYZC1t#R*+PSW@? zEFhY!frLqe^3JWP$jE$YSPcr+KIX>WaHy@8QdJYNUNYlh7?KK~^qR~Q#W~y#dhHV0 zOW!`A;`8~O18rA7B>u;<%J@M-k6!yIXROLAvVtsHq~7lO-krR_FF;fvr5)Yo`9+8yOuRF2icPe&;t9a~kT zS`{yUHtiy;@bk5v;EXU8kIG=##D=+sYAV9Fe#)slP+H=``mmCtLn(Ri=F+woviKf) zb!IlS<*-3|gtWKp3CyG!BG92RPzFw~h+(;+Mu%A5m6mFdY4TiEq%6L|9dG+%9&Ir% zge$EgB#jrE+RO|txyxx)be*k=6quh9toLpw1G=tSJ=(JA`7EVjgK8fXp{3%c!NjsO z=G2D-#ZX^~Sl6h+b13i_3y_U+JsQ}OKe<ly=4VWQQJodQrQn4Hn^6ubq# zVm;Mrfd>%FbtrEp$F&xpY+Kj!$n8Pq55#s0{)257*zvsCjxEgQ34y1$;G+}y%MAep zOG7|N-tq9lAWgEKoi>|$NO?c8F`lPUKTILv?>1SzWUiB$%w|a!(L)A=$$L&&l{ME0 zgms;Qf(n{v5P8UgWEIb86lG#1oMOH48MM0v6b|RkkvN@$p#e*7rJlG9Cq0)L2bgfR zF(VqL3oAvdz{r($s3+NTQ;raxavR!L{#CCdZ_>(EkhCVRiDU8UQKYNWh^el@`!VCS z;iRYQNr&Q1&G7kKPDLh;a|-3T30PiI%r51ZbYxd;mB|u5GS0ta#8Jd+;#_UhnlP{@ z*gPZ!NB!A>%U}#|ELxwhZXTu;^RQ5Ai7vC_SUTLY428>P`rdVVjqr!NHKcY5_6 zW4V1hq1^P~D{SJkko-hz_4OEqMz`HsmA=_QsKcWU)}Z1$_RxH2q>E^y8e+(QcMzDA zo{G9udDXFBYredd#Y||ftL87uPticq;lkKpJCSD@X4MzbmY(P7B4J#q9S+$jC0pa# z+ZY6Rz<P8qnG=tayACkHNGVw{x}b*e2WwsjT;8a zpzf<$*%*6Xr?)jF-niCOIaG&@vE5RIsr9+Hq}LveD&$s0HD`M?GM9Xu2`on;pwzeb z?LD_#a2;*_4pvTTzaw8L<07t84}OxXs=30Qa+|Nmq%seuPS2 zhECrhd}(xU_+=axabUIE^&N_6xnWjaBU1iIg?eE$)}d0R)D+8NMfAjVW{?5`nl5(Z zEw1G%u1r3;ctVYA`=g(+bO>t@o?ThrCUCFl3BTaHt%DLI6@n=4MFEAHynB}OHA^Mi zR~u7cQZ&;IkG>sX&$Y53d*{6#<4ktha3l`5e6F&Xy46%pT;=k&EsuxKVa>>m4)x?< zGr+2H+?Mgls>O2hFG=GyL2nWmXI3xP3oO;Ojp{zZmYnNveDJ|Og)p>xjTBnawx}x_ z)PdXM_nF3~NTF7XG))5slL&nsn)WZ5E!^gh9nm(>Q%?ZfUPAwhUkV!~Rr8CiT#Dr) z0kV>g^zp#0o`Q{!JSWObqix&N#u|<)5BFxSmgN*Kyvs&p8?4r`>`CrUKoPmY3F&sh za&OQpVY)Bmz8H;amx9L{&gDZP_c=M!6C=*F4Vr$~CF%DaE-00mJTStZKX(^X*@XW! zedCc$vMV4aO`s?QKIGV4y=i+%a<25~N+8+kF4WR2+RMenhLS ztu@%rceahI;t3f*M4`~2&xrSw;2ODFPPT@x+!L_`#XW^0G*0pzEN6?qQPurGWZ|TsqZbL(WL!$75;?c}qPOJ`A=rG)_XxxQG-45eDYou2#k&&xtwr8@I-PbgoaqCYTTxkcc@UD8e5!fX+20wVeoQVi_0;Ch@82##VDC z+v&e?FT*B4%YNq15O$cJz_0pkO4~}Zb7^a7Xs(E(cpe`~^ToeN8}^vy*sE*|3^1VW zvt3VR_{e#PAvSHQ;rpHUHGC1NGu8%|FM3t3p}dir`2+raA4-qI>whmgg8DWUH9jsc zkt8$FFED3`5MBIfa284z9~qx2(#66V9e%pl{PSn=454>ko~H{9`jkZ%!oL=up$m=+ z^g1*A$@EhV_#f*1@6|R1@>B~Sf8K#oBpGs!*aiEhq7($x{O_KN)uUK5{K+lIReozb zkx+~120D`S<)D`fAfMyZY1&g_$?vo2uclk=8942&?nT8E#^Z=F1_sRfp!~Q<>Iq$= z=o9<0HkD?^{(d2cV~pMeB``Hl@Zcz2QuXQ`9UYyEH)%`^`_uG<6olq7{qw7q1}3l3 z*AAIEONU*5{(ESzg(`VN()`-BYd`i-^jywd48F?KSKD?wT3~@M<;Yo4k)LAQnTe7D z#RqlQ{^akOygOCxXct7<9Oh*h*GI!p)4|4546U4J%Kd&}WLzQ|L@P2ZJlFeg`k5i8 zSoiLNA!D+^%kx7LJ+XZUTDpAM{j9(|apfHdpPCam2vDRnHRYYvls0&wz^_QN!`_Wv z>yY*J-aLi-QB6a(Xpl?I0FHlMMaLcRgmHu)pC3jx*bKi3SU+VVUNC>vf~rB$5;;K7 zE7Qolma{jWD*9^m4v&8$3S-|q?`Pdh86n4PjE(tZU3FTKv&))gjog}R0UTPdkMVxw zAbRxoaUTws3Q7C<XVTF2;2ta#xe{#12GW*nCpsd;xxxA5v}AH>F1T0{vn(I{g>v z;>tna{&gGrlyAY{?mTQ9Gi!hmm{$A5JSM?T^z>2E;a8PcvK!V3A@PPFzEV#~)FPq7 zZ;fS&tB+I!?Y?cEvcZYzz$$#Vek0vZ0AA2xg#EtEoZv%A&gWJ$%6s(GwSz+0=U7*y zs)hI76`R#GUYp&j=nHd4TMECJLhh+L*86DMaBQfHu?ZB%8&_Oe>3DNh8;*;v|4gp} zE4t|r!+ZX{agO!{?8gJis@xh19>RG3&BHIb@P($3irkCo?Orhem1hRL%qp9;SNGX0 z)Ct%hV?mtQ$FU?%A?_=Q#hJSeVMF`G<&{Jq zjzhPcMN3|-%J-me6C*;}GPhHeWCDuMJFh0wK7!rzyP3dtwxoMOzL-jJyp!rIDH@vZsCP%L2TzAJe~Rrgvnah}8VQt_F4LAu=h9$lMXf9GDV8d=}sSZxNP%4Nej zJT|6`6=}@|JG0+RI2)7d+C~g!X^wmwqzT~EAd5yQ?EFzHMoT72}%Us+KOAnk2r@y8))-|M#hfyR=qX5@u3P2YxB~WxR#=fsZ6#R;^ zAMdY~U4Drm?-y0Q^_n88xK&@Li8^plaj!bmH`rgsq)e>u9#AwM*;R0pSyeJI_mpHkIQyYv!^{w(E^@qWN)lc5W z8krqAoEr^Ui5_i|oOwnWnTD){aIo42zG)dMog#hBgiIz5w-p$mJUvc#o!{=PS8xH& zG+%$Md)ODCBk3Bi(yF`E)>jG6!ex4VV$xDhZ?|66j~{dv-#+6R{konB+S%8}&$$T3 z8i}=Csd~27pE7y?<>bo zz7yXSMsc}Q)lDfX_hjJ1SO*2vV*)FnC)NX-?Mf&LJUD8-W6bfJhb=swo$OSggL{;= z=>$9XR@Sgy3s(G!rK$We%^|77P{1rN~ zej|NAsKR$o&CpPW`*iyG3@B)16pG1evVKk( z*f`$MTSSOR%n$XNY~w=dtojXUWu{e)yT6ppK?3d1YR&pTk4BI(HU72=J zaa%oS19hm@NWH)D_>O%GyWlABOz((`ps`sjFEsP@Rl5WSO3Y=2mB{jQ^6WF4s^k>* zYxmj*fKdJVjsc6Y{N$1HeKah1q789tmyhj&Q(-Ts@YFLymb55y>Dh4e*mN#)rqlP; z*X0$N@!HnBDxR=X!I4fzqJNk{vgMo;+##sHvooo9<96ByEnPJ|Hh?>1gEdmM%4<}& z@bd|zRsETYwJ#L8U?+u`Ko-Iu*Rv^LkaL`i>7mUiueV>*Cr`FQ9ZieKVOky8HUlfcLbs-xl^eO1i?M#v|VVI!+M3fJi?J z88?jIOR}7tx0EhV1cZw%IM{8<5(l~ug}6ejs_MoRW`#XHODtX1yyOIvd*-d0@V(~= zD*Ew+>k}hStiuMB#a*Cywdsc5P}AecioD3O; z+X`S@^zm}>@9=sPiV}`ImNJdlvT57LYbCIzvb)QVZi_$AKG|z(e3;)7>fHd1cFS=i z_;*JQ!}=cqmmChQpQ=wKnvZYt^(EhYIGih=8|qjdQ8G|nC9DQfYbk!evKU?|ihonk zB7e5e8Q1pEHCoPEmbC(3%gDoY;JNWTQu*1LWwCFL$MoNX;&vE|u&s|pGM#nGGs)Bb7B(kFEfj~fqrm%O zZ$KWw&8%Zj3J#3ZZ*P2pf3JHwF>-b&ZD-N={B7kDBVMJzUu@nT3@5y(3u$=Q^wfA% z-ElZOwaU-=HP^uxOV?>EyW`>3Gauv+>(*gF;>*B@Why~thLo`6xyn?Z9%|*4MTC2( zaNM30Lt33wJn>6@EwWlwY>a^-WmRguiD@zK2V#HUf6dC-*#EBSj7h&1-0xD@R1uuo zW5~a2`t&j}O)je_NTk}Fo_7KU?{jeFt{M5X!qubo#<~>KKE8T`<#=PzIj_u7J)9XB zJ(y`IDwIDzu0=>jHLIe+9P@4IVppKopdndq@-vev)LTa?|>)c#z1zOyO>} zLb{bGt*s%b|B}&q$nV9ilC#eS9?KqHH8{{a=sSR+-LlqKIjgF~7P)9&ZdA)SJ{5HF z3$5S%(%ZrBWXKk*+ruV;(oIPkW8DK>2Gt;gBkwWn(Bn;21r;YhU40mm*{e6J{X*u+ zP^cKIiG^*X!s~og+mLm)#*j;Xv0g7_-%xtm9rK$h0&S_bEcPR$di(`F4ej@nt+KE( zc2NmE!;Kf?3v;d^`_^PPYF&C5siw`1S9;AtOXtT8G4CI;K6o!|1I1{CJO_w<62z#w zLQ%N4KkT5TB5e|lVL5GJLmzp6OwyasB=043ykQ9Z_VB? zoG#oSoFirD+!{W+)*&v_vOXWnyg#&Uf)}SBs>l+PF2{2G@#!ze<6=K{jMUK-X>}C5 zNS4l0-To!WZ$OqGd(9lAl?Bu=1EEG^bNH1OM+`-1#*_2T{o+FWIU@nyl~s(JWRM+O zYgU6*lOXE-?Iot<1=XYo5Ljlzvlt%zDj`zc_>%K%n10#3xQvv#O}w+0+MVKWr$z3-A?X2^u&{D*v!szXAaTjvJGwpExrG*bsoYat8uIVzKNn-5 ztDNoFyqqP4wEfE8ny9TmT%$!0vTKqXU?Fa{l=iG5%-l?wCcxA`H-w~a|A)i&r^Dbu z{H6(6mfdDdM8&4O19WmXmMJ}}R*$CnYjI*W?cOen>0erc<@$r!m2a!@1H%@dX98U- znhWtNHl09-BoYm9Zb4T4C^2_;!3)XUAU2aMa#5m^WS5)o^Ae=pv^Cp;v08b7b+#b5b) zK3`PZmoY~-Sx~L8nnozm7Ps5sh!`}#?^LMPA-&f}%Xvi);L+_2QKJ4-5vKf9(froa z9a=IQmhQ9t!wFV0+81J3NjmQffd7}S@jtt`caknUO`Tq6Whg*P---c*wCBI5CI94* zkc-5!NGA4*;!memEDYt|>)IQcip;*4A@85grqKz!vrk^yze|y!fclOgYA^sK3<6Pn z0;KHFD-RBgn);?zdsj0f5pPW1EOh%a_u!)ZEXk>hp=^b99yN}V_5j# zwORqRRZzVS0?W?8Q1Ob)-4I>s(gtt5Ju)3xcjUG=O7XOrpavt^8@wk%z02yO>7>#f zr8<#nyi4cI5T%GPRiO@*hQG<+Ac3vxtJGJambWarF-Y-56 zyHqsDXTnZ7Z#nEPXu?k`MW}gQN?9i*ABp*Z%jxNYJCnUQL?3kH$b-Ik* z2jj1Ie>T?qk>II+T;9DF`{5TIHe|$P`tcg6tK4z-V5ytVuA%g<6^Z@zu|L)M|;UgQxqNb4!^{gpvO01@n-$EJZq zB0ro^@ws)+A9lw1c(49Y5-v}O}f4vY#8$JMzS0J0;e3%#3P zyOrQO9z;JKo#+6{Z0KUrP}tsPHwXQIntnB++i+erF)w@wP*bTsIok6aFSl^`5V&ec z{NA=VS1Id=R_&h%{Co35<|FNBr+Xbr-ZP4kKYAs=2N)Ll)`bWS8X;s}ZH%^$(N?GD zHqVIXlprm1#vC5a(`q2c-*|@}h~Vjo&bZd+Hv0E={uuCQ19qzU=Q)LWcuJ2pIv^rZ`)|*) z3zi$EibEGaC#m~?|EuNM&SwE1k8S!nDk?rep4H*Q{+Dh;Imp7o>p`p79{Z@_Jk6mx zJlfkTS3M{vU@RkU+P@GZ0?aax$1rgO5A_mSJWq*#V{c(ETU#|sii;($UDFvvC|Q}C zzuewxA^V|4hMCTuEr0jUd_H13X?y7wo^gLfmqSWXaoky#Jhf24v@_?)QJxr{3yf45 zL> zCw(K&X~#|~+M)SAgj2S0N`_<58kS2Ibxui4NIh^QP0DJAs7=GIrlTRs4f(;-zFy(! z-XGD6%7J)nN@dN5KDFU>J%@fELzer}rMGMX5t%a7>y$njRNxRuV92}oUP~~U>&lh# z>FN7rdw7?ff47ET1$@2C<`_9N7M?u@eZpYY=yO7lmTlA58R~IKSs6&A1pk%Z?;%}g z-oMfh)oVsfqf*;#??>D}3YbOe95sFzaMt|eTmCq)UCm%(m%|?r$^BSG+)RIU_=;_` z#Gz-k-Lb};k+Y-;mA*W;A;aevH$95*!&zaDx6WWu$VkLte0O;JX5TfXgd;h!A+Msv}ONX$h5&J!ony7QTA zpIcNs!VZHu=VG`ft7@XOPVToH#qlZ@AX~iHc5&|cYJlsV=H_M!ms(pd`f+y#blSx| zd?@z$bC9cEa0fZm-p2WMWs|25vnhyMXM5&9tiWIXVn^5v~_61|RS!kM3=rk{#M4 z_4)}?Wn4kk`ii-geA_A>9o~5-0*WDB&hW69Fz-gIjb~H@Xw}D|osjvR!-wWHobByr z;8|5(E?Kr0Mwx8}XT2mF{#@h&q9+?Y0Xw3g^vUHyO_UekE3%DTf1V>+d}eYbWMj^` zv$Jz(8@@|g+JWH{)xz6n}3%pQvpC&Fuk&q1M_*7!n%)B!C2wb)14}2aBi&mRtR>Slm|``_p}SEjkX!_nh^v zO=u?Zvz@HLf)3WWG<{1pWd5?7JxHK{HglddtJ_Y^DuXwaSIYBYnHPWL;L^8!%D&Pz z&IOqWl%3l3NV+XR8q|XmT&_$HWC?}!v%pJeXWBHr@s|zyw9;gq$5p_C;6v)8LF{|K zN16xUQ-^q&ywzT^bpeNC`8k06dFtvIMvCw*Wb<9)u=14@K859#Oq>3>rEYY*b7pml zoU3P{!HX+jXH#eLQaes}Q4?fg00@xig zT=w^M|M=xm9vwBo{}y)oFHsZl4T(glXM4fJGhD-!~KkR74XMCd$vMf3e*Ev%&XVM8jc?C z4gL+RRFMB()Yc5xow38~0>d3Zsb0H2Co_|H9O&=OqD(Cc#ItxXn*3*Mm3rc;`?mm_ zFJeF5mkt6yivCaHZT|`v)&9#k-9DR{pv5<>pP@T*F)WSgv3$>{p)!BgPw;7|2fkbL N`-7+T*BeXp{|z{(xP$-z delta 46178 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:** This mod supports Linux OSes only. Container info: @@ -10,8 +12,6 @@ Container info: Production Container info: ![Docker Image Size](https://img.shields.io/docker/image-size/linuxserver/mods/radarr-striptracks "Container Size") # Installation ->**NOTE:** See the [Sonarr/Radarr v2 Builds](./README.md#sonarrradarr-v2-builds) section below for important differences to these instructions for v2 builds. - 1. Pull your selected container ([linuxserver/radarr](https://hub.docker.com/r/linuxserver/radarr "LinuxServer.io's Radarr container") or [linuxserver/sonarr](https://hub.docker.com/r/linuxserver/sonarr "LinuxServer.io's Sonarr container")) from Docker Hub: `docker pull linuxserver/radarr:latest` OR `docker pull linuxserver/sonarr:latest` @@ -20,7 +20,7 @@ Production Container info: ![Docker Image Size](https://img.shields.io/docker/im **[linuxserver/radarr](https://hub.docker.com/r/linuxserver/radarr "Radarr Docker container")** **[linuxserver/sonarr](https://hub.docker.com/r/linuxserver/sonarr "Sonarr Docker container")** 1. Add the **DOCKER_MODS** environment variable to the `docker run` command, as follows: - + - Dev/test release: `-e DOCKER_MODS=thecaptain989/radarr-striptracks:latest` - Stable release: `-e DOCKER_MODS=linuxserver/mods:radarr-striptracks` *Example Docker CLI Configuration* @@ -44,17 +44,14 @@ Production Container info: ![Docker Image Size](https://img.shields.io/docker/im 2. Start the container. -3. After the above configuration is complete, to use mkvmerge, configure a custom script from Radarr's or Sonarr's *Settings* > *Connect* screen and type the following in the **Path** field: - `/usr/local/bin/striptracks-eng.sh` +3. Configure a custom script from Radarr's or Sonarr's *Settings* > *Connect* screen and type the following in the **Path** field: + `/usr/local/bin/striptracks.sh` *Example* ![striptracks v3](.assets/striptracks-v3-custom-script.png "Radarr/Sonarr custom script settings") - This is a wrapper script that calls striptracks.sh with the following arguments, which keep English audio and subtitles only! - `:eng:und :eng` - - *For any other combinations of audio and subtitles you **must** either use one of the [included wrapper scripts](./README.md#included-wrapper-scripts) or create a custom script with the codes for the languages you want to keep. See the [Syntax](./README.md#syntax) section below.* - *Do not put `striptracks.sh` in the **Path** field!* + The script will detect the language defined in the video profile for the movie or TV show and only keep the audio and subtitles selected. + Alternatively, a wrapper script may be used to more granularly define which tracks to keep. See [wrapper scripts](./README.md#wrapper-scripts) for more details. ## Usage The source video can be any mkvtoolnix supported video format. The output is an MKV file with the same name. @@ -65,14 +62,27 @@ If you've configured the Radarr/Sonarr **Recycle Bin** path correctly, the origi ![danger] **NOTE:** If you have *not* configured the Recycle Bin, the original video file will be deleted/overwritten and permanently lost. ### Syntax ->**NOTE:** The **Arguments** field for Custom Scripts was removed in Radarr and Sonarr v3 due to security concerns. To support options with these versions and later, -a wrapper script must be manually created that will call *striptracks.sh* with the required arguments. +Beginning with version 2.0 of this mod, the script may be called with no arguments. In this configuration it will detect the language(s) defined in the profile (Quality Profile for Radarr, Language Profile for Sonarr) configured on the particular movie or TV show. + +#### Automatic Language Detection +Both audio and subtitles that match the selected language(s) are kept. + +*Radarr Quality Profile Example* +![radarr profile](.assets/radarr-quality-profile.png "Radarr Quality Profile settings") + +*Sonarr Language Profile Example* +![sonarr profile](.assets/sonarr-language-profile.png "Sonarr Language Profile settings") + +>**Note:** The intent of the Radarr language selection 'Original' is not well documented. For the purposes of this script, it has the same function as 'Any' and will preserve all languages in the video file. + +#### Manual Override +The script still supports command line arguments that can override what is detected. More granular control can be therefore be exerted or extended using tagging and defining multiple Connect scripts (this is outside the scope of this documentation). The script accepts two command line arguments and one option: -`[-d] ` +`[-d] [ []]` -The `` and `` arguments are colon (:) prepended language codes in [ISO639-2](https://en.wikipedia.org/wiki/List_of_ISO_639-2_codes "List of ISO 639-2 codes") format. +The `` and `` are optional arguments that are colon (:) prepended language codes in [ISO639-2](https://en.wikipedia.org/wiki/List_of_ISO_639-2_codes "List of ISO 639-2 codes") format. For example: * :eng @@ -82,9 +92,7 @@ For example: ...etc. Multiple codes may be concatenated, such as `:eng:spa` for both English and Spanish. -**These codes are mandatory.** There are no defaults. -The wrapper script noted above uses `:eng:und :eng`, which will keep English and Undetermined audio and English subtitles. >**NOTE:** The script is smart enough to not remove the last audio track. This way you don't have to specify every possible language if you are importing a foreign film, for example. @@ -98,11 +106,15 @@ The `-d` option enables debug logging. # Spanish subtitles ``` -### Included Wrapper Scripts +### Wrapper Scripts +To supply arguments to the script, one of the included wrapper scripts may be used or a custom wrapper script must be created. + +#### Included Wrapper Scripts For your convenience, several wrapper scripts are included in the `/usr/local/bin/` directory. -You may use any of these scripts in place of the `striptracks-eng.sh` mentioned in the [Installation](./README.md#installation) section above. +You may use any of these scripts in place of `striptracks.sh` mentioned in the [Installation](./README.md#installation) section above. ``` +striptracks-debug.sh # Use detected languages, but enable debug logging striptracks-dut.sh # Keep Dutch audio and subtitles striptracks-eng.sh # Keep English and Undetermined audio and English subtitles striptracks-eng-debug.sh # Keep English and Undetermined audio and English subtitles, and enable debug logging @@ -114,7 +126,7 @@ striptracks-ger.sh # Keep German audio and subtitles striptracks-spa.sh # Keep Spanish audio and subtitles ``` -### Example Wrapper Script +#### Example Wrapper Script To configure the last entry from the [Examples](./README.md#examples) section above, create and save a file called `striptracks-custom.sh` to `/config` containing the following text: ```shell #!/bin/bash @@ -126,7 +138,7 @@ Make it executable: chmod +x /config/striptracks-custom.sh ``` -Then put `/config/striptracks-custom.sh` in the **Path** field in place of `/usr/local/bin/striptracks-eng.sh` mentioned in the [Installation](./README.md#installation) section above. +Then put `/config/striptracks-custom.sh` in the **Path** field in place of `/usr/local/bin/striptracks.sh` mentioned in the [Installation](./README.md#installation) section above. >**Note:** If you followed the Linuxserver.io recommendations when configuring your container, the `/config` directory will be mapped to an external storage location. It is therefore recommended to place custom scripts in the `/config` directory so they will survive container updates, but they may be placed anywhere that is accessible by Radarr or Sonarr. @@ -147,31 +159,6 @@ Log rotation is performed with 5 log files of 512KB each being kept. ___ -## Sonarr/Radarr v2 Builds ->![warning] **Warning: Legacy Releases** ->The Sonarr/Radarr v2 Builds of Radarr and Sonarr are no longer being developed and are considered legacy. However, this mod works with all versions of the container. - -Important differences for Sonarr/Radarr v2 Builds -### Legacy Installation -Substitute the following step for step #3 noted in the [Installation](./README.md#installation) section above. -3. After all of the above configuration is complete, to use mkvmerge: - 1. Configure a custom script from the Radarr/Sonnar *Settings* > *Connect* screen and type the following in the **Path** field: - `/usr/local/bin/striptracks.sh` - - 2. Add the codes for the audio and subtitle languages you want to keep as **Arguments** (details in the [Syntax](./README.md#syntax) section above): - Suggested Example - `:eng:und :eng` - - *Example* - ![striptracks v2](.assets/striptracks-v2-custom-script.png "Radarr/Sonarr custom script settings") - -### Legacy Triggers -The only events/notification triggers that have been tested are **On Download** and **On Upgrade** - -### Legacy Logs -The log can be inspected or downloaded from Radarr/Sonarr under *System* > *Log Files* - -___ # Credits This would not be possible without the following: diff --git a/SECURITY.md b/SECURITY.md index b8a7d50..aa90eea 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -6,8 +6,7 @@ Only the latest major and minor version are supported. | Version | Supported | | ------- | ------------------ | -| 1.3.x | :heavy_check_mark: | -| < 1.3 | :x: | +| 2.x | :heavy_check_mark: | ## Reporting a Vulnerability diff --git a/root/usr/local/bin/striptracks-debug.sh b/root/usr/local/bin/striptracks-debug.sh new file mode 100644 index 0000000..747569a --- /dev/null +++ b/root/usr/local/bin/striptracks-debug.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +. /usr/local/bin/striptracks.sh -d diff --git a/root/usr/local/bin/striptracks-dut.sh b/root/usr/local/bin/striptracks-dut.sh index e2c19af..a55829d 100644 --- a/root/usr/local/bin/striptracks-dut.sh +++ b/root/usr/local/bin/striptracks-dut.sh @@ -1,3 +1,3 @@ #!/bin/bash -. /usr/local/bin/striptracks.sh :dut :dut +. /usr/local/bin/striptracks.sh :nld:dut :nld:dut diff --git a/root/usr/local/bin/striptracks.sh b/root/usr/local/bin/striptracks.sh index 373d003..3ca2828 100644 --- a/root/usr/local/bin/striptracks.sh +++ b/root/usr/local/bin/striptracks.sh @@ -10,6 +10,8 @@ # # Put a colon `:` in front of every language code. Expects ISO639-2 codes +# NOTE: This has been updated to work with v3 API only. Far too many complications trying to keep multiple version compatible. + # Dependencies: # mkvmerge # awk @@ -28,6 +30,7 @@ # 5 - specified video file not found # 6 - unable to rename video to temp video # 7 - unknown environment +# 8 - unsupported Radarr/Sonarr version (v2) # 10 - remuxing completed, but no output file found # 20 - general error @@ -39,38 +42,40 @@ export striptracks_log=/config/logs/striptracks.txt export striptracks_maxlogsize=512000 export striptracks_maxlog=4 export striptracks_debug=0 +export striptracks_langcodes= export striptracks_type=$(printenv | sed -n 's/_eventtype *=.*$//p') if [[ "${striptracks_type,,}" = "radarr" ]]; then export striptracks_video="$radarr_moviefile_path" - export striptracks_api_endpoint="movie" + export striptracks_video_api="movie" + export striptracks_video_id="${radarr_movie_id}" + export striptracks_videofile_api="moviefile" + export striptracks_videofile_id="${radarr_moviefile_id}" + export striptracks_rescan_id="${radarr_movie_id}" export striptracks_json_quality_root=".movieFile" export striptracks_video_type="movie" + export striptracks_profile_type="quality" export striptracks_title="$radarr_movie_title ($radarr_movie_year)" elif [[ "${striptracks_type,,}" = "sonarr" ]]; then export striptracks_video="$sonarr_episodefile_path" - export striptracks_api_endpoint="episodefile" - export striptracks_json_quality_root="" + export striptracks_video_api="episode" + export striptracks_video_id="${sonarr_episodefile_episodeids}" + export striptracks_videofile_api="episodefile" + export striptracks_videofile_id="${sonarr_episodefile_id}" + export striptracks_rescan_id="${sonarr_series_id}" + export striptracks_json_quality_root=".episodeFile" export striptracks_video_type="series" + export striptracks_profile_type="language" export striptracks_title="$sonarr_series_title $(numfmt --format "%02f" ${sonarr_episodefile_seasonnumber:-0})x$(numfmt --format "%02f" ${sonarr_episodefile_episodenumbers:-0}) - $sonarr_episodefile_episodetitles" else echo "Unknown environment: ${striptracks_type}" exit 7 fi -export striptracks_api="Rescan${striptracks_video_type^}" +export striptracks_rescan_api="Rescan${striptracks_video_type^}" export striptracks_json_key="${striptracks_video_type}Id" -export striptracks_api_endpoint_idname="${striptracks_type,,}_${striptracks_api_endpoint}_id" -export striptracks_api_endpoint_id="${!striptracks_api_endpoint_idname}" -export striptracks_video_idname="${striptracks_type,,}_${striptracks_video_type}_id" -export striptracks_video_id="${!striptracks_video_idname}" export striptracks_eventtype="${striptracks_type,,}_eventtype" export striptracks_tempvideo="${striptracks_video}.tmp" export striptracks_newvideo="${striptracks_video%.*}.mkv" -export striptracks_db="/config/${striptracks_type,,}.db" -if [ ! -f "$striptracks_db" ]; then - striptracks_db=/config/nzbdrone.db -fi -export striptracks_recyclebin=$(sqlite3 $striptracks_db 'SELECT Value FROM Config WHERE Key="recyclebin"') -RET=$?; [ "$RET" != 0 ] && >&2 echo "WARNING[$RET]: Unable to read recyclebin information from database \"$striptracks_db\"" +striptracks_isocodemap='{"languages":[{"language":{"id":-1,"name":"Any","iso639-2":["ara","bul","zho","chi","ces","cze","dan","nld","dut","eng","fin","fra","fre","deu","ger","ell","gre","heb","hin","hun","isl","ice","ita","jpn","kor","lit","nor","pol","por","ron","rom","rus","spa","swe","tha","tur","vie","und"]}},{"language":{"id":-2,"name":"Original","iso639-2":["ara","bul","zho","chi","ces","cze","dan","nld","dut","eng","fin","fra","fre","deu","ger","ell","gre","heb","hin","hun","isl","ice","ita","jpn","kor","lit","nor","pol","por","ron","rom","rus","spa","swe","tha","tur","vie","und"]}},{"language":{"id":27,"name":"Hindi","iso639-2":["hin"]}},{"language":{"id":26,"name":"Arabic","iso639-2":["ara"]}},{"language":{"id":0,"name":"Unknown","iso639-2":["und"]}},{"language":{"id":13,"name":"Vietnamese","iso639-2":["vie"]}},{"language":{"id":17,"name":"Turkish","iso639-2":["tur"]}},{"language":{"id":14,"name":"Swedish","iso639-2":["swe"]}},{"language":{"id":3,"name":"Spanish","iso639-2":["spa"]}},{"language":{"id":11,"name":"Russian","iso639-2":["rus"]}},{"language":{"id":18,"name":"Portuguese","iso639-2":["por"]}},{"language":{"id":12,"name":"Polish","iso639-2":["pol"]}},{"language":{"id":15,"name":"Norwegian","iso639-2":["nor"]}},{"language":{"id":24,"name":"Lithuanian","iso639-2":["lit"]}},{"language":{"id":21,"name":"Korean","iso639-2":["kor"]}},{"language":{"id":8,"name":"Japanese","iso639-2":["jpn"]}},{"language":{"id":5,"name":"Italian","iso639-2":["ita"]}},{"language":{"id":9,"name":"Icelandic","iso639-2":["isl","ice"]}},{"language":{"id":22,"name":"Hungarian","iso639-2":["hun"]}},{"language":{"id":23,"name":"Hebrew","iso639-2":["heb"]}},{"language":{"id":20,"name":"Greek","iso639-2":["ell","gre"]}},{"language":{"id":4,"name":"German","iso639-2":["deu","ger"]}},{"language":{"id":2,"name":"French","iso639-2":["fra","fre"]}},{"language":{"id":19,"name":"Flemish","iso639-2":["nld","dut"]}},{"language":{"id":16,"name":"Finnish","iso639-2":["fin"]}},{"language":{"id":1,"name":"English","iso639-2":["eng"]}},{"language":{"id":7,"name":"Dutch","iso639-2":["nld","dut"]}},{"language":{"id":6,"name":"Danish","iso639-2":["dan"]}},{"language":{"id":25,"name":"Czech","iso639-2":["ces","cze"]}},{"language":{"id":10,"name":"Chinese","iso639-2":["zho","chi"]}}]}' ### Functions function usage { @@ -81,7 +86,7 @@ Video remuxing script designed for use with Radarr and Sonarr Source: https://github.com/TheCaptain989/radarr-striptracks Usage: - $0 [-d] + $0 [-d] [ []] Options and Arguments: -d enable debug logging @@ -106,8 +111,8 @@ function log {( while read do echo $(date +"%Y-%-m-%-d %H:%M:%S.%1N")\|"[$striptracks_pid]$REPLY" >>"$striptracks_log" - local FILESIZE=$(stat -c %s "$striptracks_log") - if [ $FILESIZE -gt $striptracks_maxlogsize ] + local striptracks_filesize=$(stat -c %s "$striptracks_log") + if [ $striptracks_filesize -gt $striptracks_maxlogsize ] then for i in $(seq $((striptracks_maxlog-1)) -1 0); do [ -f "${striptracks_log::-4}.$i.txt" ] && mv "${striptracks_log::-4}."{$i,$((i+1))}".txt" @@ -120,68 +125,98 @@ function log {( # Inspired by https://stackoverflow.com/questions/893585/how-to-parse-xml-in-bash function read_xml { local IFS=\> - read -d \< ENTITY CONTENT + read -d \< striptracks_xml_entity striptracks_xml_content } # Get video information function get_video_info { - [ $striptracks_debug -eq 1 ] && echo "Debug|Getting video information for $striptracks_api_endpoint '$striptracks_api_endpoint_id'. Calling ${striptracks_type^} API using GET and URL 'http://$striptracks_bindaddress:$striptracks_port$striptracks_urlbase/api/$striptracks_api_endpoint/$striptracks_api_endpoint_id?apikey=(removed)'" | log - RESULT=$(curl -s -H "Content-Type: application/json" \ - -X GET http://$striptracks_bindaddress:$striptracks_port$striptracks_urlbase/api/$striptracks_api_endpoint/$striptracks_api_endpoint_id?apikey=$striptracks_apikey) - [ $striptracks_debug -eq 1 ] && echo "API returned: $RESULT" | awk '{print "Debug|"$0}' | log - if [ "$(echo $RESULT | jq -crM .path)" != "null" ]; then - local RET=0 + [ $striptracks_debug -eq 1 ] && echo "Debug|Getting video information for $striptracks_video_api '$striptracks_video_id'. Calling ${striptracks_type^} API using GET and URL '$striptracks_api_url/v3/$striptracks_video_api/$striptracks_video_id'" | log + striptracks_result=$(curl -s -H "X-Api-Key: $striptracks_apikey" \ + -X GET "$striptracks_api_url/v3/$striptracks_video_api/$striptracks_video_id") + [ $striptracks_debug -eq 1 ] && echo "API returned: $striptracks_result" | awk '{print "Debug|"$0}' | log + if [ "$(echo $striptracks_result | jq -crM .hasFile)" = "true" ]; then + local striptracks_return=0 else - local RET=1 + local striptracks_return=1 fi - return $RET + return $striptracks_return } -# Initiate API Rescan request -function rescan { - MSG="Info|Calling ${striptracks_type^} API to rescan ${striptracks_video_type}, try #$i" - echo "$MSG" | log - [ $striptracks_debug -eq 1 ] && echo "Debug|Forcing rescan of $striptracks_json_key '$striptracks_video_id', try #$i. Calling ${striptracks_type^} API '$striptracks_api' using POST and URL 'http://$striptracks_bindaddress:$striptracks_port$striptracks_urlbase/api/command?apikey=(removed)'" | log - RESULT=$(curl -s -d "{name: '$striptracks_api', $striptracks_json_key: $striptracks_video_id}" -H "Content-Type: application/json" \ - -X POST http://$striptracks_bindaddress:$striptracks_port$striptracks_urlbase/api/command?apikey=$striptracks_apikey) - [ $striptracks_debug -eq 1 ] && echo "API returned: $RESULT" | awk '{print "Debug|"$0}' | log - JOBID="$(echo $RESULT | jq -crM .id)" - if [ "$JOBID" != "null" ]; then - local RET=0 +# Get video file information +function get_videofile_info { + [ $striptracks_debug -eq 1 ] && echo "Debug|Getting video file information for $striptracks_videofile_api id '$striptracks_videofile_id'. Calling ${striptracks_type^} API using GET and URL '$striptracks_api_url/v3/$striptracks_videofile_api/$striptracks_videofile_id'" | log + striptracks_result=$(curl -s -H "X-Api-Key: $striptracks_apikey" \ + -X GET "$striptracks_api_url/v3/$striptracks_videofile_api/$striptracks_videofile_id") + [ $striptracks_debug -eq 1 ] && echo "API returned: $striptracks_result" | awk '{print "Debug|"$0}' | log + if [ "$(echo $striptracks_result | jq -crM .path)" != "null" ]; then + local striptracks_return=0 else - local RET=1 + local striptracks_return=1 fi - return $RET + return $striptracks_return +} +# Initiate Rescan request +function rescan { + striptracks_message="Info|Calling ${striptracks_type^} API to rescan ${striptracks_video_type}, try #$i" + echo "$striptracks_message" | log + [ $striptracks_debug -eq 1 ] && echo "Debug|Forcing rescan of $striptracks_json_key '$striptracks_rescan_id', try #$i. Calling ${striptracks_type^} API '$striptracks_rescan_api' using POST and URL '$striptracks_api_url/v3/command'" | log + striptracks_result=$(curl -s -H "X-Api-Key: $striptracks_apikey" -H "Content-Type: application/json" \ + -d "{\"name\": \"$striptracks_rescan_api\", \"$striptracks_json_key\": $striptracks_rescan_id}" \ + -X POST "$striptracks_api_url/v3/command") + [ $striptracks_debug -eq 1 ] && echo "API returned: $striptracks_result" | awk '{print "Debug|"$0}' | log + striptracks_jobid="$(echo $striptracks_result | jq -crM .id)" + if [ "$striptracks_jobid" != "null" ]; then + local striptracks_return=0 + else + local striptracks_return=1 + fi + return $striptracks_return } # Check result of rescan job function check_rescan { local i=0 for ((i=1; i <= 15; i++)); do - [ $striptracks_debug -eq 1 ] && echo "Debug|Checking job $JOBID completion, try #$i. Calling ${striptracks_type^} API using GET and URL 'http://$striptracks_bindaddress:$striptracks_port$striptracks_urlbase/api/command/$JOBID?apikey=(removed)'" | log - RESULT=$(curl -s -H "Content-Type: application/json" \ - -X GET http://$striptracks_bindaddress:$striptracks_port$striptracks_urlbase/api/command/$JOBID?apikey=$striptracks_apikey) - [ $striptracks_debug -eq 1 ] && echo "API returned: $RESULT" | awk '{print "Debug|"$0}' | log - if [ "$(echo $RESULT | jq -crM .status)" = "completed" ]; then - local RET=0 + [ $striptracks_debug -eq 1 ] && echo "Debug|Checking job $striptracks_jobid completion, try #$i. Calling ${striptracks_type^} API using GET and URL '$striptracks_api_url/v3/command/$striptracks_jobid'" | log + striptracks_result=$(curl -s -H "X-Api-Key: $striptracks_apikey" \ + -X GET "$striptracks_api_url/v3/command/$striptracks_jobid") + [ $striptracks_debug -eq 1 ] && echo "API returned: $striptracks_result" | awk '{print "Debug|"$0}' | log + if [ "$(echo $striptracks_result | jq -crM .status)" = "completed" ]; then + local striptracks_return=0 break else - if [ "$(echo $RESULT | jq -crM .status)" = "failed" ]; then - local RET=2 + if [ "$(echo $striptracks_result | jq -crM .status)" = "failed" ]; then + local striptracks_return=2 break else - local RET=1 + # It may have timed out, so let's wait a second + local striptracks_return=1 + [ $striptracks_debug -eq 1 ] && echo "Debug|Job not done. Waiting 1 second." | log sleep 1 fi fi done - return $RET + return $striptracks_return +} +# Get language/quality profiles +function get_profiles { + [ $striptracks_debug -eq 1 ] && echo "Debug|Getting list of $striptracks_profile_type profiles. Calling ${striptracks_type^} API using GET and URL '$striptracks_api_url/v3/${striptracks_profile_type}Profile'" | log + striptracks_result=$(curl -s -H "X-Api-Key: $striptracks_apikey" \ + -X GET "$striptracks_api_url/v3/${striptracks_profile_type}Profile") + # This returns A LOT of data, and it is normally not needed + # [ $striptracks_debug -eq 1 ] && echo "API returned: $striptracks_result" | awk '{print "Debug|"$0}' | log + if [ "$(echo $striptracks_result | jq -crM '.message?')" != "NotFound" ]; then + local striptracks_return=0 + else + local striptracks_return=1 + fi + return $striptracks_return } # Process options while getopts ":d" opt; do case ${opt} in d ) # For debug purposes only - MSG="Debug|Enabling debug logging." - echo "$MSG" | log - >&2 echo "$MSG" + striptracks_message="Debug|Enabling debug logging." + echo "$striptracks_message" | log + >&2 echo "$striptracks_message" striptracks_debug=1 printenv | sort | sed 's/^/Debug|/' | log ;; @@ -189,31 +224,57 @@ while getopts ":d" opt; do done shift $((OPTIND -1)) -# Check for required command line options -if [ -z "$1" ]; then - MSG="Error|No audio languages specified!" - echo "$MSG" | log - >&2 echo "$MSG" - usage - exit 2 -fi - -if [ -z "$2" ]; then - MSG="Error|No subtitles languages specified!" - echo "$MSG" | log - >&2 echo "$MSG" - usage - exit 3 -fi - # Check for required binaries if [ ! -f "/usr/bin/mkvmerge" ]; then - MSG="Error|/usr/bin/mkvmerge is required by this script" - echo "$MSG" | log - >&2 echo "$MSG" + striptracks_message="Error|/usr/bin/mkvmerge is required by this script" + echo "$striptracks_message" | log + >&2 echo "$striptracks_message" exit 4 fi +# Check for config file +if [ -f "$striptracks_arr_config" ]; then + # Read *arr config.xml + [ $striptracks_debug -eq 1 ] && echo "Debug|Reading from ${striptracks_type^} config file '$striptracks_arr_config'" | log + while read_xml; do + [[ $striptracks_xml_entity = "Port" ]] && striptracks_port=$striptracks_xml_content + [[ $striptracks_xml_entity = "UrlBase" ]] && striptracks_urlbase=$striptracks_xml_content + [[ $striptracks_xml_entity = "BindAddress" ]] && striptracks_bindaddress=$striptracks_xml_content + [[ $striptracks_xml_entity = "ApiKey" ]] && striptracks_apikey=$striptracks_xml_content + done < $striptracks_arr_config + + [[ $striptracks_bindaddress = "*" ]] && striptracks_bindaddress=localhost + + # Build URL to Radarr/Sonarr API + striptracks_api_url="http://$striptracks_bindaddress:$striptracks_port$striptracks_urlbase/api" + + # Check Radarr/Sonarr version + [ $striptracks_debug -eq 1 ] && echo "Debug|Getting ${striptracks_type^} version. Calling ${striptracks_type^} API using GET and URL '$striptracks_api_url/system/status'" | log + striptracks_arr_version=$(curl -s -H "X-Api-Key: $striptracks_apikey" \ + -X GET "$striptracks_api_url/system/status" | jq -crM .version) + [ $striptracks_debug -eq 1 ] && echo "Debug|Detected ${striptracks_type^} version $striptracks_arr_version" | log + + # Requires API v3 + if [ "${striptracks_arr_version/.*/}" = "2" ]; then + # Radarr/Sonarr version 2 + striptracks_message="Error|This script does not support ${striptracks_type^} version ${striptracks_arr_version}. Please upgrade." + echo "$striptracks_message" | log + >&2 echo "$striptracks_message" + exit 8 + fi + + # Get RecycleBin + [ $striptracks_debug -eq 1 ] && echo "Debug|Getting ${striptracks_type^} RecycleBin. Calling ${striptracks_type^} API using GET and URL '$striptracks_api_url/v3/config/mediamanagement'" | log + striptracks_recyclebin=$(curl -s -H "X-Api-Key: $striptracks_apikey" \ + -X GET "$striptracks_api_url/v3/config/mediamanagement" | jq -crM .recycleBin) + [ $striptracks_debug -eq 1 ] && echo "Debug|Detected ${striptracks_type^} RecycleBin '$striptracks_recyclebin'" | log +else + # No config file means we can't call the API. Best effort at this point. + striptracks_message="Warn|Unable to locate ${striptracks_type^} config file: '$striptracks_arr_config'" + echo "$striptracks_message" | log + >&2 echo "$striptracks_message" +fi + # Handle Test event if [[ "${!striptracks_eventtype}" = "Test" ]]; then echo "Info|${striptracks_type^} event: ${!striptracks_eventtype}" | log @@ -223,48 +284,121 @@ fi # Check if called from within Radarr/Sonarr if [ -z "$striptracks_video" ]; then - MSG="Error|No video file specified! Not called from Radarr/Sonarr?" - echo "$MSG" | log - >&2 echo "$MSG" + striptracks_message="Error|No video file specified! Not called from Radarr/Sonarr?" + echo "$striptracks_message" | log + >&2 echo "$striptracks_message" usage exit 1 fi # Check if source video exists if [ ! -f "$striptracks_video" ]; then - MSG="Error|Input file not found: \"$striptracks_video\"" - echo "$MSG" | log - >&2 echo "$MSG" + striptracks_message="Error|Input file not found: \"$striptracks_video\"" + echo "$striptracks_message" | log + >&2 echo "$striptracks_message" exit 5 fi +#### Detect languages configured in Radarr/Sonarr +# Check for URL +if [ -n "$striptracks_api_url" ]; then + # Get quality/language profile info + if get_profiles; then + striptracks_profiles="$striptracks_result" + # Get video profile + if get_video_info; then + # Per environment logic + if [[ "${striptracks_type,,}" = "radarr" ]]; then + striptracks_profileid="$(echo $striptracks_result | jq -crM .qualityProfileId)" + striptracks_languages=$(echo $striptracks_profiles | jq -crM ".[] | select(.id == $striptracks_profileid) | .language.id") + elif [[ "${striptracks_type,,}" = "sonarr" ]]; then + striptracks_profileid="$(echo $striptracks_result | jq -crM .series.languageProfileId)" + striptracks_languages=$(echo $striptracks_profiles | jq -crM ".[] | select(.id == $striptracks_profileid) | .languages | .[] | select(.allowed).language.id") + else + # Should never fire due to previous check, but just in case + striptracks_message "Error|Unknown environment: ${striptracks_type}" + echo "$striptracks_message" | log + >&2 echo "$striptracks_message" + exit 7 + fi + striptracks_profilename=$(echo $striptracks_profiles | jq -crM ".[] | select(.id == $striptracks_profileid).name") + [ $striptracks_debug -eq 1 ] && echo "Debug|Detected $striptracks_profile_type profile '$striptracks_profilename' id '$striptracks_profileid'" | log + [ $striptracks_debug -eq 1 ] && echo "Debug|Detected language ids of '$(echo ${striptracks_languages})'" | log + # Lookup ISO codes + for i in $striptracks_languages; do + striptracks_langcodes+=$(echo $striptracks_isocodemap | jq -jcrM ".languages | .[] | select(.language.id == $i) | .language | \":\(.\"iso639-2\"[])\"") + done + [ $striptracks_debug -eq 1 ] && echo "Debug|Mapped language codes '$(echo ${striptracks_languages})' to ISO639-2 code string '$striptracks_langcodes'" | log + else + # 'hasFile' is False in returned JSON. + striptracks_message="Warn|The '$striptracks_video_api' API with id $striptracks_video_id returned a false hasFile." + echo "$striptracks_message" | log + >&2 echo "$striptracks_message" + fi + else + # Get Profiles API failed + striptracks_message="Warn|Unable to retrieve $striptracks_profile_type profiles from ${striptracks_type^} API" + echo "$striptracks_message" | log + >&2 echo "$striptracks_message" + fi +else + # No URL means we can't call the API + striptracks_message="Warn|Unable to determine ${striptracks_type^} API URL." + echo "$striptracks_message" | log + >&2 echo "$striptracks_message" +fi + +# Check for command line options; will override the detected languages +if [ -z "$1" -a -z "$striptracks_langcodes" ]; then + striptracks_message="Error|No audio languages specified!" + echo "$striptracks_message" | log + >&2 echo "$striptracks_message" + usage + exit 2 +elif [ -z "$1" ]; then + striptracks_audiokeep="$striptracks_langcodes" +else + striptracks_audiokeep="$1" +fi +if [ -z "$2" -a -z "$striptracks_langcodes" ]; then + striptracks_message="Error|No subtitles languages specified!" + echo "$striptracks_message" | log + >&2 echo "$striptracks_message" + usage + exit 3 +elif [ -z "$2" ]; then + striptracks_subskeep="$striptracks_langcodes" +else + striptracks_subskeep="$2" +fi + #### BEGIN MAIN -FILESIZE=$(numfmt --to iec --format "%.3f" $(stat -c %s "$striptracks_video")) -MSG="Info|${striptracks_type^} event: ${!striptracks_eventtype}, Video: $striptracks_video, Size: $FILESIZE, AudioKeep: $1, SubsKeep: $2" -echo "$MSG" | log +striptracks_filesize=$(numfmt --to iec --format "%.3f" $(stat -c %s "$striptracks_video")) +striptracks_message="Info|${striptracks_type^} event: ${!striptracks_eventtype}, Video: $striptracks_video, Size: $striptracks_filesize, AudioKeep: $striptracks_audiokeep, SubsKeep: $striptracks_subskeep" +echo "$striptracks_message" | log # Rename the original video file to a temporary name [ $striptracks_debug -eq 1 ] && echo "Debug|Renaming: \"$striptracks_video\" to \"$striptracks_tempvideo\"" | log mv -f "$striptracks_video" "$striptracks_tempvideo" | log -RET=$?; [ "$RET" != 0 ] && { - MSG="ERROR[$RET]: Unable to rename video: \"$striptracks_video\" to temp video: \"$striptracks_tempvideo\". Halting." - echo "$MSG" | log - >&2 echo "$MSG" +striptracks_return=$?; [ "$striptracks_return" != 0 ] && { + striptracks_message="ERROR[$striptracks_return]: Unable to rename video: \"$striptracks_video\" to temp video: \"$striptracks_tempvideo\". Halting." + echo "$striptracks_message" | log + >&2 echo "$striptracks_message" exit 6 } # Read in the output of mkvmerge info extraction [ $striptracks_debug -eq 1 ] && echo "Debug|Executing: /usr/bin/mkvmerge -J \"$striptracks_tempvideo\"" | log -JSON=$(/usr/bin/mkvmerge -J "$striptracks_tempvideo") -RET=$?; [ "$RET" != 0 ] && { - MSG="ERROR[$RET]: Error executing mkvmerge." - echo "$MSG" | log - >&2 echo "$MSG" +striptracks_json=$(/usr/bin/mkvmerge -J "$striptracks_tempvideo") +striptracks_return=$?; [ "$striptracks_return" != 0 ] && { + striptracks_message="ERROR[$striptracks_return]: Error executing mkvmerge." + echo "$striptracks_message" | log + >&2 echo "$striptracks_message" } # This and the modified AWK script are a hack, and I know it. JQ is crazy hard to learn, BTW. # Mimic the mkvmerge --identify-verbose option that has been deprecated -JSON_PROCESSED=$(echo $JSON | jq -jcrM ' +striptracks_json_processed=$(echo $striptracks_json | jq -jcrM ' ( if (.chapters | .[] | .num_entries) then "Chapters: \(.chapters | .[] | .num_entries) entries\n" else @@ -274,19 +408,19 @@ JSON_PROCESSED=$(echo $JSON | jq -jcrM ' ( .tracks | .[] | ( "Track ID \(.id): \(.type) (\(.codec)) [", - ( [.properties | to_entries |.[] | "\(.key):\(.value | tostring | gsub(" "; "\\s"))"] | join(" ")), + ( [.properties | to_entries | .[] | "\(.key):\(.value | tostring | gsub(" "; "\\s"))"] | join(" ")), "]\n" ) ) ') -[ $striptracks_debug -eq 1 ] && echo "$JSON_PROCESSED" | awk '{print "Debug|"$0}' | log +[ $striptracks_debug -eq 1 ] && echo "$striptracks_json_processed" | awk '{print "Debug|"$0}' | log -echo "$JSON_PROCESSED" | awk -v Debug=$striptracks_debug \ +echo "$striptracks_json_processed" | awk -v Debug=$striptracks_debug \ -v OrgVideo="$striptracks_video" \ -v TempVideo="$striptracks_tempvideo" \ -v MKVVideo="$striptracks_newvideo" \ -v Title="$striptracks_title" \ --v AudioKeep="$1" \ --v SubsKeep="$2" ' +-v AudioKeep="$striptracks_audiokeep" \ +-v SubsKeep="$striptracks_subskeep" ' BEGIN { MKVMerge="/usr/bin/mkvmerge" FS="[\t\n: ]" @@ -382,114 +516,119 @@ END { if [ -s "$striptracks_newvideo" ]; then # Use Recycle Bin if configured if [ "$striptracks_recyclebin" ]; then - [ $striptracks_debug -eq 1 ] && echo "Debug|Moving: \"$striptracks_tempvideo\" to \"${striptracks_recyclebin%/}/$(basename "$striptracks_video")"\" | log + [ $striptracks_debug -eq 1 ] && echo "Debug|Recycling: \"$striptracks_tempvideo\" to \"${striptracks_recyclebin%/}/$(basename "$striptracks_video")"\" | log mv "$striptracks_tempvideo" "${striptracks_recyclebin%/}/$(basename "$striptracks_video")" | log else [ $striptracks_debug -eq 1 ] && echo "Debug|Deleting: \"$striptracks_tempvideo\"" | log rm "$striptracks_tempvideo" | log fi else - MSG="Error|Unable to locate or invalid remuxed file: \"$striptracks_newvideo\". Undoing rename." - echo "$MSG" | log - >&2 echo "$MSG" + striptracks_message="Error|Unable to locate or invalid remuxed file: \"$striptracks_newvideo\". Undoing rename." + echo "$striptracks_message" | log + >&2 echo "$striptracks_message" [ $striptracks_debug -eq 1 ] && echo "Debug|Renaming: \"$striptracks_tempvideo\" to \"$striptracks_video\"" | log mv -f "$striptracks_tempvideo" "$striptracks_video" | log exit 10 fi -FILESIZE=$(numfmt --to iec --format "%.3f" $(stat -c %s "$striptracks_newvideo")) -MSG="Info|New size: $FILESIZE" -echo "$MSG" | log +striptracks_filesize=$(numfmt --to iec --format "%.3f" $(stat -c %s "$striptracks_newvideo")) +striptracks_message="Info|New size: $striptracks_filesize" +echo "$striptracks_message" | log -# Call Radarr/Sonarr API to RescanMovie/RescanSeries -if [ -f "$striptracks_arr_config" ]; then - # Read *arr config.xml - while read_xml; do - [[ $ENTITY = "Port" ]] && striptracks_port=$CONTENT - [[ $ENTITY = "UrlBase" ]] && striptracks_urlbase=$CONTENT - [[ $ENTITY = "BindAddress" ]] && striptracks_bindaddress=$CONTENT - [[ $ENTITY = "ApiKey" ]] && striptracks_apikey=$CONTENT - done < $striptracks_arr_config - - [[ $striptracks_bindaddress = "*" ]] && striptracks_bindaddress=localhost - - # Check for video ID - if [ "$striptracks_video_id" ]; then - # Call API - if [ "${striptracks_type,,}" = "radarr" ] && get_video_info; then +#### Call Radarr/Sonarr API to RescanMovie/RescanSeries +# Check for URL +if [ -n "$striptracks_api_url" ]; then + # Check for video IDs + if [ "$striptracks_video_id" -a "$striptracks_videofile_id" ]; then + # Get video file info + if get_videofile_info; then # Save original quality - ORGQUALITY=$(echo $RESULT | jq -crM ${striptracks_json_quality_root}.quality) - fi - # Loop a maximum of twice - for ((i=1; $i <= 2; i++)); do - # Scan the disk for the new movie file - if rescan; then - # Check that the Rescan completed - if check_rescan; then - # This whole section doesn't work under Sonarr because the episodefile_id changes after the RescanSeries if the filename changes - # Should look into just using a PUT to change everything at once instead of a Rescan. - if [ "${striptracks_type,,}" = "radarr" ]; then + striptracks_original_quality=$(echo $striptracks_result | jq -crM .quality) + [ $striptracks_debug -eq 1 ] && echo "Debug|Detected quality '$(echo $striptracks_original_quality | jq -crM .quality.name)'." | log + # Loop a maximum of twice + # Radarr needs to Rescan twice when the file extension changes + # (.avi -> .mkv for example) + for ((i=1; $i <= 2; i++)); do + # Scan the disk for the new movie file + if rescan; then + # Give it a beat + sleep 1 + # Check that the Rescan completed + if check_rescan; then + # Get new video file id if get_video_info; then - # Check that the file didn't get lost in the Rescan. - # Radarr sometimes needs to Rescan twice when the file extension changes - # (.avi -> .mkv for example) - if [ "$(echo $RESULT | jq -crM .hasFile)" = "true" ]; then + # Get new video file ID + striptracks_videofile_id=$(echo $striptracks_result | jq -crM ${striptracks_json_quality_root}.id) + [ $striptracks_debug -eq 1 ] && echo "Debug|Set new video file id '$striptracks_videofile_id'." | log + # Get new video file info + if get_videofile_info; then + # Check that the file didn't get lost in the Rescan. # If we lost the quality information, put it back - # NOTE: This "works" with Radarr in that the change shows up in the GUI, but only until the page changes. - # It doesn't seem to write the info permanently. Maybe an API bug? - if [ "$(echo $RESULT | jq -crM ${striptracks_json_quality_root}.quality.quality.name)" = "Unknown" ]; then - [ $striptracks_debug -eq 1 ] && echo "Debug|Updating quality to '$(echo $ORGQUALITY | jq -crM .quality.name)'. Calling ${striptracks_type^} API using PUT and URL 'http://$striptracks_bindaddress:$striptracks_port$striptracks_urlbase/api/$striptracks_api_endpoint/$striptracks_video_id?apikey=(removed)'" | log - RESULT=$(curl -s -d "$(echo $RESULT | jq -crM "${striptracks_json_quality_root}.quality=$ORGQUALITY")" -H "Content-Type: application/json" \ - -X PUT http://$striptracks_bindaddress:$striptracks_port$striptracks_urlbase/api/$striptracks_api_endpoint/$striptracks_video_id?apikey=$striptracks_apikey) - [ $striptracks_debug -eq 1 ] && echo "API returned: $RESULT" | awk '{print "Debug|"$0}' | log - if [ "$(echo $RESULT | jq -crM ${striptracks_json_quality_root}.quality.quality.name)" = "Unknown" ]; then - MSG="Warn|Unable to update ${striptracks_type^} $striptracks_api_endpoint '$striptracks_title' to quality '$(echo $ORGQUALITY | jq -crM .quality.name)'" - echo "$MSG" | log - >&2 echo "$MSG" + if [ "$(echo $striptracks_result | jq -crM .quality.quality.name)" != "$(echo $striptracks_original_quality | jq -crM .quality.name)" ]; then + [ $striptracks_debug -eq 1 ] && echo "Debug|Updating from quality '$(echo $striptracks_result | jq -crM .quality.quality.name)' to '$(echo $striptracks_original_quality | jq -crM .quality.name)'. Calling ${striptracks_type^} API using PUT and URL '$striptracks_api_url/v3/$striptracks_videofile_api/editor'" | log + striptracks_result=$(curl -s -H "X-Api-Key: $striptracks_apikey" -H "Content-Type: application/json" \ + -d "{\"${striptracks_videofile_api}Ids\":[${striptracks_videofile_id}],\"quality\":$striptracks_original_quality}" \ + -X PUT "$striptracks_api_url/v3/$striptracks_videofile_api/editor") + [ $striptracks_debug -eq 1 ] && echo "API returned: $striptracks_result" | awk '{print "Debug|"$0}' | log + # Check that the returned result shows the update + if [ "$(echo $striptracks_result | jq -crM .[].quality.quality.name)" = "$(echo $striptracks_original_quality | jq -crM .quality.name)" ]; then + # Updated successfully + [ $striptracks_debug -eq 1 ] && echo "Debug|Successfully updated quality to '$(echo $striptracks_result | jq -crM .[].quality.quality.name)'." | log + break + else + striptracks_message="Warn|Unable to update ${striptracks_type^} $striptracks_video_api '$striptracks_title' to quality '$(echo $striptracks_original_quality | jq -crM .quality.name)'" + echo "$striptracks_message" | log + >&2 echo "$striptracks_message" fi + else + # The quality is already correct + [ $striptracks_debug -eq 1 ] && echo "Debug|Quality of '$(echo $striptracks_original_quality | jq -crM .quality.name)' remained unchanged." | log + break fi - # The video record is [now] good - break else - # Loop again because there was no file - continue + # No '.path' in returned JSON + striptracks_message="Warn|The '$striptracks_videofile_api' API with ${striptracks_video_api}File id $striptracks_videofile_id returned no path." + echo "$striptracks_message" | log + >&2 echo "$striptracks_message" fi else - # No 'path' in returned JSON. - MSG="Warn|The '$striptracks_api' API with $striptracks_api_endpoint $striptracks_api_endpoint_id returned no path." - echo "$MSG" | log - >&2 echo "$MSG" + # 'hasFile' is False in returned JSON. + striptracks_message="Warn|The '$striptracks_video_api' API with id $striptracks_video_id returned a false hasFile (Normal with Radarr on try #1)." + echo "$striptracks_message" | log + >&2 echo "$striptracks_message" fi else - # Didn't do anything because we're in Sonarr - break + # Timeout or failure + striptracks_message="Warn|${striptracks_type^} job ID $striptracks_jobid timed out or failed." + echo "$striptracks_message" | log + >&2 echo "$striptracks_message" fi else - # Timeout or failure - MSG="Warn|${striptracks_type^} job ID $JOBID timed out or failed." - echo "$MSG" | log - >&2 echo "$MSG" + # Error from API + striptracks_message="Error|The '$striptracks_rescan_api' API with $striptracks_json_key $striptracks_video_id failed." + echo "$striptracks_message" | log + >&2 echo "$striptracks_message" fi - else - # Error from API - MSG="Error|The '$striptracks_api' API with $striptracks_json_key $striptracks_video_id failed." - echo "$MSG" | log - >&2 echo "$MSG" - fi - done + done + else + # No '.path' in returned JSON + striptracks_message="Warn|The '$striptracks_videofile_api' API with ${striptracks_video_api}File id $striptracks_videofile_id returned no path." + echo "$striptracks_message" | log + >&2 echo "$striptracks_message" + fi else # No video ID means we can't call the API - MSG="Warn|Missing environment variable: $striptracks_video_idname" - echo "$MSG" | log - >&2 echo "$MSG" + striptracks_message="Warn|Missing or empty environment variable: striptracks_video_id='$striptracks_video_id' or striptracks_videofile_id='$striptracks_videofile_id'" + echo "$striptracks_message" | log + >&2 echo "$striptracks_message" fi else - # No config file means we can't call the API - MSG="Warn|Unable to locate ${striptracks_type^} config file: '$striptracks_arr_config'" - echo "$MSG" | log - >&2 echo "$MSG" + # No URL means we can't call the API + striptracks_message="Warn|Unable to determine ${striptracks_type^} API URL." + echo "$striptracks_message" | log + >&2 echo "$striptracks_message" fi # Cool bash feature -MSG="Info|Completed in $(($SECONDS/60))m $(($SECONDS%60))s" -echo "$MSG" | log +striptracks_message="Info|Completed in $(($SECONDS/60))m $(($SECONDS%60))s" +echo "$striptracks_message" | log