# GIF codec provenance `omggif.mjs` is vendored from Dean McNamee's [omggif](https://github.com/deanm/omggif), commit `0ec9069a525ec66223eadda3d62059d3685fd3b0`, under its included MIT license. There are no runtime package/CDN requests. Original `omggif.js` SHA256: `2ecd70b71f012ee8a9d51bdd6f2a61a4b304e5fd25e9600931e6ef77437de793` (32,396 bytes). Local adaptations: ESM exports; throw instead of logging truncated/oversized LZW output; require an end-of-information code; reject invalid LZW dictionary references and palette indices; correct the output bound to reject one extra decoded pixel; grow the encoder's end-marker width when the final data code crosses a dictionary boundary. The surrounding parser in `gif.mjs` checks all input block bounds, palettes, frame rectangles and resource limits before invoking the codec. It also applies GCE scope explicitly and composites disposal 0/1, 2 and 3 before resizing. Tests compare independent Pillow-generated frame pixels and GIF metadata. The encoder handles resizing, speed changes and generated scrolling text; compatible unmodified native GIFs retain their bytes.