PageSourceSearch

https://volumo.com/_next/static/chunks/pages/album/[albumIdOrIcpn]/clips-c254b632591f8339.js

js volumo.com collected 2026-10-03 21:22:55 UTC 16,145 bytes, 1 lines download raw bytes

1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[591],{13348:(e,t,a)=>{"use strict";a.d(t,{G:()=>b});var r=a(80263),i=a(90244),s=a(96417),l=a(42900),o=a(10330),n=a(43481),d=a(53239),c=a(93340),u=a(22894),g=a(93682),m=a.n(g);let b=e=>{let{mediaCache:t,settings:a}=e,g=(0,d.useRef)(null),b=(0,d.useMemo)(()=>(0,s.QA)(a?.aspectRatio??"1:1"),[a?.aspectRatio]),f=(0,d.useRef)(void 0),[v,h]=(0,d.useState)();(0,u.n)();let C=(0,d.useCallback)(async()=>{f.current&&f.current.abort(),f.current=n.Ay.newWithSignal(async(e,r,s)=>{let n;try{if(a.trackId&&a.bgColor&&a.fgColor){let e=t.getTrack(a.trackId),r=t.getArtwork(a.trackId,l.Xl.width),s=t.getLogo(a.bgColor),d=t.getPlate(a.trackId,a.bgColor),u=t.getQrCode(a.trackId,a.fgColor,a.bgColor,!1);e&&r&&s&&u&&(n={artwork:await (0,c.uu)(r,l.Xl),bgColor:a.bgColor,fgColor:a.fgColor,logo:await (0,c.uu)(s,l.kC),plate:d?await (0,c.uu)(d,l.fJ):void 0,qrCode:await (0,c.uu)(u,l.Tn),size:b,subtext:(0,i.vl)(e),text:[e?.artists.map(e=>e.name).join(", "),e?.recordlabel?.name].filter(o.vN).join(" • ")})}s.aborted?r("Aborted"):e(n??{size:b})}catch(e){r(e)}});try{let e=await f.current;h(e)}catch(e){if(!(e instanceof n.lc))throw e}},[a]);return(0,d.useEffect)(()=>(C(),t.subscribe(C),()=>t.unsubscribe(C)),[C,t]),(0,d.useEffect)(()=>{let e=g.current?.getContext("2d");e&&v&&l.aC({ctx:e,...v})},[v]),(0,r.jsx)("canvas",{className:m().canvas,height:b.height,ref:g,width:b.width},a.trackId)}},20865:(e,t,a)=>{"use strict";a.d(t,{Ze:()=>g,b0:()=>u,c0:()=>c,v8:()=>d,yq:()=>n});var r=a(98720),i=a(3305),s=a(89654),l=a(51143),o=a(35951);let n={album:(e,t,a)=>({userEmail:e,scope:o.B.Album,albumIdOrIcpn:t,trackId:a}),albumRelatedAlbums:(e,t,a)=>({...n.album(e,t),subscope:o.B.RelatedAlbums,sort:a?.sort,listenedBefore:a?.listenedBefore}),albumRelatedContributors:(e,t,a,r,i)=>({...n.album(e,t),subscope:o.B.RelatedContributors,type:a,limit:r,sort:i?.sort,followedBefore:i?.followedBefore}),albumPlaylists:(e,t)=>({userEmail:e,scope:o.B.AlbumPlaylists,albumIdOrIcpn:t})},d=(e,t,a)=>{let{api:o}=(0,s.gf)(),{user:d}=(0,l.IE)();return(0,r.I)({queryKey:[n.album(d?.email,e,t)],queryFn:"number"==typeof e?()=>o.getAlbumById(e):"string"==typeof e?()=>o.getAlbumByIcpn(e):void 0!==t?()=>o.getAlbumByTrackId(t):i.hT,...a})},c=(e,t)=>{let{api:a}=(0,s.gf)(),{user:i}=(0,l.IE)();return(0,r.I)({queryKey:[n.albumPlaylists(i?.email,e)],queryFn:()=>a.getAlbumPlaylists(e),enabled:t})},u=(e,t)=>{let{api:a}=(0,s.gf)(),{user:o}=(0,l.IE)();return(0,r.I)({queryKey:[n.albumRelatedAlbums(o?.email,e,t)],queryFn:e?()=>a.getAlbumRelatedAlbums(e,{sort:t?.sort,listened_before:t?.listenedBefore}):i.hT})},g=(e,t,a,o)=>{let{api:d}=(0,s.gf)(),{user:c}=(0,l.IE)();return(0,r.I)({queryKey:[n.albumRelatedContributors(c?.email,e,t,a,o)],queryFn:e?()=>d.getAlbumRelatedContributors(e,{type:t,limit:a,sort:o?.sort,followed_before:o?.followedBefore}):i.hT})}},26299:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>el});var r=a(80263),i=a(70719),s=a(24318),l=a(1985),o=a(78852),n=a(61469),d=a(53239),c=a(20865),u=a(84725),g=a(60719),m=a(23107),b=a(67445),f=a(57975),v=a(43959),h=a(904),C=a(13463),k=a(6750),p=a(24426),I=a(33946),x=a(8639),y=a(34187),j=a(24422),w=a(33281),_=a(33364),A=a(13380),T=a(54923),P=a(75922),S=a(13348),R=a(36334),E=a(46947),B=a(42900),F=a(9826),N=a(89654),M=a(33064),V=a(93340),U=a(30454),K=a(97930),q=a(34131),O=a(6461),z=a(89316);let L=e=>{let{mediaCache:t,settings:a}=e,i=(0,P._B)(),{playbackServer:s}=(0,g.cs)(),{rerender:l}=(0,q.v)(),n=(0,d.useCallback)(e=>{void 0!==e&&(i.setTime(e,"renderer"),l())},[i]),c=(0,d.useCallback)(e=>{s.implicitlyMuted=!1,i.setIsPlaying(e,"renderer"),l()},[]),u=(0,d.useCallback)(e=>{s.implicitlyMuted=e,l()},[]);return(0,d.useEffect)(()=>{let e=e=>{let{source:t}=e;"renderer"!==t&&(0,d.startTransition)(()=>{l()})};return i.subscribe(e),()=>{i.unsubscribe(e)}},[]),(0,r.jsxs)(K.xA,{children:[(0,r.jsx)(z.r,{mediaCache:t,settings:a,style:{aspectRatio:(a.aspectRatio??"9:16").replace(":","/")}}),(0,r.jsx)(o.K,{mt:3}),(0,r.jsx)(O.n,{duration:a.fragments?.reduce((e,t)=>e+(t.duration??0),0),isMute:s.implicitlyMuted,isPlaying:i.getIsPlaying(),time:i.getTime(),onMute:u,onPlaybackToggle:c,onTimeChange:n})]})};var Q=a(12556),D=a(96776),X=a(85056),G=a(50016),W=a(37247),Z=a(3638),H=a(98219),J=a(7265),Y=a(72327),$=a(75756),ee=a(86504),et=a.n(ee);let ea=e=>{let{album:t,disabled:a,mediaCache:i,settings:s,onSettingsChange:l}=e,{t:n}=(0,C.c3)(),{isBelowSm:c,isBelowMd:u}=(0,Q.yU)(),{playbackServer:f}=(0,g.cs)(),v=(0,P._B)(),{rerender:k}=(0,q.v)(),p={albumId:t.id,fragments:t.tracks.map(e=>({trackId:e.id,start:Math.floor(e.duration/3),duration:Math.min(8e3,Math.floor(e.duration/3))}))},[I,x]=(0,d.useState)(s?.fragments[0]?.trackId),{fragment:y}=m.G9(s?.fragments,v.getTime())??{},j=(0,d.useCallback)((e,t)=>{let a=m.E(s?.fragments,t);v.setTime(a+e+1,"settings")},[s?.fragments]),w=(0,d.useCallback)(e=>{s?.fragments&&l({...s,fragments:(0,W.j$)(s.fragments,s.fragments.findIndex(t=>t.trackId===e.trackId),e)})},[s,l]),_=(0,d.useCallback)(e=>{f.implicitlyMuted=!1,v.setIsPlaying(e,"settings"),k()},[]);(0,d.useEffect)(()=>{let e=e=>{let{source:t}=e;"settings"!==t&&k()};return v.subscribe(e),()=>{v.unsubscribe(e)}},[s]),(0,D.I)(()=>{y&&x(y.trackId)},[y]);let A=(0,d.useCallback)(e=>{},[]),{palette:T}=(0,$.T)({sceneType:"albumVideo",settings:s??p,onSettingsChange:a?A:l,mediaCache:i,onBeforeUpdate:()=>{x(e=>e??s?.fragments[0]?.trackId)},onAfterUpdate:()=>{k()}}),S=[...T??[],F.Ee.fgColor,F.Ee.bgColor];return(0,r.jsxs)(K.xA,{children:[(0,r.jsx)(G.V,{className:(0,Z.A)(et().title,a&&et().disabled),variant:"vividH2",children:n("Appearance")}),(0,r.jsx)(o.K,{mt:u?2:3}),(0,r.jsx)("div",{className:a?et().disabledContent:void 0,children:(0,r.jsx)(H.J,{bgColor:s?.bgColor??F.Ee.bgColor,disabled:a,fgColor:s?.fgColor??F.Ee.fgColor,paletteColors:S,thirdColumn:(0,r.jsx)(h.v,{reserveLabelSpace:!0,children:(0,r.jsxs)(K.xA,{alignItems:"center",className:et().switch,columns:"1fr auto",children:[(0,r.jsx)(G.V,{variant:"body1",children:n("Show track t
1itle")}),(0,r.jsx)(X.d,{value:s?.showTitle??!0,onChange:e=>{s&&l({...s,showTitle:e})}})]})}),onBgColorChange:e=>{s&&l({...s,bgColor:e})},onFgColorChange:e=>{s&&l({...s,fgColor:e})}})}),(0,r.jsx)(o.K,{mt:c?2:3}),(0,r.jsx)(b.c,{variant:"zero"}),(0,r.jsx)(o.K,{mt:c?2:3}),(0,r.jsx)(G.V,{className:(0,Z.A)(et().title,a&&et().disabled),variant:"vividH2",children:n("Music")}),(0,r.jsx)(o.K,{mt:c?2:3}),(0,r.jsx)("div",{className:a?et().disabledContent:void 0,children:(0,r.jsx)(h.v,{children:(0,r.jsx)(K.xA,{verticalSpacing:c?void 0:1,children:s?s.fragments.map(e=>(0,r.jsx)(Y.s,{expanded:I===e.trackId,fragment:e,isPlaying:y===e&&v.getIsPlaying(),mediaCache:i,time:y===e?v.getTime()-m.E(s.fragments,e):void 0,onFragmentChange:w,onPlaybackToggle:_,onTimeChange:j},e.trackId)):p.fragments.map((e,a)=>{let i=t.tracks.find(t=>t.id===e.trackId);return(0,r.jsx)("div",{className:et().disabledContent,children:i&&(0,r.jsx)(J.F,{defaultDuration:e.duration,isPlaying:!1,range:void 0!==e.start&&void 0!==e.duration?{from:e.start,to:e.start+e.duration}:void 0,showWaveform:0===a,track:i})},e.trackId)})})})})]})},er=e=>{let{album:t,contextPath:a}=e,{t:s}=(0,C.c3)(),{cookieData:l}=(0,A.iT)(),{playbackServer:n}=(0,g.cs)(),{getIsPlaying:c,setIsPlaying:u,getTime:K,setTime:q,subscribe:O,unsubscribe:z}=(0,P._B)(),{sceneType:Q,aspectRatio:D,template:X,validationTriggered:G,imageSettings:W,videoSettings:Z,mediaCache:H,setImageSettings:J,setVideoSettings:Y,handleSceneTypeChange:$,handleAspectRatioChange:ee,handleTemplateChange:et,handleMissingSettings:er}=(()=>{let[e,t]=(0,d.useState)(),[a,r]=(0,d.useState)(),[i,s]=(0,d.useState)(),[l,o]=(0,d.useState)(!1),[n,c]=(0,d.useState)(),[u,g]=(0,d.useState)(),[m]=(0,d.useState)(()=>new U.d),b=(0,d.useCallback)(e=>{e||(g(void 0),c(void 0),o(!1)),r(void 0),s(void 0),t(e)},[]),f=(0,d.useCallback)(e=>{e||(g(void 0),c(void 0),s(void 0),o(!1)),e&&u&&g({...u,aspectRatio:e}),e&&n&&c({...n,aspectRatio:e}),r(e)},[u,n]),v=(0,d.useCallback)(e=>{e||(g(void 0),c(void 0),o(!1)),s(e)},[]);return{sceneType:e,aspectRatio:a,template:i,validationTriggered:l,imageSettings:n,videoSettings:u,mediaCache:m,setImageSettings:c,setVideoSettings:g,handleSceneTypeChange:b,handleAspectRatioChange:f,handleTemplateChange:v,handleMissingSettings:(0,d.useCallback)(()=>{o(!0)},[])}})();(e=>{let{album:t,sceneType:a,aspectRatio:r,template:i,imageSettings:s,videoSettings:l,setImageSettings:o,setVideoSettings:n,mediaCache:c}=e,{api:u}=(0,N.gf)(),g=(0,d.useRef)(Promise.resolve());(0,d.useEffect)(()=>{if("trackImage"===a){let e=t.tracks[0],a=r??"9:16",i=async()=>{try{await B.V1({...B.wN,cache:c,imageApi:E.C,storeApi:u,shareUrlBase:M.Z4.volumoShareUrl||M.Z4.volumoStoreUrl,albumId:t.id,trackId:e.id,...s,aspectRatio:a}),s||o({...await (0,V.XW)(c,e.id,t.id),aspectRatio:a})}finally{c.emitOnChange()}};g.current=g.current.then(i)}},[s,a,r]),(0,d.useEffect)(()=>{if("albumVideo"===a&&r&&i){let e=t.tracks[0],a=async()=>{try{if(await F.x({...F.Ee,cache:c,imageApi:E.C,roundedQr:"circle"===i,storeApi:u,shareUrlBase:M.Z4.volumoShareUrl||M.Z4.volumoStoreUrl,albumId:t.id,trackId:e.id,...l,aspectRatio:r,animationType:i}),!l){let e=await (0,V.ZI)(c,t.id,r,i);n(e)}}finally{c.emitOnChange()}};g.current=g.current.then(a)}},[a,l,r,i])})({album:t,sceneType:Q,aspectRatio:D,template:X,imageSettings:W,videoSettings:Z,setImageSettings:J,setVideoSettings:Y,mediaCache:H});let{isOpen:ei,open:es,close:el}=(0,v.F)(),eo=(0,d.useRef)(),en=(0,d.useCallback)(()=>{l.hasDebugSet&&es()},[l.hasDebugSet,es]);(0,d.useEffect)(()=>(n.implicitlyMuted=!0,u(!0,"renderer"),()=>{n.implicitlyMuted=!1,n.triggerPlayback(void 0)}),[]),(0,d.useEffect)(()=>{"albumVideo"===Q&&D&&X||n.triggerPlayback(void 0)},[Q,D,X]);let ed=(0,T.UV)(s),ec=s("Clips"),eu=(0,d.useMemo)(()=>({title:ec}),[ec]),eg=(0,d.useMemo)(()=>[ed.Root,(0,T.WL)(t,l.viewMode,s)??ed.Loading,(0,T.zs)(t)??ed.Loading,{text:ec}],[ed,ec]);(0,f.T)(Z,(e,t)=>{let r;if(!t){eo.current=void 0;return}let i=(e,i)=>{if(t&&"playback"!==i.source){let s=eo.current,l=m.G9(t.fragments,i.time);if(l&&(e.isPlaying!==i.isPlaying||e.time!==i.time||!s||s.start!==l.fragment.start||s.duration!==l.fragment.duration||s.trackId!==l.fragment.trackId)){let{fragment:e,time:t}=l;if(void 0!==e.trackId&&void 0!==e.start&&void 0!==e.duration){let r=H.getTrack(e.trackId);if(r){let l=s?.trackId!==e.trackId,o=s?.trackId===e.trackId&&s.start!==e.start;(l||"renderer"===i.source?n.triggerPlayback:n.triggerPlaybackDebounced)({trackId:e.trackId,duration:r.duration,access:(0,k.GJ)(r.release_start_at)?"limited":"standard",contextPath:a,range:{from:e.start,to:e.start+e.duration},position:o?e.start:e.start+t,instanceId:(0,g.bP)(a,e.trackId)},!!i.isPlaying&&"force"),eo.current=e}}}let o=()=>{let e=n.getActiveInstance(),a=n.position,i=n.getActiveRange(),s=i?.from,l=i?.to,d=t?.fragments;if(e&&void 0!==a&&void 0!==s&&void 0!==l&&d){let t=d.find(t=>t.trackId===e.trackId);if(t&&void 0!==t.duration){let e=m.E(d,t);void 0!==e&&(a>=l?t===d.at(-1)?q(0,"renderer"):q(e+t.duration+10,"renderer"):q(e+a-s,"playback"))}}r=requestAnimationFrame(o)};e.isPlaying&&r||!i.isPlaying?i.isPlaying||void 0===r||cancelAnimationFrame(r):r=requestAnimationFrame(o)}};O(i);let s={isPlaying:c(),source:"settings",time:K()};return i(s,s),()=>{z(i),void 0!==r&&cancelAnimationFrame(r)}});let em="albumVideo"===Q&&X&&Z?(0,r.jsx)(L,{mediaCache:H,settings:Z}):"trackImage"===Q&&X&&W?(0,r.jsx)(S.G,{mediaCache:H,settings:W}):void 0,eb="trackImage"===Q?D&&X?W:void 0:Z;return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(_.U,{aspectRatio:D,backButton:(0,r.jsx)(w.o,{artworkType:"album",artworkUuid:t.artwork_uuid??void 0,href:(0,i.FD)(t),label:s("Back to release")}),breadcrumbValues:eg,downloadButton:(0,r.jsx)(j.O,{coverImageUuid:t.artwork_uuid??void 0,sceneType:Q??"albumVideo",settings:eb,onDownloadStart:"albumVideo"===Q?en:void 0,onMissingSettings:er}),hidePlayer:"trackImage"===Q,metaFields:eu,preview:em,children:[(0,r.jsx)(h.v,{error:G&&!Q?s("Please select media type"):void 0,children:(0,r.jsx)(I.i,{contentType:"album",sceneType:Q,onChange:$})}),(0,r.jsx)(b.c,{variant:"zero"}),(0,r.jsx)(h.v,{error:G&&!D?s("Please select aspect ratio"):void 0,children:(0,r.jsx)(p.h,{aspectRatio:D,disabled:!Q,onChange:ee})}),(0,r.jsx)(b.c,{variant:"zero"}),(0,r.jsx)(h.v,{error:G&&!X?s("Please select template"):void 0,children:(0,r.jsx)(x.U,{aspectRatio:D,disabled:!D||!Q,imagePreview:W?(0,r.jsx)(S.G,{mediaCache:H,settings:W}):void 0,item:t,sceneType:Q,template:X,onChange:et})}),(0,r.jsx)(b.c,{variant:"zero"}),(0,r.jsx)(o.K,{mt:3}),"trackImage"!==Q&&(0,r.jsx)(ea,{album:t,disabled:!Q||!D||!X,mediaCache:H,settings:Z,onSettingsChange:Y}),"trackImage"===Q&&(0,r.jsx)(R.X,{disabled:!D||!X,mediaCache:H,settings:W,onSettingsChange:J})]}),Z&&(0,r.jsx)(y.F,{imageSettings:{albumId:Z.albumId,aspectRatio:Z.aspectRatio,bgColor:Z.bgColor,fgColor:Z.fgColor},item:t,open:ei,onCloseAttempt:el})]})};var ei=a(4151);let es=()=>{let e=(0,n.useRouter)(),t=(0,u.Bi)(e.query.albumIdOrIcpn);if(void 0===t)throw Error("No albumId or icpn available");let a=(0,c.v8)(t),g=a.data,m=g&&1===g.tracks.length?g.tracks[0]:void 0;return(0,d.useEffect)(()=>{m&&e.replace((0,i.zQ)(m))}
1,[m]),(0,r.jsx)(P.oQ,{children:(0,r.jsx)(l.p,{data:a.data,isLoading:a.isFetching,loader:(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(s.a,{size:80}),(0,r.jsx)(o.K,{style:{height:"100vh"}})]}),children:e=>1===e.tracks.length?null:(0,r.jsx)(er,{album:e,contextPath:"album-promo"})})})};es.renderInLayout=(e,t)=>(0,r.jsx)(ei.Y,{activeTrackId:t?.activeTrackId,noQuickSettings:t.pageConfig?.noQuickSettings,children:e});let el=es},28235:e=>{e.exports={placeholder:"FragmentSettings_placeholder__KydUP"}},36334:(e,t,a)=>{"use strict";a.d(t,{X:()=>b});var r=a(80263),i=a(42900),s=a(78852),l=a(50016),o=a(13463),n=a(3638);a(53239);var d=a(98219),c=a(75756),u=a(85316),g=a.n(u);let m={albumId:0},b=e=>{let{disabled:t,mediaCache:a,settings:u,onSettingsChange:b}=e,{t:f}=(0,o.c3)(),v=u??m,{palette:h}=(0,c.T)({sceneType:"trackImage",settings:v,onSettingsChange:t?void 0:b,mediaCache:a},[]),C=[...h??[],i.wN.fgColor,i.wN.bgColor];return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(l.V,{className:(0,n.A)(g().title,t&&g().disabled),variant:"vividH2",children:f("Appearance")}),(0,r.jsx)(s.K,{mt:3}),(0,r.jsx)("div",{className:t?g().disabledContent:void 0,children:(0,r.jsx)(d.J,{bgColor:v.bgColor??i.wN.bgColor,disabled:t,fgColor:v.fgColor??i.wN.fgColor,paletteColors:C,onBgColorChange:e=>{u&&b({...u,bgColor:e})},onFgColorChange:e=>{u&&b({...u,fgColor:e})}})})]})}},57899:(e,t,a)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/album/[albumIdOrIcpn]/clips",function(){return a(26299)}])},72327:(e,t,a)=>{"use strict";a.d(t,{s:()=>g});
1var r=a(80263),i=a(97930),s=a(25051),l=a(78852),o=a(13463),n=a(53239),d=a(7265),c=a(28235),u=a.n(c);let g=e=>{let{className:t,expanded:a,fragment:c,isPlaying:g,mediaCache:m,time:b,onFragmentChange:f,onPlaybackToggle:v,onTimeChange:h}=e,{t:C}=(0,o.c3)(),k=c.trackId?m.getTrack(c.trackId):void 0,p=(0,n.useCallback)(e=>{h?.(e,c)},[c,h]),I=(0,n.useCallback)(e=>{v?.(e,c)},[c]),x=(0,s.h)(void 0!==c.start&&void 0!==c.duration?{from:c.start,to:c.start+c.duration}:void 0);return(0,r.jsx)("div",{className:t,children:k?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(d.F,{defaultDuration:c.duration,isPlaying:g,range:x,showWaveform:a,time:b,track:k,onPlaybackToggle:I,onRangeChange:e=>{void 0!==e.from&&void 0!==e.to&&f({...c,start:e.from,duration:e.to-e.from})},onTimeChange:p},k.id),a&&(0,r.jsx)(l.K,{mt:1})]}):(0,r.jsx)(i.xA,{alignItems:"center",className:u().placeholder,children:C("Loading…")})})}},85316:e=>{e.exports={title:"TrackImageSettings_title__pba3i",disabled:"TrackImageSettings_disabled__8HF9I",disabledContent:"TrackImageSettings_disabledContent__W7Clu"}},86504:e=>{e.exports={title:"AlbumVideoSettings_title__ud0IO",disabled:"AlbumVideoSettings_disabled__whyn8",selected:"AlbumVideoSettings_selected__htei1",disabledContent:"AlbumVideoSettings_disabledContent__pbze_",switch:"AlbumVideoSettings_switch__cwSPR"}},93682:e=>{e.exports={canvas:"TrackImageRenderer_canvas__dfp6Q"}}},e=>{e.O(0,[4001,7236,2266,8288,904,5046,4802,1001,1048,1463,9890,636,6593,8792],()=>e(e.s=57899)),_N_E=e.O()}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.