@osmo.inc/cli-linux-arm64 0.1.22 → 0.1.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/dist/studio.js +11834 -7989
  2. package/package.json +1 -1
  3. package/release.json +32 -32
  4. package/runtime/apps/native/tools/compile.mjs +20 -2
  5. package/runtime/packages/render-protocol/src/film-catalog.json +2543 -0
  6. package/runtime/packages/render-protocol/src/film-resources.mjs +91 -0
  7. package/runtime/packages/render-protocol/src/film-store.node.mjs +220 -0
  8. package/runtime/packages/scene/scripts/sync-film.mjs +8 -0
  9. package/runtime/packages/scene/scripts/validate-strict.mjs +14 -4
  10. package/runtime/packages/scene/scripts/verify-export-resolution.mjs +67 -0
  11. package/runtime/packages/scene/scripts/verify-film.mjs +66 -0
  12. package/runtime/packages/scene/src/effect-schemas.d.mts +246 -0
  13. package/runtime/packages/scene/src/effect-schemas.mjs +136 -0
  14. package/runtime/packages/scene/src/effects.ts +23 -6
  15. package/runtime/packages/scene/src/elements.ts +15 -3
  16. package/runtime/packages/scene/src/evaluate.ts +88 -12
  17. package/runtime/packages/scene/src/film-catalog.generated.ts +3 -0
  18. package/runtime/packages/scene/src/film.ts +39 -0
  19. package/runtime/packages/scene/src/index.ts +6 -2
  20. package/runtime/packages/scene/src/knob-schema.ts +5 -2
  21. package/runtime/packages/scene/src/metadata.d.mts +2 -1
  22. package/runtime/packages/scene/src/metadata.mjs +4 -4
  23. package/runtime/packages/scene/src/motion-blur.ts +30 -0
  24. package/src/starter/scene.tsx +1 -1
  25. package/studio/src/app.css +1 -1
  26. package/studio/src/app.js +236 -176
  27. package/studio/src/engine_bg.wasm +0 -0
  28. package/studio/src/preview-worker.js +33 -0
  29. package/third-party/braw/BlackmagicRawAPI.h +1137 -0
  30. package/third-party/braw/README.md +7 -0
  31. package/third-party/cargo/block-buffer@0.10.4/Cargo.toml +32 -0
  32. package/third-party/cargo/block-buffer@0.10.4/LICENSE-APACHE +201 -0
  33. package/third-party/cargo/block-buffer@0.10.4/LICENSE-MIT +25 -0
  34. package/third-party/cargo/cc@1.4.5/Cargo.toml +89 -0
  35. package/third-party/cargo/cc@1.4.5/LICENSE-APACHE +201 -0
  36. package/third-party/cargo/cc@1.4.5/LICENSE-MIT +25 -0
  37. package/third-party/cargo/cpufeatures@0.2.17/Cargo.toml +71 -0
  38. package/third-party/cargo/cpufeatures@0.2.17/LICENSE-APACHE +201 -0
  39. package/third-party/cargo/cpufeatures@0.2.17/LICENSE-MIT +25 -0
  40. package/third-party/cargo/crypto-common@0.1.7/Cargo.toml +62 -0
  41. package/third-party/cargo/crypto-common@0.1.7/LICENSE-APACHE +201 -0
  42. package/third-party/cargo/crypto-common@0.1.7/LICENSE-MIT +25 -0
  43. package/third-party/cargo/digest@0.10.7/Cargo.toml +70 -0
  44. package/third-party/cargo/digest@0.10.7/LICENSE-APACHE +201 -0
  45. package/third-party/cargo/digest@0.10.7/LICENSE-MIT +25 -0
  46. package/third-party/cargo/find-msvc-tools@0.1.12/Cargo.toml +49 -0
  47. package/third-party/cargo/find-msvc-tools@0.1.12/LICENSE-APACHE +201 -0
  48. package/third-party/cargo/find-msvc-tools@0.1.12/LICENSE-MIT +25 -0
  49. package/third-party/cargo/generic-array@0.14.7/Cargo.toml +75 -0
  50. package/third-party/cargo/generic-array@0.14.7/LICENSE +21 -0
  51. package/third-party/cargo/sha2@0.10.9/Cargo.toml +90 -0
  52. package/third-party/cargo/sha2@0.10.9/LICENSE-APACHE +201 -0
  53. package/third-party/cargo/sha2@0.10.9/LICENSE-MIT +27 -0
  54. package/third-party/cargo/shlex@2.0.1/Cargo.toml +51 -0
  55. package/third-party/cargo/shlex@2.0.1/LICENSE-APACHE +13 -0
  56. package/third-party/cargo/shlex@2.0.1/LICENSE-MIT +21 -0
  57. package/third-party/cargo/typenum@1.20.1/Cargo.toml +75 -0
  58. package/third-party/cargo/typenum@1.20.1/LICENSE +1 -0
  59. package/third-party/cargo/typenum@1.20.1/LICENSE-APACHE +201 -0
  60. package/third-party/cargo/typenum@1.20.1/LICENSE-MIT +21 -0
  61. package/third-party/film/camera-COLOUR-LICENSE +11 -0
  62. package/third-party/film/camera-CONFIG-LICENSE +26 -0
  63. package/third-party/film/camera-LICENSE +26 -0
  64. package/third-party/film/camera-metadata.json +344 -0
  65. package/third-party/film/provenance.json +7 -0
  66. package/third-party/inventory.json +140 -0
  67. package/vendor/osmo-lite +0 -0
  68. package/vendor/osmo-scene-0.1.0.tgz +0 -0
  69. package/vendor/platform.json +1 -1
@@ -0,0 +1,33 @@
1
+ var yo=Object.defineProperty;var ko=(n,e)=>{for(var t in e)yo(n,t,{get:e[t],enumerable:!0})};var Nr=16*1024*1024;var M={KIND:0,PARENT:1,STR_OFF:2,STR_LEN:3,DISPLAY:4,FLEX_DIR:5,JUSTIFY:6,ALIGN_ITEMS:7,ALIGN_SELF:8,WRAP:9,GROW:10,SHRINK:11,BASIS_V:12,BASIS_U:13,W_V:14,W_U:15,H_V:16,H_U:17,MINW_V:18,MINW_U:19,MINH_V:20,MINH_U:21,MAXW_V:22,MAXW_U:23,MAXH_V:24,MAXH_U:25,PAD_T:26,MAR_T:30,POS:38,INSET_T:39,GAP_ROW:47,GAP_COL:48,BG:49,RADIUS:53,OPACITY:57,BORDER_W:58,BORDER_C:59,MAT:63,FONT_SIZE:69,FONT_WEIGHT:70,COLOR:71,TEXT_ALIGN:75,LINE_HEIGHT:76,GRAD_KIND:77,GRAD_ANGLE:78,GRAD_C0:79,GRAD_C1:83,FONT_STYLE:87,OVERFLOW:88,SH_X:89,SH_Y:90,SH_BLUR:91,SH_C:92,OBJECT_FIT:96,ISOLATE:97,BLEND:98,BLUR:99,GROUP_SHADOW:100,TZ:101,BACKDROP:102,NODE_ID:103,SH_SPREAD:104,CROP:105,FONT_OFF:109,FONT_LEN:110,PIVOT_X:111,PIVOT_Y:112,GRID_COLS:113,ASPECT:114,FX_OFF:115,FX_LEN:116,LETTER_SPACING:117,RX:118,RY:119,ABOVE_BACKDROP:120,TX_PCT:121,TY_PCT:122,JUSTIFY_ITEMS:123,WHITE_SPACE:124,Z_INDEX:125,SH2_OFF:126,SH2_LEN:127},jr={COUNT:M.FONT_SIZE,SIZE:M.FONT_WEIGHT,MODE:M.OBJECT_FIT,COLOR:M.GRAD_C0,PARAMS:M.GRAD_C1,BLEND:M.BLEND,TRAIL:M.LINE_HEIGHT,DATA_OFF:M.FONT_OFF,DATA_LEN:M.FONT_LEN},Kr={UNIFORM_OFF:M.FX_OFF,UNIFORM_LEN:M.FX_LEN,IMG_OFF:M.FONT_OFF,IMG_LEN:M.FONT_LEN},Dr={STROKE_W:M.BORDER_W,STROKE_C:M.BORDER_C},$r={DATA_OFF:M.FONT_OFF,DATA_LEN:M.FONT_LEN,FILL_C:M.GRAD_C0,STROKE_C:M.GRAD_C1,STROKE_W:M.FONT_SIZE,FLAGS:M.OBJECT_FIT,MITER:M.FONT_WEIGHT,TRIM_START:M.LINE_HEIGHT,TRIM_END:M.LETTER_SPACING,DASH_A:M.COLOR,DASH_B:M.COLOR+1,DASH_OFF:M.COLOR+2},Gr={VB_X:M.CROP,VB_Y:M.CROP+1,VB_W:M.CROP+2,VB_H:M.CROP+3,VB_PAR:M.FONT_SIZE};var Wr=[[M.STR_OFF,M.STR_LEN],[M.FONT_OFF,M.FONT_LEN],[M.FX_OFF,M.FX_LEN],[M.SH2_OFF,M.SH2_LEN]],wo=1<<18;var Ur=[M.BASIS_V,M.W_V,M.H_V,M.MINW_V,M.MINH_V,M.MAXW_V,M.MAXH_V,M.MAR_T,M.MAR_T+2,M.MAR_T+4,M.MAR_T+6,M.INSET_T,M.INSET_T+2,M.INSET_T+4,M.INSET_T+6];var Hn=4096,Yr=3*Hn;var Ct=n=>Object.freeze(Object.assign(Object.create(null),n));var cc={verbs:new Uint8Array(0),points:new Float32Array(0)};var xo=.5,ic=360-xo,sc=Ct({top:-90,right:0,bottom:90,left:180});var kc=Ct({left:0,center:1,right:2});var un={collections:["motion picture","discontinued","lab process","color negative","black and white negative","slide film","commercial","35mm negative","35mm print","16mm","super 8","low contrast","photographic","reference","period","black and white","experimental"],items:[{number:1,id:"stock/Vision3/Default/50D.fbfilmneg",hash:"1bec2446ee43b88c53f2",sha256:"ddecdecdb915dfea695ce91245e6a40f0b5a0232e7719be0b59d9f6cb3a70b2a",kind:"stock",collection:"motion picture",group:"",label:"50d",tables:{logc4:{hash:"1bec2446ee43b88c53f2-logc4",sha256:"1460c599d4d36fc3849c31762d6a45f18a5e24cf1cae566e11d2c26ceeee4267"},slog3cine:{hash:"1bec2446ee43b88c53f2-slog3cine",sha256:"8f535c0b4ccd76bf0ee272b4b1e77b2c30053ba2cecb7b5d7a1f2cfe0e051529"}}},{number:2,id:"stock/Vision3/Default/200T.fbfilmneg",hash:"ecc51cfd5a5cede9cbae",sha256:"3f619d5aa84d49ededf451721f716aa6f5c8bfdc57bbbe6e3cc9bcf62d276749",kind:"stock",collection:"motion picture",group:"",label:"200t",tables:{logc4:{hash:"ecc51cfd5a5cede9cbae-logc4",sha256:"a9ed9ea417cf51e92d46500c2c7d51876dee9e475430a2c06cc76c1723ada7ec"},slog3cine:{hash:"ecc51cfd5a5cede9cbae-slog3cine",sha256:"0c78e273ff7cfcbade740c4477bc1c138b88fcf1410db65c092ec32bbde59fbf"}}},{number:3,id:"stock/Vision3/Default/250D.fbfilmneg",hash:"20ca38314cfd587b78fc",sha256:"20059ea05ff21a9f8a1c3443d49b1a817308d6832803d052d74bbe89b8ffd811",kind:"stock",collection:"motion picture",group:"",label:"250d",tables:{logc4:{hash:"20ca38314cfd587b78fc-logc4",sha256:"a6c0a44e2b3f33ad0a76eff8fb4f7d434eeecf55fe45cfb4be426808e17eb62f"},slog3cine:{hash:"20ca38314cfd587b78fc-slog3cine",sha256:"01aec00b6c2e7b4e9acedcb9ba7f07f314739601aa435b261c394a3324f99daf"}}},{number:4,id:"stock/Vision3/Default/500T.fbfilmneg",hash:"f10310ad81957c25fc48",sha256:"35101b3d7bbdf914b940aacaedc7aeab2755080147f144444c78437f8788c033",kind:"stock",collection:"motion picture",group:"",label:"500t",tables:{logc4:{hash:"f10310ad81957c25fc48-logc4",sha256:"55592fe58ff6f4ac4e6151ac293198bcf9e41079e10780872ff4bf1220a8e2f0"},slog3cine:{hash:"f10310ad81957c25fc48-slog3cine",sha256:"c8a4dd3b841e15630d0267a96afeeb821102ac9b2e5a20dc1e9a5ec53d707725"}}},{number:5,id:"stock/Expired/Vision2/Vision2 50D - 5201.fbfilmneg",hash:"7ddd94e5d0799d57d43c",sha256:"396988be0b3e7ce76a8dd12d998f6e681cc43c5bcc8caf34195c11e653c77745",kind:"stock",collection:"discontinued",group:"",label:"vision2 50d",tables:{logc4:{hash:"7ddd94e5d0799d57d43c-logc4",sha256:"5d4ab49669ef118375aa741b46be69a91ddd44fd4a422ffb864cb4f28c452b06"},slog3cine:{hash:"7ddd94e5d0799d57d43c-slog3cine",sha256:"db5cedad66e2909127c6c1f15d82fbc89ea3280f7ce9ef6bf9a177ae2102d4d1"}}},{number:6,id:"stock/Expired/Vision2/Vision2 200T - 5217.fbfilmneg",hash:"4580449bf3580df15a24",sha256:"1c1f2014d17bf771d2a6f00bf8f59b5f10d1f236566bccc3c8dd45f54e3ad360",kind:"stock",collection:"discontinued",group:"",label:"vision2 200t",tables:{logc4:{hash:"4580449bf3580df15a24-logc4",sha256:"3f3a5594427517540a19236f93714471307976951bceac909ea92387dabd9399"},slog3cine:{hash:"4580449bf3580df15a24-slog3cine",sha256:"2b35ad024b27259ee9f7c0ca954e2bca5ef1579527138a53ba59a65399945bd5"}}},{number:7,id:"stock/Expired/Vision2/Vision2 250D - 5205.fbfilmneg",hash:"219833e83f5b03cca36c",sha256:"be5dc3517c210da399293202de6a2296d2306c98afa4394af0b639c7bc97d858",kind:"stock",collection:"discontinued",group:"",label:"vision2 250d",tables:{logc4:{hash:"219833e83f5b03cca36c-logc4",sha256:"0776f6c9b404bb79f7bf47bb4629c29b73ef944bf9e8eb7773f0b2411f02a5ca"},slog3cine:{hash:"219833e83f5b03cca36c-slog3cine",sha256:"993769f0c92debbd346406054afda65cfe220f1680186cb1b007b7031de71730"}}},{number:8,id:"stock/Expired/Vision2/Vision2 500T - 5260 5218.fbfilmneg",hash:"bea529b58c1d7367060b",sha256:"1894699667db0e7ae7902a0bdf3cf63d422c9600a5be18c3160b371417c03e8d",kind:"stock",collection:"discontinued",group:"",label:"vision2 500t",tables:{logc4:{hash:"bea529b58c1d7367060b-logc4",sha256:"08a7de80a3d436b78cc36250fd7ac4c929050b3738e6826dbaa4024bf4aa6367"},slog3cine:{hash:"bea529b58c1d7367060b-slog3cine",sha256:"168857a78f1c0c4c17745b8602108407fc2e307ece0f1486d4416a9090946ff3"}}},{number:9,id:"stock/Expired/Vision/Vision 250D - 5246.fbfilmneg",hash:"5dbbbe0bc3402ac432ef",sha256:"55ca19c348d6c8c6adfb07f6ccfd9e1891f06c6373fffe2964b45a0828872adc",kind:"stock",collection:"discontinued",group:"",label:"vision 250d",tables:{logc4:{hash:"5dbbbe0bc3402ac432ef-logc4",sha256:"1eefbb8c9b168f76c2ca6838e13480b41781200a91040dbb40c20db94b4f9b02"},slog3cine:{hash:"5dbbbe0bc3402ac432ef-slog3cine",sha256:"93870ed95db1793d22db1fbd3e92572d4728e7251de57851138d78e9859fdeae"}}},{number:10,id:"stock/Expired/Vision/Vision 500T - 5279.fbfilmneg",hash:"651bc5d68b55c63d2209",sha256:"ebc7605bc69f3843275c4441eab2149d8698a75f4d5b29249df5f00bb4a4b216",kind:"stock",collection:"discontinued",group:"",label:"vision 500t",tables:{logc4:{hash:"651bc5d68b55c63d2209-logc4",sha256:"7f8fc4223eb54ffbb492bdaa8d80adbca125e82f4e67f867c443ebd6d9b6ac32"},slog3cine:{hash:"651bc5d68b55c63d2209-slog3cine",sha256:"cbbdefec443780cf601796a6e766145368fc5d02ad8ee7deb86c7c5885006748"}}},{number:11,id:"stock/Expired/EXR/EXR 100T - 5248.fbfilmneg",hash:"b408aaad6a6b268cc31f",sha256:"c89b9e24496d2cfb637829bf7441170901526df8fbecc0feb0872be1b1b0bcca",kind:"stock",collection:"discontinued",group:"",label:"exr 100t",tables:{logc4:{hash:"b408aaad6a6b268cc31f-logc4",sha256:"5416b18636ee7a0f24d6dd59e996b6bdf17f8ded5649b1df07cc6bb8d10b612f"},slog3cine:{hash:"b408aaad6a6b268cc31f-slog3cine",sha256:"32d474f721c26c74ab9c6b042fc19da9f4e1254cfe2fb986376ead354c4413c4"}}},{number:12,id:"stock/Expired/EXR/EXR 50D - 5245.fbfilmneg",hash:"dbfcf75f65364f300865",sha256:"ab35fa37e82dd216c772f7f1c6621c55d2360e6a22bfbf81b626f6ef19a7c316",kind:"stock",collection:"discontinued",group:"",label:"exr 50d",tables:{logc4:{hash:"dbfcf75f65364f300865-logc4",sha256:"6244d992d217cf445a755d6960aaef7d12c571c82fc891d3f151dda1958c3d79"},slog3cine:{hash:"dbfcf75f65364f300865-slog3cine",sha256:"d69e50ecbe59f222a4c0747c1f3b014b7aa1acae2de19190b7a08508eac35c7b"}}},{number:13,id:"stock/Expired/EXR/EXR 500T - 5298.fbfilmneg",hash:"b48affdfe23da47091f9",sha256:"30b7cd4e6e280844101034e9a7e40c521541c78e2c3daf8a9e52e778846ac941",kind:"stock",collection:"discontinued",group:"",label:"exr 500t",tables:{logc4:{hash:"b48affdfe23da47091f9-logc4",sha256:"54004242f20d22bc68622e1be479fcc41685a4137fa0f46c7e4ba41122d48f6f"},slog3cine:{hash:"b48affdfe23da47091f9-slog3cine",sha256:"4c0195829c042b101aed9c26f601d4f09f2104654101272408c62a8d680b9ca6"}}},{number:14,id:"stock/Expired/Eterna/Eterna 250D - 8563.fbfilmneg",hash:"ef47355ccc6c71d56c07",sha256:"d0293c0409df012218f53cec44332680e5544cea8f9306596598cd8c7a9ac6b4",kind:"stock",collection:"discontinued",group:"",label:"eterna 250d",tables:{logc4:{hash:"ef47355ccc6c71d56c07-logc4",sha256:"85328a7b6dc2b5746ba70101d063be859fa791347b568e719fb18b46d6e75d61"},slog3cine:{hash:"ef47355ccc6c71d56c07-slog3cine",sha256:"a8e5fedbd3801a857ee23f9eac28c76f13ce85b8633a6d136eec15be9291ef76"}}},{number:15,id:"stock/Expired/Eterna/Eterna 500T - 8573.fbfilmneg",hash:"03e20bcdbf816cbc2705",sha256:"267c62f7ca7a02dc9e917e6ead14f30600fc0868565fb004cc8c69ca75abd8c8",kind:"stock",collection:"discontinued",group:"",label:"eterna 500t",tables:{logc4:{hash:"03e20bcdbf816cbc2705-logc4",sha256:"3c4fb57d4a35addd93c7c3f1877e9b45aa40219e6976db22afcba8cd23921de8"},slog3cine:{hash:"03e20bcdbf816cbc2705-slog3cine",sha256:"9c1db859909ae4f100d52aecbf2f3a7b896c7db441bda24b70da13c67024d703"}}},{number:16,id:"stock/Expired/Eterna Vivid/Eterna Vivid 250D - 8546.fbfilmneg",hash:"19e71cdeaec2f28d22ed",sha256:"bfe8e64339b9b9b8bf43d94dda6c92889c818d9d7b435903a87c0ae4cc80d741",kind:"stock",collection:"discontinued",group:"",label:"eterna vivid 250d",tables:{logc4:{hash:"19e71cdeaec2f28d22ed-logc4",sha256:"a2021b3cf8df60d5cd5aa194aa941f0c88ed0551065929d2989874da3d63156c"},slog3cine:{hash:"19e71cdeaec2f28d22ed-slog3cine",sha256:"536e038df383269259af2c757bfeca5899c9b037d7182663383eb8c34d7e286c"}}},{number:17,id:"stock/Expired/Super-F/Super-F 64D - 8621.fbfilmneg",hash:"e9a41978b31155132d19",sha256:"2c240c8049050818df417169f422a4cf4d88734103ddaab23f7550d409327b64",kind:"stock",collection:"discontinued",group:"",label:"super-f 64d",tables:{logc4:{hash:"e9a41978b31155132d19-logc4",sha256:"74ee43f73c8c961022502325542e3489a4767da1d8c640f744515acba70582f3"},slog3cine:{hash:"e9a41978b31155132d19-slog3cine",sha256:"6ffde4f76a9a6e207946610fc44702927d1af53c3780c291c9631e3b04d3f803"}}},{number:18,id:"stock/Expired/Other/Reala 500D - 8592.fbfilmneg",hash:"b5a5b1d2f15133dbbd40",sha256:"fcb024fd39012665dde3f2cedfce48fbb686863d3f4f7d02e334e3d5bfe37f88",kind:"stock",collection:"discontinued",group:"",label:"reala 500d",tables:{logc4:{hash:"b5a5b1d2f15133dbbd40-logc4",sha256:"d4b026a232a67622e5d7a75f3d71d1cfa5f890e2c5b7457bc97027e822649538"},slog3cine:{hash:"b5a5b1d2f15133dbbd40-slog3cine",sha256:"fef3e60b41ba6b7246ac4d4f6afd8f370f27e2cc8bb8000a7ea1f782b12e0311"}}},{number:19,id:"stock/Expired/Other/Plus-X - 5231.fbfilmneg",hash:"01646d0ebdea130feeb0",sha256:"95df160d3412192d6d840ae9a79008ad0880d60772a069b1a2c730886324fd63",kind:"stock",collection:"discontinued",group:"",label:"plus-x",tables:{logc4:{hash:"01646d0ebdea130feeb0-logc4",sha256:"2edfcfe37f61ecd3aa471628fc730b6bf76b7c536e346ea3680730c57f1de71f"},slog3cine:{hash:"01646d0ebdea130feeb0-slog3cine",sha256:"97476d0a31a72eb7b5f08f79100f7442f243726b16d9d3879d87c3337bd65b01"}}},{number:20,id:"stock/EktachromeCross/Default/Ektachrome.fbfilmneg",hash:"ea4a6fc70e60b72de85d",sha256:"682527e690a30717568a08b588a1ae13ec09b39b1b9c2904029cf0be0b706b3b",kind:"stock",collection:"lab process",group:"",label:"ektachrome cross process",tables:{logc4:{hash:"ea4a6fc70e60b72de85d-logc4",sha256:"6dfae05dea7b59c73ec19b73c4246fc9a1affb598eae92e207011778edf142fe"},slog3cine:{hash:"ea4a6fc70e60b72de85d-slog3cine",sha256:"b7163211d24ca6cf130b2ca23eca0bdc6f7e72784ce0d17767eca1f5a50f03c3"}}},{number:21,id:"stock/BleachBypass/Default/Bleach Bypass Full.fbfilmneg",hash:"ebf8e027214208da802d",sha256:"bc69f0ef78bba9221302f73c0dbdd956c775e40bb5aa65833159d896756ad282",kind:"stock",collection:"lab process",group:"",label:"bleach bypass full",tables:{logc4:{hash:"ebf8e027214208da802d-logc4",sha256:"e14326889b137b2cdede1ababe0bbcf41a35900ff842460b5a47ca3e75bdf92e"},slog3cine:{hash:"ebf8e027214208da802d-slog3cine",sha256:"e0909c31f58a340e1d3c2987d795f6345ffb79223bb3d032efc5c1ec30720a47"}}},{number:22,id:"stock/BleachBypass/Default/Bleach Bypass Half.fbfilmneg",hash:"33279d836190f8d0ac43",sha256:"9ae0fa355f54cc772368d28cdc1ba342388d5855297d5bcf0f6b058bbe36eb8d",kind:"stock",collection:"lab process",group:"",label:"bleach bypass 50%",tables:{logc4:{hash:"33279d836190f8d0ac43-logc4",sha256:"632993d0b36a6320172d4b19a109ce90450b8cd3d79d575850fc4e2f9af7bfef"},slog3cine:{hash:"33279d836190f8d0ac43-slog3cine",sha256:"3ff5b18d862575c8203d49a93edf04af53b4e6b56b651845e582ceb27705cbdb"}}},{number:23,id:"stock/BleachBypass/Default/Bleach Bypass 30%.fbfilmneg",hash:"362fe9e15e5b3e8a3712",sha256:"efda5afdd954b7a0dc51edbf47e7bc1c03b5f98153f947872a6ec7f111810186",kind:"stock",collection:"lab process",group:"",label:"bleach bypass 30%",tables:{logc4:{hash:"362fe9e15e5b3e8a3712-logc4",sha256:"ad78fd6b96ee1375d45dff4fc0fb6aaee067714fe0635cec7dc2c379127dddac"},slog3cine:{hash:"362fe9e15e5b3e8a3712-slog3cine",sha256:"79234637f94187208a77aa9f4d7dfe8e04b50a44cba8a6912dc4fec923e602e3"}}},{number:24,id:"stock/PhotoColor/Portrait/Pro 400H.fbfilmneg",hash:"9702f45a667b36529557",sha256:"6780a9fa3b04624eaaed4e2a9c5f55654fda4d7999663fd5c4c5b217ad90bc9b",kind:"stock",collection:"color negative",group:"portrait",label:"pro 400h",tables:{logc4:{hash:"9702f45a667b36529557-logc4",sha256:"6472860b63370f6627ca3d928b7b1089631d59a94f2ba6e912b7212c8063700a"},slog3cine:{hash:"9702f45a667b36529557-slog3cine",sha256:"db42b57a3a401eae0a994290ab77970924c3a99456c96a2c7ca2b58e7db63337"}}},{number:25,id:"stock/PhotoColor/Portrait/Portra 160.fbfilmneg",hash:"1c7192956b1166b7dc57",sha256:"8ea8c14ba4e1007883cf721af01945acc1e9b895c3d73849258f1bedbcdfbfc4",kind:"stock",collection:"color negative",group:"portrait",label:"portra 160",tables:{logc4:{hash:"1c7192956b1166b7dc57-logc4",sha256:"2128360480122aece81f0042d1d5ef7de07a4044027d5527074cb5031f6db050"},slog3cine:{hash:"1c7192956b1166b7dc57-slog3cine",sha256:"517456d35e73cbbfb680ad65c81fae66221ee1777d014f45a57d6c28caae3cf5"}}},{number:26,id:"stock/PhotoColor/Portrait/Portra 400.fbfilmneg",hash:"307d051c9f3a84b9cd47",sha256:"560a83d5a265933aab77d1834b12741d1d3602f686fcf0e26739a5abe209f1af",kind:"stock",collection:"color negative",group:"portrait",label:"portra 400",tables:{logc4:{hash:"307d051c9f3a84b9cd47-logc4",sha256:"ad235ea9c8b5d5f60756ff021d11c1bd16d3ffa9755ae4f008759dd505d315d5"},slog3cine:{hash:"307d051c9f3a84b9cd47-slog3cine",sha256:"8531cf2e1e42931ac1c46c4910fd7dc006ce6805716fa19ace268831b9070204"}}},{number:27,id:"stock/PhotoColor/Portrait/Portra 800.fbfilmneg",hash:"50617f9a14935e1dc16a",sha256:"3ae27d6e659eabc89f1eb56c7c30f6afa43dc92c9798c1edcc3eb33e3a2a2cea",kind:"stock",collection:"color negative",group:"portrait",label:"portra 800",tables:{logc4:{hash:"50617f9a14935e1dc16a-logc4",sha256:"fdabfb438877c1c24d1d837050793c34cbe8b7c32f8393e58e4d4db85642ae97"},slog3cine:{hash:"50617f9a14935e1dc16a-slog3cine",sha256:"c9478032369a0522aee17cd53c0ff411b22274fe1eae3c0fd64a8939296df373"}}},{number:28,id:"stock/PhotoColor/Classic/Superia 400.fbfilmneg",hash:"2bf389827db8fc7409b2",sha256:"e05e8b7de7e3c5b2bca868cf55f5357ba164e2a0cb92f231e1816ac78d4204d8",kind:"stock",collection:"color negative",group:"classic",label:"superia 400",tables:{logc4:{hash:"2bf389827db8fc7409b2-logc4",sha256:"58e8b1aa84365274e80a31882b4c8369b43708f38b6a1df18d286c0aedda71a0"},slog3cine:{hash:"2bf389827db8fc7409b2-slog3cine",sha256:"54a109b35168024a2e603eaf04a7bb851520e8dade1a8d0c565567df69132263"}}},{number:29,id:"stock/PhotoColor/Classic/ColorPlus 200.fbfilmneg",hash:"0bf9634cd9251686f2f1",sha256:"dd24df8d9f1b90c021fef1ad4064351a07bea394c1ae2a5f35e8d37219418400",kind:"stock",collection:"color negative",group:"classic",label:"colorplus 200",tables:{logc4:{hash:"0bf9634cd9251686f2f1-logc4",sha256:"bc9932eedc61df8af664831228dfe9217065a9f734fc99bb4097317dcec83a12"},slog3cine:{hash:"0bf9634cd9251686f2f1-slog3cine",sha256:"47f03ccdb9e440e95993f98542d3cca6e7701b51c5db807647b54dde67213ef0"}}},{number:30,id:"stock/PhotoColor/Classic/Gold 200.fbfilmneg",hash:"15f259e9968a7c0f40c5",sha256:"5639e09392aa3edc58151cab69d7371ffd38c1bccf12e808716b1ceee4583e18",kind:"stock",collection:"color negative",group:"classic",label:"gold 200",tables:{logc4:{hash:"15f259e9968a7c0f40c5-logc4",sha256:"9ada80fd0827c34c9101aea7be5305dd944afe52e824183c988f13850dc8cb1a"},slog3cine:{hash:"15f259e9968a7c0f40c5-slog3cine",sha256:"af1b22b0bdadf271477f597a5d61bdf2c54c4f5580be7b418f233beaa53ff366"}}},{number:31,id:"stock/PhotoColor/Classic/UltraMax 400.fbfilmneg",hash:"0f1546383584ffbf0c6d",sha256:"581336e3b530df7534468f4db97746b3b5cf16ff9b9ff8fce09f6f7e6bf52794",kind:"stock",collection:"color negative",group:"classic",label:"ultramax 400",tables:{logc4:{hash:"0f1546383584ffbf0c6d-logc4",sha256:"60da1e43f7c1bdd8d1960369326c788696049a206cf5105cad455aadb3784e98"},slog3cine:{hash:"0f1546383584ffbf0c6d-slog3cine",sha256:"ae9fc1afb3356465fbe7f808187dbaec1b0a80b1d2f5e9c217af09aeda8dbc2e"}}},{number:32,id:"stock/PhotoColor/Classic/Fujicolor 200.fbfilmneg",hash:"614d18ad0fa6cbb3b310",sha256:"1827564e621ab41a6cc573fbe6e8e44a506ef4f4f9f22b9858bcd2866f898f5e",kind:"stock",collection:"color negative",group:"classic",label:"fujicolor 200",tables:{logc4:{hash:"614d18ad0fa6cbb3b310-logc4",sha256:"e4e949e1e6a94238d4424b0ab66cc3f7747534a2cb37c41226b8b9b64325de4e"},slog3cine:{hash:"614d18ad0fa6cbb3b310-slog3cine",sha256:"8e0e999a508e9e7c388c3339fd36e805a8d76d0163b5f3140b713f90130407fa"}}},{number:33,id:"stock/PhotoColor/Vivid/Ektar 100.fbfilmneg",hash:"37b39e23eeed891943a2",sha256:"6d917845ad42af0069a90c9411ad92e888e801672d7808a60368177ab05004f8",kind:"stock",collection:"color negative",group:"vivid",label:"ektar 100",tables:{logc4:{hash:"37b39e23eeed891943a2-logc4",sha256:"b9e1c78fb15f5cfdae9fe3a3dd88c485e36df3a14724deb56f3c98eebb849a6e"},slog3cine:{hash:"37b39e23eeed891943a2-slog3cine",sha256:"8d0676ddc23c99cc0a709e16e8c6bfcc27084fbf15f9748674997dd9c553f23e"}}},{number:34,id:"stock/PhotoColor/Vivid/Lomo Color 100.fbfilmneg",hash:"28c58b21901ffafb8026",sha256:"18e50eb5f6e0c820be78d434776d57d29c979493d6b054298b5a856391db304d",kind:"stock",collection:"color negative",group:"vivid",label:"lomo color 100",tables:{logc4:{hash:"28c58b21901ffafb8026-logc4",sha256:"1cb3597192dc02aaeb3b6d2f18cb3053786acc7ed006854e817b155e3506975b"},slog3cine:{hash:"28c58b21901ffafb8026-slog3cine",sha256:"73c928d02509d1f1d1efab6dc32b924e0854db599c2f4d500c9f27dcb90ffb94"}}},{number:35,id:"stock/PhotoColor/Vivid/Aerocolor 100.fbfilmneg",hash:"a673d3c69731d85b86c4",sha256:"828872cf3851e56027d84381c7aebd3c4f3ec4fe6bb083e90d89ee13d8271623",kind:"stock",collection:"color negative",group:"vivid",label:"aerocolor 100",tables:{logc4:{hash:"a673d3c69731d85b86c4-logc4",sha256:"449f3b65f8618469ed9e8b2cd51e46b758e95f77d54d61742d2ce4cd61e18e54"},slog3cine:{hash:"a673d3c69731d85b86c4-slog3cine",sha256:"ef86ceab34e252299e0897b0220c5d8b7ac4f042529ad57cb8e456bae6a03c93"}}},{number:36,id:"stock/PhotoColor/Vivid/Phoenix.fbfilmneg",hash:"e7d7536754674c35aa49",sha256:"1cabbd28e88f4c8bee4e0011232d6a217c870848476c702c0518a8ac46d9682d",kind:"stock",collection:"color negative",group:"vivid",label:"phoenix",tables:{logc4:{hash:"e7d7536754674c35aa49-logc4",sha256:"f0d46d982eb5488daf6b92e3d021053466ac063cf384141bcba90790c8428715"},slog3cine:{hash:"e7d7536754674c35aa49-slog3cine",sha256:"383720b40b78db0de52b70caa7959ebdf34f2044c5017abf4e32dedacc25a161"}}},{number:37,id:"stock/PhotoColor/Cine/CineStill 800T.fbfilmneg",hash:"0b8e1ff254ee8e2a45c1",sha256:"6732af8710649bb4887110caa4fe552e83fa61dc4a1b1e19a7794181416b0f1a",kind:"stock",collection:"color negative",group:"cinestill",label:"cinestill 800t",tables:{logc4:{hash:"0b8e1ff254ee8e2a45c1-logc4",sha256:"77ff93b03b695ab2dc588605cbe41604a7a7deaaa85b6b1c53eead74dd535f70"},slog3cine:{hash:"0b8e1ff254ee8e2a45c1-slog3cine",sha256:"fa7bc0eef6a4b68c3c76ca17fbd5d117be5134f4d3eea9f148af0162b2855368"}}},{number:38,id:"stock/PhotoColor/Cine/CineStill 400D.fbfilmneg",hash:"069f33c0011b2c68718a",sha256:"b451c0a3f32b7d32ef409cffb511db023223beb602a60e6a6caff1c4ac1ea490",kind:"stock",collection:"color negative",group:"cinestill",label:"cinestill 400d",tables:{logc4:{hash:"069f33c0011b2c68718a-logc4",sha256:"63ee60ec1749e781785b679b33986c0be287b2198980bef946dfc6c5389dede8"},slog3cine:{hash:"069f33c0011b2c68718a-slog3cine",sha256:"2de7348f29263ba2428789a421cc9fd1cf6e4ab9ca381bde0c2d69981c45acc0"}}},{number:39,id:"stock/PhotoColor/Cine/CineStill 50D.fbfilmneg",hash:"8cf8926463e3e909a835",sha256:"a681cd2f758ec66171a0b8494ed4f5d496599e69da7cc49103868efbf806113a",kind:"stock",collection:"color negative",group:"cinestill",label:"cinestill 50d",tables:{logc4:{hash:"8cf8926463e3e909a835-logc4",sha256:"ee105a5a5cfbef1a10b065092ffd630b764067e70a0548866a7d0cefdf06aa7c"},slog3cine:{hash:"8cf8926463e3e909a835-slog3cine",sha256:"1fb2f9bc4aa487e0575637b005b685f0d87ab3a6a1e16d1491b284bd50f8863f"}}},{number:40,id:"stock/PhotoColor/Stylized/Ektachrome C41.fbfilmneg",hash:"b0402bf8f5591e219177",sha256:"2616ac31325d743c0212edfe81fe01ffb61a173db393baacfc7ef4053ffdafa9",kind:"stock",collection:"color negative",group:"specialty",label:"ektachrome c41",tables:{logc4:{hash:"b0402bf8f5591e219177-logc4",sha256:"94e041fb3c7face91aa01f3601c4996dc9fe57284f1af3b3014bfc2eff46871e"},slog3cine:{hash:"b0402bf8f5591e219177-slog3cine",sha256:"3fa275094cf2349b51351e1393dd1a1ceb87304fc2715e3044c7c4f1604d2d39"}}},{number:41,id:"stock/PhotoColor/Stylized/Purple XR.fbfilmneg",hash:"fc75a210efb408479f7c",sha256:"025d1a543fe3bb58ea9488ca0504bb544ec4af55769066a5b06979ddd5e5ec7e",kind:"stock",collection:"color negative",group:"specialty",label:"purple xr",tables:{logc4:{hash:"fc75a210efb408479f7c-logc4",sha256:"373e08ba3c2af5e8a850f8430fc2f91656df2981e20423a2f27e3635a7fdb6c3"},slog3cine:{hash:"fc75a210efb408479f7c-slog3cine",sha256:"f0b5ebcac3206c4235e45be5eeef099cf1e61edca8b809dfce6d18cbcc3a604f"}}},{number:42,id:"stock/PhotoColor/Stylized/Redscale XR.fbfilmneg",hash:"b478a4b37293e1cd7271",sha256:"78230c65977e7415c914caa1c4f3196b08f8d82be4d45502a31092e1067dd471",kind:"stock",collection:"color negative",group:"specialty",label:"redscale xr",tables:{logc4:{hash:"b478a4b37293e1cd7271-logc4",sha256:"8a362587350be2f87f777449fd44816a64f5a5866236b8f1919a9e685270ac36"},slog3cine:{hash:"b478a4b37293e1cd7271-slog3cine",sha256:"8cd5ce8f841f901d50b87fde5588fe1c151da5ce7381810b5ea4a382745f2551"}}},{number:43,id:"stock/PhotoColor/Stylized/XP2 400.fbfilmneg",hash:"21bc8e616c71bdd3dc26",sha256:"c44c6b2fdd8c6cbeca0c2793d70c07ae2edad1468d548787a1a45f673009eaf6",kind:"stock",collection:"color negative",group:"specialty",label:"xp2 400",tables:{logc4:{hash:"21bc8e616c71bdd3dc26-logc4",sha256:"fa2466898ff33948a53624f5b3124f810abf8d3dddb6e2c9f406820150b80453"},slog3cine:{hash:"21bc8e616c71bdd3dc26-slog3cine",sha256:"3ee1772a45afd64c91e07ee378ce0c5ea8c48036a50d87e5579e84a696123e0f"}}},{number:44,id:"stock/PhotoBW/Classic/HP5 400.fbfilmneg",hash:"14cf96e62ee81f239566",sha256:"be24f71bb06129ab0553cc70b9831b7b16311576d26d6fe26d3b5b3a68d132d7",kind:"stock",collection:"black and white negative",group:"classic",label:"hp5 400",tables:{logc4:{hash:"14cf96e62ee81f239566-logc4",sha256:"a73c789501877a27a9c0ed42a62b1f5a1b40fea3bb8e0829bef5419429457642"},slog3cine:{hash:"14cf96e62ee81f239566-slog3cine",sha256:"b66dcb2d948d919eb31d58a5b0de1a9388fbc5d774261ba051b33110b6143b6e"}}},{number:45,id:"stock/PhotoBW/Classic/Delta 400.fbfilmneg",hash:"7f87b4fbfed571ae7362",sha256:"03fc29256153562a77243787c8220b7454a97b2c4f528cd81d64fc6570a9dd80",kind:"stock",collection:"black and white negative",group:"classic",label:"delta 400",tables:{logc4:{hash:"7f87b4fbfed571ae7362-logc4",sha256:"c7588b4c108a6bd168f8f0dffdf4ff408b7b9d090f12ee305cfd982c9da9f5c7"},slog3cine:{hash:"7f87b4fbfed571ae7362-slog3cine",sha256:"fee7f970c5d007acd33b3cdf5bb909d3da1f9edd144ff7bff70d42d742345091"}}},{number:46,id:"stock/PhotoBW/Classic/T-MAX 400.fbfilmneg",hash:"f5ba00a6e5039e797f4c",sha256:"28a7a45815962a43997cd77ccbde1322f75c30d4727cda74f8e20cadeb10e97d",kind:"stock",collection:"black and white negative",group:"classic",label:"t-max 400",tables:{logc4:{hash:"f5ba00a6e5039e797f4c-logc4",sha256:"d43d7aee516569f54c5853ea6af6d27604ee107f9368af389a1e41edf81d5ea8"},slog3cine:{hash:"f5ba00a6e5039e797f4c-slog3cine",sha256:"5122aaa711ed16d99d904173cb7489fe5dd10af2cd98eee8e719206d5cd0ef84"}}},{number:47,id:"stock/PhotoBW/Classic/Tri-X 400.fbfilmneg",hash:"ed440fc1337cdfdc86e3",sha256:"55702591f916cec4bc2ca90a76a52996eae449b84937f161f7f91080d311223c",kind:"stock",collection:"black and white negative",group:"classic",label:"tri-x 400",tables:{logc4:{hash:"ed440fc1337cdfdc86e3-logc4",sha256:"cbbc87cc7829d04d00b60a75bbbff66226c2051f2746b83e72c4cc6f33fa2044"},slog3cine:{hash:"ed440fc1337cdfdc86e3-slog3cine",sha256:"66a7e7fb3649918dd77492369ed5f657bb8ca35e50ddfdf4efab0e930f83e166"}}},{number:48,id:"stock/PhotoBW/Retro/Fomapan 400.fbfilmneg",hash:"0bb5ef0935f2d6fb31d2",sha256:"fbc0c0e6db037c58b7dd5cd52c4836c1fb7bd9ccd77293dc9d49c30fc69a8e9a",kind:"stock",collection:"black and white negative",group:"retro",label:"fomapan 400",tables:{logc4:{hash:"0bb5ef0935f2d6fb31d2-logc4",sha256:"b9989889e9be17ad1619acfa68d0fe2e2d90a727123b825d074e57c8918f5686"},slog3cine:{hash:"0bb5ef0935f2d6fb31d2-slog3cine",sha256:"b5f49e0a48f59512a50ec7db512f164dc5667b96b3598cb8a4f561ed1da0dbe7"}}},{number:49,id:"stock/PhotoBW/High ISO/T-MAX 3200.fbfilmneg",hash:"1571a8b82ac80b2bf7ff",sha256:"95da1d2edddf50bc8698b09f212c19c297cf36a8304e7c90c9e2be85f2cce8bd",kind:"stock",collection:"black and white negative",group:"fast",label:"t-max 3200",tables:{logc4:{hash:"1571a8b82ac80b2bf7ff-logc4",sha256:"ecfbbd8b79983078cb853574b9264597bd2f7cc8f446ab8a4507ce5aadaa9095"},slog3cine:{hash:"1571a8b82ac80b2bf7ff-slog3cine",sha256:"de9fe45107208cf18db3108470b81e74c06354dac0db624066800e06af3aea4f"}}},{number:50,id:"stock/PhotoBW/High ISO/Delta 3200.fbfilmneg",hash:"4c340b0c7f42d917e66f",sha256:"8295d557f4e4eca9711e21334b83fde2b4b03a2765d1ef23309b6f2a7917a917",kind:"stock",collection:"black and white negative",group:"fast",label:"delta 3200",tables:{logc4:{hash:"4c340b0c7f42d917e66f-logc4",sha256:"0450330fe2cf6c85bbb22d5e6d4dea923219a91f8a753317f6f3e234e22dcaa3"},slog3cine:{hash:"4c340b0c7f42d917e66f-slog3cine",sha256:"17282b8d8c236a0bcca6d948c0bb211bb4c257a1913201da10283bc179224765"}}},{number:51,id:"stock/PhotoBW/Low ISO/Acros 100II.fbfilmneg",hash:"cbd839be59a0a508fb8f",sha256:"cb63d53e511569b86600a08053f0dbf503e0a6d8fd2deeb59d4298e5af96cc1e",kind:"stock",collection:"black and white negative",group:"slow",label:"acros 100ii",tables:{logc4:{hash:"cbd839be59a0a508fb8f-logc4",sha256:"9e7612d978dcf69f0b8f516c792da24417d32db52f421c7477caaf69bbbfeded"},slog3cine:{hash:"cbd839be59a0a508fb8f-slog3cine",sha256:"4cc57b907828362c0bb59e93660e234318c329e7b831d2f0016ac381397b4324"}}},{number:52,id:"stock/PhotoBW/Low ISO/FP4 125.fbfilmneg",hash:"ec4978838b35b503bf0c",sha256:"6e65df53d13f683fbd1fe2c48039252a3b3f6e6175c2155d4ad69f809bf7bfd9",kind:"stock",collection:"black and white negative",group:"slow",label:"fp4 125",tables:{logc4:{hash:"ec4978838b35b503bf0c-logc4",sha256:"f10003f5126bac5ae8275a9934c6a19b2ddd8c6de9513006a23456cf32f21d2a"},slog3cine:{hash:"ec4978838b35b503bf0c-slog3cine",sha256:"61fcceebd980eff5fc7bc5230d19a3d29bc2c987d3b109099d3231d71b6f512e"}}},{number:53,id:"stock/PhotoBW/Low ISO/T-MAX 100.fbfilmneg",hash:"8d4afdf51b4abcc95c69",sha256:"458146bb6a8bf7f0ecec71d28f9254c726560f88e9eca53efaa66cecc900d265",kind:"stock",collection:"black and white negative",group:"slow",label:"t-max 100",tables:{logc4:{hash:"8d4afdf51b4abcc95c69-logc4",sha256:"20196bd247cfab9f9e6d9cbb79972650ecfe439fe8de0c08bea56834a7a6f785"},slog3cine:{hash:"8d4afdf51b4abcc95c69-slog3cine",sha256:"1cec3a29383a51b914827634cb7265b1f3cb5a654750df1c4fdecea773efc1f4"}}},{number:54,id:"stock/PhotoBW/Low ISO/PanF 50.fbfilmneg",hash:"d66760fc9df2eef31948",sha256:"435301549b1f67756fb5c199ba433d103bed9a255c19f9dac95a17658539e522",kind:"stock",collection:"black and white negative",group:"slow",label:"pan f 50",tables:{logc4:{hash:"d66760fc9df2eef31948-logc4",sha256:"090407f5d39f3a275a89503aaedaa155061381de63b57041fcfe113216178421"},slog3cine:{hash:"d66760fc9df2eef31948-slog3cine",sha256:"c42f69cb8d6989255ffbefc2df46e583aeedf5105af77f2a226ca458864c6ec3"}}},{number:55,id:"stock/PhotoBW/Low ISO/CineStill XX 250.fbfilmneg",hash:"93509be7dd8e65c2b385",sha256:"57a95c33826127d995ae1789952dc5c5a7089e69f2f36e429a70e6712e27da56",kind:"stock",collection:"black and white negative",group:"slow",label:"cinestill xx 250",tables:{logc4:{hash:"93509be7dd8e65c2b385-logc4",sha256:"b2ea65f23778b570d8e6db3ec96f3a17184d3b38fc2e1f12932c1ca543bafff4"},slog3cine:{hash:"93509be7dd8e65c2b385-slog3cine",sha256:"8d5af6e18b8fc41c298a12b43e721a3c3a1a6520ae9d7cf4b60f14c2b362aefa"}}},{number:56,id:"stock/PhotoBW/High Contrast/Delta 100.fbfilmneg",hash:"830844c886c0e9bf833d",sha256:"721afdd1bc074111c6ddbde9347bd3698d73046d74613323b6895614f4b5d66b",kind:"stock",collection:"black and white negative",group:"high contrast",label:"delta 100",tables:{logc4:{hash:"830844c886c0e9bf833d-logc4",sha256:"d445ef21910889ab36db1313cd5ea4773b735af0e4d129508734db6b9ab7bff6"},slog3cine:{hash:"830844c886c0e9bf833d-slog3cine",sha256:"c59104a255b7ad0b10756f31af9126792a5add203eeca0fcbd63cfa82678d001"}}},{number:57,id:"stock/PhotoBW/High Contrast/Ortho 80.fbfilmneg",hash:"fe924a23dc3c01cfbfa3",sha256:"d91a0999eb4aa341c152ad989ef7979cefba4276f0436cea63bf9a55496b6373",kind:"stock",collection:"black and white negative",group:"high contrast",label:"ortho 80",tables:{logc4:{hash:"fe924a23dc3c01cfbfa3-logc4",sha256:"bba5d2a83f2e7cf0bd9da591b3f594deacb12931bab92ea227db66c72f294aed"},slog3cine:{hash:"fe924a23dc3c01cfbfa3-slog3cine",sha256:"6e3120cf56a56b1978087eb29c15c815b30ee33f30bb6a9a6744bb04bd7ac708"}}},{number:58,id:"stock/PhotoBW/High Contrast/Monolit 3 (Ortho).fbfilmneg",hash:"0b3664d1c804807a2a86",sha256:"7328dc985f64a6280d70fea7a5e0e22a0dd0ad68218ac718ca4c59bf8d5c255a",kind:"stock",collection:"black and white negative",group:"high contrast",label:"monolit 3 ortho",tables:{logc4:{hash:"0b3664d1c804807a2a86-logc4",sha256:"ed98e07b03d98df513a38c9067fa5107c3f3a21e203ded87dc80b21d31667436"},slog3cine:{hash:"0b3664d1c804807a2a86-slog3cine",sha256:"abd8e16c295a571af61aa564c0b728041019059fba49a7066168af98c327c9db"}}},{number:59,id:"stock/PhotoReversal/Default/Ektachrome 100.fbfilmneg",hash:"df3fa738d2990c6895ac",sha256:"2d647cace6241dacda9262c2218bdd5b5b6f4f2508836c80d3a308e903ce3d30",kind:"stock",collection:"slide film",group:"",label:"ektachrome 100",tables:{logc4:{hash:"df3fa738d2990c6895ac-logc4",sha256:"defbdaaacbb12f107c2b23f0cc65900d160279c71c7433a8dd34aeccad778ac2"},slog3cine:{hash:"df3fa738d2990c6895ac-slog3cine",sha256:"87b4b1ad94a2b321c6fe297f788515ede8171b72d76d43b0eef31f089e699e59"}}},{number:60,id:"stock/PhotoReversal/Default/Velvia 100.fbfilmneg",hash:"6c8e2ae3d5460b683667",sha256:"ccc8c446c5bc5eb0cb85520a7cbe1cb9678c374ebfc19f1ebdd23f13f145e300",kind:"stock",collection:"slide film",group:"",label:"velvia 100",tables:{logc4:{hash:"6c8e2ae3d5460b683667-logc4",sha256:"0fbac2290d9968b5365e898404ba826cebb5a7f49aa64f52d347273300fc8b60"},slog3cine:{hash:"6c8e2ae3d5460b683667-slog3cine",sha256:"dbb272749e76e10f541f9e20b42103e9d4f46d1ac3ec959b71781379ddeea1d9"}}},{number:61,id:"stock/PhotoReversal/Default/Velvia 50.fbfilmneg",hash:"7be6303ad7f58d4d373e",sha256:"d11507543860e9a75a293a85b254926467dd811359081893fab78726aa776f0c",kind:"stock",collection:"slide film",group:"",label:"velvia 50",tables:{logc4:{hash:"7be6303ad7f58d4d373e-logc4",sha256:"b31c4bd661051c1ef4a3bd063e29b4256617348dc3f9abb11840b311ea98b9e7"},slog3cine:{hash:"7be6303ad7f58d4d373e-slog3cine",sha256:"3834b7ef7f8a2db7c05c073aaa17e2f3d39d3d1d0a5fd84485f095070a8b138a"}}},{number:62,id:"stock/PhotoReversal/Default/Provia 100F.fbfilmneg",hash:"0b0c68912f7e500ce1f6",sha256:"63fa05e22bfc0b51e740072761a34474310105f4835dfe5bbc63a5e9dd67545c",kind:"stock",collection:"slide film",group:"",label:"provia 100f",tables:{logc4:{hash:"0b0c68912f7e500ce1f6-logc4",sha256:"ad2d4366ff909654c74f87ae53e6d3cd12b2cbd46b0a9aea5289769f361ea3bd"},slog3cine:{hash:"0b0c68912f7e500ce1f6-slog3cine",sha256:"ed523ed814a280e7b8a6bfd847a020c5e94a2788727ec4915186feb8c3d838d7"}}},{number:63,id:"stock/PhotoReversal/Default/Instax Color.fbfilmneg",hash:"3ccea9e523a25f683011",sha256:"96c7c5ade8b9e41303353903a31aceebc3ba0106d53e1c33d5caace2a8faf2b4",kind:"stock",collection:"slide film",group:"",label:"instax color",tables:{logc4:{hash:"3ccea9e523a25f683011-logc4",sha256:"3f698af32a6f5159cdc7b0e474d6f21fbb8d82d3cec9cd1d88e46e72d2343874"},slog3cine:{hash:"3ccea9e523a25f683011-slog3cine",sha256:"7485f4e2117bf608fb7486669abeef80fd82e69cc2655ef44bcbfe77ee3e6e30"}}},{number:64,id:"stock/PhotoReversal/Default/Instax Monochrome.fbfilmneg",hash:"91377ee33a6217f78b21",sha256:"39b20deccce70a71aef34b6c8bab022ab65434f4930b75ce8567ed20552c1195",kind:"stock",collection:"slide film",group:"",label:"instax monochrome",tables:{logc4:{hash:"91377ee33a6217f78b21-logc4",sha256:"0fbdb7ba979642d8120d1e128be595ea324f76b21dc94b41cab5b965e9da9129"},slog3cine:{hash:"91377ee33a6217f78b21-slog3cine",sha256:"2089188df2505e26533408861d2d318ad24e27551d183d7dba98f8ec3e00637f"}}},{number:65,id:"look/1 Clean & Commercial/video.fblook",hash:"d5f23a096058cd3cc682",sha256:"0fb2859c9d4aa45886725e7851e5187080db2198da76ec44a9ebd7935a24c922",kind:"look",collection:"commercial",group:"",label:"broadcast",tables:{logc4:{hash:"d5f23a096058cd3cc682-logc4",sha256:"6447fc2fcef830696e8eb869ad90b5da0b8c23b22144b8917c1f72899f985d13"},slog3cine:{hash:"d5f23a096058cd3cc682-slog3cine",sha256:"88efe861f730a7fe3f6ce3d7a4336e48b82ba1a341353952341fdfbb2677a42b"}}},{number:66,id:"look/1 Clean & Commercial/cine_like.fblook",hash:"b994bde23b45792033f2",sha256:"ce975f810fa67de34197725a0abad1935a19849296249a9262f0050dd60aca63",kind:"look",collection:"commercial",group:"",label:"cinema",tables:{logc4:{hash:"b994bde23b45792033f2-logc4",sha256:"68ff591cd0efd313885e8c1d8e16b7ce7d46f0957fe407c85a24145bafd186a2"},slog3cine:{hash:"b994bde23b45792033f2-slog3cine",sha256:"d04a7968a97932f4b5d232ba4e87bbc1e075d0438332f545af1a4cc9b9607d6c"}}},{number:67,id:"look/1 Clean & Commercial/telecine_like.fblook",hash:"dafa166447af00368af8",sha256:"a614e60718037a3fa7cab21d0663e54f31480f9339a985361c8f83429ea68fa4",kind:"look",collection:"commercial",group:"",label:"dailies",tables:{logc4:{hash:"dafa166447af00368af8-logc4",sha256:"e2d76bccaf1e8873819e497dcd31c59f13d3b6b779b55b38837b8515008f05e3"},slog3cine:{hash:"dafa166447af00368af8-slog3cine",sha256:"3bccc724b7bfb1f59556d161a5617d8d6c1212e52a0af36bf1ce64d2e13c97af"}}},{number:68,id:"look/1 Clean & Commercial/cine_like_beauty.fblook",hash:"664dcc1e5ff63b7a3602",sha256:"c69f05c7774dc8e22db7741a4cae19ada672e656550e014c3c5bd3f8dc5bfae2",kind:"look",collection:"commercial",group:"",label:"beauty",tables:{logc4:{hash:"664dcc1e5ff63b7a3602-logc4",sha256:"98af8cf53cb5d5b5d16b42aef52017c99fe7fa7d15d9bfad5015a7c873243604"},slog3cine:{hash:"664dcc1e5ff63b7a3602-slog3cine",sha256:"1c2000e5567bdb056274ef81e6f3103e9adc58027f37d7cc1e8a1c8202ecfa9f"}}},{number:69,id:"look/1 Clean & Commercial/cine_like_pop.fblook",hash:"d32059d2b20806c100ce",sha256:"043cb70e56bd75c87f074568d5da9c04f8641d8e79dbd5a3a0dd3bc6d4d65eea",kind:"look",collection:"commercial",group:"",label:"product",tables:{logc4:{hash:"d32059d2b20806c100ce-logc4",sha256:"606f83ad1ac58d3196c3755398f5dff0f47b5ce71fd62cd0811120707a72d9be"},slog3cine:{hash:"d32059d2b20806c100ce-slog3cine",sha256:"388e426bcea5c52d46e99ccdaa511c1d19700034069f00d43968c554b9241e3e"}}},{number:70,id:"look/1 Clean & Commercial/photo_like_pop.fblook",hash:"ec965532f423dcebf743",sha256:"0fbac8c797145f6d06ccca198be486aac883b0528dd46b46352e62351ef6b651",kind:"look",collection:"commercial",group:"",label:"packshot",tables:{logc4:{hash:"ec965532f423dcebf743-logc4",sha256:"d501699d3776a72addaff1f3e9d86b2ae29348674ce6d1aa7d2a3e6d7068d9f2"},slog3cine:{hash:"ec965532f423dcebf743-slog3cine",sha256:"c3b4759c95b26e0d98646a9a89400cac757f3e35fe4bfe4049b7e489860845a3"}}},{number:71,id:"look/2 Idealized 35mm/standard.fblook",hash:"7a74db9c3c4b3bb33627",sha256:"20059ea05ff21a9f8a1c3443d49b1a817308d6832803d052d74bbe89b8ffd811",kind:"look",collection:"35mm negative",group:"",label:"standard",tables:{logc4:{hash:"7a74db9c3c4b3bb33627-logc4",sha256:"a6c0a44e2b3f33ad0a76eff8fb4f7d434eeecf55fe45cfb4be426808e17eb62f"},slog3cine:{hash:"7a74db9c3c4b3bb33627-slog3cine",sha256:"01aec00b6c2e7b4e9acedcb9ba7f07f314739601aa435b261c394a3324f99daf"}}},{number:72,id:"look/2 Idealized 35mm/extended.fblook",hash:"8620eb33a2388c072557",sha256:"2e606fb12130af9ac49336fd83bbf123577ad3683dc2a7cebf3ca5abf24fb772",kind:"look",collection:"35mm negative",group:"",label:"latitude",tables:{logc4:{hash:"8620eb33a2388c072557-logc4",sha256:"2fbac3933b5214d5aa38034c2767a4a7162ee97ea8abc6798b58b000a3deac4e"},slog3cine:{hash:"8620eb33a2388c072557-slog3cine",sha256:"eebf4d3d7cd0bdd1dce965fe7da02c685a7c888aa86b4451ad87c93def7eabab"}}},{number:73,id:"look/2 Idealized 35mm/rich.fblook",hash:"4da55be1202c100cd58d",sha256:"b2bb8f07d3541ea7172f6fac5bbfbe12f0e041599a7d64f802365589f8f7f102",kind:"look",collection:"35mm negative",group:"",label:"dense",tables:{logc4:{hash:"4da55be1202c100cd58d-logc4",sha256:"e5f97cc9c7ece67fdf8f103dbe95cc0e1bcff44d1abeb9d914dd2a3246d4f4c0"},slog3cine:{hash:"4da55be1202c100cd58d-slog3cine",sha256:"cbf5d14eee61c9585d949face1c2b1da282cffa66c60b075db1f65d155145d70"}}},{number:74,id:"look/2 Idealized 35mm/neutral.fblook",hash:"4b71ed8e0c53638831fd",sha256:"03fc174fbe34b4d9bbc0896db235c507800711bab17d1a06bea486d13543cfe1",kind:"look",collection:"35mm negative",group:"",label:"neutral",tables:{logc4:{hash:"4b71ed8e0c53638831fd-logc4",sha256:"4a5bc48f0bb70e2caac2ac9bdf037fae731adf2358f9eb87fb5e87274f40d8ab"},slog3cine:{hash:"4b71ed8e0c53638831fd-slog3cine",sha256:"11fd83e422bf130962551bbdc137514cbf94c6fdbefbdb71e8320e9f4455b7ef"}}},{number:75,id:"look/2 Idealized 35mm/proimage.fblook",hash:"de8ad75a1a2cae5af794",sha256:"9d40662d863b147c16b765ce344dfd9ef30b3535ecdee46fb805980764761d0e",kind:"look",collection:"35mm negative",group:"",label:"restrained",tables:{logc4:{hash:"de8ad75a1a2cae5af794-logc4",sha256:"5e78226b6e20d0f3ca3232f071bae57a76d1fdaf5ece3637a4849b6ff3a15d3a"},slog3cine:{hash:"de8ad75a1a2cae5af794-slog3cine",sha256:"fd141039022eaf0680870df7977f2f2f2ca708a00a1bbec37eee5525859b4772"}}},{number:76,id:"look/2 Idealized 35mm/reversal.fblook",hash:"1b5ef1413df1448377a5",sha256:"085c64e8656bdc72f6df3ea87cbdc3cecad5ea2822ef7bdbf785f1a0b5ec6af4",kind:"look",collection:"35mm negative",group:"",label:"reversal",tables:{logc4:{hash:"1b5ef1413df1448377a5-logc4",sha256:"26f045fe3350c28e5c869318e05a08fbad34d254cfd01e6a43c58590a387cca7"},slog3cine:{hash:"1b5ef1413df1448377a5-slog3cine",sha256:"3e7bdda5552525ff585f6485161d735b87669d2a7b51dfaa9ce45fc65bbe05fe"}}},{number:77,id:"look/3 Full 35mm/full.fblook",hash:"bde7a8dae9f0029c08a7",sha256:"7a1ed86c0b48c9eab14cdc78864380c11ee7d80d2e7520748cd64fdccd18d922",kind:"look",collection:"35mm print",group:"",label:"answer print",tables:{logc4:{hash:"bde7a8dae9f0029c08a7-logc4",sha256:"35b0e18b70d51fc7ef711d579daa41ba089d46e017e144d2ff2d0a4ac50fe875"},slog3cine:{hash:"bde7a8dae9f0029c08a7-slog3cine",sha256:"616e96e27643fd36122aa01a598ba703ed4dda1a27b6c5336d93e12516600e55"}}},{number:78,id:"look/3 Full 35mm/telecine.fblook",hash:"e3069ca7edaf6e8a6871",sha256:"d4c1cc26898c7fb3a28d4c9f309ae77a86c2b0690c1abaf1abbcdfc2cf0bd656",kind:"look",collection:"35mm print",group:"",label:"telecine",tables:{logc4:{hash:"e3069ca7edaf6e8a6871-logc4",sha256:"047c850627c7b61646557dce1e1b3a9bf0b98a2da844d2bd7e57127e4feed76a"},slog3cine:{hash:"e3069ca7edaf6e8a6871-slog3cine",sha256:"f6f0ac7f8fe900484f598e803a6a6f88da6705f747a426552aba5a11a9edb59c"}}},{number:79,id:"look/3 Full 35mm/tungsten.fblook",hash:"793e629dd23f07625a52",sha256:"ae60b8cdbefcd0b6809e89c6267f42dda5354b919f434c16d5603859e07a94b5",kind:"look",collection:"35mm print",group:"",label:"tungsten",tables:{logc4:{hash:"793e629dd23f07625a52-logc4",sha256:"f12a449cf02d547d67b7ce97dc5a54848dd70dd4fcb2f8989fe66536dc492b5f"},slog3cine:{hash:"793e629dd23f07625a52-slog3cine",sha256:"e9935030e4d08ee0756c8415473486069edbf270278fcc58373f67cc46734488"}}},{number:80,id:"look/3 Full 35mm/warm.fblook",hash:"d1afcf1071126af0ea36",sha256:"4f3d64b8f49481c34c6d75eda843a0966b6d4bfd20fe12456aba81553def5b93",kind:"look",collection:"35mm print",group:"",label:"warm print",tables:{logc4:{hash:"d1afcf1071126af0ea36-logc4",sha256:"c6d6605131784961e58a035a50cb62d45a4fdc1ae3fb1cb14123f73caa20be86"},slog3cine:{hash:"d1afcf1071126af0ea36-slog3cine",sha256:"a4661000ab05dbe7c124e8708eea42158a1fe09eb2920c9d03f91a82c9ebf8fe"}}},{number:81,id:"look/3 Full 35mm/bleach.fblook",hash:"e332d3996f57fbaae72b",sha256:"a7c9159808c235f331dd44d6dbce638ae5000c4605de0413f316f1918b8ca602",kind:"look",collection:"35mm print",group:"",label:"silver retention",tables:{logc4:{hash:"e332d3996f57fbaae72b-logc4",sha256:"57d4e5e0b52bd2e219bac8e02a503eda4f3b000c9c793a70bad2dad48ac2350a"},slog3cine:{hash:"e332d3996f57fbaae72b-slog3cine",sha256:"db5735b664e15cfbdfda63b0773008d11f170394fc0538cad450ce2398eb3a9b"}}},{number:82,id:"look/3 Full 35mm/chill.fblook",hash:"ea2011e1dd170763346c",sha256:"1f852c23916f35a53101922aa97bf1496a7bbf497227dd5adaa05041686e3c5f",kind:"look",collection:"35mm print",group:"",label:"cool print",tables:{logc4:{hash:"ea2011e1dd170763346c-logc4",sha256:"11a174a275ba60484b3cf46912331b861c8299e8418e727c709c96cddf9ef9a4"},slog3cine:{hash:"ea2011e1dd170763346c-slog3cine",sha256:"8007cf44ab45aab5de5a9c00d605b540c71fcdf0bf544b312011885c012072a5"}}},{number:83,id:"look/4 16mm/standard_16mm.fblook",hash:"c925caba596086362636",sha256:"20059ea05ff21a9f8a1c3443d49b1a817308d6832803d052d74bbe89b8ffd811",kind:"look",collection:"16mm",group:"",label:"documentary",tables:{logc4:{hash:"c925caba596086362636-logc4",sha256:"a6c0a44e2b3f33ad0a76eff8fb4f7d434eeecf55fe45cfb4be426808e17eb62f"},slog3cine:{hash:"c925caba596086362636-slog3cine",sha256:"01aec00b6c2e7b4e9acedcb9ba7f07f314739601aa435b261c394a3324f99daf"}}},{number:84,id:"look/4 16mm/spicy.fblook",hash:"96722d8fea88d16f44e6",sha256:"cf977b4ad1d284d543a620a06a948bbf3c18e9c1a422a51212f5450806526ece",kind:"look",collection:"16mm",group:"",label:"saturated",tables:{logc4:{hash:"96722d8fea88d16f44e6-logc4",sha256:"569ac53061295652bc0ffb15470b11bdaa2d451461bde0dd49c43f4e0c95ed8f"},slog3cine:{hash:"96722d8fea88d16f44e6-slog3cine",sha256:"38325af0627c9b6b488e0989204f93942bf24361370422cda84fde669b3ec8c6"}}},{number:85,id:"look/4 16mm/notmoonlight.fblook",hash:"1bc5b2876e983f9abd58",sha256:"c8154c6b3299af6b4b8f6250a39b7baf80f8c20ef462086272a05a41fdc12ca2",kind:"look",collection:"16mm",group:"",label:"day for night",tables:{logc4:{hash:"1bc5b2876e983f9abd58-logc4",sha256:"55450587e41a53b2fbfd9ee6e0f55ae423d8b03b7567e34edac9df209bcb134d"},slog3cine:{hash:"1bc5b2876e983f9abd58-slog3cine",sha256:"595c89c6617ecd8152aeb0584339cd3f66a8c454491c8b2f96c6760423a947de"}}},{number:86,id:"look/4 16mm/flat scan.fblook",hash:"6bbded22dcdba51d1da0",sha256:"de67d8f582c5f011b459b592d9312cb9c4036b71774edecbe2023a9fbd2925e0",kind:"look",collection:"16mm",group:"",label:"flat scan",tables:{logc4:{hash:"6bbded22dcdba51d1da0-logc4",sha256:"072fb36276368fabb7128af202c5b0657a40ce7be32efd5c2f8eb03cfa0bd64d"},slog3cine:{hash:"6bbded22dcdba51d1da0-slog3cine",sha256:"ca084c654162c9b8588cfe1bae67c62c07875215fc91e4e71840f9956a468165"}}},{number:87,id:"look/4 16mm/indie scan.fblook",hash:"4dc360d9777f84b038c7",sha256:"d3c645f393e5f63812b8067fbfe5dcd032ec71b051ab9a255371ee0c877e2e86",kind:"look",collection:"16mm",group:"",label:"indie",tables:{logc4:{hash:"4dc360d9777f84b038c7-logc4",sha256:"5ded82c763469d7cd28af7e6f4f0c64a28869f6f119bd8fcc51fc09a1a89765c"},slog3cine:{hash:"4dc360d9777f84b038c7-slog3cine",sha256:"ce5c2e35d511c2d76416540bd997bdf99ac45e7f59a2bdd808026718244ac97a"}}},{number:88,id:"look/4 16mm/scrubs.fblook",hash:"354181100a0eb296a46f",sha256:"28a392ffe91ed0e6f87daee6b3c177d4b6b3a3442705023db0b88ddefe634062",kind:"look",collection:"16mm",group:"",label:"tape transfer",tables:{logc4:{hash:"354181100a0eb296a46f-logc4",sha256:"7955fc62f1b935b7b931a7cc1e7e45f18390bb5c9a8319e4cf6d41555f013130"},slog3cine:{hash:"354181100a0eb296a46f-slog3cine",sha256:"00e458e1de34b8270dabbaa6011b4e665264fa174ad4bdbcd62463467140ad55"}}},{number:89,id:"look/5 8mm/typical.fblook",hash:"1748cb5dba4ee4b6cf14",sha256:"20059ea05ff21a9f8a1c3443d49b1a817308d6832803d052d74bbe89b8ffd811",kind:"look",collection:"super 8",group:"",label:"home movie",tables:{logc4:{hash:"1748cb5dba4ee4b6cf14-logc4",sha256:"a6c0a44e2b3f33ad0a76eff8fb4f7d434eeecf55fe45cfb4be426808e17eb62f"},slog3cine:{hash:"1748cb5dba4ee4b6cf14-slog3cine",sha256:"01aec00b6c2e7b4e9acedcb9ba7f07f314739601aa435b261c394a3324f99daf"}}},{number:90,id:"look/5 8mm/lifted.fblook",hash:"07093d8ade0bf83ababf",sha256:"c8b4ba2c0b9d40400832dc2ea15fad3d6c59f460760fb06ca1c7dfb423baaa2b",kind:"look",collection:"super 8",group:"",label:"projected",tables:{logc4:{hash:"07093d8ade0bf83ababf-logc4",sha256:"1e8e4bd55dad23965b66280ae930f5746a04e8f4e0a2927886deef72223a878f"},slog3cine:{hash:"07093d8ade0bf83ababf-slog3cine",sha256:"c368965baa62e868b97def41776a4d59f9f9c6e91aae6f7314de479123daae03"}}},{number:91,id:"look/5 8mm/fuzz.fblook",hash:"9a27ce046063628613a9",sha256:"d0bd619c3bc55eeb041827d3bd1c60b0b86e8d53af718cd218a5a9315a24f963",kind:"look",collection:"super 8",group:"",label:"diffused",tables:{logc4:{hash:"9a27ce046063628613a9-logc4",sha256:"edf8f4dbbe936d873b3c10e7cf14cd46f2758e609ce572e1e51f6a9812ca4681"},slog3cine:{hash:"9a27ce046063628613a9-slog3cine",sha256:"518b88dbaf5f21ac573fbbd2aed291a7c475cb1b6fe242571ca36792e11dd830"}}},{number:92,id:"look/5 8mm/summer.fblook",hash:"df4643ebdb04850d6940",sha256:"ebe014ec3af62081e5dc8ec1fea489d3e687ea7d839913e1a0a1cc44158d0fe7",kind:"look",collection:"super 8",group:"",label:"sun faded",tables:{logc4:{hash:"df4643ebdb04850d6940-logc4",sha256:"2a0cfdad26f2ba0b5206fdd639f11e66ced0bac7332305a8c2c2de1c37adc117"},slog3cine:{hash:"df4643ebdb04850d6940-slog3cine",sha256:"ff766044f1326586b1e3d194069f846ddf1ff8d3919560a066df78555f6686f9"}}},{number:93,id:"look/5 8mm/trash.fblook",hash:"b5d4f1f8790caa0124ba",sha256:"f694f45d12b4ed77f66e08697bb7171db9c7712e638bc3d714501e1d902fc292",kind:"look",collection:"super 8",group:"",label:"found footage",tables:{logc4:{hash:"b5d4f1f8790caa0124ba-logc4",sha256:"d8fe007fa0192692e7758517f809841cb747977b65be8c9b24f7a13e78367b32"},slog3cine:{hash:"b5d4f1f8790caa0124ba-slog3cine",sha256:"a806dfdd5ed162238e29bc967c7fe9993949feb22f47a90d6744285d1d80a5dd"}}},{number:94,id:"look/Pastel & Low-Contrast/easy.fblook",hash:"d5f75230b10228ebc4e5",sha256:"d3d7c350f28b78a55fcaf9a6e4146147b46e16f5daf3f691d0a7b354e2379e9d",kind:"look",collection:"low contrast",group:"",label:"overcast",tables:{logc4:{hash:"d5f75230b10228ebc4e5-logc4",sha256:"34cc0eaf73144a77b473c90a005c218df1c02b3216e4b99a359eaab269e4edd0"},slog3cine:{hash:"d5f75230b10228ebc4e5-slog3cine",sha256:"48a59dba191609fe68d2412972b42769fd4b2010eaa12523c321c73c1fea939a"}}},{number:95,id:"look/Pastel & Low-Contrast/wes_2.fblook",hash:"e4441dc735a9ba2007f0",sha256:"dd532aafd868c9a2f7279969c5d5799e56a27354fc3cec61de5bd0b6e427e9d4",kind:"look",collection:"low contrast",group:"",label:"pastel",tables:{logc4:{hash:"e4441dc735a9ba2007f0-logc4",sha256:"95b33caeadf9416196c4226214a40a58fe80a89592f971186113bffc2d8015ff"},slog3cine:{hash:"e4441dc735a9ba2007f0-slog3cine",sha256:"a30cf208e29c9cb3e49dbfbe5b93ba6c619e87e0ec3658383b161664851f6721"}}},{number:96,id:"look/Pastel & Low-Contrast/log.fblook",hash:"28f04ac4b5617492a043",sha256:"fd5e0f3f0145f92a1bf93e84e0d591d5abd4393f4ae1d40d9af6494d14c4d1db",kind:"look",collection:"low contrast",group:"",label:"marine layer",tables:{logc4:{hash:"28f04ac4b5617492a043-logc4",sha256:"089a6fa621544921fed07adbae2c276b68bf6a2e5872d772b8dbb66d4a4e3698"},slog3cine:{hash:"28f04ac4b5617492a043-slog3cine",sha256:"dc328a0b45a16f628c77e33b1e0d816cd0a4bb7b776f1cdb6e7001e062840371"}}},{number:97,id:"look/Pastel & Low-Contrast/warmie.fblook",hash:"96d755f0b92fba69ec40",sha256:"957e3d8f434a3c16aefb107d6d134eb200b4590a249b6e7371926c228355df15",kind:"look",collection:"low contrast",group:"",label:"golden",tables:{logc4:{hash:"96d755f0b92fba69ec40-logc4",sha256:"c8b97b4bc89dd817ff6f3e91e4205687bdaab9de21c0f85df20cd6e9c5419ea7"},slog3cine:{hash:"96d755f0b92fba69ec40-slog3cine",sha256:"716ceac0e80cc23dd5a0ddb4c7b9cf1000e6af2d8ca4d51a24a70310e3b65f18"}}},{number:98,id:"look/Still Photography/portrait_c.fblook",hash:"21f566ca8d150a57fda9",sha256:"cadc9bbb04df1c77613620c37d6d063f21752fad6e7cd1276fe881df12989754",kind:"look",collection:"photographic",group:"",label:"portrait",tables:{logc4:{hash:"21f566ca8d150a57fda9-logc4",sha256:"eb9058f52554f3eebbb8ba275b8b041cf19ab7d80dc87666d697fecd8358d15f"},slog3cine:{hash:"21f566ca8d150a57fda9-slog3cine",sha256:"86bf919e57805addd0fde53181eb59910a748ebc286ae2439efb809c8bd3e8f6"}}},{number:99,id:"look/Still Photography/slide.fblook",hash:"cdc85a160ee50230fd9f",sha256:"4c12fa6ad360f02bba2f00619ceb0e9cb17c39bcc9e090cf25732636d1fb79b0",kind:"look",collection:"photographic",group:"",label:"slide",tables:{logc4:{hash:"cdc85a160ee50230fd9f-logc4",sha256:"2108dc78393d5c341dd7abd195e62490725a60625d275294287e0a201ff0c5f5"},slog3cine:{hash:"cdc85a160ee50230fd9f-slog3cine",sha256:"8680b5b1dd1d57eaf28fe400a11db2acc1a431e609b1ad68601c5909cbe645fd"}}},{number:100,id:"look/Still Photography/pushed.fblook",hash:"db580ae8d4e13222988d",sha256:"f63f4d39793f807b2e4720ec64e262ebcfc5d5398a73c9752899c91de518e7c8",kind:"look",collection:"photographic",group:"",label:"push two",tables:{logc4:{hash:"db580ae8d4e13222988d-logc4",sha256:"12b2c21f021bf3b48679cb57dafc5f50f32479c0f28dd7e1a6bcf8f9d969e000"},slog3cine:{hash:"db580ae8d4e13222988d-slog3cine",sha256:"ab554e3fa554b3fff17c8a50204b803834f6f1b39d2b2192b2e5c0ce633681a3"}}},{number:101,id:"look/Still Photography/remjet_a.fblook",hash:"0bfdbdc03660c69b2d61",sha256:"313550933e02336035dee847373d198963026a8fdb30d5ce7c8a3deee013dbd4",kind:"look",collection:"photographic",group:"",label:"halation",tables:{logc4:{hash:"0bfdbdc03660c69b2d61-logc4",sha256:"094d1ee2e487a63f1dd3f5f9e8b013566add055c52df7ad74e9c9b76443c83a5"},slog3cine:{hash:"0bfdbdc03660c69b2d61-slog3cine",sha256:"c78da8f059f5825ecee525747f6ae1964ba77dcf877670e6a201704b30eae9f1"}}},{number:102,id:"look/Still Photography/punchy.fblook",hash:"366a5666efe55a758980",sha256:"ef951fdd857f8ac8997fc918d8344038e0fd974904e048d0e555b36d71c256bb",kind:"look",collection:"photographic",group:"",label:"flash",tables:{logc4:{hash:"366a5666efe55a758980-logc4",sha256:"c09d98a4c3b5ae1c4ca93a319993352bed1c07344547f49537998fb12c3f1f65"},slog3cine:{hash:"366a5666efe55a758980-slog3cine",sha256:"d51784c05addd44e1a1fe254a49b1caed57565dba239f671165ac4777d9719d6"}}},{number:103,id:"look/Iconic Looks/seven.fblook",hash:"e3cdb2cbc9079391543e",sha256:"e9aaaf7f96d9e7adf9c7e48537ab780b77574ff8d7121c9613678badd0fb237e",kind:"look",collection:"reference",group:"",label:"fluorescent",tables:{logc4:{hash:"e3cdb2cbc9079391543e-logc4",sha256:"655a011cab20767a28ef26720ef2416bdcd7e1afe6ba713bc7f537739c84c43d"},slog3cine:{hash:"e3cdb2cbc9079391543e-slog3cine",sha256:"20a2076ceccf0b2215709ff2c55f1d1e7c1bc55b98ced8a2f4e605ede82aa50e"}}},{number:104,id:"look/Iconic Looks/the_wrestler.fblook",hash:"1c837b47572c211e376e",sha256:"e607e9d9f20cc52c6db1f010f1aa69341e43aba0c9207438b99dbda54ef05f82",kind:"look",collection:"reference",group:"",label:"grit",tables:{logc4:{hash:"1c837b47572c211e376e-logc4",sha256:"4bc54f353deb9ad6e668d9efd7c27fea53ed39524c490c12d7fedc0d9b961087"},slog3cine:{hash:"1c837b47572c211e376e-slog3cine",sha256:"3e9caf59518b92abcdf978aae27c84a12f323514a1abb42c4fb1df3801bee34b"}}},{number:105,id:"look/Iconic Looks/euphoria.fblook",hash:"b3b5fb4a2d1e7795d48b",sha256:"529ece7d8991ac4dee8df844fdbda943a095d113a8c810c623f86ace7a283162",kind:"look",collection:"reference",group:"",label:"neon",tables:{logc4:{hash:"b3b5fb4a2d1e7795d48b-logc4",sha256:"2f8ab2afb9ae2d22cdf4a465ada05969f4aec39a45c04aecd79df203239b3c32"},slog3cine:{hash:"b3b5fb4a2d1e7795d48b-slog3cine",sha256:"2d02bc2f9613888da17b35e2ea9bbaea43cad53acf7a06ffa8e6db5229e82114"}}},{number:106,id:"look/Iconic Looks/minority_report.fblook",hash:"2f15c11407d3a10053a5",sha256:"a178374748c605d43b5fcbac39a542491a039f21de7fc8dbf0291bddd5615f76",kind:"look",collection:"reference",group:"",label:"clinical",tables:{logc4:{hash:"2f15c11407d3a10053a5-logc4",sha256:"1d4f86741bbb20b0bcb3671b5e7c2d9034448c0885916450b2c47b9e337fa2b4"},slog3cine:{hash:"2f15c11407d3a10053a5-slog3cine",sha256:"f0c6500e39beef6d1baffa9f6a8841408134cd81af78e59581869eaeb192bf3e"}}},{number:107,id:"look/Iconic Looks/orange_and_teal.fblook",hash:"69467c32c23d52d88afa",sha256:"5029c787be90d68ee97c8b139c2d3004d36dd756dabc418dd66005364d51bac7",kind:"look",collection:"reference",group:"",label:"orange and teal",tables:{logc4:{hash:"69467c32c23d52d88afa-logc4",sha256:"1cabef428a1e57442ee22fe848ef384ff68c0ba4d60711fc196151d247a77db0"},slog3cine:{hash:"69467c32c23d52d88afa-slog3cine",sha256:"226fbc06457541bbe57de13204c6264fe57cb201a2b913baf43a603be4439abf"}}},{number:108,id:"look/Iconic Looks/amelie.fblook",hash:"f04c4b3553463dae85f0",sha256:"b8585ceec58f795976c83ba948859b704984de8b0ded1561b996f35a5e4a3d5e",kind:"look",collection:"reference",group:"",label:"warm green",tables:{logc4:{hash:"f04c4b3553463dae85f0-logc4",sha256:"6b6aa04a9d8daa313348c8d4f0c76903e6e2e9ee2d6c4f882e83ecb36b095818"},slog3cine:{hash:"f04c4b3553463dae85f0-slog3cine",sha256:"fc5b77ebf930c64364ce506655d45f77dea10561fe00602456da704ef38c83f6"}}},{number:109,id:"look/Iconic Looks/kingdom.fblook",hash:"ad8a751daf364dab2622",sha256:"e10ef6f84df98f34d93ff655ec0ea307a99b6d48e7579ab96fbf192a512a4de4",kind:"look",collection:"reference",group:"",label:"storybook",tables:{logc4:{hash:"ad8a751daf364dab2622-logc4",sha256:"19877a0fd5f7a0435f6faed9d1911d3aa922ee25211e80a488cbb765e431af2e"},slog3cine:{hash:"ad8a751daf364dab2622-slog3cine",sha256:"af472ac796684391ecb8bdea35d10b1b6c768a4dc3d977983b886011392b1c46"}}},{number:110,id:"look/Iconic Looks/fincher.fblook",hash:"33a6846cc763bf518e06",sha256:"b3f9d6ba2d6e43a52dac4675e511886f633d8f36ecbc983f5385ff17768fbb1d",kind:"look",collection:"reference",group:"",label:"tobacco",tables:{logc4:{hash:"33a6846cc763bf518e06-logc4",sha256:"c3200dfc6266440dcdf08de03258899eb7a83fc3904073ec1c24d5e15b6321d1"},slog3cine:{hash:"33a6846cc763bf518e06-slog3cine",sha256:"7780f6a0bd386253e1e4817867bd74c10317bc62ef795f3605d85a4d177a1e56"}}},{number:111,id:"look/Vintage Cinema/sergio.fblook",hash:"70d72ce15d3955091bda",sha256:"e5e8b1cd458eefc7053e563a7ecbd240e9f8ab93a15e2bfcb30711a264f112a8",kind:"look",collection:"period",group:"",label:"dust",tables:{logc4:{hash:"70d72ce15d3955091bda-logc4",sha256:"e8fb2adab0791394d7d97c27f95a7598bbc7c14b904796dfa717b5487edbb268"},slog3cine:{hash:"70d72ce15d3955091bda-slog3cine",sha256:"0be7bd7049d4bc3079eaafa0f3e2760e23079ab3769174a152545ace350c02b5"}}},{number:112,id:"look/Vintage Cinema/smoke.fblook",hash:"c14dda43a784de7c3700",sha256:"bd228142081fed590d816ece1f96afbbcd09ffa0a9384ab617e39f001e9a9f26",kind:"look",collection:"period",group:"",label:"smoke",tables:{logc4:{hash:"c14dda43a784de7c3700-logc4",sha256:"1bd1133c5f9a3d67edb80cc8c3eeac088463fcb0825374b9c50b6355367787e7"},slog3cine:{hash:"c14dda43a784de7c3700-slog3cine",sha256:"7311df0d0e2503dafd1152d4d75448cc55737bc839dfc60d55036f6e51d129b1"}}},{number:113,id:"look/Vintage Cinema/telecine_1999.fblook",hash:"99f762c374bf4514bf8a",sha256:"5bf6721bf3d2a5af6e1b2f12917e6531fe1d6e6d991690ca69f7d17fa9d2a05e",kind:"look",collection:"period",group:"",label:"late nineties",tables:{logc4:{hash:"99f762c374bf4514bf8a-logc4",sha256:"b8b5762a0204998d1ab145a3adf5ff4dfd3721839895cd52fa63ba0341d34c16"},slog3cine:{hash:"99f762c374bf4514bf8a-slog3cine",sha256:"a375f840d9548de46e9b5549259eaca6a7373ed4cbe3fa1b7cbaa7f18739490b"}}},{number:114,id:"look/Vintage Cinema/old1.fblook",hash:"505498bd2c1c0304488c",sha256:"e8a4dd595c46a9304b4ef0853477ca2c52193dbdc27dd357f420422241f90829",kind:"look",collection:"period",group:"",label:"seventies",tables:{logc4:{hash:"505498bd2c1c0304488c-logc4",sha256:"c748b60aa640501b02f16c6294d3cff09a93e69683da8dfb8bffeaf9bd6562c7"},slog3cine:{hash:"505498bd2c1c0304488c-slog3cine",sha256:"d49cd5bf76fd27e5cb7cdd0a9da41bf9c77e20edb27f498c979e2413c51024a7"}}},{number:115,id:"look/Vintage Cinema/old2.fblook",hash:"4618354776df37902ba5",sha256:"64b749b9860d9fe2b898ce9a802e51cffb227fbead70f3c22ec14a43a37fefb6",kind:"look",collection:"period",group:"",label:"faded print",tables:{logc4:{hash:"4618354776df37902ba5-logc4",sha256:"bece3d02ab6a53cb805ce828c5dbee48042a43037bafa9a456fcd92445826f58"},slog3cine:{hash:"4618354776df37902ba5-slog3cine",sha256:"4ec5404d85f8aea3a727c43bd676f40a3467d266ef63ff060c1457aab5aca9de"}}},{number:116,id:"look/Black & White/nice pan.fblook",hash:"eb80fb6951b9b1abf2e1",sha256:"61f5620c43ae6467e15f978d45c997a22e9582c924e387855df87800bfe0716f",kind:"look",collection:"black and white",group:"",label:"panchromatic",tables:{logc4:{hash:"eb80fb6951b9b1abf2e1-logc4",sha256:"9df05346e03df176a8c25f982172564227a5bf64c0a291ba5e7df5b32e4c5ed8"},slog3cine:{hash:"eb80fb6951b9b1abf2e1-slog3cine",sha256:"e7e1110999730f5b124c20d1e2bf59779131c5f9a168b95f9354bcab58be83c2"}}},{number:117,id:"look/Black & White/citizen kane.fblook",hash:"937b5b8d569c6a0c3677",sha256:"fe82d9cacbe8de3feb8da64b51b8f0bd5dee0df82df5fba69fe8eb0e4ba365b5",kind:"look",collection:"black and white",group:"",label:"studio era",tables:{logc4:{hash:"937b5b8d569c6a0c3677-logc4",sha256:"30c34728ab7af0e857b3e8506b10b7fc24632201bd5bbef6848cbbef479a0e12"},slog3cine:{hash:"937b5b8d569c6a0c3677-slog3cine",sha256:"ab5a46426a84d9df85c6ecf744bc574d4b9876f91b5dc8bde2fb545d779fc3ee"}}},{number:118,id:"look/Black & White/glamour.fblook",hash:"020d6dbc263a98761a7b",sha256:"d908f9d739668ac9dfa4670143aa5e91865988cd80cf0fb6fd56a8d52b1e9627",kind:"look",collection:"black and white",group:"",label:"soft key",tables:{logc4:{hash:"020d6dbc263a98761a7b-logc4",sha256:"fe136199906b80c26d186c1f2985c9e5d43bcbc27be1073d48107a8e396a12e8"},slog3cine:{hash:"020d6dbc263a98761a7b-slog3cine",sha256:"dc4593ad9edd785a87022cb093ed5f9ce0d6bfe854104fa18ef3ef1c24dbdf2a"}}},{number:119,id:"look/Black & White/old.fblook",hash:"a10ab4ab9e0473d20fb4",sha256:"b5bce10d22c0b6d978c0da8698b1ff383ea3b1914c26eb4c8bee8acf33731e57",kind:"look",collection:"black and white",group:"",label:"nitrate",tables:{logc4:{hash:"a10ab4ab9e0473d20fb4-logc4",sha256:"1a4769c3b7243cad95f7c1cf554ff0665f0b01aeff9d79e64a811b176f551f29"},slog3cine:{hash:"a10ab4ab9e0473d20fb4-slog3cine",sha256:"f8569bc223dab55686246f01500a4b3d1dfa8709653c6db2148151a9014471ea"}}},{number:120,id:"look/Black & White/Sepia.fblook",hash:"c995c945c090bca69166",sha256:"2f6b862650994c68f045ade4d3d7795305b93459241d5a6999226d1183a37d12",kind:"look",collection:"black and white",group:"",label:"toned",tables:{logc4:{hash:"c995c945c090bca69166-logc4",sha256:"9756502d6f8a25fe8a1a83610015aec49b2c1ad59ca12bb65993464b6d117389"},slog3cine:{hash:"c995c945c090bca69166-slog3cine",sha256:"0ae84e1a4d37befc5c88d108d1b5accd6cf05a2d9ec94109c660d54f4818548e"}}},{number:121,id:"look/Black & White/nice ortho.fblook",hash:"9387a3c737cc0fd101d2",sha256:"a7e9e24bc246b84ce6f3a3fa8abfbcb62c90867870f5167dec542f090ef79faf",kind:"look",collection:"black and white",group:"",label:"orthochromatic",tables:{logc4:{hash:"9387a3c737cc0fd101d2-logc4",sha256:"b9d941f8d575b7072acebe563aca04ce4c1e81536adc035e8887173165f6dbd7"},slog3cine:{hash:"9387a3c737cc0fd101d2-slog3cine",sha256:"0989dafc139e58fd8ba2f1a4118be36e7383c919f7f201bdc8d3056467adb889"}}},{number:122,id:"look/Black & White/mono.fblook",hash:"4692285fd84f9d250d3b",sha256:"4e7b206ac61649cfd7cfb834e983f92e0d0f7c025565d4853b7cae853b25c77b",kind:"look",collection:"black and white",group:"",label:"hard contrast",tables:{logc4:{hash:"4692285fd84f9d250d3b-logc4",sha256:"f4fb0446043c7f8d74d48785ec076feef717284625a34f53409335e375eec77d"},slog3cine:{hash:"4692285fd84f9d250d3b-slog3cine",sha256:"eb5ccd8c5773b5c4e94154f1e69e2ae64be438e9f7df2d3f91ec82ac237bb36e"}}},{number:123,id:"look/Extreme Looks/phoneix.fblook",hash:"2b3e96623a2b3dc3c616",sha256:"f2562ddd4716330e4b71118c4ec907f56c631dc66bf1ac060d87234b637b4cb0",kind:"look",collection:"experimental",group:"",label:"burnout",tables:{logc4:{hash:"2b3e96623a2b3dc3c616-logc4",sha256:"d961fe54aeaea1be1612b00d819e55d6345461cd45f13d3388c1bbb115aaec8c"},slog3cine:{hash:"2b3e96623a2b3dc3c616-slog3cine",sha256:"769c9381843200a7fe00146f66d5c04d20fb1f750fb6ef0f52e9bfa789097118"}}},{number:124,id:"look/Extreme Looks/purp.fblook",hash:"02af9ff3db82f755c7df",sha256:"342979d459fc3d15387fe56c77e2b213b163e923078dfcdeb1419a55391b17ee",kind:"look",collection:"experimental",group:"",label:"violet",tables:{logc4:{hash:"02af9ff3db82f755c7df-logc4",sha256:"1b55fad5fa9b1f28cbe35093a409a0263e1f6184dc821b2bb0218c16fcc82c32"},slog3cine:{hash:"02af9ff3db82f755c7df-slog3cine",sha256:"9a6f2f114cf859435795ca240ce16eaf52219b2ba0da6cee7254809cbc0bd93b"}}},{number:125,id:"look/Extreme Looks/blasted.fblook",hash:"7d599929461225300cae",sha256:"fd51c12e64fbd6526e256d0fcc9a00a1bf487914a802b0377032bee28778befa",kind:"look",collection:"experimental",group:"",label:"overexposed",tables:{logc4:{hash:"7d599929461225300cae-logc4",sha256:"cd64d9c2bac509a7e359cec3729b8626812a377744e6b6102c891126904c45e9"},slog3cine:{hash:"7d599929461225300cae-slog3cine",sha256:"fa575c421c5bf845e62e370f0bc139496c8f9fadeafef965058711ecdfa8797c"}}},{number:126,id:"look/Extreme Looks/instacolor.fblook",hash:"028ee89f15bdd058347f",sha256:"fce844465246ea55f465a99d18b22ca4a97257df08245f58706a87eaf11ed4d2",kind:"look",collection:"experimental",group:"",label:"instant",tables:{logc4:{hash:"028ee89f15bdd058347f-logc4",sha256:"da46549a5ad5ba3cc1f321e289e732d792a3b1791c46ce58ab24c3243f76510d"},slog3cine:{hash:"028ee89f15bdd058347f-slog3cine",sha256:"1dd7e2b03e37e46189cdf2e724946733a90c964db606e839ba5d9278d7ba0ed8"}}}]};var vo=un.items,Cc=un.collections;var To=65**3*3*4;function Co(n){for(let e of vo){if(n===`film:${e.hash}`)return e;for(let t of Object.values(e.tables))if(n===`film:${t.hash}`)return{...e,...t}}}var Fe=new Map,hn=new Map;function Zn(n,e="https://osmo.inc/api/35mm/tables"){let t=Co(n);if(!t)return Promise.reject(new Error(`Unknown film table: ${n}`));let a=Fe.get(n);if(a)return Fe.delete(n),Fe.set(n,a),Promise.resolve(a);let o=hn.get(n);if(o)return o;let r=(async()=>{let c=await fetch(`${e}/${t.hash}.bin`,{signal:AbortSignal.timeout(3e4),redirect:"error"});if(!c.ok||!c.body)throw new Error(`Film table download failed (${c.status})`);let d=c.body.getReader(),s=new Uint8Array(To),h=0;try{for(;;){let{done:S,value:k}=await d.read();if(S)break;if(h+k.length>s.length)throw new Error("Film table exceeds expected size");s.set(k,h),h+=k.length}}finally{await d.cancel()}if(h!==s.length)throw new Error("Incomplete film table");let u=new Uint8Array(await crypto.subtle.digest("SHA-256",s));if(Array.from(u,S=>S.toString(16).padStart(2,"0")).join("")!==t.sha256)throw new Error("Film table checksum mismatch");return Fe.set(n,s),Fe.size>8&&Fe.delete(Fe.keys().next().value),s})();return hn.set(n,r),r.finally(()=>hn.delete(n)).catch(()=>{}),r}var At=class{constructor(e=192*1024*1024){this.budget=e}entries=new Map;pending=!1;generation=0;bytes=0;clear(){this.generation++,this.entries.clear(),this.bytes=0}async get(e){let t=this.entries.get(e);if(!t)return;this.entries.delete(e),this.entries.set(e,t);let a=this.generation,o=new Blob([t]).stream().pipeThrough(new DecompressionStream("deflate")),r=new Uint8Array(await new Response(o).arrayBuffer());return a===this.generation?r:void 0}capture(e,t){if(this.pending||this.entries.has(e)||typeof CompressionStream>"u")return;this.pending=!0;let a=this.generation,o;try{o=t()}catch{this.pending=!1;return}o.then(async r=>{if(a!==this.generation)return;let c=new Blob([r]).stream().pipeThrough(new CompressionStream("deflate")),d=new Uint8Array(await new Response(c).arrayBuffer());if(!(a!==this.generation||d.byteLength>this.budget)){for(;this.bytes+d.byteLength>this.budget;){let s=this.entries.keys().next().value;this.bytes-=this.entries.get(s).byteLength,this.entries.delete(s)}this.entries.set(e,d),this.bytes+=d.byteLength}}).catch(()=>{}).finally(()=>{this.pending=!1})}get idle(){return!this.pending}};var Pt=class{document;scene;revision;editing=!1;update(e,t,a,o){let r=e!==this.document||t!==this.scene||a!==this.revision||o||this.editing;return this.document=e,this.scene=t,this.revision=a,this.editing=o,r}};var Ue=class n{static __wrap(e){let t=Object.create(n.prototype);return t.__wbg_ptr=e,aa.register(t,t.__wbg_ptr,t),t}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,aa.unregister(this),e}free(){let e=this.__destroy_into_raw();g.__wbg_engine_free(e,0)}add_font(e){let t=Ve(e,g.__wbindgen_malloc),a=F;g.engine_add_font(this.__wbg_ptr,t,a)}add_image(e,t,a,o){let r=U(e,g.__wbindgen_malloc,g.__wbindgen_realloc),c=F,d=Ve(o,g.__wbindgen_malloc),s=F;g.engine_add_image(this.__wbg_ptr,r,c,t,a,d,s)}add_image_encoded(e,t){let a=U(e,g.__wbindgen_malloc,g.__wbindgen_realloc),o=F,r=Ve(t,g.__wbindgen_malloc),c=F;return g.engine_add_image_encoded(this.__wbg_ptr,a,o,r,c)!==0}add_model_prim(e,t,a,o,r,c,d,s,h,u,b){let S=U(e,g.__wbindgen_malloc,g.__wbindgen_realloc),k=F,i=Ge(t,g.__wbindgen_malloc),_=F,m=nr(a,g.__wbindgen_malloc),l=F,f=U(b,g.__wbindgen_malloc,g.__wbindgen_realloc),p=F;g.engine_add_model_prim(this.__wbg_ptr,S,k,i,_,m,l,o,r,c,d,s,h,u,f,p)}add_svg(e,t){let a=U(e,g.__wbindgen_malloc,g.__wbindgen_realloc),o=F,r=U(t,g.__wbindgen_malloc,g.__wbindgen_realloc),c=F;return g.engine_add_svg(this.__wbg_ptr,a,o,r,c)!==0}add_video_frame(e,t,a,o){let r=U(e,g.__wbindgen_malloc,g.__wbindgen_realloc),c=F;g.engine_add_video_frame(this.__wbg_ptr,r,c,t,a,o)}begin_temporal_frame(e){let t=g.engine_begin_temporal_frame(this.__wbg_ptr,e);if(t[1])throw H(t[0])}cache_frame(e){return g.engine_cache_frame(this.__wbg_ptr,e)!==0}cancel_temporal_frame(){g.engine_cancel_temporal_frame(this.__wbg_ptr)}clear_background_color(){g.engine_clear_background_color(this.__wbg_ptr)}clear_effect_programs(){g.engine_clear_effect_programs(this.__wbg_ptr)}clear_fonts(){g.engine_clear_fonts(this.__wbg_ptr)}clear_frame_cache(){g.engine_clear_frame_cache(this.__wbg_ptr)}clear_images(){g.engine_clear_images(this.__wbg_ptr)}clear_scene_camera(){g.engine_clear_scene_camera(this.__wbg_ptr)}film_scratch_bytes(){return g.engine_film_scratch_bytes(this.__wbg_ptr)}finish_temporal_frame(){let e=g.engine_finish_temporal_frame(this.__wbg_ptr);if(e[1])throw H(e[0])}frame_cache_bytes(){return g.engine_frame_cache_bytes(this.__wbg_ptr)}has_film_table(e){let t=U(e,g.__wbindgen_malloc,g.__wbindgen_realloc),a=F;return g.engine_has_film_table(this.__wbg_ptr,t,a)!==0}has_model(e){let t=U(e,g.__wbindgen_malloc,g.__wbindgen_realloc),a=F;return g.engine_has_model(this.__wbg_ptr,t,a)!==0}image_stats(){let e=g.engine_image_stats(this.__wbg_ptr);var t=er(e[0],e[1]).slice();return g.__wbindgen_free(e[0],e[1]*8,8),t}node_quad(e){let t=g.engine_node_quad(this.__wbg_ptr,e);var a=Qo(t[0],t[1]).slice();return g.__wbindgen_free(t[0],t[1]*4,4),a}pick(e,t){return g.engine_pick(this.__wbg_ptr,e,t)}read_frame_pixels(){let e=g.engine_read_frame_pixels(this.__wbg_ptr);if(e[2])throw H(e[1]);return H(e[0])}remove_model(e){let t=U(e,g.__wbindgen_malloc,g.__wbindgen_realloc),a=F;g.engine_remove_model(this.__wbg_ptr,t,a)}render(e){let t=g.engine_render(this.__wbg_ptr,e);if(t[1])throw H(t[0])}render_unpresented(e){let t=g.engine_render_unpresented(this.__wbg_ptr,e);if(t[1])throw H(t[0])}resize(e,t){g.engine_resize(this.__wbg_ptr,e,t)}restore_frame_pixels(e){let t=Ve(e,g.__wbindgen_malloc),a=F,o=g.engine_restore_frame_pixels(this.__wbg_ptr,t,a);if(o[1])throw H(o[0])}retain_film_tables(e){let t=U(e,g.__wbindgen_malloc,g.__wbindgen_realloc),a=F;g.engine_retain_film_tables(this.__wbg_ptr,t,a)}selection_hits(e,t){return g.engine_selection_hits(this.__wbg_ptr,e,t)}selection_targets_json(){let e,t;try{let a=g.engine_selection_targets_json(this.__wbg_ptr);return e=a[0],t=a[1],W(a[0],a[1])}finally{g.__wbindgen_free(e,t,1)}}set_background_color(e,t,a,o){let r=g.engine_set_background_color(this.__wbg_ptr,e,t,a,o);if(r[1])throw H(r[0])}set_composition(e,t){g.engine_set_composition(this.__wbg_ptr,e,t)}set_dither(e){g.engine_set_dither(this.__wbg_ptr,e)}set_effect(e){g.engine_set_effect(this.__wbg_ptr,e)}set_effect_program(e,t){let a=U(t,g.__wbindgen_malloc,g.__wbindgen_realloc),o=F,r=g.engine_set_effect_program(this.__wbg_ptr,e,a,o);if(r[1])throw H(r[0])}set_element_effects(e){let t=Ge(e,g.__wbindgen_malloc),a=F,o=g.engine_set_element_effects(this.__wbg_ptr,t,a);if(o[1])throw H(o[0])}set_exporting(e){g.engine_set_exporting(this.__wbg_ptr,e)}set_film_effect_program(e,t,a,o){let r=Ge(a,g.__wbindgen_malloc),c=F,d=U(o,g.__wbindgen_malloc,g.__wbindgen_realloc),s=F,h=g.engine_set_film_effect_program(this.__wbg_ptr,e,t,r,c,d,s);if(h[1])throw H(h[0])}set_frame_cache_budget(e){g.engine_set_frame_cache_budget(this.__wbg_ptr,e)}set_group_extrusions(e){let t=Ge(e,g.__wbindgen_malloc),a=F,o=g.engine_set_group_extrusions(this.__wbg_ptr,t,a);if(o[1])throw H(o[0])}set_mode(e){g.engine_set_mode(this.__wbg_ptr,e)}set_orbit(e,t){g.engine_set_orbit(this.__wbg_ptr,e,t)}set_post_effects(e){let t=Ge(e,g.__wbindgen_malloc),a=F;g.engine_set_post_effects(this.__wbg_ptr,t,a)}set_render_scale(e){g.engine_set_render_scale(this.__wbg_ptr,e)}set_scene_camera(e,t,a,o,r,c,d){let s=g.engine_set_scene_camera(this.__wbg_ptr,e,t,a,o,r,c,d);if(s[1])throw H(s[0])}set_transparent(e){g.engine_set_transparent(this.__wbg_ptr,e)}shader_error_epoch(){return g.engine_shader_error_epoch(this.__wbg_ptr)>>>0}shader_errors(){let e,t;try{let a=g.engine_shader_errors(this.__wbg_ptr);return e=a[0],t=a[1],W(a[0],a[1])}finally{g.__wbindgen_free(e,t,1)}}shape_text_outlines(e,t,a){let o=U(e,g.__wbindgen_malloc,g.__wbindgen_realloc),r=F,c=U(t,g.__wbindgen_malloc,g.__wbindgen_realloc),d=F,s=Ge(a,g.__wbindgen_malloc),h=F,u=g.engine_shape_text_outlines(this.__wbg_ptr,o,r,c,d,s,h);var b=Ne(u[0],u[1]).slice();return g.__wbindgen_free(u[0],u[1]*1,1),b}show_cached_frame(e){return g.engine_show_cached_frame(this.__wbg_ptr,e)!==0}submitted_work_done(){return g.engine_submitted_work_done(this.__wbg_ptr)}update_scene(e){let t=Ve(e,g.__wbindgen_malloc),a=F,o=g.engine_update_scene(this.__wbg_ptr,t,a);if(o[1])throw H(o[0])}wants_frames(){return g.engine_wants_frames(this.__wbg_ptr)!==0}};Symbol.dispose&&(Ue.prototype[Symbol.dispose]=Ue.prototype.free);var ze=class{__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,oa.unregister(this),e}free(){let e=this.__destroy_into_raw();g.__wbg_sceneencoder_free(e,0)}add_font(e,t){let a=U(e,g.__wbindgen_malloc,g.__wbindgen_realloc),o=F,r=Ve(t,g.__wbindgen_malloc),c=F,d=g.sceneencoder_add_font(this.__wbg_ptr,a,o,r,c);if(d[1])throw H(d[0])}add_model(e,t){let a=U(e,g.__wbindgen_malloc,g.__wbindgen_realloc),o=F,r=Ve(t,g.__wbindgen_malloc),c=F,d=g.sceneencoder_add_model(this.__wbg_ptr,a,o,r,c);if(d[1])throw H(d[0])}encode(e,t,a){let o=U(e,g.__wbindgen_malloc,g.__wbindgen_realloc),r=F,c=U(t,g.__wbindgen_malloc,g.__wbindgen_realloc),d=F;Zo(a,Ue);let s=g.sceneencoder_encode(this.__wbg_ptr,o,r,c,d,a.__wbg_ptr);if(s[3])throw H(s[2]);var h=Ne(s[0],s[1]).slice();return g.__wbindgen_free(s[0],s[1]*1,1),h}constructor(){let e=g.sceneencoder_new();return this.__wbg_ptr=e,oa.register(this,this.__wbg_ptr,this),this}selection_json(){let e,t;try{let a=g.sceneencoder_selection_json(this.__wbg_ptr);return e=a[0],t=a[1],W(a[0],a[1])}finally{g.__wbindgen_free(e,t,1)}}};Symbol.dispose&&(ze.prototype[Symbol.dispose]=ze.prototype.free);function ia(n,e){return g.create_worker_engine(n,ce(e)?0:pe(e))}function Ao(){return{__proto__:null,"./engine_bg.js":{__proto__:null,__wbg_Window_afcc911b2f9c92e2:function(e){return e.Window},__wbg_WorkerGlobalScope_5d19ebc889ff397e:function(e){return e.WorkerGlobalScope},__wbg___wbindgen_debug_string_c25d447a39f5578f:function(e,t){let a=Sn(t),o=U(a,g.__wbindgen_malloc,g.__wbindgen_realloc),r=F;re().setInt32(e+4,r,!0),re().setInt32(e+0,o,!0)},__wbg___wbindgen_is_function_1ff95bcc5517c252:function(e){return typeof e=="function"},__wbg___wbindgen_is_null_ea9085d691f535d3:function(e){return e===null},__wbg___wbindgen_is_string_ea5e6cc2e4141dfe:function(e){return typeof e=="string"},__wbg___wbindgen_is_undefined_c05833b95a3cf397:function(e){return e===void 0},__wbg___wbindgen_number_get_394265ed1e1b84ee:function(e,t){let a=t,o=typeof a=="number"?a:void 0;re().setFloat64(e+8,ce(o)?0:o,!0),re().setInt32(e+0,!ce(o),!0)},__wbg___wbindgen_string_get_b0ca35b86a603356:function(e,t){let a=t,o=typeof a=="string"?a:void 0;var r=ce(o)?0:U(o,g.__wbindgen_malloc,g.__wbindgen_realloc),c=F;re().setInt32(e+4,c,!0),re().setInt32(e+0,r,!0)},__wbg___wbindgen_throw_344f42d3211c4765:function(e,t){throw new Error(W(e,t))},__wbg__wbg_cb_unref_fffb441def202758:function(e){e._wbg_cb_unref()},__wbg_all_aa886891c0b624c8:function(e){return Promise.all(e)},__wbg_beginRenderPass_aa22c432e793359a:function(){return z(function(e,t){return e.beginRenderPass(t)},arguments)},__wbg_call_8a2dd23819f8a60a:function(){return z(function(e,t){return e.call(t)},arguments)},__wbg_call_a6e5c5dce5018821:function(){return z(function(e,t,a){return e.call(t,a)},arguments)},__wbg_configure_0e4789c0f6b35c8e:function(){return z(function(e,t){e.configure(t)},arguments)},__wbg_copyExternalImageToTexture_4df105bb39517948:function(){return z(function(e,t,a,o){e.copyExternalImageToTexture(t,a,o)},arguments)},__wbg_copyTextureToBuffer_ed6e67a77ecb768d:function(){return z(function(e,t,a,o){e.copyTextureToBuffer(t,a,o)},arguments)},__wbg_copyTextureToTexture_c3f8f1b9c260ecf4:function(){return z(function(e,t,a,o){e.copyTextureToTexture(t,a,o)},arguments)},__wbg_createBindGroupLayout_49a7e2b3d076afcf:function(){return z(function(e,t){return e.createBindGroupLayout(t)},arguments)},__wbg_createBindGroup_655c6e6c0258530e:function(e,t){return e.createBindGroup(t)},__wbg_createBuffer_0726dd2ab09ea1d2:function(){return z(function(e,t){return e.createBuffer(t)},arguments)},__wbg_createCommandEncoder_ec1f40f0cb4d09df:function(e,t){return e.createCommandEncoder(t)},__wbg_createPipelineLayout_2c8cd4528b06c108:function(e,t){return e.createPipelineLayout(t)},__wbg_createRenderPipeline_cf98d4d699bfb03c:function(){return z(function(e,t){return e.createRenderPipeline(t)},arguments)},__wbg_createSampler_c8ffb3c8d565f704:function(e,t){return e.createSampler(t)},__wbg_createShaderModule_2e44fc7677c6288b:function(e,t){return e.createShaderModule(t)},__wbg_createTexture_1bac74c999b8a48e:function(){return z(function(e,t){return e.createTexture(t)},arguments)},__wbg_createView_ceaf2f5881adbd34:function(){return z(function(e,t){return e.createView(t)},arguments)},__wbg_destroy_7ae6d79c9c5ca8d9:function(e){e.destroy()},__wbg_destroy_b59cccd349464fab:function(e){e.destroy()},__wbg_destroy_fe937f756bf8df37:function(e){e.destroy()},__wbg_displayHeight_f06554969d4d6de8:function(e){return e.displayHeight},__wbg_displayWidth_fdcc0a114d98d13e:function(e){return e.displayWidth},__wbg_document_179650d6cb13c263:function(e){let t=e.document;return ce(t)?0:pe(t)},__wbg_drawIndexed_d31913e79d58fbac:function(e,t,a,o,r,c){e.drawIndexed(t>>>0,a>>>0,o>>>0,r,c>>>0)},__wbg_draw_6877f98847e1e36c:function(e,t,a,o,r){e.draw(t>>>0,a>>>0,o>>>0,r>>>0)},__wbg_end_f99ebed53d4e198a:function(e){e.end()},__wbg_engine_new:function(e){return Ue.__wrap(e)},__wbg_error_744744ff0c9861e6:function(e){console.error(e)},__wbg_error_a6fa202b58aa1cd3:function(e,t){let a,o;try{a=e,o=t,console.error(W(e,t))}finally{g.__wbindgen_free(a,o,1)}},__wbg_finish_4d91de5e927dd13f:function(e,t){return e.finish(t)},__wbg_finish_6e06b68ab68cd9f6:function(e){return e.finish()},__wbg_from_13e323c65fc8f464:function(e){return Array.from(e)},__wbg_getCompilationInfo_7b4ad012e12007a2:function(e){return e.getCompilationInfo()},__wbg_getContext_e79ddf6a9cb3cc76:function(){return z(function(e,t,a){let o=e.getContext(W(t,a));return ce(o)?0:pe(o)},arguments)},__wbg_getContext_fd298c901058eb31:function(){return z(function(e,t,a){let o=e.getContext(W(t,a));return ce(o)?0:pe(o)},arguments)},__wbg_getCurrentTexture_20714d1bd9051cab:function(){return z(function(e){return e.getCurrentTexture()},arguments)},__wbg_getMappedRange_d0bf3141224111b6:function(){return z(function(e,t,a){return e.getMappedRange(t,a)},arguments)},__wbg_getPreferredCanvasFormat_8b57039d1801a506:function(e){let t=e.getPreferredCanvasFormat();return(Oe.indexOf(t)+1||102)-1},__wbg_get_507a50627bffa49b:function(e,t){return e[t>>>0]},__wbg_get_78f252d074a84d0b:function(){return z(function(e,t){return Reflect.get(e,t)},arguments)},__wbg_get_b2053e9bfdf3ca8e:function(e,t){let a=e[t>>>0];return ce(a)?0:pe(a)},__wbg_get_unchecked_6e0ad6d2a41b06f6:function(e,t){return e[t>>>0]},__wbg_gpu_2ccc250735d24a2a:function(e){return e.gpu},__wbg_height_6eec812c213259a1:function(e){return e.height},__wbg_height_f2cc35b336f266f1:function(e){return e.height},__wbg_instanceof_Window_05ba1ee4f6781663:function(e){let t;try{t=e instanceof Window}catch{t=!1}return t},__wbg_label_7ed42f25f841996b:function(e,t){let a=t.label,o=U(a,g.__wbindgen_malloc,g.__wbindgen_realloc),r=F;re().setInt32(e+4,r,!0),re().setInt32(e+0,o,!0)},__wbg_length_1f0964f4a5e2c6d8:function(e){return e.length},__wbg_length_2246dbf5c045896b:function(e){return e.length},__wbg_length_370319915dc99107:function(e){return e.length},__wbg_limits_20c6f56636df7d38:function(e){return e.limits},__wbg_limits_328c61cd41512420:function(e){return e.limits},__wbg_lineNum_d37e55b31c466252:function(e){return e.lineNum},__wbg_mapAsync_52b01fa9e8f765fd:function(e,t,a,o){return e.mapAsync(t>>>0,a,o)},__wbg_maxBindGroupsPlusVertexBuffers_33e5006b23e20478:function(e){return e.maxBindGroupsPlusVertexBuffers},__wbg_maxBindGroups_f6d26f3a67826666:function(e){return e.maxBindGroups},__wbg_maxBindingsPerBindGroup_edab2e8dabbf6060:function(e){return e.maxBindingsPerBindGroup},__wbg_maxBufferSize_bbc69284c14aa7da:function(e){return e.maxBufferSize},__wbg_maxColorAttachmentBytesPerSample_63ebe4f81de2f34c:function(e){return e.maxColorAttachmentBytesPerSample},__wbg_maxColorAttachments_aed8c38beabf3a5c:function(e){return e.maxColorAttachments},__wbg_maxComputeInvocationsPerWorkgroup_2d964564c37f1c65:function(e){return e.maxComputeInvocationsPerWorkgroup},__wbg_maxComputeWorkgroupSizeX_a3e3206570da184f:function(e){return e.maxComputeWorkgroupSizeX},__wbg_maxComputeWorkgroupSizeY_dffa4a62244b7563:function(e){return e.maxComputeWorkgroupSizeY},__wbg_maxComputeWorkgroupSizeZ_976ebcb760f6d07d:function(e){return e.maxComputeWorkgroupSizeZ},__wbg_maxComputeWorkgroupStorageSize_2e8dbece6e532e2a:function(e){return e.maxComputeWorkgroupStorageSize},__wbg_maxComputeWorkgroupsPerDimension_bb7d36b4d20c80f4:function(e){return e.maxComputeWorkgroupsPerDimension},__wbg_maxDynamicStorageBuffersPerPipelineLayout_1ca859cb96a414e0:function(e){return e.maxDynamicStorageBuffersPerPipelineLayout},__wbg_maxDynamicUniformBuffersPerPipelineLayout_e968f2c8cd8f4d46:function(e){return e.maxDynamicUniformBuffersPerPipelineLayout},__wbg_maxInterStageShaderVariables_138ac882c4d6a3d3:function(e){return e.maxInterStageShaderVariables},__wbg_maxSampledTexturesPerShaderStage_bb3e6b2698321fa6:function(e){return e.maxSampledTexturesPerShaderStage},__wbg_maxSamplersPerShaderStage_98c00a1829fa414b:function(e){return e.maxSamplersPerShaderStage},__wbg_maxStorageBufferBindingSize_e500e31f479e669e:function(e){return e.maxStorageBufferBindingSize},__wbg_maxStorageBuffersPerShaderStage_eb663f6d7521b6a7:function(e){return e.maxStorageBuffersPerShaderStage},__wbg_maxStorageTexturesPerShaderStage_bb3ad93b53e618c0:function(e){return e.maxStorageTexturesPerShaderStage},__wbg_maxTextureArrayLayers_2a56d05fb261c99a:function(e){return e.maxTextureArrayLayers},__wbg_maxTextureDimension1D_84590c1d4770d319:function(e){return e.maxTextureDimension1D},__wbg_maxTextureDimension2D_7f2b5c8b2727e3fc:function(e){return e.maxTextureDimension2D},__wbg_maxTextureDimension3D_7f3babddf55c32a6:function(e){return e.maxTextureDimension3D},__wbg_maxUniformBufferBindingSize_d80a09e23c0b284c:function(e){return e.maxUniformBufferBindingSize},__wbg_maxUniformBuffersPerShaderStage_0b8b2de676fa740e:function(e){return e.maxUniformBuffersPerShaderStage},__wbg_maxVertexAttributes_a693dd921316649b:function(e){return e.maxVertexAttributes},__wbg_maxVertexBufferArrayStride_f256d91f281076cb:function(e){return e.maxVertexBufferArrayStride},__wbg_maxVertexBuffers_70ab564b25d5ac20:function(e){return e.maxVertexBuffers},__wbg_message_d7183208b1b1e932:function(e,t){let a=t.message,o=U(a,g.__wbindgen_malloc,g.__wbindgen_realloc),r=F;re().setInt32(e+4,r,!0),re().setInt32(e+0,o,!0)},__wbg_messages_badb262a90dcf11d:function(e){return e.messages},__wbg_minStorageBufferOffsetAlignment_3248ed00dcdbf79f:function(e){return e.minStorageBufferOffsetAlignment},__wbg_minUniformBufferOffsetAlignment_3b9fa4caae03e903:function(e){return e.minUniformBufferOffsetAlignment},__wbg_navigator_51379c10a84aeec9:function(e){return e.navigator},__wbg_navigator_99621db14b3f1099:function(e){return e.navigator},__wbg_new_227d7c05414eb861:function(){return new Error},__wbg_new_25e75d1f0df4d87a:function(){return z(function(e,t){return new OffscreenCanvas(e>>>0,t>>>0)},arguments)},__wbg_new_32b398fb48b6d94a:function(){return new Array},__wbg_new_aec3e25493d729fe:function(e,t){try{var a={a:e,b:t},o=(c,d)=>{let s=a.a;a.a=0;try{return Qn(s,a.b,c,d)}finally{a.a=s}};return new Promise(o)}finally{a.a=0}},__wbg_new_da52cf8fe3429cb2:function(){return new Object},__wbg_new_from_slice_7568ba55b4a7e81f:function(e,t){return new Uint32Array(ca(e,t))},__wbg_new_from_slice_77cdfb7977362f3c:function(e,t){return new Uint8Array(Ne(e,t))},__wbg_new_typed_1824d93f294193e5:function(e,t){try{var a={a:e,b:t},o=(c,d)=>{let s=a.a;a.a=0;try{return Qn(s,a.b,c,d)}finally{a.a=s}};return new Promise(o)}finally{a.a=0}},__wbg_new_typed_4148bd5ae72ab3f0:function(){return new Object},__wbg_new_with_byte_offset_and_length_54c7724ee3ec7d82:function(e,t,a){return new Uint8Array(e,t>>>0,a>>>0)},__wbg_now_390768da5ee9e776:function(e){return e.now()},__wbg_now_86c0d4ba3fa605b8:function(){return Date.now()},__wbg_of_5f1b88183ddb5d94:function(e,t){return Array.of(e,t)},__wbg_offset_5c948d5d8fd342e0:function(e){return e.offset},__wbg_onSubmittedWorkDone_270d6b5a45520e79:function(e){return e.onSubmittedWorkDone()},__wbg_performance_3ef602e13d6c3b56:function(e){let t=e.performance;return ce(t)?0:pe(t)},__wbg_popErrorScope_8e7f4cbff8b758dd:function(e){return e.popErrorScope()},__wbg_prototypesetcall_4770620bbe4688a0:function(e,t,a){Uint8Array.prototype.set.call(Ne(e,t),a)},__wbg_push_d2ae3af0c1217ae6:function(e,t){return e.push(t)},__wbg_querySelectorAll_7e98cbe256deaadd:function(){return z(function(e,t,a){return e.querySelectorAll(W(t,a))},arguments)},__wbg_queueMicrotask_0ab5b2d2393e99b9:function(e){return e.queueMicrotask},__wbg_queueMicrotask_6a09b7bc46549209:function(e){queueMicrotask(e)},__wbg_queue_adce34608fd0c893:function(e){return e.queue},__wbg_requestAdapter_2e6718811c735a57:function(e,t){return e.requestAdapter(t)},__wbg_requestDevice_ab46d0519ea1cc34:function(e,t){return e.requestDevice(t)},__wbg_resolve_2191a4dfe481c25b:function(e){return Promise.resolve(e)},__wbg_setBindGroup_268fd1714fff0ef5:function(){return z(function(e,t,a,o,r,c,d){e.setBindGroup(t>>>0,a,ca(o,r),c,d>>>0)},arguments)},__wbg_setBindGroup_f0de6cb2c7dbfc2c:function(e,t,a){e.setBindGroup(t>>>0,a)},__wbg_setIndexBuffer_7f3cf667b4d71566:function(e,t,a,o,r){e.setIndexBuffer(t,na[a],o,r)},__wbg_setPipeline_c41bf46790f27f9e:function(e,t){e.setPipeline(t)},__wbg_setScissorRect_42511fefb18b86ef:function(e,t,a,o,r){e.setScissorRect(t>>>0,a>>>0,o>>>0,r>>>0)},__wbg_setVertexBuffer_1e448859663dd400:function(e,t,a,o){e.setVertexBuffer(t>>>0,a,o)},__wbg_setVertexBuffer_7cf533d694e747f3:function(e,t,a,o,r){e.setVertexBuffer(t>>>0,a,o,r)},__wbg_setViewport_d9fc3eac343de7d0:function(e,t,a,o,r,c,d){e.setViewport(t,a,o,r,c,d)},__wbg_set_61e45ae8061eca11:function(e,t,a){e.set(t,a>>>0)},__wbg_set_8535240470bf2500:function(){return z(function(e,t,a){return Reflect.set(e,t,a)},arguments)},__wbg_set_a_88262a42340d0b1c:function(e,t){e.a=t},__wbg_set_access_9a5092f05dc45fad:function(e,t){e.access=Ho[t]},__wbg_set_address_mode_u_9e2695575a219e33:function(e,t){e.addressModeU=gn[t]},__wbg_set_address_mode_v_f479b2e6cccbcac4:function(e,t){e.addressModeV=gn[t]},__wbg_set_address_mode_w_46273e153230180d:function(e,t){e.addressModeW=gn[t]},__wbg_set_alpha_bfd2df62e7bc581b:function(e,t){e.alpha=t},__wbg_set_alpha_mode_df805952892caa9c:function(e,t){e.alphaMode=Lo[t]},__wbg_set_alpha_to_coverage_enabled_8b5dc2b0a225b3b2:function(e,t){e.alphaToCoverageEnabled=t!==0},__wbg_set_array_layer_count_7312f0f31af94e7c:function(e,t){e.arrayLayerCount=t>>>0},__wbg_set_array_stride_f64_27ffaf4fffd74e61:function(e,t){e.arrayStride=t},__wbg_set_aspect_0d453bca3d012f02:function(e,t){e.aspect=kn[t]},__wbg_set_aspect_210da747c9d77aba:function(e,t){e.aspect=kn[t]},__wbg_set_aspect_4962514fe99e68e6:function(e,t){e.aspect=kn[t]},__wbg_set_attributes_7537844a7e6dafdc:function(e,t,a){e.attributes=ge(t,a)},__wbg_set_b_c47befe0af3261eb:function(e,t){e.b=t},__wbg_set_base_array_layer_f176bb9f1b37b342:function(e,t){e.baseArrayLayer=t>>>0},__wbg_set_base_mip_level_1df145d9f8db32a9:function(e,t){e.baseMipLevel=t>>>0},__wbg_set_beginning_of_pass_write_index_e9f5d016947893bd:function(e,t){e.beginningOfPassWriteIndex=t>>>0},__wbg_set_bind_group_layouts_5a9cfea401c020ab:function(e,t,a){e.bindGroupLayouts=ge(t,a)},__wbg_set_binding_155b0440b4307793:function(e,t){e.binding=t>>>0},__wbg_set_binding_f74df3510792aba1:function(e,t){e.binding=t>>>0},__wbg_set_blend_7493c2066c3e9970:function(e,t){e.blend=t},__wbg_set_buffer_9c01e3b6d6765ea2:function(e,t){e.buffer=t},__wbg_set_buffer_c3410572051920ba:function(e,t){e.buffer=t},__wbg_set_buffer_ef7f75306cf663ed:function(e,t){e.buffer=t},__wbg_set_buffers_7d0d8f507699e956:function(e,t,a){e.buffers=ge(t,a)},__wbg_set_bytes_per_row_c54ca96953f35774:function(e,t){e.bytesPerRow=t>>>0},__wbg_set_bytes_per_row_d69b88eee3929c07:function(e,t){e.bytesPerRow=t>>>0},__wbg_set_clear_value_gpu_color_dict_6211425789c76e59:function(e,t){e.clearValue=t},__wbg_set_code_b4f37f81f45b5b25:function(e,t,a){e.code=W(t,a)},__wbg_set_color_83aa977526e88cbb:function(e,t){e.color=t},__wbg_set_color_attachments_581fdb3310e4abfa:function(e,t,a){e.colorAttachments=ge(t,a)},__wbg_set_compare_cd9b62cdb92eb580:function(e,t){e.compare=pn[t]},__wbg_set_compare_f36b34abfaa08ccb:function(e,t){e.compare=pn[t]},__wbg_set_count_069a4eac409bac55:function(e,t){e.count=t>>>0},__wbg_set_cull_mode_fc649853947a3d0c:function(e,t){e.cullMode=Do[t]},__wbg_set_depth_bias_clamp_1c0d695df7f092e5:function(e,t){e.depthBiasClamp=t},__wbg_set_depth_bias_d7cd16096242a657:function(e,t){e.depthBias=t},__wbg_set_depth_bias_slope_scale_c4e52ec743ef55ba:function(e,t){e.depthBiasSlopeScale=t},__wbg_set_depth_clear_value_beda3ec5b1a5c43a:function(e,t){e.depthClearValue=t},__wbg_set_depth_compare_0c8631eb2eae98e3:function(e,t){e.depthCompare=pn[t]},__wbg_set_depth_fail_op_668155ae33d3c06f:function(e,t){e.depthFailOp=_n[t]},__wbg_set_depth_load_op_511c513eab4e56a9:function(e,t){e.depthLoadOp=mn[t]},__wbg_set_depth_or_array_layers_89371305ed0bd962:function(e,t){e.depthOrArrayLayers=t>>>0},__wbg_set_depth_read_only_7f41a74741c144ec:function(e,t){e.depthReadOnly=t!==0},__wbg_set_depth_stencil_97506c7bea4f53da:function(e,t){e.depthStencil=t},__wbg_set_depth_stencil_attachment_73b79e8b4e948222:function(e,t){e.depthStencilAttachment=t},__wbg_set_depth_store_op_c89f33b39b43361c:function(e,t){e.depthStoreOp=yn[t]},__wbg_set_depth_write_enabled_ce89750042940350:function(e,t){e.depthWriteEnabled=t!==0},__wbg_set_device_e275d1d4f3c9eb74:function(e,t){e.device=t},__wbg_set_dimension_868eee80f4b90011:function(e,t){e.dimension=Xo[t]},__wbg_set_dimension_e325282e613ca0a4:function(e,t){e.dimension=wn[t]},__wbg_set_dst_factor_ec7407f19be1aff9:function(e,t){e.dstFactor=ea[t]},__wbg_set_end_of_pass_write_index_0d546e46b86ea069:function(e,t){e.endOfPassWriteIndex=t>>>0},__wbg_set_entries_86a29dd6291c95e7:function(e,t,a){e.entries=ge(t,a)},__wbg_set_entries_a12aca1e458b0456:function(e,t,a){e.entries=ge(t,a)},__wbg_set_entry_point_207540f042015ce5:function(e,t,a){e.entryPoint=W(t,a)},__wbg_set_entry_point_e87e79251dd3144f:function(e,t,a){e.entryPoint=W(t,a)},__wbg_set_external_texture_386483d8dd82ab56:function(e,t){e.externalTexture=t},__wbg_set_fail_op_92f716dbc88b6973:function(e,t){e.failOp=_n[t]},__wbg_set_flip_y_4e1632b36ad0413a:function(e,t){e.flipY=t!==0},__wbg_set_format_1fcaa7d60546b490:function(e,t){e.format=Oe[t]},__wbg_set_format_2c1414a817c213f8:function(e,t){e.format=Oe[t]},__wbg_set_format_533f9ffa7eef563d:function(e,t){e.format=Oe[t]},__wbg_set_format_5d2f25cc93654ecc:function(e,t){e.format=Jo[t]},__wbg_set_format_5ff53724ed6cedf2:function(e,t){e.format=Oe[t]},__wbg_set_format_815efd4dc4817bbb:function(e,t){e.format=Oe[t]},__wbg_set_format_e52bdcca880d2c8e:function(e,t){e.format=Oe[t]},__wbg_set_fragment_8b780f00a0b0e6f3:function(e,t){e.fragment=t},__wbg_set_front_face_28ffdf524eedce5b:function(e,t){e.frontFace=$o[t]},__wbg_set_g_5983abfc46e0cf4e:function(e,t){e.g=t},__wbg_set_has_dynamic_offset_62bc230bdb7c54d0:function(e,t){e.hasDynamicOffset=t!==0},__wbg_set_height_14335c4047cf9c1b:function(e,t){e.height=t>>>0},__wbg_set_height_7d9d8f892e6964c6:function(e,t){e.height=t>>>0},__wbg_set_height_bbeef8f354041577:function(e,t){e.height=t>>>0},__wbg_set_label_08d9be3e4719c226:function(e,t,a){e.label=W(t,a)},__wbg_set_label_17eb9fe3a02f62b0:function(e,t,a){e.label=W(t,a)},__wbg_set_label_48e6b787d256f621:function(e,t,a){e.label=W(t,a)},__wbg_set_label_547d0d4aec39fbe9:function(e,t,a){e.label=W(t,a)},__wbg_set_label_5ee7427342869829:function(e,t,a){e.label=W(t,a)},__wbg_set_label_60ad96c811e0d109:function(e,t,a){e.label=W(t,a)},__wbg_set_label_72bb4f41ef0cb893:function(e,t,a){e.label=W(t,a)},__wbg_set_label_79387decda299036:function(e,t,a){e.label=W(t,a)},__wbg_set_label_9556af8b5cda3c9d:function(e,t,a){e.label=W(t,a)},__wbg_set_label_d010f237b26f2c55:function(e,t,a){e.label=W(t,a)},__wbg_set_label_e16e2dbe51349c7f:function(e,t,a){e.label=W(t,a)},__wbg_set_label_e3944e54881b8c50:function(e,t,a){e.label=W(t,a)},__wbg_set_label_e922700240417ab5:function(e,t,a){e.label=W(t,a)},__wbg_set_layout_50ab727f44b38f26:function(e,t){e.layout=t},__wbg_set_layout_913d53c17194c989:function(e,t){e.layout=t},__wbg_set_layout_gpu_auto_layout_mode_aeba193938b47882:function(e,t){e.layout=No[t]},__wbg_set_load_op_99661da6c4eab9b0:function(e,t){e.loadOp=mn[t]},__wbg_set_lod_max_clamp_dd2d9f9f052f4f44:function(e,t){e.lodMaxClamp=t},__wbg_set_lod_min_clamp_6d20c97916baeb93:function(e,t){e.lodMinClamp=t},__wbg_set_mag_filter_b5adebc99cb938e1:function(e,t){e.magFilter=ta[t]},__wbg_set_mapped_at_creation_81b586dc90a50347:function(e,t){e.mappedAtCreation=t!==0},__wbg_set_mask_70a8a59ce09e5997:function(e,t){e.mask=t>>>0},__wbg_set_max_anisotropy_2beada0e2db62c45:function(e,t){e.maxAnisotropy=t},__wbg_set_min_binding_size_f64_5005a6904cdf43da:function(e,t){e.minBindingSize=t},__wbg_set_min_filter_c72f17375e135f0a:function(e,t){e.minFilter=ta[t]},__wbg_set_mip_level_13253f3afc7aa58a:function(e,t){e.mipLevel=t>>>0},__wbg_set_mip_level_count_534caaa7e68e68b8:function(e,t){e.mipLevelCount=t>>>0},__wbg_set_mip_level_count_776c8c218b65bc08:function(e,t){e.mipLevelCount=t>>>0},__wbg_set_mip_level_f7ac79e8c54f59ad:function(e,t){e.mipLevel=t>>>0},__wbg_set_mipmap_filter_5bf66195a3639700:function(e,t){e.mipmapFilter=Go[t]},__wbg_set_mode_9990b3393ba469ae:function(e,t){e.mode=jo[t]},__wbg_set_module_d0e2098713606cae:function(e,t){e.module=t},__wbg_set_module_f02e076ca7e7daf8:function(e,t){e.module=t},__wbg_set_multisample_37ddafe88b5cd466:function(e,t){e.multisample=t},__wbg_set_multisampled_7913fd7183272840:function(e,t){e.multisampled=t!==0},__wbg_set_offset_f64_28c24dc15000932e:function(e,t){e.offset=t},__wbg_set_offset_f64_89f0ce01a689839e:function(e,t){e.offset=t},__wbg_set_offset_f64_b562d1367e34ef93:function(e,t){e.offset=t},__wbg_set_offset_f64_fa66068813376ca3:function(e,t){e.offset=t},__wbg_set_onuncapturederror_c8a77eb8695205a0:function(e,t){e.onuncapturederror=t},__wbg_set_operation_62ce44e1728c4047:function(e,t){e.operation=Vo[t]},__wbg_set_origin_gpu_origin_2d_dict_1240202973e56f92:function(e,t){e.origin=t},__wbg_set_origin_gpu_origin_3d_dict_37222d7b3d238123:function(e,t){e.origin=t},__wbg_set_origin_gpu_origin_3d_dict_631c04520718091f:function(e,t){e.origin=t},__wbg_set_pass_op_cf02fa088d6352a7:function(e,t){e.passOp=_n[t]},__wbg_set_power_preference_8fdca0b7af640d49:function(e,t){e.powerPreference=Wo[t]},__wbg_set_premultiplied_alpha_3f27816ad319d5a9:function(e,t){e.premultipliedAlpha=t!==0},__wbg_set_primitive_43c23761a55b4088:function(e,t){e.primitive=t},__wbg_set_query_set_41de86d2401aee04:function(e,t){e.querySet=t},__wbg_set_r_c6f4c68f4804d655:function(e,t){e.r=t},__wbg_set_required_features_1baf274a8669db60:function(e,t,a){e.requiredFeatures=ge(t,a)},__wbg_set_required_limits_871ed33c68613dcb:function(e,t){e.requiredLimits=t},__wbg_set_resolve_target_gpu_texture_view_b19a4f2debf79b96:function(e,t){e.resolveTarget=t},__wbg_set_resource_5ae7b5e67924f234:function(e,t){e.resource=t},__wbg_set_resource_gpu_buffer_binding_e5dbca063e7cb67b:function(e,t){e.resource=t},__wbg_set_resource_gpu_texture_view_eb46c355d51ad7e5:function(e,t){e.resource=t},__wbg_set_rows_per_image_5011f97318ee71af:function(e,t){e.rowsPerImage=t>>>0},__wbg_set_rows_per_image_59a813ac5006e10e:function(e,t){e.rowsPerImage=t>>>0},__wbg_set_sample_count_eb86a8b18545b54f:function(e,t){e.sampleCount=t>>>0},__wbg_set_sample_type_c32e1dfff94e63eb:function(e,t){e.sampleType=qo[t]},__wbg_set_sampler_c0e1258543a33bce:function(e,t){e.sampler=t},__wbg_set_shader_location_7e1832a74f912217:function(e,t){e.shaderLocation=t>>>0},__wbg_set_size_f64_6bcd40704bf4cfdc:function(e,t){e.size=t},__wbg_set_size_f64_8b8f6bba5d678162:function(e,t){e.size=t},__wbg_set_size_gpu_extent_3d_dict_7e42e1c98fa36434:function(e,t){e.size=t},__wbg_set_source_0c40b87cfdd5d704:function(e,t){e.source=t},__wbg_set_source_html_canvas_element_f657e39507ba2fe5:function(e,t){e.source=t},__wbg_set_source_html_image_element_fcc7cba0635adac1:function(e,t){e.source=t},__wbg_set_source_html_video_element_e63a39653665f651:function(e,t){e.source=t},__wbg_set_source_image_data_68478f1afce208b8:function(e,t){e.source=t},__wbg_set_source_offscreen_canvas_266a3de949693e62:function(e,t){e.source=t},__wbg_set_source_video_frame_3083c0ce54b9cb73:function(e,t){e.source=t},__wbg_set_src_factor_9bfe84af9b7b5cac:function(e,t){e.srcFactor=ea[t]},__wbg_set_stencil_back_85b22f1db5b1940a:function(e,t){e.stencilBack=t},__wbg_set_stencil_clear_value_42be608809151e2a:function(e,t){e.stencilClearValue=t>>>0},__wbg_set_stencil_front_525526164a798a44:function(e,t){e.stencilFront=t},__wbg_set_stencil_load_op_31838c036993098a:function(e,t){e.stencilLoadOp=mn[t]},__wbg_set_stencil_read_mask_5cc26495e8b3ae82:function(e,t){e.stencilReadMask=t>>>0},__wbg_set_stencil_read_only_bf1d0c1897e25c62:function(e,t){e.stencilReadOnly=t!==0},__wbg_set_stencil_store_op_e6be1cbc3a8fc210:function(e,t){e.stencilStoreOp=yn[t]},__wbg_set_stencil_write_mask_d9cb40ec4b4bee5b:function(e,t){e.stencilWriteMask=t>>>0},__wbg_set_step_mode_a97bb24714da41a9:function(e,t){e.stepMode=Yo[t]},__wbg_set_storage_texture_939a097db4b18bd4:function(e,t){e.storageTexture=t},__wbg_set_store_op_b5fdf672436f13f3:function(e,t){e.storeOp=yn[t]},__wbg_set_strip_index_format_9f787be6c5fc9e87:function(e,t){e.stripIndexFormat=na[t]},__wbg_set_targets_c38bd200c836d66f:function(e,t,a){e.targets=ge(t,a)},__wbg_set_texture_016561d5911339e5:function(e,t){e.texture=t},__wbg_set_texture_1f64653a5d2d7b4d:function(e,t){e.texture=t},__wbg_set_texture_9dcedde1bb31eda6:function(e,t){e.texture=t},__wbg_set_timestamp_writes_98bed1a8bbc6682d:function(e,t){e.timestampWrites=t},__wbg_set_tone_mapping_b3464f1baa4cff92:function(e,t){e.toneMapping=t},__wbg_set_topology_da25f2cc5af203d2:function(e,t){e.topology=Uo[t]},__wbg_set_type_ccf8472d40abcddf:function(e,t){e.type=zo[t]},__wbg_set_type_d09829f59932a0fc:function(e,t){e.type=Bo[t]},__wbg_set_unclipped_depth_04524a2b44e1e3c1:function(e,t){e.unclippedDepth=t!==0},__wbg_set_usage_a137f82ca163b0a9:function(e,t){e.usage=t>>>0},__wbg_set_usage_b2a2935f37bf3d08:function(e,t){e.usage=t>>>0},__wbg_set_usage_ba5b0f8b333ab325:function(e,t){e.usage=t>>>0},__wbg_set_usage_ddd42599bbba7779:function(e,t){e.usage=t>>>0},__wbg_set_vertex_0be5d146f9ff6f36:function(e,t){e.vertex=t},__wbg_set_view_dimension_0df554032f1f3a85:function(e,t){e.viewDimension=wn[t]},__wbg_set_view_dimension_4818d4c18ce5815e:function(e,t){e.viewDimension=wn[t]},__wbg_set_view_formats_4347dc8363331086:function(e,t,a){e.viewFormats=ge(t,a)},__wbg_set_view_formats_5797d2fff3c11808:function(e,t,a){e.viewFormats=ge(t,a)},__wbg_set_view_gpu_texture_view_9b2d86b6b99d9fd9:function(e,t){e.view=t},__wbg_set_view_gpu_texture_view_c0f35f8857c25206:function(e,t){e.view=t},__wbg_set_visibility_9570b037224c4cc2:function(e,t){e.visibility=t>>>0},__wbg_set_width_49ac9b7d914afc85:function(e,t){e.width=t>>>0},__wbg_set_width_8e30d010cd66830d:function(e,t){e.width=t>>>0},__wbg_set_width_9f685402c2cbee70:function(e,t){e.width=t>>>0},__wbg_set_write_mask_d45279e56abbfcb5:function(e,t){e.writeMask=t>>>0},__wbg_set_x_232d24fdc32d8351:function(e,t){e.x=t>>>0},__wbg_set_x_876d592971db129a:function(e,t){e.x=t>>>0},__wbg_set_y_18fe375093e59dfb:function(e,t){e.y=t>>>0},__wbg_set_y_2b1f5ac0dd5586a5:function(e,t){e.y=t>>>0},__wbg_set_z_ef005d82bc9d24e3:function(e,t){e.z=t>>>0},__wbg_stack_3b0d974bbf31e44f:function(e,t){let a=t.stack,o=U(a,g.__wbindgen_malloc,g.__wbindgen_realloc),r=F;re().setInt32(e+4,r,!0),re().setInt32(e+0,o,!0)},__wbg_static_accessor_GLOBAL_4ef717fb391d88b7:function(){let e=typeof global>"u"?null:global;return ce(e)?0:pe(e)},__wbg_static_accessor_GLOBAL_THIS_8d1badc68b5a74f4:function(){let e=typeof globalThis>"u"?null:globalThis;return ce(e)?0:pe(e)},__wbg_static_accessor_SELF_146583524fe1469b:function(){let e=typeof self>"u"?null:self;return ce(e)?0:pe(e)},__wbg_static_accessor_WINDOW_f2829a2234d7819e:function(){let e=typeof window>"u"?null:window;return ce(e)?0:pe(e)},__wbg_submit_ce44115121cd166c:function(e,t,a){e.submit(ge(t,a))},__wbg_then_16d107c451e9905d:function(e,t,a){return e.then(t,a)},__wbg_then_6ec10ae38b3e92f7:function(e,t){return e.then(t)},__wbg_type_a8c66c2422db1cc2:function(e){let t=e.type;return(Ko.indexOf(t)+1||4)-1},__wbg_unconfigure_0a07a0a40de8988d:function(e){e.unconfigure()},__wbg_unmap_adaf93276fdf9aaf:function(e){e.unmap()},__wbg_warn_b1370d804fa3e259:function(e){console.warn(e)},__wbg_width_6d9315ecc7140ff6:function(e){return e.width},__wbg_width_f9b3cbe357a34b85:function(e){return e.width},__wbg_writeBuffer_8b5bd251a89198bc:function(){return z(function(e,t,a,o,r,c,d){e.writeBuffer(t,a,Ne(o,r),c,d)},arguments)},__wbg_writeTexture_53ba204c494b042c:function(){return z(function(e,t,a,o,r,c){e.writeTexture(t,Ne(a,o),r,c)},arguments)},__wbindgen_cast_0000000000000001:function(e,t){return $e(e,t,Mo)},__wbindgen_cast_0000000000000002:function(e,t){return $e(e,t,Po)},__wbindgen_cast_0000000000000003:function(e,t){return $e(e,t,Ro)},__wbindgen_cast_0000000000000004:function(e,t){return $e(e,t,Fo)},__wbindgen_cast_0000000000000005:function(e,t){return $e(e,t,Oo)},__wbindgen_cast_0000000000000006:function(e,t){return $e(e,t,Io)},__wbindgen_cast_0000000000000007:function(e){return e},__wbindgen_cast_0000000000000008:function(e,t){return Ne(e,t)},__wbindgen_cast_0000000000000009:function(e,t){return W(e,t)},__wbindgen_init_externref_table:function(){let e=g.__wbindgen_externrefs,t=e.grow(4);e.set(0,void 0),e.set(t+0,void 0),e.set(t+1,null),e.set(t+2,!0),e.set(t+3,!1)}}}}function Po(n,e,t){g.wasm_bindgen_7f512f2957fe3977___convert__closures_____invoke___wasm_bindgen_7f512f2957fe3977___JsValue______true_(n,e,t)}function Mo(n,e,t){let a=g.wasm_bindgen_7f512f2957fe3977___convert__closures_____invoke___wasm_bindgen_7f512f2957fe3977___JsValue__core_7d5f0a2ba6a62c33___result__Result_____wasm_bindgen_7f512f2957fe3977___JsError___true_(n,e,t);if(a[1])throw H(a[0])}function Ro(n,e,t){let a=g.wasm_bindgen_7f512f2957fe3977___convert__closures_____invoke___wasm_bindgen_7f512f2957fe3977___sys__JsOption_wgpu_1443bf3343cb6745___backend__webgpu__webgpu_sys__gen_GpuError__GpuError___core_7d5f0a2ba6a62c33___result__Result_____wasm_bindgen_7f512f2957fe3977___JsError___true_(n,e,t);if(a[1])throw H(a[0])}function Fo(n,e,t){let a=g.wasm_bindgen_7f512f2957fe3977___convert__closures_____invoke___wasm_bindgen_7f512f2957fe3977___sys__JsOption_wgpu_1443bf3343cb6745___backend__webgpu__webgpu_sys__gen_GpuError__GpuError___core_7d5f0a2ba6a62c33___result__Result_____wasm_bindgen_7f512f2957fe3977___JsError___true__3(n,e,t);if(a[1])throw H(a[0])}function Oo(n,e,t){let a=g.wasm_bindgen_7f512f2957fe3977___convert__closures_____invoke___wasm_bindgen_7f512f2957fe3977___sys__JsOption_wgpu_1443bf3343cb6745___backend__webgpu__webgpu_sys__gen_GpuError__GpuError___core_7d5f0a2ba6a62c33___result__Result_____wasm_bindgen_7f512f2957fe3977___JsError___true__4(n,e,t);if(a[1])throw H(a[0])}function Io(n,e,t){let a=g.wasm_bindgen_7f512f2957fe3977___convert__closures_____invoke___wasm_bindgen_7f512f2957fe3977___sys__JsOption_wgpu_1443bf3343cb6745___backend__webgpu__webgpu_sys__gen_GpuError__GpuError___core_7d5f0a2ba6a62c33___result__Result_____wasm_bindgen_7f512f2957fe3977___JsError___true__5(n,e,t);if(a[1])throw H(a[0])}function Qn(n,e,t,a){g.wasm_bindgen_7f512f2957fe3977___convert__closures_____invoke___js_sys_4472a148735d8947___Function_fn_wasm_bindgen_7f512f2957fe3977___JsValue_____wasm_bindgen_7f512f2957fe3977___sys__Undefined___js_sys_4472a148735d8947___Function_fn_wasm_bindgen_7f512f2957fe3977___JsValue_____wasm_bindgen_7f512f2957fe3977___sys__Undefined_______true_(n,e,t,a)}var gn=["clamp-to-edge","repeat","mirror-repeat"],No=["auto"],ea=["zero","one","src","one-minus-src","src-alpha","one-minus-src-alpha","dst","one-minus-dst","dst-alpha","one-minus-dst-alpha","src-alpha-saturated","constant","one-minus-constant","src1","one-minus-src1","src1-alpha","one-minus-src1-alpha"],Vo=["add","subtract","reverse-subtract","min","max"],Bo=["uniform","storage","read-only-storage"],Lo=["opaque","premultiplied"],jo=["standard","extended"],pn=["never","less","equal","less-equal","greater","not-equal","greater-equal","always"],Ko=["error","warning","info"],Do=["none","front","back"],ta=["nearest","linear"],$o=["ccw","cw"],na=["uint16","uint32"],mn=["load","clear"],Go=["nearest","linear"],Wo=["low-power","high-performance"],Uo=["point-list","line-list","line-strip","triangle-list","triangle-strip"],zo=["filtering","non-filtering","comparison"],_n=["keep","zero","replace","invert","increment-clamp","decrement-clamp","increment-wrap","decrement-wrap"],Ho=["write-only","read-only","read-write"],yn=["store","discard"],kn=["all","stencil-only","depth-only"],Xo=["1d","2d","3d"],Oe=["r8unorm","r8snorm","r8uint","r8sint","r16unorm","r16snorm","r16uint","r16sint","r16float","rg8unorm","rg8snorm","rg8uint","rg8sint","r32uint","r32sint","r32float","rg16unorm","rg16snorm","rg16uint","rg16sint","rg16float","rgba8unorm","rgba8unorm-srgb","rgba8snorm","rgba8uint","rgba8sint","bgra8unorm","bgra8unorm-srgb","rgb9e5ufloat","rgb10a2uint","rgb10a2unorm","rg11b10ufloat","rg32uint","rg32sint","rg32float","rgba16unorm","rgba16snorm","rgba16uint","rgba16sint","rgba16float","rgba32uint","rgba32sint","rgba32float","stencil8","depth16unorm","depth24plus","depth24plus-stencil8","depth32float","depth32float-stencil8","bc1-rgba-unorm","bc1-rgba-unorm-srgb","bc2-rgba-unorm","bc2-rgba-unorm-srgb","bc3-rgba-unorm","bc3-rgba-unorm-srgb","bc4-r-unorm","bc4-r-snorm","bc5-rg-unorm","bc5-rg-snorm","bc6h-rgb-ufloat","bc6h-rgb-float","bc7-rgba-unorm","bc7-rgba-unorm-srgb","etc2-rgb8unorm","etc2-rgb8unorm-srgb","etc2-rgb8a1unorm","etc2-rgb8a1unorm-srgb","etc2-rgba8unorm","etc2-rgba8unorm-srgb","eac-r11unorm","eac-r11snorm","eac-rg11unorm","eac-rg11snorm","astc-4x4-unorm","astc-4x4-unorm-srgb","astc-5x4-unorm","astc-5x4-unorm-srgb","astc-5x5-unorm","astc-5x5-unorm-srgb","astc-6x5-unorm","astc-6x5-unorm-srgb","astc-6x6-unorm","astc-6x6-unorm-srgb","astc-8x5-unorm","astc-8x5-unorm-srgb","astc-8x6-unorm","astc-8x6-unorm-srgb","astc-8x8-unorm","astc-8x8-unorm-srgb","astc-10x5-unorm","astc-10x5-unorm-srgb","astc-10x6-unorm","astc-10x6-unorm-srgb","astc-10x8-unorm","astc-10x8-unorm-srgb","astc-10x10-unorm","astc-10x10-unorm-srgb","astc-12x10-unorm","astc-12x10-unorm-srgb","astc-12x12-unorm","astc-12x12-unorm-srgb"],qo=["float","unfilterable-float","depth","sint","uint"],wn=["1d","2d","2d-array","cube","cube-array","3d"],Jo=["uint8","uint8x2","uint8x4","sint8","sint8x2","sint8x4","unorm8","unorm8x2","unorm8x4","snorm8","snorm8x2","snorm8x4","uint16","uint16x2","uint16x4","sint16","sint16x2","sint16x4","unorm16","unorm16x2","unorm16x4","snorm16","snorm16x2","snorm16x4","float16","float16x2","float16x4","float32","float32x2","float32x3","float32x4","uint32","uint32x2","uint32x3","uint32x4","sint32","sint32x2","sint32x3","sint32x4","unorm10-10-10-2","unorm8x4-bgra"],Yo=["vertex","instance"],aa=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(n=>g.__wbg_engine_free(n,1)),oa=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(n=>g.__wbg_sceneencoder_free(n,1));function pe(n){let e=g.__externref_table_alloc();return g.__wbindgen_externrefs.set(e,n),e}function Zo(n,e){if(!(n instanceof e))throw new Error(`expected instance of ${e.name}`)}var ra=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(n=>g.__wbindgen_destroy_closure(n.a,n.b));function Sn(n){let e=typeof n;if(e=="number"||e=="boolean"||n==null)return`${n}`;if(e=="string")return`"${n}"`;if(e=="symbol"){let o=n.description;return o==null?"Symbol":`Symbol(${o})`}if(e=="function"){let o=n.name;return typeof o=="string"&&o.length>0?`Function(${o})`:"Function"}if(Array.isArray(n)){let o=n.length,r="[";o>0&&(r+=Sn(n[0]));for(let c=1;c<o;c++)r+=", "+Sn(n[c]);return r+="]",r}let t=/\[object ([^\]]+)\]/.exec(toString.call(n)),a;if(t&&t.length>1)a=t[1];else return toString.call(n);if(a=="Object")try{return"Object("+JSON.stringify(n)+")"}catch{return"Object"}return n instanceof Error?`${n.name}: ${n.message}
2
+ ${n.stack}`:a}function Qo(n,e){return n=n>>>0,sa().subarray(n/4,n/4+e)}function er(n,e){return n=n>>>0,tr().subarray(n/8,n/8+e)}function ge(n,e){n=n>>>0;let t=re(),a=[];for(let o=n;o<n+4*e;o+=4)a.push(g.__wbindgen_externrefs.get(t.getUint32(o,!0)));return a}function ca(n,e){return n=n>>>0,fa().subarray(n/4,n/4+e)}function Ne(n,e){return n=n>>>0,We().subarray(n/1,n/1+e)}var Ie=null;function re(){return(Ie===null||Ie.buffer.detached===!0||Ie.buffer.detached===void 0&&Ie.buffer!==g.memory.buffer)&&(Ie=new DataView(g.memory.buffer)),Ie}var at=null;function sa(){return(at===null||at.byteLength===0)&&(at=new Float32Array(g.memory.buffer)),at}var ot=null;function tr(){return(ot===null||ot.byteLength===0)&&(ot=new Float64Array(g.memory.buffer)),ot}function W(n,e){return or(n>>>0,e)}var rt=null;function fa(){return(rt===null||rt.byteLength===0)&&(rt=new Uint32Array(g.memory.buffer)),rt}var ct=null;function We(){return(ct===null||ct.byteLength===0)&&(ct=new Uint8Array(g.memory.buffer)),ct}function z(n,e){try{return n.apply(this,e)}catch(t){let a=pe(t);g.__wbindgen_exn_store(a)}}function ce(n){return n==null}function $e(n,e,t){let a={a:n,b:e,cnt:1},o=(...r)=>{a.cnt++;let c=a.a;a.a=0;try{return t(c,a.b,...r)}finally{a.a=c,o._wbg_cb_unref()}};return o._wbg_cb_unref=()=>{--a.cnt===0&&(g.__wbindgen_destroy_closure(a.a,a.b),a.a=0,ra.unregister(a))},ra.register(o,a,a),o}function nr(n,e){let t=e(n.length*4,4)>>>0;return fa().set(n,t/4),F=n.length,t}function Ve(n,e){let t=e(n.length*1,1)>>>0;return We().set(n,t/1),F=n.length,t}function Ge(n,e){let t=e(n.length*4,4)>>>0;return sa().set(n,t/4),F=n.length,t}function U(n,e,t){if(t===void 0){let d=it.encode(n),s=e(d.length,1)>>>0;return We().subarray(s,s+d.length).set(d),F=d.length,s}let a=n.length,o=e(a,1)>>>0,r=We(),c=0;for(;c<a;c++){let d=n.charCodeAt(c);if(d>127)break;r[o+c]=d}if(c!==a){c!==0&&(n=n.slice(c)),o=t(o,a,a=c+n.length*3,1)>>>0;let d=We().subarray(o+c,o+a),s=it.encodeInto(n,d);c+=s.written,o=t(o,a,c,1)>>>0}return F=c,o}function H(n){let e=g.__wbindgen_externrefs.get(n);return g.__externref_table_dealloc(n),e}var Mt=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});Mt.decode();var ar=2146435072,xn=0;function or(n,e){return xn+=e,xn>=ar&&(Mt=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}),Mt.decode(),xn=e),Mt.decode(We().subarray(n,n+e))}var it=new TextEncoder;"encodeInto"in it||(it.encodeInto=function(n,e){let t=it.encode(n);return e.set(t),{read:n.length,written:t.length}});var F=0,rr,cr,g;function ir(n,e){return cr=n,g=n.exports,rr=e,Ie=null,at=null,ot=null,rt=null,ct=null,g.__wbindgen_start(),g}async function sr(n,e){if(typeof Response=="function"&&n instanceof Response){if(typeof WebAssembly.instantiateStreaming=="function")try{return await WebAssembly.instantiateStreaming(n,e)}catch(o){if(n.ok&&t(n.type)&&n.headers.get("Content-Type")!=="application/wasm")console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",o);else throw o}let a=await n.arrayBuffer();return await WebAssembly.instantiate(a,e)}else{let a=await WebAssembly.instantiate(n,e);return a instanceof WebAssembly.Instance?{instance:a,module:n}:a}function t(a){switch(a){case"basic":case"cors":case"default":return!0}return!1}}async function da(n){if(g!==void 0)return g;n!==void 0&&(Object.getPrototypeOf(n)===Object.prototype?{module_or_path:n}=n:console.warn("using deprecated parameters for the initialization function; pass a single object instead")),n===void 0&&(n=new URL("engine_bg.wasm",import.meta.url));let e=Ao();(typeof n=="string"||typeof Request=="function"&&n instanceof Request||typeof URL=="function"&&n instanceof URL)&&(n=fetch(n));let{instance:t,module:a}=await sr(await n,e);return ir(t,a)}var Vn={};ko(Vn,{Audio:()=>Ot,Camera:()=>dt,FILM_CAMERAS:()=>Pe,FILM_KNOBS:()=>Nn,FILM_STOCKS:()=>fe,Fragment:()=>He,Group:()=>Be,Image:()=>Rt,Model:()=>Nt,Path:()=>bt,Rect:()=>st,Scene:()=>xe,Shader:()=>It,Surface:()=>Vt,Text:()=>ft,Video:()=>Ft,blur:()=>Ht,defineEffect:()=>Ae,defineKnobs:()=>Ut,defineMotion:()=>Bt,describeEffect:()=>Mn,describeKnobs:()=>ka,describeMotion:()=>pa,evaluateFrame:()=>kt,evaluateMotionFrame:()=>Zt,film:()=>Ba,grain:()=>Ta,resolveMotionBlur:()=>ut,sampleMotion:()=>ve,shutterFrames:()=>Lt});function Z(n,e,t){return Object.freeze({type:n,props:Object.freeze({...e}),...t===void 0?{}:{key:t}})}var xe=Object.assign(n=>Z("scene",n),{sceneRoot:!0});function Be(n){return Z("group",n)}function st(n){return Z("rect",n)}function ft(n){return Z("text",n)}function He(n){return Z("fragment",n)}function Rt(n){return Z("image",n)}function Ft(n){return Z("video",n)}function Ot(n){return Z("audio",n)}function dt(n){return Z("camera",n)}function It(n){return Z("shader",n)}function Nt(n){return Z("model",n)}function Vt(n){return Z("surface",n)}function bt(n){return Z("path",n)}function ne(n){if(n==="transparent")return[0,0,0,0];if(typeof n!="string"||!/^#(?:[\da-f]{3,4}|[\da-f]{6}|[\da-f]{8})$/i.test(n))return;let e=n.slice(1);return e.length<=4&&(e=[...e].map(t=>t+t).join("")),e.length===6&&(e+="ff"),[0,2,4,6].map(t=>parseInt(e.slice(t,t+2),16)/255)}function En(n,e,t){let a=ne(n),o=ne(e),r=h=>h<=.04045?h/12.92:((h+.055)/1.055)**2.4,c=h=>h<=.0031308?h*12.92:1.055*h**(1/2.4)-.055,d=a[3]+(o[3]-a[3])*t;return"#"+[...[0,1,2].map(h=>c(d>0?(r(a[h])*a[3]*(1-t)+r(o[h])*o[3]*t)/d:0)),d].map(h=>Math.round(Math.min(1,Math.max(0,h))*255).toString(16).padStart(2,"0")).join("")}var lt=new Map;function la(n){if(typeof n!="string")return null;if(lt.has(n))return lt.get(n);let e=/^cubic-bezier\(([^)]+)\)$/.exec(n);if(!e)return null;let t=e[1].split(","),a=t.map(Number);return t.some(o=>!o.trim())||a.length!==4||!a.every(Number.isFinite)||a[0]<0||a[0]>1||a[2]<0||a[2]>1?null:(lt.size>=256&&lt.clear(),lt.set(n,a),a)}function Se(n){return["linear","easeIn","easeOut","easeInOut","hold"].includes(n)||la(n)!==null}function ba(n,e,t){return 3*(1-n)**2*n*e+3*(1-n)*n*n*t+n**3}function fr(n,e){let t=la(e);if(t){if(n<=0||n>=1)return n;let a=0,o=1;for(let r=0;r<32;r++){let c=(a+o)/2;ba(c,t[0],t[2])<n?a=c:o=c}return ba((a+o)/2,t[1],t[3])}switch(e){case"linear":return n;case"easeIn":return n*n;case"easeOut":return 1-(1-n)**2;case"easeInOut":return n<.5?2*n*n:1-(-2*n+2)**2/2;case"hold":return 0}}function Ee(n,e,t){if(!Number.isFinite(e))throw new Error("Motion time must be finite");let{default:a,keyframes:o=[]}=n;if(o.length===0)return a;let r=t!=="discrete"&&n.type!=="discrete"&&typeof a=="string"&&!!ne(a),c=t==="discrete"||n.type==="discrete"||typeof a=="boolean"||typeof a=="string"&&!r||Array.isArray(a)&&(!a.length||typeof a[0]=="string");if(e<o[0].at)return c?a:o[0].value;if(e===o[0].at)return o[0].value;if(e>=o[o.length-1].at)return o[o.length-1].value;let d=0,s=o.length-1;for(;s-d>1;){let i=d+s>>>1;o[i].at<=e?d=i:s=i}let h=o[d],u=o[s];if(c)return h.value;let b=fr((e-h.at)/(u.at-h.at),u.easing??"linear");if(typeof h.value=="number"&&typeof u.value=="number")return h.value+(u.value-h.value)*b;if(r)return En(h.value,u.value,b);let S=h.value,k=u.value;return Object.freeze(S.map((i,_)=>i+(k[_]-i)*b))}var ga=Symbol("osmo.motion.track");function ua(n,e){if(typeof n=="boolean"||typeof n=="string"||typeof n=="number"&&Number.isFinite(n))return n;if(Array.isArray(n)&&(n.every(t=>typeof t=="string")||n.length>0&&n.every(t=>typeof t=="number"&&Number.isFinite(t))))return Object.freeze([...n]);throw new Error(`${e}: expected a finite number, numeric tuple, string, boolean or string array`)}function ha(n){return Array.isArray(n)?n.length&&typeof n[0]=="number"?`vector:${n.length}`:"choices":typeof n}function Bt(n){let e=Object.create(null);for(let[t,a]of Object.entries(n)){let o=ua(a.default,`${t}.default`);if(a.type!==void 0&&a.type!=="color"&&a.type!=="discrete")throw new Error(`${t}: invalid motion type`);if(a.type==="color"&&!ne(o))throw new Error(`${t}.default: expected a color`);let r=-1/0,c=(a.keyframes??[]).map((d,s)=>{let h=`${t}.keyframes[${s}]`;if(!Number.isFinite(d.at)||d.at<0||d.at<=r)throw new Error(`${h}: times must be finite, nonnegative and strictly increasing`);r=d.at;let u=ua(d.value,h);if(ha(u)!==ha(o))throw new Error(`${h}: value must match the default's type/tuple shape`);if((a.type==="color"||a.type!=="discrete"&&typeof o=="string"&&ne(o))&&!ne(u))throw new Error(`${h}: expected a color`);if(d.easing!==void 0&&!Se(d.easing))throw new Error(`${h}: unsupported easing ${d.easing}`);return Object.freeze({at:d.at,value:u,...d.easing===void 0?{}:{easing:d.easing}})});e[t]=Object.freeze({[ga]:!0,definition:Object.freeze({default:o,...a.type?{type:a.type}:{},keyframes:Object.freeze(c)})})}return Object.freeze(e)}function be(n){return typeof n=="object"&&n!==null&&ga in n}function ve(n,e,t){return Ee(n.definition,e,t)}function pa(n){return Object.freeze(Object.fromEntries(Object.entries(n).map(([e,t])=>[e,t.definition])))}function ut(n){if(n===void 0||n===!1)return;if(n!==!0&&(!n||typeof n!="object"||Array.isArray(n)))throw new Error("Scene.motionBlur must be a boolean or shutter settings");let e=n===!0?{}:n;for(let r of Object.keys(e))if(!["shutterAngle","shutterPhase","samples"].includes(r))throw new Error(`Unknown motionBlur setting: ${r}`);let t=e.shutterAngle??180,a=e.shutterPhase??-t/2,o=e.samples??16;if(typeof t!="number"||!Number.isFinite(t)||t<0||t>720)throw new Error("motionBlur.shutterAngle must be between 0 and 720 degrees");if(typeof a!="number"||!Number.isFinite(a)||a<-720||a>720)throw new Error("motionBlur.shutterPhase must be between -720 and 720 degrees");if(typeof o!="number"||!Number.isInteger(o)||o<2||o>64)throw new Error("motionBlur.samples must be an integer between 2 and 64");return t===0?void 0:{shutterAngle:t,shutterPhase:a,samples:o}}function Lt(n,e,t){return Array.from({length:t.samples},(a,o)=>Math.max(0,Math.min(e-1,n+t.shutterPhase/360+(o+.5)/t.samples*t.shutterAngle/360)))}var jt={radius:{type:"number",label:"Radius",default:8,min:0,max:64,step:.5}},Kt={amount:{type:"number",label:"Amount",default:.04,min:0,max:1,step:.01}},Dt={color:{label:"Color"},grain:{label:"Grain"},halation:{label:"Halation"}},J=(n,e,t,a,o=.01)=>({type:"number",label:n,default:e,min:t,max:a,step:o});function ht(n,e,t=!1){return{stock:{type:"select",label:"Film stock",default:"stock/Vision3/Default/500T.fbfilmneg",options:Object.fromEntries(n.map(o=>[o.id,`${o.collection} / ${o.label}`]))},cameraProfile:{type:"select",label:"Input profile",default:e[0],options:Object.fromEntries(e.map(o=>[o,o]))},strength:J("Strength",1,0,1),exposure:{...J("Exposure",0,-16,16,.05),...t?{group:"color"}:{}},warmth:{...J("Warmth",0,-100,100,1),...t?{group:"color"}:{}},tint:{...J("Tint",0,-100,100,1),...t?{group:"color"}:{}},contrast:{...J("Contrast",1,0,4),...t?{group:"color"}:{}},saturation:{...J("Saturation",1,0,4),...t?{group:"color"}:{}},lift:{...J("Lift",0,-1,1),...t?{group:"color"}:{}},gamma:{...J("Gamma",1,.1,4),...t?{group:"color"}:{}},print:{...J("Print gain",1,0,4),...t?{group:"color"}:{}},grain:{...J("Grain",1,0,3),...t?{group:"grain"}:{}},grainSaturation:{...J("Grain saturation",1,0,2),...t?{group:"grain"}:{}},grainSoftness:{...J("Grain softness",0,-1,1),...t?{group:"grain"}:{}},grainRoughness:{...J("Grain roughness",0,-1,1),...t?{group:"grain"}:{}},halation:{...J("Halation",1,0,1),...t?{group:"halation"}:{}},halationRadius:{...J("Halation radius",1,0,2),...t?{group:"halation"}:{}},looksGrain:{...J("Look grain adjustment",0,-1,1),...t?{group:"grain"}:{}},looksHalation:{...J("Look halation adjustment",0,-1,1),...t?{group:"halation"}:{}},gauge:{...t?{group:"grain"}:{},label:"Film gauge",type:"select",default:"35mm",options:{"35mm":"35 mm","16mm":"16 mm","8mm":"8 mm"}},seed:{...J("Grain seed",0,0,16777215,1),integer:!0,...t?{group:"grain"}:{}},textureFps:{...J("Grain frame rate",24,1,240,1),...t?{group:"grain"}:{}}}}var ma={image:["png","jpg","jpeg","webp","gif","svg"],video:["mp4","webm","mov","m4v"],audio:["wav","mp3","m4a","aac","ogg","flac"],font:["ttf","otf"],model:["glb"]};function $t(n,e){return Object.hasOwn(ma,n)&&typeof e=="string"&&e.length>0&&e.length<=4096&&e===e.trim()&&!/^[a-z][a-z0-9+.-]*:|^[/\\]|[\x00-\x1f?#\\]/i.test(e)&&ma[n].includes(e.split(".").at(-1).toLowerCase())}function K(n){throw new Error(`Knobs: ${n}`)}function Xe(n){return!!n&&typeof n=="object"&&!Array.isArray(n)}function _a(n,e,t){for(let a of Object.keys(n))e.includes(a)||K(`${t}: unsupported property ${a}`)}function vn(n){return typeof n=="number"&&Number.isFinite(n)}function Gt(n){if(n&&typeof n=="object"){for(let e of Object.values(n))Gt(e);Object.freeze(n)}return n}function _e(n,e,t){switch(n.type){case"number":vn(e)||K(`${t}: expected a finite number`),n.integer&&!Number.isInteger(e)&&K(`${t}: expected an integer`);break;case"boolean":typeof e!="boolean"&&K(`${t}: expected a boolean`);break;case"asset":$t(n.kind,e)||K(`${t}: expected a local ${n.kind} asset path`);break;case"text":typeof e!="string"&&K(`${t}: expected text`);break;case"color":ne(e)||K(`${t}: expected a hex color or transparent`);break;case"select":(typeof e!="string"||!Object.hasOwn(n.options,e))&&K(`${t}: unknown choice`);break;case"multiselect":(!Array.isArray(e)||e.some(a=>typeof a!="string"||!Object.hasOwn(n.options,a))||new Set(e).size!==e.length)&&K(`${t}: expected unique known choices`)}}function Wt(n,e={}){(!Xe(n)||Object.keys(n).length>32)&&K("expected at most 32 named knobs");let t=e;Xe(t)||K("groups must be named definitions");let a=o=>{if(o!==void 0){Xe(o)||K("visibleWhen must be a condition object");for(let[r,c]of Object.entries(o))Object.hasOwn(n,r)||K(`visibleWhen: unknown knob ${r}`),["number","boolean","text","select"].includes(n[r].type)||K(`visibleWhen: ${r} must be a scalar knob`),_e(n[r],c,`visibleWhen.${r}`)}};for(let[o,r]of Object.entries(t)){Xe(r)||K(`group ${o}: expected a definition`),_a(r,["label","parent","collapsed","visibleWhen"],o),r.label!==void 0&&typeof r.label!="string"&&K(`${o}.label: expected text`),r.collapsed!==void 0&&typeof r.collapsed!="boolean"&&K(`${o}.collapsed: expected boolean`);let c=new Set([o]),d=r.parent;for(;d!==void 0;)Object.hasOwn(t,d)||K(`${o}: unknown parent group ${d}`),c.has(d)&&K(`${o}: group cycle`),c.add(d),d=t[d].parent;a(r.visibleWhen)}for(let[o,r]of Object.entries(n)){(!/^[a-zA-Z][a-zA-Z0-9_]*$/.test(o)||!Xe(r))&&K(`invalid knob ${o}`);let c=r.type==="number"?["min","max","step","integer"]:r.type==="asset"?["kind"]:["select","multiselect"].includes(r.type)?["options"]:[];if(_a(r,["type","default","label","group","visibleWhen",...c],o),["number","color","text","boolean","select","multiselect","asset"].includes(r.type)||K(`${o}: unknown knob type`),r.label!==void 0&&typeof r.label!="string"&&K(`${o}.label: expected text`),r.group!==void 0&&!Object.hasOwn(t,r.group)&&K(`${o}: unknown group ${r.group}`),r.type==="number"){r.integer!==void 0&&typeof r.integer!="boolean"&&K(`${o}.integer: expected boolean`),(!vn(r.step)||r.step<=0)&&K(`${o}: step must be positive`);for(let d of[r.min,r.max])d!==void 0&&!vn(d)&&K(`${o}: invalid bound`);r.min!==void 0&&r.max!==void 0&&r.min>=r.max&&K(`${o}: min must be below max`)}(r.type==="select"||r.type==="multiselect")&&(!Xe(r.options)||!Object.keys(r.options).length||Object.values(r.options).some(d=>typeof d!="string"))&&K(`${o}: options must map values to labels`),_e(r,r.default,o),a(r.visibleWhen)}}var Tn=Symbol("osmo.knobs"),gt=Symbol("osmo.knob.reference");function Ut(n,e={},t){if(!e||typeof e!="object"||Array.isArray(e)||Object.keys(e).some(r=>r!=="groups"))throw new Error("Knobs: options may only contain groups");Wt(n,e.groups);let a=Gt(JSON.parse(JSON.stringify({knobs:n,groups:e.groups??{},sourceFile:t}))),o=Object.create(null);Object.defineProperty(o,Tn,{value:a});for(let r of Object.keys(n))o[r]=Object.freeze({[gt]:Object.freeze({set:o,name:r}),[Symbol.toPrimitive](){throw new Error(`Knob ${r} is a reference, not a value; bind it to a prop`)}});return Object.freeze(o)}function zt(n){return!!n&&typeof n=="object"&&Tn in n}function ie(n){return!!n&&typeof n=="object"&&gt in n}function Te(n,e){let{set:t,name:a}=n[gt];for(let o=e.length-1;o>=0;o--)if(e[o].set===t)return e[o].description.values[a];throw new Error(`Knob "${a}" has no owning Group or Scene in this scope`)}function Cn(n,e){let{set:t,name:a}=n[gt];for(let o=e.length-1;o>=0;o--)if(e[o].set===t)return e[o].description.assets?.[a]}function dr(n,e){let{set:t,name:a}=n[gt];for(let o=e.length-1;o>=0;o--)if(e[o].set===t)return e[o].description.origins?.[a]}var ya=new WeakMap;function br(n,e,t){if(n.type==="asset"&&be(e))throw new Error(`Knob ${t}: asset bindings must be static`);if(!be(e)){_e(n,e,t);return}let a=ya.get(e);if(!a?.has(n)){for(let o of[e.definition.default,...(e.definition.keyframes??[]).map(r=>r.value)])_e(n,o,t);a||(a=new WeakSet,ya.set(e,a)),a.add(n)}}function ka(n,e={},t=0){return pt(n,e,t,[])}function pt(n,e,t,a,o={}){if(!zt(n))throw new Error("Group.knobs must be a defineKnobs declaration");if(!Number.isFinite(t))throw new Error("Knob time must be finite");let r=e===void 0?{}:e;if(!r||typeof r!="object"||Array.isArray(r))throw new Error("Group.values must be named knob bindings");let{knobs:c,groups:d,sourceFile:s}=n[Tn];for(let l of Object.keys(r))if(!Object.hasOwn(c,l))throw new Error(`Group.values: unknown knob "${l}"`);let h=Object.create(null),u=Object.create(null),b=Object.create(null),S=Object.create(null);for(let[l,f]of Object.entries(c)){let p=r[l],y=p===void 0?f.default:p;S[l]=(ie(y)?dr(y,a):void 0)??{sourceFile:p===void 0?s??o.sourceFile:o.valueSources?.[l]??o.sourceFile,animated:be(y)};let w=ie(y)?Cn(y,a):void 0;if(f.type==="asset"){if(S[l].animated)throw new Error(`Knob ${l}: asset bindings must be static`);if(w&&w.kind!==f.kind)throw new Error(`Knob ${l}: cannot bind ${w.kind} to ${f.kind}`);b[l]=w??{kind:f.kind,name:l,sourceFile:S[l].sourceFile}}else w&&(b[l]=w);ie(y)&&(y=Te(y,a)),br(f,y,l);let x=be(y)?ve(y,o.bindingTimes?.[l]??t,f.type==="color"?"color":f.type==="number"?void 0:"discrete"):y;_e(f,x,l),h[l]=Array.isArray(x)?[...x]:x,be(y)&&(u[l]=y.definition)}let k=l=>!l||Object.entries(l).every(([f,p])=>h[f]===p),i=Object.create(null),_=l=>i[l]??=k(d[l].visibleWhen)&&(!d[l].parent||_(d[l].parent));for(let l of Object.keys(d))_(l);let m=Object.fromEntries(Object.entries(c).map(([l,f])=>[l,k(f.visibleWhen)&&(!f.group||i[f.group])]));return Gt({knobs:c,groups:d,values:h,tracks:u,visibleGroups:i,visibleKnobs:m,origins:S,...Object.keys(b).length?{assets:b}:{}})}var wa=Symbol("osmo.effect");function X(n){throw new Error(`Effect: ${n}`)}function Ce(n){return!!n&&typeof n=="object"&&!Array.isArray(n)}function An(n,e,t){for(let a of Object.keys(n))e.includes(a)||X(`${t}: unsupported property ${a}`)}function xa(n){return typeof n=="number"&&Number.isFinite(n)}function Pn(n){if(n&&typeof n=="object"){for(let e of Object.values(n))Pn(e);Object.freeze(n)}return n}function Sa(n){Ce(n)&&An(n,["top","right","bottom","left"],"padding");let e=typeof n=="number"?[n,n,n,n]:Ce(n)?[n.top,n.right,n.bottom,n.left]:[];return(e.length!==4||e.some(t=>!xa(t)||t<0||t>16384))&&X("padding must be a nonnegative number or { top, right, bottom, left }, at most 16384 per side"),Object.freeze(e)}function Ae(n,e){Ce(n)||X("expected a definition"),An(n,["src","code","knobs","groups","uniforms","padding","passes"],"definition"),n.passes!==void 0&&(!Array.isArray(n.passes)||!n.passes.length||n.passes.length>4||!n.passes.every(Ce))&&X("passes must be 1 to 4 sets of named uniforms"),!!n.src==!!n.code&&X("supply exactly one of src or code"),n.src&&(!/\.wgsl$/i.test(n.src)||/^[a-z]+:/i.test(n.src))&&X("src must be a local .wgsl path"),n.code!==void 0&&typeof n.code!="string"&&X("code must be WGSL text"),Wt(n.knobs,n.groups),n.uniforms!==void 0&&typeof n.uniforms!="function"&&X("uniforms must be a mapping function"),n.padding===void 0&&X("padding is required: declare 0 for bounds-preserving effects, or derive it from knobs"),typeof n.padding!="function"&&Sa(n.padding);for(let[o,r]of Object.entries(n.knobs))r.type==="multiselect"&&Object.keys(r.options).length>24&&!n.uniforms&&X(`${o}: more than 24 choices needs a uniform mapping`);let t=Pn({...JSON.parse(JSON.stringify({...n,uniforms:void 0})),...n.uniforms?{uniforms:n.uniforms}:{},...typeof n.padding=="function"?{padding:n.padding}:{}});return Object.freeze(Object.assign((o={},r={})=>{Ce(r)||X("expected effect options"),An(r,["enabled"],"options"),r.enabled!==void 0&&typeof r.enabled!="boolean"&&X("enabled must be a boolean"),Ce(o)||X("expected named knob values");let c=Object.create(null);for(let[d,s]of Object.entries(o)){if(Object.hasOwn(t.knobs,d)||X(`unknown knob ${d}`),ie(s)){c[d]=s;continue}if(be(s))for(let h of[s.definition.default,...(s.definition.keyframes??[]).map(u=>u.value)])_e(t.knobs[d],h,d);else _e(t.knobs[d],s,d);c[d]=Array.isArray(s)?Object.freeze([...s]):s}return Object.freeze({[wa]:!0,enabled:r.enabled??!0,definition:t,bindings:Object.freeze(c),...e?{sourceFile:e}:{}})},{definition:t}))}function Ea(n){return Ce(n)&&wa in n}function Mn(n,e=0,t=a=>ie(a)?Te(a,[]):a){Ea(n)||X("effects must contain effect instances");let{definition:a,bindings:o}=n,r=Object.create(null),c=Object.create(null);for(let[k,i]of Object.entries(a.knobs)){let _=t(o[k]??i.default);r[k]=be(_)?ve(_,e,i.type==="color"?"color":i.type==="number"?void 0:"discrete"):_,be(_)&&(c[k]=_.definition),_e(i,r[k],k)}let d=k=>!k||Object.entries(k).every(([i,_])=>r[i]===_),s=a.groups??{},h=Object.create(null);function u(k){return h[k]??=d(s[k].visibleWhen)&&(!s[k].parent||u(s[k].parent))}for(let k of Object.keys(s))u(k);let b=Object.fromEntries(Object.entries(a.knobs).map(([k,i])=>[k,d(i.visibleWhen)&&(!i.group||h[i.group])])),S=Sa(typeof a.padding=="function"?a.padding(r):a.padding);return Pn({enabled:n.enabled,padding:S,src:a.src,knobs:a.knobs,groups:s,values:r,tracks:c,visibleGroups:h,visibleKnobs:b})}function Le(n,e,t,a){if(n===void 0)return[];(!Array.isArray(n)||n.length>32)&&X("effects must be an array of at most 32 instances");let o=n.flatMap(r=>{if(Ea(r)||X("effects must contain effect instances"),!r.enabled)return[];let{values:c,padding:d}=Mn(r,e,a);if(r.evaluateBuiltin)return[r.evaluateBuiltin(c)];let s=r.definition,h;if(s.uniforms)h=s.uniforms(c);else{let u=Object.create(null);for(let[b,S]of Object.entries(s.knobs)){let k=c[b];switch(S.type){case"number":u[b]=k;break;case"boolean":u[b]=k?1:0;break;case"color":u[b]=ne(k);break;case"select":u[b]=Object.keys(S.options).indexOf(k);break;case"multiselect":u[b]=k.reduce((i,_)=>i+2**Object.keys(S.options).indexOf(_),0);break;case"text":X(`${b}: text needs an explicit uniforms mapping`)}}h=u}return Ce(h)||X("uniforms mapping must return named numeric values"),(s.passes??[{}]).map((u,b)=>{let S={...h,...u};for(let[k,i]of Object.entries(S)){let _=Array.isArray(i)?i:[i];(!/^[a-zA-Z][a-zA-Z0-9_]*$/.test(k)||Array.isArray(i)&&(_.length<2||_.length>4)||_.some(m=>!xa(m)||!Number.isFinite(Math.fround(m))))&&X(`invalid uniform ${k}`)}return{padding:b===0?d:lr,...s.src?{src:s.src}:{code:s.code},sourceFile:r.sourceFile??t,uniforms:S}})});return o.length>32&&X("effects expand to more than 32 passes"),o}var lr=Object.freeze([0,0,0,0]),va=`
3
+ fn eng_input(uv: vec2f) -> vec4f {
4
+ let padded = (uv * ENG_EFFECT_RECT.zw + ENG_EFFECT_RECT.xy) / ENG_EFFECT_SIZE;
5
+ if any(padded < vec2f(0.0)) || any(padded > vec2f(1.0)) { return vec4f(0.0); }
6
+ return eng_backdrop(padded);
7
+ }
8
+ `,Ht=Ae({padding:({radius:n})=>Math.max(0,n)*2,knobs:jt,passes:[{horizontal:1},{horizontal:0}],code:`struct Uniforms { radius: f32, horizontal: f32 }
9
+ fn effect(uv: vec2f, time: f32) -> vec4f {
10
+ if uniforms.radius <= 0.0 { return eng_input(uv); }
11
+ let axis = select(vec2f(0.0, 1.0), vec2f(1.0, 0.0), uniforms.horizontal > 0.5);
12
+ let spacing = axis * uniforms.radius / 8.0 / eng_box_size();
13
+ var sum = vec4f(0.0); var weight = 0.0;
14
+ for (var i: i32 = -16; i <= 16; i++) {
15
+ let d = f32(i) / 8.0; let w = exp(-0.5 * d * d);
16
+ let c = eng_input(uv + spacing * f32(i));
17
+ sum += vec4f(c.rgb * c.a, c.a) * w; weight += w;
18
+ }
19
+ return vec4f(sum.rgb / max(sum.a, 0.00001), sum.a / weight);
20
+ }`}),Ta=Ae({padding:0,knobs:Kt,code:`struct Uniforms { amount: f32 }
21
+ fn effect(uv: vec2f, time: f32) -> vec4f {
22
+ let c = eng_input(uv);
23
+ let p = floor(uv * eng_box_size());
24
+ let n = fract(sin(dot(p,vec2f(12.9898,78.233)) + floor(time*24.0)*17.1)*43758.5453)-0.5;
25
+ return vec4f(clamp(c.rgb + n*uniforms.amount,vec3f(0.0),vec3f(1.0)), c.a);
26
+ }`});var Pa=["position","z","rotation","scale","origin","opacity","color","blur"],se=n=>{throw new Error(`Text.animate: ${n}`)};function Fn(n){return!n||typeof n!="object"||Array.isArray(n)?se("expected an object"):n}function qe(n,e,t=-1e6,a=1e6){return typeof n!="number"||!Number.isFinite(n)||n<t||n>a?se(`${e} must be a finite number in ${t}..${a}`):n}function Ca(n){return Se(n)?n:se("unsupported easing")}function Rn(n){let e=Fn(n);for(let[t,a]of Object.entries(e))Pa.includes(t)||se(`unsupported per-unit property ${t}; layout belongs on Text`),t==="position"||t==="origin"?((!Array.isArray(a)||a.length!==2)&&se(`${t} must be [x, y]`),a.forEach(o=>qe(o,t))):t==="color"?ne(a)||se("color must be a hex color or transparent"):qe(a,t,t==="opacity"||t==="blur"?0:-1e6,t==="opacity"?1:t==="blur"?64:1e6);return e}var Aa=n=>Array.from(n).reduce((e,t)=>e+(t.codePointAt(0)>65535?4:t.charCodeAt(0)>2047?3:t.charCodeAt(0)>127?2:1),0),ur=new Intl.Segmenter("en",{granularity:"grapheme"});function Ma(n,e,t,a){let o=Fn(n);for(let l of Object.keys(o))["unit","stagger","delay","duration","easing","from","to","keyframes"].includes(l)||se(`unknown option ${l}`);["character","word","line"].includes(o.unit)||se("unit must be character, word or line");let r=o.unit,c=qe(o.stagger??0,"stagger",0),d=qe(o.delay??0,"delay",0),s=Ca(o.easing??"linear"),h={position:[0,0],z:0,rotation:0,scale:1,opacity:1,color:a,blur:0},u;if(o.keyframes!==void 0){(o.from!==void 0||o.to!==void 0||o.duration!==void 0)&&se("keyframes replace from/to/duration"),(!Array.isArray(o.keyframes)||o.keyframes.length<2||o.keyframes.length>128)&&se("expected 2\u2013128 keyframes");let l=-1,f=h;u=o.keyframes.map(p=>{let y=Fn(p);Object.keys(y).some(x=>!["at","value","easing"].includes(x))&&se("unknown keyframe property");let w=qe(y.at,"keyframe.at",0);return(w<=l||l===-1&&w!==0)&&se("keyframes must start at 0 and increase strictly"),l=w,f={...f,...Rn(y.value)},{at:w,value:f,easing:Ca(y.easing??s)}})}else{let l=qe(o.duration??.4,"duration",Number.EPSILON);u=[{at:0,value:{...h,...Rn(o.from??{})},easing:s},{at:l,value:{...h,...Rn(o.to??{})},easing:s}]}let b=u.find(l=>l.value.origin)?.value.origin;b&&(u=u.map(l=>({...l,value:{...l.value,origin:l.value.origin??b}})));let S=Array.from(ur.segment(e));S.length>512&&se("at most 512 graphemes per animated Text");let i=(r==="word"?Array.from(e.matchAll(/\S+/gu),l=>({index:l.index,segment:l[0]})):S).map(l=>[Aa(e.slice(0,l.index)),Aa(e.slice(0,l.index+l.segment.length))]),_=r==="line"?S.length+1:i.length,m=Array.from({length:_},(l,f)=>{let p={};for(let x of Pa)u[0].value[x]!==void 0&&(p[x]=Ee({default:u[0].value[x],keyframes:u.map(E=>({at:E.at,value:E.value[x],easing:E.easing}))},t-d-f*c));let{blur:y,...w}=p;return{...w,opacity:Math.max(0,Math.min(1,Number(w.opacity))),effects:Number(y)>0?Le([Ht({radius:Number(y)})],t):[]}});return{unit:r,ranges:r==="line"?[]:i,states:m}}function ye(n){if(n===void 0||n===!1)return null;let e=typeof n=="string"?{source:n}:n;if(!e||typeof e!="object"||Array.isArray(e)||Object.keys(e).some(t=>!["source","mode","invert"].includes(t))||typeof e.source!="string"||!e.source.trim()||!["alpha","vector","luminance"].includes(e.mode??"alpha")||e.invert!==void 0&&typeof e.invert!="boolean")throw new Error('Group.mask: expected a child id or { source, mode: "alpha" | "vector" | "luminance", invert?: boolean }');return{source:e.source,mode:e.mode??"alpha",invert:e.invert??!1}}function Xt(n,e){let t=n.map((a,o)=>a?.props?.id===e.source?o:-1).filter(a=>a>=0);if(t.length!==1)throw new Error(`Group.mask: "${e.source}" must identify exactly one direct child`);return t[0]}var hr=Object.freeze(["Group","Rect","Path","Text","Image","Video","Audio","Shader","Model","Composition"]),Ra=Object.freeze(["id","track","start","duration"]),Je=n=>hr.some(e=>e.toLowerCase()===n.toLowerCase());function On(n,e,t,a){let o=n.start??0,r=n.duration??Math.max(e-Number(o),1/t);if(typeof o!="number"||!Number.isFinite(o)||o<0)throw new Error(`${a}.start: expected a finite nonnegative number`);if(typeof r!="number"||!Number.isFinite(r)||r<=0)throw new Error(`${a}.duration: expected a positive finite number`);let c=n.track;if(c!==void 0&&(typeof c!="number"||!Number.isInteger(c)||c<0||c>99))throw new Error(`${a}.track: expected an integer from 0 to 99`);return{start:o,duration:r,track:c}}function Fa(n,e,t){if(n!==void 0){if(typeof n!="string"||!n.trim()||n.trim().split(/\s+/u).length>e)throw new Error(`${t}: expected a nonempty static string of at most ${e} ${e===1?"word":"words"}`);return n.trim().replace(/\s+/gu," ")}}var je=n=>Fa(n,2,"Group.label");function Ye(n){for(let e of["hidden","solo"])if(n[e]!==void 0&&typeof n[e]!="boolean")throw new Error(`Group.${e}: expected a static boolean`);return{hidden:n.hidden===!0,solo:n.solo===!0}}function mt(n){if(n===void 0)return{};if(!n||typeof n!="object"||Array.isArray(n))throw new Error("Scene.tracks: expected an object keyed by track numbers (0\u201399)");return Object.fromEntries(Object.entries(n).map(([e,t])=>{if(!/^(?:0|[1-9]\d?)$/.test(e))throw new Error("Scene.tracks: track numbers must be integers from 0 to 99");if(!t||typeof t!="object"||Array.isArray(t)||Object.keys(t).some(o=>!["label","hidden","solo","muted","motionBlur"].includes(o)))throw new Error(`Scene.tracks.${e}: expected label, hidden, solo, muted or motionBlur metadata`);let a=Fa(t.label,1,`Scene.tracks.${e}.label`);for(let o of["hidden","solo","muted","motionBlur"])if(t[o]!==void 0&&typeof t[o]!="boolean")throw new Error(`Scene.tracks.${e}.${o}: expected a static boolean`);return[e,{...t,...a===void 0?{}:{label:a}}]}))}function Oa(n,e){let t=e===void 0?{}:n[e]??{},a=Object.values(n).some(o=>o.solo)&&!t.solo;return{visible:!t.hidden&&!a,audible:!t.muted&&!a}}function O(n,e,t=-1/0){if(typeof n!="number"||!Number.isFinite(n)||n<t)throw new Error(`${e}: expected a finite number >= ${t}`);return n}function $(n,e){let t=O(n,e,0);if(t===0)throw new Error(`${e}: must be greater than zero`);return t}function qt(n,e){if(!Array.isArray(n)||n.length!==2)throw new Error(`${e}: expected [x, y]`);return[O(n[0],e),O(n[1],e)]}function ke(n,e){if(typeof n!="string"||n!=="transparent"&&!/^#(?:[\da-f]{6}|[\da-f]{8})$/i.test(n))throw new Error(`${e}: expected #RRGGBB, #RRGGBBAA or transparent`);return n}function Ze(n){let e=O(n.scale??1,"scale (one uniform number)"),t=O(n.opacity??1,"opacity",0);if(t>1)throw new Error("opacity: must be <= 1");return{position:qt(n.position??[0,0],"position"),z:O(n.z??0,"z"),rotation:O(n.rotation??0,"rotation"),scale:[e,e],origin:qt(n.origin??[0,0],"origin"),opacity:t}}function Qe(n,e,t=[]){return ie(n)?Te(n,t):zt(n)?n:be(n)?ve(n,e):Array.isArray(n)?n.map(a=>Qe(a,e,t)):n&&typeof n=="object"&&!_t(n)&&Object.getPrototypeOf(n)===Object.prototype?Object.fromEntries(Object.entries(n).map(([a,o])=>[a,Qe(o,e,t)])):n}function _t(n){return typeof n=="object"&&n!==null&&"type"in n&&"props"in n}function kt(n,e){return In(n,e)}function Zt(n,e){let t=kt(n,e);if(!t.motionBlur)return t;function a(o){for(let r of o){if(r.type==="model")throw new Error("Motion blur does not support Model layers; use motionBlur={false}");r.type==="composition"?a(r.scene.children):"children"in r&&a(r.children)}}a(t.children),t.motionSamples=Lt(e,t.totalFrames,t.motionBlur).map(o=>In(n,o,{subframe:!0},0,void 0,t));for(let o of t.motionSamples)a(o.children);return t}function In(n,e,t,a=0,o,r){if(a>32)throw new Error("Scene nesting exceeds 32 levels");if(!_t(n)||n.type!==xe&&n.type!=="scene")throw new Error("The root must be <Scene>; put custom components inside it");let c=n.props;le(c,"Scene",["width","height","duration","fps","background","children","effects","tracks","knobs","values","stacking","motionBlur"],!1);let d=ut(c.motionBlur);if(a>0&&d)throw new Error("Set motionBlur on the root Scene; nested exposures are not supported");let s=mt(c.tracks);if(c.stacking!==void 0&&c.stacking!=="source"&&c.stacking!=="tracks")throw new Error('Scene.stacking must be "tracks" or "source"');let h=$(c.width,"Scene.width"),u=$(c.height,"Scene.height");if(![h,u].every(E=>Number.isInteger(E)&&E<=8192))throw new Error("Scene dimensions must be whole pixels, at most 8192 per side");let b=$(c.duration,"Scene.duration"),S=$(c.fps??30,"Scene.fps"),k=Math.ceil(b*S);if(!Number.isSafeInteger(k)||k<1)throw new Error("Scene frame count is out of range");if(!t&&(!Number.isSafeInteger(e)||e<0||e>=k))throw new Error(`Frame must be an integer in [0, ${k-1}]`);let i=Object.freeze({frame:e,time:e/S,fps:S,width:h,height:u,duration:b,...t});for(let E of[c.values,o?.values])if(E!==void 0&&(!E||typeof E!="object"||Array.isArray(E)))throw new Error("Scene.values must be named knob bindings");let _=[],m;if(c.knobs!==void 0){let E=o?.values??{};m=pt(c.knobs,{...c.values??{},...E},i.time,o?.scope??[],{sourceFile:n.sourceFile,valueSources:{...n.valueSources,...Object.fromEntries(Object.keys(E).filter(()=>o?.sourceFile).map(P=>[P,o.sourceFile]))},bindingTimes:Object.fromEntries(Object.keys(E).map(P=>[P,o.time]))}),_=[{set:c.knobs,description:m}]}else if(c.values!==void 0||o?.values!==void 0)throw new Error("Scene.values requires Scene.knobs");let l,f=[];function p(E,P=0){if(P>256)throw new Error("Scene nesting exceeds 256 levels");if(Array.isArray(E))for(let T of E)p(T,P+1);else if(_t(E)&&(E.type===dt||E.type==="camera")){if(l)throw new Error("Scene accepts only one Camera");l=gr(Qe(E.props,i.time,_),i)}else f.push(E)}p(c.children);let y=r?{tracks:s,context:{...i,frame:r.frame,time:r.time,subframe:void 0},scope:c.knobs!==void 0&&r.controls?[{set:c.knobs,description:r.controls}]:_}:void 0,w=Ia(we(f,i,a,_,y).filter(E=>E.track===void 0||!s[E.track]?.hidden));function x(E,P){for(let T of E){if(T.track!==void 0&&P!=="scene")throw new Error(`${T.type}.track is only supported on root timeline clips`);if(T.type==="model"&&P!=="scene")throw new Error("Model must be a direct child of Scene");if(T.type==="surface"&&P!=="model")throw new Error("Surface must be a direct child of Model");"children"in T&&x(T.children,T.type)}}x(w,"scene");for(let E of w){let P=Oa(s,E.track);P.visible||(E.transform.opacity=0),P.audible||yt(E)}return{type:"scene",...d?{motionBlur:d}:{},...l?{camera:l}:{},...i,totalFrames:k,background:ke(Qe(c.background??"transparent",i.time,_),"Scene.background"),...m?{controls:m}:{},...c.effects===void 0?{}:{effects:Le(c.effects,i.time,n.sourceFile,E=>ie(E)?Te(E,_):E)},...c.stacking==="tracks"?{paintOrder:w.map((E,P)=>P).sort((E,P)=>(w[P].track??0)-(w[E].track??0))}:{},children:w}}function gr(n,e){le(n,"Camera",["position","z","target","fov"],!1);let t=qt(n.position??[e.width/2,e.height/2],"Camera.position"),a=O(n.z??2e3,"Camera.z"),o=n.target??[e.width/2,e.height/2,0];if(!Array.isArray(o)||o.length!==3)throw new Error("Camera.target: expected [x, y, z]");let r=[O(o[0],"Camera.target"),O(o[1],"Camera.target"),O(o[2],"Camera.target")];if(Math.hypot(t[0]-r[0],t[1]-r[1],a-r[2])<1e-4)throw new Error("Camera.position and z must differ from target");let c=$(n.fov??2*Math.atan(e.height/4e3)*180/Math.PI,"Camera.fov");if(c>=180)throw new Error("Camera.fov must be less than 180 degrees");return{position:t,z:a,target:r,fov:c}}var Jt=new WeakSet;function yt(n){(n.type==="audio"||n.type==="video")&&(n.volume=0),"children"in n&&n.children.forEach(yt),n.type==="composition"&&n.scene.children.forEach(yt)}function Ia(n){if(n.some(e=>Jt.has(e)))for(let e of n)Jt.has(e)||(e.transform.opacity=0,yt(e));return n}function Yt(n){if(n==null||typeof n=="boolean")return[];if(Array.isArray(n))return n.flatMap(Yt);if(!_t(n))throw new Error("Group children must be elements");return n.type===He||n.type==="fragment"?Yt(n.props.children):[n]}function Na(n){let e={...n.props,opacity:1,effects:void 0},t=n.type;if(t===Be||t==="group"){let a=Yt(n.props.children);Object.assign(e,{children:a.map(Na),depth:0,sideFill:void 0,fill:n.props.fill!==void 0||!a.length?"#ffffff":"transparent",stroke:void 0})}else if(t===bt||t==="path"||t===st||t==="rect")Object.assign(e,{fill:"#ffffff",stroke:void 0});else if(t===ft||t==="text")Object.assign(e,{color:"#ffffff"});else throw new Error("Vector masks require Group, Path, Rect, or Text outlines; use alpha or luminance for media, shaders, and scenes");return{...n,props:e}}function we(n,e,t,a=[],o){if(t>256)throw new Error("Scene nesting exceeds 256 levels; check for recursive components");if(n==null||typeof n=="boolean")return[];if(Array.isArray(n))return n.flatMap(m=>we(m,e,t+1,a,o));if(!_t(n))throw new Error("Scene children must be components; put text inside <Text>");let c=new Map([[Be,"group"],[Nt,"model"],[Vt,"surface"],[st,"rect"],[bt,"path"],[ft,"text"],[Rt,"image"],[Ft,"video"],[Ot,"audio"],[It,"shader"],[He,"fragment"],[xe,"scene"],[dt,"camera"]]).get(n.type)??n.type,d=n.props.track;if(o&&(c==="video"||typeof d=="number"&&o.tracks[d]?.motionBlur===!1))return we(n,o.context,t,o.scope);if(typeof c!="function"&&n.props.hidden!==void 0&&(Ye({hidden:n.props.hidden}),n.props.hidden===!0))return[];if(c==="composition"){let m=n.props.scene,l=On(n.props,e.duration,e.fps,"Scene instance"),f=Math.max(0,Math.min(l.duration-1e-9,e.time-l.start)),p=Object.fromEntries(Object.entries(n.props).filter(([V])=>V!=="scene").map(([V,D])=>[V,V==="effects"||V==="values"?D:Qe(D,f,a)])),y=O(p.trimIn??0,"Scene instance.trimIn",0),w=$(m.props.duration,"Scene.duration");if(y>=w)throw new Error("Scene instance.trimIn must be before the source end");let x=(e.offset??0)+l.start-y,E=Math.max(e.windowStart??0,x+y),P=Math.min(e.windowEnd??1/0,x+Math.min(w,y+l.duration)),T=Math.max(0,Math.min(w-1e-9,e.time-l.start+y)),v=V=>{if(p[V]===void 0)return m.props[V];let D=$(p[V],`Scene instance.${V}`);if(D<1||D>8192)throw new Error("Scene instance dimensions must be 1..8192 pixels per side");return Math.round(D)},C={...m,props:{...m.props,width:v("width"),height:v("height")}},R=o?we(n,o.context,t,o.scope)[0]:void 0,B=In(C,0,{time:T,frame:T*e.fps,fps:e.fps,subframe:e.subframe,offset:x,windowStart:E,windowEnd:P},t+1,{values:p.values,scope:a,time:f,sourceFile:n.sourceFile},R?.scene),j=e.time>=l.start&&e.time<l.start+Math.min(l.duration,w-y);je(p.label),Ye(p);let I={type:"composition",width:B.width,height:B.height,scene:B,...B.controls?{controls:B.controls}:{},...l.track===void 0?{}:{track:l.track},transform:Ze({...p,opacity:j?p.opacity:0}),...p.effects===void 0?{}:{effects:Le(p.effects,f,n.sourceFile,V=>ie(V)?Te(V,a):V)}};return p.solo&&Jt.add(I),[I]}let s=e,h=typeof c=="string"&&Je(c)?On(n.props,e.duration,e.fps,c):null,u=h&&(n.props.start!==void 0||n.props.duration!==void 0||n.props.track!==void 0),b=!0;if(u){let{start:m,duration:l}=h;b=e.time>=m&&e.time<m+l;let f=(e.offset??0)+m,p=Math.max(0,Math.min(l-1e-9,e.time-m));if(e={...e,time:p,frame:e.subframe?p*e.fps:Math.floor(p*e.fps),duration:l,offset:f,windowStart:Math.max(e.windowStart??0,f),windowEnd:Math.min(e.windowEnd??1/0,f+l)},o){let y=o.context,w=(y.offset??0)+m,x=Math.max(0,Math.min(l-1e-9,y.time-m));o={...o,context:{...y,time:x,frame:Math.floor(x*y.fps),duration:l,offset:w,windowStart:Math.max(y.windowStart??0,w),windowEnd:Math.min(y.windowEnd??1/0,w+l)}}}}let S;if(c==="group"){if(je(n.props.label),Ye(n.props),n.props.knobs!==void 0){if(!zt(n.props.knobs))throw new Error("Group.knobs must be a defineKnobs declaration");if(S=pt(n.props.knobs,n.props.values,e.time,a,{sourceFile:n.sourceFile,valueSources:n.valueSources}),a=[...a,{set:n.props.knobs,description:S}],o){let m=pt(n.props.knobs,n.props.values,o.context.time,o.scope,{sourceFile:n.sourceFile,valueSources:n.valueSources});o={...o,scope:[...o.scope,{set:n.props.knobs,description:m}]}}}else if(n.props.values!==void 0)throw new Error("Group.values requires Group.knobs")}let k=m=>{let l=n.props[m],f=ie(l)?Cn(l,a):void 0;if(f&&f.kind!==(m==="font"?"font":c))throw new Error(`${c}.${m}: asset knob ${f.name} has incompatible kind ${f.kind}`);return f?.sourceFile??n.sourceFile},i=Object.fromEntries(Object.entries(n.props).map(([m,l])=>[m,m==="children"&&!ie(l)||m==="effects"||c==="group"&&(m==="knobs"||m==="values")?l:Qe(l,e.time,a)]));if(typeof c=="function"){let m=c(Object.freeze(i),e),l=we(m,e,t+1,a,o);return n.key!==void 0?[{type:"group",key:n.key,transform:Ze({}),children:l}]:l}if(c==="fragment"){let m=we(i.children,e,t+1,a,o);return n.key===void 0?m:[{type:"group",key:n.key,transform:Ze({}),children:m}]}if(c==="scene")throw new Error("Scenes cannot be nested");if(c==="camera")throw new Error("Camera must be a direct child of Scene");if(c==="model"){if(le(i,"Model",["src","position","z","height","rotation","scale","opacity","hidden","animations","children"],!1),typeof i.src!="string"||!/\.glb$/i.test(i.src)||/^[a-z]+:/i.test(i.src))throw new Error("Model.src: expected a local .glb path");let m=i.rotation??[0,0,0];if(!Array.isArray(m)||m.length!==3)throw new Error("Model.rotation: expected [x,y,z] degrees");let l=i.animations??{};if(!l||typeof l!="object"||Array.isArray(l))throw new Error("Model.animations: expected a map of clip names to progress");let f={};for(let[y,w]of Object.entries(l)){if(!y.trim())throw new Error("Model.animations: empty clip name");let x=O(w,`Model.animations.${y}`,0);if(x>1)throw new Error("Animation progress must be between 0 and 1");Object.defineProperty(f,y,{value:x,enumerable:!0})}let p=we(i.children,e,t+1,a);if(p.some(y=>y.type!=="surface"))throw new Error("Model accepts Surface children only");return[{type:"model",src:i.src,...k("src")?{sourceFile:k("src")}:{},...n.key===void 0?{}:{key:n.key},...h?.track===void 0?{}:{track:h.track},transform:Ze({...i,opacity:b?i.opacity:0,position:i.position??[e.width/2,e.height/2],rotation:0,scale:$(i.scale??1,"Model.scale")}),height:$(i.height,"Model.height"),rotation3d:m.map(y=>O(y,"Model.rotation")),animations:f,children:p}]}if(c==="surface"){le(i,"Surface",["node","nodes","material","primitive","slot","width","height","shading","color","metalness","roughness","effects","children"],!1);let m=x=>{if(typeof x=="string"&&x.trim()||typeof x=="number"&&Number.isSafeInteger(x)&&x>=0)return x;throw new Error("Surface selector must be a nonempty name or nonnegative index")};if(i.node!==void 0&&i.nodes!==void 0)throw new Error("Use Surface.node or Surface.nodes, not both");let l=i.nodes??(i.node===void 0?void 0:[i.node]);if(l!==void 0&&(!Array.isArray(l)||!l.length))throw new Error("Surface.nodes must be a nonempty list");if(l===void 0&&i.material===void 0)throw new Error("Surface needs a node or material selector");let f=i.width===void 0?void 0:$(i.width,"Surface.width"),p=i.height===void 0?void 0:$(i.height,"Surface.height"),y=we(i.children,f===void 0||p===void 0?e:Object.freeze({...e,width:f,height:p}),t+1,a);if(f===void 0!=(p===void 0)||y.length&&f===void 0)throw new Error("Surface content requires width and height");if(f!==void 0&&(f>4096||p>4096))throw new Error("Surface canvas limit is 4096 per side");let w=(x,E)=>{let P=O(x,E,0);if(P>1)throw new Error(`${E}: must be <= 1`);return P};if(i.primitive!==void 0&&(!Number.isSafeInteger(i.primitive)||O(i.primitive,"Surface.primitive",0)<0))throw new Error("Surface.primitive must be an index");return[{type:"surface",transform:Ze({}),...n.key===void 0?{}:{key:n.key},...l===void 0?{}:{nodes:l.map(m)},...i.material===void 0?{}:{material:m(i.material)},...i.primitive===void 0?{}:{primitive:i.primitive},slot:oe(i.slot??"baseColor",["baseColor"],"Surface.slot"),...f===void 0?{}:{width:f,height:p},...i.shading===void 0?{}:{shading:oe(i.shading,["lit","unlit"],"Surface.shading")},...i.color===void 0?{}:{color:ke(i.color,"Surface.color")},...i.metalness===void 0?{}:{metalness:w(i.metalness,"Surface.metalness")},...i.roughness===void 0?{}:{roughness:w(i.roughness,"Surface.roughness")},...i.effects===void 0?{}:{effects:Le(i.effects,e.time,n.sourceFile)},children:y}]}let _={...i.effects===void 0?{}:{effects:Le(i.effects,e.time,n.sourceFile,m=>ie(m)?Te(m,a):m)},transform:Ze(b?i:{...i,opacity:0}),...h?.track===void 0?{}:{track:h.track},...n.key===void 0?{}:{key:n.key}};if(c==="group"){le(i,"Group",["knobs","values","start","duration","track","label","hidden","solo","depth","sideFill","children","width","height","layout","gap","padding","align","justify","fill","stroke","rounding","shape","clip","mask"]);let m=oe(i.layout??"free",["free","row","column"],"Group.layout"),l=(I,V)=>I===void 0?void 0:I==="fill"?"fill":I==="auto"?m==="free"?pr(`${V}: auto requires row/column layout`):"auto":O(I,V,0),f=l(i.width,"Group.width"),p=l(i.height,"Group.height"),y=oe(i.shape??"box",["box","ellipse"],"Group.shape"),w=i.padding??0,x=typeof w=="number"?[w,w,w,w]:w;if(!Array.isArray(x)||x.length!==4)throw new Error("Group.padding: expected a number or [top, right, bottom, left]");let E=i.stroke;if(E!==void 0&&(!E||typeof E!="object"||Array.isArray(E)))throw new Error("Group.stroke: expected { color, width }");let P=E;if(P&&Object.keys(P).some(I=>I!=="color"&&I!=="width"))throw new Error("Group.stroke: unsupported property");if(i.clip!==void 0&&typeof i.clip!="boolean")throw new Error("Group.clip: expected boolean");let T=ye(i.mask),v=T?Yt(i.children):null,C=T?Xt(v,T):-1,R=[],B=-1;if(v)for(let[I,V]of v.entries()){let D=I===C,A=we(D&&T.mode==="vector"?Na(V):V,e,t+1,a,o);if(D){if(A.length===0)continue;if(A.length!==1||A[0].type==="audio")throw new Error("Group.mask: source must be a visual layer");B=R.length,yt(A[0])}R.push(...A)}let j={type:"group",..._,...S?{controls:S}:{},...f===void 0?{}:{width:f},...p===void 0?{}:{height:p},layout:m,shape:y,gap:O(i.gap??0,"Group.gap",0),padding:x.map(I=>O(I,"Group.padding",0)),align:oe(i.align??"start",["start","center","end","stretch"],"Group.align"),justify:oe(i.justify??"start",["start","center","end","spaceBetween","spaceAround"],"Group.justify"),fill:ke(i.fill??"transparent","Group.fill"),depth:O(i.depth??0,"Group.depth",0),sideFill:ke(i.sideFill??i.fill??"transparent","Group.sideFill"),...P?{stroke:{color:ke(P.color,"Group.stroke.color"),width:O(P.width,"Group.stroke.width",0)}}:{},rounding:O(i.rounding??0,"Group.rounding",0),clip:i.clip!==!1,...i.clip===!0?{clipEffects:!0}:{},children:Ia(v?R:we(i.children,e,t+1,a,o)),...T&&B>=0?{mask:{index:B,mode:T.mode,invert:T.invert}}:{}};return i.solo&&Jt.add(j),[j]}if(c==="shader"){if(le(i,"Shader",["src","backdrop","width","height","rounding","uniforms"]),i.backdrop!==void 0&&typeof i.backdrop!="boolean"&&i.backdrop!=="replace")throw new Error('Shader.backdrop: expected a boolean or "replace"');if(typeof i.src!="string"||!i.src.trim()||/^[a-z]+:/i.test(i.src)||!/\.wgsl$/i.test(i.src))throw new Error("Shader.src: expected a local .wgsl file path");let m=i.uniforms??{};if(!m||typeof m!="object"||Array.isArray(m))throw new Error("Shader.uniforms: expected named numbers or vectors");if(Object.keys(m).length>32)throw new Error("Shader.uniforms: maximum 32 fields");let l={};for(let[f,p]of Object.entries(m)){if(!/^[a-zA-Z][a-zA-Z0-9_]*$/.test(f))throw new Error(`Shader.uniforms: invalid name "${f}"`);let y=Array.isArray(p)?p:[p];if(Array.isArray(p)&&(p.length<2||p.length>4))throw new Error(`Shader.uniforms.${f}: expected a number or vector of 2\u20134 numbers`);for(let w of y)if(O(w,`Shader.uniforms.${f}`),!Number.isFinite(Math.fround(w)))throw new Error(`Shader.uniforms.${f}: exceeds f32 range`);Object.defineProperty(l,f,{value:p,enumerable:!0})}return[{type:"shader",..._,src:i.src,backdrop:i.backdrop??!1,...k("src")?{sourceFile:k("src")}:{},width:$(i.width,"Shader.width"),height:$(i.height,"Shader.height"),rounding:O(i.rounding??0,"Shader.rounding",0),uniforms:l}]}if(c==="image"||c==="video"||c==="audio"){let m=c!=="audio",l=c!=="image";if(le(i,c,["src",...c==="video"?["originalSrc"]:[],...m?["width","height","fit","rounding"]:[],...l?["start","duration","trimIn","playbackRate","volume"]:[]],m),typeof i.src!="string"||!i.src.trim()||/^[a-z]+:/i.test(i.src))throw new Error(`${c}.src: expected a local file path`);let f={type:c,..._,src:i.src,...k("src")?{sourceFile:k("src")}:{}};if(c==="video"&&i.originalSrc!==void 0){if(typeof i.originalSrc!="string"||!i.originalSrc.trim()||/^[a-z]+:|[\x00-\x1f]/i.test(i.originalSrc))throw new Error("Video.originalSrc: expected a local file path");f.originalSrc=i.originalSrc,f.originalSourceFile=k("originalSrc")??n.sourceFile}if(m&&Object.assign(f,{width:$(i.width,`${c}.width`),height:$(i.height,`${c}.height`),fit:oe(i.fit??"cover",["cover","contain","fill"],`${c}.fit`),rounding:O(i.rounding??0,`${c}.rounding`,0)}),l){let p=O(i.start??0,`${c}.start`,0),y=(s.offset??0)+p,w=Math.max(y,s.windowStart??0),x=$(i.duration??Math.max(s.duration-p,1/e.fps),`${c}.duration`),E=Math.min(y+x,s.windowEnd??1/0),P=O(i.volume??1,`${c}.volume`,0);if(P>1)throw new Error(`${c}.volume: must be <= 1`);let T=$(i.playbackRate??1,`${c}.playbackRate`);if(T<.25||T>4)throw new Error(`${c}.playbackRate: expected 0.25 through 4`);Object.assign(f,{start:w,duration:E>w?E-w:1/e.fps,trimIn:O(i.trimIn??0,`${c}.trimIn`,0)+(w-y)*T,playbackRate:T,volume:E>w?P:0})}return[f]}if(c==="path"){if(le(i,"Path",["width","height","viewBox","fit","d","fill","fillRule","stroke"]),typeof i.d!="string"||!i.d.trim()||i.d.length>65536)throw new Error("Path.d: expected nonempty SVG path data, at most 64 KiB");let m;if(i.stroke!==void 0){let f=i.stroke;if(!f||typeof f!="object"||Array.isArray(f)||Object.keys(f).some(E=>!["color","width","cap","join","miterLimit","trimStart","trimEnd"].includes(E)))throw new Error("Path.stroke: expected color, width and optional cap/join/miterLimit/trimStart/trimEnd");let p=O(f.width,"Path.stroke.width",0),y=O(f.miterLimit??4,"Path.stroke.miterLimit",1);if(p>2048||y>100)throw new Error("Path.stroke: width must be <= 2048 and miterLimit <= 100");let w=O(f.trimStart??0,"Path.stroke.trimStart",0),x=O(f.trimEnd??1,"Path.stroke.trimEnd",0);if(w>1||x>1)throw new Error("Path.stroke: trimStart and trimEnd are fractions from 0 to 1");m={color:ke(f.color,"Path.stroke.color"),width:p,miterLimit:y,trimStart:w,trimEnd:x,cap:oe(f.cap??"butt",["butt","round","square"],"Path.stroke.cap"),join:oe(f.join??"miter",["miter","round","bevel"],"Path.stroke.join")}}let l={};for(let f of["width","height"])i[f]!==void 0&&(l[f]=$(i[f],`Path.${f}`));if(i.viewBox!==void 0){let f=i.viewBox;if(!Array.isArray(f)||f.length!==4)throw new Error("Path.viewBox: expected [minX, minY, width, height]");l.viewBox=[O(f[0],"Path.viewBox.x"),O(f[1],"Path.viewBox.y"),$(f[2],"Path.viewBox.width"),$(f[3],"Path.viewBox.height")]}if(i.fit!==void 0&&(l.fit=oe(i.fit,["contain","fill"],"Path.fit"),l.width===void 0&&l.height===void 0&&l.viewBox===void 0))throw new Error("Path.fit requires width, height or viewBox");return[{type:"path",..._,...l,d:i.d,fill:ke(i.fill??"#ffffff","Path.fill"),fillRule:oe(i.fillRule??"nonzero",["nonzero","evenodd"],"Path.fillRule"),...m?{stroke:m}:{}}]}if(c==="rect"){if(le(i,"Rect",["width","height","fill","radius","children"]),i.children!==void 0)throw new Error("Rect does not accept children");let m=O(i.width,"Rect.width",0),l=O(i.height,"Rect.height",0);return[{type:"rect",..._,width:m,height:l,fill:ke(i.fill??"#ffffff","Rect.fill"),radius:Math.min(O(i.radius??0,"Rect.radius",0),m/2,l/2)}]}if(c==="text"){if(le(i,"Text",["animate","height","verticalAlign","alignBounds","children","font","fontSize","fontWeight","color","width","align","lineHeight","letterSpacing","path"]),i.animate!==void 0&&i.path!==void 0)throw new Error("Text.animate cannot be combined with Text.path");let m;if(i.path!==void 0){if(!i.path||typeof i.path!="object"||Array.isArray(i.path))throw new Error("Text.path: expected a path object");for(let x of["width","height","verticalAlign","alignBounds","align","lineHeight"])if(i[x]!==void 0)throw new Error(`Text.${x} cannot be used with Text.path`);let y=i.path,w=O(y.progress??0,"Text.path.progress");if(y.shape==="ellipse"){le(y,"Text.path",["shape","radius","progress"],!1);let x=qt(y.radius,"Text.path.radius");m={shape:"ellipse",radius:[$(x[0],"Text.path.radius[0]"),$(x[1],"Text.path.radius[1]")],progress:w}}else if(y.shape==="svg"){if(le(y,"Text.path",["shape","d","progress"],!1),typeof y.d!="string"||!y.d.trim()||y.d.length>65536)throw new Error("Text.path.d: expected nonempty SVG path data (up to 65536 characters)");m={shape:"svg",d:y.d,progress:w}}else throw new Error('Text.path.shape: expected "ellipse" or "svg"');if(/[\r\n\u2028\u2029]/u.test(String(i.children)))throw new Error("Text.path requires single-line text")}if(typeof i.children!="string"&&typeof i.children!="number")throw new Error("Text requires string or number children");typeof i.children=="number"&&O(i.children,"Text.children");let l=i.font??"Inter";if(typeof l!="string"||l.length===0)throw new Error("Text.font must be a nonempty string");if(i.verticalAlign!==void 0&&i.height===void 0)throw new Error("Text.verticalAlign requires height");let f={...i.height===void 0?{}:{height:$(i.height,"Text.height")},...i.verticalAlign===void 0?{}:{verticalAlign:oe(i.verticalAlign,["top","center","bottom"],"Text.verticalAlign")},...i.alignBounds===void 0?{}:{alignBounds:oe(i.alignBounds,["lineBox","glyphs"],"Text.alignBounds")}},p=i.align??"left";if(p!=="left"&&p!=="center"&&p!=="right")throw new Error("Text.align must be left, center or right");return[{type:"text",..._,...f,...m?{path:m}:{},text:String(i.children),...i.animate===void 0?{}:{animate:Ma(i.animate,String(i.children),e.time,ke(i.color??"#ffffff","Text.color"))},font:l,...k("font")?{fontSource:k("font")}:{},...i.fontWeight===void 0?{}:{fontWeight:oe(i.fontWeight,[400,500,600,700],"Text.fontWeight")},fontSize:$(i.fontSize??48,"Text.fontSize"),color:ke(i.color??"#ffffff","Text.color"),...i.width===void 0?{}:{width:$(i.width,"Text.width")},align:p,lineHeight:$(i.lineHeight??1.2,"Text.lineHeight"),letterSpacing:O(i.letterSpacing??0,"Text.letterSpacing")}]}throw new Error(`Unsupported primitive: ${String(n.type)}`)}function pr(n){throw new Error(n)}function oe(n,e,t){if(!e.includes(n))throw new Error(`${t}: expected ${e.join(", ")}`);return n}function le(n,e,t,a=!0){let o=new Set(["id",...Je(e)?Ra:[],...t,...a?["position","z","rotation","scale","origin","opacity","effects","hidden"]:[]]);if(n.id!==void 0&&(typeof n.id!="string"||!n.id.trim()))throw new Error(`${e}.id: expected a nonempty string`);for(let r of Object.keys(n))if(!o.has(r))throw new Error(`${e}: unsupported prop "${r}"`)}var fe=[{number:1,id:"stock/Vision3/Default/50D.fbfilmneg",hash:"1bec2446ee43b88c53f2",sha256:"ddecdecdb915dfea695ce91245e6a40f0b5a0232e7719be0b59d9f6cb3a70b2a",kind:"stock",collection:"motion picture",group:"",label:"50d",tables:{logc4:{hash:"1bec2446ee43b88c53f2-logc4",sha256:"1460c599d4d36fc3849c31762d6a45f18a5e24cf1cae566e11d2c26ceeee4267"},slog3cine:{hash:"1bec2446ee43b88c53f2-slog3cine",sha256:"8f535c0b4ccd76bf0ee272b4b1e77b2c30053ba2cecb7b5d7a1f2cfe0e051529"}}},{number:2,id:"stock/Vision3/Default/200T.fbfilmneg",hash:"ecc51cfd5a5cede9cbae",sha256:"3f619d5aa84d49ededf451721f716aa6f5c8bfdc57bbbe6e3cc9bcf62d276749",kind:"stock",collection:"motion picture",group:"",label:"200t",tables:{logc4:{hash:"ecc51cfd5a5cede9cbae-logc4",sha256:"a9ed9ea417cf51e92d46500c2c7d51876dee9e475430a2c06cc76c1723ada7ec"},slog3cine:{hash:"ecc51cfd5a5cede9cbae-slog3cine",sha256:"0c78e273ff7cfcbade740c4477bc1c138b88fcf1410db65c092ec32bbde59fbf"}}},{number:3,id:"stock/Vision3/Default/250D.fbfilmneg",hash:"20ca38314cfd587b78fc",sha256:"20059ea05ff21a9f8a1c3443d49b1a817308d6832803d052d74bbe89b8ffd811",kind:"stock",collection:"motion picture",group:"",label:"250d",tables:{logc4:{hash:"20ca38314cfd587b78fc-logc4",sha256:"a6c0a44e2b3f33ad0a76eff8fb4f7d434eeecf55fe45cfb4be426808e17eb62f"},slog3cine:{hash:"20ca38314cfd587b78fc-slog3cine",sha256:"01aec00b6c2e7b4e9acedcb9ba7f07f314739601aa435b261c394a3324f99daf"}}},{number:4,id:"stock/Vision3/Default/500T.fbfilmneg",hash:"f10310ad81957c25fc48",sha256:"35101b3d7bbdf914b940aacaedc7aeab2755080147f144444c78437f8788c033",kind:"stock",collection:"motion picture",group:"",label:"500t",tables:{logc4:{hash:"f10310ad81957c25fc48-logc4",sha256:"55592fe58ff6f4ac4e6151ac293198bcf9e41079e10780872ff4bf1220a8e2f0"},slog3cine:{hash:"f10310ad81957c25fc48-slog3cine",sha256:"c8a4dd3b841e15630d0267a96afeeb821102ac9b2e5a20dc1e9a5ec53d707725"}}},{number:5,id:"stock/Expired/Vision2/Vision2 50D - 5201.fbfilmneg",hash:"7ddd94e5d0799d57d43c",sha256:"396988be0b3e7ce76a8dd12d998f6e681cc43c5bcc8caf34195c11e653c77745",kind:"stock",collection:"discontinued",group:"",label:"vision2 50d",tables:{logc4:{hash:"7ddd94e5d0799d57d43c-logc4",sha256:"5d4ab49669ef118375aa741b46be69a91ddd44fd4a422ffb864cb4f28c452b06"},slog3cine:{hash:"7ddd94e5d0799d57d43c-slog3cine",sha256:"db5cedad66e2909127c6c1f15d82fbc89ea3280f7ce9ef6bf9a177ae2102d4d1"}}},{number:6,id:"stock/Expired/Vision2/Vision2 200T - 5217.fbfilmneg",hash:"4580449bf3580df15a24",sha256:"1c1f2014d17bf771d2a6f00bf8f59b5f10d1f236566bccc3c8dd45f54e3ad360",kind:"stock",collection:"discontinued",group:"",label:"vision2 200t",tables:{logc4:{hash:"4580449bf3580df15a24-logc4",sha256:"3f3a5594427517540a19236f93714471307976951bceac909ea92387dabd9399"},slog3cine:{hash:"4580449bf3580df15a24-slog3cine",sha256:"2b35ad024b27259ee9f7c0ca954e2bca5ef1579527138a53ba59a65399945bd5"}}},{number:7,id:"stock/Expired/Vision2/Vision2 250D - 5205.fbfilmneg",hash:"219833e83f5b03cca36c",sha256:"be5dc3517c210da399293202de6a2296d2306c98afa4394af0b639c7bc97d858",kind:"stock",collection:"discontinued",group:"",label:"vision2 250d",tables:{logc4:{hash:"219833e83f5b03cca36c-logc4",sha256:"0776f6c9b404bb79f7bf47bb4629c29b73ef944bf9e8eb7773f0b2411f02a5ca"},slog3cine:{hash:"219833e83f5b03cca36c-slog3cine",sha256:"993769f0c92debbd346406054afda65cfe220f1680186cb1b007b7031de71730"}}},{number:8,id:"stock/Expired/Vision2/Vision2 500T - 5260 5218.fbfilmneg",hash:"bea529b58c1d7367060b",sha256:"1894699667db0e7ae7902a0bdf3cf63d422c9600a5be18c3160b371417c03e8d",kind:"stock",collection:"discontinued",group:"",label:"vision2 500t",tables:{logc4:{hash:"bea529b58c1d7367060b-logc4",sha256:"08a7de80a3d436b78cc36250fd7ac4c929050b3738e6826dbaa4024bf4aa6367"},slog3cine:{hash:"bea529b58c1d7367060b-slog3cine",sha256:"168857a78f1c0c4c17745b8602108407fc2e307ece0f1486d4416a9090946ff3"}}},{number:9,id:"stock/Expired/Vision/Vision 250D - 5246.fbfilmneg",hash:"5dbbbe0bc3402ac432ef",sha256:"55ca19c348d6c8c6adfb07f6ccfd9e1891f06c6373fffe2964b45a0828872adc",kind:"stock",collection:"discontinued",group:"",label:"vision 250d",tables:{logc4:{hash:"5dbbbe0bc3402ac432ef-logc4",sha256:"1eefbb8c9b168f76c2ca6838e13480b41781200a91040dbb40c20db94b4f9b02"},slog3cine:{hash:"5dbbbe0bc3402ac432ef-slog3cine",sha256:"93870ed95db1793d22db1fbd3e92572d4728e7251de57851138d78e9859fdeae"}}},{number:10,id:"stock/Expired/Vision/Vision 500T - 5279.fbfilmneg",hash:"651bc5d68b55c63d2209",sha256:"ebc7605bc69f3843275c4441eab2149d8698a75f4d5b29249df5f00bb4a4b216",kind:"stock",collection:"discontinued",group:"",label:"vision 500t",tables:{logc4:{hash:"651bc5d68b55c63d2209-logc4",sha256:"7f8fc4223eb54ffbb492bdaa8d80adbca125e82f4e67f867c443ebd6d9b6ac32"},slog3cine:{hash:"651bc5d68b55c63d2209-slog3cine",sha256:"cbbdefec443780cf601796a6e766145368fc5d02ad8ee7deb86c7c5885006748"}}},{number:11,id:"stock/Expired/EXR/EXR 100T - 5248.fbfilmneg",hash:"b408aaad6a6b268cc31f",sha256:"c89b9e24496d2cfb637829bf7441170901526df8fbecc0feb0872be1b1b0bcca",kind:"stock",collection:"discontinued",group:"",label:"exr 100t",tables:{logc4:{hash:"b408aaad6a6b268cc31f-logc4",sha256:"5416b18636ee7a0f24d6dd59e996b6bdf17f8ded5649b1df07cc6bb8d10b612f"},slog3cine:{hash:"b408aaad6a6b268cc31f-slog3cine",sha256:"32d474f721c26c74ab9c6b042fc19da9f4e1254cfe2fb986376ead354c4413c4"}}},{number:12,id:"stock/Expired/EXR/EXR 50D - 5245.fbfilmneg",hash:"dbfcf75f65364f300865",sha256:"ab35fa37e82dd216c772f7f1c6621c55d2360e6a22bfbf81b626f6ef19a7c316",kind:"stock",collection:"discontinued",group:"",label:"exr 50d",tables:{logc4:{hash:"dbfcf75f65364f300865-logc4",sha256:"6244d992d217cf445a755d6960aaef7d12c571c82fc891d3f151dda1958c3d79"},slog3cine:{hash:"dbfcf75f65364f300865-slog3cine",sha256:"d69e50ecbe59f222a4c0747c1f3b014b7aa1acae2de19190b7a08508eac35c7b"}}},{number:13,id:"stock/Expired/EXR/EXR 500T - 5298.fbfilmneg",hash:"b48affdfe23da47091f9",sha256:"30b7cd4e6e280844101034e9a7e40c521541c78e2c3daf8a9e52e778846ac941",kind:"stock",collection:"discontinued",group:"",label:"exr 500t",tables:{logc4:{hash:"b48affdfe23da47091f9-logc4",sha256:"54004242f20d22bc68622e1be479fcc41685a4137fa0f46c7e4ba41122d48f6f"},slog3cine:{hash:"b48affdfe23da47091f9-slog3cine",sha256:"4c0195829c042b101aed9c26f601d4f09f2104654101272408c62a8d680b9ca6"}}},{number:14,id:"stock/Expired/Eterna/Eterna 250D - 8563.fbfilmneg",hash:"ef47355ccc6c71d56c07",sha256:"d0293c0409df012218f53cec44332680e5544cea8f9306596598cd8c7a9ac6b4",kind:"stock",collection:"discontinued",group:"",label:"eterna 250d",tables:{logc4:{hash:"ef47355ccc6c71d56c07-logc4",sha256:"85328a7b6dc2b5746ba70101d063be859fa791347b568e719fb18b46d6e75d61"},slog3cine:{hash:"ef47355ccc6c71d56c07-slog3cine",sha256:"a8e5fedbd3801a857ee23f9eac28c76f13ce85b8633a6d136eec15be9291ef76"}}},{number:15,id:"stock/Expired/Eterna/Eterna 500T - 8573.fbfilmneg",hash:"03e20bcdbf816cbc2705",sha256:"267c62f7ca7a02dc9e917e6ead14f30600fc0868565fb004cc8c69ca75abd8c8",kind:"stock",collection:"discontinued",group:"",label:"eterna 500t",tables:{logc4:{hash:"03e20bcdbf816cbc2705-logc4",sha256:"3c4fb57d4a35addd93c7c3f1877e9b45aa40219e6976db22afcba8cd23921de8"},slog3cine:{hash:"03e20bcdbf816cbc2705-slog3cine",sha256:"9c1db859909ae4f100d52aecbf2f3a7b896c7db441bda24b70da13c67024d703"}}},{number:16,id:"stock/Expired/Eterna Vivid/Eterna Vivid 250D - 8546.fbfilmneg",hash:"19e71cdeaec2f28d22ed",sha256:"bfe8e64339b9b9b8bf43d94dda6c92889c818d9d7b435903a87c0ae4cc80d741",kind:"stock",collection:"discontinued",group:"",label:"eterna vivid 250d",tables:{logc4:{hash:"19e71cdeaec2f28d22ed-logc4",sha256:"a2021b3cf8df60d5cd5aa194aa941f0c88ed0551065929d2989874da3d63156c"},slog3cine:{hash:"19e71cdeaec2f28d22ed-slog3cine",sha256:"536e038df383269259af2c757bfeca5899c9b037d7182663383eb8c34d7e286c"}}},{number:17,id:"stock/Expired/Super-F/Super-F 64D - 8621.fbfilmneg",hash:"e9a41978b31155132d19",sha256:"2c240c8049050818df417169f422a4cf4d88734103ddaab23f7550d409327b64",kind:"stock",collection:"discontinued",group:"",label:"super-f 64d",tables:{logc4:{hash:"e9a41978b31155132d19-logc4",sha256:"74ee43f73c8c961022502325542e3489a4767da1d8c640f744515acba70582f3"},slog3cine:{hash:"e9a41978b31155132d19-slog3cine",sha256:"6ffde4f76a9a6e207946610fc44702927d1af53c3780c291c9631e3b04d3f803"}}},{number:18,id:"stock/Expired/Other/Reala 500D - 8592.fbfilmneg",hash:"b5a5b1d2f15133dbbd40",sha256:"fcb024fd39012665dde3f2cedfce48fbb686863d3f4f7d02e334e3d5bfe37f88",kind:"stock",collection:"discontinued",group:"",label:"reala 500d",tables:{logc4:{hash:"b5a5b1d2f15133dbbd40-logc4",sha256:"d4b026a232a67622e5d7a75f3d71d1cfa5f890e2c5b7457bc97027e822649538"},slog3cine:{hash:"b5a5b1d2f15133dbbd40-slog3cine",sha256:"fef3e60b41ba6b7246ac4d4f6afd8f370f27e2cc8bb8000a7ea1f782b12e0311"}}},{number:19,id:"stock/Expired/Other/Plus-X - 5231.fbfilmneg",hash:"01646d0ebdea130feeb0",sha256:"95df160d3412192d6d840ae9a79008ad0880d60772a069b1a2c730886324fd63",kind:"stock",collection:"discontinued",group:"",label:"plus-x",tables:{logc4:{hash:"01646d0ebdea130feeb0-logc4",sha256:"2edfcfe37f61ecd3aa471628fc730b6bf76b7c536e346ea3680730c57f1de71f"},slog3cine:{hash:"01646d0ebdea130feeb0-slog3cine",sha256:"97476d0a31a72eb7b5f08f79100f7442f243726b16d9d3879d87c3337bd65b01"}}},{number:20,id:"stock/EktachromeCross/Default/Ektachrome.fbfilmneg",hash:"ea4a6fc70e60b72de85d",sha256:"682527e690a30717568a08b588a1ae13ec09b39b1b9c2904029cf0be0b706b3b",kind:"stock",collection:"lab process",group:"",label:"ektachrome cross process",tables:{logc4:{hash:"ea4a6fc70e60b72de85d-logc4",sha256:"6dfae05dea7b59c73ec19b73c4246fc9a1affb598eae92e207011778edf142fe"},slog3cine:{hash:"ea4a6fc70e60b72de85d-slog3cine",sha256:"b7163211d24ca6cf130b2ca23eca0bdc6f7e72784ce0d17767eca1f5a50f03c3"}}},{number:21,id:"stock/BleachBypass/Default/Bleach Bypass Full.fbfilmneg",hash:"ebf8e027214208da802d",sha256:"bc69f0ef78bba9221302f73c0dbdd956c775e40bb5aa65833159d896756ad282",kind:"stock",collection:"lab process",group:"",label:"bleach bypass full",tables:{logc4:{hash:"ebf8e027214208da802d-logc4",sha256:"e14326889b137b2cdede1ababe0bbcf41a35900ff842460b5a47ca3e75bdf92e"},slog3cine:{hash:"ebf8e027214208da802d-slog3cine",sha256:"e0909c31f58a340e1d3c2987d795f6345ffb79223bb3d032efc5c1ec30720a47"}}},{number:22,id:"stock/BleachBypass/Default/Bleach Bypass Half.fbfilmneg",hash:"33279d836190f8d0ac43",sha256:"9ae0fa355f54cc772368d28cdc1ba342388d5855297d5bcf0f6b058bbe36eb8d",kind:"stock",collection:"lab process",group:"",label:"bleach bypass 50%",tables:{logc4:{hash:"33279d836190f8d0ac43-logc4",sha256:"632993d0b36a6320172d4b19a109ce90450b8cd3d79d575850fc4e2f9af7bfef"},slog3cine:{hash:"33279d836190f8d0ac43-slog3cine",sha256:"3ff5b18d862575c8203d49a93edf04af53b4e6b56b651845e582ceb27705cbdb"}}},{number:23,id:"stock/BleachBypass/Default/Bleach Bypass 30%.fbfilmneg",hash:"362fe9e15e5b3e8a3712",sha256:"efda5afdd954b7a0dc51edbf47e7bc1c03b5f98153f947872a6ec7f111810186",kind:"stock",collection:"lab process",group:"",label:"bleach bypass 30%",tables:{logc4:{hash:"362fe9e15e5b3e8a3712-logc4",sha256:"ad78fd6b96ee1375d45dff4fc0fb6aaee067714fe0635cec7dc2c379127dddac"},slog3cine:{hash:"362fe9e15e5b3e8a3712-slog3cine",sha256:"79234637f94187208a77aa9f4d7dfe8e04b50a44cba8a6912dc4fec923e602e3"}}},{number:24,id:"stock/PhotoColor/Portrait/Pro 400H.fbfilmneg",hash:"9702f45a667b36529557",sha256:"6780a9fa3b04624eaaed4e2a9c5f55654fda4d7999663fd5c4c5b217ad90bc9b",kind:"stock",collection:"color negative",group:"portrait",label:"pro 400h",tables:{logc4:{hash:"9702f45a667b36529557-logc4",sha256:"6472860b63370f6627ca3d928b7b1089631d59a94f2ba6e912b7212c8063700a"},slog3cine:{hash:"9702f45a667b36529557-slog3cine",sha256:"db42b57a3a401eae0a994290ab77970924c3a99456c96a2c7ca2b58e7db63337"}}},{number:25,id:"stock/PhotoColor/Portrait/Portra 160.fbfilmneg",hash:"1c7192956b1166b7dc57",sha256:"8ea8c14ba4e1007883cf721af01945acc1e9b895c3d73849258f1bedbcdfbfc4",kind:"stock",collection:"color negative",group:"portrait",label:"portra 160",tables:{logc4:{hash:"1c7192956b1166b7dc57-logc4",sha256:"2128360480122aece81f0042d1d5ef7de07a4044027d5527074cb5031f6db050"},slog3cine:{hash:"1c7192956b1166b7dc57-slog3cine",sha256:"517456d35e73cbbfb680ad65c81fae66221ee1777d014f45a57d6c28caae3cf5"}}},{number:26,id:"stock/PhotoColor/Portrait/Portra 400.fbfilmneg",hash:"307d051c9f3a84b9cd47",sha256:"560a83d5a265933aab77d1834b12741d1d3602f686fcf0e26739a5abe209f1af",kind:"stock",collection:"color negative",group:"portrait",label:"portra 400",tables:{logc4:{hash:"307d051c9f3a84b9cd47-logc4",sha256:"ad235ea9c8b5d5f60756ff021d11c1bd16d3ffa9755ae4f008759dd505d315d5"},slog3cine:{hash:"307d051c9f3a84b9cd47-slog3cine",sha256:"8531cf2e1e42931ac1c46c4910fd7dc006ce6805716fa19ace268831b9070204"}}},{number:27,id:"stock/PhotoColor/Portrait/Portra 800.fbfilmneg",hash:"50617f9a14935e1dc16a",sha256:"3ae27d6e659eabc89f1eb56c7c30f6afa43dc92c9798c1edcc3eb33e3a2a2cea",kind:"stock",collection:"color negative",group:"portrait",label:"portra 800",tables:{logc4:{hash:"50617f9a14935e1dc16a-logc4",sha256:"fdabfb438877c1c24d1d837050793c34cbe8b7c32f8393e58e4d4db85642ae97"},slog3cine:{hash:"50617f9a14935e1dc16a-slog3cine",sha256:"c9478032369a0522aee17cd53c0ff411b22274fe1eae3c0fd64a8939296df373"}}},{number:28,id:"stock/PhotoColor/Classic/Superia 400.fbfilmneg",hash:"2bf389827db8fc7409b2",sha256:"e05e8b7de7e3c5b2bca868cf55f5357ba164e2a0cb92f231e1816ac78d4204d8",kind:"stock",collection:"color negative",group:"classic",label:"superia 400",tables:{logc4:{hash:"2bf389827db8fc7409b2-logc4",sha256:"58e8b1aa84365274e80a31882b4c8369b43708f38b6a1df18d286c0aedda71a0"},slog3cine:{hash:"2bf389827db8fc7409b2-slog3cine",sha256:"54a109b35168024a2e603eaf04a7bb851520e8dade1a8d0c565567df69132263"}}},{number:29,id:"stock/PhotoColor/Classic/ColorPlus 200.fbfilmneg",hash:"0bf9634cd9251686f2f1",sha256:"dd24df8d9f1b90c021fef1ad4064351a07bea394c1ae2a5f35e8d37219418400",kind:"stock",collection:"color negative",group:"classic",label:"colorplus 200",tables:{logc4:{hash:"0bf9634cd9251686f2f1-logc4",sha256:"bc9932eedc61df8af664831228dfe9217065a9f734fc99bb4097317dcec83a12"},slog3cine:{hash:"0bf9634cd9251686f2f1-slog3cine",sha256:"47f03ccdb9e440e95993f98542d3cca6e7701b51c5db807647b54dde67213ef0"}}},{number:30,id:"stock/PhotoColor/Classic/Gold 200.fbfilmneg",hash:"15f259e9968a7c0f40c5",sha256:"5639e09392aa3edc58151cab69d7371ffd38c1bccf12e808716b1ceee4583e18",kind:"stock",collection:"color negative",group:"classic",label:"gold 200",tables:{logc4:{hash:"15f259e9968a7c0f40c5-logc4",sha256:"9ada80fd0827c34c9101aea7be5305dd944afe52e824183c988f13850dc8cb1a"},slog3cine:{hash:"15f259e9968a7c0f40c5-slog3cine",sha256:"af1b22b0bdadf271477f597a5d61bdf2c54c4f5580be7b418f233beaa53ff366"}}},{number:31,id:"stock/PhotoColor/Classic/UltraMax 400.fbfilmneg",hash:"0f1546383584ffbf0c6d",sha256:"581336e3b530df7534468f4db97746b3b5cf16ff9b9ff8fce09f6f7e6bf52794",kind:"stock",collection:"color negative",group:"classic",label:"ultramax 400",tables:{logc4:{hash:"0f1546383584ffbf0c6d-logc4",sha256:"60da1e43f7c1bdd8d1960369326c788696049a206cf5105cad455aadb3784e98"},slog3cine:{hash:"0f1546383584ffbf0c6d-slog3cine",sha256:"ae9fc1afb3356465fbe7f808187dbaec1b0a80b1d2f5e9c217af09aeda8dbc2e"}}},{number:32,id:"stock/PhotoColor/Classic/Fujicolor 200.fbfilmneg",hash:"614d18ad0fa6cbb3b310",sha256:"1827564e621ab41a6cc573fbe6e8e44a506ef4f4f9f22b9858bcd2866f898f5e",kind:"stock",collection:"color negative",group:"classic",label:"fujicolor 200",tables:{logc4:{hash:"614d18ad0fa6cbb3b310-logc4",sha256:"e4e949e1e6a94238d4424b0ab66cc3f7747534a2cb37c41226b8b9b64325de4e"},slog3cine:{hash:"614d18ad0fa6cbb3b310-slog3cine",sha256:"8e0e999a508e9e7c388c3339fd36e805a8d76d0163b5f3140b713f90130407fa"}}},{number:33,id:"stock/PhotoColor/Vivid/Ektar 100.fbfilmneg",hash:"37b39e23eeed891943a2",sha256:"6d917845ad42af0069a90c9411ad92e888e801672d7808a60368177ab05004f8",kind:"stock",collection:"color negative",group:"vivid",label:"ektar 100",tables:{logc4:{hash:"37b39e23eeed891943a2-logc4",sha256:"b9e1c78fb15f5cfdae9fe3a3dd88c485e36df3a14724deb56f3c98eebb849a6e"},slog3cine:{hash:"37b39e23eeed891943a2-slog3cine",sha256:"8d0676ddc23c99cc0a709e16e8c6bfcc27084fbf15f9748674997dd9c553f23e"}}},{number:34,id:"stock/PhotoColor/Vivid/Lomo Color 100.fbfilmneg",hash:"28c58b21901ffafb8026",sha256:"18e50eb5f6e0c820be78d434776d57d29c979493d6b054298b5a856391db304d",kind:"stock",collection:"color negative",group:"vivid",label:"lomo color 100",tables:{logc4:{hash:"28c58b21901ffafb8026-logc4",sha256:"1cb3597192dc02aaeb3b6d2f18cb3053786acc7ed006854e817b155e3506975b"},slog3cine:{hash:"28c58b21901ffafb8026-slog3cine",sha256:"73c928d02509d1f1d1efab6dc32b924e0854db599c2f4d500c9f27dcb90ffb94"}}},{number:35,id:"stock/PhotoColor/Vivid/Aerocolor 100.fbfilmneg",hash:"a673d3c69731d85b86c4",sha256:"828872cf3851e56027d84381c7aebd3c4f3ec4fe6bb083e90d89ee13d8271623",kind:"stock",collection:"color negative",group:"vivid",label:"aerocolor 100",tables:{logc4:{hash:"a673d3c69731d85b86c4-logc4",sha256:"449f3b65f8618469ed9e8b2cd51e46b758e95f77d54d61742d2ce4cd61e18e54"},slog3cine:{hash:"a673d3c69731d85b86c4-slog3cine",sha256:"ef86ceab34e252299e0897b0220c5d8b7ac4f042529ad57cb8e456bae6a03c93"}}},{number:36,id:"stock/PhotoColor/Vivid/Phoenix.fbfilmneg",hash:"e7d7536754674c35aa49",sha256:"1cabbd28e88f4c8bee4e0011232d6a217c870848476c702c0518a8ac46d9682d",kind:"stock",collection:"color negative",group:"vivid",label:"phoenix",tables:{logc4:{hash:"e7d7536754674c35aa49-logc4",sha256:"f0d46d982eb5488daf6b92e3d021053466ac063cf384141bcba90790c8428715"},slog3cine:{hash:"e7d7536754674c35aa49-slog3cine",sha256:"383720b40b78db0de52b70caa7959ebdf34f2044c5017abf4e32dedacc25a161"}}},{number:37,id:"stock/PhotoColor/Cine/CineStill 800T.fbfilmneg",hash:"0b8e1ff254ee8e2a45c1",sha256:"6732af8710649bb4887110caa4fe552e83fa61dc4a1b1e19a7794181416b0f1a",kind:"stock",collection:"color negative",group:"cinestill",label:"cinestill 800t",tables:{logc4:{hash:"0b8e1ff254ee8e2a45c1-logc4",sha256:"77ff93b03b695ab2dc588605cbe41604a7a7deaaa85b6b1c53eead74dd535f70"},slog3cine:{hash:"0b8e1ff254ee8e2a45c1-slog3cine",sha256:"fa7bc0eef6a4b68c3c76ca17fbd5d117be5134f4d3eea9f148af0162b2855368"}}},{number:38,id:"stock/PhotoColor/Cine/CineStill 400D.fbfilmneg",hash:"069f33c0011b2c68718a",sha256:"b451c0a3f32b7d32ef409cffb511db023223beb602a60e6a6caff1c4ac1ea490",kind:"stock",collection:"color negative",group:"cinestill",label:"cinestill 400d",tables:{logc4:{hash:"069f33c0011b2c68718a-logc4",sha256:"63ee60ec1749e781785b679b33986c0be287b2198980bef946dfc6c5389dede8"},slog3cine:{hash:"069f33c0011b2c68718a-slog3cine",sha256:"2de7348f29263ba2428789a421cc9fd1cf6e4ab9ca381bde0c2d69981c45acc0"}}},{number:39,id:"stock/PhotoColor/Cine/CineStill 50D.fbfilmneg",hash:"8cf8926463e3e909a835",sha256:"a681cd2f758ec66171a0b8494ed4f5d496599e69da7cc49103868efbf806113a",kind:"stock",collection:"color negative",group:"cinestill",label:"cinestill 50d",tables:{logc4:{hash:"8cf8926463e3e909a835-logc4",sha256:"ee105a5a5cfbef1a10b065092ffd630b764067e70a0548866a7d0cefdf06aa7c"},slog3cine:{hash:"8cf8926463e3e909a835-slog3cine",sha256:"1fb2f9bc4aa487e0575637b005b685f0d87ab3a6a1e16d1491b284bd50f8863f"}}},{number:40,id:"stock/PhotoColor/Stylized/Ektachrome C41.fbfilmneg",hash:"b0402bf8f5591e219177",sha256:"2616ac31325d743c0212edfe81fe01ffb61a173db393baacfc7ef4053ffdafa9",kind:"stock",collection:"color negative",group:"specialty",label:"ektachrome c41",tables:{logc4:{hash:"b0402bf8f5591e219177-logc4",sha256:"94e041fb3c7face91aa01f3601c4996dc9fe57284f1af3b3014bfc2eff46871e"},slog3cine:{hash:"b0402bf8f5591e219177-slog3cine",sha256:"3fa275094cf2349b51351e1393dd1a1ceb87304fc2715e3044c7c4f1604d2d39"}}},{number:41,id:"stock/PhotoColor/Stylized/Purple XR.fbfilmneg",hash:"fc75a210efb408479f7c",sha256:"025d1a543fe3bb58ea9488ca0504bb544ec4af55769066a5b06979ddd5e5ec7e",kind:"stock",collection:"color negative",group:"specialty",label:"purple xr",tables:{logc4:{hash:"fc75a210efb408479f7c-logc4",sha256:"373e08ba3c2af5e8a850f8430fc2f91656df2981e20423a2f27e3635a7fdb6c3"},slog3cine:{hash:"fc75a210efb408479f7c-slog3cine",sha256:"f0b5ebcac3206c4235e45be5eeef099cf1e61edca8b809dfce6d18cbcc3a604f"}}},{number:42,id:"stock/PhotoColor/Stylized/Redscale XR.fbfilmneg",hash:"b478a4b37293e1cd7271",sha256:"78230c65977e7415c914caa1c4f3196b08f8d82be4d45502a31092e1067dd471",kind:"stock",collection:"color negative",group:"specialty",label:"redscale xr",tables:{logc4:{hash:"b478a4b37293e1cd7271-logc4",sha256:"8a362587350be2f87f777449fd44816a64f5a5866236b8f1919a9e685270ac36"},slog3cine:{hash:"b478a4b37293e1cd7271-slog3cine",sha256:"8cd5ce8f841f901d50b87fde5588fe1c151da5ce7381810b5ea4a382745f2551"}}},{number:43,id:"stock/PhotoColor/Stylized/XP2 400.fbfilmneg",hash:"21bc8e616c71bdd3dc26",sha256:"c44c6b2fdd8c6cbeca0c2793d70c07ae2edad1468d548787a1a45f673009eaf6",kind:"stock",collection:"color negative",group:"specialty",label:"xp2 400",tables:{logc4:{hash:"21bc8e616c71bdd3dc26-logc4",sha256:"fa2466898ff33948a53624f5b3124f810abf8d3dddb6e2c9f406820150b80453"},slog3cine:{hash:"21bc8e616c71bdd3dc26-slog3cine",sha256:"3ee1772a45afd64c91e07ee378ce0c5ea8c48036a50d87e5579e84a696123e0f"}}},{number:44,id:"stock/PhotoBW/Classic/HP5 400.fbfilmneg",hash:"14cf96e62ee81f239566",sha256:"be24f71bb06129ab0553cc70b9831b7b16311576d26d6fe26d3b5b3a68d132d7",kind:"stock",collection:"black and white negative",group:"classic",label:"hp5 400",tables:{logc4:{hash:"14cf96e62ee81f239566-logc4",sha256:"a73c789501877a27a9c0ed42a62b1f5a1b40fea3bb8e0829bef5419429457642"},slog3cine:{hash:"14cf96e62ee81f239566-slog3cine",sha256:"b66dcb2d948d919eb31d58a5b0de1a9388fbc5d774261ba051b33110b6143b6e"}}},{number:45,id:"stock/PhotoBW/Classic/Delta 400.fbfilmneg",hash:"7f87b4fbfed571ae7362",sha256:"03fc29256153562a77243787c8220b7454a97b2c4f528cd81d64fc6570a9dd80",kind:"stock",collection:"black and white negative",group:"classic",label:"delta 400",tables:{logc4:{hash:"7f87b4fbfed571ae7362-logc4",sha256:"c7588b4c108a6bd168f8f0dffdf4ff408b7b9d090f12ee305cfd982c9da9f5c7"},slog3cine:{hash:"7f87b4fbfed571ae7362-slog3cine",sha256:"fee7f970c5d007acd33b3cdf5bb909d3da1f9edd144ff7bff70d42d742345091"}}},{number:46,id:"stock/PhotoBW/Classic/T-MAX 400.fbfilmneg",hash:"f5ba00a6e5039e797f4c",sha256:"28a7a45815962a43997cd77ccbde1322f75c30d4727cda74f8e20cadeb10e97d",kind:"stock",collection:"black and white negative",group:"classic",label:"t-max 400",tables:{logc4:{hash:"f5ba00a6e5039e797f4c-logc4",sha256:"d43d7aee516569f54c5853ea6af6d27604ee107f9368af389a1e41edf81d5ea8"},slog3cine:{hash:"f5ba00a6e5039e797f4c-slog3cine",sha256:"5122aaa711ed16d99d904173cb7489fe5dd10af2cd98eee8e719206d5cd0ef84"}}},{number:47,id:"stock/PhotoBW/Classic/Tri-X 400.fbfilmneg",hash:"ed440fc1337cdfdc86e3",sha256:"55702591f916cec4bc2ca90a76a52996eae449b84937f161f7f91080d311223c",kind:"stock",collection:"black and white negative",group:"classic",label:"tri-x 400",tables:{logc4:{hash:"ed440fc1337cdfdc86e3-logc4",sha256:"cbbc87cc7829d04d00b60a75bbbff66226c2051f2746b83e72c4cc6f33fa2044"},slog3cine:{hash:"ed440fc1337cdfdc86e3-slog3cine",sha256:"66a7e7fb3649918dd77492369ed5f657bb8ca35e50ddfdf4efab0e930f83e166"}}},{number:48,id:"stock/PhotoBW/Retro/Fomapan 400.fbfilmneg",hash:"0bb5ef0935f2d6fb31d2",sha256:"fbc0c0e6db037c58b7dd5cd52c4836c1fb7bd9ccd77293dc9d49c30fc69a8e9a",kind:"stock",collection:"black and white negative",group:"retro",label:"fomapan 400",tables:{logc4:{hash:"0bb5ef0935f2d6fb31d2-logc4",sha256:"b9989889e9be17ad1619acfa68d0fe2e2d90a727123b825d074e57c8918f5686"},slog3cine:{hash:"0bb5ef0935f2d6fb31d2-slog3cine",sha256:"b5f49e0a48f59512a50ec7db512f164dc5667b96b3598cb8a4f561ed1da0dbe7"}}},{number:49,id:"stock/PhotoBW/High ISO/T-MAX 3200.fbfilmneg",hash:"1571a8b82ac80b2bf7ff",sha256:"95da1d2edddf50bc8698b09f212c19c297cf36a8304e7c90c9e2be85f2cce8bd",kind:"stock",collection:"black and white negative",group:"fast",label:"t-max 3200",tables:{logc4:{hash:"1571a8b82ac80b2bf7ff-logc4",sha256:"ecfbbd8b79983078cb853574b9264597bd2f7cc8f446ab8a4507ce5aadaa9095"},slog3cine:{hash:"1571a8b82ac80b2bf7ff-slog3cine",sha256:"de9fe45107208cf18db3108470b81e74c06354dac0db624066800e06af3aea4f"}}},{number:50,id:"stock/PhotoBW/High ISO/Delta 3200.fbfilmneg",hash:"4c340b0c7f42d917e66f",sha256:"8295d557f4e4eca9711e21334b83fde2b4b03a2765d1ef23309b6f2a7917a917",kind:"stock",collection:"black and white negative",group:"fast",label:"delta 3200",tables:{logc4:{hash:"4c340b0c7f42d917e66f-logc4",sha256:"0450330fe2cf6c85bbb22d5e6d4dea923219a91f8a753317f6f3e234e22dcaa3"},slog3cine:{hash:"4c340b0c7f42d917e66f-slog3cine",sha256:"17282b8d8c236a0bcca6d948c0bb211bb4c257a1913201da10283bc179224765"}}},{number:51,id:"stock/PhotoBW/Low ISO/Acros 100II.fbfilmneg",hash:"cbd839be59a0a508fb8f",sha256:"cb63d53e511569b86600a08053f0dbf503e0a6d8fd2deeb59d4298e5af96cc1e",kind:"stock",collection:"black and white negative",group:"slow",label:"acros 100ii",tables:{logc4:{hash:"cbd839be59a0a508fb8f-logc4",sha256:"9e7612d978dcf69f0b8f516c792da24417d32db52f421c7477caaf69bbbfeded"},slog3cine:{hash:"cbd839be59a0a508fb8f-slog3cine",sha256:"4cc57b907828362c0bb59e93660e234318c329e7b831d2f0016ac381397b4324"}}},{number:52,id:"stock/PhotoBW/Low ISO/FP4 125.fbfilmneg",hash:"ec4978838b35b503bf0c",sha256:"6e65df53d13f683fbd1fe2c48039252a3b3f6e6175c2155d4ad69f809bf7bfd9",kind:"stock",collection:"black and white negative",group:"slow",label:"fp4 125",tables:{logc4:{hash:"ec4978838b35b503bf0c-logc4",sha256:"f10003f5126bac5ae8275a9934c6a19b2ddd8c6de9513006a23456cf32f21d2a"},slog3cine:{hash:"ec4978838b35b503bf0c-slog3cine",sha256:"61fcceebd980eff5fc7bc5230d19a3d29bc2c987d3b109099d3231d71b6f512e"}}},{number:53,id:"stock/PhotoBW/Low ISO/T-MAX 100.fbfilmneg",hash:"8d4afdf51b4abcc95c69",sha256:"458146bb6a8bf7f0ecec71d28f9254c726560f88e9eca53efaa66cecc900d265",kind:"stock",collection:"black and white negative",group:"slow",label:"t-max 100",tables:{logc4:{hash:"8d4afdf51b4abcc95c69-logc4",sha256:"20196bd247cfab9f9e6d9cbb79972650ecfe439fe8de0c08bea56834a7a6f785"},slog3cine:{hash:"8d4afdf51b4abcc95c69-slog3cine",sha256:"1cec3a29383a51b914827634cb7265b1f3cb5a654750df1c4fdecea773efc1f4"}}},{number:54,id:"stock/PhotoBW/Low ISO/PanF 50.fbfilmneg",hash:"d66760fc9df2eef31948",sha256:"435301549b1f67756fb5c199ba433d103bed9a255c19f9dac95a17658539e522",kind:"stock",collection:"black and white negative",group:"slow",label:"pan f 50",tables:{logc4:{hash:"d66760fc9df2eef31948-logc4",sha256:"090407f5d39f3a275a89503aaedaa155061381de63b57041fcfe113216178421"},slog3cine:{hash:"d66760fc9df2eef31948-slog3cine",sha256:"c42f69cb8d6989255ffbefc2df46e583aeedf5105af77f2a226ca458864c6ec3"}}},{number:55,id:"stock/PhotoBW/Low ISO/CineStill XX 250.fbfilmneg",hash:"93509be7dd8e65c2b385",sha256:"57a95c33826127d995ae1789952dc5c5a7089e69f2f36e429a70e6712e27da56",kind:"stock",collection:"black and white negative",group:"slow",label:"cinestill xx 250",tables:{logc4:{hash:"93509be7dd8e65c2b385-logc4",sha256:"b2ea65f23778b570d8e6db3ec96f3a17184d3b38fc2e1f12932c1ca543bafff4"},slog3cine:{hash:"93509be7dd8e65c2b385-slog3cine",sha256:"8d5af6e18b8fc41c298a12b43e721a3c3a1a6520ae9d7cf4b60f14c2b362aefa"}}},{number:56,id:"stock/PhotoBW/High Contrast/Delta 100.fbfilmneg",hash:"830844c886c0e9bf833d",sha256:"721afdd1bc074111c6ddbde9347bd3698d73046d74613323b6895614f4b5d66b",kind:"stock",collection:"black and white negative",group:"high contrast",label:"delta 100",tables:{logc4:{hash:"830844c886c0e9bf833d-logc4",sha256:"d445ef21910889ab36db1313cd5ea4773b735af0e4d129508734db6b9ab7bff6"},slog3cine:{hash:"830844c886c0e9bf833d-slog3cine",sha256:"c59104a255b7ad0b10756f31af9126792a5add203eeca0fcbd63cfa82678d001"}}},{number:57,id:"stock/PhotoBW/High Contrast/Ortho 80.fbfilmneg",hash:"fe924a23dc3c01cfbfa3",sha256:"d91a0999eb4aa341c152ad989ef7979cefba4276f0436cea63bf9a55496b6373",kind:"stock",collection:"black and white negative",group:"high contrast",label:"ortho 80",tables:{logc4:{hash:"fe924a23dc3c01cfbfa3-logc4",sha256:"bba5d2a83f2e7cf0bd9da591b3f594deacb12931bab92ea227db66c72f294aed"},slog3cine:{hash:"fe924a23dc3c01cfbfa3-slog3cine",sha256:"6e3120cf56a56b1978087eb29c15c815b30ee33f30bb6a9a6744bb04bd7ac708"}}},{number:58,id:"stock/PhotoBW/High Contrast/Monolit 3 (Ortho).fbfilmneg",hash:"0b3664d1c804807a2a86",sha256:"7328dc985f64a6280d70fea7a5e0e22a0dd0ad68218ac718ca4c59bf8d5c255a",kind:"stock",collection:"black and white negative",group:"high contrast",label:"monolit 3 ortho",tables:{logc4:{hash:"0b3664d1c804807a2a86-logc4",sha256:"ed98e07b03d98df513a38c9067fa5107c3f3a21e203ded87dc80b21d31667436"},slog3cine:{hash:"0b3664d1c804807a2a86-slog3cine",sha256:"abd8e16c295a571af61aa564c0b728041019059fba49a7066168af98c327c9db"}}},{number:59,id:"stock/PhotoReversal/Default/Ektachrome 100.fbfilmneg",hash:"df3fa738d2990c6895ac",sha256:"2d647cace6241dacda9262c2218bdd5b5b6f4f2508836c80d3a308e903ce3d30",kind:"stock",collection:"slide film",group:"",label:"ektachrome 100",tables:{logc4:{hash:"df3fa738d2990c6895ac-logc4",sha256:"defbdaaacbb12f107c2b23f0cc65900d160279c71c7433a8dd34aeccad778ac2"},slog3cine:{hash:"df3fa738d2990c6895ac-slog3cine",sha256:"87b4b1ad94a2b321c6fe297f788515ede8171b72d76d43b0eef31f089e699e59"}}},{number:60,id:"stock/PhotoReversal/Default/Velvia 100.fbfilmneg",hash:"6c8e2ae3d5460b683667",sha256:"ccc8c446c5bc5eb0cb85520a7cbe1cb9678c374ebfc19f1ebdd23f13f145e300",kind:"stock",collection:"slide film",group:"",label:"velvia 100",tables:{logc4:{hash:"6c8e2ae3d5460b683667-logc4",sha256:"0fbac2290d9968b5365e898404ba826cebb5a7f49aa64f52d347273300fc8b60"},slog3cine:{hash:"6c8e2ae3d5460b683667-slog3cine",sha256:"dbb272749e76e10f541f9e20b42103e9d4f46d1ac3ec959b71781379ddeea1d9"}}},{number:61,id:"stock/PhotoReversal/Default/Velvia 50.fbfilmneg",hash:"7be6303ad7f58d4d373e",sha256:"d11507543860e9a75a293a85b254926467dd811359081893fab78726aa776f0c",kind:"stock",collection:"slide film",group:"",label:"velvia 50",tables:{logc4:{hash:"7be6303ad7f58d4d373e-logc4",sha256:"b31c4bd661051c1ef4a3bd063e29b4256617348dc3f9abb11840b311ea98b9e7"},slog3cine:{hash:"7be6303ad7f58d4d373e-slog3cine",sha256:"3834b7ef7f8a2db7c05c073aaa17e2f3d39d3d1d0a5fd84485f095070a8b138a"}}},{number:62,id:"stock/PhotoReversal/Default/Provia 100F.fbfilmneg",hash:"0b0c68912f7e500ce1f6",sha256:"63fa05e22bfc0b51e740072761a34474310105f4835dfe5bbc63a5e9dd67545c",kind:"stock",collection:"slide film",group:"",label:"provia 100f",tables:{logc4:{hash:"0b0c68912f7e500ce1f6-logc4",sha256:"ad2d4366ff909654c74f87ae53e6d3cd12b2cbd46b0a9aea5289769f361ea3bd"},slog3cine:{hash:"0b0c68912f7e500ce1f6-slog3cine",sha256:"ed523ed814a280e7b8a6bfd847a020c5e94a2788727ec4915186feb8c3d838d7"}}},{number:63,id:"stock/PhotoReversal/Default/Instax Color.fbfilmneg",hash:"3ccea9e523a25f683011",sha256:"96c7c5ade8b9e41303353903a31aceebc3ba0106d53e1c33d5caace2a8faf2b4",kind:"stock",collection:"slide film",group:"",label:"instax color",tables:{logc4:{hash:"3ccea9e523a25f683011-logc4",sha256:"3f698af32a6f5159cdc7b0e474d6f21fbb8d82d3cec9cd1d88e46e72d2343874"},slog3cine:{hash:"3ccea9e523a25f683011-slog3cine",sha256:"7485f4e2117bf608fb7486669abeef80fd82e69cc2655ef44bcbfe77ee3e6e30"}}},{number:64,id:"stock/PhotoReversal/Default/Instax Monochrome.fbfilmneg",hash:"91377ee33a6217f78b21",sha256:"39b20deccce70a71aef34b6c8bab022ab65434f4930b75ce8567ed20552c1195",kind:"stock",collection:"slide film",group:"",label:"instax monochrome",tables:{logc4:{hash:"91377ee33a6217f78b21-logc4",sha256:"0fbdb7ba979642d8120d1e128be595ea324f76b21dc94b41cab5b965e9da9129"},slog3cine:{hash:"91377ee33a6217f78b21-slog3cine",sha256:"2089188df2505e26533408861d2d318ad24e27551d183d7dba98f8ec3e00637f"}}},{number:65,id:"look/1 Clean & Commercial/video.fblook",hash:"d5f23a096058cd3cc682",sha256:"0fb2859c9d4aa45886725e7851e5187080db2198da76ec44a9ebd7935a24c922",kind:"look",collection:"commercial",group:"",label:"broadcast",tables:{logc4:{hash:"d5f23a096058cd3cc682-logc4",sha256:"6447fc2fcef830696e8eb869ad90b5da0b8c23b22144b8917c1f72899f985d13"},slog3cine:{hash:"d5f23a096058cd3cc682-slog3cine",sha256:"88efe861f730a7fe3f6ce3d7a4336e48b82ba1a341353952341fdfbb2677a42b"}}},{number:66,id:"look/1 Clean & Commercial/cine_like.fblook",hash:"b994bde23b45792033f2",sha256:"ce975f810fa67de34197725a0abad1935a19849296249a9262f0050dd60aca63",kind:"look",collection:"commercial",group:"",label:"cinema",tables:{logc4:{hash:"b994bde23b45792033f2-logc4",sha256:"68ff591cd0efd313885e8c1d8e16b7ce7d46f0957fe407c85a24145bafd186a2"},slog3cine:{hash:"b994bde23b45792033f2-slog3cine",sha256:"d04a7968a97932f4b5d232ba4e87bbc1e075d0438332f545af1a4cc9b9607d6c"}}},{number:67,id:"look/1 Clean & Commercial/telecine_like.fblook",hash:"dafa166447af00368af8",sha256:"a614e60718037a3fa7cab21d0663e54f31480f9339a985361c8f83429ea68fa4",kind:"look",collection:"commercial",group:"",label:"dailies",tables:{logc4:{hash:"dafa166447af00368af8-logc4",sha256:"e2d76bccaf1e8873819e497dcd31c59f13d3b6b779b55b38837b8515008f05e3"},slog3cine:{hash:"dafa166447af00368af8-slog3cine",sha256:"3bccc724b7bfb1f59556d161a5617d8d6c1212e52a0af36bf1ce64d2e13c97af"}}},{number:68,id:"look/1 Clean & Commercial/cine_like_beauty.fblook",hash:"664dcc1e5ff63b7a3602",sha256:"c69f05c7774dc8e22db7741a4cae19ada672e656550e014c3c5bd3f8dc5bfae2",kind:"look",collection:"commercial",group:"",label:"beauty",tables:{logc4:{hash:"664dcc1e5ff63b7a3602-logc4",sha256:"98af8cf53cb5d5b5d16b42aef52017c99fe7fa7d15d9bfad5015a7c873243604"},slog3cine:{hash:"664dcc1e5ff63b7a3602-slog3cine",sha256:"1c2000e5567bdb056274ef81e6f3103e9adc58027f37d7cc1e8a1c8202ecfa9f"}}},{number:69,id:"look/1 Clean & Commercial/cine_like_pop.fblook",hash:"d32059d2b20806c100ce",sha256:"043cb70e56bd75c87f074568d5da9c04f8641d8e79dbd5a3a0dd3bc6d4d65eea",kind:"look",collection:"commercial",group:"",label:"product",tables:{logc4:{hash:"d32059d2b20806c100ce-logc4",sha256:"606f83ad1ac58d3196c3755398f5dff0f47b5ce71fd62cd0811120707a72d9be"},slog3cine:{hash:"d32059d2b20806c100ce-slog3cine",sha256:"388e426bcea5c52d46e99ccdaa511c1d19700034069f00d43968c554b9241e3e"}}},{number:70,id:"look/1 Clean & Commercial/photo_like_pop.fblook",hash:"ec965532f423dcebf743",sha256:"0fbac8c797145f6d06ccca198be486aac883b0528dd46b46352e62351ef6b651",kind:"look",collection:"commercial",group:"",label:"packshot",tables:{logc4:{hash:"ec965532f423dcebf743-logc4",sha256:"d501699d3776a72addaff1f3e9d86b2ae29348674ce6d1aa7d2a3e6d7068d9f2"},slog3cine:{hash:"ec965532f423dcebf743-slog3cine",sha256:"c3b4759c95b26e0d98646a9a89400cac757f3e35fe4bfe4049b7e489860845a3"}}},{number:71,id:"look/2 Idealized 35mm/standard.fblook",hash:"7a74db9c3c4b3bb33627",sha256:"20059ea05ff21a9f8a1c3443d49b1a817308d6832803d052d74bbe89b8ffd811",kind:"look",collection:"35mm negative",group:"",label:"standard",tables:{logc4:{hash:"7a74db9c3c4b3bb33627-logc4",sha256:"a6c0a44e2b3f33ad0a76eff8fb4f7d434eeecf55fe45cfb4be426808e17eb62f"},slog3cine:{hash:"7a74db9c3c4b3bb33627-slog3cine",sha256:"01aec00b6c2e7b4e9acedcb9ba7f07f314739601aa435b261c394a3324f99daf"}}},{number:72,id:"look/2 Idealized 35mm/extended.fblook",hash:"8620eb33a2388c072557",sha256:"2e606fb12130af9ac49336fd83bbf123577ad3683dc2a7cebf3ca5abf24fb772",kind:"look",collection:"35mm negative",group:"",label:"latitude",tables:{logc4:{hash:"8620eb33a2388c072557-logc4",sha256:"2fbac3933b5214d5aa38034c2767a4a7162ee97ea8abc6798b58b000a3deac4e"},slog3cine:{hash:"8620eb33a2388c072557-slog3cine",sha256:"eebf4d3d7cd0bdd1dce965fe7da02c685a7c888aa86b4451ad87c93def7eabab"}}},{number:73,id:"look/2 Idealized 35mm/rich.fblook",hash:"4da55be1202c100cd58d",sha256:"b2bb8f07d3541ea7172f6fac5bbfbe12f0e041599a7d64f802365589f8f7f102",kind:"look",collection:"35mm negative",group:"",label:"dense",tables:{logc4:{hash:"4da55be1202c100cd58d-logc4",sha256:"e5f97cc9c7ece67fdf8f103dbe95cc0e1bcff44d1abeb9d914dd2a3246d4f4c0"},slog3cine:{hash:"4da55be1202c100cd58d-slog3cine",sha256:"cbf5d14eee61c9585d949face1c2b1da282cffa66c60b075db1f65d155145d70"}}},{number:74,id:"look/2 Idealized 35mm/neutral.fblook",hash:"4b71ed8e0c53638831fd",sha256:"03fc174fbe34b4d9bbc0896db235c507800711bab17d1a06bea486d13543cfe1",kind:"look",collection:"35mm negative",group:"",label:"neutral",tables:{logc4:{hash:"4b71ed8e0c53638831fd-logc4",sha256:"4a5bc48f0bb70e2caac2ac9bdf037fae731adf2358f9eb87fb5e87274f40d8ab"},slog3cine:{hash:"4b71ed8e0c53638831fd-slog3cine",sha256:"11fd83e422bf130962551bbdc137514cbf94c6fdbefbdb71e8320e9f4455b7ef"}}},{number:75,id:"look/2 Idealized 35mm/proimage.fblook",hash:"de8ad75a1a2cae5af794",sha256:"9d40662d863b147c16b765ce344dfd9ef30b3535ecdee46fb805980764761d0e",kind:"look",collection:"35mm negative",group:"",label:"restrained",tables:{logc4:{hash:"de8ad75a1a2cae5af794-logc4",sha256:"5e78226b6e20d0f3ca3232f071bae57a76d1fdaf5ece3637a4849b6ff3a15d3a"},slog3cine:{hash:"de8ad75a1a2cae5af794-slog3cine",sha256:"fd141039022eaf0680870df7977f2f2f2ca708a00a1bbec37eee5525859b4772"}}},{number:76,id:"look/2 Idealized 35mm/reversal.fblook",hash:"1b5ef1413df1448377a5",sha256:"085c64e8656bdc72f6df3ea87cbdc3cecad5ea2822ef7bdbf785f1a0b5ec6af4",kind:"look",collection:"35mm negative",group:"",label:"reversal",tables:{logc4:{hash:"1b5ef1413df1448377a5-logc4",sha256:"26f045fe3350c28e5c869318e05a08fbad34d254cfd01e6a43c58590a387cca7"},slog3cine:{hash:"1b5ef1413df1448377a5-slog3cine",sha256:"3e7bdda5552525ff585f6485161d735b87669d2a7b51dfaa9ce45fc65bbe05fe"}}},{number:77,id:"look/3 Full 35mm/full.fblook",hash:"bde7a8dae9f0029c08a7",sha256:"7a1ed86c0b48c9eab14cdc78864380c11ee7d80d2e7520748cd64fdccd18d922",kind:"look",collection:"35mm print",group:"",label:"answer print",tables:{logc4:{hash:"bde7a8dae9f0029c08a7-logc4",sha256:"35b0e18b70d51fc7ef711d579daa41ba089d46e017e144d2ff2d0a4ac50fe875"},slog3cine:{hash:"bde7a8dae9f0029c08a7-slog3cine",sha256:"616e96e27643fd36122aa01a598ba703ed4dda1a27b6c5336d93e12516600e55"}}},{number:78,id:"look/3 Full 35mm/telecine.fblook",hash:"e3069ca7edaf6e8a6871",sha256:"d4c1cc26898c7fb3a28d4c9f309ae77a86c2b0690c1abaf1abbcdfc2cf0bd656",kind:"look",collection:"35mm print",group:"",label:"telecine",tables:{logc4:{hash:"e3069ca7edaf6e8a6871-logc4",sha256:"047c850627c7b61646557dce1e1b3a9bf0b98a2da844d2bd7e57127e4feed76a"},slog3cine:{hash:"e3069ca7edaf6e8a6871-slog3cine",sha256:"f6f0ac7f8fe900484f598e803a6a6f88da6705f747a426552aba5a11a9edb59c"}}},{number:79,id:"look/3 Full 35mm/tungsten.fblook",hash:"793e629dd23f07625a52",sha256:"ae60b8cdbefcd0b6809e89c6267f42dda5354b919f434c16d5603859e07a94b5",kind:"look",collection:"35mm print",group:"",label:"tungsten",tables:{logc4:{hash:"793e629dd23f07625a52-logc4",sha256:"f12a449cf02d547d67b7ce97dc5a54848dd70dd4fcb2f8989fe66536dc492b5f"},slog3cine:{hash:"793e629dd23f07625a52-slog3cine",sha256:"e9935030e4d08ee0756c8415473486069edbf270278fcc58373f67cc46734488"}}},{number:80,id:"look/3 Full 35mm/warm.fblook",hash:"d1afcf1071126af0ea36",sha256:"4f3d64b8f49481c34c6d75eda843a0966b6d4bfd20fe12456aba81553def5b93",kind:"look",collection:"35mm print",group:"",label:"warm print",tables:{logc4:{hash:"d1afcf1071126af0ea36-logc4",sha256:"c6d6605131784961e58a035a50cb62d45a4fdc1ae3fb1cb14123f73caa20be86"},slog3cine:{hash:"d1afcf1071126af0ea36-slog3cine",sha256:"a4661000ab05dbe7c124e8708eea42158a1fe09eb2920c9d03f91a82c9ebf8fe"}}},{number:81,id:"look/3 Full 35mm/bleach.fblook",hash:"e332d3996f57fbaae72b",sha256:"a7c9159808c235f331dd44d6dbce638ae5000c4605de0413f316f1918b8ca602",kind:"look",collection:"35mm print",group:"",label:"silver retention",tables:{logc4:{hash:"e332d3996f57fbaae72b-logc4",sha256:"57d4e5e0b52bd2e219bac8e02a503eda4f3b000c9c793a70bad2dad48ac2350a"},slog3cine:{hash:"e332d3996f57fbaae72b-slog3cine",sha256:"db5735b664e15cfbdfda63b0773008d11f170394fc0538cad450ce2398eb3a9b"}}},{number:82,id:"look/3 Full 35mm/chill.fblook",hash:"ea2011e1dd170763346c",sha256:"1f852c23916f35a53101922aa97bf1496a7bbf497227dd5adaa05041686e3c5f",kind:"look",collection:"35mm print",group:"",label:"cool print",tables:{logc4:{hash:"ea2011e1dd170763346c-logc4",sha256:"11a174a275ba60484b3cf46912331b861c8299e8418e727c709c96cddf9ef9a4"},slog3cine:{hash:"ea2011e1dd170763346c-slog3cine",sha256:"8007cf44ab45aab5de5a9c00d605b540c71fcdf0bf544b312011885c012072a5"}}},{number:83,id:"look/4 16mm/standard_16mm.fblook",hash:"c925caba596086362636",sha256:"20059ea05ff21a9f8a1c3443d49b1a817308d6832803d052d74bbe89b8ffd811",kind:"look",collection:"16mm",group:"",label:"documentary",tables:{logc4:{hash:"c925caba596086362636-logc4",sha256:"a6c0a44e2b3f33ad0a76eff8fb4f7d434eeecf55fe45cfb4be426808e17eb62f"},slog3cine:{hash:"c925caba596086362636-slog3cine",sha256:"01aec00b6c2e7b4e9acedcb9ba7f07f314739601aa435b261c394a3324f99daf"}}},{number:84,id:"look/4 16mm/spicy.fblook",hash:"96722d8fea88d16f44e6",sha256:"cf977b4ad1d284d543a620a06a948bbf3c18e9c1a422a51212f5450806526ece",kind:"look",collection:"16mm",group:"",label:"saturated",tables:{logc4:{hash:"96722d8fea88d16f44e6-logc4",sha256:"569ac53061295652bc0ffb15470b11bdaa2d451461bde0dd49c43f4e0c95ed8f"},slog3cine:{hash:"96722d8fea88d16f44e6-slog3cine",sha256:"38325af0627c9b6b488e0989204f93942bf24361370422cda84fde669b3ec8c6"}}},{number:85,id:"look/4 16mm/notmoonlight.fblook",hash:"1bc5b2876e983f9abd58",sha256:"c8154c6b3299af6b4b8f6250a39b7baf80f8c20ef462086272a05a41fdc12ca2",kind:"look",collection:"16mm",group:"",label:"day for night",tables:{logc4:{hash:"1bc5b2876e983f9abd58-logc4",sha256:"55450587e41a53b2fbfd9ee6e0f55ae423d8b03b7567e34edac9df209bcb134d"},slog3cine:{hash:"1bc5b2876e983f9abd58-slog3cine",sha256:"595c89c6617ecd8152aeb0584339cd3f66a8c454491c8b2f96c6760423a947de"}}},{number:86,id:"look/4 16mm/flat scan.fblook",hash:"6bbded22dcdba51d1da0",sha256:"de67d8f582c5f011b459b592d9312cb9c4036b71774edecbe2023a9fbd2925e0",kind:"look",collection:"16mm",group:"",label:"flat scan",tables:{logc4:{hash:"6bbded22dcdba51d1da0-logc4",sha256:"072fb36276368fabb7128af202c5b0657a40ce7be32efd5c2f8eb03cfa0bd64d"},slog3cine:{hash:"6bbded22dcdba51d1da0-slog3cine",sha256:"ca084c654162c9b8588cfe1bae67c62c07875215fc91e4e71840f9956a468165"}}},{number:87,id:"look/4 16mm/indie scan.fblook",hash:"4dc360d9777f84b038c7",sha256:"d3c645f393e5f63812b8067fbfe5dcd032ec71b051ab9a255371ee0c877e2e86",kind:"look",collection:"16mm",group:"",label:"indie",tables:{logc4:{hash:"4dc360d9777f84b038c7-logc4",sha256:"5ded82c763469d7cd28af7e6f4f0c64a28869f6f119bd8fcc51fc09a1a89765c"},slog3cine:{hash:"4dc360d9777f84b038c7-slog3cine",sha256:"ce5c2e35d511c2d76416540bd997bdf99ac45e7f59a2bdd808026718244ac97a"}}},{number:88,id:"look/4 16mm/scrubs.fblook",hash:"354181100a0eb296a46f",sha256:"28a392ffe91ed0e6f87daee6b3c177d4b6b3a3442705023db0b88ddefe634062",kind:"look",collection:"16mm",group:"",label:"tape transfer",tables:{logc4:{hash:"354181100a0eb296a46f-logc4",sha256:"7955fc62f1b935b7b931a7cc1e7e45f18390bb5c9a8319e4cf6d41555f013130"},slog3cine:{hash:"354181100a0eb296a46f-slog3cine",sha256:"00e458e1de34b8270dabbaa6011b4e665264fa174ad4bdbcd62463467140ad55"}}},{number:89,id:"look/5 8mm/typical.fblook",hash:"1748cb5dba4ee4b6cf14",sha256:"20059ea05ff21a9f8a1c3443d49b1a817308d6832803d052d74bbe89b8ffd811",kind:"look",collection:"super 8",group:"",label:"home movie",tables:{logc4:{hash:"1748cb5dba4ee4b6cf14-logc4",sha256:"a6c0a44e2b3f33ad0a76eff8fb4f7d434eeecf55fe45cfb4be426808e17eb62f"},slog3cine:{hash:"1748cb5dba4ee4b6cf14-slog3cine",sha256:"01aec00b6c2e7b4e9acedcb9ba7f07f314739601aa435b261c394a3324f99daf"}}},{number:90,id:"look/5 8mm/lifted.fblook",hash:"07093d8ade0bf83ababf",sha256:"c8b4ba2c0b9d40400832dc2ea15fad3d6c59f460760fb06ca1c7dfb423baaa2b",kind:"look",collection:"super 8",group:"",label:"projected",tables:{logc4:{hash:"07093d8ade0bf83ababf-logc4",sha256:"1e8e4bd55dad23965b66280ae930f5746a04e8f4e0a2927886deef72223a878f"},slog3cine:{hash:"07093d8ade0bf83ababf-slog3cine",sha256:"c368965baa62e868b97def41776a4d59f9f9c6e91aae6f7314de479123daae03"}}},{number:91,id:"look/5 8mm/fuzz.fblook",hash:"9a27ce046063628613a9",sha256:"d0bd619c3bc55eeb041827d3bd1c60b0b86e8d53af718cd218a5a9315a24f963",kind:"look",collection:"super 8",group:"",label:"diffused",tables:{logc4:{hash:"9a27ce046063628613a9-logc4",sha256:"edf8f4dbbe936d873b3c10e7cf14cd46f2758e609ce572e1e51f6a9812ca4681"},slog3cine:{hash:"9a27ce046063628613a9-slog3cine",sha256:"518b88dbaf5f21ac573fbbd2aed291a7c475cb1b6fe242571ca36792e11dd830"}}},{number:92,id:"look/5 8mm/summer.fblook",hash:"df4643ebdb04850d6940",sha256:"ebe014ec3af62081e5dc8ec1fea489d3e687ea7d839913e1a0a1cc44158d0fe7",kind:"look",collection:"super 8",group:"",label:"sun faded",tables:{logc4:{hash:"df4643ebdb04850d6940-logc4",sha256:"2a0cfdad26f2ba0b5206fdd639f11e66ced0bac7332305a8c2c2de1c37adc117"},slog3cine:{hash:"df4643ebdb04850d6940-slog3cine",sha256:"ff766044f1326586b1e3d194069f846ddf1ff8d3919560a066df78555f6686f9"}}},{number:93,id:"look/5 8mm/trash.fblook",hash:"b5d4f1f8790caa0124ba",sha256:"f694f45d12b4ed77f66e08697bb7171db9c7712e638bc3d714501e1d902fc292",kind:"look",collection:"super 8",group:"",label:"found footage",tables:{logc4:{hash:"b5d4f1f8790caa0124ba-logc4",sha256:"d8fe007fa0192692e7758517f809841cb747977b65be8c9b24f7a13e78367b32"},slog3cine:{hash:"b5d4f1f8790caa0124ba-slog3cine",sha256:"a806dfdd5ed162238e29bc967c7fe9993949feb22f47a90d6744285d1d80a5dd"}}},{number:94,id:"look/Pastel & Low-Contrast/easy.fblook",hash:"d5f75230b10228ebc4e5",sha256:"d3d7c350f28b78a55fcaf9a6e4146147b46e16f5daf3f691d0a7b354e2379e9d",kind:"look",collection:"low contrast",group:"",label:"overcast",tables:{logc4:{hash:"d5f75230b10228ebc4e5-logc4",sha256:"34cc0eaf73144a77b473c90a005c218df1c02b3216e4b99a359eaab269e4edd0"},slog3cine:{hash:"d5f75230b10228ebc4e5-slog3cine",sha256:"48a59dba191609fe68d2412972b42769fd4b2010eaa12523c321c73c1fea939a"}}},{number:95,id:"look/Pastel & Low-Contrast/wes_2.fblook",hash:"e4441dc735a9ba2007f0",sha256:"dd532aafd868c9a2f7279969c5d5799e56a27354fc3cec61de5bd0b6e427e9d4",kind:"look",collection:"low contrast",group:"",label:"pastel",tables:{logc4:{hash:"e4441dc735a9ba2007f0-logc4",sha256:"95b33caeadf9416196c4226214a40a58fe80a89592f971186113bffc2d8015ff"},slog3cine:{hash:"e4441dc735a9ba2007f0-slog3cine",sha256:"a30cf208e29c9cb3e49dbfbe5b93ba6c619e87e0ec3658383b161664851f6721"}}},{number:96,id:"look/Pastel & Low-Contrast/log.fblook",hash:"28f04ac4b5617492a043",sha256:"fd5e0f3f0145f92a1bf93e84e0d591d5abd4393f4ae1d40d9af6494d14c4d1db",kind:"look",collection:"low contrast",group:"",label:"marine layer",tables:{logc4:{hash:"28f04ac4b5617492a043-logc4",sha256:"089a6fa621544921fed07adbae2c276b68bf6a2e5872d772b8dbb66d4a4e3698"},slog3cine:{hash:"28f04ac4b5617492a043-slog3cine",sha256:"dc328a0b45a16f628c77e33b1e0d816cd0a4bb7b776f1cdb6e7001e062840371"}}},{number:97,id:"look/Pastel & Low-Contrast/warmie.fblook",hash:"96d755f0b92fba69ec40",sha256:"957e3d8f434a3c16aefb107d6d134eb200b4590a249b6e7371926c228355df15",kind:"look",collection:"low contrast",group:"",label:"golden",tables:{logc4:{hash:"96d755f0b92fba69ec40-logc4",sha256:"c8b97b4bc89dd817ff6f3e91e4205687bdaab9de21c0f85df20cd6e9c5419ea7"},slog3cine:{hash:"96d755f0b92fba69ec40-slog3cine",sha256:"716ceac0e80cc23dd5a0ddb4c7b9cf1000e6af2d8ca4d51a24a70310e3b65f18"}}},{number:98,id:"look/Still Photography/portrait_c.fblook",hash:"21f566ca8d150a57fda9",sha256:"cadc9bbb04df1c77613620c37d6d063f21752fad6e7cd1276fe881df12989754",kind:"look",collection:"photographic",group:"",label:"portrait",tables:{logc4:{hash:"21f566ca8d150a57fda9-logc4",sha256:"eb9058f52554f3eebbb8ba275b8b041cf19ab7d80dc87666d697fecd8358d15f"},slog3cine:{hash:"21f566ca8d150a57fda9-slog3cine",sha256:"86bf919e57805addd0fde53181eb59910a748ebc286ae2439efb809c8bd3e8f6"}}},{number:99,id:"look/Still Photography/slide.fblook",hash:"cdc85a160ee50230fd9f",sha256:"4c12fa6ad360f02bba2f00619ceb0e9cb17c39bcc9e090cf25732636d1fb79b0",kind:"look",collection:"photographic",group:"",label:"slide",tables:{logc4:{hash:"cdc85a160ee50230fd9f-logc4",sha256:"2108dc78393d5c341dd7abd195e62490725a60625d275294287e0a201ff0c5f5"},slog3cine:{hash:"cdc85a160ee50230fd9f-slog3cine",sha256:"8680b5b1dd1d57eaf28fe400a11db2acc1a431e609b1ad68601c5909cbe645fd"}}},{number:100,id:"look/Still Photography/pushed.fblook",hash:"db580ae8d4e13222988d",sha256:"f63f4d39793f807b2e4720ec64e262ebcfc5d5398a73c9752899c91de518e7c8",kind:"look",collection:"photographic",group:"",label:"push two",tables:{logc4:{hash:"db580ae8d4e13222988d-logc4",sha256:"12b2c21f021bf3b48679cb57dafc5f50f32479c0f28dd7e1a6bcf8f9d969e000"},slog3cine:{hash:"db580ae8d4e13222988d-slog3cine",sha256:"ab554e3fa554b3fff17c8a50204b803834f6f1b39d2b2192b2e5c0ce633681a3"}}},{number:101,id:"look/Still Photography/remjet_a.fblook",hash:"0bfdbdc03660c69b2d61",sha256:"313550933e02336035dee847373d198963026a8fdb30d5ce7c8a3deee013dbd4",kind:"look",collection:"photographic",group:"",label:"halation",tables:{logc4:{hash:"0bfdbdc03660c69b2d61-logc4",sha256:"094d1ee2e487a63f1dd3f5f9e8b013566add055c52df7ad74e9c9b76443c83a5"},slog3cine:{hash:"0bfdbdc03660c69b2d61-slog3cine",sha256:"c78da8f059f5825ecee525747f6ae1964ba77dcf877670e6a201704b30eae9f1"}}},{number:102,id:"look/Still Photography/punchy.fblook",hash:"366a5666efe55a758980",sha256:"ef951fdd857f8ac8997fc918d8344038e0fd974904e048d0e555b36d71c256bb",kind:"look",collection:"photographic",group:"",label:"flash",tables:{logc4:{hash:"366a5666efe55a758980-logc4",sha256:"c09d98a4c3b5ae1c4ca93a319993352bed1c07344547f49537998fb12c3f1f65"},slog3cine:{hash:"366a5666efe55a758980-slog3cine",sha256:"d51784c05addd44e1a1fe254a49b1caed57565dba239f671165ac4777d9719d6"}}},{number:103,id:"look/Iconic Looks/seven.fblook",hash:"e3cdb2cbc9079391543e",sha256:"e9aaaf7f96d9e7adf9c7e48537ab780b77574ff8d7121c9613678badd0fb237e",kind:"look",collection:"reference",group:"",label:"fluorescent",tables:{logc4:{hash:"e3cdb2cbc9079391543e-logc4",sha256:"655a011cab20767a28ef26720ef2416bdcd7e1afe6ba713bc7f537739c84c43d"},slog3cine:{hash:"e3cdb2cbc9079391543e-slog3cine",sha256:"20a2076ceccf0b2215709ff2c55f1d1e7c1bc55b98ced8a2f4e605ede82aa50e"}}},{number:104,id:"look/Iconic Looks/the_wrestler.fblook",hash:"1c837b47572c211e376e",sha256:"e607e9d9f20cc52c6db1f010f1aa69341e43aba0c9207438b99dbda54ef05f82",kind:"look",collection:"reference",group:"",label:"grit",tables:{logc4:{hash:"1c837b47572c211e376e-logc4",sha256:"4bc54f353deb9ad6e668d9efd7c27fea53ed39524c490c12d7fedc0d9b961087"},slog3cine:{hash:"1c837b47572c211e376e-slog3cine",sha256:"3e9caf59518b92abcdf978aae27c84a12f323514a1abb42c4fb1df3801bee34b"}}},{number:105,id:"look/Iconic Looks/euphoria.fblook",hash:"b3b5fb4a2d1e7795d48b",sha256:"529ece7d8991ac4dee8df844fdbda943a095d113a8c810c623f86ace7a283162",kind:"look",collection:"reference",group:"",label:"neon",tables:{logc4:{hash:"b3b5fb4a2d1e7795d48b-logc4",sha256:"2f8ab2afb9ae2d22cdf4a465ada05969f4aec39a45c04aecd79df203239b3c32"},slog3cine:{hash:"b3b5fb4a2d1e7795d48b-slog3cine",sha256:"2d02bc2f9613888da17b35e2ea9bbaea43cad53acf7a06ffa8e6db5229e82114"}}},{number:106,id:"look/Iconic Looks/minority_report.fblook",hash:"2f15c11407d3a10053a5",sha256:"a178374748c605d43b5fcbac39a542491a039f21de7fc8dbf0291bddd5615f76",kind:"look",collection:"reference",group:"",label:"clinical",tables:{logc4:{hash:"2f15c11407d3a10053a5-logc4",sha256:"1d4f86741bbb20b0bcb3671b5e7c2d9034448c0885916450b2c47b9e337fa2b4"},slog3cine:{hash:"2f15c11407d3a10053a5-slog3cine",sha256:"f0c6500e39beef6d1baffa9f6a8841408134cd81af78e59581869eaeb192bf3e"}}},{number:107,id:"look/Iconic Looks/orange_and_teal.fblook",hash:"69467c32c23d52d88afa",sha256:"5029c787be90d68ee97c8b139c2d3004d36dd756dabc418dd66005364d51bac7",kind:"look",collection:"reference",group:"",label:"orange and teal",tables:{logc4:{hash:"69467c32c23d52d88afa-logc4",sha256:"1cabef428a1e57442ee22fe848ef384ff68c0ba4d60711fc196151d247a77db0"},slog3cine:{hash:"69467c32c23d52d88afa-slog3cine",sha256:"226fbc06457541bbe57de13204c6264fe57cb201a2b913baf43a603be4439abf"}}},{number:108,id:"look/Iconic Looks/amelie.fblook",hash:"f04c4b3553463dae85f0",sha256:"b8585ceec58f795976c83ba948859b704984de8b0ded1561b996f35a5e4a3d5e",kind:"look",collection:"reference",group:"",label:"warm green",tables:{logc4:{hash:"f04c4b3553463dae85f0-logc4",sha256:"6b6aa04a9d8daa313348c8d4f0c76903e6e2e9ee2d6c4f882e83ecb36b095818"},slog3cine:{hash:"f04c4b3553463dae85f0-slog3cine",sha256:"fc5b77ebf930c64364ce506655d45f77dea10561fe00602456da704ef38c83f6"}}},{number:109,id:"look/Iconic Looks/kingdom.fblook",hash:"ad8a751daf364dab2622",sha256:"e10ef6f84df98f34d93ff655ec0ea307a99b6d48e7579ab96fbf192a512a4de4",kind:"look",collection:"reference",group:"",label:"storybook",tables:{logc4:{hash:"ad8a751daf364dab2622-logc4",sha256:"19877a0fd5f7a0435f6faed9d1911d3aa922ee25211e80a488cbb765e431af2e"},slog3cine:{hash:"ad8a751daf364dab2622-slog3cine",sha256:"af472ac796684391ecb8bdea35d10b1b6c768a4dc3d977983b886011392b1c46"}}},{number:110,id:"look/Iconic Looks/fincher.fblook",hash:"33a6846cc763bf518e06",sha256:"b3f9d6ba2d6e43a52dac4675e511886f633d8f36ecbc983f5385ff17768fbb1d",kind:"look",collection:"reference",group:"",label:"tobacco",tables:{logc4:{hash:"33a6846cc763bf518e06-logc4",sha256:"c3200dfc6266440dcdf08de03258899eb7a83fc3904073ec1c24d5e15b6321d1"},slog3cine:{hash:"33a6846cc763bf518e06-slog3cine",sha256:"7780f6a0bd386253e1e4817867bd74c10317bc62ef795f3605d85a4d177a1e56"}}},{number:111,id:"look/Vintage Cinema/sergio.fblook",hash:"70d72ce15d3955091bda",sha256:"e5e8b1cd458eefc7053e563a7ecbd240e9f8ab93a15e2bfcb30711a264f112a8",kind:"look",collection:"period",group:"",label:"dust",tables:{logc4:{hash:"70d72ce15d3955091bda-logc4",sha256:"e8fb2adab0791394d7d97c27f95a7598bbc7c14b904796dfa717b5487edbb268"},slog3cine:{hash:"70d72ce15d3955091bda-slog3cine",sha256:"0be7bd7049d4bc3079eaafa0f3e2760e23079ab3769174a152545ace350c02b5"}}},{number:112,id:"look/Vintage Cinema/smoke.fblook",hash:"c14dda43a784de7c3700",sha256:"bd228142081fed590d816ece1f96afbbcd09ffa0a9384ab617e39f001e9a9f26",kind:"look",collection:"period",group:"",label:"smoke",tables:{logc4:{hash:"c14dda43a784de7c3700-logc4",sha256:"1bd1133c5f9a3d67edb80cc8c3eeac088463fcb0825374b9c50b6355367787e7"},slog3cine:{hash:"c14dda43a784de7c3700-slog3cine",sha256:"7311df0d0e2503dafd1152d4d75448cc55737bc839dfc60d55036f6e51d129b1"}}},{number:113,id:"look/Vintage Cinema/telecine_1999.fblook",hash:"99f762c374bf4514bf8a",sha256:"5bf6721bf3d2a5af6e1b2f12917e6531fe1d6e6d991690ca69f7d17fa9d2a05e",kind:"look",collection:"period",group:"",label:"late nineties",tables:{logc4:{hash:"99f762c374bf4514bf8a-logc4",sha256:"b8b5762a0204998d1ab145a3adf5ff4dfd3721839895cd52fa63ba0341d34c16"},slog3cine:{hash:"99f762c374bf4514bf8a-slog3cine",sha256:"a375f840d9548de46e9b5549259eaca6a7373ed4cbe3fa1b7cbaa7f18739490b"}}},{number:114,id:"look/Vintage Cinema/old1.fblook",hash:"505498bd2c1c0304488c",sha256:"e8a4dd595c46a9304b4ef0853477ca2c52193dbdc27dd357f420422241f90829",kind:"look",collection:"period",group:"",label:"seventies",tables:{logc4:{hash:"505498bd2c1c0304488c-logc4",sha256:"c748b60aa640501b02f16c6294d3cff09a93e69683da8dfb8bffeaf9bd6562c7"},slog3cine:{hash:"505498bd2c1c0304488c-slog3cine",sha256:"d49cd5bf76fd27e5cb7cdd0a9da41bf9c77e20edb27f498c979e2413c51024a7"}}},{number:115,id:"look/Vintage Cinema/old2.fblook",hash:"4618354776df37902ba5",sha256:"64b749b9860d9fe2b898ce9a802e51cffb227fbead70f3c22ec14a43a37fefb6",kind:"look",collection:"period",group:"",label:"faded print",tables:{logc4:{hash:"4618354776df37902ba5-logc4",sha256:"bece3d02ab6a53cb805ce828c5dbee48042a43037bafa9a456fcd92445826f58"},slog3cine:{hash:"4618354776df37902ba5-slog3cine",sha256:"4ec5404d85f8aea3a727c43bd676f40a3467d266ef63ff060c1457aab5aca9de"}}},{number:116,id:"look/Black & White/nice pan.fblook",hash:"eb80fb6951b9b1abf2e1",sha256:"61f5620c43ae6467e15f978d45c997a22e9582c924e387855df87800bfe0716f",kind:"look",collection:"black and white",group:"",label:"panchromatic",tables:{logc4:{hash:"eb80fb6951b9b1abf2e1-logc4",sha256:"9df05346e03df176a8c25f982172564227a5bf64c0a291ba5e7df5b32e4c5ed8"},slog3cine:{hash:"eb80fb6951b9b1abf2e1-slog3cine",sha256:"e7e1110999730f5b124c20d1e2bf59779131c5f9a168b95f9354bcab58be83c2"}}},{number:117,id:"look/Black & White/citizen kane.fblook",hash:"937b5b8d569c6a0c3677",sha256:"fe82d9cacbe8de3feb8da64b51b8f0bd5dee0df82df5fba69fe8eb0e4ba365b5",kind:"look",collection:"black and white",group:"",label:"studio era",tables:{logc4:{hash:"937b5b8d569c6a0c3677-logc4",sha256:"30c34728ab7af0e857b3e8506b10b7fc24632201bd5bbef6848cbbef479a0e12"},slog3cine:{hash:"937b5b8d569c6a0c3677-slog3cine",sha256:"ab5a46426a84d9df85c6ecf744bc574d4b9876f91b5dc8bde2fb545d779fc3ee"}}},{number:118,id:"look/Black & White/glamour.fblook",hash:"020d6dbc263a98761a7b",sha256:"d908f9d739668ac9dfa4670143aa5e91865988cd80cf0fb6fd56a8d52b1e9627",kind:"look",collection:"black and white",group:"",label:"soft key",tables:{logc4:{hash:"020d6dbc263a98761a7b-logc4",sha256:"fe136199906b80c26d186c1f2985c9e5d43bcbc27be1073d48107a8e396a12e8"},slog3cine:{hash:"020d6dbc263a98761a7b-slog3cine",sha256:"dc4593ad9edd785a87022cb093ed5f9ce0d6bfe854104fa18ef3ef1c24dbdf2a"}}},{number:119,id:"look/Black & White/old.fblook",hash:"a10ab4ab9e0473d20fb4",sha256:"b5bce10d22c0b6d978c0da8698b1ff383ea3b1914c26eb4c8bee8acf33731e57",kind:"look",collection:"black and white",group:"",label:"nitrate",tables:{logc4:{hash:"a10ab4ab9e0473d20fb4-logc4",sha256:"1a4769c3b7243cad95f7c1cf554ff0665f0b01aeff9d79e64a811b176f551f29"},slog3cine:{hash:"a10ab4ab9e0473d20fb4-slog3cine",sha256:"f8569bc223dab55686246f01500a4b3d1dfa8709653c6db2148151a9014471ea"}}},{number:120,id:"look/Black & White/Sepia.fblook",hash:"c995c945c090bca69166",sha256:"2f6b862650994c68f045ade4d3d7795305b93459241d5a6999226d1183a37d12",kind:"look",collection:"black and white",group:"",label:"toned",tables:{logc4:{hash:"c995c945c090bca69166-logc4",sha256:"9756502d6f8a25fe8a1a83610015aec49b2c1ad59ca12bb65993464b6d117389"},slog3cine:{hash:"c995c945c090bca69166-slog3cine",sha256:"0ae84e1a4d37befc5c88d108d1b5accd6cf05a2d9ec94109c660d54f4818548e"}}},{number:121,id:"look/Black & White/nice ortho.fblook",hash:"9387a3c737cc0fd101d2",sha256:"a7e9e24bc246b84ce6f3a3fa8abfbcb62c90867870f5167dec542f090ef79faf",kind:"look",collection:"black and white",group:"",label:"orthochromatic",tables:{logc4:{hash:"9387a3c737cc0fd101d2-logc4",sha256:"b9d941f8d575b7072acebe563aca04ce4c1e81536adc035e8887173165f6dbd7"},slog3cine:{hash:"9387a3c737cc0fd101d2-slog3cine",sha256:"0989dafc139e58fd8ba2f1a4118be36e7383c919f7f201bdc8d3056467adb889"}}},{number:122,id:"look/Black & White/mono.fblook",hash:"4692285fd84f9d250d3b",sha256:"4e7b206ac61649cfd7cfb834e983f92e0d0f7c025565d4853b7cae853b25c77b",kind:"look",collection:"black and white",group:"",label:"hard contrast",tables:{logc4:{hash:"4692285fd84f9d250d3b-logc4",sha256:"f4fb0446043c7f8d74d48785ec076feef717284625a34f53409335e375eec77d"},slog3cine:{hash:"4692285fd84f9d250d3b-slog3cine",sha256:"eb5ccd8c5773b5c4e94154f1e69e2ae64be438e9f7df2d3f91ec82ac237bb36e"}}},{number:123,id:"look/Extreme Looks/phoneix.fblook",hash:"2b3e96623a2b3dc3c616",sha256:"f2562ddd4716330e4b71118c4ec907f56c631dc66bf1ac060d87234b637b4cb0",kind:"look",collection:"experimental",group:"",label:"burnout",tables:{logc4:{hash:"2b3e96623a2b3dc3c616-logc4",sha256:"d961fe54aeaea1be1612b00d819e55d6345461cd45f13d3388c1bbb115aaec8c"},slog3cine:{hash:"2b3e96623a2b3dc3c616-slog3cine",sha256:"769c9381843200a7fe00146f66d5c04d20fb1f750fb6ef0f52e9bfa789097118"}}},{number:124,id:"look/Extreme Looks/purp.fblook",hash:"02af9ff3db82f755c7df",sha256:"342979d459fc3d15387fe56c77e2b213b163e923078dfcdeb1419a55391b17ee",kind:"look",collection:"experimental",group:"",label:"violet",tables:{logc4:{hash:"02af9ff3db82f755c7df-logc4",sha256:"1b55fad5fa9b1f28cbe35093a409a0263e1f6184dc821b2bb0218c16fcc82c32"},slog3cine:{hash:"02af9ff3db82f755c7df-slog3cine",sha256:"9a6f2f114cf859435795ca240ce16eaf52219b2ba0da6cee7254809cbc0bd93b"}}},{number:125,id:"look/Extreme Looks/blasted.fblook",hash:"7d599929461225300cae",sha256:"fd51c12e64fbd6526e256d0fcc9a00a1bf487914a802b0377032bee28778befa",kind:"look",collection:"experimental",group:"",label:"overexposed",tables:{logc4:{hash:"7d599929461225300cae-logc4",sha256:"cd64d9c2bac509a7e359cec3729b8626812a377744e6b6102c891126904c45e9"},slog3cine:{hash:"7d599929461225300cae-slog3cine",sha256:"fa575c421c5bf845e62e370f0bc139496c8f9fadeafef965058711ecdfa8797c"}}},{number:126,id:"look/Extreme Looks/instacolor.fblook",hash:"028ee89f15bdd058347f",sha256:"fce844465246ea55f465a99d18b22ca4a97257df08245f58706a87eaf11ed4d2",kind:"look",collection:"experimental",group:"",label:"instant",tables:{logc4:{hash:"028ee89f15bdd058347f-logc4",sha256:"da46549a5ad5ba3cc1f321e289e732d792a3b1791c46ce58ab24c3243f76510d"},slog3cine:{hash:"028ee89f15bdd058347f-slog3cine",sha256:"1dd7e2b03e37e46189cdf2e724946733a90c964db606e839ba5d9278d7ba0ed8"}}}],Pe=["Studio (automatic)","Arri LogC EI800 | Arri Wide Gamut","Arri LogC4 | Arri Wide Gamut 4","Sony S-Log3 | S-Gamut3.Cine","Sony S-Log3 | S-Gamut3","Rec.709 | Gamma 2.4","Linear | ARRI Wide Gamut 3","DaVinci Wide Gamut Intermediate","ACEScct","ACEScc","ACEScg","ACES2065-1","ADX10","Apple Log | Rec.2020","BMDFilm Gen 5 | BMD Wide Gamut","Canon Log 2 | Cinema Gamut (D55)","Canon Log 3 | Cinema Gamut (D55)","DJI D-Log | D-Gamut","Panasonic V-Log | V-Gamut","RED Log3G10 | REDWideGamutRGB","Sony Venice S-Log3 | S-Gamut3","Sony Venice S-Log3 | S-Gamut3.Cine","sRGB | Rec.709","Camera Rec.709","Linear | ARRI Wide Gamut 4","Linear | Rec.709","Linear | Rec.2020","Linear | DaVinci Wide Gamut","Linear | BMD Wide Gamut Gen 5","Fuji F-Log | Rec.2020","Fuji F-Log2 | Rec.2020","Fuji F-Log2 C | F-Gamut C","Nikon N-Log | Rec.2020","Leica L-Log | Rec.2020","P3 D65 | Gamma 2.4","Rec.2020 | Gamma 2.4"];var Nn=ht(fe,Pe);function mr(n){let e=fe.find(r=>r.id===n.stock)??fe.find(r=>r.label===n.stock);if(!e)throw new Error(`Unknown film stock: ${n.stock}`);let t=Pe.findIndex(r=>r===n.cameraProfile);if(t<0)throw new Error(`Unknown film input profile: ${n.cameraProfile}`);for(let[r,c]of Object.entries(Nn))if(c.type==="number"&&(typeof n[r]!="number"||n[r]<c.min||n[r]>c.max))throw new Error(`Film ${r}: expected ${c.min} through ${c.max}`);if(!Number.isInteger(n.seed))throw new Error("Film seed must be an integer");let a=["strength","exposure","warmth","tint","contrast","saturation","lift","gamma","print","grain","grainSaturation","grainSoftness","grainRoughness","halation","halationRadius","looksGrain","looksHalation"].map(r=>n[r]);a.push(["35mm","16mm","8mm"].indexOf(n.gauge),n.seed,n.textureFps,t);let o=t===2?e.tables.logc4:t===3||t===4?e.tables.slog3cine:e;return{padding:[0,0,0,0],film:`film:${o.hash}`,uniforms:{},uniformData:[...a,...Array(128-a.length).fill(0)]}}var Va=Ae({padding:0,knobs:ht(fe,Pe,!0),groups:Dt,code:"fn effect(uv: vec2f, time: f32) -> vec4f { return eng_input(uv); }"}),Ba=Object.assign((n={},e={})=>{let t=n;if(typeof n.stock=="string"&&!fe.some(a=>a.id===n.stock)){let a=fe.filter(o=>o.label===n.stock);if(a.length!==1)throw new Error(`Unknown or ambiguous film stock: ${n.stock}`);t={...n,stock:a[0].id}}return Object.freeze({...Va(t,e),evaluateBuiltin:mr})},{definition:Va.definition});function Qt(n,e,t){if(typeof n=="object"&&n!==null){if(n.type===xe||n.type==="scene"){let r=e??{},c=new Set(["id","label","track","start","duration","trimIn","width","height","position","z","rotation","scale","origin","opacity","effects","hidden","solo","values"]);for(let d of Object.keys(r))if(!c.has(d))throw new Error(`Scene instance.${d}: edit scene settings in the source file`);if(r.values!==void 0&&(!r.values||typeof r.values!="object"||Array.isArray(r.values)))throw new Error("Scene instance.values must be named knob bindings");return Z("composition",{duration:n.props.duration,...r,scene:n},t)}if(n.type!==Be&&n.type!=="group")throw new Error("Reusable files must export a Scene (or legacy Group)");let a=e??{};if("children"in a||"knobs"in a)throw new Error("An animation instance cannot replace children or knob definitions; use values or edit its source");let o=a.values;if(o!==void 0&&(!o||typeof o!="object"||Array.isArray(o)))throw new Error("Animation values must be named knob bindings");return Object.freeze({...Z(n.type,{...n.props,...a,...o===void 0?{}:{values:{...n.props.values??{},...o}}},t),...n.sourceFile?{sourceFile:n.sourceFile}:{},...n.valueSources?{valueSources:n.valueSources}:{}})}return Z(n,e??{},t)}function La(n){let e="",t=0,a=!1;for(let s=0;s<n.length;s++){let h=n[s],u=n[s+1];!a&&h==="/"&&u==="*"?(t++,e+=" ",s++):t&&h==="*"&&u==="/"?(t--,e+=" ",s++):!t&&!a&&h==="/"&&u==="/"?(a=!0,e+=" ",s++):(e+=h===`
27
+ `?`
28
+ `:t||a?" ":h,h===`
29
+ `&&(a=!1))}if(t)throw new Error("Shader: unterminated block comment");let o=[...e.matchAll(/\bstruct\s+Uniforms\s*\{([^}]*)\}/g)];if(o.length>1)throw new Error("Shader: declare Uniforms only once");let r=[],c=0;if(o.length){let s=o[0][1].trim().replace(/,\s*$/,"").split(",");for(let h of s){let u=/^\s*([a-zA-Z][a-zA-Z0-9_]*)\s*:\s*(f32|vec([234])f|vec([234])\s*<\s*f32\s*>)\s*$/.exec(h);if(!u)throw new Error("Shader.Uniforms: use plain named f32, vec2f, vec3f or vec4f fields");if(r.some(k=>k.name===u[1]))throw new Error(`Shader.Uniforms: duplicate ${u[1]}`);let b=Number(u[3]??u[4]??1),S=b===3?4:b;c=Math.ceil(c/S)*S,r.push({name:u[1],size:b,offset:c}),c+=b}}if(r.length>32||c>128)throw new Error("Shader.Uniforms: maximum 32 fields / 512 bytes");return{code:n+(r.length?`
30
+ @group(3) @binding(0) var<uniform> uniforms: Uniforms;
31
+ `:""),pack(s){for(let u of Object.keys(s))if(!r.some(b=>b.name===u))throw new Error(`Shader.uniforms: unknown field "${u}"`);let h=Array(128).fill(0);for(let u of r){if(!Object.hasOwn(s,u.name))throw new Error(`Shader.uniforms: missing field "${u.name}"`);let b=s[u.name],S=Array.isArray(b)?b:[b];if(S.length!==u.size||u.size===1&&Array.isArray(b))throw new Error(`Shader.uniforms.${u.name}: expected ${u.size===1?"f32":`vec${u.size}f`}`);S.forEach((k,i)=>{if(typeof k!="number"||!Number.isFinite(Math.fround(k)))throw new Error(`Shader.uniforms.${u.name}: expected finite f32 values`);h[u.offset+i]=k})}return h}}}var N=n=>!!n?.type;function en(n){return n.type==="Composition"&&N(n.children[0])?n.children[0].props.knobs:n.props.knobs}function wt(n){return n.type==="Composition"&&N(n.children[0])?{...n.children[0].props.values,...n.props.values}:n.props.values}var ja=new WeakMap,Bn=new WeakMap,xt=new Map;function Ln(n,e){let t=[];for(let a of[...n.split("/").slice(0,-1),...e.split("/")])a===".."?t.pop():a&&a!=="."&&t.push(a);return t.join("/")}var Ka=(n,e)=>`${n}@${e.id}`,Da=Vn;function _r(n){if(Bn.has(n))return Bn.get(n);let e=ja.get(n.bindings);e||(e=Object.fromEntries(Object.entries(n.bindings).map(([r,c])=>[r,c.kind==="motion"?Bt(c.definition):c.kind==="effect"?Ae(c.definition,c.source.file):Ut(c.definition,c.options,c.source.file)])),ja.set(n.bindings,e));function t(r){if(r?.$ref){let c=e[r.$ref];if(!c)throw new Error(`Missing binding ${r.$ref}`);return r.name?c[r.name]:c}return r?.$effect?(e[r.$effect]??Da[r.$effect])(t(r.values),t(r.options)):Array.isArray(r)?r.map(t):r&&typeof r=="object"?Object.fromEntries(Object.entries(r).map(([c,d])=>[c,t(d)])):r}function a(r){if(!N(r))return t(r);if(r.type==="Composition")return{...Qt(a(r.children[0]),t(r.props)),sourceFile:r.sourceFile};let c=r.children.map(a),d=t(r.props);return c.length&&(d.children=c.length===1?c[0]:c),{...Qt(Da[r.type],d),sourceFile:r.sourceFile,valueSources:r.valueSources}}let o=a(n.root);if(n.root.type==="Group"){let r=n.preview??{};o=Qt(xe,{width:r.width??960,height:r.height??600,fps:r.fps??30,duration:r.duration??o.props.duration??4,background:"#000000",children:{...o,props:{...o.props,start:0,width:o.props.width??"fill",height:o.props.height??"fill",...r.values?{values:{...o.props.values,...r.values}}:{}}}})}return Bn.set(n,o),o}function $a(n){return xt.has(n)||(xt.size>128&&xt.clear(),xt.set(n,La(n))),xt.get(n)}function yr(n,e,t=!1){return(t?Zt:kt)(_r(n),e)}function Ga(n,e,t=!1){let a=yr(n,e,t),o=[],r=[];function c(s){for(let h of s.effects??[]){if(h.film){o.push(h.film);continue}let u=h.src?n.assets[Ln(h.sourceFile??n.entry,h.src)]?.code:h.code;if(typeof u!="string")throw new Error(`Effect source unavailable: ${h.src}`);let b=$a(`//!effect
32
+ `+va+u);h.code=b.code,h.uniformData=b.pack(h.uniforms)}}function d(s,h){c(s);for(let u of s.animate?.states??[])c(u);if(["image","video","audio","shader","model"].includes(s.type)){let u=Ln(s.sourceFile??n.entry,s.src),b=n.assets[u];if(!b)throw new Error(`Scene asset unavailable: ${u}`);if(s.type==="shader"){let S=$a(b.code);s.code=S.code,s.uniformData=S.pack(s.uniforms)}else{let S=Ka(u,b);s.type==="video"||s.type==="audio"?(S+=`#instance=${h}`,r.push({id:h,kind:s.type,src:S,from:Math.round(s.start*a.fps),to:Math.ceil((s.start+s.duration)*a.fps)-1,startSeconds:s.start,durationSeconds:s.duration,startFrom:s.trimIn*a.fps,playbackRate:s.playbackRate,volume:s.volume,muted:s.volume===0}),s.src=s.type==="video"?`video:${S}`:S):s.src=S,["audio","model"].includes(s.type)||o.push(s.src)}}if(s.type==="text"&&s.font!=="Inter"){let u=Ln(s.fontSource??n.entry,s.font),b=n.assets[u];if(!b)throw new Error(`Font unavailable: ${u}`);s.font=Ka(u,b)}s.type==="composition"&&(c(s.scene),s.scene.children.forEach((u,b)=>d(u,`${h}.scene.${b}`))),s.children?.forEach((u,b)=>d(u,`${h}.${b}`))}for(let s of a.motionSamples??[])c(s),s.children.forEach((h,u)=>d(h,String(u)));return r.length=0,c(a),a.children.forEach((s,h)=>d(s,String(h))),{scene:a,imageKeys:o,schedule:r,meta:{version:1,source:n.entry,width:a.width,height:a.height,fps:a.fps,totalFrames:a.totalFrames,duration:a.duration}}}var Ke=n=>[...n?.clips??[],...n?.nestedClips??[]],Y=(n,e)=>Ke(n).find(t=>t.id===e),q=(n,e)=>e.nodeId??(e.stableId?`source:${e.id}`:n.outline?.rows.find(t=>t.sourceStart===e.sourceStart&&(!t.source||t.source===n.scene))?.id);var tn={blur:{label:"Blur",knobs:jt,groups:{}},grain:{label:"Grain",knobs:Kt,groups:{}},film:{label:"Film",knobs:ht(fe,Pe,!0),groups:Dt}};function nn(n,e){let t=e?.$effect;if(typeof t!="string")return;if(Object.hasOwn(tn,t))return tn[t];let a=n.bindings[t];if(a?.kind==="effect")return{label:t.split("#").at(-1),knobs:a.definition.knobs??{},groups:a.definition.groups??{}}}function jn(n,e){let t=e?.values??{};if(!t.$ref)return t;let a=n.bindings[t.$ref];if(a?.kind!=="knobs")throw new Error("Unsupported effect arguments");return Object.fromEntries(Object.keys(a.definition).map(o=>[o,{$ref:t.$ref,name:o}]))}function Wa(n,e,t){return n?.$effect==="film"&&e==="stock"&&typeof t=="string"?fe.find(a=>a.id===t)?.id??fe.find(a=>a.label===t)?.id??t:t}function Ua(n){let e=n.root.props.knobs,t=e?.$ref&&n.bindings[e.$ref];return t?.kind==="knobs"?t.definition:{}}function Me(n,e,t){if(n==="mask")try{return ye(e),e!==void 0}catch{return!1}let a=r=>typeof r=="number"&&Number.isFinite(r)&&Math.abs(r)<=1e6,o=r=>Array.isArray(r)&&r.length===2&&r.every(a);return t.kind==="number"?a(e)&&(t.min===void 0||e>=t.min)&&(t.max===void 0||e<=t.max):t.kind==="boolean"?typeof e=="boolean":t.kind==="color"?typeof e=="string"&&/^(transparent|#[\da-f]{3,4}|#[\da-f]{6}|#[\da-f]{8})$/i.test(e):t.kind==="select"?typeof e=="string"&&Object.hasOwn(t.options,e):["position","origin"].includes(n)?o(e):n==="rotation"&&t.kind==="json"?Array.isArray(e)&&e.length===3&&e.every(a):n==="scale"?a(e):["width","height"].includes(n)?e==="fill"||e==="auto"||a(e)&&e>0:n==="padding"?a(e)&&e>=0||Array.isArray(e)&&e.length===4&&e.every(r=>a(r)&&r>=0):!1}function et(n,e){return n.type==="asset"?!!n.kind&&$t(n.kind,e):n.type==="text"?typeof e=="string"&&e.length<=1e4:n.type==="color"?Me("",e,{kind:"color"}):n.type==="number"?(!n.integer||Number.isInteger(e))&&Me("",e,{kind:"number",min:n.min,max:n.max}):n.type==="boolean"?typeof e=="boolean":n.type==="select"?typeof e=="string"&&Object.hasOwn(n.options,e):n.type==="multiselect"&&Array.isArray(e)&&e.every(t=>typeof t=="string"&&Object.hasOwn(n.options,t))}function an(n){function e(t,a){if(!N(t))return t;t.props.hidden===!0&&(a=null);let o=0;return{...t,runtimePath:a,children:t.children.map(r=>{let c=N(r)&&(r.props.hidden===!0||t.type==="Scene"&&t.props.tracks?.[r.props.track]?.hidden===!0),d=!N(r)||c||a===null||t.type==="Model"||r.type==="Camera";return e(r,d?null:[a,o++].filter(s=>s!=="").join("."))})}}return e(n,n.type==="Scene"?"":"0")}function za(n,e,t="Group"){return je(n)??(t!=="Group"?t:`Group \xB7 ${e} ${e===1?"child":"children"}`)}var on=n=>n?.$ref?`${n.$ref.split("#").at(-1)}${n.name?"."+n.name:""}`:JSON.stringify(n,(e,t)=>t?.$ref?on(t):t)??"\u2014",Ha=n=>{let e=[];for(let[t,a]of n.filter(([o,r])=>r>o).sort(([o],[r])=>o-r)){let o=e.at(-1);o&&t<=o[1]?o[1]=Math.max(o[1],a):e.push([t,a])}return e};function ae(n,e){n={...n,root:an(n.root)};let t=[],a=new Map;function o(c,d,s,h){if(!c?.$ref)return{value:c};let u=n.bindings[c.$ref];return u?.kind==="motion"?{value:u.definition[c.name]?.default,motion:u.definition[c.name],binding:c.$ref,bindingName:c.name,offset:s,ownerId:h,name:`${c.$ref}.${c.name}`,line:u.source.line}:d.get(c.$ref)?.get(c.name)??{value:void 0}}function r(c,d,s,h,u){let b=d===null&&c.type==="Group"?{...c.props,start:0,...n.preview?.values?{values:{...c.props.values,...n.preview.values}}:{}}:c.props,S=new Map(h),k=en(c)?.$ref,i=n.bindings[k];i&&S.set(k,new Map(Object.entries(i.definition).map(([v,C])=>[v,o((c.type==="Composition"?wt(c):b.values)?.[v]??C.default,h,u.offset+(Je(c.type)&&(b.start!==void 0||b.duration!==void 0||b.track!==void 0)?b.start??0:0),c.id)])));let _=Je(c.type)&&(b.start!==void 0||b.duration!==void 0||b.track!==void 0),m=u.offset+(_?b.start??0:0),l=Math.min(e.duration,Math.max(u.start,m)),f=Math.max(l,Math.min(u.end,_&&b.duration!==void 0?m+b.duration:u.end)),p=_?{offset:m,start:l,end:f}:u,y=[];function w(v,C){if(v?.$ref){let R=o(v,S,p.offset,c.id);if(R.motion){let B=`${c.id}:${C}`,j=(R.motion.keyframes??[]).map(A=>({...A,at:A.at+R.offset,localAt:A.at,binding:R.binding,name:R.bindingName})),I=R.motion.default,V=R.motion.type!=="discrete"&&(typeof I=="number"||Array.isArray(I)&&typeof I[0]=="number"||typeof I=="string"&&(I.startsWith("#")||I==="transparent")),D=V?Ha(j.slice(1).flatMap((A,G)=>A.easing!=="hold"&&JSON.stringify(A.value)!==JSON.stringify(j[G].value)?[[j[G].at,A.at]]:[])):[];a.set(B,{id:B,binding:R.binding,name:R.bindingName,offset:R.offset,ownerId:R.ownerId,line:R.line,default:I,type:V?"continuous":"discrete",keys:j,segments:D}),y.push({property:C,track:B,via:on(v)})}}else if(v&&typeof v=="object")for(let[R,B]of Object.entries(v))w(B,`${C}.${R}`)}for(let[v,C]of Object.entries(b))v!=="knobs"&&w(C,v==="values"?"knobs":v);let x=c.children.filter(v=>!N(v));x.forEach(v=>w(v,"text"));let E=x.map(v=>o(v,S).value??"").join(""),P={...b.mask?{mask:ye(b.mask)}:{},...b.id&&t.find(v=>v.id===d)?.mask?.source===b.id?{maskSource:!0}:{},id:c.id,parent:d,depth:s,type:c.type,...c.type==="Group"||"hidden"in b?{playback:{hidden:b.hidden===!0,solo:b.solo===!0}}:{},label:c.definition?`${c.tag} \xB7 instance`:c.type==="Text"?`\u201C${String(E).slice(0,64)}\u201D`:typeof b.src=="string"?b.src.split("/").at(-1):c.type,source:c.source.file,line:c.source.line,sourceStart:c.source.start,definition:c.definition,runtimePath:c.runtimePath,start:l,end:f,localTiming:{start:b.start??0,duration:b.duration??null,window:_,localClock:_},clockOffset:p.offset,timing:_?"Clip window":s>1?"Parent window":"Full scene",children:[],tracks:y,effects:(b.effects??[]).map(v=>v.$effect??"Effect"),knobs:i?Object.entries(i.definition).map(([v,C])=>({name:v,type:C.type,value:on(S.get(k).get(v)?.value)})):[],props:Object.entries(b).filter(([v])=>!["knobs","values","effects"].includes(v)).map(([v,C])=>({name:v,value:on(C)?.slice(0,400)})),segments:[]};t.push(P);let T=(c.type==="Composition"?[]:c.children).filter(N).map(v=>r(v,c.id,s+1,S,p));return P.children=T.map(v=>v.id),P.descendants=T.reduce((v,C)=>v+1+C.descendants,0),c.type==="Composition"&&(P.label=b.label??c.tag),c.type==="Group"&&(P.label=za(b.label,T.length,c.tag)),P.segments=Ha([...y.flatMap(v=>a.get(v.track).segments),...T.flatMap(v=>v.segments)].map(([v,C])=>[Math.max(l,v),Math.min(f,C)])),P}return r(n.root,null,0,new Map,{offset:0,start:0,end:e.duration}),{source:n.entry,rows:t,tracks:[...a.values()],summary:{elements:t.filter(c=>c.type!=="Scene").length,depth:Math.max(0,...t.map(c=>c.depth)),tracks:a.size,usedTracks:a.size,keyframes:[...a.values()].reduce((c,d)=>c+d.keys.length,0),effects:t.reduce((c,d)=>c+d.effects.length,0),knobs:t.reduce((c,d)=>c+d.knobs.length,0),bytes:n.bytes,lines:n.lines}}}function kr(n,e,t=30){let a=-1,o=.5/(Number.isFinite(t)&&t>0?t:30);return n.forEach((r,c)=>{let d=Math.abs(r.at-e);d<o&&(a=c,o=d)}),a}function ee(n){let e=new Map,t=new Map;function a(o,r){N(o)&&(e.set(o.id,o),t.set(o.id,r),o.children.forEach(c=>a(c,o)))}return a(n.root,null),{nodes:e,parents:t}}var wr=n=>typeof n=="number"&&Number.isFinite(n)||Array.isArray(n)&&n.length>0&&n.every(e=>typeof e=="number"&&Number.isFinite(e)),xr=new Set(["position","z","rotation","scale","origin","width","height","opacity","fontSize","letterSpacing","color","fill","rounding","radius","depth","gap","padding","volume"]),Xa=(n,e)=>n.source.file===e.source.file&&n.source.start===e.source.start,Kn=n=>n==="row"||n==="column",$n=(n,e)=>!!e?.props.id&&ye(n?.props.mask)?.source===e.props.id,qa=n=>n.children.filter(e=>N(e)&&!["Audio","Camera","Surface"].includes(e.type)&&!$n(n,e)),Ja=n=>!!n?.$ref||Array.isArray(n)&&n.some(Ja);function Dn(n){if(n.type!=="Model")return[0,0];let e=n.props.height,t=n.props.scale??1;return typeof e=="number"&&typeof t=="number"?[e*t/2,e*t/2]:null}function Ya(n){return n.type==="property"&&n.name==="layout"?{...n,type:"properties",time:n.time??0,changes:{layout:n.value}}:n}function rn(n,e,t,a=0,o="property",r){let c=Y(n,e),d=o==="knob"&&e===n.document.root.id;if(r!==void 0&&(o!=="knob"||!Number.isInteger(r)||r<0))throw new Error("Invalid effect parameter");if(!c&&!d)throw new Error("Layer no longer exists");let{nodes:s,parents:h}=ee(n.document),u=d?n.document.root:s.get(q(n,c)),b=r===void 0?void 0:u?.props.effects?.[r],S=nn(n.document,b)?.knobs,k=r!==void 0?S&&Object.hasOwn(S,t)?S[t]:void 0:d?Ua(n.document)[t]:void 0,i=d||r!==void 0?k&&{name:t,schema:k,editable:!0}:(o==="knob"?c.knobs:c.properties).find(A=>A.name===t);if(!i||!u)throw new Error(`Unsupported property ${t}`);let _=new Map(n.outline.rows.map(A=>[A.id,A])),m=A=>Math.max(0,a-(_.get(A.id)?.clockOffset??0)),l=r!==void 0?["effects",r,"values",t]:o==="knob"?["values",t]:[t],f=(A,G)=>G.reduce((Q,ue)=>Q?.[ue],A),p=o==="knob"?i.schema.default:u.type==="Model"&&t==="position"?[n.document.root.props.width/2,n.document.root.props.height/2]:u.type==="Group"&&["width","height"].includes(t)?(u.props.layout??"free")==="free"?"fill":"auto":i.value??i.default,y=(r!==void 0?jn(n.document,b)[t]:o==="knob"?wt(u)?.[t]:f(u.props,l))??p;function w(A,G,Q,ue,tt=new Set){if(A?.$ref){let he=n.document.bindings[A.$ref],de=`${ue?.id}:${A.$ref}:${A.name}`;if(tt.has(de))throw new Error("Cyclic property binding");if(tt=new Set([...tt,de]),he?.kind==="motion"){let te=he.definition[A.name];if(!te)throw new Error("Motion track no longer exists");let nt=m(G);return{value:Ee(te,nt),owner:G,path:Q,ref:A,definition:te,at:nt,animated:!0,keyed:(te.keyframes??[]).some(Tt=>Math.abs(Tt.at-nt)<1e-7)}}if(he?.kind==="knobs"){let te=ue;for(;te&&en(te)?.$ref!==A.$ref;)te=h.get(te.id);if(!te)throw new Error("Knob has no owning group");let nt=wt(te)?.[A.name]??he.definition[A.name]?.default,Tt=w(nt,te,["values",A.name],h.get(te.id),tt);return{...Tt,linked:!0,knobSchemas:[...Tt.knobSchemas??[],he.definition[A.name]]}}throw new Error("Unsupported property binding")}if(Array.isArray(A)){let he=A.map((de,te)=>w(de,G,[...Q,te],ue,tt));return{value:he.map(de=>de.value),owner:G,path:Q,parts:he,animated:he.some(de=>de.animated),keyed:he.some(de=>de.keyed),linked:he.some(de=>de.linked)}}return{value:A,owner:G,path:Q,at:m(G)}}let x=w(y,u,l,o==="knob"&&r===void 0?h.get(u.id):u);function E(A){return A?.$ref?[A]:A&&typeof A=="object"?Object.values(A).flatMap(E):[]}let P=[...s.values()].flatMap(A=>E(A.props)),T=A=>A.ref?P.filter(G=>G.$ref===A.ref.$ref&&G.name===A.ref.name).length>1:A.parts?.some(T);r!==void 0&&(x.value=Wa(b,t,x.value));let v=(o==="knob"?i.schema.type==="number"||i.schema.type==="color":xr.has(t))&&(wr(x.value)||(o==="knob"?i.schema.type:i.kind)==="color"),C=A=>A.ref?Math.abs((_.get(A.owner.id)?.clockOffset??0)-(_.get(u.id)?.clockOffset??0))<1e-7:!A.parts||A.parts.every(C),R=h.get(u.id),B=$n(R,u)?"free":R?.props.layout,j=o==="property"&&t==="position"&&Kn(B),I=!!(x.linked||T(x)),V=Dn(u),D=j&&!x.animated&&!I&&V&&Array.isArray(x.value)&&x.value.every((A,G)=>Math.abs(A-V[G])<1e-7);return{...x,spec:i,node:u,clip:c,kind:o,name:t,linked:I,canAnimate:v,canMakeIndependent:C(x),layoutPosition:j,autoPosition:!!D,parentLayout:B,editable:!0}}function De(...n){try{return rn(...n)}catch{return{editable:!1}}}function Za(n,e,t){let[a,...o]=e,r=Array.isArray(n)?[...n]:{...n};return r[a]=o.length?Za(n?.[a],o,t):t,r}function Qa(n,e){if(!Number.isFinite(e.time)||e.time<0||e.time>=n.duration)throw new Error("Choose a frame inside the scene");let t=e.changes??{},a=Object.keys(t);if(!a.length||a.length>32||a.some(f=>["__proto__","constructor","prototype"].includes(f)))throw new Error("Invalid property changes");let o=e.kind??"property";if(!["property","knob"].includes(o))throw new Error("Invalid property kind");let r=n.document,c=new Map;function d(f,p,y){let w=P=>{if(p[0]!=="effects")return P.props;let T=Number(p[1]),v=[...P.props.effects];return v[T]={...v[T],values:jn(r,v[T])},{...P.props,effects:v}},x=`${f.source.file}:${f.source.start}:${p.join(".")}`;if(c.has(x)&&JSON.stringify(c.get(x))!==JSON.stringify(y))throw new Error("Linked controls require conflicting values. Make this property independent first.");c.set(x,y);function E(P){return N(P)?{...P,props:Xa(P,f)?Za(w(P),p,y):P.props,...Xa(P,f)&&p[0]==="values"?{valueSources:{...P.valueSources,[p[1]]:f.source.file}}:{},children:P.children.map(E)}:P}r={...r,root:E(r.root)}}function s(f,p){let y=`${f.$ref}.${f.name}`,w=r.bindings[f.$ref];if(c.has(y)&&JSON.stringify(c.get(y))!==JSON.stringify(p))throw new Error("Linked tracks require conflicting values. Make this property independent first.");c.set(y,p),r={...r,bindings:{...r.bindings,[f.$ref]:{...w,definition:{...w.definition,[f.name]:p}}}}}function h(f,p){let y=f.source.file,w=1,x,E=n.sourceFiles?.[y]??"";do x=`motionEdit${w++}`;while(r.bindings[`${y}#${x}`]||new RegExp(`\\b${x}\\b`).test(E));let P={$ref:`${y}#${x}`,name:"value"};return r={...r,bindings:{...r.bindings,[P.$ref]:{kind:"motion",definition:{value:p},source:{file:y,start:-1,line:1}}}},P}function u(f,p,y){d(f,p,h(f,y))}function b(f,p,y,w=!1){if(f.knobSchemas?.some(x=>!et(x,p)))throw new Error("This value is outside the linked control\u2019s limits");if(f.ref){let x=f.definition.default;if(typeof x!=typeof p||Array.isArray(x)!==Array.isArray(p)||Array.isArray(x)&&x.length!==p.length)throw new Error("Keep the animated value\u2019s type and number of components");let E=[...f.definition.keyframes??[]],P=kr(E,f.at,n.fps);!E.length&&f.at>1e-7&&E.push({at:0,value:x});let T=P<0?{at:f.at,value:p}:{...E[P],value:p};P<0?E.push(T):E[P]=T;let v={...f.definition,keyframes:E.sort((C,R)=>C.at-R.at)};s(f.ref,v)}else if(f.parts&&(f.animated||f.linked))f.parts.forEach((x,E)=>b(x,p[E],y,w));else if(y){let x=f.at??Math.max(0,e.time-(n.outline.rows.find(E=>E.id===f.owner.id)?.clockOffset??0));u(f.owner,f.path,{...w?{type:"discrete"}:{},default:f.value,keyframes:x>1e-7?[{at:0,value:f.value},{at:x,value:p}]:[{at:0,value:p}]})}else d(f.owner,f.path,p)}function S(f,p){let y=qa(f);if(!Array.isArray(p)||p.length!==y.length||new Set(p.map(x=>x.id)).size!==y.length)throw new Error("Measure the group in the preview before switching to Free");for(let{id:x,props:E}of p){let P=y.find(v=>v.id===x);if(!P||!E||!Object.hasOwn(E,"position")||Object.keys(E).some(v=>!["position","origin","width","height"].includes(v)))throw new Error("Invalid layout placement");let T=[...n.clips,...n.nestedClips??[]].find(v=>q(n,v)===x);for(let[v,C]of Object.entries(E)){let B=function(j,I){if(j.ref){let V=n.outline.rows;if(Math.abs((V.find(A=>A.id===j.owner.id)?.clockOffset??0)-(V.find(A=>A.id===P.id)?.clockOffset??0))>1e-7)throw new Error("This layout uses animation from a different clip clock. Make its position independent in the source before switching to Free.");let D=A=>Array.isArray(A)?A.map((G,Q)=>G+I[Q]-j.value[Q]):A+I-j.value;return h(P,{...j.definition,default:D(j.definition.default),keyframes:(j.definition.keyframes??[]).map(A=>({...A,value:D(A.value)}))})}return j.parts?j.parts.map((V,D)=>B(V,I[D])):I};var w=B;let R=rn(n,T?.id,v,e.time);if(!Me(v,C,R.spec))throw new Error(`Invalid layout ${v}`);if(R.node.type==="Text"&&R.node.props.path&&v==="width")throw new Error("Text on a path has no wrapping width");JSON.stringify(R.value)!==JSON.stringify(C)&&d(P,[v],B(R,C))}}}for(let f of a){let p=rn(n,e.id,f,e.time,o,e.effectIndex),y=t[f];if(!(o==="knob"?et(p.spec.schema,y):Me(f,y,p.spec)))throw new Error(`Invalid ${f}`);if(p.node.type==="Text"&&p.node.props.path&&f==="width")throw new Error("Text on a path has no wrapping width");let w=e.keyframe===f;if(w&&!p.canAnimate)throw new Error(`Cannot animate ${f}`);if(e.independent===f){let P=function(T,v){T.ref?u(x,v,T.definition):T.parts?T.parts.forEach((C,R)=>P(C,[...v,R])):d(x,v,T.value)};var m=P;let x=p.node,E=e.effectIndex!==void 0?["effects",e.effectIndex,"values",f]:o==="knob"?["values",f]:[f];if(!p.canMakeIndependent)throw new Error("Open the owning control to make this animation independent across different clip clocks");P(p,E)}else b(p,y,w,!!p.spec.schema?.integer);if(o==="property"&&f==="layout"&&(p.value??"free")==="free"&&Kn(y))for(let x of qa(p.node)){if(!x?.type||Ja(x.props.position))continue;let E=Dn(x);E&&(x.props.position!==void 0||x.type==="Model")&&d(x,["position"],E)}o==="property"&&f==="layout"&&Kn(p.value)&&y==="free"&&S(p.node,e.layoutPlacement)}if(o==="property"&&!Object.hasOwn(t,"position")&&["height","scale"].some(f=>Object.hasOwn(t,f))){let f=De(n,e.id,"position",e.time);if(f.node?.type==="Model"&&f.autoPosition){let p=ee(r).nodes.get(f.node.id),y=Dn(p);y&&d(f.node,["position"],y)}}if(e.maskSourceId){let p=rn(n,e.id,"mask",e.time).node.children.find(w=>N(w)&&w.id===e.maskSourceId),y=ye(t.mask);if(!y||!p?.type||p.props.id&&p.props.id!==y.source)throw new Error("Mask source changed");p.props.id||d(p,["id"],y.source)}let k=ee(r).nodes,i=Y(n,e.id),_=i?k.get(q(n,i)):void 0;if(_?.type==="Group"&&Object.hasOwn(t,"mask")){let f=ye(_.props.mask);if(f){let y=function(w){if(N(w)){if(!["Group","Rect","Path","Text"].includes(w.type))throw new Error("Vector masks require shape or text outlines");w.children.forEach(y)}};var l=y;let p=_.children[Xt(_.children,f)];if(["Audio","Camera","Surface"].includes(p.type))throw new Error("Choose a visual layer as the mask");f.mode==="vector"&&y(p)}}if(_?.type==="Group"&&(_.props.layout??"free")==="free"&&[_.props.width,_.props.height].includes("auto"))throw new Error("Auto dimensions require row or column layout");return{...n,document:r,outline:ae(r,{duration:n.duration,fps:n.fps})}}function Sr(n,e){let t=Y(n,e),a=ee(n.document).nodes.get(t?q(n,t):e);if(!a||["Audio","Camera","Surface"].includes(a.type))throw new Error("Select a visual layer for effects");return a}function eo(n,e){let t=Sr(n,e.id),a=[...t.props.effects??[]];if(e.type==="effect-add"){if(!e.effect||!Object.hasOwn(tn,e.effect))throw new Error("Unknown effect");if(a.reduce((s,h)=>s+(h.$effect==="blur"?2:n.document.bindings[h.$effect]?.definition.passes?.length??1),0)+(e.effect==="blur"?2:1)>32)throw new Error("Maximum 32 effect passes");let d=n.sourceFiles[t.source.file];if(new RegExp(`\\b(?:const|let|function|class)\\s+${e.effect}\\b`).test(d))throw new Error(`Rename the local ${e.effect} before adding this effect`);a.push({$effect:e.effect,values:{}})}else{if(!Number.isInteger(e.index)||e.index<0||e.index>=a.length)throw new Error("Effect no longer exists");if(e.type==="effect-remove")a.splice(e.index,1);else if(e.type==="effect-enabled"){if(typeof e.enabled!="boolean")throw new Error("Effect enabled must be a boolean");let c=a[e.index];a[e.index]={...c,options:{...c.options,enabled:e.enabled}}}else{if(!Number.isInteger(e.to)||e.to<0||e.to>=a.length)throw new Error("Invalid effect order");a.splice(e.to,0,a.splice(e.index,1)[0])}}let o=c=>N(c)?{...c,props:c.source.file===t.source.file&&c.source.start===t.source.start?{...c.props,effects:a}:c.props,children:c.children.map(o)}:c,r={...n.document,root:o(n.document.root)};return{...n,document:r,outline:ae(r,{duration:n.duration,fps:n.fps})}}var Er=(n,e,t,a)=>n<t+a-1e-7&&t<n+e-1e-7;function Gn(n,e,t,a,o,r){return Number.isFinite(t)&&t>=0&&Number.isFinite(a)&&a>0&&t+a<=r+1e-7&&Number.isInteger(o)&&o>=0&&o<100&&!n.some(c=>c.id!==e&&c.track===o&&Er(t,a,c.start,c.duration))}var vr="cubic-bezier(0.42,0,0.58,1)";function Tr(n,e){if(n==="hold"||n==="linear")return n;let a={easeIn:[1/3,0,2/3,1/3],easeOut:[1/3,2/3,2/3,1]}[n]??n.match(/^cubic-bezier\((.*)\)$/)?.[1].split(",").map(Number);if(!a||a.length!==4)throw new Error("Unsupported motion curve");let[o,r,c,d]=a,s=(m,l,f)=>3*(1-m)**2*m*l+3*(1-m)*m*m*f+m**3,h=0,u=1;for(let m=0;m<48;m++){let l=(h+u)/2;s(l,o,c)<e?h=l:u=l}let b=(h+u)/2,S=s(b,r,d),k=[c+(1-c)*b,d+(1-d)*b],i=[o+(c-o)*b,r+(d-r)*b],_=[i[0]+(k[0]-i[0])*b,i[1]+(k[1]-i[1])*b];if(Math.abs(1-S)<1e-10)throw new Error("This curve cannot be trimmed at this point without changing its shape");return`cubic-bezier(${(_[0]-e)/(1-e)},${(_[1]-S)/(1-S)},${(k[0]-e)/(1-e)},${(k[1]-S)/(1-S)})`}function to(n,e){if(!e)return n;if(e<0)return{...n,keyframes:n.keyframes?.map(c=>({...c,at:c.at-e}))};let t=(n.keyframes??[]).flatMap((c,d,s)=>{if(!d||c.easing!=="easeInOut")return[c];let h=(s[d-1].at+c.at)/2;return[{at:h,value:Ee(n,h),easing:"easeIn"},{...c,easing:"easeOut"}]}),a=t.filter(c=>c.at>e).map(c=>({...c,at:c.at-e})),o=t.findIndex(c=>c.at>e);if(o>0&&t[o-1].at<e){let c=t[o-1],d=t[o];a[0].easing=Tr(d.easing??"linear",(e-c.at)/(d.at-c.at))}let r=Ee(n,e);return{...n,default:r,keyframes:[{at:0,value:r},...a]}}function cn(n,e,t,a,o="linear"){return[{at:0,value:e?0:n},...e&&e<a?[{at:e,value:n}]:[],...t&&a-t>e?[{at:a-t,value:n}]:[],{at:a,value:t?0:n}].map((r,c)=>c&&o!=="linear"?{...r,easing:o}:r)}function no(n,e,t){let a=Y(n,e),o=a&&ee(n.document).nodes.get(q(n,a));if(!a||!o||!a.properties.some(k=>k.name===t))return null;let r=o.props[t]??1;if(typeof r=="number")return{value:r,fadeIn:0,fadeOut:0};let c=n.document.bindings[r?.$ref];if(c?.kind==="knobs"){let k=De(n,e,t,a.start,"property");if(k.editable&&!k.animated&&typeof k.value=="number")return{value:k.value,fadeIn:0,fadeOut:0}}if(!c||c.kind!=="motion")return null;let{envelopeLevel:d,envelopeFadeIn:s,envelopeFadeOut:h}=c.definition;if(!d||!s||!h)return null;let u=d.default,b=s.default,S=h.default;return JSON.stringify(c.definition[r.name]?.keyframes)!==JSON.stringify(cn(u,b,S,a.duration,c.definition[r.name]?.keyframes?.[1]?.easing??"linear"))?null:{value:u,fadeIn:b,fadeOut:S}}function Cr(n,e,t="opacity"){let a=Y(n,e),o=a&&ee(n.document).nodes.get(q(n,a));if(!a||!o||!a.properties.some(s=>s.name===t))return null;let r=o.props[t]??1;if(typeof r=="number")return null;let c=n.document.bindings[r?.$ref],d=c?.kind==="motion"?c.definition[r.name]?.keyframes:null;return!d?.length||d.some(s=>typeof s.value!="number"||!Number.isFinite(s.value)||s.value<0||s.value>1||s.easing&&!Se(s.easing))?null:{binding:r.$ref,name:r.name,keys:d.map(s=>({at:s.at,value:s.value,...s.easing?{easing:s.easing}:{}}))}}function Wn(n,e,t){let a=Y(n,e.id);if(!a)throw new Error("Clip no longer exists");let o=ee(n.document).nodes.get(q(n,a));if(!o)throw new Error("Clip no longer exists");let r={...n.document.bindings},c=1;function d(_,m,l){let f;do f=`${l}${c++}`;while(r[`${_.source.file}#${f}`]||new RegExp(`\\b${f}\\b`).test(n.sourceFiles[_.source.file]));let p={$ref:`${_.source.file}#${f}`,name:"value"};return r[p.$ref]={kind:"motion",source:{file:_.source.file,start:-1,line:1},definition:{value:m}},p}let s;if(e.type==="clip-envelope"){let _=Cr(n,e.id,e.property);if(!no(n,e.id,e.property)&&!(e.points&&_))throw new Error("This property has custom animation. Edit its keyframes to preserve that motion.");let{value:m,fadeIn:l,fadeOut:f}=e,p=t??a.duration;if(![m,l,f].every(Number.isFinite)||m<0||m>1||l<0||f<0||l+f>p+1e-7)throw new Error("Fades must fit inside the clip and levels must be between 0 and 100%");if(e.points&&(e.points.length<2||e.points.some((C,R,B)=>!Number.isFinite(C.at)||!Number.isFinite(C.value)||C.value<0||C.value>1||C.easing!==void 0&&!Se(C.easing)||C.at<0||C.at>p&&!_?.keys.some(j=>j.at===C.at&&j.value===C.value&&j.easing===C.easing)||R>0&&C.at<=B[R-1].at)))throw new Error("Envelope keys must be ordered inside the clip and between 0 and 100%");let y=e.points??cn(m,l,f,p,e.property==="opacity"?vr:"linear"),w=o.props[e.property],x={default:m,keyframes:y},E=C=>!C||typeof C!="object"?0:C.$ref===w?.$ref&&C.name===w?.name?1:Object.values(C).reduce((R,B)=>R+E(B),0),P=w?.$ref?[...ee(n.document).nodes.values()].reduce((C,R)=>C+E(R.props),0):0,T=w?.$ref&&r[w.$ref]?.definition,v=m;(e.points||l||f)&&(P===1&&T?.envelopeLevel&&T.envelopeFadeIn&&T.envelopeFadeOut?(r[w.$ref]={...r[w.$ref],definition:{...r[w.$ref].definition,[w.name]:x}},v=w):v=d(o,x,"liteEnvelope"),r[v.$ref].definition={...r[v.$ref].definition,envelopeLevel:{default:m},envelopeFadeIn:{default:l},envelopeFadeOut:{default:f}}),s={...o,props:{...o.props,[e.property]:v}}}else{let l=function(f,p,y=!1){if(f.definition)throw new Error("Open this imported animation's source to trim its beginning");let w={...f.props},x=p;if(!y&&p!==0&&(w.start!==void 0||w.duration!==void 0)){let T=w.duration??-1,v=Object.entries(r).reverse().find(([,A])=>A.kind==="motion"&&A.source.file===f.source.file&&w.id&&["trimWindowStart","trimWindowDuration","trimWindowOffset"].every(G=>Number.isFinite(A.definition[G]?.default))&&A.definition.trimWindowNode?.default===w.id&&A.definition.trimWindowCurrentStart?.default===(w.start??0)&&A.definition.trimWindowCurrentDuration?.default===T),C=v?.[1].definition,R=C?.trimWindowStart?.default??w.start??0,B=C?.trimWindowDuration?.default??T,j=C?.trimWindowOffset?.default??0,I=j+p,V=Math.max(0,j-R),D=Math.max(0,I-R);if(x=D-V,w.start=Math.max(0,R-I),B!==-1){if(B<=D)throw new Error("Trim inside the group to remove a finished child layer first");w.duration=B-D}if(!v){let A=d(f,{default:0},"liteTrimWindow");if(!w.id){let G=new Set([...ee(n.document).nodes.values()].map(ue=>ue.props.id)),Q=`trim-${A.$ref.split("#").at(-1)}`;for(;G.has(Q);)Q+="_";w.id=Q}v=[A.$ref,r[A.$ref]]}r[v[0]]={...v[1],definition:{...v[1].definition,trimWindowNode:{default:w.id},trimWindowStart:{default:R},trimWindowDuration:{default:B},trimWindowOffset:{default:I},trimWindowCurrentStart:{default:w.start},trimWindowCurrentDuration:{default:w.duration??-1}}}}if(["Video","Audio","Composition"].includes(f.type)){let T=(w.trimIn??0)+x*(w.playbackRate??1);if(!Number.isFinite(T)||T<-1e-7)throw new Error("The clip has no earlier source media to reveal");w.trimIn=Math.max(0,T)}function P(T,v=!1){if(T?.$ref&&r[T.$ref]?.kind==="motion"){let C=r[T.$ref].definition;if(v&&C.envelopeLevel&&C.envelopeFadeIn&&C.envelopeFadeOut&&JSON.stringify(C[T.name]?.keyframes)===JSON.stringify(cn(C.envelopeLevel.default,C.envelopeFadeIn.default,C.envelopeFadeOut.default,y?a.duration:f.props.duration??a.duration,C[T.name]?.keyframes?.[1]?.easing??"linear"))){let V=y?m:w.duration??m,D=C.envelopeLevel.default,A=Math.min(1,V/(C.envelopeFadeIn.default+C.envelopeFadeOut.default)),G=C.envelopeFadeIn.default*A,Q=C.envelopeFadeOut.default*A,ue=d(f,{default:D,keyframes:cn(D,G,Q,V,C[T.name]?.keyframes?.[1]?.easing??"linear")},"liteEnvelope");return r[ue.$ref].definition={...r[ue.$ref].definition,envelopeLevel:{default:D},envelopeFadeIn:{default:G},envelopeFadeOut:{default:Q}},ue}let R=C.trimOriginal&&C.trimOffset&&JSON.stringify(C[T.name])===JSON.stringify(to(C.trimOriginal,C.trimOffset.default)),B=R?C.trimOriginal:C[T.name],j=(R?C.trimOffset.default:0)+x,I=d(f,to(B,j),"liteTrim");return r[I.$ref].definition={...r[I.$ref].definition,trimOriginal:B,trimOffset:{default:j}},I}return Array.isArray(T)?T.map(C=>P(C,v)):T&&typeof T=="object"?Object.fromEntries(Object.entries(T).map(([C,R])=>[C,P(R,v)])):T}if(x)for(let T of Object.keys(w))w[T]=P(w[T],T==="volume");return{...f,props:w,children:f.type==="Composition"?f.children:f.children.map(T=>N(T)?l(T,x):T)}};var i=l;let _=e.start-a.start,m=a.duration-_;if(!Number.isFinite(e.start)||e.start<0||m<1/n.fps-1e-7||!a.nested&&!Gn(n.clips,a.id,e.start,m,a.track,n.duration))throw new Error("Keep at least one frame and avoid overlapping another clip");s=l(o,_,!0),s.props={...s.props,start:e.start,duration:m}}let h=new Map;function u(_){N(_)&&(h.set(`${_.source.file}:${_.source.start}`,_.props),_.children.forEach(u))}u(s);function b(_){return N(_)?{..._,props:h.get(`${_.source.file}:${_.source.start}`)??_.props,children:_.children.map(b)}:_}let S={...n.document,bindings:r,root:b(n.document.root)},k={...n,document:S,outline:ae(S,{duration:n.duration,fps:n.fps})};return e.type==="trim-start"?{...k,clips:k.clips.map(_=>{let m=h.get(`${_.sourceFile??n.scene}:${_.sourceStart}`);return m?{..._,start:m.start??_.start,duration:m.duration??_.duration}:_}),nestedClips:k.nestedClips?.map(_=>{let m=h.get(`${_.sourceFile}:${_.sourceStart}`);return m?{..._,start:m.start??_.start,duration:m.duration??_.duration,durationExplicit:m.duration!==void 0||_.durationExplicit,timingWindow:m.start!==void 0||m.duration!==void 0||_.timingWindow}:_})}:k}function ao(n,e,t){for(let a of["volume"]){let o=no(n,e,a);if(!o||!o.fadeIn&&!o.fadeOut)continue;let r=Math.min(1,t/(o.fadeIn+o.fadeOut));n=Wn(n,{type:"clip-envelope",id:e,property:a,value:o.value,fadeIn:o.fadeIn*r,fadeOut:o.fadeOut*r},t)}return n}function Ar(n,e){let t=Y(n,e)??Ke(n).find(r=>q(n,r)===e),a=t&&ee(n.document).nodes.get(q(n,t));if(!a||a.type!=="Text")throw new Error("Select a text layer to edit");let o=a.children.length===1?a.children[0]:a.props.children;if(typeof o!="string"&&typeof o!="number")throw new Error("This text is linked to a control. Edit its text control in the inspector.");return{clip:t,node:a,value:String(o)}}function oo(n,e){if(typeof e.value!="string")throw new Error("Text must be a string");let{node:t}=Ar(n,e.id);if(t.props.path&&/[\r\n\u2028\u2029]/u.test(e.value))throw new Error("Text on a path must stay on one line");function a(r){if(!N(r))return r;if(r.source.file===t.source.file&&r.source.start===t.source.start)return r.children.length?{...r,children:[e.value]}:{...r,props:{...r.props,children:e.value}};let c=r.children.map(a);return c.some((d,s)=>d!==r.children[s])?{...r,children:c}:r}let o={...n.document,root:a(n.document.root)};return{...n,document:o,outline:ae(o,{fps:n.fps,duration:n.duration})}}var ro=new WeakMap;function Pr(n){let e=ro.get(n);if(e)return e;let t=new Map,a=o=>o.ref?[o]:(o.parts??[]).flatMap(a);for(let o of Ke(n))for(let r of["property","knob"])for(let c of(r==="knob"?o.knobs:o.properties)??[]){let d=De(n,o.id,c.name,0,r);for(let s of a(d)){let h=JSON.stringify([s.ref.$ref,s.ref.name]),u=t.get(h)??[];u.push({clipId:o.id,kind:r,spec:c,offset:n.outline.rows.find(b=>b.id===s.owner.id)?.clockOffset??0}),t.set(h,u)}}for(let o of ee(n.document).nodes.values()){let r=Ke(n).find(c=>q(n,c)===o.id)?.id??o.id;for(let[c,d]of(o.props.effects??[]).entries()){let s=nn(n.document,d);for(let[h,u]of Object.entries(s?.knobs??{})){let b=De(n,r,h,0,"knob",c);for(let S of a(b)){let k=JSON.stringify([S.ref.$ref,S.ref.name]),i=t.get(k)??[];i.push({clipId:r,kind:"knob",spec:{name:h,schema:u,editable:!0},effectIndex:c,offset:n.outline.rows.find(_=>_.id===S.owner.id)?.clockOffset??0}),t.set(k,i)}}}}return ro.set(n,t),t}var Mr=n=>JSON.stringify([n.binding,n.name,n.at]);var co=(n,e)=>Array.isArray(n)?Array.isArray(e)&&n.length===e.length&&n.every((t,a)=>co(t,e[a])):typeof n==typeof e&&(typeof e!="number"||Number.isFinite(e))&&e!==void 0&&e!==null;function io(n,e){if(!Array.isArray(e.edits)||!e.edits.length)throw new Error("No keyframes selected");let t={...n.document.bindings},a=new Map,o=new Set;for(let b of e.edits){let S=Mr(b);if(o.has(S))throw new Error("Duplicate keyframe edit");o.add(S);let k=t[b.binding],i=k?.definition[b.name];if(k?.kind!=="motion"||!i)throw new Error("Motion track no longer exists");if(b.insert){if(!Number.isFinite(b.at)||b.at<0||!("value"in b)||b.delete||b.newAt!==void 0)throw new Error("Invalid pasted keyframe")}else if(!Number.isFinite(b.at)||!i.keyframes?.some(m=>Math.abs(m.at-b.at)<1e-7))throw new Error("Keyframe no longer exists");if(b.newAt!==void 0&&(!Number.isFinite(b.newAt)||b.newAt<0))throw new Error("Keyframes cannot move before local time zero");if("value"in b&&!co(i.default,b.value))throw new Error("Invalid keyframe value");if(b.easing!==void 0&&!Se(b.easing))throw new Error("Invalid interpolation");let _=JSON.stringify([b.binding,b.name]);a.has(_)||a.set(_,[]),a.get(_).push(b)}let r=new Map;for(let b of a.values()){let{binding:S,name:k}=b[0],i=t[S],_=i.definition[k],m=(_.keyframes??[]).flatMap(l=>{let f=b.find(p=>!p.insert&&Math.abs(p.at-l.at)<1e-7);return f?f.delete?[]:[{...l,...f.newAt!==void 0?{at:f.newAt}:{},..."value"in f?{value:f.value}:{},...f.easing!==void 0?{easing:f.easing}:{}}]:[l]}).concat(b.filter(l=>l.insert).map(l=>({at:l.at,value:l.value,...l.easing!==void 0?{easing:l.easing}:{}}))).sort((l,f)=>l.at-f.at);if(m.some((l,f)=>f>0&&Math.abs(l.at-m[f-1].at)<1e-7))throw new Error("A keyframe already exists at this time");!m.length&&_.keyframes?.length&&r.set(JSON.stringify([S,k]),_.keyframes.reduce((l,f)=>f.at>l.at?f:l).value),t[S]={...i,definition:{...i.definition,[k]:{..._,keyframes:m}}}}function c(b){if(!b||typeof b!="object")return b;if(typeof b.$ref=="string"){let i=JSON.stringify([b.$ref,b.name]);return r.has(i)?r.get(i):b}let S=Object.entries(b),k=S.map(([,i])=>c(i));return k.every((i,_)=>i===S[_][1])?b:Array.isArray(b)?k:Object.fromEntries(S.map(([i],_)=>[i,k[_]]))}function d(b){if(!N(b))return b;let S=c(b.props),k=b.children.map(d);return S===b.props&&k.every((i,_)=>i===b.children[_])?b:{...b,props:S,children:k}}let s={...n.document,bindings:t,...r.size?{root:d(n.document.root)}:{}},h={...n,document:s,outline:ae(s,{duration:n.duration,fps:n.fps})},u=e.edits.filter(b=>"value"in b&&!b.delete);if(u.length){let b=Pr(n);for(let S of u)for(let{clipId:k,kind:i,spec:_,offset:m,effectIndex:l}of b.get(JSON.stringify([S.binding,S.name]))??[]){let f=De(h,k,_.name,m+(S.newAt??S.at),i,l);if(!f.editable||!(i==="knob"?et(_.schema,f.value):Me(_.name,f.value,_)))throw new Error(`Invalid ${_.name} keyframe value`)}}return h}function so(n){return Math.max(-1,...n.clips.map(e=>e.track),...Object.keys(n.tracks??{}).map(Number))+1}function fo(n,e){let t=so(n);if(!Number.isInteger(e)||e<0||e>t)throw new Error("Invalid track insertion");if(t>=100)throw new Error("Maximum 100 tracks");let a={[e]:{}};for(let o=0;o<t;o++)a[o>=e?o+1:o]=n.tracks?.[o]??{};return{...n,tracks:a,clips:n.clips.map(o=>o.track>=e?{...o,track:o.track+1}:o)}}function bo(n,e){if(!Number.isInteger(e.track)||e.track<0||e.track>99)throw new Error("Track must be an integer from 0 to 99");if(!e.changes||typeof e.changes!="object"||Array.isArray(e.changes)||!Object.keys(e.changes).length)throw new Error("Provide track metadata changes");let{label:t,...a}=e.changes,o=mt({[e.track]:t===null?a:e.changes})[e.track],r={...n?.[e.track],...o};return t===null&&delete r.label,mt({...n,[e.track]:r})}function lo(n,e){if(!["move","trim"].includes(e.type))return n;if(e.insertTrack!==void 0&&(typeof e.insertTrack!="boolean"||e.type!=="move"))throw new Error("Track insertion requires a move command");if(Y(n,e.id)?.nested&&(e.insertTrack||e.track!==void 0))throw new Error("Nested clips stay inside their parent; tracks belong to the Scene.");e.insertTrack&&(n=fo(n,e.track));let t=Y(n,e.id);if(!t)throw new Error("Clip no longer exists");let a={...t,pending:!0,start:e.type==="move"?e.start:t.start,duration:e.type==="trim"?e.duration:t.duration,track:e.track??t.track};return{...n,[t.nested?"nestedClips":"clips"]:n[t.nested?"nestedClips":"clips"].map(o=>o.id===t.id?a:o)}}function Un(n,e,t=!1){function a(r){if(N(r)){if(r.id===e)return r;for(let c of r.children){let d=a(c);if(d)return d}}}let o=a(n?.root);if(!o||o.type!=="Group"&&!t)throw new Error("Group no longer exists");return o}function uo(n){let e=n.changes;if(!e||typeof e!="object"||Array.isArray(e)||!Object.keys(e).length||Object.keys(e).some(t=>!["hidden","solo","label"].includes(t)))throw new Error("Group controls accept hidden, solo and label only");if(Ye(e),"label"in e&&je(e.label),Object.entries(e).some(([t,a])=>t!=="label"&&typeof a!="boolean"))throw new Error("Group controls require boolean values");return e}function ho(n,e){let t=Un(n,e.nodeId,!0),a=uo(e);function o(r){if(!N(r))return r;let c=r.source.file===t.source.file&&r.source.start===t.source.start;return{...r,props:c?{...r.props,...a}:r.props,children:r.children.map(o)}}return{...n,root:o(n.root)}}function go(n,e){let t=Y(n,e.id);if(!t?.nested)throw new Error("Select a layer inside a group");if(e.track!==void 0||e.insertTrack)throw new Error("Nested clips stay inside their parent; tracks belong to the Scene.");if(e.beforeId!==null&&typeof e.beforeId!="string")throw new Error("Choose a sibling insertion position");let a=Un(n.document,t.parentId),o=a.children.find(c=>N(c)&&c.id===t.nodeId),r=e.beforeId===null?null:a.children.find(c=>N(c)&&c.id===e.beforeId);if(!o||e.beforeId!==null&&(!r||r===o||r.source.file!==o.source.file))throw new Error("Layers can only be reordered among siblings");return{clip:t,node:o,before:r}}function po(n,{node:e,before:t}){let a=(r,c)=>N(r)&&c&&r.source.file===c.source.file&&r.source.start===c.source.start;function o(r,c){if(!N(r))return r;let d=r.children,s=d.find(u=>a(u,e));if(s){d=d.filter(b=>b!==s);let u=t?d.findIndex(b=>a(b,t)):d.length;d=[...d.slice(0,u),s,...d.slice(u)]}let h=0;return{...r,runtimePath:c,children:d.map(u=>o(u,c===null||r.type==="Model"||N(u)&&u.type==="Camera"?null:[c,h++].filter(b=>b!=="").join(".")))}}return{...n,root:an(o(n.root,n.root.runtimePath))}}var Rr=n=>["batch","effect-add","effect-remove","effect-move","effect-enabled","move","trim","trim-start","clip-envelope","reorder","property","properties","text","knob","track","group"].includes(n.type);function sn(n,e){if(e.type==="effect-add"||e.type==="effect-remove"||e.type==="effect-move"||e.type==="effect-enabled")return eo(n,e);if(e.type==="text")return oo(n,e);if(e.type==="batch")return e.commands.reduce(sn,n);if(e.type==="trim-start"||e.type==="clip-envelope")return Wn(n,e);if(e.type==="keyframes")return io(n,e);if(n.document&&(e=Ya(e)),e.type==="properties")return Qa(n,e);if(!Rr(e))return n;if(e.type==="reorder"||e.beforeId!==void 0){let s=go(n,e),{beforeId:h,...u}=e,b=e.type==="move"?sn(n,u):n,S=po(b.document,s);return{...b,document:S,outline:ae(S,{duration:b.duration,fps:b.fps})}}if(e.type==="group"){let s=ho(n.document,e);return{...n,document:s,outline:ae(s,{duration:n.duration,fps:n.fps})}}if(e.type==="track"){let s=bo(n.tracks,e),h=n.document&&{...n.document,root:{...n.document.root,props:{...n.document.root.props,tracks:s}}};return{...n,tracks:s,...h?{document:h,outline:ae(h,{duration:n.duration,fps:n.fps})}:{}}}e.type==="trim"&&n.document&&(n=ao(n,e.id,e.duration));let t=lo(n,e),a=Y(t,e.id);if(!a)throw new Error("Clip no longer exists");if(e.type==="property"||e.type==="knob"){let s=e.type==="knob"?"knobs":"properties";t={...t,[a.nested?"nestedClips":"clips"]:t[a.nested?"nestedClips":"clips"].map(h=>h.id===a.id?{...h,pending:!0,[s]:h[s].map(u=>u.name===e.name?{...u,value:e.value}:u)}:h)}}if(!t.document)return t;let o=q(n,a),r=e.insertTrack?new Map(t.clips.map(s=>[q(n,s),s.track])):null;function c(s){if(!N(s))return s;if(s.id===o||a.nested&&s.source.file===a.sourceFile&&s.source.start===a.sourceStart){let b=e.type==="move"?{start:e.start,...a.nested?{}:{track:e.track??a.track}}:e.type==="trim"?{duration:e.duration}:e.type==="knob"?{values:{...s.props.values,[e.name]:e.value}}:{[e.name]:e.value};return{...s,props:{...s.props,...b},...e.type==="knob"?{valueSources:{...s.valueSources,[e.name]:s.source.file}}:{}}}let h=s.children.map(c),u=r&&s.type==="Scene"?{...s.props,tracks:t.tracks}:r?.has(s.id)?{...s.props,track:r.get(s.id)}:s.props;return u!==s.props||h.some((b,S)=>b!==s.children[S])?{...s,props:u,children:h}:s}let d={...t.document,root:c(t.document.root)};return{...t,document:d,...a.nested?{nestedClips:t.nestedClips.map(s=>s.sourceFile===a.sourceFile&&s.sourceStart===a.sourceStart?{...s,...e.type==="move"?{start:e.start,timingWindow:!0}:e.type==="trim"?{duration:e.duration,durationExplicit:!0,timingWindow:!0}:{[e.type==="knob"?"knobs":"properties"]:s[e.type==="knob"?"knobs":"properties"].map(h=>h.name===e.name?{...h,value:e.value}:h)}}:s)}:{},outline:ae(d,{duration:t.duration,fps:t.fps})}}var Re=globalThis,L,vt,St,Et,me,Fr=new Pt,dn=new At,fn=!1,zn=!1,_o=n=>Re.postMessage({type:"error",message:String(n)});function mo(){dn.clear(),vt?.free(),L?.free(),vt=void 0,L=void 0,Re.postMessage({type:"disposed"}),Re.close()}async function Or(n){if(n.type==="dispose"){zn=!0,fn||mo();return}if(fn)throw new Error("Worker received overlapping frame requests");fn=!0;try{if(n.type==="init"){me=n.canvas,await da(),L=await ia(me,_o),vt=new ze,L.set_mode(0),L.set_effect(0),L.set_orbit(0,0),L.set_transparent(!0),L.set_render_scale(2),L.set_frame_cache_budget(128*1024*1024),Re.postMessage({type:"ready"});return}if(!L||!vt||!me)throw new Error("Worker renderer is not initialized");let e=n.request;if(St=e.document??St,!St)throw new Error("Worker document is missing");let t=performance.now();if(Fr.update(St,e.scene,e.revision,!!e.edit)&&(L.clear_frame_cache(),dn.clear()),!e.edit&&L.show_cached_frame(e.frame)){await L.submitted_work_done(),Re.postMessage({type:"frame",id:e.id,generation:e.generation,frame:e.frame,width:me.width,height:me.height,workMs:0,gpuWaitMs:performance.now()-t,cached:!0,cacheSource:"gpu",cacheBytes:L.frame_cache_bytes()});return}if(!e.edit){let k=await dn.get(e.frame);if(k){L.restore_frame_pixels(k),L.cache_frame(e.frame),await L.submitted_work_done(),Re.postMessage({type:"frame",id:e.id,generation:e.generation,frame:e.frame,width:me.width,height:me.height,workMs:0,gpuWaitMs:performance.now()-t,cached:!0,cacheSource:"archive",cacheBytes:L.frame_cache_bytes()});return}}let a=St;if(e.edit){if(Et=e.edit.snapshot??Et,!Et?.available)throw new Error("Worker edit snapshot is unavailable");a=e.edit.command?sn(Et,e.edit.command).document:Et.document}let{meta:o,scene:r,imageKeys:c}=Ga(a,e.frame,!0),d=c.filter(k=>k.startsWith("film:"));L.retain_film_tables(d.join(`
33
+ `));for(let k of d)if(!L.has_film_table(k)){let i=await Zn(k,"/api/film/tables");if(!L.add_image_encoded(k,i))throw new Error(`Invalid film table: ${k}`)}let s=o.width*2,h=o.height*2;(me.width!==s||me.height!==h)&&(me.width=s,me.height=h,L.resize(s,h));let u=r.motionSamples??[r];u.length>1&&L.begin_temporal_frame(u.length);try{for(let k of u){let i=vt.encode(JSON.stringify(o),JSON.stringify(k),L);L.update_scene(i),L.render(k.time),u.length>1&&await L.submitted_work_done()}u.length>1&&L.finish_temporal_frame()}catch(k){throw L.cancel_temporal_frame(),k}e.edit||L.cache_frame(e.frame);let b=performance.now();await L.submitted_work_done(),!e.edit&&!zn&&dn.capture(e.frame,()=>L.read_frame_pixels());let S=L.shader_errors();if(S)throw new Error(S);Re.postMessage({type:"frame",id:e.id,generation:e.generation,frame:e.frame,width:s,height:h,workMs:b-t,gpuWaitMs:performance.now()-b,cached:!1,cacheSource:"render",cacheBytes:L.frame_cache_bytes()})}finally{fn=!1,zn&&mo()}}Re.onmessage=n=>{Or(n.data).catch(_o)};