{"api":"v1","generated_at":"2026-09-16T01:53:56.364Z","licence":{"name":"CC BY 4.0","url":"https://creativecommons.org/licenses/by/4.0/","attribution":"TOLL, with a link to the page cited"},"page":"https://tollindex.com/e/video-api-williamrobinson-dev-v1-video-finish-ff66e7","pinned_page":"https://tollindex.com/e/video-api-williamrobinson-dev-v1-video-finish-ff66e7/at/2026-09-15T21-20Z","pinned":false,"method":"https://tollindex.com/ledger/method","snapshot_at":"2026-09-15T21:20:12.737Z","snapshot_stamp":"2026-09-15T21-20Z","endpoint":{"slug":"video-api-williamrobinson-dev-v1-video-finish-ff66e7","canonical_url":"https://video.api.williamrobinson.dev/v1/video/finish","resource":"https://video.api.williamrobinson.dev/v1/video/finish","http_method":"POST","type":"http","x402_version":2,"registries":["cdp"],"primary_registry":"cdp","curated_by_coinbase":false,"description":"Finish a short source video (<=60s, <=1080p, <=64MB, fetched by URL) into up to two platform-preset deliverables: caller-guided crop reframing between declared subject regions (never automatic detection), sidecar or burned-in subtitles with reflow, and EBU R128 loudness normalised to the preset target and measured, never claimed compliant. Includes a contact sheet. No rights clearance performed.","service_name":"Video Finishing & Localization","declared_category":null,"declared_tags":["video","captions","reframe","loudness","localization"],"route_template":null,"registry_updated":"2026-09-11T20:08:09.794Z"},"derived":{"note":"fields no registry supplies; TOLL derives them and marks them derived on the page","title":"video finish","category":"media","first_observed_by_toll":"2026-09-11T20:57:00.628Z","last_observed_by_toll":"2026-09-15T21:20:12.737Z","observation_began":"2026-09-10"},"presence":{"listed_now":true,"first_absent_at":null,"delisting_confirmed_at":null,"events":[{"registry":"cdp","at":"2026-09-11T20:57:00.628Z","event":"listed"}]},"accepts":[{"registry":"cdp","ordinal":0,"network":"eip155:8453","asset":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913","asset_name":"USD Coin","symbol":"USDC","decimals":6,"amount_display":"0.5 USDC","amount_units":0.5,"decimals_known":true,"pay_to":"0x26026370fe8b2bb17af9092a17691c76519366da","scheme":"exact"}],"counters":{"observed_at":"2026-09-15T21:20:12.737Z","calls_30d":1,"unique_payers_30d":1,"last_called_at":"2026-09-11T20:08:09.141Z"},"validation":{"latest":{"observed_at":"2026-09-15T07:10:07.908Z","state":"pass","failed_checks":[],"endpoint_http_status":402,"run_id":"daily-2026-09-15"},"uptime":[{"days":7,"observed":5,"passed":5,"ratio":1},{"days":30,"observed":5,"passed":5,"ratio":1},{"days":90,"observed":5,"passed":5,"ratio":1}],"history_90d":[{"observed_at":"2026-09-15T07:10:07.908Z","state":"pass","failed_checks":[],"run_id":"daily-2026-09-15","state_changed":false},{"observed_at":"2026-09-14T06:35:59.351Z","state":"pass","failed_checks":[],"run_id":"daily-2026-09-14","state_changed":false},{"observed_at":"2026-09-13T06:24:50.208Z","state":"pass","failed_checks":[],"run_id":"daily-2026-09-13","state_changed":false},{"observed_at":"2026-09-12T13:58:08.223Z","state":"pass","failed_checks":[],"run_id":"daily-2026-09-12","state_changed":false},{"observed_at":"2026-09-11T23:29:39.674Z","state":"pass","failed_checks":[],"run_id":"new-2026-09-11T23-29-05-284Z","state_changed":true}]},"seller":{"wallet":"0x26026370fe8b2bb17af9092a17691c76519366da","page":"https://tollindex.com/seller/0x26026370fe8b2bb17af9092a17691c76519366da","endpoints":12,"hosts":12},"reports":0,"registry_record":{"cdp":[{"tags":["video","captions","reframe","loudness","localization"],"type":"http","accepts":[{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"name":"USD Coin","version":"2"},"payTo":"0x26026370fe8b2bb17af9092a17691c76519366da","amount":"500000","scheme":"exact","network":"eip155:8453","maxTimeoutSeconds":300}],"quality":{"lastCalledAt":"2026-09-11T20:08:09.141Z","l30DaysTotalCalls":1,"l30DaysUniquePayers":1},"resource":"https://video.api.williamrobinson.dev/v1/video/finish","extensions":{"bazaar":{"info":{"input":{"body":{"brand":null,"options":{"captionMaxLines":2,"normalizeLoudness":true,"captionMaxCharsPerLine":42,"captionFontSizeFraction":0.045},"subjects":[{"box":{"h":0.6,"w":0.35,"x":0.325,"y":0.2},"toS":6,"fromS":0}],"sourceUrl":"https://interactive-examples.mdn.mozilla.net/media/cc0-videos/friday.mp4","subtitles":[{"format":"srt","content":"1\n00:00:00,000 --> 00:00:02,000\nFriday afternoon at the switchboard\n\n2\n00:00:02,000 --> 00:00:04,000\nThe operators keep the calls moving\n\n3\n00:00:04,000 --> 00:00:06,000\nA vintage office comedy short\n","language":"en"}],"deliverables":[{"preset":"youtube-16x9","sidecar":true,"captions":"burned","language":"en"},{"preset":"shorts-9x16","sidecar":false,"captions":"none","language":null}]},"type":"http","method":"POST","bodyType":"json"},"output":{"type":"json","example":{"qc":{"blackSegments":[],"frozenSegments":[],"silentSegments":[],"subtitleIssues":[]},"tools":{"ffmpeg":"7.1.5-0+deb13u1","runner":"23ms"},"checks":[{"code":"source_fetched","detail":"source fetched: 515198 bytes, sha256 339504acdef44f4e50c760e657cf76a8df60f25c91a239682abda56ac1886e90","status":"passed"},{"code":"source_within_limits","detail":"640x480@30fps, 6.17s, codec h264","status":"passed"},{"code":"no_black_or_frozen_segments","detail":"0 black and 0 frozen segment(s) found, none exceeding 3s","status":"passed"},{"code":"subjects_kept_in_frame","detail":"All declared subjects remained within their deliverable's crop window.","status":"passed"},{"code":"deliverables_generated","detail":"2 of 2 requested deliverable(s) generated","status":"passed"},{"code":"subtitles_valid","detail":"all requested subtitle tracks parsed to at least one usable cue","status":"passed"},{"code":"caption_timing_clean","detail":"no caption timing issues found","status":"passed"},{"code":"fps_within_preset","detail":"deliverable-1: 30fps (preset max 60fps), deliverable-2: 30fps (preset max 60fps)","status":"passed"},{"code":"loudness_on_target","detail":"2 of 2 deliverable(s) verified within the 1 LU tolerance","status":"passed"}],"source":{"fps":30,"url":"https://interactive-examples.mdn.mozilla.net/media/cc0-videos/friday.mp4","bytes":515198,"width":640,"height":480,"sha256":"339504acdef44f4e50c760e657cf76a8df60f25c91a239682abda56ac1886e90","loudness":{"rangeLu":2.5,"truePeakDbtp":-17.1,"integratedLufs":-31.4},"container":"mov","durationS":6.166,"audioCodec":"aac","sampleRate":44100,"videoCodec":"h264","bitrateKbps":668,"audioChannels":2},"status":"passed","warnings":[],"artifacts":[{"href":"https://video.api.williamrobinson.dev/v1/video/artifacts/0123456789abcdef0123456789abcdef0123456789abcdef/deliverable-1.mp4","name":"deliverable-1.mp4","sha256":"49ac9f1fc01420744a0382a2c2673b37192293f931f7309209ac1ccfe542f124","mediaType":"video/mp4","sizeBytes":1957309},{"href":"https://video.api.williamrobinson.dev/v1/video/artifacts/0123456789abcdef0123456789abcdef0123456789abcdef/deliverable-1.vtt","name":"deliverable-1.vtt","sha256":"6c54fd2c30a64a7fc364f2d1d4db20fc4441e12a188272d5558b12286193d160","mediaType":"text/vtt; charset=utf-8","sizeBytes":208},{"href":"https://video.api.williamrobinson.dev/v1/video/artifacts/0123456789abcdef0123456789abcdef0123456789abcdef/deliverable-2.mp4","name":"deliverable-2.mp4","sha256":"693b5bddc0ef5fe71b0081447c5b35156793ca26c9c234e07414311661491f73","mediaType":"video/mp4","sizeBytes":1807537},{"href":"https://video.api.williamrobinson.dev/v1/video/artifacts/0123456789abcdef0123456789abcdef0123456789abcdef/contact-sheet.png","name":"contact-sheet.png","sha256":"6710ddac57c231770d1ca624652ab3094a1d9d8d4a5ac34ff990358cb336a310","mediaType":"image/png","sizeBytes":415969},{"href":"https://video.api.williamrobinson.dev/v1/video/artifacts/0123456789abcdef0123456789abcdef0123456789abcdef/qc.json","name":"qc.json","sha256":"cffabe13efbdb3a47b85dd3d95fa781cc50e7f50751ca1b2445e5118a62daba8","mediaType":"application/json","sizeBytes":963},{"href":"https://video.api.williamrobinson.dev/v1/video/artifacts/0123456789abcdef0123456789abcdef0123456789abcdef/report.json","name":"report.json","sha256":"fca0bf34f54ff0ea12bcced4c52ffe42d6893a4ba0da18d33be6ee182df67f83","mediaType":"application/json","sizeBytes":3973}],"expiresAt":"2026-09-11T15:45:22.967Z","truncated":false,"limitations":["Encoded mp4 bytes are not bit-reproducible across runs (multithreaded x264 output); only the artifacts produced by this run are hashed and checked.","Reframing follows only the caller-declared subject boxes; no face, object, or saliency detection is performed.","Loudness is measured and normalised per EBU R128 as computed by ffmpeg's loudnorm/ebur128 filters; this is not a platform loudness-compliance certification.","Delivery presets reflect typical platform recommendations at the time this service was built; verify against the platform's current published specs before publishing.","No rights, copyright, or content-moderation checks are performed on the source video.","Artifacts are retained for up to 6 hours, subject to a 1 GiB storage cap for this product; heavy concurrent demand may evict a job's artifacts sooner than the stated TTL."],"deliverables":[{"slot":"deliverable-1","spec":{"width":1920,"aspect":"16:9","height":1080,"maxFps":60,"safeMargin":0.05,"loudnessLufs":-14,"truePeakDbtp":-1,"audioBitrateKbps":192,"videoBitrateKbps":8000},"detail":"deliverable generated","output":{"fps":30,"bytes":1957309,"width":1920,"height":1080,"container":"mov","durationS":6.2,"audioCodec":"aac","sampleRate":48000,"videoCodec":"h264","bitrateKbps":2526,"audioChannels":2},"preset":"youtube-16x9","status":"generated","reframe":[{"h":360,"w":640,"x":0,"y":60,"toS":6.166,"fromS":0}],"captions":"burned","encodeMs":3546,"language":"en","loudness":{"rangeLu":2.4,"truePeakDbtp":-1,"integratedLufs":-14.44},"captionStats":{"cues":3,"shortCues":0,"reflowedCues":0,"overlapsFixed":0}},{"slot":"deliverable-2","spec":{"width":1080,"aspect":"9:16","height":1920,"maxFps":60,"safeMargin":0.12,"loudnessLufs":-14,"truePeakDbtp":-1,"audioBitrateKbps":192,"videoBitrateKbps":8000},"detail":"deliverable generated","output":{"fps":30,"bytes":1807537,"width":1080,"height":1920,"container":"mov","durationS":6.2,"audioCodec":"aac","sampleRate":48000,"videoCodec":"h264","bitrateKbps":2332,"audioChannels":2},"preset":"shorts-9x16","status":"generated","reframe":[{"h":480,"w":270,"x":185,"y":0,"toS":6.166,"fromS":0}],"captions":"none","encodeMs":3568,"language":null,"loudness":{"rangeLu":2.4,"truePeakDbtp":-1,"integratedLufs":-14.44},"captionStats":null}]}}},"schema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","required":["input"],"properties":{"input":{"type":"object","required":["type","method","bodyType","body"],"properties":{"body":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","required":["sourceUrl","subtitles","subjects","brand","deliverables","options"],"properties":{"brand":{"type":["object","null"],"required":["logoPng","position","widthFraction"],"properties":{"logoPng":{"type":["string","null"],"maxLength":349528,"description":"Base64 PNG (<= 262144 bytes decoded), or null.","contentEncoding":"base64"},"position":{"enum":["top-left","top-right","bottom-left","bottom-right"],"type":"string"},"widthFraction":{"type":"number","maximum":0.3,"minimum":0.05,"description":"Logo width as a fraction of output width."}},"additionalProperties":false},"options":{"type":"object","properties":{"captionMaxLines":{"type":"integer","default":2,"maximum":4,"minimum":1},"normalizeLoudness":{"type":"boolean","default":true},"captionMaxCharsPerLine":{"type":"integer","default":42,"maximum":80,"minimum":10},"captionFontSizeFraction":{"type":"number","default":0.045,"maximum":0.12,"minimum":0.02}},"additionalProperties":false},"subjects":{"type":"array","items":{"type":"object","required":["fromS","toS","box"],"properties":{"box":{"type":"object","required":["x","y","w","h"],"properties":{"h":{"type":"number","maximum":1,"exclusiveMinimum":0},"w":{"type":"number","maximum":1,"exclusiveMinimum":0},"x":{"type":"number","maximum":1,"minimum":0},"y":{"type":"number","maximum":1,"minimum":0}},"description":"Region of interest in source-pixel fractions.","additionalProperties":false},"toS":{"type":"number","maximum":60,"minimum":0,"description":"Must be greater than fromS."},"fromS":{"type":"number","maximum":60,"minimum":0}},"additionalProperties":false},"maxItems":20,"description":"Regions of interest the reframer must keep in view; empty means centre-crop."},"sourceUrl":{"type":"string","format":"uri","maxLength":2048,"description":"Public HTTPS URL of the source video (mp4/mov/webm/mkv, <= 67108864 bytes, <= 60s, <= 1080p). Fetched by the service before processing."},"subtitles":{"type":"array","items":{"type":"object","required":["language","format","content"],"properties":{"format":{"enum":["srt","vtt"],"type":"string"},"content":{"type":"string","maxLength":131072,"minLength":1,"description":"Subtitle file contents (UTF-8 bytes capped, not characters)."},"language":{"type":"string","pattern":"^[a-z]{2,3}(-[A-Za-z0-9]{2,8})*$","description":"BCP-47-style language tag, e.g. \"en\" or \"pt-BR\"; unique across subtitles."}},"additionalProperties":false},"maxItems":6},"deliverables":{"type":"array","items":{"type":"object","required":["preset","language","captions","sidecar"],"properties":{"preset":{"enum":["youtube-16x9","shorts-9x16","reels-9x16","tiktok-9x16","square-1x1","feed-4x5"],"type":"string"},"sidecar":{"type":"boolean","description":"Also produce the sidecar .vtt when captions is \"burned\"."},"captions":{"enum":["burned","sidecar","none"],"type":"string"},"language":{"type":["string","null"],"description":"Must reference a subtitles[] language when captions is not \"none\"; must be null when captions is \"none\"."}},"additionalProperties":false},"maxItems":2,"minItems":1}},"additionalProperties":false},"type":{"type":"string","const":"http"},"method":{"enum":["POST"],"type":"string"},"bodyType":{"enum":["json","form-data","text"],"type":"string"}},"additionalProperties":false},"output":{"type":"object","required":["type"],"properties":{"type":{"type":"string"},"example":{"type":"object","$defs":{"artifact":{"type":"object","required":["name","mediaType","sizeBytes","sha256","href"],"properties":{"href":{"type":"string","format":"uri"},"name":{"enum":["deliverable-1.mp4","deliverable-1.vtt","deliverable-2.mp4","deliverable-2.vtt","contact-sheet.png","qc.json","report.json"],"type":"string"},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"mediaType":{"type":"string"},"sizeBytes":{"type":"integer","minimum":0}},"additionalProperties":false},"loudness":{"type":"object","required":["integratedLufs","rangeLu","truePeakDbtp"],"properties":{"rangeLu":{"type":"number","minimum":0},"truePeakDbtp":{"type":"number"},"integratedLufs":{"type":"number"}},"additionalProperties":false},"presetSpec":{"type":"object","required":["aspect","width","height","maxFps","loudnessLufs","truePeakDbtp","videoBitrateKbps","audioBitrateKbps","safeMargin"],"properties":{"width":{"type":"integer","minimum":1},"aspect":{"enum":["16:9","9:16","1:1","4:5"],"type":"string"},"height":{"type":"integer","minimum":1},"maxFps":{"type":"number","exclusiveMinimum":0},"safeMargin":{"type":"number","maximum":1,"minimum":0},"loudnessLufs":{"type":"number"},"truePeakDbtp":{"type":"number"},"audioBitrateKbps":{"type":"number","exclusiveMinimum":0},"videoBitrateKbps":{"type":"number","exclusiveMinimum":0}},"additionalProperties":false},"streamInfo":{"type":"object","required":["container","videoCodec","width","height","fps","durationS","audioCodec","audioChannels","sampleRate","bitrateKbps","bytes"],"properties":{"fps":{"type":"number","exclusiveMinimum":0},"bytes":{"type":"integer","minimum":0},"width":{"type":"integer","minimum":1},"height":{"type":"integer","minimum":1},"container":{"type":"string"},"durationS":{"type":"number","minimum":0},"audioCodec":{"type":["string","null"]},"sampleRate":{"type":["integer","null"],"minimum":0},"videoCodec":{"type":"string"},"bitrateKbps":{"type":"number","minimum":0},"audioChannels":{"type":["integer","null"],"minimum":0}},"additionalProperties":false},"captionStats":{"type":"object","required":["cues","reflowedCues","overlapsFixed","shortCues"],"properties":{"cues":{"type":"integer","minimum":0},"shortCues":{"type":"integer","minimum":0},"reflowedCues":{"type":"integer","minimum":0},"overlapsFixed":{"type":"integer","minimum":0}},"additionalProperties":false},"reframeWindow":{"type":"object","required":["fromS","toS","x","y","w","h"],"properties":{"h":{"type":"integer","exclusiveMinimum":0},"w":{"type":"integer","exclusiveMinimum":0},"x":{"type":"integer","minimum":0},"y":{"type":"integer","minimum":0},"toS":{"type":"number","minimum":0},"fromS":{"type":"number","minimum":0}},"additionalProperties":false}},"$schema":"https://json-schema.org/draft/2020-12/schema","required":["status","tools","source","deliverables","qc","checks","warnings","limitations","truncated","expiresAt","artifacts"],"properties":{"qc":{"type":"object","required":["blackSegments","frozenSegments","silentSegments","subtitleIssues"],"properties":{"blackSegments":{"type":"array","items":{"type":"object","required":["fromS","toS"],"properties":{"toS":{"type":"number","minimum":0},"fromS":{"type":"number","minimum":0}},"additionalProperties":false},"maxItems":100},"frozenSegments":{"type":"array","items":{"type":"object","required":["fromS","toS"],"properties":{"toS":{"type":"number","minimum":0},"fromS":{"type":"number","minimum":0}},"additionalProperties":false},"maxItems":100},"silentSegments":{"type":"array","items":{"type":"object","required":["fromS","toS"],"properties":{"toS":{"type":"number","minimum":0},"fromS":{"type":"number","minimum":0}},"additionalProperties":false},"maxItems":100},"subtitleIssues":{"type":"array","items":{"type":"object","required":["language","cue","code","detail"],"properties":{"cue":{"type":"integer","minimum":0},"code":{"type":"string"},"detail":{"type":"string"},"language":{"type":"string"}},"additionalProperties":false},"maxItems":100}},"additionalProperties":false},"tools":{"type":"object","required":["ffmpeg","runner"],"properties":{"ffmpeg":{"type":"string"},"runner":{"type":"string"}},"additionalProperties":false},"checks":{"type":"array","items":{"type":"object","required":["code","status","detail"],"properties":{"code":{"type":"string"},"detail":{"type":"string"},"status":{"enum":["passed","failed","not_checked"],"type":"string"}},"additionalProperties":false}},"source":{"type":"object","required":["container","videoCodec","width","height","fps","durationS","audioCodec","audioChannels","sampleRate","bitrateKbps","bytes","url","sha256","loudness"],"properties":{"fps":{"type":"number","exclusiveMinimum":0},"url":{"type":"string"},"bytes":{"type":"integer","minimum":0},"width":{"type":"integer","minimum":1},"height":{"type":"integer","minimum":1},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"loudness":{"anyOf":[{"$ref":"#/properties/output/properties/example/$defs/loudness"},{"type":"null"}]},"container":{"type":"string"},"durationS":{"type":"number","minimum":0},"audioCodec":{"type":["string","null"]},"sampleRate":{"type":["integer","null"],"minimum":0},"videoCodec":{"type":"string"},"bitrateKbps":{"type":"number","minimum":0},"audioChannels":{"type":["integer","null"],"minimum":0}},"additionalProperties":false},"status":{"enum":["passed","failed"],"type":"string"},"warnings":{"type":"array","items":{"type":"string"},"maxItems":100},"artifacts":{"type":"array","items":{"$ref":"#/properties/output/properties/example/$defs/artifact"},"maxItems":7},"expiresAt":{"type":"string","format":"date-time"},"truncated":{"type":"boolean"},"limitations":{"type":"array","items":{"type":"string"},"maxItems":100},"deliverables":{"type":"array","items":{"type":"object","required":["slot","preset","spec","language","captions","status","detail","output","loudness","reframe","captionStats","encodeMs"],"properties":{"slot":{"enum":["deliverable-1","deliverable-2"],"type":"string"},"spec":{"$ref":"#/properties/output/properties/example/$defs/presetSpec"},"detail":{"type":"string"},"output":{"anyOf":[{"$ref":"#/properties/output/properties/example/$defs/streamInfo"},{"type":"null"}]},"preset":{"enum":["youtube-16x9","shorts-9x16","reels-9x16","tiktok-9x16","square-1x1","feed-4x5"],"type":"string"},"status":{"enum":["generated","failed"],"type":"string"},"reframe":{"type":"array","items":{"$ref":"#/properties/output/properties/example/$defs/reframeWindow"}},"captions":{"enum":["burned","sidecar","none"],"type":"string"},"encodeMs":{"type":"number","minimum":0},"language":{"type":["string","null"]},"loudness":{"anyOf":[{"$ref":"#/properties/output/properties/example/$defs/loudness"},{"type":"null"}]},"captionStats":{"anyOf":[{"$ref":"#/properties/output/properties/example/$defs/captionStats"},{"type":"null"}]}},"additionalProperties":false},"maxItems":2}},"additionalProperties":false}}}}}},"builder-code":{"info":{"s":["cdp_sdk_server"]},"schema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"a":{"type":"string","pattern":"^[a-z0-9_]{1,32}$","description":"App builder code"},"s":{"type":"array","items":{"type":"string","pattern":"^[a-z0-9_]{1,32}$"},"maxItems":11,"description":"Service builder codes"},"w":{"type":"string","pattern":"^[a-z0-9_]{1,32}$","description":"Wallet builder code"}},"additionalProperties":false}},"payment-identifier":{"info":{"required":true},"schema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","required":["required"],"properties":{"id":{"type":"string","pattern":"^[a-zA-Z0-9_-]+$","maxLength":128,"minLength":16},"required":{"type":"boolean"}}}},"eip2612GasSponsoring":{},"erc20ApprovalGasSponsoring":{}},"description":"Finish a short source video (<=60s, <=1080p, <=64MB, fetched by URL) into up to two platform-preset deliverables: caller-guided crop reframing between declared subject regions (never automatic detection), sidecar or burned-in subtitles with reflow, and EBU R128 loudness normalised to the preset target and measured, never claimed compliant. Includes a contact sheet. No rights clearance performed.","lastUpdated":"2026-09-11T20:08:09.794Z","serviceName":"Video Finishing & Localization","x402Version":2}]}}