From 402a90c35c33d1de343c3f0883c1e654bf763a99 Mon Sep 17 00:00:00 2001 From: Benjamin Date: Fri, 27 Feb 2026 21:54:24 +1000 Subject: [PATCH 1/6] fix: prefer play_all when individual episodes are a subset When the play_all decomposition yields more episodes than individual playlists AND the individual episode clips are a strict subset of the play_all clips, prefer play_all. This handles discs where only some episodes have individual playlists (e.g. for commentary audio) while the full set is only available through the play_all. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- bdpl/analyze/ordering.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/bdpl/analyze/ordering.py b/bdpl/analyze/ordering.py index 9b2e7df..7a49282 100644 --- a/bdpl/analyze/ordering.py +++ b/bdpl/analyze/ordering.py @@ -266,10 +266,18 @@ def order_episodes( if individual_eps and pa_episodes: avg_indiv = sum(p.duration_ms for p in individual_eps) / len(individual_eps) avg_pa = sum(e.duration_ms for e in pa_episodes) / len(pa_episodes) if pa_episodes else 0 - # If Play All yields more episodes whose average duration is much - # longer, the individual playlists are probably extras, not episodes. - if len(pa_episodes) > len(individual_eps) and avg_pa > avg_indiv * 1.5: - return pa_episodes + if len(pa_episodes) > len(individual_eps): + # If individual episode clips are a strict subset of the + # play_all clips, the individual playlists only cover some + # episodes (the rest are play_all-only). Use play_all. + indiv_clips = {pi.clip_id for p in individual_eps for pi in p.play_items} + pa_clips = {seg.clip_id for ep in pa_episodes for seg in ep.segments} + if indiv_clips <= pa_clips: + return pa_episodes + # If Play All episodes are much longer on average, the + # individual playlists are probably extras, not episodes. + if avg_pa > avg_indiv * 1.5: + return pa_episodes return _episodes_from_individual(individual_eps) if individual_eps: From 754a8873f44c19c216158f56b1e58ca123a19aab Mon Sep 17 00:00:00 2001 From: Benjamin Date: Fri, 27 Feb 2026 21:54:36 +1000 Subject: [PATCH 2/6] fix: relabel episode-classified specials as commentary When a special feature's classification is 'episode' (individual playlist bypassed in favour of play_all decomposition), relabel it as 'commentary' since these are alternate-audio tracks, not distinct episodes. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- bdpl/analyze/__init__.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/bdpl/analyze/__init__.py b/bdpl/analyze/__init__.py index a359b2f..f35f936 100644 --- a/bdpl/analyze/__init__.py +++ b/bdpl/analyze/__init__.py @@ -379,6 +379,13 @@ def _detect_special_features( features.extend(new_features) idx += len(new_features) + # A special whose classification is "episode" (individual playlist that + # was bypassed in favour of play_all decomposition) is really a + # commentary / alternate-audio track, not a distinct episode. + for f in features: + if f.category == "episode": + f.category = "commentary" + return features From de241f55b90fe07833e3aa26e73dd9db0d711291 Mon Sep 17 00:00:00 2001 From: Benjamin Date: Fri, 27 Feb 2026 21:54:47 +1000 Subject: [PATCH 3/6] test: add disc10 fixture and integration tests Disc10 is a five-episode bonus disc with commentary specials: - Play_all (00002.mpls) decomposes into 5 episodes at IG chapter marks [0, 6, 12, 18, 24], each ~24 min - 3 individual playlists (00003-00005) are commentary tracks for episodes 1-3, detected via IG menu page 4 buttons - Exercises the play_all-subset ordering fix and commentary relabeling Adds disc10 to all 6 matrix parametrizations. 203 tests pass. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- tests/conftest.py | 12 ++++ tests/fixtures/disc10/CLIPINF/00000.clpi | Bin 0 -> 444 bytes tests/fixtures/disc10/CLIPINF/00001.clpi | Bin 0 -> 560 bytes tests/fixtures/disc10/CLIPINF/00002.clpi | Bin 0 -> 408 bytes tests/fixtures/disc10/CLIPINF/00003.clpi | Bin 0 -> 292 bytes tests/fixtures/disc10/CLIPINF/00004.clpi | Bin 0 -> 292 bytes tests/fixtures/disc10/CLIPINF/00005.clpi | Bin 0 -> 292 bytes tests/fixtures/disc10/CLIPINF/00006.clpi | Bin 0 -> 11236 bytes tests/fixtures/disc10/CLIPINF/00007.clpi | Bin 0 -> 10968 bytes tests/fixtures/disc10/CLIPINF/00008.clpi | Bin 0 -> 11468 bytes tests/fixtures/disc10/CLIPINF/00009.clpi | Bin 0 -> 11396 bytes tests/fixtures/disc10/CLIPINF/00010.clpi | Bin 0 -> 11368 bytes tests/fixtures/disc10/CLIPINF/00011.clpi | Bin 0 -> 476 bytes tests/fixtures/disc10/META/DL/bdmt_eng.xml | 9 +++ tests/fixtures/disc10/MovieObject.bdmv | Bin 0 -> 1574 bytes tests/fixtures/disc10/PLAYLIST/00000.mpls | Bin 0 -> 280 bytes tests/fixtures/disc10/PLAYLIST/00001.mpls | Bin 0 -> 258 bytes tests/fixtures/disc10/PLAYLIST/00002.mpls | Bin 0 -> 1328 bytes tests/fixtures/disc10/PLAYLIST/00003.mpls | Bin 0 -> 310 bytes tests/fixtures/disc10/PLAYLIST/00004.mpls | Bin 0 -> 310 bytes tests/fixtures/disc10/PLAYLIST/00005.mpls | Bin 0 -> 310 bytes tests/fixtures/disc10/ics_menu.bin | Bin 0 -> 6169 bytes tests/fixtures/disc10/index.bdmv | Bin 0 -> 156 bytes tests/test_disc10_scan.py | 77 +++++++++++++++++++++ tests/test_disc_matrix.py | 6 ++ 25 files changed, 104 insertions(+) create mode 100644 tests/fixtures/disc10/CLIPINF/00000.clpi create mode 100644 tests/fixtures/disc10/CLIPINF/00001.clpi create mode 100644 tests/fixtures/disc10/CLIPINF/00002.clpi create mode 100644 tests/fixtures/disc10/CLIPINF/00003.clpi create mode 100644 tests/fixtures/disc10/CLIPINF/00004.clpi create mode 100644 tests/fixtures/disc10/CLIPINF/00005.clpi create mode 100644 tests/fixtures/disc10/CLIPINF/00006.clpi create mode 100644 tests/fixtures/disc10/CLIPINF/00007.clpi create mode 100644 tests/fixtures/disc10/CLIPINF/00008.clpi create mode 100644 tests/fixtures/disc10/CLIPINF/00009.clpi create mode 100644 tests/fixtures/disc10/CLIPINF/00010.clpi create mode 100644 tests/fixtures/disc10/CLIPINF/00011.clpi create mode 100644 tests/fixtures/disc10/META/DL/bdmt_eng.xml create mode 100644 tests/fixtures/disc10/MovieObject.bdmv create mode 100644 tests/fixtures/disc10/PLAYLIST/00000.mpls create mode 100644 tests/fixtures/disc10/PLAYLIST/00001.mpls create mode 100644 tests/fixtures/disc10/PLAYLIST/00002.mpls create mode 100644 tests/fixtures/disc10/PLAYLIST/00003.mpls create mode 100644 tests/fixtures/disc10/PLAYLIST/00004.mpls create mode 100644 tests/fixtures/disc10/PLAYLIST/00005.mpls create mode 100644 tests/fixtures/disc10/ics_menu.bin create mode 100644 tests/fixtures/disc10/index.bdmv create mode 100644 tests/test_disc10_scan.py diff --git a/tests/conftest.py b/tests/conftest.py index 08ba101..179ad8b 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -160,6 +160,18 @@ def disc9_analysis(disc9_path): return _analyze_fixture(disc9_path) +@pytest.fixture(scope="session") +def disc10_path() -> Path: + """Return path to bundled disc10 fixture.""" + return _fixture_path("disc10") + + +@pytest.fixture(scope="session") +def disc10_analysis(disc10_path): + """Run and cache full analysis for the bundled disc10 fixture.""" + return _analyze_fixture(disc10_path) + + @pytest.fixture def cli_runner() -> Callable[..., subprocess.CompletedProcess[str]]: """Return helper to invoke `python -m bdpl.cli` consistently in tests.""" diff --git a/tests/fixtures/disc10/CLIPINF/00000.clpi b/tests/fixtures/disc10/CLIPINF/00000.clpi new file mode 100644 index 0000000000000000000000000000000000000000..3cb2f614636488f7db1267e3eb2d1baf7140f491 GIT binary patch literal 444 zcmeZp@eMODGB99ZV7LRs-xwGeO@Md@kc|#D0L2->g3-MV46Nn~=nCl0muv6R4k9o)LJUI4XN!DN^i1O!E;6M-RMfCNB>3NnZ`7-kjZAqj)R2?QE| zx)}uo8CV!382EvFJ|G5$8`B9O&BDOobdrG~hLwS_=_CV_Mk)j2p;HV@Eu{?1Os5!F z0jW=(Ooxl literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc10/CLIPINF/00001.clpi b/tests/fixtures/disc10/CLIPINF/00001.clpi new file mode 100644 index 0000000000000000000000000000000000000000..be8e532cd7e46a0b6a992f0f52be34808dd60785 GIT binary patch literal 560 zcmeZp@eMODGB99ZV7LRs-xwGeO&A!MbbxGhumLE?2o{X)ZD8PD;()Gz?tHlh51{k$ zSu4f>b}=J^0GQ_1oe{(BY!6~v!DN^i1O!E;6M-RMfCNB>3NnZ`7-kjZAqj)R2?V|X zbu$VGGO#dcFsK0ed_Wum47bxjnuUSU=?nv-hdu)n(-{UPp{WeaPG=dI*JLp;H=Si* z;T2+FIdqPJ^+O&5E7Lg!HotZTHmCCp?6;#C*qY8WaB!wEa4=n9;4(fdZNR`H{XqA& zE=yIn?t}HxdJ~=(De!yfE9S4XQj)*>Q0bh|ROJ)lOe$~YZ&rQwCRjbxCsX6_nk+3P zULoz0+zOj3=N$E%^=IlYp770(`9q#jl3%;=q4lp!l?6o1JYz11$FEJ2;J+O$v5zxN t%O-V}_MF4MGQZ_ZOHj)AtWZ_|6X9F0zl+LyZ~^_s005&g3-MV3=DY-&=t^~FW2A!bUr?7 z#TdXYW@He6(6j#>V4SmND^N=oOooL)Ku}aV5f}mnNC0H0AcJUwVOBvNk}xQo7z7!C z;;DJ*=;A^Qq7#71G0XvK(E-}VC?Lqd!ob161myDpu?P^S0Wk{$gF`w4Lr|~#4+fS< JAPp2_000QQBc1>N literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc10/CLIPINF/00003.clpi b/tests/fixtures/disc10/CLIPINF/00003.clpi new file mode 100644 index 0000000000000000000000000000000000000000..2fb99ee6746df5b149ec2cc96b4fffb8be4ac279 GIT binary patch literal 292 zcmeZp@eMODGB99ZV7LRs-xwGeWq?=#$VLYnfa0uR!RX!w1_m~CdHVC^8a#l`$7in? o10zV9kwE}L&;E0OaSn?JP)G?T!^j}QAUZLtAdkTS2_PE^05{AJkN^Mx literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc10/CLIPINF/00004.clpi b/tests/fixtures/disc10/CLIPINF/00004.clpi new file mode 100644 index 0000000000000000000000000000000000000000..4db621bf9616523d87d14dc192b8be3385ef4c20 GIT binary patch literal 292 zcmeZp@eMODGB99ZV7LRs-xwGeWq?=#$VLYnfa0uR!RX!w1_lTdT@hXRat$6p=i{?d pjDZm(&B!1Cp=bX&z&M9R1Sq5glVM~KVGx~|RglMEfCP{Y1pqeU503x< literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc10/CLIPINF/00005.clpi b/tests/fixtures/disc10/CLIPINF/00005.clpi new file mode 100644 index 0000000000000000000000000000000000000000..5fa92bff65dc690f81325f46c69549944c48b014 GIT binary patch literal 292 zcmeZp@eMODGB99ZV7LRs-xwGeWq?=#$VLYnfa0uR!RX!wAPvF;3*;I+fX>I~1~CRk mkTfHM0EC|X=K$jz77?J35=@4XL4-kcVpc&Og8>piHWUD+&=3j$ literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc10/CLIPINF/00006.clpi b/tests/fixtures/disc10/CLIPINF/00006.clpi new file mode 100644 index 0000000000000000000000000000000000000000..6bd06780ef54c19eb1f8e21678981b2de8c9f096 GIT binary patch literal 11236 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 NWOKD9RQum3{2v$0wm1L) literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc10/CLIPINF/00007.clpi b/tests/fixtures/disc10/CLIPINF/00007.clpi new file mode 100644 index 0000000000000000000000000000000000000000..67f7799441a0ddd8698d631d66a3c7b293cae52a GIT binary patch literal 10968 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 literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc10/CLIPINF/00008.clpi b/tests/fixtures/disc10/CLIPINF/00008.clpi new file mode 100644 index 0000000000000000000000000000000000000000..1b0e7970787f836b6febcc682a697edd431455e0 GIT binary patch literal 11468 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 literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc10/CLIPINF/00009.clpi b/tests/fixtures/disc10/CLIPINF/00009.clpi new file mode 100644 index 0000000000000000000000000000000000000000..5909ed6ae513b1246aeae1d145ff1c1a83478543 GIT binary patch literal 11396 zcmciIXHZjL6e#+&BLqRIe?>u&jx-^?_v9SXLlY2eSWppB5iBSOLLv$%*bAa4C@R={ z1(jd}yMiJr3KmciY$)o@y)*BAxc9xUZ_i|YXRWi>&Yql{nVo$imuaF%6cPylx&RQ- z^eO-d%reFQXR9%tL#8BxxWX(#Sf|_n+2Q~9cvP0$H2weYw?)W$;!YBYL?&q{krDs1 zpQCB^riQ@of9ZI``iyhg&{d|?ivQ<~IoR0`9T9K(L`;?cyZz59dl;HUPMnwgzmuke z|CL9k{Pg4*|5u(cH2eRpzXJ>{G7a;8jSt}8ZJGtLvj;Pa+r)dOv26fsO90G|nU2i> z>5l_pP&g3kj)R%Qco<-Q0?cx@ff;rJht2+r6j?ckde-Z``%>|0u&WbTVW+`{bPcTZXTZkr7zUZNv*5vC^Rr-gcm-ISbZ{;QYyCNJ_&g45 zOb+4x0$c1n3{_kO+q(1MX!8*4u?sNV;U@fNegT}J9sa{Ef-`$B3^l(9BV$xB6uSf? zPwfXslcU&+V3_%3aHU4Wu)53OCYuaSSPi&;YX&EM4R{2-f)Q9Pcuh3b=xf18n*lE7 zSHP$7GK|8mfNw}MxSC%DzuY`<)n5gFtRCFzu0bI24tQX75HzbCJWY~D3c<_V2&C_K zz^l#(6iW$s*VO|xc^&weYG{;EFj{{d=#2yzU3VQABO<{My8$dZ75w!#fTQ#Q|GJyN zDK2EE@*F*liH`?gUa@14sfxfue5&S%?Z~ z=8b@}DL}*S0G^o(bp0KWOSb^S{4U5}?gU2NT~H1_1VjZx8)eh6Jw~+Ig0n_wvA=jrL zrq{g#gRl^0n7@O(!0j+Y{~q#MEMX@09#%V5!z}X;u==kAX4QRw0&*oJ>N}xOZ4I-r zPFOSE2a>QZSleiXBz+eY4flsRbsu3JAspsnA7O*TPME9z1RJJqhIw_LV3Tt{%*Q^% zrnVeNF}Wp*0x5Ofu+=6I7U;WSo2M_N>c7DDX$_EO{sl^Wf51Yl2X=hzfra`WC{19& zB9ptUEMQSxFYJoC1WU|&VYi1pEWy6Q?%b!4uKx<vVWoLLoZ=pbJo7(r`fwBEVSnI^eKoAo z|An*t?_pKlUpP0p9P-Wo!3C#{P@w+@ml$d&Falg!x(fif{s48`uiPh5=A_${vc11Hfqe1lAMHpuVRY*5hVyJ@h6**VqlYj2)EO#V6%}3jkXV93vL08yLZ4=qXpbGUB_*PfpAZn2HS}P;r@V5C?Q(H z13VZ?43_ZF@*V6jTEU~uRZxms!Q&}!U?)BZp0w?NorXcsq;iBZ;$V0xSqZ!G!O-HD z2D=T`&{D7#_LyuPoCD>!4ZP5ru8GkGUV1t}g~1kH&5D7&L|bU{n*sX_cJR7C74{kJ z;7ybc_T%=@;Yx=CMtgWSJP!^M9pGL1GN{5G;6o%Gsto_Zhf}stZL&*V1BZx1pzGgj zIAk0GpS=4Gi6h{TAHZ4T2>7e) zf^&wE@K0wA=kbvUW);E(+y$YR6>!1ef(Rj3;G%I9GQ-BgWqcGOvTEV7!4(mAH$aWa zf!=;lOLRj6zbt}UqZ_hvx(`u4OV89b1U-zumxcp}@4 zlfX#yM0UJkP;c-;4$28|gXo2ZuusAb+#3y9xC?F?ypbc(1#S_2kmJo|aNFc?i5zYl zMk6O;A~fKmk+W9^G!lK$2v#CA8hp`6%e!#L=!aa&`rt0^heo-j!F{4Xa_y*w`?x=H zi+N!BZulb)mvQjG5P&?^q`)I$0P-SJ;gKN_dA%76k4^dnFNG(DF=(`Z7Bt~wknfC4 zXvTw(-?|29HU=U8;g{hV9*hE=&%kqHFbZ;Ug69Sj3Oe@=T8$(`5)j}8PDZ4@E%1^^ zMijStctxZj>bR}&%0NLh`ZZ`XQW5=I7`!G@5hKb7Z-_L+vJ8fH0}XMU7ec#{jyM_n zp~EC^;4OHIGZ3$t3h#&vB(TNdoso%zHc#QbNs(+rULirVPFic}Us!9=;fPNIk*@dJKG| z@gD@eI3H;parlZ0kZ#F&_-YiOP<|qOCkj#6g%tRX3sLx(cKBfsp~yf6^btiU3Y!Cc zxEMthd%!P~F%GZcmr;UZUY&&B1__EKxI@1|isG^i@P{Zx<42!>zeE|Da5f+Q8f0jq z1Vcc?&}85L5HetBO7LBTj5wN7a2gH3aWu`&h|Gu~XnIfrGB=qp-V>P{OMrpC!^hhbVM`6qdjNq5zQEn%AIy220jJtr5F&? zFa=cxe?%och8gG>{{j*bXQC6)0Z43^iB3_|k=Qs3o!T3PBqq;L z0+G~^h|Uh0gk&bqjT?Y4d^S42={UlSv(bex2EvU==wdSig%Fd_C9VO<@j0l5oP-pH zIp~Ui7*ZIM(Uq)9q#`DxYpys_8Rw!pn--)tY1Abmjd32TufUKNpNFpdJViRgd~~DF z66uWd(M@eO3M0-(w-Z887@mS|UvEU=CL5VgP`GgcYW#g0MVP!B9DpJXspuZ>AR3FO zqWdgI6osdu2l~$_%9w^8PCJ02jSJCZvju3JVG(M=9-uhlBJ`A8g5nH|(bMbe(0Jow z)FSFe6O2pH^SJA1qG1VY6@{ZohII7e>OVBen2uhOMxuD)QuL~KJ&MPdqPDU7(G=rS z^d`s*O(iZvZf<# zb=GB~S@?3)bEF1`YN zC0L<(cnwGrJ;y0y$+-}1H*6RpS)|#T8dnZKxn9{kqU$Vg*6%phbuAy#%$g6&)q+C1_P#bkwkqptDP&st`IpSB{;xP^G&$L@ghhtD#KK z($$Le-N4{jx0b2l?Q_F%ny>3LFW={>Y!3?s&Z$9y=8!)iRd!tcz_ zUjfY6cY&KP+~GGlmka%utt9RJJdT{haPbJsmQovD{qeTr{$j{VPcYp&Xsr2)tL#;K zPx-&Ic^Ei2?V%?0`HY}(E^mb16K@H7%ShyKhnpU;Q`S*s$LgtHI~UMaI+tM0Sw;B1 zi@%xEpq)iw?`22jZ)Lwb_k%mbV`3iS#u_o1h zYbK`#y`n73VNr9RRLHiEen!`4oMT{ToALHfF7hc8FDYUV?c;_eJAhci6q5F7kk*I`tN8F!$N=kahl0}n-VY*edc*Cz!dEl&aMZu%f%8%l?YEAVJ zP1Q)DpghS=n04|fDewCoaWw0jm_ zqj$l3=ErM&?3sa~oZ*utoO7G(1MWV{_aolYS3wVYLzxh)Kju2=fHVIy=XcE4? z{*rXUs*79{?m;4MiJ4w?34))e~XvR{n&7f#IG_*@n(Z8Lju%SR5=naz0{ z-o(9Es^RT?(apa`U!^^?+9UYX3u{r@h|lEHInOAUn_{SM7$LL`bBEA&^Ss*qPsHA3pr%PX8 zF0$&P?WSK7k3&4dzOrogcCzz_`*S+;cJNevIs5~OQ9`R{&q=e@p5$8>9(ei(IncaT ztiuAIJ!H(49%OzzA!Uzp{KR3T+i^OMRRj*Q^U;u}j|duZZh~-2fGz1miIm*awS@9q z^oLqsFrQZ2Qciyy_=IsRgUBqop3bTmUd1k+`GT|R?0?);vsJvL$m9Hk@-Kqq?x{kR zXgevQsKK58axaBJYW6&~dk`(N@Usi9U=A6APOEMQ=31j0J6U+aN zR(5Y^c6xEx{Gz+cLH8XvUtPX&`%|9q*6c=_P2WFhe@x9JvF|JAZONC-lW5|`~ zNxh!=;@`_odb;1+Dzox_=k1W5N-y7^%BcF&$9xd}L4I-HT)%E)sr)&yk2mu!hmYCU zjQJL^Td;CPj*xlofbhl#g1c|*QgYL}A0CNU#GVTr*V6J6#?fb-+Ky9ynwEZ}xy&Oe z|5%dU0rH-w_c%_$N4fTSZ&bCl85#kZpe@}MuKQgPP;fP z10kG!E~1}vrD82lY%!gmHUSCpkCo|K9CnI&rfwFuoN1TFdD_Y%lJ3)m=dBo}&i%}n zi|Z8=+j5lAV+N?C%YLhmen48gD2guga-nFYO`v#w+L85Wnw@$lrC|CC{M<|~3wMTL&fhFy}!N)B92jTkdTbS3a zELi_y4BPsK4;&rpUDLa8gKscGNpV;H#KhY(WI z5tj4u2KLsW6`a0B={!Zp4b7RDC%S>PZX$QPIpjf;w^EkWHc?XsjFf5R>#&<=EJFgk zH^}qXHz_WEozHnZR?iz=`I8?!pjKO*bX@r7W+0j5JD754wL5k7t$5mu!RzUB$E{+Z z6-vg&Llts6Cn)=556UrM$2OQyx=#^YtCWhn1ezK5I5utHPDawNGG?^S zp7rQ(lRwSAn!91aiomar5(Q&f?!uE>e~^dvzo(>5E~nnFx1&>oSd8_Xjx*;r4Uz{r zZDccMjpQ7=70)vt!{tw3YcHtlek;7dP>U*;?vi+Y+A7sgIwxzt+lmjTzGad&{bW`B z)U*FZJ>iPaeB~Vq_$RO_k?G>C3q>1aqseOzewN%F*eX*m{)9Q7^rGMF$!4-616W&6 z*|S@0pK$GFt>P8jKFa?Xv_+^Xb|h8zbdx`Yo|lS_zoK1s6fs;EJ1{zr&I~#DIY{9X zYr`>|U#4RG@KAjtBhB<}W!h^4Vsu5kQzB7%75P%j6RNA=0QJs-3R+>+1%{RF17_m< z!z}0BJ6PwQZ07{9lercPcc>nm{>@AKP|WX9TMJr>dxQ^Py&^|Q(bkgzZ z7Z{|nuXy+Ce%2g3nB7nb+(65BYFdPjKdS7scKADM?Ke^fiMhFoeDco}DRIgh+O%tD z==+_+@yl~R$@y(N6eTK0W&iPd^@NdMHP%t)nu|qGh3vlBB9UaJ*gyY+q_TI0%rY(? zi>o!muluFReGAqq7WeK~R);pJ9vnKN{y8{Do4V9Z_pqHK9Cb52Jh}Ct?f@GpNP^?%?|&gu`N%~ zsbl5zy4(XyX@@1t&Xvxpi5tWTx;U1*!_|-XC;Onl{Fbfu@9;cPdipZ)?dJoeT)dq& zw`8=p{!8s>LL{9v<&-V^>adqw&n4G*IW5urHhE33<5+{RKu&7cn@TrYZL%mAMF3uzW`D#Wr6D*Q`TKNb| z`sI%|%yyKIc^;=I&=x4WE?-s$lfG!G*L~7ifBhp$ie`#$pR<#W8EGcV$oNS=`mBQ) zBwfo|Q=w#kwxDu#vySi%-zwrygslP_`bOdEEtaGYeQgv~+-2&HOQUIbZBNoWriU@7 z)%&vQ{D9-V`Y|`{{V?7cWtY~cx<$9q-a|BBXDt>MgXH|5QknCtLX2`@9?l&yJmmD! zkqXO~70QJnS5%J=>om+^7TV2Op1Sw%W5oX0SV~ew7&WFnPG;d@h3WON_}Ld$%q~_f zJ8^dd=e)ys?&sMpydPKp2vWWMgxB)4rp3h~%Eq`k)F$828F6bjBIv9;h23>BKCi<VIxz9%G-B zXD-~OD6iYYG2PnSirDYG;&OL>H_=6yG~*BH$jxPxF=K#QxaKvj_FVz}t3=LBDIdjp zKuqKeo$RhsTzsoGdUa@hRw;DK)_0-^R-*V`S!9HR<=u#W^*~wG8asUOx4sbSgd91y ztdDK++Rv}YEsfI{e~0^~@};`5SFAZtKc(HgI9|A*I-lg(QB5w5c|hsDagG+oIY2*J z6~r9nGEP2uO^PDOSkG?#C+AL>+{&AN0ORX=D+DYuRq#D!1u6B-Sn}zJPAdImFwMSa ztgJD3DRzCXKW;b_8Isb~DHr-@DK4(hP`UhZS0~NL)W{G1(mHmZ*6HJ_*muTrxWSj+^Ge<7 z`JYx)2#JmRbzi))MP=i*hP&Q+7?DZ878#Q{7^4|)au1p7JX`_N<4Whr91a#%l_KpIB_C|_f&nB&$W4~SQI07o?2EpLil(l_mgcd zKXHDMpy+C#ZlBW(vGfeFN6Y||^%CU0I z`Vp<#-rOcp#K$1o(Y)^j$?Ut-2yw$Gi@X`RSZEvV-oZ22mv zVakM$*V%~izW0)oGc&0dYyZ-&jc{Q|vMQPDUi-4P`w#M4v|yC7y?H#h#u4YOiAWI) zKB*AS8RkoBSaO~+=Gl7cYJMUuX5k9D!*P>vp z^T$M?P#qyEKASII`kOA{NHFQC%CWNCj&)?B-bo@K9sGIea+e+BRz$9qnUIr(AIlhH1rwTl$w^S1+~&a@zzXoEYJ`pz8B5FTgt z?H(iV?TS_W;>=SmtURYaKje{?nXyl|x&4{wyXLOAdrOAo>DvU^80?z2w5)(pGr-^1 zZMuhFmhrFuE8iD^;(Qomea(u0@vnteJ4UN*8~@dfa--ROPXOi-KY1C|wRACU3ZaAU zz}-uBhdX>ix)DJB`F&dB{mS_4jh! z-8m_uceOXf4~CE=&k}=VTAc@C9eZ zRtdMV=LdgSIsCa{E!%;;N;m7 zVet$z1Ab>A1}QWYU`-u^Mg{ejvYvS^jb<+fxCYoCC+X z*UZw?Kc|Fg6B;^ng`=8D8&mg5>{}jD=LynfS1NvBRj)JfIc^6-T*l?g=bWuqtZ>?` z3=N;m=_#`3`SiN*_r%$0-`4ySO`#aXi7Q(uQO`Z8541cw^)ipKF8Cv}a@85uk+(&h zU_}OZ?ZFh@C+kT9?K~^tp?h!1w$v+>NyWv~^`FPn?ZO%u^Nt^7ULCrM?Y?LYr?@$R z+s)m~J2Y#ieo*7_2TLR@-7^*Y5dQ+# zX6FuGym^HtPHm~Bud5Rt{}xR)iw>apmRCwi->EVe#!%U_v{Cq&=BN+}HCA2!mf0k-U7(?y9f1)Pes$Y9~o=C)PW{9_O4U%8G7Rxk*@!0w4)*;r$E_pgRNpT@R zK-t#LR>wy@)6`x(rgQTT6EU(X$?C@o#D8p+Qu3T_wCH;Su!*iXE|0Hb5-Y3Zi)>mH z@nOMA*R?gO9p9Jmj_DFL=MKKsp7{MlcPq?_R9AtK4|m*^O!RpwZP_wKcIHJ5w#a8C z{;g=Cd~Ba3J64;`NvXKX{XFc1Mwho*Q1;DU*p?7Nrd@BOr~>nwqg+$Y>=+Ft%^wt##aKPcIfyFupI^%0w)-HJ!7 zZD0mJ9qXHkJz)1&HFCc9n5kZI%hW%LX__w`?%JQ^65+KBJJFHr>&O}AFC}B7ENXnk z8QH8aqcEAM8+Xg{#a~|Lg;b-9@>g-!+3(LDQ+wg6`jBO zPr@LLl#&+nWX^R{v8`kt{%oBa3-zvNFB`j`Q*(M9_xf++_>KG#6Pim>1)u*m3A2LC zNQq1Q$1vTH8jk*cnP)L9n8=O|xRq>i#nK zjP7NfO*^2dz3#0NFl^PnS%G|yJMRS{E(tp7?BSxrt!Cm%|3j2@nXjms=Q?G|pF(WD z+7^#1X%A_#Stq|T!Af!A=ughxKMQ!?lQ6z*`MHUfpIvmh6BmdI4qJ&A{|k_OOX!k~ zZP)>D9m@(;n@+{3OZ#7GW=pmRqV?87i`qclUx%Th zUDz9Pat?zss%9lsI?96D8x=;=uPCM$J}G4IY@0_ftI|6T5-#v6|yk+IgD!K(^esuT+<~p0GK~8#4c;CgE|dc0c!tXmmxV*kD^C=~&z$lf9aQxqCWcucozyi0gjKr@0+b zw5_RCNq%2f@0m3~^W?fp`zvrcY4MtY;>cSR$$tZ5q{XSpvZWXDu_((7{NenKa@qs3 zVk5mld9Yxp>R$UZjaqX-8@c_hQ1t!@>0;a#ip%Xn>N5UqTFYSzobNV-xuZDLx1X?0 zIevkHd+5b&^_S4*iF2-4Pr6N2iUZ5%OP1TQrM1~iOxSq|FO7Z{^7qC##U%D8rEN+~ z?BT=0@uufZ6AFqiXg?CZiZrSI;z374#nqpTlKb-65ly?z$438$MV-!R4=HOr=9}zX zsOZWUDi2&Q;Ko^PQ~ePLG)oS>5u9`L)uoUBD|&kEH^r9pS#o$9Tju)cC?*MN@!{p^ zL#DKO$Y*n>vi%mEWH%o<&$;^h4fkE>Oy0}=yEX5=o)Of^x&2^p)~zcI^%ek^)&obT(s|JctzMsT)KZ*gn# zjs%`-i_$D{-6R+hu_1WEx%;F;E_2D(vQ|=3&kmOEA32JaHsJ}~ds8Zd-#v(VCSJ}S zet$e?iF5;(tzXOiQP0z)vgS>^zkhEi)%jW2`hwx%y?>OE;mJ$J9(z$8{aah?`Oal6}ZsykV^nn&ryTK&a2!U6}aC|21@>R%Z~E;-jk5qx?~T^qMmwt1fg zefpOdjC2*3xnk!f`D?qCe$U4TD$nj4tlIOQ!bw)1HL=(wGA^@}* zAKw7bYJh+l#{K`foi-jr|1}u9eH|_`cfDF#_xVa!ldq zm(DBP&KO^k@qdn(g0+pE<1}Lhi2rT-&!9G7w~mywc;SB={?9sr4Kj|;TsZrGjpOXr z|KH9Z0e0EOF#jt)fZuCl7RcHLObEB}4~(HL0jzQX@W+k&CV;fZ0XMu2kiHmj2_s+# zz8Fk`55W*^37B-;1QVlp&3Z7^o&dsn8Q}3Jz|8F@5VWN*bRY@{`cfD+VIvHcm4bz} z42J4Yf<^8@Fvp(+%gF0st}g>C+h(xPmKh7w0+#qwVDsuASjtYph^S_;(w+j_Vei07 ze;RCKJHSSJ8b&F*UZ=ZUZ-?0fFzpU0(r#6@lP^uYe%aLh#gI z0V1goyk%E_JoE{8>#qX2I1YUASAiOI55~zVftJL9ar#Q2n`VK(whEZ$#Sn^@1D5O-C@xF}mi87X?c#y0*Mpiw1}1}!V-f)pZ5_lIvOsDyZv0}9;qO7b*(i|d??HlWCt$LAm@*mz zIldmIa(Y04zYo*SXh0#m4~Zi^L8*NJ)Aezn)IWe3!RDaGKZIF6Nubd_ggLVjX!H#* zr^N$8wGEIIPyk`FMwsU@7sB+7FdyPzyuJw*T!@8md=o5mH-`xABUsE`1(EtkkRsGU z6uuc!&g4Rrz8RL9zJ>|f$B?SxLp1&|Ec0xEiTD;+UR44UWi7D6^&m{rK7q79OJS1! z39O8Af*AZ0SZ$FCF|t-zz4SZ88eL=F2(j9yux7zAh|@oXb=D&xUe*Td9_JXZxeYQB z*F%E-8Eo)1z!dE>*eKz_RM~Ubl+*=N_0K^&k^+hN7ogiQ84|TGAk*xOu?8<;b43Wu zz`ukou1PRc)(+d;17Vi79d;P++u8UI*m2}K%rTnn_ZQ}9UqN=W80N}e!7j6*kc58? zyZVi_F`Dc373Rx2A#d>ln6K}I-R3^95dQ}DJiQAGWp7|FuNW3--@-mZA1v0tg@RGD zAQ}G-3TB>%6xlmC=xGBf`Yt&5wi1>YEsW@ZrLy->_~9<38a?7t49oD{@DDK_mg&3U zUuPUF*Z08Dd3CTt+XKfur$Czi0~9^@11s?#;5cOwtdf0%;!iHHO8XH?B1>Vlz86Z} zrokH7Cn%f1g|+%maM~{w*2zA@>4qV&UjG@+^0z^T{tKL&JO~@KU*J5y3pUEW!i8z? zU=#i;TvWM$R@MjQ?Zu$g_Q54VK4jwip~83_n~h#2)WT-jH@F&~3|sWypenKnw&K4- z)rAt+Ci@Q60uF4`|A6ZEOJTdw8{~=$z>?hoGz6sf~0k{=006XymppUr< zyYRoj&|rXFvR`nU(*-%&-%zVw19|x0P=~jGJnbOV6|-Tteh}&JgkbSi(2yCAf%L!H=*(DA!rR0IMC!4c0KQ|2$kKSi|pN zE4Zw)f!}$b|11hnR2(5k$m4=ZB7tVt!gDo0z?_hbK^X66SGGamXG0W00+w1$Qw=WM^#$bp%H=%6>20 z(>WpgYBkgooR9;@74GZCqA|hI@DLk|oFe7$Q0I)Cs(wI&!5KMQZh=Of3vw})K$B5d zVGKOdxgxg|A~X|RkvrWV9%F9EqlX5Mb#BPhwGf_Q?#P>S9-b21k*`NJJjFba@50&8 zX7E6M&dKmh=ZXB8zu`INi2}yC!3)d_1t!me7X~jBM4k!lm^UKg&EOTm8<9t0@Cx%m zWa&%jB={g|L?CqPd=a%@0&k4chfRjJ*f_*+N`rTVaflh-4_%laVs%$Tm(CBdiNVl~ z`6F(01N7+p5#M|@e82(_|Lke_XjEusfL<&Rg)sBs6Cn_Z1Rn4i3qs=R%kbF{ge00w z_=*K1nVAIo3BgD{`WE!-h)BM%9=;ifNa=VUzUxRxWp@UC7*+e#!vKMdG$(9fKu1QQ z_QuZ$MnU7vJ7Ca2K@paY@P|M}5s7{97o(ym|2PB$8j5;ThQL5W(Zh-mGSJb)MHdlH zM@N&wJ&_54fnp~1AXAKi;@n0fQv(yl-MWkLMiac1h=8$BLU%ASGdk5`IvPq~qiJF7 zXsC{j5(&M?oWMcTpAwKc#z8ZvN05b%i)M`xBTI~n=D1x(mIfZ0^KLG(GMXglM%Fq$ znm7MGvcdRhe&7={LMK2ATFuZ1g8(h`T8wNl0a|QtgKTv|w0J26jUot93cVeT(uJUu z)+xx|5Q3J*eLxNd5lYpBpwXBJEgKPy#u&tC`2{v|#KdTYTNZLMNYF|O6FKW7XfXJ(2s*|EMjDF;X$=xY&^l)qYwqCu1{4f>T=A}XYIyKtf z?tuIaYP3T<5(Q#vls#690(Bacy>UDWGHB4QFg*$;grZ%SP9dVvT={xL)Pus2Zz{%3Fx0_C&boGK>v=QA&xE@9oX4j}fXYAH zBRQ6UE{S#_g<%S+P+UhU!W49s9*0!eRCIN3JyIL3a_vTH!!%U&IuB`#Ry)&Cs4fv* zU)+Gg2#M&1Zwwkwn2u`l525k8>F6eNFA6uzK)3!lp$NhZq@VH&MPf72Z5a+l8D^o{ z@KO{_n1$*%J5e+?8`T|1LKBVFd#yne4RcU^R|T4+n}Z%$HK57ZT=d|REs7z`MGZs> ziZLXiMs+@l#gb5y4IRbl=AlPNXP|h(Jk%T$iV_I(QOnp;GzFWFT5TqxDTW28^(!Au z)h$46*gZ6jun;}-dWxnQ7NX}P6H%gJ5qgnBLemM0&`Xm@Gy_|NI?Rb^hHf$H2>*s= z8WyA1?s_zfkc?i>zlLUG$>bgNz7Khf<`I^n z?%Domo^C1X@!y5!>r&B&9iPzxLMr+g>4Fv#mZ9EflhHzK8TusPqeZ&q=!?TuluTHT z`ecbH8C!w+%EM6#VFmg&tOlhR($IG)7cJ4Hp&yb|v{bhe{d}5_mKs)~0W}{j!&af+ zre0_TVKw@r@v6-)mc zn{lp@5|pLef^$8Ri?WTnyV;_|d{ARYI-9`iKOwk@f7A~O53GFo+q`8Ii3E8;doFJ61%f=BC zhNFFkojCGH1uDRH;;2>^QGsq3j=JgyI$+p^qX#@j2MswmhO7e}(&gZof{Un7my2UH zb)rH;E{;8XB08eW!*MAs=wCt}j&G$w{~C7V_^)iyQKLc<8x;}u;6m1Vpd#HKoG9=h zDkkj3NleD065U>$Y-|xKG34W9JD#IbLOxDDE7rVSR_C)BMs+Y40j*7-PrIW=>fzV{LkIiXGwhlarg?%q?lv@XonA@Yl~t3Eq6V zN;q>MinMpaMsoJ4F%)t~IdwKSoVIA6n$Bwsp|@Gf82X5v%w@R;SrJbo*=fvYoaq}a z)tft5e0=0}e#5?y;Id8wG2FJ9l#^~jo_4L65`bDLZR|zVZA)xuXCD&iC*3(%?>e@^ z^wmM-jHqVS{6b7E|HROwM`EF8O5cZF8upHOHnxLQabPKV_p202Red9}A^J}eY1TJV&F*#N z?|pM6mJw>&mYPrWGj5+5m)Aa0nD;F6WaDKZLfBVc^*#G16wU=55LDSf)WukrM8{b%lXAVmFCEqQn7{G>fgj?7jy~s zTMi}uS}P*Qep*MVm|8*2JYt|RUvKnYz;|J!7JxkcQ#Y$>QYD9bCziV?z?G-VlJXgb zC&4jZiNbX&W8ISOXOX*v8Y<_^I+_Tbrw2sS7^4oCFs(ngv3x`}>>;~C*dLyq=JW-= z}^VY9rr+m2RgV&44XOUdm5jqax4#l;@s z8}nk3Yz2ps`8trA>Q_h$S=>)oTuoz)BK%@bnsS3RweqY|GnD1`g1JnUJnIIxw`Eq~ z8{a)a4e9vc+PWvia)$`gz2s#SPRDs_1cNSBX2*Fi?v!J(EUoYK9j?s&N-NfHn>8Hw zSu@lY6|Vy+R&@!1bJ_*Pt*);144qqZ-gUCJ-h$#VDD+HQxRf^T*c7iTk4}5v@FO!? z)7~*J*3uLk%yZcG9ODl(Z4D>qLYG?naTjlncp-mkK}nePBatvmvOJ{s+&*!rdz++e zXRWm3%WB!rNK?7$!eqr%yLe^wip{FN=Ud{Jgj**xUJo8mCXvIl4<|$%A9y4_Gx4}I zuoB4}ke>cp?vC~B%48+=b+YeH4CeY@p2XYYn9hHno<&r?^e3GVd5}Ns|3)3zf0?#p z(j@xF3OO^($%{2}?qTJEDEDfiUF+mbc&WjjObPEQdAj>bZ^XIv9~=>8z?c-9_h)M6h2BlY6nBJ>$_X%*MzCUNPS$$*99=Jov|3YNs3BsNx+kjbtGDZ4VX)GwVT^hnuP#+l;}nVo-@vVKQ7vHNz4 zIOppZYDla(p*xS<3;Se|N*cfPyXf>YmiQ~yOG_^PLw{i2$RsW}#>&2*!G1+L$+?zv zNxk5ohrBxLkpkrsDzW5o4%wVNg);AeKlSckE!{71J!8wQwaji`gEDa2RnGP|OS#n& z9-n`#Sa4{l9r15c7uln7FNHahLOq^pPW#c^L;q@P?sF!b>U(0xWY*lf>Fh+aGaOfG z12<)V5-;52wD>#Y=w*I?8K2heW#OB}?Ac6P)#XBK4b^OD zsCJocSk$@uLX-Z+5JzDJ*)+?AGPd;-)z<5)G+@aSx@V<120xxMu8}@6w=Z6xcu^0^ zW^*6aZuvy@w=)>u(SDmCKkY5?=hM67NxWjp@k1M^)!px{Mq!5HU4cS`L)n)%9wwI(cxiCXT<2Z?R?*|69eN;N}lE5@qrrdF&pQ=xI~3 zWD>tidg=Il*$0yi@*&gS$zL4qP@H^eqZ*@fQHK`K*QA;nLKle21c7UtiTm4&Ndtm> z3iog-^@{0T+6A>G{ZQTl?C(H`V&%;9%GP_)>Od}qxAy1&e}GU+42n-C$r92>~ zrjsdOUsO^D#*t{RQ?@gvHce$}>~^!p#k^*>S4SK4L&< z*fCDz(`P1*iMc9izUL~famb?|nq$ix-e6$O=X9~_j*j4RtW$aW(@yh$y*f;cQLiB_ z{wJNBIq-zClXFcHpY9}8T-zqY<1H}1$)}j3irK83Vd?B?;sTD#x;xwh9c7y5k}Y9z z7atH0`I?j3SC^5y8l9*CoN}*yd&|6^nM7iplQHIp(wB+@opRNf=vGxrzB_k!bGHVw zS``#B)n0I|dcGUD*onM#dE`qMH&TuaoTaYi+@j6X4bsQmGNHf0{lj>mn87UF?!d~t zf0Mn_%Y_pXdzA8Y}iyp+hA-6-uQJCalogaDdDqei@^Jp)> zs34i`p(*rFy}z)Z0wwcRRtH-Ixqe?*G}XXHkAT|`ID7_of?(e9C}NB4OR|#|Pf7TY zAvvrZq!l0Ur1M%x^m_a+W>8WVEAhb~yCyi1Yq~o*(DB7TeD}aILE)iHp?;7}dNy^B z$K>lZo|inn(}!tod{(^kVOA=A*~3fgluvufocYcTT&Iasxpi4@c}=fn{N=Vn!L;~R zVQkr2(vBe&TNdwNa>GH|6(o&AwLibkmpf-!|?Q z+;E`^OBYQQ`8`=K-YR+}={}h(Q`+yxN;15eJw4x8cf1YkJ+qoQCr_twkN$kgYnhNF zkXIfRhCp=4SZRr9|ApJ)0k1S^%${|!D`w?#$Fy$6s%}g6)i@ECUAc<4-zAp+YyD4R z?5jtlOVUdehobG&w4pa?hhih>7fyd+JpHqn`6+CWz3}WB&VAcRUhpy>{@Rw|g6FJu z5^?`|QTE_-iPan{DdD70`t{pkSzWLdws7t(Iphsjtoh@lj1^jNMrXKiN8VVcegKJ~ zp$pH2`JK%dy!+NpnmtKHHdMGv%p8A6mt{7{67LfkZuUXUL#rRN{=V_ygog9fS1Wt@ zR{s5AUg@nwn|nWnJ$N-~8^@8{bC4jecz8h)k8hOTP2*wy??=e@#zraL*JY?wd`I== zQxi1yjO-PWesf$s;!5K^<=^Mi z@+X*h-#cZ_DE@rixO9qEL@e8+jH$y^k@lC=!BZo+gGbKr-hK=gL`TY9_g4KN$-k4y zAv_BTTG2$wIev_0ZMlW+9mi$3mf)CDQwg)5JB5wqw{jNrpW{XgV|ZJ3-{5C-Nd$}h zuet`N5J@K*%PGU?{?w$sF0|SKb9y_rlksHtHrDVS8mrZ{P`NsKfokc2mt5-We%_hT zkd+A3~sOPMC$c3#lLh;@SUQkrWU-i)LVuOpw%y+m2_bQV=d zw4+_g@%6sY=2ZqEhak8~I-7@nXE zyL;3}c%i$RltBz8cND&-)OEa|?)ORY%2{@nE-riIGo&Y$nHb$LZbe}!JLUa&PP@jM zXZMc-Uv9oy;HlgzXxb1>oOSjziQ0Ef#8WI3A2?C#S#4(UiXzRSCvCmLNNI{=)-dx~ zPq!CxtX^&BjuLoqFD}Z~EGuc?e|1U>`!H|2>)Yzfq`aTr zd5@j5oDrhu_y(9sm~B`X+xmEpU)%cvPO@!cK;CpZ@4!`l(2dczf}_OdME8yL#E&&H zGR1!Z`PSqbD&cZAEx_?S{rI*{Y+3z9Ce7}QyfbtrD^E9?J>77Gv)iv;?K}C9`fBC| z-mwP{1q4yNAb&wBarOyYlKnd`(s6rh^0G-i6theTHRhuYElb3r>vG!}OX^LTMDq?- z%CsNsz2%=c-NWzj(DYsWp_lgw0xTVg4vBrF+{Pp1JM?mKd)7Y5_h;jzFa6_Wwet!X zE6X%;zc*#$wodG0ci%4LTpCssFh?xm-9C3N=%HB*apa z=av_yw4Y(;80gSl>{;(M1$SZ(d+`-VPH#Xw&m${{&-%g$t#un6c5(hO*VbEiNd}7> z?)RtFdh%)tyb8RP^xv5eeUrL_$DPzHQ7+iZ;wbLT;NmT&^ERd*4AOrrca?^>#drOCc{* z(9O>{(JLsoyh{8z|2`Sj9w+Av@F>*4C)9xSlhVbn2fa1^y^Q3|cbM~9%~(-hixuxC zkW|sv4|DU$HN2d(Vt#n_Ji!s;n(5L~O32v@Y2?NIB@_+yKGl4=T;D{> zBd=?nGA`Xo?zd^0h_mQeTfpS*XS_?sMUQ%$9sl>u>w+t&+V!X=#NDGT$0K7zv}fpq zZkkg;Jstl%fo^cOz$S+`%eP-(vx46}WIcDw;_x${s26`6!aEvX%;_+F6BJdVa}2rE4YNp z@_@!)!+05te*Tv2oZ!>X48;B9DpForI61P~M!dq=g<7$?gm$BKF@3_YVT{IA1ZG#$ zcGf4NkTYu2H7>L|adU=Bd26Gt@m0H(!P7tPCO(L$BGn#TB|7%;CuIrAoBFv>MIUdS z#5ldingy@VE2ZNjROiY;VZ}`Dt zqhYL;6}oY}vaqLwYZWTvMV`LN*ZpA%c7*9k!!Dg7&+}eHsoYpZ{rhGoeYJc&qpf5S zi)U5jcVOL6|6d>G1T>TByxnPp;1Tb+#3eDkq{ccg3YptL-F0#U?W=P+BQk3q^DGp_ zjF{W!m{Qy86f)#8_pk5;f59Pt!D)1kHgbC^-MqG0R%_-YXD;(p z%x~7Sb65(l)&2n9qCtCpeZp^IQ1vU4)N&?S5IabztYXrfd~mYWIcKoC-_;7MXeYM# zR4u1^1dZpq)SkcYQLmt#af1}Hk4!%N+l&hFJyOxN8rgNPk8+!>QLN;z4CTw2zG{AB zsQRyE9j{W=!(Xt$RFK+YPyE7sA)@X(FFyO1Egd=SwrojFDfYl?gMz4wQf74dsfwA_ z>cg8h@m=0t5v)<{B|a}Dkp-3}ltYVJB&$vWjrHDBb}?!KbJWGR%rCzujk_;S!!ky##NS}3A#FVZa$?3>W8C;oy`B<)G2G8tdooLD93{%u`lPb>e z?)vZJ|J~s(wEt`$GD)@USFUXnB z-;o7^kAE+c!WK7>Pqk-Jw)nJ^^{+fw(AdRJkMS91KN3v!FNJds0_!>E_$N28g@(lQ}vB!*v=J* zdz*w4OL=Y$>T^ z$9sx7q*6`CCrEk=V`TGfCStW2JcZv^zH;k~R8{w*(;6jqFSO+H5TUu((~x=D=S8ds zUZQU!6RAs6vuVfghS0CM{$lcSNUQ>rNcQh#1a8b*9Pi2`s=)D1u;86JQFtu;o5=IR zO7SKK7fI(zs!ZBufpOjSa^Lya6q)yKDJx07YSz9hn*86A&{^~XkW7w*63fACF5-4C0&Dnoed*<_KYfKSEbnafPQSP>$b(t7P8)s8N6^#@g|=Iy@i{PwQh#88zN>1yc@ z@@HH=b?77-ZTX$?^k#C3d|1vK){6cL_S=aMx!C1m9%Y~_)KXd(T9qy&vO5)|q0TNL zhFFnUdMjO`4Yrk;6dGhN-)>_Z3Q{tQmX21WURk8)ZJa4w z+h|Eja_|xDn0wb__tjN2yKy(@srz0snk-xup6Nj`%Ra`(_D|8qkFM15iLN~Y<}{hm zwrEJmPP@6Htuw;Jsh7GXU;KjT5&NfOK^>mh2j4e}k?9K+gAWT;E4j()mSattzpysU zZd#piQ*C+3K06R?Ok63!HT{uJkT%KAm0Qc*eVr5;`LW7Z!*pu#>S>yPKI{&|B{Yst zd|(-VUAQQs|46XJ!URWKIg3s&yXuHN8eyssr!7~Wc~P&nmfltmY@Hn6{AfjJjs2If z^$8Dzjn@x`zw`Vf`jqxTvaqXDdVkVSEbz9od@*B(LY-=(=sC4oHE;AJ_1z5TQ2+O* z!&XO1gd30KhOGWvBlS{~OJ%(xAJ@5JO^H7CSn)f(yo9Np{ij1RK#0}0rszpv!p zlot7y)Q?I@%QsFe*NV%?Q1M8&UuZsBX+ksjO9aOX(uf(aY(o|Vg_9?zj;7G6w^MUT zY+A{d)pYLVBi=nzwuqUr<2g(C;3*r8$W^6pcog@nZy#g3-MV3@on>pevv|U#`Ie=zM(E ziZOs)%*Y@Brsc}jIOG~cD}h?FU@|NW0)nE_iNFvrKms5`1sOye46_RIkc2_u#30BB z6i>}dM;8}j5S;*2j$sZ^O99X}Mgc(v76uUpULcQqt>e%bUb)bsJtuoW(oA~=@j bMrN|vM4e3Mj?p}RE4Blu{#0ij&|C%p-RV8e literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc10/META/DL/bdmt_eng.xml b/tests/fixtures/disc10/META/DL/bdmt_eng.xml new file mode 100644 index 0000000..9c8575e --- /dev/null +++ b/tests/fixtures/disc10/META/DL/bdmt_eng.xml @@ -0,0 +1,9 @@ + + + + + TEST DISC 10 + + + diff --git a/tests/fixtures/disc10/MovieObject.bdmv b/tests/fixtures/disc10/MovieObject.bdmv new file mode 100644 index 0000000000000000000000000000000000000000..039dd3575b94c52b0a30d8b4220ce5d5c404bf0a GIT binary patch literal 1574 zcmds1%W48a5bW7k$R!ezbI^b{A&d9{izf+$=pXnglYEJv;&*w8T{Yd%2$H?z5PL7R zHPt=UJ+u4qxqk1LeJ{U8d!nS1X{-HE?a;7Kww%(nW9P|_>W2Dha40v_5C5~VpEH(1S6To7 literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc10/PLAYLIST/00000.mpls b/tests/fixtures/disc10/PLAYLIST/00000.mpls new file mode 100644 index 0000000000000000000000000000000000000000..3e9593db25102d4d3d99adf47cc4900a512bb2e3 GIT binary patch literal 280 zcmeYb@Ci0BGB99ZV6Xz>7eI^)@G&r=Nv#6%nSeOJ00exELV|%xxRn=oaO=)`VYC15 ze+QTbJq89wB;A~h0)h}JR_R0_gOd@;WngVE%qqx(m}m$yQFlfRx3fJX13LvKGBD^c bFoS#ma^L^|VA~lP7`cIFBk`R2c_2Ihjt(Ms literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc10/PLAYLIST/00001.mpls b/tests/fixtures/disc10/PLAYLIST/00001.mpls new file mode 100644 index 0000000000000000000000000000000000000000..eae4e65234523e1445f286949ff6b159b2971332 GIT binary patch literal 258 zcmeYb@Ci0BGB99ZV6Xz>cR-8_@G&qlFxc#1wReE2*Z^cO0%3yz5E%Iyg#?4Rv;Q1m zoU>*tOc4VUkQE11$ixWL4*{Hv0)h}0t8^le!N~~aGO#unW)qHPA2viuDfg~e?49G3UV7D*;t%kUU1)>oclARnq0$WP5n=VTOu>SUb& zlxE;$Vqg#fi?B`v@gXiS2fKikfnVxthR~~cy<3Q zk$8JfZ$$8T|Mo6M@c1s31S5F-0*+_kJVsCsK;l_6_apJjJU1bDf?0R>Ab3J6+b4MCYnc24iMKDY0M26urBVb>Jciu}i8u2Y zBZ4P!_qz~+Cl$Ux0f{#?cLtot0!nvCysPUC5j<((nw1EitXq9Kf+wf9b3lv>@G&p~rC5-pCji-uK$u_v1ZKWQA;CZnxARK}erZP; zBy|i7c0h$7l~BORC?E)7vPvfc8JvuQOi+HKVOBvNCy*xs7GRwSRt9^a*s SU<8j}!0`+cPpYXF!UF&{7%Z*; literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc10/PLAYLIST/00004.mpls b/tests/fixtures/disc10/PLAYLIST/00004.mpls new file mode 100644 index 0000000000000000000000000000000000000000..0f9e8679d5bf8efbf5ca786e34643ab4685bdb68 GIT binary patch literal 310 zcmeYb@Ci0BGB99ZV6Xz>b3lv>@G&p~rC5-pCji-uK$u_v1m?a*A;CZnztqoclP9RSNEWkPu$OW-f7?^=1BZCac zE>o~w3=B*RjI;k7V4TAOQ4CU-!oUu)2jq(X|3Ly^o<(y%60gj26M`q0b$1VfC$zHt R0ut|es0R}7b3lv>@G&p~rC5-pCji-uK$u_v1QxzVA;Cb7&?m+TVkaYW zkkm0S*Z~!SR6+qKqktfU$ts-)WN zU8Z2W7#Nrs7-#=Ez&M8mq8Owug@GMp56Bh&|APcTJYmIj7bIT1$sPnx^gZKV1W&AC S@((25zQh6~-ibv@5FP;GKrK7~ literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc10/ics_menu.bin b/tests/fixtures/disc10/ics_menu.bin new file mode 100644 index 0000000000000000000000000000000000000000..c6257daf1149bc1e4d4c449aefde8f605db86849 GIT binary patch literal 6169 zcmds5OLJ945dLP)IXCYIH?JE)LI_*}@rfuzi4qVsDnw8a1w~#fDc7>RY%Dk8!UYSK zZY2$2l0tKj#|p7srQf_kVXSEm|Rv3Ug`&S%WY9F;Tk>?S}1n)SiWQ+ti+i zcF|S7t4`@8d7LvnVVJ=0*{XibbTAw`|2OVhi<~5hbSe~fyfPV z>Ejk9WR3*AL>v~3DT9KnY(H5thk`yLWmOC+WSNU($v6eAx;hLx$f|sk-BmlpmVP4D z)oIX47UN(|?G#%Fh?Lc3(B)Zo)lRW>kVskG2HnB}dz5()Y#|a>;(l`Z)sB_nn0=1rY!LL~2_ zwB(nJeFxz%LpbatV(D5U9YUv=H{X?^Bi>0|Bnf-}31L+HLJ0{WqK!ldsmcN+B%Fvg z5+S^@zvz7lEx|5A#LBS&A-w4E)%EadW%U^JP$;`c-$)t?>O`um*PvHeRYs4bj$k*D zvic1A$g)3^C21&_B~n(uLBHtwksgr*6SVd?U@$;dF_&G}1d}A&L!`O}4F;vh(_~44 z3HA~xYm31avN#jhHNhmw=7^M4HK=;lw~$;CJVvCfA%h_q*J@VRT$6lzoJd*22E$(0 zn&zV9;}b;68Zj90th(l+${IBoC5y{MU2|3P^(i7@>DF;S3T2tdX2LSjNZY9^ z7M+a0%En2$gtVQ$pUi#zj&F`MS^1%Es?-Dym=158dH8%_99>4(_dXR9KCmtzlfyAu{2j(&dTx<$)N=$y2;B}DmV^-CLoS3w@A`1VO9&5L zvwbZRt3QgPRQxjGaE$nG>U*uPW0q+ED`Xm7!z+ZttAxXAMBIZc%`{*|=Q$YAvWNx) zbVJbsD2vrEVTp=gCmh}&{+s%KtHo0>h}&iH)W&C8MG4(IY@!W)&}v1+ptv3CDHd3p z28EPXN|z3{Vp|(})oPhl+{4$Q$YRyCX$M+w{lW2!vV#fK+R%ON)v$k?v%0o&eQl8_ zqRqQ3EOcXvgEROwUc>yR?(4Qj{-rsi+cWF7O?xOysf~Jww?w~6`kJp%xz4zkdXH%7 zAW1GK&tk2(Zu3lpOvOTEF7|*dS)^|RH^}5_`G=R{vE`8zMuNGUG zG2*pP@ROdQd5&%wMe64XrhrKNN(nhb6Ky268Og~;#}t0h^ES`iZ6qcQCS`6u=B6xX zbE1vJl);pjxTR-vp3mDzY&Y1>tmjs;s^@q)%fCs8Sh>dm(+1Q0lhxrWrUQ=ScoS;} zkMyGJE0z^Rj{dx!aOITSs%y8wZqNE&&(w0RK1rmyW({V^D(ZGk&(w0RK1HOgJqCNc zt~JPMS@1TIvi2J6RTg#0X<6_Nk+S9t=E&lSY)wzga$-JBB&?Pt&AFVR&6uUAo_hR} zx$*UsT)^^F#D5}jEt}fI zO87B^YbZ*5L9X6Q;ymH-0pai=QA&8ba(@e{7cJ#2v_iLT&E6DwR3X~>k None: + """Disc10 should infer exactly five episodes from play_all.""" + assert len(disc10_analysis.episodes) == 5 + + def test_episodes_are_ordered(self, disc10_analysis: DiscAnalysis) -> None: + """Verify inferred episode sequence is [1, 2, 3, 4, 5].""" + assert [ep.episode for ep in disc10_analysis.episodes] == [1, 2, 3, 4, 5] + + def test_all_episodes_from_play_all(self, disc10_analysis: DiscAnalysis) -> None: + """All episodes should come from the play_all playlist.""" + for ep in disc10_analysis.episodes: + assert ep.playlist == "00002.mpls" + + def test_episode_durations_reasonable(self, disc10_analysis: DiscAnalysis) -> None: + """Each episode should be ~20–28 min.""" + for ep in disc10_analysis.episodes: + dur_min = ep.duration_ms / 60_000 + assert 20 < dur_min < 28, f"Ep {ep.episode} duration {dur_min:.1f}min out of range" + + def test_episodes_have_scenes(self, disc10_analysis: DiscAnalysis) -> None: + """Each episode should have at least 1 scene.""" + for ep in disc10_analysis.episodes: + assert len(ep.scenes) >= 1, f"Ep {ep.episode} has no scenes" + + +class TestDisc10Specials: + def test_special_count(self, disc10_analysis: DiscAnalysis) -> None: + """Disc10 should have 3 specials (commentaries for episodes 1-3).""" + assert len(disc10_analysis.special_features) == 3 + + def test_all_commentaries(self, disc10_analysis: DiscAnalysis) -> None: + """All specials should be commentary tracks.""" + for sf in disc10_analysis.special_features: + assert sf.category == "commentary", ( + f"Special {sf.playlist} has category '{sf.category}', expected 'commentary'" + ) + + def test_commentary_playlists(self, disc10_analysis: DiscAnalysis) -> None: + """Commentary tracks should reference individual episode playlists.""" + playlists = {sf.playlist for sf in disc10_analysis.special_features} + assert playlists == {"00003.mpls", "00004.mpls", "00005.mpls"} + + +class TestDisc10Metadata: + def test_disc_title(self, disc10_analysis: DiscAnalysis) -> None: + """Disc title should be extracted from META/DL/bdmt_eng.xml.""" + assert disc10_analysis.disc_title == "TEST DISC 10" + + def test_play_all_detected(self, disc10_analysis: DiscAnalysis) -> None: + """00002.mpls should be classified as play_all.""" + classes = disc10_analysis.analysis.get("classifications", {}) + assert classes.get("00002.mpls") == "play_all" + + def test_ig_chapter_marks(self, disc10_analysis: DiscAnalysis) -> None: + """IG hints should report 5 chapter marks for episode starts.""" + ig = disc10_analysis.analysis.get("disc_hints", {}).get("ig_menu", {}) + marks = ig.get("chapter_marks", []) + assert marks == [0, 6, 12, 18, 24] diff --git a/tests/test_disc_matrix.py b/tests/test_disc_matrix.py index 0383132..56cda76 100644 --- a/tests/test_disc_matrix.py +++ b/tests/test_disc_matrix.py @@ -21,6 +21,7 @@ ("disc7_analysis", 2, ["00003.mpls", "00004.mpls"]), ("disc8_analysis", 2, ["00003.mpls", "00004.mpls"]), ("disc9_analysis", 1, ["00002.mpls"]), + ("disc10_analysis", 5, ["00002.mpls"] * 5), ], ) def test_disc_episode_expectation_matrix( @@ -47,6 +48,7 @@ def test_disc_episode_expectation_matrix( ("disc7_analysis", 2, 2), # 2 title-hint specials (stream variants) ("disc8_analysis", 3, 3), # 2 commentaries + 1 lyrics ending ("disc9_analysis", 1, 1), # alt-audio variant detected as special + ("disc10_analysis", 3, 3), # 3 commentaries (play_all-only episodes) ], ) def test_disc_special_visibility_expectation_matrix( @@ -77,6 +79,7 @@ def test_disc_special_visibility_expectation_matrix( "disc7_analysis", "disc8_analysis", "disc9_analysis", + "disc10_analysis", ], ) def test_disc_episode_segment_boundaries_matrix( @@ -111,6 +114,7 @@ def test_disc_episode_segment_boundaries_matrix( "disc7_analysis", "disc8_analysis", "disc9_analysis", + "disc10_analysis", ], ) def test_disc_special_boundary_semantics_matrix( @@ -152,6 +156,7 @@ def test_disc_special_boundary_semantics_matrix( ("disc7_analysis", 0), ("disc8_analysis", 0), ("disc9_analysis", 0), + ("disc10_analysis", 0), ], ) def test_disc_special_chapter_split_expectation_matrix( @@ -176,6 +181,7 @@ def test_disc_special_chapter_split_expectation_matrix( ("disc7_analysis", "TEST DISC 7 VOL 2"), ("disc8_analysis", "TEST DISC 8"), ("disc9_analysis", "TEST DISC 9"), + ("disc10_analysis", "TEST DISC 10"), ], ) def test_disc_title_extraction_matrix( From a07a528bf5d4ee1363ab7a17d5fb0ac2910de61d Mon Sep 17 00:00:00 2001 From: Benjamin Date: Fri, 27 Feb 2026 22:02:21 +1000 Subject: [PATCH 4/6] test: add disc11 fixture and integration tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Disc11 is a six-episode bonus disc with one short special: - Play_all (00002.mpls, 7 clips, 37 chapters) decomposes into 6 episodes at IG chapter marks [0, 6, 12, 18, 24, 30], each ~24 min - 1 special feature (00003.mpls, ~3.5 min extra) - No individual episode playlists — all episodes from play_all - No parsing fixes needed; existing logic handles this correctly Adds disc11 to all 6 matrix parametrizations. 219 tests pass. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- tests/conftest.py | 12 ++++ tests/fixtures/disc11/CLIPINF/00000.clpi | Bin 0 -> 444 bytes tests/fixtures/disc11/CLIPINF/00001.clpi | Bin 0 -> 560 bytes tests/fixtures/disc11/CLIPINF/00002.clpi | Bin 0 -> 408 bytes tests/fixtures/disc11/CLIPINF/00003.clpi | Bin 0 -> 292 bytes tests/fixtures/disc11/CLIPINF/00004.clpi | Bin 0 -> 292 bytes tests/fixtures/disc11/CLIPINF/00005.clpi | Bin 0 -> 292 bytes tests/fixtures/disc11/CLIPINF/00006.clpi | Bin 0 -> 11000 bytes tests/fixtures/disc11/CLIPINF/00007.clpi | Bin 0 -> 11488 bytes tests/fixtures/disc11/CLIPINF/00008.clpi | Bin 0 -> 11100 bytes tests/fixtures/disc11/CLIPINF/00009.clpi | Bin 0 -> 11216 bytes tests/fixtures/disc11/CLIPINF/00010.clpi | Bin 0 -> 10904 bytes tests/fixtures/disc11/CLIPINF/00011.clpi | Bin 0 -> 11084 bytes tests/fixtures/disc11/CLIPINF/00012.clpi | Bin 0 -> 476 bytes tests/fixtures/disc11/CLIPINF/00013.clpi | Bin 0 -> 1800 bytes tests/fixtures/disc11/META/DL/bdmt_eng.xml | 9 +++ tests/fixtures/disc11/MovieObject.bdmv | Bin 0 -> 1158 bytes tests/fixtures/disc11/PLAYLIST/00000.mpls | Bin 0 -> 280 bytes tests/fixtures/disc11/PLAYLIST/00001.mpls | Bin 0 -> 258 bytes tests/fixtures/disc11/PLAYLIST/00002.mpls | Bin 0 -> 1542 bytes tests/fixtures/disc11/PLAYLIST/00003.mpls | Bin 0 -> 240 bytes tests/fixtures/disc11/ics_menu.bin | Bin 0 -> 6081 bytes tests/fixtures/disc11/index.bdmv | Bin 0 -> 132 bytes tests/test_disc11_scan.py | 69 +++++++++++++++++++++ tests/test_disc_matrix.py | 6 ++ 25 files changed, 96 insertions(+) create mode 100644 tests/fixtures/disc11/CLIPINF/00000.clpi create mode 100644 tests/fixtures/disc11/CLIPINF/00001.clpi create mode 100644 tests/fixtures/disc11/CLIPINF/00002.clpi create mode 100644 tests/fixtures/disc11/CLIPINF/00003.clpi create mode 100644 tests/fixtures/disc11/CLIPINF/00004.clpi create mode 100644 tests/fixtures/disc11/CLIPINF/00005.clpi create mode 100644 tests/fixtures/disc11/CLIPINF/00006.clpi create mode 100644 tests/fixtures/disc11/CLIPINF/00007.clpi create mode 100644 tests/fixtures/disc11/CLIPINF/00008.clpi create mode 100644 tests/fixtures/disc11/CLIPINF/00009.clpi create mode 100644 tests/fixtures/disc11/CLIPINF/00010.clpi create mode 100644 tests/fixtures/disc11/CLIPINF/00011.clpi create mode 100644 tests/fixtures/disc11/CLIPINF/00012.clpi create mode 100644 tests/fixtures/disc11/CLIPINF/00013.clpi create mode 100644 tests/fixtures/disc11/META/DL/bdmt_eng.xml create mode 100644 tests/fixtures/disc11/MovieObject.bdmv create mode 100644 tests/fixtures/disc11/PLAYLIST/00000.mpls create mode 100644 tests/fixtures/disc11/PLAYLIST/00001.mpls create mode 100644 tests/fixtures/disc11/PLAYLIST/00002.mpls create mode 100644 tests/fixtures/disc11/PLAYLIST/00003.mpls create mode 100644 tests/fixtures/disc11/ics_menu.bin create mode 100644 tests/fixtures/disc11/index.bdmv create mode 100644 tests/test_disc11_scan.py diff --git a/tests/conftest.py b/tests/conftest.py index 179ad8b..b2e07de 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -172,6 +172,18 @@ def disc10_analysis(disc10_path): return _analyze_fixture(disc10_path) +@pytest.fixture(scope="session") +def disc11_path() -> Path: + """Return path to bundled disc11 fixture.""" + return _fixture_path("disc11") + + +@pytest.fixture(scope="session") +def disc11_analysis(disc11_path): + """Run and cache full analysis for the bundled disc11 fixture.""" + return _analyze_fixture(disc11_path) + + @pytest.fixture def cli_runner() -> Callable[..., subprocess.CompletedProcess[str]]: """Return helper to invoke `python -m bdpl.cli` consistently in tests.""" diff --git a/tests/fixtures/disc11/CLIPINF/00000.clpi b/tests/fixtures/disc11/CLIPINF/00000.clpi new file mode 100644 index 0000000000000000000000000000000000000000..3cb2f614636488f7db1267e3eb2d1baf7140f491 GIT binary patch literal 444 zcmeZp@eMODGB99ZV7LRs-xwGeO@Md@kc|#D0L2->g3-MV46Nn~=nCl0muv6R4k9o)LJUI4XN!DN^i1O!E;6M-RMfCNB>3NnZ`7-kjZAqj)R2?QE| zx)}uo8CV!382EvFJ|G5$8`B9O&BDOobdrG~hLwS_=_CV_Mk)j2p;HV@Eu{?1Os5!F z0jW=(Ooxl literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc11/CLIPINF/00001.clpi b/tests/fixtures/disc11/CLIPINF/00001.clpi new file mode 100644 index 0000000000000000000000000000000000000000..be8e532cd7e46a0b6a992f0f52be34808dd60785 GIT binary patch literal 560 zcmeZp@eMODGB99ZV7LRs-xwGeO&A!MbbxGhumLE?2o{X)ZD8PD;()Gz?tHlh51{k$ zSu4f>b}=J^0GQ_1oe{(BY!6~v!DN^i1O!E;6M-RMfCNB>3NnZ`7-kjZAqj)R2?V|X zbu$VGGO#dcFsK0ed_Wum47bxjnuUSU=?nv-hdu)n(-{UPp{WeaPG=dI*JLp;H=Si* z;T2+FIdqPJ^+O&5E7Lg!HotZTHmCCp?6;#C*qY8WaB!wEa4=n9;4(fdZNR`H{XqA& zE=yIn?t}HxdJ~=(De!yfE9S4XQj)*>Q0bh|ROJ)lOe$~YZ&rQwCRjbxCsX6_nk+3P zULoz0+zOj3=N$E%^=IlYp770(`9q#jl3%;=q4lp!l?6o1JYz11$FEJ2;J+O$v5zxN t%O-V}_MF4MGQZ_ZOHj)AtWZ_|6X9F0zl+LyZ~^_s005&g3-MV3=DY-&=t^~FW2A!bUr?7 z#TdXYW@He6(6j#>V4SmND^N=oOooL)Ku}aV5f}mnNC0H0AcJUwVOBvNk}xQo7z7!C z;;DJ*=;A^Qq7#71G0XvK(E-}VC?Lqd!ob161myDpu?P^S0Wk{$gF`w4Lr|~#4+fS< JAPp2_000QQBc1>N literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc11/CLIPINF/00003.clpi b/tests/fixtures/disc11/CLIPINF/00003.clpi new file mode 100644 index 0000000000000000000000000000000000000000..2fb99ee6746df5b149ec2cc96b4fffb8be4ac279 GIT binary patch literal 292 zcmeZp@eMODGB99ZV7LRs-xwGeWq?=#$VLYnfa0uR!RX!w1_m~CdHVC^8a#l`$7in? o10zV9kwE}L&;E0OaSn?JP)G?T!^j}QAUZLtAdkTS2_PE^05{AJkN^Mx literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc11/CLIPINF/00004.clpi b/tests/fixtures/disc11/CLIPINF/00004.clpi new file mode 100644 index 0000000000000000000000000000000000000000..c1fbe35801b5b8e57ce59902f4d8dd42b3fe9237 GIT binary patch literal 292 zcmeZp@eMODGB99ZV7LRs-xwGeWq?=#$VLYnfa0uR!RX!w1_o9KbOm(h%QbiaosZ92 pF$PAEG$Vrmgr5E90OK4M5ulI~Ooov`gh6y-RzV(v0TMtq6aaA|56=Jq literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc11/CLIPINF/00005.clpi b/tests/fixtures/disc11/CLIPINF/00005.clpi new file mode 100644 index 0000000000000000000000000000000000000000..5fa92bff65dc690f81325f46c69549944c48b014 GIT binary patch literal 292 zcmeZp@eMODGB99ZV7LRs-xwGeWq?=#$VLYnfa0uR!RX!wAPvF;3*;I+fX>I~1~CRk mkTfHM0EC|X=K$jz77?J35=@4XL4-kcVpc&Og8>piHWUD+&=3j$ literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc11/CLIPINF/00006.clpi b/tests/fixtures/disc11/CLIPINF/00006.clpi new file mode 100644 index 0000000000000000000000000000000000000000..14adffbad187f0d37eb990c720c00d2f213bd560 GIT binary patch literal 11000 zcmciIXHeBp*C^n%&p|*$rP~0hBK`E5yg%u zu@}UGiXx)eQL$h{lzZN9=Kb^Cxqt7T$voLBJIPKmJCm$LDbeF5UUyxtGXW9v9#qUntMXU+eX|Ey&Tj?2l@Qd9mL`;Y$~JroAB>TQIY@Xr6A`#vp*fYXJyNrg<{}$sGX0WIzpffWUeH z1j$_>Je&^1%)4O5T?}TDd(e;W2>nc&3#-Ar;XYV2bb$roK3IAk1Ix^2=>G|UWkWMq z(e{ItU0=JXal#6D`2>!4Ln9}ff0mf;As^E&L+L2+2BHG2k*U>;F8%6qg>9w zNXc^;9lQbD8lHon!#;4&d;xw(%fO@I1q3*|f@ebq1SWTaS7rwUMLL0Z!%GN$RR*I7 zFM-4_0-wy6Kp{Q`pN3aJiFgdYgjYZtd;okKUIX3c3iz31a9@Le!y8~8x&r}(H^8zg zgusTk!0xGpAi`VVsBIwFROi|J1(M_)@b>frvPnVAMj$u52jLJ~pk%%W5hod_nVld$ z)dSRqPLSAp0-f*yq^?3>WPSj-Vh1o9K7zdZIWSEsF*>j$pFri52yDV9P_z7iZMt@v zDYn3obb;2P7Py(8LASC7c!bZOXTJx&*HdjUW53xtH(gP`FHggH$FA>k{8Y3U$p z_zGh<^&pmfgE76|Kw@%S&>O%A-4G#404%c`BJC!ERPr671m8eL_zuzivq4Vy0Wl>Q z$R$5uJaG~z2|pp$*%nlpKOsJ74yYP_L458SP@7EXKN&QV-;mH04_cFn3CBQ3=z*kw zY|u6Iz+{ab=o|jPlyWT?2!9~isR}|Qy)cbA0zxx;VTOem!U%t1MvD-_8va6x-CPLI z{0FnVc`!!u4^k(*hp~h{m>seU#%A`x9G^!p&ImB~@=X|r1I!D!4v|CzX+b9-%1D6p zP(4KB1X$#I3t})LEPD1C#+%HDBEfjv3^KZw!32{_XYPSmV?S7?dI)h?KUmI~2k}O8 zSn<~t;&F4x#9|?VXaQLg7np=uK(_oaOfp(RcGVI{G`WgX35j@rSXJ^Bl1%2hn~oK; zg51_qFokFZYc0EA3O)eVv3^0aaRB6r%wQ^J4f)HQVJdD71%?qY4Ic>WJ9fcz;y@^r zH^U6$ASm*2gqiptC?4hvDa650JZ~1v!Un_Us0A>~Xak$;4UlSbtMo6-CfdT*PA8aS za+}R#m`k*S?Xy~7uF(#5gf4@5Mtj(Ko&@u7d)PI)8PYHZ*rQ(v3yco1H)1g?z#U<4 zJq8Pjj!-spEiA;GpsaNoEHZgOQ4EWTL!f+1A1ua(K!w#R$S@9tN&z31n5;r+u#`9q zsyY&2DLxFUtzN-0<8U}Kd^0S^hC|KtXjnlU0Y?w8VFfknYc3?_i=?Rqcfaz zD26QD1y0UC2H8XxIGy+rvN2aUec=q`5MALc(GOM;M?zhc1*|fTgmZ(A!)l`&)L&l# zt8q6t&vk`0m>V=$oQ5? z2F17!+#Tr;n~bC3-tYw2jE#o-f;!lO`9iZY1-24>;Xzz7Y{mWH;kpx0g89LtPGWx8drxD-aAdv=LJ-^`~MuX4#V^C?N!B@9VsKn{;HMao{ zne6ub0aX|Sy59xEVIl*5*iD0KA`^bDvWIFT6Mjv*2uF-8=<$3CH8>l34eoG^$cBHa zS~zCpK%ZYe)Dk%etRvt!k&94GCmhGPh~OCqCyYE~Cfx!jO`2Prfm1|2GH(up(VzjIIU_=#6$?k4_QmkjBv0i5ZNxE% zKl2#0;bV|M+z8L`u}CTCA=fXAf5ahyu)LVe#RhpZyb*d zHAZ-kk4GV{x$wa_0fo8Lz$YvgjiE$BmoXNNGn2w+VjLQGITJqPaVWBXI(#w4qp0Y7 z_)3gN(G&@MBThsymn-2LHW7^vYK3lN0-Dg*3*C4Eij{@K58@;g?}y+gHVGxj?BS;| z5hc{P!Y`AFu^I52n1qt7ZQ(bbgeJ$%haTf(G^P3%^x%_Gvinr%B~C$8KP#aZn}VjX z74X-XjAk&6@DEQ$DT#xik2n>jG_FQqGS&Vr0(=^p9dZyMY#N&5>5d54bToI_LPWr) zqj{1U$c#7x&2PGk%&-|K&E_BKhtEXm;S^*+oQW3sOhOh|3R<+P5?LBkP=?PC)SoyD zWxTaURwkFm97k5hRJ6>Miw2lnZb(Je#@T2^of)#mXQNCPG8%-Hss_m5oeA zKExGh|A3#!2Va2>1Rp@7jhU$2?jG{RGEv1S3i2}=(ZR9XkUwTbm0?XN0LwyEgn1~4 zn1!l`4naZKN>sgYFbXzVL%4y0@oZGHehVTKv(Yh5A0iub(6JUhqTo5`IO`vxVyn>c zpE-zT@}%$-qGPMkDQyN~5Lctq)QgCT<)Sltz9J@`i_SV%BQ|jjs(Y+MY-|lW7aWH; z_*!&cbqH}yHVmAFc-T7B&_zOg;yQGZ#6^5O4_$JafCMHl`&b|$o{z4C(vb+uM^}d` zkQggK*G^X;v9SPM_l!UoaXq>@`WTX8>rvxiS0ptSqQ>|DB*P0)Q>+Zhi5pN;V>?oq zyc^bv6viTSkA4yx4UK489G$bwy|_wjI6wScb+Cx1;wK=4c$g19keaP=s*@`rz~mMPfVA zNA5fnMcj!##f?N!_%76SBmhMdccIVj%_s)jjlTLNpz+4ts9U}gjmP((?q!iEmbeG~ z2)}`1jiu;E+g%igm7-r3VJIHki+)F4K=Jrq)Pr(S0&ySub8r(%Fz!RW{0cM)FGK$Z z%tcAqegY&WqRGbn1j4W`GzB|AAW{p_6#M|e%-kO(rF3WB9e z7@9$>AXxdWK{K#}1gn)p(MMae|VjVB1B6(i9K;z`2j zQxnh%{3O9|Ks3t4PZ9hLrk-G@2mwQzQI_#EA@Ig&l!c!r1Pz>lva!j(`0M6}j;j=&n(hVrm;1P(S6 zJ_;~`~y%()Fo+k*bm!d-a0zp`M9Bm+8Ac)L^QIWBMAn}Vq z#l!}Jbk+@2jNt@ndm`FI#0hdr0NR9KBq&l>pv~Atg3_!QZ6#hJs2X>nt=J`k+D3^= z@Jj@()mXHRc$uJ03rE|HmkE0Jc!lXLTlv;7S#@`Bhx*s=vD^-QCEurZr@;2-aKU-j z1L4(G0=Jrn)5-acr4(V9iaKJ$5ZacWarAlI#d6A$cxK_JORQORN49P93HH-{XE^I# zRB~&C)x3lSJ-qHcv-oXq=Iajy9tpme#&NsR(B+}@I!2A1ALo^Iqe|w~ox~U^^H=mQ zdZu(Y4b`Ev{p?5SwVd9jcHRU(U;g@>ZNkCddq^n>C&`Vs^QggWIra9eL9}HRQ|Z%R zE@BM#T*IgwGmxpzNoL6(+)}OK=co^_>)@`r_m8(L$d`ZFhzY763Jlvl+F-EtjwE;T=4) zjemad0sZOZu;8|{k3~0ZuDIVztfwSxNTtqvGmloteJ#t#?;W-0WokqTKaf4_&>cU4 zRiVE$c^tQUm!7xkwm9&eutl(CK|`>A*$FplPbFEYwxM`!xgz=c_#w8^%7Qj~Y$TnS zC6paKTf%r?^OxB)^^|h?o_?x6oAsKwrBAf=AE)bGV>TKj$N!3=hS-X)tsIXryA!2$ zoa8a>SuNxA-xn(Cl2$1%o$84?XYZ-uEdMrs>&H8~KQV!Zm@Ah<=C}&Qi_$wK1r2Ag z#e>I6e=qndSG8SJoK);kSyn$+FLV%UuBE-=4}6lTpMlX0Zx0#7ru>MceAyc8>60_k zuPi^gbZf982cD?28?K0=R@R6gc3Dc!v)^N< zbM8uy-Biiu4#eeMi|!~*`4d%Dn7wAuc`wavn5tbT8Ll5tzR?ivG*L8KOBX#_?Iv!& zKUz{}?Sjoz^hw{<_Lp7ywVjd0sb_vIIqe(Y`;DXH-_ZDE9@6f6dseqR=#75-tSrOh zN5jQjQG%qTd=1uPH&MpR@Q|N;dP+G!@QuB2m!Fz_zg7LHf3~K5e335p`UQPGWwK~w z2_{}joFplVE~1`3bBcDy@-w|fcZqRt+X!Y|n=>od*_J&y;(N4LL8)dp+|;3|YxNWF zPBIh)%@I}Rt|9lfYcWrDvUL6Ksj`3lCo5v-993pD#j8sEEi}UlL$uR>rs}RI9MczX zV;JNQ?~5h`WQ%VVO_qH5XvBVL?4Au9- z8bYsM7gaMyh?l01l<>|KV+Vad%Z6>fCr`H!D;}k6Qn6Zu>Mar%&F_k#x=6dZ`qadi zhV(O4qVL{3$=J28vD)tMGKUH86Jx~n|_2H$wO zX!Yfr;46@5dH*<_V(R4^%Bw*q)T4{NGKth%&&KR2E+kJq+6oB#U#Bz+e% z-tcqn5^=;|R|y4+#R~U)mtL`WAjjq=C`unEs|XSobwb5b4Q_i==b2ulH$MAjcp*P5 zmQ*c~taLm^f z{maysiCLUZCl!@8Ks|DHEvK_;H80xcF<%;zA4^yl8n?WUA$mTmMIvqw!FGi%lYYK1 zO4d2hOx`^1q%!3VYgqI8mFTg4p+tS0jvaJ;B>j`K zOFp%0wBl;SV%6|^Om)3`gnDsckmmQs1YOkM4E=$bYekl=(?qY_1I0&^y0PE~J<>cy zvFy{yV1;4yP37S&edB>)+P=77ZM}S-d9qzNE9~jZ{57T2|2tmqx70V1%*C}r`@{&kx**~t{V&YT7l#9DXmwjBtX;HXjXhEgq!Oe5n9s3;VnaH>D zfhSKWJRFKy1@n)wKR>kKPGo-Jm2SMKd-cu1kdXLMlzrihc&A5-q_1#+bP>@{wkxUs zsQWj^GB@<+C=W(iMCI%Wk0A^?K0aZQxvt^eP=jYwh{$+-h4=;6Rq{T68g{>Is$ElT#aA^y(`Wc)8Gdb!5=WVF!w$}uV0Rih z(nq6RWS?f#$sZkG%W`qSRN_S~ocfL`9*8^mVWmnv;lXd=Y*rZQ*_J~T;U6(|N4%}{ z#gz(qT#!OhUvxoP(!5KRJp8x%WmcG`rr`>2w%J<#^Q5(ccU3D5&wtJr$4=ZYId}B~ zcEawDv^4&+?AzIJh1HN+B_Ua+l3%~4p6>fV^RDoy_TIzvz^ak{f{ci2;ro+c$(rE_ zl!F-z+OVg~>FI(x#+YSm6r}T0BJOrGB7Z7VR2^H-YU2I|XwStZ>s>EY8kTwW7d=~d zLL%(qVFjV~()M#taA?x4nd&i`)nrWJkY1K?{<=@+-iQt4EiR1YM>J~%lwlKuoM}sh z@3)>JeQoy>-}c==c{uZP_|cleu|Zx!d0tVAqWGPVW#m_@`l>=Tv94X(b9ui6u6-rK z*|YYMp0&@X2twVcI~ts6eUx#GxIG)0=j=Ib*Q`{|((dP)3rTZz!UwbUd6F^0rkXCY z!OM$sxac%(kXa+0HbuvXympuQkgH=e55D3QkNC#@v34Wx?p<8Bewd$OaBhWYR?ly8 zn*Nw1es@jyZJQa=hlxb`ofGq!0=G_OL2iTE`g?#TG*+U$bvs*k-}8syeEL)p?_Dr? zwx(W^bI_A!W;acixUiK`_WUoilk$v>R@rlw^iVXd(=PIPPZ9;&H7&xfvrS}@=Tk}I zn!(f;z1wBjOm{}<({oCK!JVB@pQ^@#?{jZtskOC_ss$8Pt+4QP9O;W+J|(mym|ATe zLAS~H#*jWsQ%sOpvRZ07)hy3A?&hLK-tT@h1yN~chLWcNr1R1(6hUntb?2xe+TTrn zjPVv{m}k?+uwFEWv46AFT-%&K+&`@|`RO{AAa&by;rK5S(N6sx^8U(wR1X^`?5@n4 zHgD+!y3;|N;rjhOlOE#8;_uC7Ge527L@Vxa6E-M$f~P+M>xB7&zTG$}!;D65P5MCP zU0F_}+w7qSN1b6X_uOWto84hC*a7TCy9RQ`wV&jAdNgbOQ?hmCcjoGQf;vdNf=u$s z??g%t`380DtV6UrP2CI@39g1KjWqEn!4paL;d|H{ zw>dIJ!6JDX`mQveldYQk;;s5hXuRgnp_@9J0j2u9xekU8&Gn*d!#;}lO)8SC*t;G3 z=d@B5oBdCI?&n;k?WFPS@Eg}TjR8*rg7W0LyuJWI*W@K6!|i9{Dp4gi=!l9o%l$R| zcK%Vu!FzqoiZBb3YL zBpi~LUDmQZefX*=dC}^Qe^0fN8E15R9!%GN$LvItj--eiTvV7x_F8G?m&vkwah?k7 zHd$FHe5(3dJy#R%9;wCG|I_#To!K{3T05uVTMXhsq*Hgvd`W<0^-? zFIG(#*Qs|FHgapWV&x8Hk~|qVS_yaf3q^=8?vhTAvvzvoIsbjngkFnwz$& zBs8{q&!#C_LQlSKQUY0zUm7Cv@QoB_u6rtZ@uftHjkA=Mp8BRBxV%*+tgKKqyo=L# z>fE%(8du#5r*i$d2v0*saj@vu-{q31$x7_hZ422@Mx}iGHj1K!;LN%w{}xr3|2&5K zZ`Am$GX_oQd8mwwk@XKbQ)3Jp?wT9+C?<=#YCD%Ur^S~pc6`97TTr0rxVn|~%cX{s zy!1UczP>{njDAlTAf3p+menUze7{LDqePO*W}T;aJo-R2^1snKc6u-*W>V&!BsH6G zIg=yvsn^tQzRP#$pRS*`@Veo}`x#;^I-j!g29-vjNa$fD_Kdwf{>+wG20P+%CFgih zEBEor4&IB_EWt$n65){@7s$lEUW%10obo#F4=wRe5`BM6G~>y6K1=C`*atS=)AT2P zYL&D0{}-xu4J4|5?c{U@JK7c~dpNI`Vb%$0_tz zF253uVj9Io`#UAyhvrDfu6CEz_GlCiiG!5m8dtNMgBPfe%$Tg1RW8?lu)nLa z_vZu2l=BUh*!&ASx1x_m_?AMS9bUqCcC1bXvk1(g^B`xwmn*%k?zf<^OF~&)0~E@Vzcv?n*c_!aNR zFIPcCRFZJZ>78T;=Rk>b(ooE@%3SLD=e4ZA=CwTMM783z#}t)(-BESfuhm+Mgy*^` zw_^2|St~`ON?(X`Y~v+wGT2hZn?~8*uqcJu*%rm!-Zx4kuR@Ks%efQ(b!pRdF1n>V zeD!}Vtql(~VWdrYmgM}#$CO3(_0%8p*V4y5xWp)D^=JOsNK$Ej%vWEHbI^{y?5$fJ zxKsabBSED4Q!d^-DVg&Ax-)I6e=vPkxd#*w??y|DvXpgGVHdw<;Kdh~6|D{{)K1#1h zBp7P1%@zGHJ+BQ~v;)h1#gR@SHPW%guNWiihWIRXe95YrQ^6tKU%_2ZZ|B|1_ZC=u zm@atXGhA3b=^g2QWheRk&&|}}G55V@AGf3H-k+s^8kx%Yk-Uc4P_c?l9q^O0dnT2K z8dLc3!3PBA3qA-d?(~or+TA0+S)4!}`?8fr8bzUfPEMdd-nER8+ah32ab&RQW4EbB zmbj_@JfEmZ3v1Foz^Ch(G!(bEgfH4bm`5%f*Cr|4JRb{bYm?RsF3G;_m?gi^I+D3` z=nz)#!oi&JkC$-kxF2|Z+oJ>-gd4)iinAoi`Yq(@uVs{j)NE=_dJ64(%Q;2@r;mAT z8;@1cqW6t+8tG@8McC6{&KvCj8VaGXZIb3bpBxwCG)I$dwb>osh6KZrSNiR2r0&C0{PlPcgm(C z#Z<+63Qgc+A^kV$iQK%bM}GI+8f9oGU3KJSr~2hkg?7~9PyD^F*9iNC29uIbSCB7y zMo_)h7-(7F+#Ih&S2~sEU1Ww|DP%Q{KIRvcOYqO@)C6>C3xW)Xo(gvjb|u}94n`k+jU{HwYv*|| zf4@vs%?mloxqm*DHzdG{zj1wu;QQ|s(U^og;^J#(#j(NDpUd697yjzrr8FA`7tIRKfW4^JJ zt1(yduFRV(@Ohdl%$BbtNtZ>6UZ3caB)Pd^mvZ*X96L|SBg1dV-y4@GUEA)ewreDu zKZlxl0*f$yLcCEwe$PS!>)k@p{-_J$`a>a<11MMOG~HWzxip2I*4`!mu3o_!dvFtb zLiYx>oL|A+yy*q+=FcdBDn3bAeqleUaKK#g+Q@Lss&2A0#@pQc(E72=fxi~9M2U&) z!YeO0agb{I;A7-1DPOE>9oD6PnPM0lMWqyY-vKeKOoQtsyI2!XyWl=TLvWQp*BEAIJ~Z2^2A3Q<%Me zYgB@jL)DC%ft;Uq?=<(uY|^eTj?ne}-DgOd5+Z86ep-C6f3akN;WhT==oQ%*$6@kg zX;WEd59?JCJc+uzbUn|>Y^N@3@=(2W$9;oM>pD?BHe1|P-Vf6cnklWC^GrVIVU1!I zU#GmiXQMj6B25#YxIuZNOGyOMkZ>_z~5Bx+FEHwy(ZPm-j_ErfLW}KE@ zo2VU|)S|0>IN0Ez7-_h;bZ*GxQxig8`2~c_ww{&l9S|)iEdDBQIC)c%@cpB5wZSQB z{Q*kMprOsPnlz&R^%A&wfTs4jcgNt z%}k+MzWhRc<#(C(EcJ_Q`|+Rh;8$(TG1yENY4v{g@cZc;i{ZC8&y$|;#La*BkwHiJ z?p3z5jf7-GA>{E9*CV&zU}x%-SbXA~>9klgR+^1^}rl zKUo0o50vr$ZkLqvkTQuNsx+S@>w5IRJN$o-t@5SH-T!}Y79pDjnq*~T1><4U|I^P{ zx%bM3VAB7nYxZTn{wK2%Wh&{vb1;~sXJkG{c}D)TGd`eP!+JAHZ@qhA2 znU7CP{NH(fFxsf>{(r3pz%5R>H8e>NFtu*gcgl6>0O)Q5P`RR<#sJ!{0{ra+q?E+Z z15*1nP?=T%Dh1a7qmf~P%5|79m<|)f*Flw$1!^jtpiaj?y}c7O809cgr3*ARt^y5l z7ibyTfTl_}Xse1qOR0{1189qHfNoPVXcydoN%q@8SLG(?8%beO`%N%R$_G7_TVOc! z3G|g3OL5RI=m8U#I51G@0aFcaFf6zYlmE)Vu>CfeEsOwTmD^xp`2vi^cfcZ}4onK} zfR(5POjYiJ)rdDtR%&gr0nEg`V6*Epn6>wUtxq;si2J}^pAJ?kec;IN11oVqI2QN9 zl=gmbCa(nR_Iu#sUkEk@_rR5=0=De~;I@?wb}9qlj#0tBeGoh)h2SV21hR?@oK%K@ z{52n(+J^u)=mY2W`#=>)z@^|m&^Xt?wcr8JPX&N$`vYJY=z+UZ7O@#TRQ?6lnqu%Q z_!l^ax!@%p2CnlN@M<3hp2|TWw?72_Y6KMVLlEGxfQui2aH|;b_DA47wGC)0k3j?n zfuS-2g!u?C3!Z?4`32Z2Pe7_`4D5oZAnm9Gj?w`2X5gwkgMi*uz-@m9L0am-D;R}f z_@Dsm*sQUHbSMUaA>D>is`&*c;9RUI2w-9UI z2muA}AhzHT1gX4(xihjLsNg-!)9i*|@q36PV-Vav264ZmK&CW-h=Y)V50E&^3_?{t zzA^r?$talLJ{u$B@ z#^4|E7f5gX01*XWAj5S4B2~UZMpq5YRGJku4`vp8gKWcWh!TH;#Uc-wCH@Xe_O60i z1>Ye@D+!|8e?Ts_9%2f9!g8hz=7@j7ikTS9Dfk5|E|W0Zz!mE3JK!hAfLg9MDZV3GbDh-fNKp3aGAvZO(d!jDO1nGlC?yP_xuPFR6$a3v z$A%3GLpVz(LAl%z&N+oc1!e^2HXFbu!U!&?M#5&o7%ql;!)ApsTvBm^D$E4h$^)Q^ zFoDbH9c)pULi@W)*ov8g;vZe8mYc#AwMeK|Ool5Fj!=tDhHHkep;m4N*G{R!Hia2< zQbu9B!W_D$Y=a$2yR}SVr@{hmG?_ykVF5Rt@53&+CER*H47(JT&@v$0`xMsD-yQ-7Fl!hHJp%{iHZZ7Z1qTTm7?RQ95M~Sa zQ-a};+!h`gpyde)l zv%&@5G?l^`%mvjw72YSN!dba1jHy|{Il>J-Je9&Zxf^^83xo@p8+>-ofD42> ze6H++i%P#*^5CMv1HS(L4432{@ZEbCv=N^0Bj6OYDLmn)js{#-c)_m=MbM6U!MIl~ zCG0$o(4A*bfhuy7ThA}NJ~osx8w|@mD&qE3I@`_bKy3@L^`*7mDh@i zCPhwxI|>%kvzP>TtEEERK-j0mesGCJpdFAwX7tgfNT=kTo|0h803& zL#c&_N^KpC;gP}{*)@EC$Cx*=*BO8j%m+DaUIim^ALRIt3OtdEkkf+)@I)a(&U$6= zj1VDLvnlXQE=I0-?l7tlBllU#Ym5=d{gN8IQ0l4j9bPDWk>@}myi`io&4SmM1X1Rs z!fUw%;Tl|cOZXw0<{NmA`5^|W1Ktx-#7OpqF}W16Y-Ylk!XL2;JmG^&3FGDPl?X!KDmUSqJQ(>@_P}>67>S~`!w*b` z#E+N44?>0rgVNz=yQ4-tw242R&4Vk!z~wS>P)gDf)< zD5jxcTPi|IWyV!V1)GjSD(#Vqd^!r%nTIA2VQ3odEmFh6P?+&+q(;m@VRJHLX zM55Wtw;??u62)3xM*7%HG{>|6=__WUxkL;ykVm0;vQlJ7M4>qR5i%lXq4;!9WTcpd z61sT|p0^U&g1t;iOO zLph`&WT%Knxz-BgK*Xcv9v#R*k${$uWg#al0j;o3N6uIxS~>S5a+W8ee9Jq?6`PM% z^;;rWVm?~!XO7(D3y_>O2YFygs4z7Oc`7ZkSb#j`$*Ac0U*tt3qxJgzh>WG6V*gM? zmZzW+<6Vd%Per9isEDFSMP+)0h>E45jijZBCSQmuX52+|#X_{%?mc2)>1cC_2r-pb z;U0)7Uxc26U35@L(d?pKeHH?bJ)of3_F-03k2R4hl0>G3FtSdLDZ*dZB~hfZo4p%8fS^k4Gk2gScNXoDJUFUg)V80pm1U} zx|G?4{*kXnmqqsIA4LJWyeAq(C{?%!P$VWtiuE~YrqU}0d^A(O23_eJLs3evMdhMd zSRuOZ=z?Y`3Q_0mO((HGk$I(3bdUU7zH;N;yGCt4&gN2BU5&>}?z8VzYgnOFsSflWi1@=fT4@;g6E=_{r^ z$|g3W*F{%Qwqi4Sv)~6>tf)lqw8BviR*A+e2T%@Cg~l>|qowjH^l<_UCU~NhRVJD#Uh> zu!v4nsMtxGu*D9o#deZZ)wNI&QAbkO@j>epbtH{oGFp%AB5AbNqxFhiBrPyO#q!-G zZF>>MfRuN<{1mEn56uK@Fd5KF%|`wsa}`rGOMD~!Yyo-O9N zjO+0R_<8(CC3^&&gPVl=O>(UNnN~reZoG;&eleq#(8xqURvi7%vqHvNx2H^(m=(+~ z+j3d;gX!!}MiwVGbthMAi#hlE(3+qQn?_IS>T|+1_tUKp(J=}y`WQ|eV~IWgJSY4j z^nHcf{ONxm#xZRf<*d~kSFumOeagvp^X8hw=3+B7HA=5GB?l1p+XJgA@u2)ig5YGYYqFPh zt3%ce$jK}tsgGe)lStm(PwnG7)7lDu(@QUWV|b0znGH$#Y>lB${?BcqIQtXN^X%^3 z=C79Gf{~Vfve+e#vZwk7m879f?Fl?b%P*baaB|d@ab8^I*RgdXTkWrmBVQQ7ZMnUU zcZ+7lUzsw;bI! zhn}a;4esveIa_StTc^wrXf>w^C#ZP}|AxPzsO|bpdGg@|{@o|ru6JX<{mn-;j)7CD zPMW1}{SJ3NlUC`|*=2KTIYo`gtpH~8mW6civv)cPsQ3Fr68L@O*y3JFzzw#~FP*P; zUWo_oT`n!44Svs}7m-&o%wiV#VTYFc{rTy}`sQEg@?`TVPQf)zZZAzGXm{3Ee#xaY zL8aj%p_BNkx7Sv-PZ>tV?<}mKo;!7jR`jcuUM@Mqh$-)2?s{p;Iv^?Z-&|hq>UgO# zpyl0R9y4a22j!T^(@aI?r9bVI@Xz)xis9FM+k!-UYHcfps4(brXi3~6+1={mbXd2F z#TQ7}z7+wSdj%x~maq;nQqxAs)+HvC4@*{Ln#2@v$ZsY!y?g z-*2TFPHm$lH2Kl58vbRpMgCzP-tnI83LaoIw}tFa0Lm zb!V7-z1*x1$md*2t$ar?=Ch_Y?FX^=2j~IbB-QyNdlwkk94sH|L$zQs<8+y9voR zH8|Hf4W_CSKlujv8u^WG{~orq{H0Gk#GM{0=97l{TG-V;@rU33N`M5|niR zIp5DVL6Exmo-pxNvG<6uhVozo3BNM(g62#3(d+jwWMUH|Sjt+Af01HqK(_7(mm2KL z+jKsPf7+}^5a549c;&DMdH35m%1XQt7beoG#ClT4_f}f6goq$Z3lX zoPn(iGVuQqTz+DsY|Oloj29fDxL>NGy!!JR|K!(CbJ}r_&j0j*adt))bNuLbHbt|W zvop1vr+c%LpGL+6H_PvlJ%2}0HYD1Lg7^Lv{r>kekwnD#4%Bb*W2+8JQ)ij6*EG6u zKI&f%nwB}vzto4zo;$LIzn4W&LIyf;iQNYLYj`g$;Y<(xpw3&y#d*J(3%8P`{Jt92 z8w0WHq$0BBdPmVo%fgMD7f?5uHrsz%`k68P zK9#9&Fvc7XJp)2CyiMK@x@vGfHG#Te(-qq7 zFBS~Lpm|J-J-V!7!)*5b+*@4q_%LsU$b-MQ?6xd@L=^H~tm+f8ca`X~$)(4ORvjT>z2ZN$j_65gJ=gLBM<%Yz+l9E%HGRlR$QTXXc7^S+in^Vs0jVxlz64vJ)p=&0khv;FcJbe`-S&lWrha$kMudri z()OzJBfd}eqzjz9^fIKvreo8|zQYSCLHH7z@gxN`_l6Ozi)ruhr1+WS_0v)20h^st z`RuL!jx{d+E!U@To!I?6VVMr!WyDHAW>g9#>vvmwKQy4YSs$g`pKD5uyxu@-A>VQ| z-DKdG^ZS+bUh-Q1_NEt{4dW_2t!Pbt%7q%i4eP~Zk5!}OUuQ2;&V1WOrOlZ|cs98E znvQ>#Y>D5={C3ll^~a)({UTM!)wx{B{b7Rfmn?M@Oh4-!qW7!TyDU}YGyLxZyAWBn zeddl*hvHAojuo`c%(SJ2tXGe$UCx*eahA;3$9;Bz;1iB-1>|H*Xm)In91WwC_^F@q zCrydeV{hzfY0j_cuPRP31I7nglLa-bF9k)M%x84&9Z4Fmv-moHU(XSt1D;II-c(Pi zeN>O{raY!uZ+%G5|6{;76&AznI=GH4nQRu2vN$Jj^S(XBR~R|ksoX|8&Vh2i($Y4yqmFviDvZ{f8}CrjEMuzJwmbV)^!w}eQe1}h*qk!y zQ|_$wvAnP$Lw>4DhTxyPLZRA8T-f}wlw3zA`NS?dg3oVTMV+q4p)HxepYF6PjNvu* zmGRCgoY@d}ktNt{;Nm)bnPcQ&&-sw%$9;XKh}Wwc$-m$mDpHJ3*U%y_T>Uwb!EyjrOjZC^NG1)QZCs&J<9*S`EzjV+ikfKq>Tb1^nzok`Mw!`qX zP!V^VeDst$MfCJD-Z*0e^~`QVTGOlh^h19hXYNcn095AtX=Pi zIWX0c^Puztx2E$vU(-ET7PaPJ$cB+8K3YVwD5ZW>EFHZ}b8xDl?<%^*M6aeZZ#p?h z4<&wM|Lo}EJST1BHVLQkDRrfSg5T$biWn0gQG1AptL`Q?3DzYd_e<$>el;=nhMr*# z9DKs|)3kD}PKn?d{riU>A)^b7*Z&e$jPuB!QiAd658hJ+PTvTPOl{wy$90l;$16;` zR5`O_*FVnLg9lwsdk=8xR-OtBZJW$nVCEL=8+B2jx7$;w`Jz~O&GQ>MDT?sv>|QE% zBdZhpcTS+c(zRp;EaS3Do;$j<`LA`Ix4e_{PoQu90aS zuCKSxb)T=D=CLBd&2#aEf4w&7zay_rOr@At1>?DDR(7s}pLRn_LhaWdTS4bMr#nvd z7E3;5db8#{mHHnK3*^L>RB?lDOM@nx)C3E&tz?-uFA8&=GrYf7_K70VH|oNFq(tK3 zVc(~gJU^n;P`dZ`Xa8@h;eqk@jt42ccggGUf(3obst`ScN~;(V&IpY@wfg zB4rv)U(U+BP~?BdtCovzkLGPsUBUm9_Fd@PV^7{o8N;zn9C6&23A9twynTNhTPbON z!eb^_s7j5eC9|#eHF8RgYq`PG|8ReoKH}TFcIJ;eSqgSUO(mOMYoVy=)l#0sKBPLF ze@SyUZKbQvu%`Fd9A+|Av!zRunCvfIP24aKD_-sjYVgMXN-xChwsw%;r%V}~OgXNe zX4~SQK;2y0Z@=PJns1buA!D$3GIQP4k1WZ=TkPDJSWZ^+x4`Bp0>0C75G;5wAo!^z zA?Kv_QU-4ArJ7UD)7EWyK!5pz&p3_e`X!{5OHbeK^}j_k2@Kra8g%$;nM@;cN=VY# z67MdHNj}Z-yYXWu?P%^65_-uRb;g5_p3HlEoK?T}h07|1l+$D7%>BB=k)QFvPSC;6 zB0KE3NU0z-;2+~{Xwz;yrPtF|`%Tz>MH;6X%)YZw9Ejg*4%)o7)GO7eiea#q#uuv1H?Kn0;l-Zac|{M4HiC83m!LVkev;U z59z62LLT@d^f|>D6UFB~7W=drC6{h(lkzFG{*yC`{l7Hj2RwWe z7FgzB9IUlYU6%4HD&$7s0UwWs526yC0r8u37vG@U$&w>@gH(I-D*x0k=L5R`Q3-NC z;}TqK7AJeXY=?K?g9knudS#SD5-J{)nx*#wnC2r2VfkL*ggF}EY zo8bCgstvN$&2m4fJd1G|dHk=tgdzS~Kgg+bQhgH7=HRg!T>K;R1aCs)m%N_PTr#Zp}{xR%R)RC+#=^+ji9tU@1^>zkEQK; zUBiH&UZ#5Gc@~UZU{ACwW2P1!BB?OaL7*-*U6gSYU#4bU}J!a$Te_P6FcaUWoB^0%rBm^ zwoedh-Ek#TZK)K?wAGXw`*QKT;S#F5aTWD}Y}o$kCh)yEsLk{WXq8T`w3j~bQLy*w z%;VZF9OsT5H|8DvTF5WvRSVV>SBKCQf!@byZ++5J*4kPh{Di-GeUf^Q@r2g2{58Gx z>RU#Y@oSc09*dpzFqPBi^N2^^bCJJUl`Ht18BGrBRZxO0{BW1KmQ2hiD~#^$_sl%(wR8&W6zkR^aGA679A{X!fIB*`iPzJ7%cJabl5Cy0R~WzU z9eLUCZb}xFBod{YQlYVedVKU0t=9R4?}DUZ#+fViemz!q{PmY_<2Vnl;8Hx#1a?Fp z2r8(F4EDK~CbO`-9AcdEudsLjI-lvL1$fgsbMd{=mBcU+!t)snKt45<}sh63+QfzgmYqtRJQFfXFY_ zfi1IIgH5l53YL2Hg$&lnd|0F*(blw1@r5fpX?=E&=)Y3q8K2JiG536MkTR?l{(|&Z z0gR4_z*F?M!AAQGf*(IWC#du22pKDz;G;g4<@1bTg6~ONEuMZj-R{f7NyH`VboywP zBjeo-uHViHj?(tICppwhs%{CEcifjRSs9#g*+ZcI<$$2pzE!wqsXF<3za=j5GpFVp ztS5HrF(j6mtNil%RiqDCbNpL!Oac}+QfNBPq?X$zYEhLW+=C`!h_Yy7TwCe7iP z0bOpffbp^LDr?&FzwAnhSHSZ_SWujPKVPv-B(#6rMqc9|N_loHnJO~gMcbWc$RLgM zG3P1ou=XQVj;&rHcXgJ6H!_F|#5@(@o}F?EiL?}-8^4lz`FbMV&V4OWoZwkeCuBq2XT7=n&px$BGekeFdT28@B>NtQZGPs9xYDJMkFd{8qjOnj z<9OB9d-y-rZ4gF&*h6lKI*glM?Gi7g-KPz1`Nm-XaP!+bGoJPR+*D4aKi6Xqpb{3I~UOl2@at`4k`3lirWy$jVtK0S|Q=;h!ab^tltr3nbJvWrK5S%5J z`LWj?-|Oo1bSF1Rr0#B3FqhZaY#e;~cdDR3JTBb7b*=TLH~T0x>}ot=@m8vF({u6D zFME8QraLgajvrvWecQs!w=iZUCF-)qH!Wv3bWh}@s%+p|diw;vT=kXDeRx)v{#BfR?Zso=-~N*mP72|kPVC|v-|`YHAd7|b7MWNJ zPm?I-h36SY>sK>A3~`-}ndey_v-bP%KAp+AHyLqn$IJ@a zP=Asi^*lnRG3B`6ta9k8sCp{dwfi?^KMPUScHN*QXffzl7Mn30AKqcDmA0`5k0){^ zlk0f<W9~zQ?sjA1 z#|uy2US>XX+5yCBG6~}t6h?3}Kl||R%rp{^FANCFttsS~h+h=T%3FBtw;<}9h)(*< z^D&H8XIqx}7CZl3buG@hCDA<2eJ6e~KU{EeTQr%c<3lN1xeYJu+)tfnmP)&wyH{d& z|ASv$Fxekk>jUPvNCVp{@9{}sB3LoUS2%n*pCYsu;XBvlQlE?*rQ^gF#_{@pS$b-Q z(qDd0*w>3LaG9@`^7aOv;D0?ZB4lgWkegFp;wHBWsf($WwEk*c$H}OHaZhlOHRD(Z zJ6CfDXJc9>Pp5wl@1jN*KTj+dY${O*OZ%>P|C9`f=AZ5qJAcm>Kj%2oXH>N@)_tb4 zRKxSw;TQ5ac{+~+*Th^2dZxG{Gj$b&RMoum{-#;y^EXx(e|fTu7H9sJu2^}NsXp{l zS>Im9K6B89Gp>G_M@}X4olmClM}OWF#wRZ%`!sfw|9+?9szEr_{a_RAuu%a+Q~rdR z{P_UuTFhvGbI)q-I?4_Amz$hr{-2$MHQ{0251KcNqFhwOt<~Fo%`{k&r0hL@M@O0d zZovlwicgXPU)gj72W(g!{8RB~_O`zZLMNvSrY?PSO*Akykzid`A-@0V@vY{*m0YaU z_~+_7JW@2fZ|3fs{|0WD%yy58+aEmG+bXNlYZFSQXN0^cRQM!(?Z*!$E)ys21)@du z9Q{FRqGa146RD9AjJbKyU;00qv zGIe`8# zXR(C~w=C;5&w9^o_nrq{{Oh(Zf_3w~g-6bvu-<2M*C%e;bzHS@rJeLGg;pCPr8hP{ zVa$1@kmE9C0eAmKZN4gG3KG&k3GGj$2uD5z`^<@xPHXEO4zu>n znvs86H~g{V;Rv6quE;vo$S7FsJu7x}N%W@Re8JU|nZi9^n!M9_d6dG+TKpRcqq(Jy z`G#~n@%`|l#}AMF!m?=4U>m<+ Z7mqn63P*fD`4eU2! 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 literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc11/CLIPINF/00009.clpi b/tests/fixtures/disc11/CLIPINF/00009.clpi new file mode 100644 index 0000000000000000000000000000000000000000..f1d9b237db494f9a82f06035ac5246e74778ea15 GIT binary patch literal 11216 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 literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc11/CLIPINF/00011.clpi b/tests/fixtures/disc11/CLIPINF/00011.clpi new file mode 100644 index 0000000000000000000000000000000000000000..6b1f9b94c2fc7a13f1c9aa3e31daa9666707338e GIT binary patch literal 11084 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 literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc11/CLIPINF/00012.clpi b/tests/fixtures/disc11/CLIPINF/00012.clpi new file mode 100644 index 0000000000000000000000000000000000000000..a8ee62cef8640535449c19fbeca2ff0fc1e2bcaf GIT binary patch literal 476 zcmeZp@eMODGB99ZV7LRs-xwGeQ-Jsekc|#D0L2->g3-MV3@on>pevv|U#`Ie=zM(E ziZOs)%*Y@Brj`7R43xqZ7Xr0p!DLt%1O!E;6M-RMfCNB>3NnZ`7-kjZAqj)Ri9wJN zD4v>^jxH|5AUXl49K#%-mI9z{i~@oTEDRzHyg)u55bH27a7+f$EDQ`MrZ6xnsWUKk zOkrShnZ&^4F_nQiotuH_#8d_rjg>Mf3@ot^5_ZQs9E=KBsH7gm*z_$p@$u1+11^)o e6qe?OH?rA8JWS_~ay))3dI3=Vqs}^@xeNetT|7Pj literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc11/CLIPINF/00013.clpi b/tests/fixtures/disc11/CLIPINF/00013.clpi new file mode 100644 index 0000000000000000000000000000000000000000..52074224153e5af10b75048b9acf64240a7b6fad GIT binary patch literal 1800 zcmchXdr(tX9>>3Vkpy`pBJWoK5hx+K_a?cyd0tGw1QtUnVik=Rw6iW!TRT;(3kIr^ z;A5nfSzWt;qHgVrb$xZMC|VrC3Us<-$CVXaQEPRVDp(bD0ekCAXFC0(f9`MQ%;$H0 z=lst3o$vhSICJLCCn$mdFvyKZ08a~ug`EFOJIt-|o(C6guSLnh>|bv9zt0nDom~09 zc5MWnSImR#ITMer-L0^%*~O(8e_G)~CJ&D-;}jr%WO-(7{GM#W5if(2=hKcT%-Zvj;Ba)HzC6N6pCCQBK-e@;!rmtIVR&cqP!DG zv2Q@McmgwH`Vj4(MCv>xVjPp06`7A%{}j>&M2HhlAw4V$@!n^6Vc7^0{Li2)@*+_J zDBByL;HYwopz!gaR(*ve2@ga-6_R@RAoILPcJe_b?m&uD0L_;tkm3_SYg~?*JwnhW zNl4|$2!=4rDFSmviZqD`#)LYg^#s6Fwi@Zq0GJIxhEoj7?Q&%J#IP2R;RT-r*@9$b z_DEoh^Fb+*!p6Nli(?Mmi!5ItazhHCat2~fkqc_cG&q`qq4rIKbEO)DF9`Y30+2mH zD9~I2B?(4B>j7vux?D6g&JegxehV$f7gr2J+Y^eS>`>^Op?E2B323Jb#of0+`(&6$ zor)NNkSSQa&T!%MR#U7(Y5slPd`th0&8)L9CHv6lZ8qu5+4i~h6*+&uubdOKaHZbW zagyne?=@z6R+wsrW#%)sTC1vkl-&`to|vqUqS&zlO~(Sc_I%rKb?yJ1ug`k9o!Q>? zo?%2?Z7O*GCG)2N$1Ia??q%IqrxO?Qy2cxxZO~i7`&FwF;Id=vLb=tP<$yeRf+viI)moo!(ag82&_uU!#PW#)8 zzu9Bd^4*zj<=-eDbh)i1>IH1qAJ&oK69eRw)t211u|ga2uS8ucePq_cE$8&bL!pc; z(vUt;LS=li<7Q_1=uu@u(ciM(-PdXT<5-&_!rer!?HH&28PC`1tM}`6T`Qe+E7!-& zKh$mbO!_W#q{as)E}kK->+x5zBW`H zf8Tg1GT)rzSvXhK>$b*5K4HTaRj~hP`ApF|AR=91S>%-SKlaLFqdEPGuW8G+49E7z z(aglM5o2i&YdWQTVu{_k#roR#%WQj*m*{S9pzJYqn*Ez^>I7p^bh%rk|DxxvL8SW1 zxN*-W)AfKVi|tL9wQXo0A;|NR%Z{0-FA{fXled=Y-Wk`^H_GoY_AgHu+KkIh_;azj zY&vNXIy6{#`FAve_>Ibpt*P-o5F zQpxUpc#!0kt)|NQvo&W8&?ydFq3dK_`r+yt!|dDT#+KqS(^O}tWof3z+PP~5kswGW zH>_%;t`2;tWpi_Nt%vu}Q*l0KiT8=&%=Z^eiA!HKdwS~H4(E_S^(;Cg-XsOP! zIF@eq-_}oPE*TcL9x$Gs_KrEeN@1zF?zaxQXu^E*Te3N|nVNhzU+bO>)pe{G*2jIl zmZ`}OH4J@x&SZ>SV&1b+V|jWno?Wy^NSx}vMa593H0xXTY8xL2!?)(G;{I&>04tsx ACjbBd literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc11/META/DL/bdmt_eng.xml b/tests/fixtures/disc11/META/DL/bdmt_eng.xml new file mode 100644 index 0000000..6dcc7ca --- /dev/null +++ b/tests/fixtures/disc11/META/DL/bdmt_eng.xml @@ -0,0 +1,9 @@ + + + + + TEST DISC 11 + + + diff --git a/tests/fixtures/disc11/MovieObject.bdmv b/tests/fixtures/disc11/MovieObject.bdmv new file mode 100644 index 0000000000000000000000000000000000000000..8d3744925570c82ac15ef51d01195de02f82a030 GIT binary patch literal 1158 zcmdT@F=_)r4AkDOFSv;bNgZN?yFd=(2OO?UAjEE6`6-*c#82_h9F2Aa!eDYuis+iT z*^zdn-TnC7y!WfVmtP|vOp=cx?QW3d35()LWd3E?){Y|U?a=sQdZ}wO5FtMiBge5N zk#B>35^xvvcY%Kj_!*l0SyIstJUzStkBRMI+nYD$F0b=;x`%R;BGRbmX~nZk)Ug-y z$(ca!{en+{M;+7z-vr+04!#Y14*E==bJg4odhUwuJ7y-VZ}a57)(dlAuQ%GO|I(eK z#%5mmf;ywlf_DqExEb_j>nD*%`oq8Xc8{N+^SPt07eI^)@G&r=Nv#6%nSeOJ00exELV|%xxRn=oaO=)`VYC15 ze+QTbJq89wB;A~h0)h}JR_R0_gOd@;WngVE%qqx(m}m$yQFlfRx3fJX13LvKGBD^c bFoS#ma^L^|VA~lP7`cIFBk`R2c_2Ihjt(Ms literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc11/PLAYLIST/00001.mpls b/tests/fixtures/disc11/PLAYLIST/00001.mpls new file mode 100644 index 0000000000000000000000000000000000000000..eae4e65234523e1445f286949ff6b159b2971332 GIT binary patch literal 258 zcmeYb@Ci0BGB99ZV6Xz>cR-8_@G&qlFxc#1wReE2*Z^cO0%3yz5E%Iyg#?4Rv;Q1m zoU>*tOc4VUkQE11$ixWL4*{Hv0)h}0t8^le!N~~aGO#unW)qHPA2viuDfg~e?49G3UV7D*;t%kUU1)>oclARnq0$WP5n=VTOu>SUb& zlxE;$Vqg#fi?B`v@gXiS2fKikfnVxthR|oJ9;g-wMHd%XKwTj8N$!r=DYdoqcY!6; z1!5<)S)>*kU8TDV3=N>g2yl5sQ~9Og7P2|&oV#|+9R2%fmV zs6P^~=h1NlPvTYa3b3lv>@G&p~rC5-pCji-uK$u`)U|?wMYZMX;o1x%b zIvq(J1A`qbF3=B*RjI;k7V4TAOQ4CTi2NGleyW;J-IpaNP1fsmM(=$eI#%f`6E z7)@BPbYr3}h;ieJ1;)Ri3wOr9pc@w^CgbmS?%daz_h=skSKJ>hw{w4IX3m^*X3m_h zJYA@Xt(-z%rM?;yj7=zPgNbfmQiFxu<$imjNK| ztJ_F7Sn!WE)swmo0x_${NKe7Kr+QM?8W6L3jr5Ww7?JBh3;_`YFNY7rmM}%d<(13NFSz`9*3P6lEfY$ z?yG8~3YN{mVi*y7ftb~Aq#rDdxS}D+uzUiDSp!A}I3jJ!U?cVcF>BDsAV>TfECw6# zBoMP|MrvSH4kXt#*cfn60WoXH$WSq_>l$nfxTk@bRX0*ESU(8kig*TyS;Iz#IpT8C z(70pl?FVAk79(4VzScA@8Jh=ym^ET#q+m5PE*YB#ftWRFWE3oH84ZnF#_qE~#M0ws z-KV%^By)bt$m4eO6^c%UUwMdvP6xF!H}p#-{Lc6NIRc71JRZ;K<$L&ePR6#4I3fRZ zF=m!yT%5E$_=fjE=MQzZ8{f|`zHRvUadD`=K&{&fU;Mf>NsX`yuw6wB{_o4YeF4kK^DM$0dVpn zFyyll+QvM@+O^p!)D!bIIlwl*E(78B*7t&c_ksC--RV0Ltr61%RX6eK9+tyU^a$YO zCE)Q=H^os1jS~k0r#Mf!H@pluISM#g1nPl-?f+_E8yR@8)u`d$YG4}~cvF5T>y6FR zw=}i}N0GZx^~|e&OpZb6R{$r+fyY<%iq)JnTY$zsC*?*Q?Zz5S&4pxgs`M`8Od~SZ zf!=L3QO&-@01uc+Z~)SKV2x3pS)0zM*J}0(*S(497)=CE$O%~PRlvz>K;~Vy%bOk= z6)xvpqT1BXzxcgC_iW8YqV7-1Np!pfIC&j-wC<}`^O$5A3LsmC(&O?5;N(rf$y-1; z0=H%;a97RZ6=>T;y#jimXaW>G9{=$4lF~FpZcc2%! zS8o3`=XGzz{@Ny?RfL?!Eq?rArw5bwN&U~;HQd9BL%qn`^7JcnR*z@oZJUlzrcxV? z5FUxeE?MM!dF47bMCN-y+X(8D&H0WQZV!3ocO(hC*8v?Q#^L^uNdC6RG!768Z4&i| zID6FpgM_WrT9b&NJ@MpY=YCJ9XPEVmnVF1Ss(vBzT_&I!J6YjLE!f zTJGrG8~5)H5>rN|xHg|4_u@Sr=pZp|WV(>JrT28))jLRRH?kdZjlF(V@ASOap9Uya z9*H6|MrQCQvcpxG@i-%AT3EA2X4%&_NGo{HC*A?#zUGX~6|9?D2VgCrowdWr4zSYw z$px(wuvYLc5cjncB?0!e3>Iqx#Ct%@Y8YvNh1p-w+5zha?S1Vsva4YIq_qXs7tR84 zU%QR$1}kgWHNETezJCsgS@TBbi@w%`cYWeK5VQ6e*`qA<#k)T7J`l6^8rcgLZe(kE z*XMoz10Z6xZE4P>&5EktdP?`*s8q$8C2mFdhryCG`4)d^i>v@nE&xtG1dK1V=!Pt| zs7PwavEr)NCUg-_uN+%RWknKyd None: + """Disc11 should infer exactly six episodes from play_all.""" + assert len(disc11_analysis.episodes) == 6 + + def test_episodes_are_ordered(self, disc11_analysis: DiscAnalysis) -> None: + """Verify inferred episode sequence is [1..6].""" + assert [ep.episode for ep in disc11_analysis.episodes] == [1, 2, 3, 4, 5, 6] + + def test_all_episodes_from_play_all(self, disc11_analysis: DiscAnalysis) -> None: + """All episodes should come from the play_all playlist.""" + for ep in disc11_analysis.episodes: + assert ep.playlist == "00002.mpls" + + def test_episode_durations_reasonable(self, disc11_analysis: DiscAnalysis) -> None: + """Each episode should be ~20–28 min.""" + for ep in disc11_analysis.episodes: + dur_min = ep.duration_ms / 60_000 + assert 20 < dur_min < 28, f"Ep {ep.episode} duration {dur_min:.1f}min out of range" + + +class TestDisc11Specials: + def test_special_count(self, disc11_analysis: DiscAnalysis) -> None: + """Disc11 should have 1 special feature.""" + assert len(disc11_analysis.special_features) == 1 + + def test_special_is_short(self, disc11_analysis: DiscAnalysis) -> None: + """The special should be ~3–5 min.""" + sf = disc11_analysis.special_features[0] + dur_min = sf.duration_ms / 60_000 + assert 2 < dur_min < 5, f"Special {sf.playlist} duration {dur_min:.1f}min out of range" + + def test_special_playlist(self, disc11_analysis: DiscAnalysis) -> None: + """Special should be on 00003.mpls.""" + assert disc11_analysis.special_features[0].playlist == "00003.mpls" + + +class TestDisc11Metadata: + def test_disc_title(self, disc11_analysis: DiscAnalysis) -> None: + """Disc title should be extracted from META/DL/bdmt_eng.xml.""" + assert disc11_analysis.disc_title == "TEST DISC 11" + + def test_play_all_detected(self, disc11_analysis: DiscAnalysis) -> None: + """00002.mpls should be classified as play_all.""" + classes = disc11_analysis.analysis.get("classifications", {}) + assert classes.get("00002.mpls") == "play_all" + + def test_ig_chapter_marks(self, disc11_analysis: DiscAnalysis) -> None: + """IG hints should report 6 chapter marks for episode starts.""" + ig = disc11_analysis.analysis.get("disc_hints", {}).get("ig_menu", {}) + marks = ig.get("chapter_marks", []) + assert marks == [0, 6, 12, 18, 24, 30] diff --git a/tests/test_disc_matrix.py b/tests/test_disc_matrix.py index 56cda76..7c1e2bb 100644 --- a/tests/test_disc_matrix.py +++ b/tests/test_disc_matrix.py @@ -22,6 +22,7 @@ ("disc8_analysis", 2, ["00003.mpls", "00004.mpls"]), ("disc9_analysis", 1, ["00002.mpls"]), ("disc10_analysis", 5, ["00002.mpls"] * 5), + ("disc11_analysis", 6, ["00002.mpls"] * 6), ], ) def test_disc_episode_expectation_matrix( @@ -49,6 +50,7 @@ def test_disc_episode_expectation_matrix( ("disc8_analysis", 3, 3), # 2 commentaries + 1 lyrics ending ("disc9_analysis", 1, 1), # alt-audio variant detected as special ("disc10_analysis", 3, 3), # 3 commentaries (play_all-only episodes) + ("disc11_analysis", 1, 1), # 1 short extra ], ) def test_disc_special_visibility_expectation_matrix( @@ -80,6 +82,7 @@ def test_disc_special_visibility_expectation_matrix( "disc8_analysis", "disc9_analysis", "disc10_analysis", + "disc11_analysis", ], ) def test_disc_episode_segment_boundaries_matrix( @@ -115,6 +118,7 @@ def test_disc_episode_segment_boundaries_matrix( "disc8_analysis", "disc9_analysis", "disc10_analysis", + "disc11_analysis", ], ) def test_disc_special_boundary_semantics_matrix( @@ -157,6 +161,7 @@ def test_disc_special_boundary_semantics_matrix( ("disc8_analysis", 0), ("disc9_analysis", 0), ("disc10_analysis", 0), + ("disc11_analysis", 0), ], ) def test_disc_special_chapter_split_expectation_matrix( @@ -182,6 +187,7 @@ def test_disc_special_chapter_split_expectation_matrix( ("disc8_analysis", "TEST DISC 8"), ("disc9_analysis", "TEST DISC 9"), ("disc10_analysis", "TEST DISC 10"), + ("disc11_analysis", "TEST DISC 11"), ], ) def test_disc_title_extraction_matrix( From 8813e91fca61fa16e7d2a6f56195e3be1de99488 Mon Sep 17 00:00:00 2001 From: Benjamin Date: Fri, 27 Feb 2026 22:10:17 +1000 Subject: [PATCH 5/6] test: add disc12 fixture and integration tests Disc12 is a five-episode bonus disc with 3 commentary specials (same structure as disc10): play_all decomposes into 5 episodes at IG chapter marks [0, 6, 12, 18, 24]; 3 individual playlists are commentary tracks. No parsing fixes needed. 235 tests pass. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- tests/conftest.py | 12 ++++ tests/fixtures/disc12/CLIPINF/00000.clpi | Bin 0 -> 444 bytes tests/fixtures/disc12/CLIPINF/00001.clpi | Bin 0 -> 560 bytes tests/fixtures/disc12/CLIPINF/00002.clpi | Bin 0 -> 408 bytes tests/fixtures/disc12/CLIPINF/00003.clpi | Bin 0 -> 292 bytes tests/fixtures/disc12/CLIPINF/00004.clpi | Bin 0 -> 292 bytes tests/fixtures/disc12/CLIPINF/00005.clpi | Bin 0 -> 292 bytes tests/fixtures/disc12/CLIPINF/00006.clpi | Bin 0 -> 11476 bytes tests/fixtures/disc12/CLIPINF/00007.clpi | Bin 0 -> 11116 bytes tests/fixtures/disc12/CLIPINF/00008.clpi | Bin 0 -> 11444 bytes tests/fixtures/disc12/CLIPINF/00009.clpi | Bin 0 -> 11460 bytes tests/fixtures/disc12/CLIPINF/00010.clpi | Bin 0 -> 10956 bytes tests/fixtures/disc12/CLIPINF/00011.clpi | Bin 0 -> 476 bytes tests/fixtures/disc12/META/DL/bdmt_eng.xml | 9 +++ tests/fixtures/disc12/MovieObject.bdmv | Bin 0 -> 1574 bytes tests/fixtures/disc12/PLAYLIST/00000.mpls | Bin 0 -> 280 bytes tests/fixtures/disc12/PLAYLIST/00001.mpls | Bin 0 -> 258 bytes tests/fixtures/disc12/PLAYLIST/00002.mpls | Bin 0 -> 1328 bytes tests/fixtures/disc12/PLAYLIST/00003.mpls | Bin 0 -> 310 bytes tests/fixtures/disc12/PLAYLIST/00004.mpls | Bin 0 -> 310 bytes tests/fixtures/disc12/PLAYLIST/00005.mpls | Bin 0 -> 310 bytes tests/fixtures/disc12/ics_menu.bin | Bin 0 -> 6207 bytes tests/fixtures/disc12/index.bdmv | Bin 0 -> 156 bytes tests/test_disc12_scan.py | 70 +++++++++++++++++++++ tests/test_disc_matrix.py | 6 ++ 25 files changed, 97 insertions(+) create mode 100644 tests/fixtures/disc12/CLIPINF/00000.clpi create mode 100644 tests/fixtures/disc12/CLIPINF/00001.clpi create mode 100644 tests/fixtures/disc12/CLIPINF/00002.clpi create mode 100644 tests/fixtures/disc12/CLIPINF/00003.clpi create mode 100644 tests/fixtures/disc12/CLIPINF/00004.clpi create mode 100644 tests/fixtures/disc12/CLIPINF/00005.clpi create mode 100644 tests/fixtures/disc12/CLIPINF/00006.clpi create mode 100644 tests/fixtures/disc12/CLIPINF/00007.clpi create mode 100644 tests/fixtures/disc12/CLIPINF/00008.clpi create mode 100644 tests/fixtures/disc12/CLIPINF/00009.clpi create mode 100644 tests/fixtures/disc12/CLIPINF/00010.clpi create mode 100644 tests/fixtures/disc12/CLIPINF/00011.clpi create mode 100644 tests/fixtures/disc12/META/DL/bdmt_eng.xml create mode 100644 tests/fixtures/disc12/MovieObject.bdmv create mode 100644 tests/fixtures/disc12/PLAYLIST/00000.mpls create mode 100644 tests/fixtures/disc12/PLAYLIST/00001.mpls create mode 100644 tests/fixtures/disc12/PLAYLIST/00002.mpls create mode 100644 tests/fixtures/disc12/PLAYLIST/00003.mpls create mode 100644 tests/fixtures/disc12/PLAYLIST/00004.mpls create mode 100644 tests/fixtures/disc12/PLAYLIST/00005.mpls create mode 100644 tests/fixtures/disc12/ics_menu.bin create mode 100644 tests/fixtures/disc12/index.bdmv create mode 100644 tests/test_disc12_scan.py diff --git a/tests/conftest.py b/tests/conftest.py index b2e07de..fd7d629 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -184,6 +184,18 @@ def disc11_analysis(disc11_path): return _analyze_fixture(disc11_path) +@pytest.fixture(scope="session") +def disc12_path() -> Path: + """Return path to bundled disc12 fixture.""" + return _fixture_path("disc12") + + +@pytest.fixture(scope="session") +def disc12_analysis(disc12_path): + """Run and cache full analysis for the bundled disc12 fixture.""" + return _analyze_fixture(disc12_path) + + @pytest.fixture def cli_runner() -> Callable[..., subprocess.CompletedProcess[str]]: """Return helper to invoke `python -m bdpl.cli` consistently in tests.""" diff --git a/tests/fixtures/disc12/CLIPINF/00000.clpi b/tests/fixtures/disc12/CLIPINF/00000.clpi new file mode 100644 index 0000000000000000000000000000000000000000..3cb2f614636488f7db1267e3eb2d1baf7140f491 GIT binary patch literal 444 zcmeZp@eMODGB99ZV7LRs-xwGeO@Md@kc|#D0L2->g3-MV46Nn~=nCl0muv6R4k9o)LJUI4XN!DN^i1O!E;6M-RMfCNB>3NnZ`7-kjZAqj)R2?QE| zx)}uo8CV!382EvFJ|G5$8`B9O&BDOobdrG~hLwS_=_CV_Mk)j2p;HV@Eu{?1Os5!F z0jW=(Ooxl literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc12/CLIPINF/00001.clpi b/tests/fixtures/disc12/CLIPINF/00001.clpi new file mode 100644 index 0000000000000000000000000000000000000000..be8e532cd7e46a0b6a992f0f52be34808dd60785 GIT binary patch literal 560 zcmeZp@eMODGB99ZV7LRs-xwGeO&A!MbbxGhumLE?2o{X)ZD8PD;()Gz?tHlh51{k$ zSu4f>b}=J^0GQ_1oe{(BY!6~v!DN^i1O!E;6M-RMfCNB>3NnZ`7-kjZAqj)R2?V|X zbu$VGGO#dcFsK0ed_Wum47bxjnuUSU=?nv-hdu)n(-{UPp{WeaPG=dI*JLp;H=Si* z;T2+FIdqPJ^+O&5E7Lg!HotZTHmCCp?6;#C*qY8WaB!wEa4=n9;4(fdZNR`H{XqA& zE=yIn?t}HxdJ~=(De!yfE9S4XQj)*>Q0bh|ROJ)lOe$~YZ&rQwCRjbxCsX6_nk+3P zULoz0+zOj3=N$E%^=IlYp770(`9q#jl3%;=q4lp!l?6o1JYz11$FEJ2;J+O$v5zxN t%O-V}_MF4MGQZ_ZOHj)AtWZ_|6X9F0zl+LyZ~^_s005&g3-MV3=DY-&=t^~FW2A!bUr?7 z#TdXYW@He6(6j#>V4SmND^N=oOooL)Ku}aV5f}mnNC0H0AcJUwVOBvNk}xQo7z7!C z;;DJ*=;A^Qq7#71G0XvK(E-}VC?Lqd!ob161myDpu?P^S0Wk{$gF`w4Lr|~#4+fS< JAPp2_000QQBc1>N literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc12/CLIPINF/00003.clpi b/tests/fixtures/disc12/CLIPINF/00003.clpi new file mode 100644 index 0000000000000000000000000000000000000000..a928f193c320d9f62b67bbdc6abc9f9ba4f4d42e GIT binary patch literal 292 zcmeZp@eMODGB99ZV7LRs-xwGeWq?=#$VLYnfa0uR!RX!w1_m|I~1~CRk mkTfHM0EC|X=K$jz77?J35=@4XL4-kcVpc&Og8>piHWUD+&=3j$ literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc12/CLIPINF/00006.clpi b/tests/fixtures/disc12/CLIPINF/00006.clpi new file mode 100644 index 0000000000000000000000000000000000000000..4142e2f3024c04bc384c113fe581ff55d4192f40 GIT binary patch literal 11476 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 literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc12/CLIPINF/00008.clpi b/tests/fixtures/disc12/CLIPINF/00008.clpi new file mode 100644 index 0000000000000000000000000000000000000000..e3a7fe8669992a0a2407e5b194430d51cb495020 GIT binary patch literal 11444 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%0D{lpR6#PmZEYZzWL4 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 Hi-rFHr5*%j literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc12/CLIPINF/00010.clpi b/tests/fixtures/disc12/CLIPINF/00010.clpi new file mode 100644 index 0000000000000000000000000000000000000000..83d4ccde7744e6511687db9f68cbcdb5678db466 GIT binary patch literal 10956 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 literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc12/CLIPINF/00011.clpi b/tests/fixtures/disc12/CLIPINF/00011.clpi new file mode 100644 index 0000000000000000000000000000000000000000..05eeb21acbe8bb1242010119d0f275059ebf0fd8 GIT binary patch literal 476 zcmeZp@eMODGB99ZV7LRs-xwGeQ-Jsekc|#D0L2->g3-MV3@on>pevv|U#`Ie=zM(E ziZOs)%*Y@Brsc}jIOG~cD}h?FU@|NW0)nE_iNFvrKms5`1sOye46_RIkc2_u#30BB z6i>}dM;8}j5S;*2j$sZ^O99X}Mgc(v76uUpULcQqt>e%bUb)bsJtuoW(oA~=@j bMrN|vM4e3Mj?p}RE4Blu{#0ij&|C%p-RV8e literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc12/META/DL/bdmt_eng.xml b/tests/fixtures/disc12/META/DL/bdmt_eng.xml new file mode 100644 index 0000000..332de4c --- /dev/null +++ b/tests/fixtures/disc12/META/DL/bdmt_eng.xml @@ -0,0 +1,9 @@ + + + + + TEST DISC 12 + + + diff --git a/tests/fixtures/disc12/MovieObject.bdmv b/tests/fixtures/disc12/MovieObject.bdmv new file mode 100644 index 0000000000000000000000000000000000000000..039dd3575b94c52b0a30d8b4220ce5d5c404bf0a GIT binary patch literal 1574 zcmds1%W48a5bW7k$R!ezbI^b{A&d9{izf+$=pXnglYEJv;&*w8T{Yd%2$H?z5PL7R zHPt=UJ+u4qxqk1LeJ{U8d!nS1X{-HE?a;7Kww%(nW9P|_>W2Dha40v_5C5~VpEH(1S6To7 literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc12/PLAYLIST/00000.mpls b/tests/fixtures/disc12/PLAYLIST/00000.mpls new file mode 100644 index 0000000000000000000000000000000000000000..3e9593db25102d4d3d99adf47cc4900a512bb2e3 GIT binary patch literal 280 zcmeYb@Ci0BGB99ZV6Xz>7eI^)@G&r=Nv#6%nSeOJ00exELV|%xxRn=oaO=)`VYC15 ze+QTbJq89wB;A~h0)h}JR_R0_gOd@;WngVE%qqx(m}m$yQFlfRx3fJX13LvKGBD^c bFoS#ma^L^|VA~lP7`cIFBk`R2c_2Ihjt(Ms literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc12/PLAYLIST/00001.mpls b/tests/fixtures/disc12/PLAYLIST/00001.mpls new file mode 100644 index 0000000000000000000000000000000000000000..eae4e65234523e1445f286949ff6b159b2971332 GIT binary patch literal 258 zcmeYb@Ci0BGB99ZV6Xz>cR-8_@G&qlFxc#1wReE2*Z^cO0%3yz5E%Iyg#?4Rv;Q1m zoU>*tOc4VUkQE11$ixWL4*{Hv0)h}0t8^le!N~~aGO#unW)qHPA2viuDfg~e?49G3UV7D*;t%kUU1)>oclARnq0$WP5n=VTOu>SUb& zlxE;$Vqg#fi?B`v@gXiS2fKikfnVxthR~~c=O-Z zBk}GY@;!4s*v$cW&HHBA12#M_rx0Ov7-QYnHb9{D{Oi8p{kb3lv>@G&p~rC5-pCji-uK$u_v1m?a*A;CZnztqoclP9RSNEWkPu$OW-f7?^=1BZCac zE>o~w3=B*RjI;k7V4TAOQ4CU-!oUu)2jq(X|3Ly^p5fxZNWAF1`Q& literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc12/PLAYLIST/00004.mpls b/tests/fixtures/disc12/PLAYLIST/00004.mpls new file mode 100644 index 0000000000000000000000000000000000000000..d584fc47db6d15423359df7d9c8e12a5161749df GIT binary patch literal 310 zcmeYb@Ci0BGB99ZV6Xz>b3lv>@G&p~rC5-pCji-uK$u_v1QxzVA;Cb7&?m+TVkaYW zkkm0S*Z~!SR6+qKqktfU$ts-)WN zU8Z2W7#Nrs7-#=Ez&M8mq8Owug@GMp56Bh&|APcTJYfO*HAp-^*7FFSNYzC~1W&AC S@((25zQh6~-ibv@5FP-~)-2or literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc12/PLAYLIST/00005.mpls b/tests/fixtures/disc12/PLAYLIST/00005.mpls new file mode 100644 index 0000000000000000000000000000000000000000..dedcacffca38aa8a49483e3941210383b80fa71f GIT binary patch literal 310 zcmeYb@Ci0BGB99ZV6Xz>b3lv>@G&p~rC5-pCji-uK$u_v1eU%=A;Cb7*h$_UQVUY2 zAgN5BL@`KR3IjXH9*`^k{|5fYPzNG2 z$fS=Ol#n?RbP{1$Fs2N0veMmT$s7v0h?rF}D3N8(ktO34H0o+GXd$cgZF*bn5L>#5 zSXZk-D_M+#6}3}r?IB`Tn?ajn-Bvrr)?OlJwHvex3+z$mLC{A;tjPW3@@rBl!ZH0^ zr$?HBGGWnASZpA|31!f^5Hu&!1v)I_L?sv?ECvaSA!6+S_AXDpp>#rNae0NX7$z)6 zh)}u|g}--y_BEwb?K#6JVKGKnj1!@BXC&=IA^9}Ds>vZ5CJ2j-gvBHgN|z()B1G<_ z*V#97ojNuV7E^@9W+IfXMAANV@)`3(5jx_X$VHN{cOM@{`7e}^5F(mL_>d~?r-XzP z(L}9$#J!uPT?0nAKs>K_Rj(YZ^)_ZY5$?r$HxK*#UY` zQb#aN#H=oZF0$yU1x-Uq#cf2)>Ne;mi=)4)2_{LlorqaI20g;MMV2I(UxZ;ul( zYlFcCvPwJCs^+5P<4z)G4HyhKT`QW4l8;XiF>BCZ(6OqTtCFv~h?q5GFhmv?ld9&j zq!zbRS139jewFQ&bP4=q@``>bh2Q0USB!dRy_9IRn$OTmU#-eQ9IeKhO{)_r zWvkL#SWOMcHn1+eHPI3_zs3&!W4$3A2)&Ko7?hoD-45Clt!o*&*Et-cCE{Tmrstj~ zERGPl58W2ALP7{|A?HJ)bJaTk;=@DNY^_)#^+$1(ieDfsUL+n&eP^Q8PC8EmSVz<7 z3g!rlV}!*^MA(BY%`{+1-Qo>sSVX-6x}j*96sbRs<5c`IVety_VCuUQEwS=m+$>70 zCO(r|OX<#GqfO|&iL1M=u>)UsHIa}4j4^amBVq(&P3YxBi?RF<-14OuYqNEuPO7r} zPj)a!UyP#CgzhS|TJn!MqiZYI*9M6^*u0CvLN}%`IK5xPHOy`5uDYvbUz*dpJ+r!7 zw}+yXTC0a}OLVKGs|;(U%SiM7&i+&iU0B$`N682-GUN&iX?X&x{a z8YIg1vG-{F2L)SUwH6UUd+Lh|-AjV@%(wT3KB#|>7K{3iP5$<>E`Nu)dWrS($zEN? zc-n2SzV$w=*X3@l0r;ME>GSVywHPrN;V4R<;AcH)^R(SCirCMiOaYPjl@fB&CYnf$ z8Oh07%LIPXQ#nuOO(ez*#$|3Uu^y2VJkdmA!eGKl+|Uy|Pw`D8HX3YXUURKq*3-V6 z_~!``E4D;n(qNK*vN~MGq{j)IsAFy7!C!QJ#j-+f00bwASl5)nlw)1j8v?l{Xk=|R z*i2Toi)Tf-K@glGVqIGdwur8IvgCX&c$J7*Rf8&79Q^`M=MIg!wi;}8tRMA!E@$-D zh*;OO!8BQUHCfT~xt!5oCt}t%gKbXN3Qy+_r*XQDwcTL5vZzbW=YltgSl14N9c1xD zwxZ{AIisH;B38qaW^KmMX3SDlPd#qQ1l}Yp-Xbi{62+-Uu4#EH;y;mCOsDym+&mgA z5EgF}7Vi+oU*PD1jKtklQi8g88kPIXcL|I42#a$>A>qd0FRLi=1-Wv9P4PZq@d076 zNE8yzuFTz4rhha1io445I3G{J>Rsg`S;bvtBgo4>JJ|h(R9LJGLdzpxMaEq z%U>*!^<7cu;Ugl}lgOuB#zbu53GL|rSZmq{0Kv5w_0lhQ@%l8Yq4$3)zt Qzf97QDK3*P;Zn@{7qX^sZ2$lO literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc12/index.bdmv b/tests/fixtures/disc12/index.bdmv new file mode 100644 index 0000000000000000000000000000000000000000..5796e0167e2cfe5c52c5ee16a46b995b530b858a GIT binary patch literal 156 zcmebDbBQo8GB99ZVDJNCd_W1GBwWtR0nTJ#0I`9X5iG<4;sF5@h;RTA3=GU5!U04u PFtC6K2N1!)zzQM&%}xY^ literal 0 HcmV?d00001 diff --git a/tests/test_disc12_scan.py b/tests/test_disc12_scan.py new file mode 100644 index 0000000..51effb8 --- /dev/null +++ b/tests/test_disc12_scan.py @@ -0,0 +1,70 @@ +"""Integration tests for the disc12 fixture scan results. + +Disc12 is a five-episode bonus disc with commentary specials (same +structure as disc10): +- Play_all (00002.mpls, 6 clips, 31 chapters) decomposes into 5 episodes + at IG chapter marks [0, 6, 12, 18, 24]. Each episode ~24 min. +- Three individual playlists (00003-00005) duplicate episodes 2-4 with + commentary audio; detected as commentary specials via IG menu. +- Episodes 1 and 5 are play_all-only. +""" + +import pytest + +from bdpl.model import DiscAnalysis + +pytestmark = pytest.mark.integration + + +class TestDisc12Episodes: + def test_finds_five_episodes(self, disc12_analysis: DiscAnalysis) -> None: + """Disc12 should infer exactly five episodes from play_all.""" + assert len(disc12_analysis.episodes) == 5 + + def test_episodes_are_ordered(self, disc12_analysis: DiscAnalysis) -> None: + """Verify inferred episode sequence is [1..5].""" + assert [ep.episode for ep in disc12_analysis.episodes] == [1, 2, 3, 4, 5] + + def test_all_episodes_from_play_all(self, disc12_analysis: DiscAnalysis) -> None: + """All episodes should come from the play_all playlist.""" + for ep in disc12_analysis.episodes: + assert ep.playlist == "00002.mpls" + + def test_episode_durations_reasonable(self, disc12_analysis: DiscAnalysis) -> None: + """Each episode should be ~20–28 min.""" + for ep in disc12_analysis.episodes: + dur_min = ep.duration_ms / 60_000 + assert 20 < dur_min < 28, f"Ep {ep.episode} duration {dur_min:.1f}min out of range" + + +class TestDisc12Specials: + def test_special_count(self, disc12_analysis: DiscAnalysis) -> None: + """Disc12 should have 3 commentary specials.""" + assert len(disc12_analysis.special_features) == 3 + + def test_all_commentaries(self, disc12_analysis: DiscAnalysis) -> None: + """All specials should be commentary tracks.""" + for sf in disc12_analysis.special_features: + assert sf.category == "commentary" + + def test_commentary_playlists(self, disc12_analysis: DiscAnalysis) -> None: + """Commentary tracks should reference individual episode playlists.""" + playlists = {sf.playlist for sf in disc12_analysis.special_features} + assert playlists == {"00003.mpls", "00004.mpls", "00005.mpls"} + + +class TestDisc12Metadata: + def test_disc_title(self, disc12_analysis: DiscAnalysis) -> None: + """Disc title should be extracted from META/DL/bdmt_eng.xml.""" + assert disc12_analysis.disc_title == "TEST DISC 12" + + def test_play_all_detected(self, disc12_analysis: DiscAnalysis) -> None: + """00002.mpls should be classified as play_all.""" + classes = disc12_analysis.analysis.get("classifications", {}) + assert classes.get("00002.mpls") == "play_all" + + def test_ig_chapter_marks(self, disc12_analysis: DiscAnalysis) -> None: + """IG hints should report 5 chapter marks for episode starts.""" + ig = disc12_analysis.analysis.get("disc_hints", {}).get("ig_menu", {}) + marks = ig.get("chapter_marks", []) + assert marks == [0, 6, 12, 18, 24] diff --git a/tests/test_disc_matrix.py b/tests/test_disc_matrix.py index 7c1e2bb..84a9c6e 100644 --- a/tests/test_disc_matrix.py +++ b/tests/test_disc_matrix.py @@ -23,6 +23,7 @@ ("disc9_analysis", 1, ["00002.mpls"]), ("disc10_analysis", 5, ["00002.mpls"] * 5), ("disc11_analysis", 6, ["00002.mpls"] * 6), + ("disc12_analysis", 5, ["00002.mpls"] * 5), ], ) def test_disc_episode_expectation_matrix( @@ -51,6 +52,7 @@ def test_disc_episode_expectation_matrix( ("disc9_analysis", 1, 1), # alt-audio variant detected as special ("disc10_analysis", 3, 3), # 3 commentaries (play_all-only episodes) ("disc11_analysis", 1, 1), # 1 short extra + ("disc12_analysis", 3, 3), # 3 commentaries (play_all-only episodes) ], ) def test_disc_special_visibility_expectation_matrix( @@ -83,6 +85,7 @@ def test_disc_special_visibility_expectation_matrix( "disc9_analysis", "disc10_analysis", "disc11_analysis", + "disc12_analysis", ], ) def test_disc_episode_segment_boundaries_matrix( @@ -119,6 +122,7 @@ def test_disc_episode_segment_boundaries_matrix( "disc9_analysis", "disc10_analysis", "disc11_analysis", + "disc12_analysis", ], ) def test_disc_special_boundary_semantics_matrix( @@ -162,6 +166,7 @@ def test_disc_special_boundary_semantics_matrix( ("disc9_analysis", 0), ("disc10_analysis", 0), ("disc11_analysis", 0), + ("disc12_analysis", 0), ], ) def test_disc_special_chapter_split_expectation_matrix( @@ -188,6 +193,7 @@ def test_disc_special_chapter_split_expectation_matrix( ("disc9_analysis", "TEST DISC 9"), ("disc10_analysis", "TEST DISC 10"), ("disc11_analysis", "TEST DISC 11"), + ("disc12_analysis", "TEST DISC 12"), ], ) def test_disc_title_extraction_matrix( From e71941acedac8e5990f73de9a9a33c366e79a51c Mon Sep 17 00:00:00 2001 From: Benjamin Date: Fri, 27 Feb 2026 22:21:18 +1000 Subject: [PATCH 6/6] feat: add disc13 fixture + fix commentary detection for unused episode playlists Disc13 (6 episodes + 9 specials) is the most complex special features disc in the box set: 2 commentary tracks, 5 creditless OP/ED, 2 extras. Fix: in the title-hint supplement loop, episode-classified playlists that are NOT actually used as episode sources (episodes came from play_all decomposition) are now relabeled as commentary specials instead of being silently skipped. This catches 00003.mpls on disc13 which was missed because all 9 IG special-feature buttons use register-indirect JumpTitle routing to a single title. - 253 tests pass, ruff clean Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- bdpl/analyze/__init__.py | 9 ++- tests/conftest.py | 12 +++ tests/fixtures/disc13/CLIPINF/00000.clpi | Bin 0 -> 444 bytes tests/fixtures/disc13/CLIPINF/00001.clpi | Bin 0 -> 560 bytes tests/fixtures/disc13/CLIPINF/00002.clpi | Bin 0 -> 408 bytes tests/fixtures/disc13/CLIPINF/00003.clpi | Bin 0 -> 292 bytes tests/fixtures/disc13/CLIPINF/00004.clpi | Bin 0 -> 292 bytes tests/fixtures/disc13/CLIPINF/00005.clpi | Bin 0 -> 292 bytes tests/fixtures/disc13/CLIPINF/00006.clpi | Bin 0 -> 10976 bytes tests/fixtures/disc13/CLIPINF/00007.clpi | Bin 0 -> 11304 bytes tests/fixtures/disc13/CLIPINF/00008.clpi | Bin 0 -> 11284 bytes tests/fixtures/disc13/CLIPINF/00009.clpi | Bin 0 -> 10796 bytes tests/fixtures/disc13/CLIPINF/00010.clpi | Bin 0 -> 11412 bytes tests/fixtures/disc13/CLIPINF/00011.clpi | Bin 0 -> 10932 bytes tests/fixtures/disc13/CLIPINF/00012.clpi | Bin 0 -> 468 bytes tests/fixtures/disc13/CLIPINF/00013.clpi | Bin 0 -> 1080 bytes tests/fixtures/disc13/CLIPINF/00014.clpi | Bin 0 -> 1040 bytes tests/fixtures/disc13/CLIPINF/00015.clpi | Bin 0 -> 1096 bytes tests/fixtures/disc13/CLIPINF/00016.clpi | Bin 0 -> 1312 bytes tests/fixtures/disc13/CLIPINF/00017.clpi | Bin 0 -> 1856 bytes tests/fixtures/disc13/CLIPINF/00018.clpi | Bin 0 -> 4516 bytes tests/fixtures/disc13/CLIPINF/00019.clpi | Bin 0 -> 1292 bytes tests/fixtures/disc13/CLIPINF/00020.clpi | Bin 0 -> 292 bytes tests/fixtures/disc13/META/DL/bdmt_eng.xml | 6 ++ tests/fixtures/disc13/MovieObject.bdmv | Bin 0 -> 2822 bytes tests/fixtures/disc13/PLAYLIST/00000.mpls | Bin 0 -> 280 bytes tests/fixtures/disc13/PLAYLIST/00001.mpls | Bin 0 -> 258 bytes tests/fixtures/disc13/PLAYLIST/00002.mpls | Bin 0 -> 1556 bytes tests/fixtures/disc13/PLAYLIST/00003.mpls | Bin 0 -> 310 bytes tests/fixtures/disc13/PLAYLIST/00004.mpls | Bin 0 -> 310 bytes tests/fixtures/disc13/PLAYLIST/00005.mpls | Bin 0 -> 240 bytes tests/fixtures/disc13/PLAYLIST/00006.mpls | Bin 0 -> 240 bytes tests/fixtures/disc13/PLAYLIST/00007.mpls | Bin 0 -> 240 bytes tests/fixtures/disc13/PLAYLIST/00008.mpls | Bin 0 -> 240 bytes tests/fixtures/disc13/PLAYLIST/00009.mpls | Bin 0 -> 240 bytes tests/fixtures/disc13/PLAYLIST/00010.mpls | Bin 0 -> 842 bytes tests/fixtures/disc13/PLAYLIST/00011.mpls | Bin 0 -> 240 bytes tests/fixtures/disc13/ics_menu.bin | Bin 0 -> 7207 bytes tests/fixtures/disc13/index.bdmv | Bin 0 -> 228 bytes tests/test_disc13_scan.py | 87 +++++++++++++++++++++ tests/test_disc_matrix.py | 6 ++ 41 files changed, 119 insertions(+), 1 deletion(-) create mode 100644 tests/fixtures/disc13/CLIPINF/00000.clpi create mode 100644 tests/fixtures/disc13/CLIPINF/00001.clpi create mode 100644 tests/fixtures/disc13/CLIPINF/00002.clpi create mode 100644 tests/fixtures/disc13/CLIPINF/00003.clpi create mode 100644 tests/fixtures/disc13/CLIPINF/00004.clpi create mode 100644 tests/fixtures/disc13/CLIPINF/00005.clpi create mode 100644 tests/fixtures/disc13/CLIPINF/00006.clpi create mode 100644 tests/fixtures/disc13/CLIPINF/00007.clpi create mode 100644 tests/fixtures/disc13/CLIPINF/00008.clpi create mode 100644 tests/fixtures/disc13/CLIPINF/00009.clpi create mode 100644 tests/fixtures/disc13/CLIPINF/00010.clpi create mode 100644 tests/fixtures/disc13/CLIPINF/00011.clpi create mode 100644 tests/fixtures/disc13/CLIPINF/00012.clpi create mode 100644 tests/fixtures/disc13/CLIPINF/00013.clpi create mode 100644 tests/fixtures/disc13/CLIPINF/00014.clpi create mode 100644 tests/fixtures/disc13/CLIPINF/00015.clpi create mode 100644 tests/fixtures/disc13/CLIPINF/00016.clpi create mode 100644 tests/fixtures/disc13/CLIPINF/00017.clpi create mode 100644 tests/fixtures/disc13/CLIPINF/00018.clpi create mode 100644 tests/fixtures/disc13/CLIPINF/00019.clpi create mode 100644 tests/fixtures/disc13/CLIPINF/00020.clpi create mode 100644 tests/fixtures/disc13/META/DL/bdmt_eng.xml create mode 100644 tests/fixtures/disc13/MovieObject.bdmv create mode 100644 tests/fixtures/disc13/PLAYLIST/00000.mpls create mode 100644 tests/fixtures/disc13/PLAYLIST/00001.mpls create mode 100644 tests/fixtures/disc13/PLAYLIST/00002.mpls create mode 100644 tests/fixtures/disc13/PLAYLIST/00003.mpls create mode 100644 tests/fixtures/disc13/PLAYLIST/00004.mpls create mode 100644 tests/fixtures/disc13/PLAYLIST/00005.mpls create mode 100644 tests/fixtures/disc13/PLAYLIST/00006.mpls create mode 100644 tests/fixtures/disc13/PLAYLIST/00007.mpls create mode 100644 tests/fixtures/disc13/PLAYLIST/00008.mpls create mode 100644 tests/fixtures/disc13/PLAYLIST/00009.mpls create mode 100644 tests/fixtures/disc13/PLAYLIST/00010.mpls create mode 100644 tests/fixtures/disc13/PLAYLIST/00011.mpls create mode 100644 tests/fixtures/disc13/ics_menu.bin create mode 100644 tests/fixtures/disc13/index.bdmv create mode 100644 tests/test_disc13_scan.py diff --git a/bdpl/analyze/__init__.py b/bdpl/analyze/__init__.py index f35f936..1f4dcc0 100644 --- a/bdpl/analyze/__init__.py +++ b/bdpl/analyze/__init__.py @@ -365,8 +365,15 @@ def _detect_special_features( if pl is None: continue category = classifications.get(mpls, "extra") - if category in {"episode", "play_all"}: + if category == "play_all": continue + # An "episode" playlist not used as an actual episode source + # (episodes came from play_all decomposition) is a commentary + # or alternate-audio track. + if category == "episode": + if mpls in ep_playlists: + continue + category = "commentary" new_features = _build_chapter_split_features( pl, diff --git a/tests/conftest.py b/tests/conftest.py index fd7d629..85c5bcb 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -196,6 +196,18 @@ def disc12_analysis(disc12_path): return _analyze_fixture(disc12_path) +@pytest.fixture(scope="session") +def disc13_path() -> Path: + """Return path to bundled disc13 fixture.""" + return _fixture_path("disc13") + + +@pytest.fixture(scope="session") +def disc13_analysis(disc13_path): + """Run and cache full analysis for the bundled disc13 fixture.""" + return _analyze_fixture(disc13_path) + + @pytest.fixture def cli_runner() -> Callable[..., subprocess.CompletedProcess[str]]: """Return helper to invoke `python -m bdpl.cli` consistently in tests.""" diff --git a/tests/fixtures/disc13/CLIPINF/00000.clpi b/tests/fixtures/disc13/CLIPINF/00000.clpi new file mode 100644 index 0000000000000000000000000000000000000000..3cb2f614636488f7db1267e3eb2d1baf7140f491 GIT binary patch literal 444 zcmeZp@eMODGB99ZV7LRs-xwGeO@Md@kc|#D0L2->g3-MV46Nn~=nCl0muv6R4k9o)LJUI4XN!DN^i1O!E;6M-RMfCNB>3NnZ`7-kjZAqj)R2?QE| zx)}uo8CV!382EvFJ|G5$8`B9O&BDOobdrG~hLwS_=_CV_Mk)j2p;HV@Eu{?1Os5!F z0jW=(Ooxl literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc13/CLIPINF/00001.clpi b/tests/fixtures/disc13/CLIPINF/00001.clpi new file mode 100644 index 0000000000000000000000000000000000000000..be8e532cd7e46a0b6a992f0f52be34808dd60785 GIT binary patch literal 560 zcmeZp@eMODGB99ZV7LRs-xwGeO&A!MbbxGhumLE?2o{X)ZD8PD;()Gz?tHlh51{k$ zSu4f>b}=J^0GQ_1oe{(BY!6~v!DN^i1O!E;6M-RMfCNB>3NnZ`7-kjZAqj)R2?V|X zbu$VGGO#dcFsK0ed_Wum47bxjnuUSU=?nv-hdu)n(-{UPp{WeaPG=dI*JLp;H=Si* z;T2+FIdqPJ^+O&5E7Lg!HotZTHmCCp?6;#C*qY8WaB!wEa4=n9;4(fdZNR`H{XqA& zE=yIn?t}HxdJ~=(De!yfE9S4XQj)*>Q0bh|ROJ)lOe$~YZ&rQwCRjbxCsX6_nk+3P zULoz0+zOj3=N$E%^=IlYp770(`9q#jl3%;=q4lp!l?6o1JYz11$FEJ2;J+O$v5zxN t%O-V}_MF4MGQZ_ZOHj)AtWZ_|6X9F0zl+LyZ~^_s005&g3-MV3=DY-&=t^~FW2A!bUr?7 z#TdXYW@He6(6j#>V4SmND^N=oOooL)Ku}aV5f}mnNC0H0AcJUwVOBvNk}xQo7z7!C z;;DJ*=;A^Qq7#71G0XvK(E-}VC?Lqd!ob161myDpu?P^S0Wk{$gF`w4Lr|~#4+fS< JAPp2_000QQBc1>N literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc13/CLIPINF/00003.clpi b/tests/fixtures/disc13/CLIPINF/00003.clpi new file mode 100644 index 0000000000000000000000000000000000000000..ef717228606efff64f49ac63c57b0dd1aeec027c GIT binary patch literal 292 zcmeZp@eMODGB99ZV7LRs-xwGeWq?=#$VLYnfa0uR!RX!w1_q7I~1~CRk mkTfHM0EC|X=K$jz77?J35=@4XL4-kcVpc&Og8>piHWUD+&=3j$ literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc13/CLIPINF/00006.clpi b/tests/fixtures/disc13/CLIPINF/00006.clpi new file mode 100644 index 0000000000000000000000000000000000000000..9ccf866e33623bd7326ee5109dc10eb9ebf5ba2f GIT binary patch literal 10976 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 literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc13/CLIPINF/00007.clpi b/tests/fixtures/disc13/CLIPINF/00007.clpi new file mode 100644 index 0000000000000000000000000000000000000000..1e7e10c79f40d691e2a8452183f15fc1eaec7fd0 GIT binary patch literal 11304 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 QRrppub=2bVf1YRkKcg$aod5s; literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc13/CLIPINF/00009.clpi b/tests/fixtures/disc13/CLIPINF/00009.clpi new file mode 100644 index 0000000000000000000000000000000000000000..4ecf3f736f05f509bc9508937dee2efabdefd2b5 GIT binary patch literal 10796 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 F{sUcJ`Pl#f literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc13/CLIPINF/00011.clpi b/tests/fixtures/disc13/CLIPINF/00011.clpi new file mode 100644 index 0000000000000000000000000000000000000000..329243dbbb3ea82a9a4984b68effe14315289bef GIT binary patch literal 10932 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 literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc13/CLIPINF/00012.clpi b/tests/fixtures/disc13/CLIPINF/00012.clpi new file mode 100644 index 0000000000000000000000000000000000000000..e70da3f35b32bdae2f5144dbea6625b0c234072d GIT binary patch literal 468 zcmeZp@eMODGB99ZV7LRs-xwGeQ-Jsakc|#D0L2->g3-MV3@on>pevv|U#`Ie=zM(E ziZOs)%*Y@Brj=Z5W0ZV#&H}Y$!DLt%1O!E;6M-RMfCNB>3NnZ`7-kjZAqj)Ri9wJN zD4v>^jxH|5AUXl49K#%-mJFb6i~@oTK+70-fqXt7R$*Y^m`0~d`1FpGD3Nl-o8$6xOCggiM VcUbuGTjAR@R!aQntOJ_I003exJU##b literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc13/CLIPINF/00013.clpi b/tests/fixtures/disc13/CLIPINF/00013.clpi new file mode 100644 index 0000000000000000000000000000000000000000..006e58d137b97c92f013455fbc327a8d85f76e70 GIT binary patch literal 1080 zcmeZp@eMODGB99ZV7LRs-xwGeO&AzhfEWX80Ln3fMWcHg7*qluV5p$CfLwzI(E0dm z6=MLqn2|vMOv_Ccs*t;6e+#I^3MRwEARs6zod^s810(=4RFFZm!7!^J4@nplPC&r) z2dJA-K#+ljp#}&U82Etr4+8`H5+KdOz|g*wf#LW~21fU#3{0HY7?{|XF)+*hVPHDG zjDdxxoq_rIat791RtA>#ddU94gIKXXQLKyUll>pelVzAJrsuL+uH7e~75gSayUFsT&9ZI_-AOm)_4!@R6!JHGHq88+ zWEAB4*4Sq1O%t<6UZ%c!JIpkzHO)m2i&@CbU$kOa;b`^hgR1pon+Y~|JDF{t zUU+YJKsHYQTIP9$OS;@DH4>hOT1M)n zX$4n3vKCx-#>Rz*&DPHMot{R|QM((bs}*<^sukHw8w|HEmNVM_QrI{^%)(?tewyj0 z)0^B5a(#Dy9^US8aiPAK;XiZj3DL4PTUJ!rHr?89XUy~0J~GP9zWRT}o5Gi~SkVOAV0Db8B=+kN`-<(eWadYb=SpGy7cF4n$sEZgR;_>doXBum;`Lo%vdJvRq%hl z_5JJ~ov-_U>;4gWZ@0#4uDxCP6oq+@>ka)SZYw@^eI)dHT969ktpJldGDfB=q8ZI> zI^4|FPQ;mC`+3PCQ`u0nKVzp==ca0F%Lf;Iw%AU#6Pac0U-Ipq!PVdzBhDpF!t!5x IfN7io08or3Jpcdz literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc13/CLIPINF/00014.clpi b/tests/fixtures/disc13/CLIPINF/00014.clpi new file mode 100644 index 0000000000000000000000000000000000000000..f53fcaf8a63119da4b9a9a8581053d6c3d4499c3 GIT binary patch literal 1040 zcmeZp@eMODGB99ZV7LRs-xwGeO&Azhcz|qlumLE?2o{X)ZD3H2J%Fx&?tHlh51{k$ zSu4f>b}=J^0GO6f6u2S3z|IP&#R?|F#2_FjDxC-n0RtoeGE|U3w81c|AP-3x6iz_E zbOorJQ9zJ^g`tL_2q?e@#D5qV*lz%776wN5n+%NSVi*|PZ!$1xy<=cHev5(m>p=!) z_FD`rLBR|x?6(Jh#G^S`y&Q1=`9Sx?vEM7zusjKZhy=mVLXdL z)cpyAlvNIcIFOdnRb&u9{**!H_*n)CAT6h@#vs}Lj6q(cjX}!&8H0kh41+ZLa|T7n z1_tTl&l!}$+k_MtSd1HDDopwj*k<)} zG20C3UOS1djRjABao_6 zd)8XZ=T}0lmI$rYzEN=9rej%??_QP~ziP8^d+l6HhuR}*hLfbX80AH07-vkKX`*(1 zp~;SK399#GsB_XdlJU+-$>7|+s@Nw&5+GgI37(K{bq)j$V3`6;e;cdu6& z$XVqm{Hi@-xNC>IQq)sR<@r`AD*grOrtX{9nX!M@Gux)CX#S#G%3|B`vzBT9SgmS< z3#@xO)ej1mB5jUa3pJfZ&*{6AXv>6NY5yB;^5l5LRL6$Muk(ze YLx0_j*%ICs`)y6GyewldFzqq`08&>VVgLXD literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc13/CLIPINF/00015.clpi b/tests/fixtures/disc13/CLIPINF/00015.clpi new file mode 100644 index 0000000000000000000000000000000000000000..2d511427c29613d952b2615cd6e1daa64e5ee64a GIT binary patch literal 1096 zcmeZp@eMODGB99ZV7LRs-xwGeO&AzhT!3tJumLE?2o{X)ZD3H=b3j)>cfMSM2hjQW ztQBJbyO@zd08A@HI7ui>&#wY%v4Y7kF$f5XN+$wCzyJw=3>9P$Z7|F#$U_nag%c1k z^8j@-3J5Z=Fw`(K00sDf_zwdEhZvA%VPNtQXJ8WF#=ycM&cMQG#K7Vq!N6j7l7Wpw zf`QGjgMrOMl7X!ps2oUhc)erb=#XOISl-OQc|wYTOTmqSt3#TB>+(Ye?i11sJi7J_ zJSSurcs{;m;04lr!deV`CuAA;!;UiWcgQjbNE~DkI3dR%7%-PXutSbPNW-5&=!86j za7{6Tu!lT@h=2iusD}cBn8a)baSjCr3DsE);vR|&5(#Py5+@WHq+GKYBsr8Aq$a&* zkm^ukkO}_AAkCr7Aaf^{K?X?6h1oI4bf_@M^H?y*0%-+hc?P)-RR+bP6%6tmstihs zjRGwUEQU{FDva*TZ7}XR{n(_O@s+8$b%W{2q(Zgqp4;ll=W;csiEp!CXhrOcdPIo2sEmf0MbJzuu&;yqxRX8-`7SszpY literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc13/CLIPINF/00016.clpi b/tests/fixtures/disc13/CLIPINF/00016.clpi new file mode 100644 index 0000000000000000000000000000000000000000..c6f486a410faf97f4fccd7de533831d99b46a780 GIT binary patch literal 1312 zcmcgrYfMvT7=8+^2T{8gJ_OzTTZBMNtp;ayu6v)O{L_iUpAtu{I6!Dg0 z#+W*nXmmzq#Nh&)%q(&%GKCfpIzgkxsGD+;c?s;|)Me8hO_msc?B|~3%kzHE`@Y}z z=E?WDQ!;WXGerTo!L2_49t{X2T>LstaXH>gF~7DN)Xo*J7yR#gX||ma)4;%Vm^388+fZM;IVB82wjUnq8))P(-FwFgHKZ6`#K<~350;{z%*ttrujS| zChveCJP1l(jUb{E(>tRO#C9TBdJw_vSX^XHMP3yPQO7k0OdE>e+C=v~{cSjKKus#EM*_wfTx8~@RE z+a;>SzOU>frt)OJ!~RgFABb!=+*!jo?{zL*D3dUzAF`?BBYTGvD=vxYUYkZ$wzhWe z#Fa6P&YEM*I(#8M_6lPg5S7|TOG=qP+ln&No*h&hnx$tesvC4RgfKC zo$1}jrRK9aq_Squ5N+>wTRx6yjr(>(xVrrKMAF8oJZnsBm#wmTRCjbFgZYUWc04)M zXK1+CVcZ{?VG{3XQ!JbOQh707NROW?54$b6+2u|y(GN!whxE&bD;xsJo) U5yQiZr(}kINL;NEaDN&90Hm^d0RR91 literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc13/CLIPINF/00017.clpi b/tests/fixtures/disc13/CLIPINF/00017.clpi new file mode 100644 index 0000000000000000000000000000000000000000..17d82c5deb7f673355764ad81e2b034dec5c88c7 GIT binary patch literal 1856 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 CWopL& literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc13/CLIPINF/00020.clpi b/tests/fixtures/disc13/CLIPINF/00020.clpi new file mode 100644 index 0000000000000000000000000000000000000000..2591ee176c659bf4ee3cc216fd17c59548fe62cf GIT binary patch literal 292 zcmeZp@eMODGB99ZV7LRs-xwGeWq?=#$VLYnfa0uR!RX!wAPvF;3*;I+fX>I~1~CRk mkTfHM0EC|X=K$jzrnx{NC728&g9wA@#H@lm1_LC3Y$yP~mk^Nv literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc13/META/DL/bdmt_eng.xml b/tests/fixtures/disc13/META/DL/bdmt_eng.xml new file mode 100644 index 0000000..32b1c66 --- /dev/null +++ b/tests/fixtures/disc13/META/DL/bdmt_eng.xml @@ -0,0 +1,6 @@ + + + +TEST DISC 13 + + diff --git a/tests/fixtures/disc13/MovieObject.bdmv b/tests/fixtures/disc13/MovieObject.bdmv new file mode 100644 index 0000000000000000000000000000000000000000..1e2b09ddb4a32693e85062d5502c74772a423910 GIT binary patch literal 2822 zcmds3OHRWu5FICJfP$zhSR;zW4v7eHfT*hq3AMdJk777UkJ58+nbz-lMjAz`$c6=W zHk0Q!_IoqV=X1UM=-#?cejU>vQf_u4^`@6#2~W`?k;NBd&h13rSAAuZ;W5w60J!|1 zF>)+slH#@FPh8wO{)NNuUHkyf_8=jq3%F`{MLcG#dTvi`n)^J=+oU}bHi;rt(tMTU z+0paV3w3Huz&F3ZgTt{7)&yQT-0BXzc6j6Xjp|$^&e@@w+nDwpQxjdE_0)aoMRQ+< z8*P*R*d9EGHP3j&I-`1_XA8ABJ5(Fz_ab+y5BKKn7B`M(b;r6E|Mi)p2I#P%da{P3 zBjGq~)_dw%ev^&3)@O^rUS$4nd}ePUiZt3!K2!zyY0#8{{O~7eI^)@G&r=Nv#6%nSeOJ00exELV|%xxRn=oaO=)`VYC15 ze+QTbJq89wB;A~h0)h}JR_R0_gOd@;WngVE%qqx(m}m$yQFlfRx3fJX13LvKGBD^c bFoS#ma^L^|VA~lP7`cIFBk`R2c_2Ihjt(Ms literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc13/PLAYLIST/00001.mpls b/tests/fixtures/disc13/PLAYLIST/00001.mpls new file mode 100644 index 0000000000000000000000000000000000000000..eae4e65234523e1445f286949ff6b159b2971332 GIT binary patch literal 258 zcmeYb@Ci0BGB99ZV6Xz>cR-8_@G&qlFxc#1wReE2*Z^cO0%3yz5E%Iyg#?4Rv;Q1m zoU>*tOc4VUkQE11$ixWL4*{Hv0)h}0t8^le!N~~aGO#unW)qHPA2viuDfg~e?49G3UV7D*;t%kUU1)>oclARnq0$WP5n=VTOu>SUb& zlxE;$Vqg#fi?B`v@gXiS2fKikfnVxthR~sz@Wmw477@oK?amBO~7tpU|?ckoc-qj;~W;aTbRTc)IfO}lw<$@ z2RjbLtB_lc#M}Bt9>L=^SJ{f-@m(qjM)3Fr9M8acjG#P-#0!7+4#5-PsqjPM#S2s+ zc!J^zNOD3e8>$g4S0DxF zF@tgqf+x;Afdh%>7~6p0NwNo?Lhz)*&xj%Mrq1kx^H@On0Ezd@;|78!Z6Ui9iT88c z0|ZY_?}ix?FK6j`IFA*SvXOXuWDtI5m1p4EkC2nMyb3lv>@G&p~rC5-pCji-uK$u`)U|?wAYZMX;5Axu{3L?DBcQIHABZ#2v*$m0a^M8E>96M42Iz{J2f`_BQ!IV=#xAayAW>>ztUuK52SBmn09^0ECIp;04Eb3lv>@G&p~rC5-pCji-uK$u`)U|?wIYZMX;{V V#k=1SJjLDdn-DxD=i^r)JOGw`EhYc} literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc13/PLAYLIST/00005.mpls b/tests/fixtures/disc13/PLAYLIST/00005.mpls new file mode 100644 index 0000000000000000000000000000000000000000..1b3f4867e056180d4b4546b941c833978205e7af GIT binary patch literal 240 zcmeYb@Ci0BGB99ZV6Xz>b3lv>@G&p~rC5-pCji-uK$u`)U|?wMYZMX;bF3=B*RjI;k7V4TAOQ4CTi2NDEQKv(?#4-x?LF7`i#@Bk5c8<+q9 literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc13/PLAYLIST/00006.mpls b/tests/fixtures/disc13/PLAYLIST/00006.mpls new file mode 100644 index 0000000000000000000000000000000000000000..3d256b6220e4c72462cda49f1f9547f388cdfafc GIT binary patch literal 240 zcmeYb@Ci0BGB99ZV6Xz>b3lv>@G&p~rC5-pCji-uK$u`)U|?wCYZMX;l>j z2Qm!-?0^bEDxrXrQ9uyFWR*??GB_EbTn5$#!>oclP9_Eh5wHT*i9jxhrNY1rBpDfG rfOZ*}g6(2pU}9jL{pSGV92SUTkUBY#AOqMH|Nnyoz`Xf=t`Hsot=bw- literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc13/PLAYLIST/00007.mpls b/tests/fixtures/disc13/PLAYLIST/00007.mpls new file mode 100644 index 0000000000000000000000000000000000000000..48d0cbc7dc652772439d1aea25b32617dc56e4f1 GIT binary patch literal 240 zcmeYb@Ci0BGB99ZV6Xz>b3lv>@G&p~rC5-pCji-uK$u`)U|?wKYZMX;DCz+eYd2vP|JoQwj35GJd1B9Ot!2<0-cHW+3V^}z>=deH&gVf1^1R21t`2Qay0On2G-wNRY0EoC5_5c6? literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc13/PLAYLIST/00008.mpls b/tests/fixtures/disc13/PLAYLIST/00008.mpls new file mode 100644 index 0000000000000000000000000000000000000000..77c371cbdfa670a7f37dd4e2004048d303682038 GIT binary patch literal 240 zcmeYb@Ci0BGB99ZV6Xz>b3lv>@G&p~rC5-pCji-uK$u`)U|?wGYZMX;b3lv>@G&p~rC5-pCji-uK$u`)U|?wOYZMX;1_nEzLXb)*;A9jKgfLm96M+m)MktqowZSl}Adi!Yfk6bUfOR5}3u37-Fat?O u1{t7T2Bu)U7#Nrs7-#=Ez&M8mq8Ox34kX9`cE$hyAOR3h(Rlv{2oC^}{T%oJ literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc13/PLAYLIST/00010.mpls b/tests/fixtures/disc13/PLAYLIST/00010.mpls new file mode 100644 index 0000000000000000000000000000000000000000..5a3399fdd70c1b9f1d88fcf0239c94b5a93d1e75 GIT binary patch literal 842 zcmZ|NKP&@L90&0CjwWryMUfIDG%*-R?wX zB+Mi%EV_uQwyvr=Sh_Hij-=jQoA@r?<-Pnq@Apl9H$0ntKoU%XKnUqzJI3~Zizk$| zilM#3YRbMTK@dcX&E$|6O11OVym#0IIYPQvP)Qb+j+W{3rKZ-(3LPzwXg0)!MYoP4 zq*4uN0*p%4NQ&4=NgbPI64Y6QaD*Ow-_k?wNDZ@tTO%#X9OW-^IrUaiNjd{Eq(zYN z)dy-$$)NU>5!CzQ0ojrv(0Ec0nt67D+=&a&dV+#BhghPMgwP8J|;@$}|_*+5st7o95xhjx2>Iaz(lORi5 z4XAS@4eDOm16g++puVeeQ2+8fXwZBOvS+tI(&aR0EZG2>2xdXEK`Y25!OP;8PQ3Zv EFJGau`Tzg` literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc13/PLAYLIST/00011.mpls b/tests/fixtures/disc13/PLAYLIST/00011.mpls new file mode 100644 index 0000000000000000000000000000000000000000..17a12e5ce573ada6f0019a83c61f57263c0afef8 GIT binary patch literal 240 zcmeYb@Ci0BGB99ZV6Xz>b3lv>@G&p~rC5-pCji-uK$u`)U|?wJYZMX;2|b z_bHM(1_nEzLXb)*;A9jKgfLm96M+m)MktqowZSl}Adi!Yfk6bUfOR5}3u37-Fat?O t1{t7T2Bu)U7#Nrs7-#=Ez&M8mq8Ox34kX9`cE$hyAOSG%#N7`N9suIi9sU3S literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc13/ics_menu.bin b/tests/fixtures/disc13/ics_menu.bin new file mode 100644 index 0000000000000000000000000000000000000000..1bb03c317ee59ab9228d87e117342d58c8e3c872 GIT binary patch literal 7207 zcmds*OKe?N6^8$P9{1Xg9XodH#IY0GNu3wvkrap_0i3q9;gL%MEiDa?0_D}x@+fT$ zE%XK=#GteT1|4L8Dkez40Kte+B#Ia@^ne*+#LyB#0tspJt$p@!&c0X9y-^wU{IPSq z&cD_#oCnAy`ja0uB4Km^zvR#_Rsrn^NHs|cJue_h4st`P~|S)P~PQ+ zAJ>p)QSOiz4S62rS&zJkaqJ<6^BjwYrYvC=3#IcO8$5J&J35_4_m;i4ZKD`?U{MO2tYxjypD#Ahxs}RyvBgnE>LTP zL{s5Z*gIZD!^X}q4w~sp?mLyR^1EQ!*cv84%4#{aV7W(O*>@WHZMB`+uv)*&Uk`qm zFS|i%Ys6^;7WuIi{4`%DLCP9+8m(Bb2S3f%DUhg$Hyp};zdnVDY zQ{*JtHkRi33h+7%ypDjT_I#opQ>VNSZJV{``5nMBHCOq46g0J$6785$y)zC zCIPl(;N}(6t91?yOD!-!Bc@vZA2Pwx%y0}ONu-!+M1ONT)sE|U4{MjxE@k9i*&jr|F9IE7`mfF8HaAa$lr`%#Td`KdytKJ_7f4xiPIItWGFHR9 zwYmFFkg&q`ax<#dN0@$s}YNhyN$8yi&N82zT0(y$>O-|Za(k5ulP5H=Erfj+)*+{Rwe{@ z^XTqboyE~}!0UbB&E;;vR*1*BC%^^!sjUs~2VNflUh81G5#a3q8sIDm@MLdLn}3G@ zXGwr>$#3e$VB79n2RlrTs&+Hi%jo)foyY0Bf!96Y&FgwA3pHuEhR3lcwS_oYjl*o( z9!M)r1HDbnG^>3B=p$JuRLh_6f*~sjdx6nMiN>7mS-1S2u`E=tr0&anjthn0y}Fmk zeGquv2g;bb?HGDIs!}ed#Q3&%@g}YXVa*P;NMine-H+i5!0SWcjhP?MLLHNLaDZwV zr}yi_!0RKx>!YCg23wkO;6?~bbf9k$jShqjB@{r3`HQ-U;STWn7_FzM(Fqc6vi|ORQGOs^;sqHdqj?-UEGaNSBIz&X$L6>(3MkcCG^hH1?DJXypIO z&WCxxTY8{UWIZl@23Zw^aeysuV^1I!qU+LQWSI8Sq??)!=~&I?Qd)A$n_ zcAf?UG!~uB$!`0QejCo-oWBQX9CSKpWAiw*mz~qW0F6UVhboO%!#SO^`T&h3rzPe! zYyD<8)7!cJ5-_!TOO%$Kmid$Fa8t_>mvy;^wc@m5wthxgVds3q$3bfAu+!m+^>XL~ zSTCTTb;Riitl|_WUF#DVJ^@l&chC|rTOC-|8!$WoQr4=|DlESKO6VO}|DfO2QKzF7 z>o=jdVEu&$L2B!m(=k}(YPJ>5`gY#`BuH7uosL(wwq$30!$Tltop3r4SlF_&zTshz zvQ9dkgvE($E1dQ1y#FbXu=ey#c*%bN=@cJz9`WzU}Qfy&mXZWTZE3_2# zDDe6`@cIH6&QeizHnG&fQi*?UeGzy)2E4umhO-n~TUffr7g=+v)R%$RSAf@7!Elyh zn=Ah#-nICioH73z@Om70JpqQZ6kA?c>R`#*ZKL`+@Olz>Jq3od6kB2C&-tbith5;O zZvd}v0fSHt>2Hczp*9XDPPPLbI*z*gm6Y(rKXBMkDJsx7%p_ ztk_1&pC)>B8|_&=+hZ%X(Xe%GyN&jop6g-7Hd=X+v8vl>8`|h$#Wq_0Ff41K8NLgW zNvyh!_77OrLNk01q^#IRYrO`mZlm?TF}Bh8u1;Ow>3NXaifuGTqO;vbdqFSsu-xTd|GCc%7}wG5r9fth$Z%QvOt3Qt3sIvZ^x5)}hzxGD=;LvZ~Tat$${J usY@qa1u3g4G0fIhU1I2mAZ1l004!`-OWp7zkg}?6pG1Zgw|!j$3G07Lawg~i literal 0 HcmV?d00001 diff --git a/tests/fixtures/disc13/index.bdmv b/tests/fixtures/disc13/index.bdmv new file mode 100644 index 0000000000000000000000000000000000000000..f3bdcac7b472928ae06d90e9b49bdbad52762de4 GIT binary patch literal 228 zcmaLMyAgvx5CqZYk5Cqh;ED*wz`?;LE=9~W1}0OruXcC#V>`=Q3UJhU%kQmxx__P( l-0L*=Yw@aSB?6s9pqB^?5`j@7Fi8YviNHr9ut)^Hash*x27~|r literal 0 HcmV?d00001 diff --git a/tests/test_disc13_scan.py b/tests/test_disc13_scan.py new file mode 100644 index 0000000..d38d2d9 --- /dev/null +++ b/tests/test_disc13_scan.py @@ -0,0 +1,87 @@ +"""Integration tests for the disc13 fixture scan results. + +Disc13 is a six-episode bonus disc with the most complex special features +page in the box set (9 specials): +- Play_all (00002.mpls, 7 clips, 38 chapters) decomposes into 6 episodes + at IG chapter marks [0, 6, 13, 19, 25, 31]. Five ~24 min, one ~23.6 min. +- Two individual playlists (00003-00004) are commentary / alt-audio tracks + for episodes. Both detected as commentary specials. +- Five creditless OP/ED playlists (00005-00008, 00011) each ~1.5-2 min. +- Two extra / promotional playlists (00009, 00010) — 3.3 min and 8.8 min. +""" + +import pytest + +from bdpl.model import DiscAnalysis + +pytestmark = pytest.mark.integration + + +class TestDisc13Episodes: + def test_finds_six_episodes(self, disc13_analysis: DiscAnalysis) -> None: + """Disc13 should infer exactly six episodes from play_all.""" + assert len(disc13_analysis.episodes) == 6 + + def test_episodes_are_ordered(self, disc13_analysis: DiscAnalysis) -> None: + """Verify inferred episode sequence is [1..6].""" + assert [ep.episode for ep in disc13_analysis.episodes] == [1, 2, 3, 4, 5, 6] + + def test_all_episodes_from_play_all(self, disc13_analysis: DiscAnalysis) -> None: + """All episodes should come from the play_all playlist.""" + for ep in disc13_analysis.episodes: + assert ep.playlist == "00002.mpls" + + def test_episode_durations_reasonable(self, disc13_analysis: DiscAnalysis) -> None: + """Each episode should be ~20–28 min.""" + for ep in disc13_analysis.episodes: + dur_min = ep.duration_ms / 60_000 + assert 20 < dur_min < 28, f"Ep {ep.episode} duration {dur_min:.1f}min out of range" + + +class TestDisc13Specials: + def test_special_count(self, disc13_analysis: DiscAnalysis) -> None: + """Disc13 should have 9 specials total.""" + assert len(disc13_analysis.special_features) == 9 + + def test_commentary_count(self, disc13_analysis: DiscAnalysis) -> None: + """Two specials should be commentary / alt-audio tracks.""" + commentaries = [ + sf for sf in disc13_analysis.special_features if sf.category == "commentary" + ] + assert len(commentaries) == 2 + + def test_commentary_playlists(self, disc13_analysis: DiscAnalysis) -> None: + """Commentary tracks should reference individual episode playlists.""" + playlists = { + sf.playlist for sf in disc13_analysis.special_features if sf.category == "commentary" + } + assert playlists == {"00003.mpls", "00004.mpls"} + + def test_creditless_count(self, disc13_analysis: DiscAnalysis) -> None: + """Five specials should be creditless OP/ED tracks.""" + creditless = [ + sf for sf in disc13_analysis.special_features if sf.category == "creditless_ed" + ] + assert len(creditless) == 5 + + def test_extra_count(self, disc13_analysis: DiscAnalysis) -> None: + """Two specials should be extras (promotional content).""" + extras = [sf for sf in disc13_analysis.special_features if sf.category == "extra"] + assert len(extras) == 2 + + +class TestDisc13Metadata: + def test_disc_title(self, disc13_analysis: DiscAnalysis) -> None: + """Disc title should be extracted from META/DL/bdmt_eng.xml.""" + assert disc13_analysis.disc_title == "TEST DISC 13" + + def test_play_all_detected(self, disc13_analysis: DiscAnalysis) -> None: + """00002.mpls should be classified as play_all.""" + classes = disc13_analysis.analysis.get("classifications", {}) + assert classes.get("00002.mpls") == "play_all" + + def test_ig_chapter_marks(self, disc13_analysis: DiscAnalysis) -> None: + """IG hints should report 6 chapter marks for episode starts.""" + ig = disc13_analysis.analysis.get("disc_hints", {}).get("ig_menu", {}) + marks = ig.get("chapter_marks", []) + assert marks == [0, 6, 13, 19, 25, 31] diff --git a/tests/test_disc_matrix.py b/tests/test_disc_matrix.py index 84a9c6e..af7cffc 100644 --- a/tests/test_disc_matrix.py +++ b/tests/test_disc_matrix.py @@ -24,6 +24,7 @@ ("disc10_analysis", 5, ["00002.mpls"] * 5), ("disc11_analysis", 6, ["00002.mpls"] * 6), ("disc12_analysis", 5, ["00002.mpls"] * 5), + ("disc13_analysis", 6, ["00002.mpls"] * 6), ], ) def test_disc_episode_expectation_matrix( @@ -53,6 +54,7 @@ def test_disc_episode_expectation_matrix( ("disc10_analysis", 3, 3), # 3 commentaries (play_all-only episodes) ("disc11_analysis", 1, 1), # 1 short extra ("disc12_analysis", 3, 3), # 3 commentaries (play_all-only episodes) + ("disc13_analysis", 9, 9), # 2 commentary + 5 creditless + 2 extra ], ) def test_disc_special_visibility_expectation_matrix( @@ -86,6 +88,7 @@ def test_disc_special_visibility_expectation_matrix( "disc10_analysis", "disc11_analysis", "disc12_analysis", + "disc13_analysis", ], ) def test_disc_episode_segment_boundaries_matrix( @@ -123,6 +126,7 @@ def test_disc_episode_segment_boundaries_matrix( "disc10_analysis", "disc11_analysis", "disc12_analysis", + "disc13_analysis", ], ) def test_disc_special_boundary_semantics_matrix( @@ -167,6 +171,7 @@ def test_disc_special_boundary_semantics_matrix( ("disc10_analysis", 0), ("disc11_analysis", 0), ("disc12_analysis", 0), + ("disc13_analysis", 0), ], ) def test_disc_special_chapter_split_expectation_matrix( @@ -194,6 +199,7 @@ def test_disc_special_chapter_split_expectation_matrix( ("disc10_analysis", "TEST DISC 10"), ("disc11_analysis", "TEST DISC 11"), ("disc12_analysis", "TEST DISC 12"), + ("disc13_analysis", "TEST DISC 13"), ], ) def test_disc_title_extraction_matrix(