keksbruch — parser divergence matrix

How cookie parsers across languages handle the same difficult and malformed wire — surfacing where implementations diverge. Generated by cargo test -p keksbruch --features differential -- --ignored.

Download the same matrix: Markdown · CSV · JSON

Legend

symbolmeaning
[n=v, …]a request Cookie: header parsed into these name=value pairs, in order
parsed successfully, but into zero cookies
name=value ;Attr;…a Set-Cookie parsed into one cookie, with its attributes after the ;
the parser rejected the whole header or cookie (fail-hard)
n/athe parser does not handle this direction (e.g. a request-only library asked to parse a Set-Cookie)
SKIPthe parser or its toolchain was unavailable in this run
☠️the parser crashed on this payload — an in-process panic, or a sidecar killed by a signal, a non-zero exit, or a hang
⚠️the parser accepted the cookie/header but reported recovered issues — hover the cell for the list; issues never affect the outcome or the consensus vote
a proxy (nginx) forwarded the cookie byte-for-byte
≠ …a proxy forwarded the cookie but altered the bytes (the altered value follows)
⟨array⟩ / ⟨object⟩the value was parsed as a non-string type — PHP's $_COOKIE arrays/maps — shown by type name
☢️on a Set-Cookie, the tool's parse contradicts kekse's typed reading: it stored a cookie kekse rejects, read an attribute value differently, or asserted one kekse never parsed (hover in the HTML report for the field-by-field comparison)
Path⇒defaulta jar dropped the wire's unusable or absent Path and scoped the cookie to its request default-path (§5.1.4); the harness value (browsers /r, curl/wget/libcurl/HttpClient5 /) is plumbing, so the fall-back is stated, not printed

A bold cell differs from the real-world consensus — the modal outcome of the other parsers. A ☢️ cell is the mirror axis: it contradicts kekse, the subject we assert is correct, rather than the crowd — the two marks are independent, and a cell may carry both. kekse — and, on the jar probes, the rfc_6265 reference — is a subject under test, excluded from the consensus vote. Rows are tools, columns are tests; the payload row is the exact wire (non-displayable bytes shown \0 \r \n \xNN). The matrix is split into three tables: the request Cookie: parsers, the response Set-Cookie: parsers, and the jar probes (client stores exercised end-to-end), each listing only the tools that engage that axis (so none is a wall of n/a).

Request Cookie: parsers

toolws-surroundingws-internalctl-nulctl-crlfctl-otherquote-unbalancedquote-interiorpct-truncatedpct-bad-utf8raw-non-utf8delim-semicolondelim-empty-segmentsno-equalsextra-equalsdup-namedup-caseempty-nameempty-valueraw-non-asciinon-ascii-namescale-huge-valuescale-many-pairsscale-control-junkreq-partitioned-namenul-in-namenul-between-cookiestab-aroundraw-emojipct-emojiarray-nameassoc-namejson-valuebracket-valuemarkup-no-equalsmarkup-namequoted-html-valuetruthyequals-bareequals-doublenul-empty-name
payload n = v n=a bn=a\0b; m=okn=a\r\nb; m=okn=a\x01b; m=okn="v; m=okn=a"b; m=okn=%4; m=okn=%FF; m=okn=a\xffbn=a;evil=1n=v;;;m=wflag; n=vn=a=bk=1; k=2; k=3sid=lo; SID=hi=v; m=okn=; m=okn=café; m=oknaïve=v; m=okn=xxxxxxxxxxxxxxxxxxxxxxxxxx…<4098>k0=v0; k1=v1; k2=v2; k3=v3; …<172>a=1; j=\x01\x01\x01\x01\x01\…<16396>Partitioned=false; m=okn\0x=v; m=oka=1; \0b=2; c=3\tn\t=\tv\t; m=okn=🤖; m=okn=%F0%9F%A4%96; m=oktoken[]=nested; m=oksess[k]=v; m=okdata={"testdata":"JSON"}; m=okdata=[nested]; m=ok<script>; m=ok<script>=empty; m=okdata="<img src=x />"; m=oktruthy=yes; m=ok===\0=; m=ok
RFC (standard); splits → 2 pairsskip bad pair, keep restsplit on first =all duplicates keptskip bad pair, keep restempty value is validnon-token name skippednon-token name skippedDQUOTE is not a cookie-octet[ ] are cookie-octetsskip bad pair, keep restnon-token name skippedskip bad pair, keep restskip bad pair, keep restnon-token name skipped
consensus[n=v][n=a b][n=a\0b, m=ok][n=a\r\nb, m=ok][n=a\x01b, m=ok][n="v, m=ok][n=a"b, m=ok][n=%4, m=ok][n=%FF, m=ok][n=aÿb][n=a, evil=1][n=v, m=w][flag=, n=v][n=a=b][k=1, k=2, k=3][sid=lo, SID=hi][m=ok][n=, m=ok][n=café, m=ok][naïve=v, m=ok][n=xxx...xxx…<4096 chars>][k0=v0, k1=v1, k2=v2, k3=v3, …(+17 more)][a=1, j=\x01\x01\x01...\x01\x01\x01…<4096 chars>, b=2][Partitioned=false, m=ok][n\0x=v, m=ok][a=1, \0b=2, c=3][n=v, m=ok][n=ð\x9f¤\x96, m=ok][n=%F0%9F%A4%96, m=ok][token[]=nested, m=ok][sess[k]=v, m=ok][data={"testdata":"JSON"}, m=ok][data=[nested], m=ok][m=ok][<script>=empty, m=ok][data=<img src=x />, m=ok][truthy=yes, m=ok][\0=, m=ok]
rust/kekse (lenient)[n=v][n=a b][m=ok] ⚠️
• cookie `n` value `a\0b` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
[m=ok] ⚠️
• cookie `n` value `a\r\nb` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
[m=ok] ⚠️
• cookie `n` value `a\u{1}b` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
[m=ok] ⚠️
• cookie `n` value `\"v` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
[m=ok] ⚠️
• cookie `n` value `a\"b` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
[n=%4, m=ok][m=ok] ⚠️
• cookie `n` value `%FF` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
n/a[n=a, evil=1][n=v, m=w][n=v] ⚠️
• cookie pair `flag` has no `=`
[n=a=b][k=1, k=2, k=3][sid=lo, SID=hi][m=ok] ⚠️
• cookie name `` is empty or not a token
[n=, m=ok][m=ok] ⚠️
• cookie `n` value `café` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
[m=ok] ⚠️
• cookie name `naïve` is empty or not a token
[n=xxx...xxx…<4096 chars>][k0=v0, k1=v1, k2=v2, k3=v3, …(+17 more)][a=1, b=2] ⚠️
• cookie `j` value `\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
[Partitioned=false, m=ok][m=ok] ⚠️
• cookie name `n\0x` is empty or not a token
[a=1, c=3] ⚠️
• cookie name `\0b` is empty or not a token
[n=v, m=ok][m=ok] ⚠️
• cookie `n` value `🤖` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
[n=🤖, m=ok][m=ok] ⚠️
• cookie name `token[]` is empty or not a token
[m=ok] ⚠️
• cookie name `sess[k]` is empty or not a token
[m=ok] ⚠️
• cookie `data` value `{\"testdata\":\"JSON\"}` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
[data=[nested], m=ok][m=ok] ⚠️
• cookie pair `<script>` has no `=`
[m=ok] ⚠️
• cookie name `<script>` is empty or not a token
[data=<img src=x />, m=ok][truthy=yes, m=ok]∅ ⚠️
• cookie name `` is empty or not a token
∅ ⚠️
• cookie name `` is empty or not a token
[m=ok] ⚠️
• cookie name `\0` is empty or not a token
rust/kekse (strict)[n=v]∅ ⚠️
• cookie `n` value `a b` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
[m=ok] ⚠️
• cookie `n` value `a\0b` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
[m=ok] ⚠️
• cookie `n` value `a\r\nb` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
[m=ok] ⚠️
• cookie `n` value `a\u{1}b` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
[m=ok] ⚠️
• cookie `n` value `\"v` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
[m=ok] ⚠️
• cookie `n` value `a\"b` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
[n=%4, m=ok][m=ok] ⚠️
• cookie `n` value `%FF` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
n/a[n=a, evil=1][n=v, m=w][n=v] ⚠️
• cookie pair `flag` has no `=`
[n=a=b][k=1, k=2, k=3][sid=lo, SID=hi][m=ok] ⚠️
• cookie name `` is empty or not a token
[n=, m=ok][m=ok] ⚠️
• cookie `n` value `café` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
[m=ok] ⚠️
• cookie name `naïve` is empty or not a token
[n=xxx...xxx…<4096 chars>][k0=v0, k1=v1, k2=v2, k3=v3, …(+17 more)][a=1, b=2] ⚠️
• cookie `j` value `\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
[Partitioned=false, m=ok][m=ok] ⚠️
• cookie name `n\0x` is empty or not a token
[a=1, c=3] ⚠️
• cookie name `\0b` is empty or not a token
[n=v, m=ok][m=ok] ⚠️
• cookie `n` value `🤖` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
[n=🤖, m=ok][m=ok] ⚠️
• cookie name `token[]` is empty or not a token
[m=ok] ⚠️
• cookie name `sess[k]` is empty or not a token
[m=ok] ⚠️
• cookie `data` value `{\"testdata\":\"JSON\"}` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
[data=[nested], m=ok][m=ok] ⚠️
• cookie pair `<script>` has no `=`
[m=ok] ⚠️
• cookie name `<script>` is empty or not a token
[m=ok] ⚠️
• cookie `data` value `\"<img src=x />\"` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
[truthy=yes, m=ok]∅ ⚠️
• cookie name `` is empty or not a token
∅ ⚠️
• cookie name `` is empty or not a token
[m=ok] ⚠️
• cookie name `\0` is empty or not a token
rust/kekse (fail-hard)[n=v]
1 refused pair(s): cookie `n` value `a b` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
1 refused pair(s): cookie `n` value `a\0b` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
1 refused pair(s): cookie `n` value `a\r\nb` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
1 refused pair(s): cookie `n` value `a\u{1}b` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
1 refused pair(s): cookie `n` value `\"v` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
1 refused pair(s): cookie `n` value `a\"b` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
[n=%4, m=ok]
1 refused pair(s): cookie `n` value `%FF` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
n/a[n=a, evil=1][n=v, m=w]
1 refused pair(s): cookie pair `flag` has no `=`
[n=a=b][k=1, k=2, k=3][sid=lo, SID=hi]
1 refused pair(s): cookie name `` is empty or not a token
[n=, m=ok]
1 refused pair(s): cookie `n` value `café` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
1 refused pair(s): cookie name `naïve` is empty or not a token
[n=xxx...xxx…<4096 chars>][k0=v0, k1=v1, k2=v2, k3=v3, …(+17 more)]
1 refused pair(s): cookie `j` value `\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
[Partitioned=false, m=ok]
1 refused pair(s): cookie name `n\0x` is empty or not a token
1 refused pair(s): cookie name `\0b` is empty or not a token
[n=v, m=ok]
1 refused pair(s): cookie `n` value `🤖` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
[n=🤖, m=ok]
1 refused pair(s): cookie name `token[]` is empty or not a token
1 refused pair(s): cookie name `sess[k]` is empty or not a token
1 refused pair(s): cookie `data` value `{\"testdata\":\"JSON\"}` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
[data=[nested], m=ok]
1 refused pair(s): cookie pair `<script>` has no `=`
1 refused pair(s): cookie name `<script>` is empty or not a token
1 refused pair(s): cookie `data` value `\"<img src=x />\"` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
[truthy=yes, m=ok]
1 refused pair(s): cookie name `` is empty or not a token
1 refused pair(s): cookie name `` is empty or not a token
1 refused pair(s): cookie name `\0` is empty or not a token
rust/cookie[n=v][n=a b][n=a\0b, m=ok][n=a\r\nb, m=ok][n=a\x01b, m=ok][n="v, m=ok][n=a"b, m=ok][n=%4, m=ok][m=ok] ⚠️
• decoding the cookie's name or value resulted in invalid UTF-8
n/a[n=a, evil=1][n=v, m=w][n=v] ⚠️
• the cookie is missing a name/value pair
[n=a=b][k=1, k=2, k=3][sid=lo, SID=hi][m=ok] ⚠️
• the cookie's name is empty
[n=, m=ok][n=café, m=ok][naïve=v, m=ok][n=xxx...xxx…<4096 chars>][k0=v0, k1=v1, k2=v2, k3=v3, …(+17 more)][a=1, j=\x01\x01\x01...\x01\x01\x01…<4096 chars>, b=2][Partitioned=false, m=ok][n\0x=v, m=ok][a=1, \0b=2, c=3][n=v, m=ok][n=🤖, m=ok][n=🤖, m=ok][token[]=nested, m=ok][sess[k]=v, m=ok][data={"testdata":"JSON"}, m=ok][data=[nested], m=ok][m=ok] ⚠️
• the cookie is missing a name/value pair
[<script>=empty, m=ok][data="<img src=x />", m=ok][truthy=yes, m=ok]∅ ⚠️
• the cookie's name is empty
∅ ⚠️
• the cookie's name is empty
[\0=, m=ok]
rust/biscotti[n=v][n=a b][n=a\0b, m=ok][n=a\r\nb, m=ok][n=a\x01b, m=ok][n="v, m=ok][n=a"b, m=ok][n=%4, m=ok]
Failed to parse cookies out of a header value
n/a[n=a, evil=1][n=v, m=w]
Failed to parse cookies out of a header value
[n=a=b][k=1, k=2, k=3][sid=lo, SID=hi]
Failed to parse cookies out of a header value
[n=, m=ok][n=café, m=ok][naïve=v, m=ok][n=xxx...xxx…<4096 chars>][k0=v0, k1=v1, k2=v2, k3=v3, …(+17 more)][a=1, j=\x01\x01\x01...\x01\x01\x01…<4096 chars>, b=2][Partitioned=false, m=ok][n\0x=v, m=ok][a=1, \0b=2, c=3][n=v, m=ok][n=🤖, m=ok][n=🤖, m=ok][token[]=nested, m=ok][sess[k]=v, m=ok][data={"testdata":"JSON"}, m=ok][data=[nested], m=ok]
Failed to parse cookies out of a header value
[<script>=empty, m=ok][data="<img src=x />", m=ok][truthy=yes, m=ok]
Failed to parse cookies out of a header value
Failed to parse cookies out of a header value
[\0=, m=ok]
rust/axum-extra[n=v][n=a b]
not a valid header value
not a valid header value
not a valid header value
[m=ok, n="v][m=ok, n=a"b][m=ok, n=%4][m=ok]n/a[evil=1, n=a][m=w, n=v][n=v][n=a=b][k=3][SID=hi, sid=lo][m=ok][m=ok, n=][n=xxx...xxx…<4096 chars>][k0=v0, k1=v1, k10=v10, k11=v11, …(+17 more)]
not a valid header value
[Partitioned=false, m=ok]
not a valid header value
not a valid header value
[m=ok, n=v][m=ok, n=🤖][m=ok, token[]=nested][m=ok, sess[k]=v][data={"testdata":"JSON"}, m=ok][data=[nested], m=ok][m=ok][<script>=empty, m=ok][data="<img src=x />", m=ok][m=ok, truthy=yes]
not a valid header value
python/SimpleCookie[n=v][n=%4, m=ok][n=%FF, m=ok][n=a, evil=1][n=v][n=a=b][k=3][sid=lo, SID=hi][n=, m=ok][n=xxx...xxx…<4096 chars>][k0=v0, k1=v1, k2=v2, k3=v3, …(+17 more)][a=1][Partitioned=false, m=ok][a=1][n=v, m=ok][n=%F0%9F%A4%96, m=ok][data=[nested], m=ok]
CookieError: Illegal key '<script>'
[data=<img src=x />, m=ok][truthy=yes, m=ok]
CookieError: Illegal key '='
python/Werkzeug[n=v][n=a b][n=a\0b, m=ok][a\r\nb=, m=ok][n=a\x01b, m=ok][n="v, m=ok][n=a"b, m=ok][n=%4, m=ok][n=%FF, m=ok]
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 3: invalid start byte
[n=a, evil=1][n=v, m=w][flag=, n=v][n=a=b][k=1, k=2, k=3][sid=lo, SID=hi][m=ok][n=, m=ok][n=café, m=ok][naïve=v, m=ok][n=xxx...xxx…<4096 chars>][k0=v0, k1=v1, k2=v2, k3=v3, …(+17 more)][a=1, j=\x01\x01\x01...\x01\x01\x01…<4096 chars>, b=2][Partitioned=false, m=ok][n\0x=v, m=ok][a=1, \0b=2, c=3][n=v, m=ok][n=🤖, m=ok][n=%F0%9F%A4%96, m=ok][token[]=nested, m=ok][sess[k]=v, m=ok][data={"testdata":"JSON"}, m=ok][data=[nested], m=ok][<script>=, m=ok][<script>=empty, m=ok][data=<img src=x />, m=ok][truthy=yes, m=ok][\0=, m=ok]
python/mitmproxy[n = v ][n=a b][n=a\0b, m=ok][n=a\r\nb, m=ok][n=a\x01b, m=ok][n=v; m=ok][n=a"b, m=ok][n=%4, m=ok][n=%FF, m=ok][n=aÿb][n=a, evil=1][n=v, m=w][flag=, n=v][n=a=b][k=1, k=2, k=3][sid=lo, SID=hi][=v, m=ok][n=, m=ok][n=café, m=ok][naïve=v, m=ok][n=xxx...xxx…<4096 chars>][k0=v0, k1=v1, k2=v2, k3=v3, …(+17 more)][a=1, j=\x01\x01\x01...\x01\x01\x01…<4096 chars>, b=2][Partitioned=false, m=ok][n\0x=v, m=ok][a=1, \0b=2, c=3][n\t=\tv\t, m=ok][n=ð\x9f¤\x96, m=ok][n=%F0%9F%A4%96, m=ok][token[]=nested, m=ok][sess[k]=v, m=ok][data={"testdata":"JSON"}, m=ok][data=[nested], m=ok][<script>=, m=ok][<script>=empty, m=ok][data=<img src=x />, m=ok][truthy=yes, m=ok][==][\0=, m=ok]
node/cookie[n=v][n=a b][n=a\0b, m=ok][n=a\r\nb, m=ok][n=a\x01b, m=ok][n="v, m=ok][n=a"b, m=ok][n=%4, m=ok][n=%FF, m=ok][n=aÿb][n=a, evil=1][n=v, m=w][n=v][n=a=b][k=1][sid=lo, SID=hi][=v, m=ok][n=, m=ok][n=café, m=ok][naïve=v, m=ok][n=xxx...xxx…<4096 chars>][k0=v0, k1=v1, k2=v2, k3=v3, …(+17 more)][a=1, j=\x01\x01\x01...\x01\x01\x01…<4096 chars>, b=2][Partitioned=false, m=ok][n\0x=v, m=ok][a=1, \0b=2, c=3][n=v, m=ok][n=ð\x9f¤\x96, m=ok][n=🤖, m=ok][token[]=nested, m=ok][sess[k]=v, m=ok][data={"testdata":"JSON"}, m=ok][data=[nested], m=ok][m=ok][<script>=empty, m=ok][data=<img src=x />, m=ok][truthy=yes, m=ok][==][\0=, m=ok]
node/universal-cookie[n=v][n=v][n=a b][n=a\0b, m=ok][n=a\r\nb, m=ok][n=a\x01b, m=ok][n="v, m=ok][n=a"b, m=ok][n=%4, m=ok][n=%FF, m=ok][n=aÿb][n=a, evil=1][n=v, m=w][n=v][n=a=b][k=1][sid=lo, SID=hi][=v, m=ok][n=, m=ok][n=café, m=ok][naïve=v, m=ok][n=xxx...xxx…<4096 chars>][k0=v0, k1=v1, k2=v2, k3=v3, …(+17 more)][a=1, j=\x01\x01\x01...\x01\x01\x01…<4096 chars>, b=2][Partitioned=false, m=ok][n\0x=v, m=ok][a=1, \0b=2, c=3][n=v, m=ok][n=ð\x9f¤\x96, m=ok][n=🤖, m=ok][token[]=nested, m=ok][sess[k]=v, m=ok][data={"testdata":"JSON"}, m=ok][data=[nested], m=ok][m=ok][<script>=empty, m=ok][data="<img src=x />", m=ok][truthy=yes, m=ok][==]
node/js-cookie[ n = v ][n=a b][n=a\0b, m=ok][n=a\r\nb, m=ok][n=a\x01b, m=ok][n=, m=ok][n=a"b, m=ok][n=%4, m=ok][m=ok][n=aÿb][n=a;evil=1][n=v;;;m=w][flag=, n=v][n=a=b][k=1][sid=lo, SID=hi][=v, m=ok][n=, m=ok][n=café, m=ok][naïve=v, m=ok][n=xxx...xxx…<4096 chars>][k0=v0, k1=v1, k2=v2, k3=v3, …(+17 more)][a=1, j=\x01\x01\x01...\x01\x01\x01…<4096 chars>, b=2][Partitioned=false, m=ok][n\0x=v, m=ok][a=1, \0b=2, c=3][\tn\t=\tv\t, m=ok][n=ð\x9f¤\x96, m=ok][n=🤖, m=ok][token[]=nested, m=ok][sess[k]=v, m=ok][data={"testdata":"JSON"}, m=ok][data=[nested], m=ok][<script>=, m=ok][<script>=empty, m=ok][data=<img src=x />, m=ok][truthy=yes, m=ok][=][==][\0=, m=ok]
go/net/http
http: invalid cookie name
[n=a b]
http: invalid cookie value
http: invalid cookie value
http: invalid cookie value
http: invalid cookie value
http: invalid cookie value
[n=%4, m=ok][n=%FF, m=ok]
http: invalid cookie value
[n=a, evil=1]
http: '=' not found in cookie
http: '=' not found in cookie
[n=a=b][k=1, k=2, k=3][sid=lo, SID=hi]
http: invalid cookie name
[n=, m=ok]
http: invalid cookie value
http: invalid cookie name
[n=xxx...xxx…<4096 chars>][k0=v0, k1=v1, k2=v2, k3=v3, …(+17 more)]
http: invalid cookie value
[Partitioned=false, m=ok]
http: invalid cookie name
http: invalid cookie name
http: invalid cookie name
http: invalid cookie value
[n=%F0%9F%A4%96, m=ok]
http: invalid cookie name
http: invalid cookie name
http: invalid cookie value
[data=[nested], m=ok]
http: '=' not found in cookie
http: invalid cookie name
[data=<img src=x />, m=ok][truthy=yes, m=ok]
http: invalid cookie name
http: invalid cookie name
http: invalid cookie name
dotnet/Microsoft.Net.Http.Headers
CookieHeaderValue.TryParseList returned false
CookieHeaderValue.TryParseList returned false
[m=ok][m=ok][m=ok][n=, m=ok][m=ok][n=%4, m=ok][n=%FF, m=ok]
CookieHeaderValue.TryParseList returned false
[n=a, evil=1][n=v, m=w][n=v][n=a=b][k=1, k=2, k=3][sid=lo, SID=hi][m=ok][n=, m=ok][m=ok][m=ok][n=xxx...xxx…<4096 chars>][k0=v0, k1=v1, k2=v2, k3=v3, …(+17 more)][a=1, b=2][Partitioned=false, m=ok][m=ok][a=1, c=3][m=ok][m=ok][n=%F0%9F%A4%96, m=ok][m=ok][m=ok][m=ok][data=[nested], m=ok][m=ok][m=ok][m=ok][truthy=yes, m=ok]
CookieHeaderValue.TryParseList returned false
CookieHeaderValue.TryParseList returned false
[m=ok]
php/$_COOKIE[n__= v ][n=a b][n=a]
empty response
[n=a\x01b, m=ok][n="v, m=ok][n=a"b, m=ok][n=%4, m=ok][n=ÿ, m=ok][n=aÿb][n=a, evil=1][n=v, m=w][flag=, n=v][n=a=b][k=1][sid=lo, SID=hi][m=ok][n=, m=ok][n=café, m=ok][naïve=v, m=ok][n=xxx...xxx…<4096 chars>][k0=v0, k1=v1, k2=v2, k3=v3, …(+17 more)][a=1, j=\x01\x01\x01...\x01\x01\x01…<4096 chars>, b=2][Partitioned=false, m=ok][n=][a=1][n\t=\tv\t, m=ok][n=ð\x9f¤\x96, m=ok][n=ð\x9f¤\x96, m=ok][token=⟨array⟩["nested"], m=ok][sess=⟨object⟩{"k":"v"}, m=ok][data={"testdata":"JSON"}, m=ok][data=[nested], m=ok][<script>=, m=ok][<script>=empty, m=ok][data="<img src=x />", m=ok][truthy=yes, m=ok]
nginx/$cookie_<name>[n=v][n=a b]
nginx HTTP 400
nginx HTTP 400
[n=a\x01b, m=ok][n="v, m=ok][n=a"b, m=ok][n=%4, m=ok][n=%FF, m=ok][n=aÿb][n=a, evil=1][n=v, m=w][n=v][n=a=b][k=1][sid=lo, SID=lo][m=ok][n=, m=ok][n=café, m=ok][naïve=v, m=ok][n=xxx...xxx…<4096 chars>][k0=v0, k1=v1, k2=v2, k3=v3, …(+17 more)][a=1, j=\x01\x01\x01...\x01\x01\x01…<4096 chars>, b=2][Partitioned=false, m=ok]
nginx HTTP 400
nginx HTTP 400
[m=ok][n=ð\x9f¤\x96, m=ok][n=%F0%9F%A4%96, m=ok][token[]=nested, m=ok][sess[k]=v, m=ok][data={"testdata":"JSON"}, m=ok][data=[nested], m=ok][m=ok][<script>=empty, m=ok][data="<img src=x />", m=ok][truthy=yes, m=ok]
nginx HTTP 400
nginx/lua-resty-cookie[n =][n=a]
nginx HTTP 400
nginx HTTP 400
[m=ok, n=a\x01b][m=ok, n="v][m=ok, n=a"b][m=ok, n=%4][m=ok, n=%FF][n=aÿb][evil=1, n=a][;;m=w, n=v][flag; n=v][n=a=b][k=3][SID=hi, sid=lo][=v, m=ok][m=ok, n=][m=ok, n=café][m=ok, naïve=v][n=xxx...xxx…<4096 chars>][k0=v0, k1=v1, k10=v10, k11=v11, …(+17 more)][a=1, b=2, j=\x01\x01\x01...\x01\x01\x01…<4096 chars>][Partitioned=false, m=ok]
nginx HTTP 400
nginx HTTP 400
[n\t=, v\t; m=ok][m=ok, n=ð\x9f¤\x96][m=ok, n=%F0%9F%A4%96][m=ok, token[]=nested][m=ok, sess[k]=v][data={"testdata":"JSON"}, m=ok][data=[nested], m=ok][<script>; m=ok][<script>=empty, m=ok][/>"; m=ok, data="<img, src=x][m=ok, truthy=yes][=][==]
nginx HTTP 400
nginx/proxy≠ n = v
java/Tomcat RFC6265[n=v][m=ok][m=ok][m=ok][n=v, m=ok][m=ok][n=%4, m=ok][n=%FF, m=ok][n=aÿb][n=a, evil=1][n=v, m=w][flag=, n=v][n=a=b][k=1, k=2, k=3][sid=lo, SID=hi][m=ok][n=, m=ok][n=café, m=ok][m=ok][n=xxx...xxx…<4096 chars>][k0=v0, k1=v1, k2=v2, k3=v3, …(+17 more)][a=1, b=2][Partitioned=false, m=ok][m=ok][a=1, c=3][n=v, m=ok][n=ð\x9f¤\x96, m=ok][n=%F0%9F%A4%96, m=ok][m=ok][m=ok][m=ok][data=[nested], m=ok][m=ok][m=ok][m=ok][truthy=yes, m=ok][m=ok]
java/Tomcat legacy[n=v][n=a]
IllegalArgumentException: Control character in cookie value or attribute.
IllegalArgumentException: Control character in cookie value or attribute.
IllegalArgumentException: Control character in cookie value or attribute.
[n=a, m=ok][n=%4, m=ok][n=%FF, m=ok]
IllegalArgumentException: Control character in cookie value or attribute.
[n=a, evil=1][n=v, m=w][n=v][n=a][k=1, k=2, k=3][sid=lo, SID=hi][m=ok][m=ok]
IllegalArgumentException: Control character in cookie value or attribute.
IllegalArgumentException: Control character in cookie value or attribute.
[n=xxx...xxx…<4096 chars>][k0=v0, k1=v1, k2=v2, k3=v3, …(+17 more)]
IllegalArgumentException: Control character in cookie value or attribute.
[Partitioned=false, m=ok]
IllegalArgumentException: Control character in cookie value or attribute.
IllegalArgumentException: Control character in cookie value or attribute.
[n=v, m=ok]
IllegalArgumentException: Control character in cookie value or attribute.
[n=%F0%9F%A4%96, m=ok][m=ok][m=ok][m=ok][m=ok][m=ok][m=ok][data=<img src=x />, m=ok][truthy=yes, m=ok]
IllegalArgumentException: Control character in cookie value or attribute.
java/Jakarta RESTEasy[n=v][n=a b][n=a\0b, m=ok][n=a\r\nb, m=ok][n=a\x01b, m=ok][n="v, m=ok][n=a"b, m=ok][n=%4, m=ok][n=%FF, m=ok][n=aÿb][n=a, evil=1][n=v, m=w][flag=, n=v][n=a=b][k=1, k=2, k=3][sid=lo, SID=hi][=v, m=ok][n=, m=ok][n=café, m=ok][naïve=v, m=ok][n=xxx...xxx…<4096 chars>][k0=v0, k1=v1, k2=v2, k3=v3, …(+17 more)][a=1, j=, b=2][Partitioned=false, m=ok][n\0x=v, m=ok][a=1, b=2, c=3][n=v, m=ok][n=ð\x9f¤\x96, m=ok][n=%F0%9F%A4%96, m=ok][token[]=nested, m=ok][sess[k]=v, m=ok][data={"testdata":"JSON"}, m=ok][data=[nested], m=ok][<script>=, m=ok][<script>=empty, m=ok][data=<img src=x />, m=ok][truthy=yes, m=ok][=][==][=, m=ok]
java/Jakarta Jersey[n=v][n=a b][n=a\0b, m=ok][n=a\r\nb, m=ok][n=a\x01b, m=ok][n="v, m=ok][n=a"b, m=ok][n=%4, m=ok][n=%FF, m=ok][n=aÿb][n=a, evil=1][n=v, m=w][flag=, n=v][n=a=b][k=1, k=2, k=3][sid=lo, SID=hi][=v, m=ok][n=, m=ok][n=café, m=ok][naïve=v, m=ok][n=xxx...xxx…<4096 chars>][k0=v0, k1=v1, k2=v2, k3=v3, …(+17 more)][a=1, j=, b=2][Partitioned=false, m=ok][n\0x=v, m=ok][a=1, b=2, c=3][n=v, m=ok][n=ð\x9f¤\x96, m=ok][n=%F0%9F%A4%96, m=ok][token[]=nested, m=ok][sess[k]=v, m=ok][data={"testdata":"JSON"}, m=ok][data=[nested], m=ok][<script>=, m=ok][<script>=empty, m=ok][data=<img src=x />, m=ok][truthy=yes, m=ok][=][==][=, m=ok]

Response Set-Cookie: parsers

toolattr-unknownattr-unknown-bareattr-bad-maxageattr-garbage-samesiteattr-valued-flagattr-duplicateresp-partitioned-secureresp-partitioned-bareresp-partitioned-valuedresp-partitioned-dupprefix-secure-okprefix-secure-missingprefix-host-okprefix-host-missing-secureprefix-host-domainprefix-host-pathprefix-host-caseprefix-host-case-conformantresp-partitioned-samesite-noneprefix-host-partitionedresp-partitioned-domainresp-partitioned-falseresp-partitioned-trueresp-partitioned-caseresp-partitioned-nameresp-encoded-semicolon-attrresp-quoted-attr-textresp-partitioned-leadingresp-samesite-strictresp-samesite-laxresp-samesite-none-bareresp-samesite-none-secureresp-samesite-caseresp-samesite-emptydate-imf-fixdatedate-rfc850date-asctimedate-no-weekdaydate-wrong-weekdaydate-nonsense-weekdaydate-no-timezonedate-reordereddate-2digit-year-imf-shapedate-trailing-commentdate-unixdate-garbagedate-impossible-daydate-year-pre-1601date-minute-out-of-rangedate-second-out-of-rangedate-iso8601date-us-slashdate-eu-dotteddate-epochdate-2digit-year-69date-2digit-year-70date-year-1601-boundarydate-hour-out-of-rangedate-1-digit-daydate-month-casedate-month-overlongdate-year-trailing-alphadate-5-digit-yeardate-missing-yeardate-emptydate-zone-offsetdate-tab-delimsdate-first-token-winsdomain-supercookie-tlddomain-supercookie-icanndomain-registrabledomain-punycodedomain-utf8domain-emoji-utf8domain-emoji-punycodedomain-malformed-punycodedomain-not-a-host-namedomain-dup-last-winsdomain-dup-valid-then-invalidpath-file-uripath-emptypath-dotpath-overlong-1025resp-all-attrsresp-crlfresp-ws-surroundingresp-empty-valueresp-ctl-nulresp-ctl-otherresp-quote-interiorresp-non-asciiresp-nameless-bareresp-nameless-eqresp-non-ascii-nameresp-space-in-nameresp-del-byteattr-nul-nameattr-nul-valueresp-array-nameresp-json-valueresp-bracket-valueresp-quoted-html-valueresp-quoted-pair-flag
payloadSID=abc; Priority=HighSID=abc; PrioritySID=abc; Max-Age=bananaSID=abc; SameSite=BogusSID=abc; Secure=1SID=abc; Path=/a; Path=/bSID=abc; Partitioned; SecureSID=abc; PartitionedSID=abc; Partitioned=1SID=abc; Partitioned; Partit…<41>__Secure-SID=abc; Secure__Secure-SID=abc__Host-SID=abc; Secure; Path=/__Host-SID=abc; Path=/__Host-SID=abc; Secure; Path…<50>__Host-SID=abc; Secure; Path=/app__host-SID=abc__host-SID=abc; Secure; Path=/SID=abc; SameSite=None; Secu…<43>__Host-SID=abc; Secure; Path…<43>SID=abc; Secure; Domain=exam…<48>SID=abc; Secure; Partitioned=falseSID=abc; Secure; Partitioned=trueSID=abc; Secure; pArTiTiOnEdPartitioned=falseSID=abc%3B%20Partitioned; SecureSID="abc; Partitioned"; SecurePartitioned; SID=abcSID=abc; SameSite=StrictSID=abc; SameSite=LaxSID=abc; SameSite=NoneSID=abc; SameSite=None; SecureSID=abc; SameSite=lAxSID=abc; SameSite=SID=abc; Expires=Sun, 06 Nov…<46>SID=abc; Expires=Sunday, 06-…<47>SID=abc; Expires=Sun Nov 6 …<41>SID=abc; Expires=06 Nov 1994…<41>SID=abc; Expires=Mon, 06 Nov…<46>SID=abc; Expires=Birthday, 0…<51>SID=abc; Expires=Sun, 06 Nov…<42>SID=abc; Expires=08:49:37 19…<37>SID=abc; Expires=Sun, 06 Nov…<44>SID=abc; Expires=Sun, 06 Nov…<52>SID=abc; Expires=Sun Nov 6 …<45>SID=abc; Expires=not-a-dateSID=abc; Expires=Sun, 31 Feb…<46>SID=abc; Expires=Sun, 06 Nov…<46>SID=abc; Expires=Sun, 06 Nov…<46>SID=abc; Expires=Sun, 06 Nov…<46>SID=abc; Expires=1994-11-06T…<37>SID=abc; Expires=11/06/1994 08:49:37SID=abc; Expires=06.11.1994 08:49:37SID=abc; Expires=784108177SID=abc; Expires=Tue, 01 Jan…<44>SID=abc; Expires=Thu, 01 Jan…<44>SID=abc; Expires=Mon, 01 Jan…<46>SID=abc; Expires=Sun, 06 Nov…<46>SID=abc; Expires=Sun, 6 Nov …<45>SID=abc; Expires=Sun, 06 NOV…<46>SID=abc; Expires=06 Novembre…<42>SID=abc; Expires=06 Nov 1994…<39>SID=abc; Expires=06 Nov 1994…<38>SID=abc; Expires=Sun, 06 Nov…<41>SID=abc; Expires=SID=abc; Expires=Sun, 06 Nov…<51>SID=abc; Expires=Sun,\t06\tN…<51>SID=abc; Expires=07:00:00 08…<46>SID=abc; Domain=.comSID=abc; Domain=co.ukSID=abc; Domain=example.co.ukSID=abc; Domain=xn--mnchen-3ya.deSID=abc; Domain=münchen.deSID=abc; Domain=🍪.euSID=abc; Domain=xn--hj8h.euSID=abc; Domain=xn--SID=abc; Domain=ex_ample.comSID=abc; Domain=a.example.co…<51>SID=abc; Domain=valid.exampl…<46>SID=abc; Path=file:///etc/passwdSID=abc; Path=SID=abc; Path=.SID=abc; Path=/aaaaaaaaaaaaa…<1039>SID=abc; Path=/p; Domain=exa…<93>SID=a\r\nb SID = v SID=SID=a\0bSID=a\x01bSID=a"bSID=caféjustvalue=vnaïve=vS ID=abcSID=a\x7fbSID=abc; Pa\0th=/SID=abc; Path=/a\0btoken[]=nesteddata={"testdata":"JSON"}data=[nested]data="<img src=x />""sid=surrounded-by-doublequo…<40>
RFC (standard)keep cookie, ignore attr (§5.2)keep cookie, ignore attr (§5.2)keep cookie, ignore attr (§5.2)keep cookie, last wins (§5.2)6265bis: samesite-av parses6265bis: samesite-av parses6265bis: None requires Secure6265bis: None + Secure6265bis: value is case-insensitivekeep cookie, ignore attr (§5.2)§5.1.1: 69 → 2069§5.1.1: 70 → 1970§5.1.1: year ≥ 1601 is valid§5.1.1: hour > 23 fails§5.1.1: day is 12DIGIT§5.1.1: month is case-insensitive§5.1.1: month = first 3 letters§5.1.1: non-digit year tail ignored§5.1.1: year is 24DIGIT§5.1.1: all four fields requiredno date → ignore Expires (§5.2.1)§5.1.1: zone tokens ignored§5.1.1: HTAB is a delimiter§5.1.1: first match binds each fieldpath-av has no length cap (§4.1.1)CR/LF must not be smuggledtrim leading/trailing WSPempty value is validCTL is not a cookie-octetCTL is not a cookie-octetDQUOTE is not a cookie-octetnon-ASCII is not a cookie-octetno = → ignore the line (§5.2)empty name — spec-gray (§5.2)non-token name skippednon-token name skippedCTL is not a cookie-octetnon-token name skippedDQUOTE is not a cookie-octet[ ] are cookie-octetsnon-token name skipped
consensusSID=abcSID=abcSID=abcSID=abcSID=abc ;SecureSID=abc ;Path=/bSID=abc ;SecureSID=abcSID=abcSID=abc ;Secure__Secure-SID=abc ;Secure__Secure-SID=abc__Host-SID=abc ;Secure;Path=/__Host-SID=abc ;Path=/__Host-SID=abc ;Secure;Path=/;Domain=example.com__Host-SID=abc ;Secure;Path=/app__host-SID=abc__host-SID=abc ;Secure;Path=/SID=abc ;Secure;SameSite=None__Host-SID=abc ;Secure;Path=/SID=abc ;SecureSID=abc ;SecureSID=abc ;SecurePartitioned=falseSID=abc%3B%20Partitioned ;SecureSID="abc ;SecureSID=abc ;SameSite=StrictSID=abc ;SameSite=LaxSID=abc ;SameSite=NoneSID=abc ;Secure;SameSite=NoneSID=abc ;SameSite=LaxSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abc ;Domain=.comSID=abc ;Domain=co.ukSID=abc ;Domain=example.co.ukSID=abc ;Domain=xn--mnchen-3ya.deSID=abc ;Domain=xn--hj8h.euSID=abc ;Domain=xn--SID=abc ;Domain=ex_ample.comSID=abc ;Domain=b.example.comSID=abc ;Path=file:///etc/passwdSID=abcSID=abc ;Path=.SID=abc ;Path=/aaa...aaaSID=a\r\nbSID=vSID=SID=a"bSID=cafénaïve=vS ID=abcSID=a\x7fbSID=abcSID=abc ;Path=/a\0btoken[]=nesteddata={"testdata":"JSON"}data=[nested]data="<img src=x />""sid=surrounded-b…<26 chars> ;Secure
rust/kekse (lenient)SID=abc ⚠️
• unrecognised attribute `Priority`
SID=abc ⚠️
• unrecognised attribute `Priority`
SID=abc ⚠️
• malformed `Max-Age` value `banana` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `SameSite` value `Bogus` (attribute dropped, cookie kept)
SID=abc ;Secure ⚠️
• value `1` on the presence-only `Secure` flag (flag set, value discarded)
SID=abc ;Path=/b ⚠️
• duplicate `Path` attribute
SID=abc ;Secure;PartitionedSID=abc ;Partitioned ⚠️
• a `Partitioned` cookie requires the `Secure` attribute (CHIPS) (cookie kept as written)
SID=abc ;Partitioned ⚠️
• value `1` on the presence-only `Partitioned` flag (flag set, value discarded)
• a `Partitioned` cookie requires the `Secure` attribute (CHIPS) (cookie kept as written)
SID=abc ;Secure;Partitioned ⚠️
• duplicate `Partitioned` attribute
__Secure-SID=abc ;Secure__Secure-SID=abc ⚠️
• a `__Secure-`-prefixed cookie requires the `Secure` attribute (cookie kept as written)
__Host-SID=abc ;Secure;Path=/__Host-SID=abc ;Path=/ ⚠️
• a `__Host-`-prefixed cookie requires the `Secure` attribute (cookie kept as written)
__Host-SID=abc ;Secure;Path=/;Domain=example.com ⚠️
• a `__Host-`-prefixed cookie must not carry a `Domain` attribute (cookie kept as written)
__Host-SID=abc ;Secure;Path=/app ⚠️
• a `__Host-`-prefixed cookie requires `Path=/` exactly (cookie kept as written)
__host-SID=abc ⚠️
• a `__Secure-`/`__Host-` prefix spelled in a non-canonical case (the server contract is exactly `__Secure-` / `__Host-`) (cookie kept as written)
• a `__Host-`-prefixed cookie requires the `Secure` attribute (cookie kept as written)
• a `__Host-`-prefixed cookie requires `Path=/` exactly (cookie kept as written)
__host-SID=abc ;Secure;Path=/ ⚠️
• a `__Secure-`/`__Host-` prefix spelled in a non-canonical case (the server contract is exactly `__Secure-` / `__Host-`) (cookie kept as written)
SID=abc ;Secure;Partitioned;SameSite=None__Host-SID=abc ;Secure;Partitioned;Path=/SID=abc ;Secure;Partitioned;Domain=example.comSID=abc ;Secure;Partitioned ⚠️
• value `false` on the presence-only `Partitioned` flag (flag set, value discarded)
SID=abc ;Secure;Partitioned ⚠️
• value `true` on the presence-only `Partitioned` flag (flag set, value discarded)
SID=abc ;Secure;PartitionedPartitioned=falseSID=abc; Partitioned ;Secure
cookie `SID` value `\"abc` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
cookie pair `Partitioned` has no `=`
SID=abc ;SameSite=StrictSID=abc ;SameSite=LaxSID=abc ;SameSite=NoneSID=abc ;Secure;SameSite=NoneSID=abc ;SameSite=LaxSID=abc ⚠️
• malformed `SameSite` value `` (attribute dropped, cookie kept)
SID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ⚠️
• malformed `Expires` value `not-a-date` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `Sun, 31 Feb 1994 00:00:00 GMT` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `Sun, 06 Nov 1600 08:49:37 GMT` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `Sun, 06 Nov 1994 08:60:00 GMT` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `Sun, 06 Nov 1994 08:49:60 GMT` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `1994-11-06T08:49:37Z` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `11/06/1994 08:49:37` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `06.11.1994 08:49:37` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `784108177` (attribute dropped, cookie kept)
SID=abc ;Expires=Tue, 01 Jan 2069 00:00:00 GMTSID=abc ;Expires=Thu, 01 Jan 1970 00:00:00 GMTSID=abc ;Expires=Mon, 01 Jan 1601 00:00:00 GMTSID=abc ⚠️
• malformed `Expires` value `Sun, 06 Nov 1994 24:00:00 GMT` (attribute dropped, cookie kept)
SID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ⚠️
• malformed `Expires` value `06 Nov 19940 08:49:37` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `Sun, 06 Nov 08:49:37 GMT` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `` (attribute dropped, cookie kept)
SID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Wed, 08 Nov 2006 07:00:00 GMTSID=abc ;Domain=.comSID=abc ;Domain=co.ukSID=abc ;Domain=example.co.ukSID=abc ;Domain=xn--mnchen-3ya.deSID=abc ⚠️
• malformed `Domain` value `münchen.de` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Domain` value `🍪.eu` (attribute dropped, cookie kept)
SID=abc ;Domain=xn--hj8h.euSID=abc ;Domain=xn--SID=abc ;Domain=ex_ample.comSID=abc ;Domain=b.example.com ⚠️
• duplicate `Domain` attribute
SID=abc ;Domain=valid.example.com ⚠️
• duplicate `Domain` attribute
• malformed `Domain` value `café` (attribute dropped, cookie kept)
SID=abc ;Path=file:///etc/passwdSID=abc ;Path=SID=abc ;Path=.SID=abc ;Path=/aaa...aaaSID=abc ;HttpOnly;Secure;Partitioned;SameSite=Lax;Path=/p;Domain=example.com;Max-Age=60
cookie `SID` value `a\r\nb` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
SID=vSID=
cookie `SID` value `a\0b` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
cookie `SID` value `a\u{1}b` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
cookie `SID` value `a\"b` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
cookie `SID` value `café` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
cookie pair `justvalue` has no `=`
cookie name `` is empty or not a token
cookie name `naïve` is empty or not a token
cookie name `S ID` is empty or not a token
cookie `SID` value `a\u{7f}b` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
SID=abc ⚠️
• unrecognised attribute `Pa\0th`
SID=abc ⚠️
• malformed `Path` value `/a\0b` (attribute dropped, cookie kept)
cookie name `token[]` is empty or not a token
cookie `data` value `{\"testdata\":\"JSON\"}` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
data=[nested]data=<img src=x />
cookie name `\"sid` is empty or not a token
rust/kekse (strict)SID=abc ⚠️
• unrecognised attribute `Priority`
SID=abc ⚠️
• unrecognised attribute `Priority`
SID=abc ⚠️
• malformed `Max-Age` value `banana` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `SameSite` value `Bogus` (attribute dropped, cookie kept)
SID=abc ;Secure ⚠️
• value `1` on the presence-only `Secure` flag (flag set, value discarded)
SID=abc ;Path=/b ⚠️
• duplicate `Path` attribute
SID=abc ;Secure;PartitionedSID=abc ;Partitioned ⚠️
• a `Partitioned` cookie requires the `Secure` attribute (CHIPS) (cookie kept as written)
SID=abc ;Partitioned ⚠️
• value `1` on the presence-only `Partitioned` flag (flag set, value discarded)
• a `Partitioned` cookie requires the `Secure` attribute (CHIPS) (cookie kept as written)
SID=abc ;Secure;Partitioned ⚠️
• duplicate `Partitioned` attribute
__Secure-SID=abc ;Secure__Secure-SID=abc ⚠️
• a `__Secure-`-prefixed cookie requires the `Secure` attribute (cookie kept as written)
__Host-SID=abc ;Secure;Path=/__Host-SID=abc ;Path=/ ⚠️
• a `__Host-`-prefixed cookie requires the `Secure` attribute (cookie kept as written)
__Host-SID=abc ;Secure;Path=/;Domain=example.com ⚠️
• a `__Host-`-prefixed cookie must not carry a `Domain` attribute (cookie kept as written)
__Host-SID=abc ;Secure;Path=/app ⚠️
• a `__Host-`-prefixed cookie requires `Path=/` exactly (cookie kept as written)
__host-SID=abc ⚠️
• a `__Secure-`/`__Host-` prefix spelled in a non-canonical case (the server contract is exactly `__Secure-` / `__Host-`) (cookie kept as written)
• a `__Host-`-prefixed cookie requires the `Secure` attribute (cookie kept as written)
• a `__Host-`-prefixed cookie requires `Path=/` exactly (cookie kept as written)
__host-SID=abc ;Secure;Path=/ ⚠️
• a `__Secure-`/`__Host-` prefix spelled in a non-canonical case (the server contract is exactly `__Secure-` / `__Host-`) (cookie kept as written)
SID=abc ;Secure;Partitioned;SameSite=None__Host-SID=abc ;Secure;Partitioned;Path=/SID=abc ;Secure;Partitioned;Domain=example.comSID=abc ;Secure;Partitioned ⚠️
• value `false` on the presence-only `Partitioned` flag (flag set, value discarded)
SID=abc ;Secure;Partitioned ⚠️
• value `true` on the presence-only `Partitioned` flag (flag set, value discarded)
SID=abc ;Secure;PartitionedPartitioned=falseSID=abc; Partitioned ;Secure
cookie `SID` value `\"abc` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
cookie pair `Partitioned` has no `=`
SID=abc ;SameSite=StrictSID=abc ;SameSite=LaxSID=abc ;SameSite=NoneSID=abc ;Secure;SameSite=NoneSID=abc ;SameSite=LaxSID=abc ⚠️
• malformed `SameSite` value `` (attribute dropped, cookie kept)
SID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ⚠️
• malformed `Expires` value `Sunday, 06-Nov-94 08:49:37 GMT` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `Sun Nov  6 08:49:37 1994` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `06 Nov 1994 08:49:37 GMT` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `Mon, 06 Nov 1994 08:49:37 GMT` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `Birthday, 06 Nov 1994 08:49:37 GMT` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `Sun, 06 Nov 1994 08:49:37` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `08:49:37 1994 Nov 06` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `Sun, 06 Nov 94 08:49:37 GMT` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `Sun, 06 Nov 1994 08:49:37 GMT (UTC)` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `Sun Nov  6 08:49:37 UTC 1994` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `not-a-date` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `Sun, 31 Feb 1994 00:00:00 GMT` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `Sun, 06 Nov 1600 08:49:37 GMT` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `Sun, 06 Nov 1994 08:60:00 GMT` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `Sun, 06 Nov 1994 08:49:60 GMT` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `1994-11-06T08:49:37Z` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `11/06/1994 08:49:37` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `06.11.1994 08:49:37` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `784108177` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `Tue, 01 Jan 69 00:00:00 GMT` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `Thu, 01 Jan 70 00:00:00 GMT` (attribute dropped, cookie kept)
SID=abc ;Expires=Mon, 01 Jan 1601 00:00:00 GMTSID=abc ⚠️
• malformed `Expires` value `Sun, 06 Nov 1994 24:00:00 GMT` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `Sun, 6 Nov 1994 08:49:37 GMT` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `Sun, 06 NOV 1994 08:49:37 GMT` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `06 Novembre 1994 08:49:37` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `06 Nov 1994AD 08:49:37` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `06 Nov 19940 08:49:37` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `Sun, 06 Nov 08:49:37 GMT` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `Sun, 06 Nov 1994 08:49:37 GMT+0100` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `Sun,\t06\tNov\t1994\t08:49:37\tGMT` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `07:00:00 08:49:37 06 Nov 1994` (attribute dropped, cookie kept)
SID=abc ;Domain=.comSID=abc ;Domain=co.ukSID=abc ;Domain=example.co.ukSID=abc ;Domain=xn--mnchen-3ya.deSID=abc ⚠️
• malformed `Domain` value `münchen.de` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Domain` value `🍪.eu` (attribute dropped, cookie kept)
SID=abc ;Domain=xn--hj8h.euSID=abc ;Domain=xn--SID=abc ;Domain=ex_ample.comSID=abc ;Domain=b.example.com ⚠️
• duplicate `Domain` attribute
SID=abc ;Domain=valid.example.com ⚠️
• duplicate `Domain` attribute
• malformed `Domain` value `café` (attribute dropped, cookie kept)
SID=abc ;Path=file:///etc/passwdSID=abc ;Path=SID=abc ;Path=.SID=abc ;Path=/aaa...aaaSID=abc ;HttpOnly;Secure;Partitioned;SameSite=Lax;Path=/p;Domain=example.com;Max-Age=60
cookie `SID` value `a\r\nb` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
SID=vSID=
cookie `SID` value `a\0b` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
cookie `SID` value `a\u{1}b` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
cookie `SID` value `a\"b` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
cookie `SID` value `café` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
cookie pair `justvalue` has no `=`
cookie name `` is empty or not a token
cookie name `naïve` is empty or not a token
cookie name `S ID` is empty or not a token
cookie `SID` value `a\u{7f}b` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
SID=abc ⚠️
• unrecognised attribute `Pa\0th`
SID=abc ⚠️
• malformed `Path` value `/a\0b` (attribute dropped, cookie kept)
cookie name `token[]` is empty or not a token
cookie `data` value `{\"testdata\":\"JSON\"}` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
data=[nested]data=<img src=x />
cookie name `\"sid` is empty or not a token
rust/kekse (fail-hard)
1 issue(s): unrecognised attribute `Priority`
1 issue(s): unrecognised attribute `Priority`
1 issue(s): malformed `Max-Age` value `banana` (attribute dropped, cookie kept)
1 issue(s): malformed `SameSite` value `Bogus` (attribute dropped, cookie kept)
1 issue(s): value `1` on the presence-only `Secure` flag (flag set, value discarded)
1 issue(s): duplicate `Path` attribute
SID=abc ;Secure;Partitioned
1 issue(s): a `Partitioned` cookie requires the `Secure` attribute (CHIPS) (cookie kept as written)
2 issue(s): value `1` on the presence-only `Partitioned` flag (flag set, value discarded); a `Partitioned` cookie requires the `Secure` attribute (CHIPS) (cookie kept as written)
1 issue(s): duplicate `Partitioned` attribute
__Secure-SID=abc ;Secure
1 issue(s): a `__Secure-`-prefixed cookie requires the `Secure` attribute (cookie kept as written)
__Host-SID=abc ;Secure;Path=/
1 issue(s): a `__Host-`-prefixed cookie requires the `Secure` attribute (cookie kept as written)
1 issue(s): a `__Host-`-prefixed cookie must not carry a `Domain` attribute (cookie kept as written)
1 issue(s): a `__Host-`-prefixed cookie requires `Path=/` exactly (cookie kept as written)
3 issue(s): a `__Secure-`/`__Host-` prefix spelled in a non-canonical case (the server contract is exactly `__Secure-` / `__Host-`) (cookie kept as written); a `__Host-`-prefixed cookie requires the `Secure` attribute (cookie kept as written); a `__Host-`-prefixed cookie requires `Path=/` exactly (cookie kept as written)
1 issue(s): a `__Secure-`/`__Host-` prefix spelled in a non-canonical case (the server contract is exactly `__Secure-` / `__Host-`) (cookie kept as written)
SID=abc ;Secure;Partitioned;SameSite=None__Host-SID=abc ;Secure;Partitioned;Path=/SID=abc ;Secure;Partitioned;Domain=example.com
1 issue(s): value `false` on the presence-only `Partitioned` flag (flag set, value discarded)
1 issue(s): value `true` on the presence-only `Partitioned` flag (flag set, value discarded)
SID=abc ;Secure;PartitionedPartitioned=falseSID=abc; Partitioned ;Secure
cookie `SID` value `\"abc` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
cookie pair `Partitioned` has no `=`
SID=abc ;SameSite=StrictSID=abc ;SameSite=LaxSID=abc ;SameSite=NoneSID=abc ;Secure;SameSite=NoneSID=abc ;SameSite=Lax
1 issue(s): malformed `SameSite` value `` (attribute dropped, cookie kept)
SID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMT
1 issue(s): malformed `Expires` value `Sunday, 06-Nov-94 08:49:37 GMT` (attribute dropped, cookie kept)
1 issue(s): malformed `Expires` value `Sun Nov  6 08:49:37 1994` (attribute dropped, cookie kept)
1 issue(s): malformed `Expires` value `06 Nov 1994 08:49:37 GMT` (attribute dropped, cookie kept)
1 issue(s): malformed `Expires` value `Mon, 06 Nov 1994 08:49:37 GMT` (attribute dropped, cookie kept)
1 issue(s): malformed `Expires` value `Birthday, 06 Nov 1994 08:49:37 GMT` (attribute dropped, cookie kept)
1 issue(s): malformed `Expires` value `Sun, 06 Nov 1994 08:49:37` (attribute dropped, cookie kept)
1 issue(s): malformed `Expires` value `08:49:37 1994 Nov 06` (attribute dropped, cookie kept)
1 issue(s): malformed `Expires` value `Sun, 06 Nov 94 08:49:37 GMT` (attribute dropped, cookie kept)
1 issue(s): malformed `Expires` value `Sun, 06 Nov 1994 08:49:37 GMT (UTC)` (attribute dropped, cookie kept)
1 issue(s): malformed `Expires` value `Sun Nov  6 08:49:37 UTC 1994` (attribute dropped, cookie kept)
1 issue(s): malformed `Expires` value `not-a-date` (attribute dropped, cookie kept)
1 issue(s): malformed `Expires` value `Sun, 31 Feb 1994 00:00:00 GMT` (attribute dropped, cookie kept)
1 issue(s): malformed `Expires` value `Sun, 06 Nov 1600 08:49:37 GMT` (attribute dropped, cookie kept)
1 issue(s): malformed `Expires` value `Sun, 06 Nov 1994 08:60:00 GMT` (attribute dropped, cookie kept)
1 issue(s): malformed `Expires` value `Sun, 06 Nov 1994 08:49:60 GMT` (attribute dropped, cookie kept)
1 issue(s): malformed `Expires` value `1994-11-06T08:49:37Z` (attribute dropped, cookie kept)
1 issue(s): malformed `Expires` value `11/06/1994 08:49:37` (attribute dropped, cookie kept)
1 issue(s): malformed `Expires` value `06.11.1994 08:49:37` (attribute dropped, cookie kept)
1 issue(s): malformed `Expires` value `784108177` (attribute dropped, cookie kept)
1 issue(s): malformed `Expires` value `Tue, 01 Jan 69 00:00:00 GMT` (attribute dropped, cookie kept)
1 issue(s): malformed `Expires` value `Thu, 01 Jan 70 00:00:00 GMT` (attribute dropped, cookie kept)
SID=abc ;Expires=Mon, 01 Jan 1601 00:00:00 GMT
1 issue(s): malformed `Expires` value `Sun, 06 Nov 1994 24:00:00 GMT` (attribute dropped, cookie kept)
1 issue(s): malformed `Expires` value `Sun, 6 Nov 1994 08:49:37 GMT` (attribute dropped, cookie kept)
1 issue(s): malformed `Expires` value `Sun, 06 NOV 1994 08:49:37 GMT` (attribute dropped, cookie kept)
1 issue(s): malformed `Expires` value `06 Novembre 1994 08:49:37` (attribute dropped, cookie kept)
1 issue(s): malformed `Expires` value `06 Nov 1994AD 08:49:37` (attribute dropped, cookie kept)
1 issue(s): malformed `Expires` value `06 Nov 19940 08:49:37` (attribute dropped, cookie kept)
1 issue(s): malformed `Expires` value `Sun, 06 Nov 08:49:37 GMT` (attribute dropped, cookie kept)
1 issue(s): malformed `Expires` value `` (attribute dropped, cookie kept)
1 issue(s): malformed `Expires` value `Sun, 06 Nov 1994 08:49:37 GMT+0100` (attribute dropped, cookie kept)
1 issue(s): malformed `Expires` value `Sun,\t06\tNov\t1994\t08:49:37\tGMT` (attribute dropped, cookie kept)
1 issue(s): malformed `Expires` value `07:00:00 08:49:37 06 Nov 1994` (attribute dropped, cookie kept)
SID=abc ;Domain=.comSID=abc ;Domain=co.ukSID=abc ;Domain=example.co.ukSID=abc ;Domain=xn--mnchen-3ya.de
1 issue(s): malformed `Domain` value `münchen.de` (attribute dropped, cookie kept)
1 issue(s): malformed `Domain` value `🍪.eu` (attribute dropped, cookie kept)
SID=abc ;Domain=xn--hj8h.euSID=abc ;Domain=xn--SID=abc ;Domain=ex_ample.com
1 issue(s): duplicate `Domain` attribute
2 issue(s): duplicate `Domain` attribute; malformed `Domain` value `café` (attribute dropped, cookie kept)
SID=abc ;Path=file:///etc/passwdSID=abc ;Path=SID=abc ;Path=.SID=abc ;Path=/aaa...aaaSID=abc ;HttpOnly;Secure;Partitioned;SameSite=Lax;Path=/p;Domain=example.com;Max-Age=60
cookie `SID` value `a\r\nb` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
SID=vSID=
cookie `SID` value `a\0b` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
cookie `SID` value `a\u{1}b` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
cookie `SID` value `a\"b` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
cookie `SID` value `café` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
cookie pair `justvalue` has no `=`
cookie name `` is empty or not a token
cookie name `naïve` is empty or not a token
cookie name `S ID` is empty or not a token
cookie `SID` value `a\u{7f}b` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
1 issue(s): unrecognised attribute `Pa\0th`
1 issue(s): malformed `Path` value `/a\0b` (attribute dropped, cookie kept)
cookie name `token[]` is empty or not a token
cookie `data` value `{\"testdata\":\"JSON\"}` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
data=[nested]data=<img src=x />
cookie name `\"sid` is empty or not a token
rust/cookieSID=abcSID=abcSID=abcSID=abcSID=abc ;SecureSID=abc ;Path=/bSID=abc ;SecureSID=abcSID=abcSID=abc ;Secure__Secure-SID=abc ;Secure__Secure-SID=abc__Host-SID=abc ;Secure;Path=/__Host-SID=abc ;Path=/__Host-SID=abc ;Secure;Path=/;Domain=example.com__Host-SID=abc ;Secure;Path=/app__host-SID=abc__host-SID=abc ;Secure;Path=/SID=abc ;Secure;SameSite=None__Host-SID=abc ;Secure;Path=/SID=abc ;Secure;Domain=example.comSID=abc ;SecureSID=abc ;SecureSID=abc ;SecurePartitioned=falseSID=abc; Partitioned ;SecureSID="abc ;Secure ☢️
field     kekse (lenient)  rust/cookie
(stored)  rejected         stored
the cookie is missing a name/value pair
SID=abc ;SameSite=StrictSID=abc ;SameSite=LaxSID=abc ;SameSite=NoneSID=abc ;Secure;SameSite=NoneSID=abc ;SameSite=LaxSID=abcSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abcSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abcSID=abcSID=abcSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abcSID=abcSID=abcSID=abcSID=abc ;Expires=Mon, 06 Nov 1600 08:49:37 GMTSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abc ;Expires=Wed, 01 Jan 1969 00:00:00 GMTSID=abc ;Expires=Thu, 01 Jan 1970 00:00:00 GMTSID=abc ;Expires=Mon, 01 Jan 1601 00:00:00 GMTSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abc ;Domain=comSID=abc ;Domain=co.ukSID=abc ;Domain=example.co.ukSID=abc ;Domain=xn--mnchen-3ya.deSID=abc ;Domain=münchen.deSID=abc ;Domain=🍪.euSID=abc ;Domain=xn--hj8h.euSID=abc ;Domain=xn--SID=abc ;Domain=ex_ample.comSID=abc ;Domain=b.example.comSID=abc ;Domain=café ☢️
field   kekse (lenient)    rust/cookie
Domain  valid.example.com  café
SID=abc ;Path=file:///etc/passwdSID=abc ;Path=SID=abc ;Path=.SID=abc ;Path=/aaa...aaaSID=abc ;HttpOnly;Secure;SameSite=Lax;Path=/p;Domain=example.com;Max-Age=60SID=a\r\nb ☢️
field     kekse (lenient)  rust/cookie
(stored)  rejected         stored
SID=vSID=SID=a\0b ☢️
field     kekse (lenient)  rust/cookie
(stored)  rejected         stored
SID=a\x01b ☢️
field     kekse (lenient)  rust/cookie
(stored)  rejected         stored
SID=a"b ☢️
field     kekse (lenient)  rust/cookie
(stored)  rejected         stored
SID=café ☢️
field     kekse (lenient)  rust/cookie
(stored)  rejected         stored
the cookie is missing a name/value pair
the cookie's name is empty
naïve=v ☢️
field     kekse (lenient)  rust/cookie
(stored)  rejected         stored
S ID=abc ☢️
field     kekse (lenient)  rust/cookie
(stored)  rejected         stored
SID=a\x7fb ☢️
field     kekse (lenient)  rust/cookie
(stored)  rejected         stored
SID=abcSID=abc ;Path=/a\0btoken[]=nested ☢️
field     kekse (lenient)  rust/cookie
(stored)  rejected         stored
data={"testdata":"JSON"} ☢️
field     kekse (lenient)  rust/cookie
(stored)  rejected         stored
data=[nested]data="<img src=x />" ☢️
field  kekse (lenient)  rust/cookie
value  <img src=x />    "<img src=x />"
"sid=surrounded-b…<26 chars> ;Secure ☢️
field     kekse (lenient)  rust/cookie
(stored)  rejected         stored
rust/cookie_storeSID=abcSID=abcSID=abcSID=abcSID=abc ;SecureSID=abc ;Path=/bSID=abc ;SecureSID=abcSID=abcSID=abc ;Secure__Secure-SID=abc ;Secure__Secure-SID=abc__Host-SID=abc ;Secure;Path=/__Host-SID=abc ;Path=/__Host-SID=abc ;Secure;Path=/;Domain=example.com__Host-SID=abc ;Secure;Path=/app__host-SID=abc__host-SID=abc ;Secure;Path=/SID=abc ;Secure;SameSite=None__Host-SID=abc ;Secure;Path=/SID=abc ;Secure;Domain=example.comSID=abc ;SecureSID=abc ;SecureSID=abc ;SecurePartitioned=falseSID=abc%3B%20Partitioned ;Secure ☢️
field  kekse (lenient)   rust/cookie_store
value  abc; Partitioned  abc%3B%20Partitioned
SID="abc ;Secure ☢️
field     kekse (lenient)  rust/cookie_store
(stored)  rejected         stored
unable to parse string as cookie::Cookie
SID=abc ;SameSite=StrictSID=abc ;SameSite=LaxSID=abc ;SameSite=NoneSID=abc ;Secure;SameSite=NoneSID=abc ;SameSite=LaxSID=abc
attempted to utilize an Expired Cookie
attempted to utilize an Expired Cookie
attempted to utilize an Expired Cookie
SID=abc
attempted to utilize an Expired Cookie
SID=abcSID=abcSID=abc
attempted to utilize an Expired Cookie
SID=abcSID=abcSID=abcSID=abc
attempted to utilize an Expired Cookie
SID=abcSID=abcSID=abcSID=abcSID=abcSID=abc
attempted to utilize an Expired Cookie
attempted to utilize an Expired Cookie
attempted to utilize an Expired Cookie
SID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abc ;Domain=com
request-uri does not domain-match the cookie
request-uri does not domain-match the cookie
request-uri does not domain-match the cookie
request-uri does not domain-match the cookie
request-uri does not domain-match the cookie
request-uri does not domain-match the cookie
unable to parse string as cookie::Cookie
request-uri does not domain-match the cookie
request-uri does not domain-match the cookie
request-uri does not domain-match the cookie
SID=abc ;Path=file:///etc/passwdSID=abc ;Path=SID=abc ;Path=.SID=abc ;Path=/aaa...aaaSID=abc ;HttpOnly;Secure;SameSite=Lax;Path=/p;Domain=example.com;Max-Age=60SID=a\r\nb ☢️
field     kekse (lenient)  rust/cookie_store
(stored)  rejected         stored
SID=vSID=SID=a\0b ☢️
field     kekse (lenient)  rust/cookie_store
(stored)  rejected         stored
SID=a\x01b ☢️
field     kekse (lenient)  rust/cookie_store
(stored)  rejected         stored
SID=a"b ☢️
field     kekse (lenient)  rust/cookie_store
(stored)  rejected         stored
SID=café ☢️
field     kekse (lenient)  rust/cookie_store
(stored)  rejected         stored
unable to parse string as cookie::Cookie
unable to parse string as cookie::Cookie
naïve=v ☢️
field     kekse (lenient)  rust/cookie_store
(stored)  rejected         stored
S ID=abc ☢️
field     kekse (lenient)  rust/cookie_store
(stored)  rejected         stored
SID=a\x7fb ☢️
field     kekse (lenient)  rust/cookie_store
(stored)  rejected         stored
SID=abcSID=abc ;Path=/a\0btoken[]=nested ☢️
field     kekse (lenient)  rust/cookie_store
(stored)  rejected         stored
data={"testdata":"JSON"} ☢️
field     kekse (lenient)  rust/cookie_store
(stored)  rejected         stored
data=[nested]data="<img src=x />" ☢️
field  kekse (lenient)  rust/cookie_store
value  <img src=x />    "<img src=x />"
"sid=surrounded-b…<26 chars> ;Secure ☢️
field     kekse (lenient)  rust/cookie_store
(stored)  rejected         stored
python/SimpleCookieSID=abc
no cookie parsed
SID=abcSID=abc ;SameSite=Bogus ☢️
field     kekse (lenient)  python/SimpleCookie
SameSite  —                Bogus
SID=abc ;SecureSID=abc ;Path=/b
no cookie parsed
no cookie parsed
SID=abc
no cookie parsed
__Secure-SID=abc ;Secure__Secure-SID=abc__Host-SID=abc ;Secure;Path=/__Host-SID=abc ;Path=/__Host-SID=abc ;Secure;Path=/;Domain=example.com__Host-SID=abc ;Secure;Path=/app__host-SID=abc__host-SID=abc ;Secure;Path=/
no cookie parsed
no cookie parsed
no cookie parsed
SID=abc ;SecureSID=abc ;Secure
no cookie parsed
Partitioned=falseSID=abc%3B%20Partitioned ;Secure ☢️
field  kekse (lenient)   python/SimpleCookie
value  abc; Partitioned  abc%3B%20Partitioned
SID=abc; Partitioned ;Secure ☢️
field     kekse (lenient)  python/SimpleCookie
(stored)  rejected         stored
no cookie parsed
SID=abc ;SameSite=StrictSID=abc ;SameSite=LaxSID=abc ;SameSite=NoneSID=abc ;Secure;SameSite=NoneSID=abc ;SameSite=lAxSID=abcSID=abcSID=abc
no cookie parsed
no cookie parsed
SID=abcSID=abc
no cookie parsed
no cookie parsed
SID=abc
no cookie parsed
no cookie parsed
SID=abcSID=abcSID=abcSID=abcSID=abcSID=abc
no cookie parsed
no cookie parsed
SID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abc
no cookie parsed
no cookie parsed
no cookie parsed
no cookie parsed
SID=abc
no cookie parsed
SID=abc ⚠️
• CookieError: Control characters are not allowed in cookies 'expires' 'Sun,\t06\tNov\t1994\t08:49:37\tGMT'
no cookie parsed
SID=abc ;Domain=.comSID=abc ;Domain=co.ukSID=abc ;Domain=example.co.ukSID=abc ;Domain=xn--mnchen-3ya.deSID=abcSID=abcSID=abc ;Domain=xn--hj8h.euSID=abc ;Domain=xn--SID=abc ;Domain=ex_ample.comSID=abc ;Domain=b.example.comSID=abc ;Domain=valid.example.comSID=abc ;Path=file:///etc/passwdSID=abcSID=abc ;Path=.SID=abc ;Path=/aaa...aaa
no cookie parsed
no cookie parsed
SID=vSID=
no cookie parsed
no cookie parsed
no cookie parsed
no cookie parsed
no cookie parsed
no cookie parsed
no cookie parsed
no cookie parsed
no cookie parsed
SID=abcSID=abc
no cookie parsed
no cookie parsed
data=[nested]data=<img src=x />
no cookie parsed
python/http.cookiejarSID=abcSID=abc
no cookie accepted
SID=abc ;SameSite=Bogus ☢️
field     kekse (lenient)  python/http.cookiejar
SameSite  —                Bogus
SID=abc ;SecureSID=abc ;Path=/a ☢️
field  kekse (lenient)  python/http.cookiejar
Path   /b               /a
SID=abc ;Secure;PartitionedSID=abc ;PartitionedSID=abc ;PartitionedSID=abc ;Secure;Partitioned__Secure-SID=abc ;Secure__Secure-SID=abc__Host-SID=abc ;Secure;Path=/__Host-SID=abc ;Path=/__Host-SID=abc ;Secure;Path=/;Domain=.example.com__Host-SID=abc ;Secure;Path=/app__host-SID=abc__host-SID=abc ;Secure;Path=/SID=abc ;Secure;Partitioned;SameSite=None__Host-SID=abc ;Secure;Partitioned;Path=/SID=abc ;Secure;Partitioned;Domain=.example.comSID=abc ;Secure;PartitionedSID=abc ;Secure;PartitionedSID=abc ;SecurePartitioned=falseSID=abc%3B%20Partitioned ;Secure ☢️
field  kekse (lenient)   python/http.cookiejar
value  abc; Partitioned  abc%3B%20Partitioned
SID="abc ;Secure ☢️
field     kekse (lenient)  python/http.cookiejar
(stored)  rejected         stored
Partitioned= ☢️
field     kekse (lenient)  python/http.cookiejar
(stored)  rejected         stored
SID=abc ;SameSite=StrictSID=abc ;SameSite=LaxSID=abc ;SameSite=NoneSID=abc ;Secure;SameSite=NoneSID=abc ;SameSite=lAxSID=abc
no cookie accepted
no cookie accepted
SID=abc
no cookie accepted
no cookie accepted
SID=abc
no cookie accepted
SID=abc
no cookie accepted
no cookie accepted
SID=abcSID=abc
no cookie accepted
SID=abcSID=abc
no cookie accepted
SID=abc
no cookie accepted
SID=abcSID=abcSID=abcSID=abcSID=abc
no cookie accepted
no cookie accepted
no cookie accepted
SID=abcSID=abcSID=abcSID=abcSID=abcSID=abc
no cookie accepted
SID=abc
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
SID=abc ;Path=file:///etc/passwdSID=abcSID=abc ;Path=.SID=abc ;Path=/aaa...aaaSID=abc ;HttpOnly;Secure;Partitioned;SameSite=Lax;Path=/p;Domain=.example.comSID=a\r\nb ☢️
field     kekse (lenient)  python/http.cookiejar
(stored)  rejected         stored
SID=vSID=SID=a\0b ☢️
field     kekse (lenient)  python/http.cookiejar
(stored)  rejected         stored
SID=a\x01b ☢️
field     kekse (lenient)  python/http.cookiejar
(stored)  rejected         stored
SID=a"b ☢️
field     kekse (lenient)  python/http.cookiejar
(stored)  rejected         stored
SID=café ☢️
field     kekse (lenient)  python/http.cookiejar
(stored)  rejected         stored
justvalue= ☢️
field     kekse (lenient)  python/http.cookiejar
(stored)  rejected         stored
no cookie accepted
naïve=v ☢️
field     kekse (lenient)  python/http.cookiejar
(stored)  rejected         stored
S ID=abc ☢️
field     kekse (lenient)  python/http.cookiejar
(stored)  rejected         stored
SID=a\x7fb ☢️
field     kekse (lenient)  python/http.cookiejar
(stored)  rejected         stored
SID=abcSID=abc ;Path=/a%00btoken[]=nested ☢️
field     kekse (lenient)  python/http.cookiejar
(stored)  rejected         stored
data={"testdata":"JSON"} ☢️
field     kekse (lenient)  python/http.cookiejar
(stored)  rejected         stored
data=[nested]data="<img src=x />" ☢️
field  kekse (lenient)  python/http.cookiejar
value  <img src=x />    "<img src=x />"
"sid=surrounded-b…<26 chars> ;Secure ☢️
field     kekse (lenient)  python/http.cookiejar
(stored)  rejected         stored
python/mitmproxySID=abcSID=abcSID=abcSID=abc ;SameSite=Bogus ☢️
field     kekse (lenient)  python/mitmproxy
SameSite  —                Bogus
SID=abc ;SecureSID=abc ;Path=/bSID=abc ;Secure;PartitionedSID=abc ;PartitionedSID=abc ;PartitionedSID=abc ;Secure;Partitioned__Secure-SID=abc ;Secure__Secure-SID=abc__Host-SID=abc ;Secure;Path=/__Host-SID=abc ;Path=/__Host-SID=abc ;Secure;Path=/;Domain=example.com__Host-SID=abc ;Secure;Path=/app__host-SID=abc__host-SID=abc ;Secure;Path=/SID=abc ;Secure;Partitioned;SameSite=None__Host-SID=abc ;Secure;Partitioned;Path=/SID=abc ;Secure;Partitioned;Domain=example.comSID=abc ;Secure;PartitionedSID=abc ;Secure;PartitionedSID=abc ;Secure;PartitionedPartitioned=falseSID=abc%3B%20Partitioned ;Secure ☢️
field  kekse (lenient)   python/mitmproxy
value  abc; Partitioned  abc%3B%20Partitioned
SID=abc; Partitioned ;Secure ☢️
field     kekse (lenient)  python/mitmproxy
(stored)  rejected         stored
Partitioned= ☢️
field     kekse (lenient)  python/mitmproxy
(stored)  rejected         stored
SID=abc ;SameSite=StrictSID=abc ;SameSite=LaxSID=abc ;SameSite=NoneSID=abc ;Secure;SameSite=NoneSID=abc ;SameSite=lAxSID=abc ;SameSite= ☢️
field     kekse (lenient)  python/mitmproxy
SameSite  —                
SID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abc ;Domain=.comSID=abc ;Domain=co.ukSID=abc ;Domain=example.co.ukSID=abc ;Domain=xn--mnchen-3ya.deSID=abc ;Domain=münchen.deSID=abc ;Domain=ð\x9f\x8dª.euSID=abc ;Domain=xn--hj8h.euSID=abc ;Domain=xn--SID=abc ;Domain=ex_ample.comSID=abc ;Domain=b.example.comSID=abc ;Domain=café ☢️
field   kekse (lenient)    python/mitmproxy
Domain  valid.example.com  café
SID=abc ;Path=file:///etc/passwdSID=abc ;Path=SID=abc ;Path=.SID=abc ;Path=/aaa...aaaSID=abc ;HttpOnly;Secure;Partitioned;SameSite=Lax;Path=/p;Domain=example.com;Max-Age=60SID=a\r\nb ☢️
field     kekse (lenient)  python/mitmproxy
(stored)  rejected         stored
SID = v ☢️
field  kekse (lenient)  python/mitmproxy
name   SID              SID  
value  v                  v  
SID=SID=a\0b ☢️
field     kekse (lenient)  python/mitmproxy
(stored)  rejected         stored
SID=a\x01b ☢️
field     kekse (lenient)  python/mitmproxy
(stored)  rejected         stored
SID=a"b ☢️
field     kekse (lenient)  python/mitmproxy
(stored)  rejected         stored
SID=café ☢️
field     kekse (lenient)  python/mitmproxy
(stored)  rejected         stored
justvalue= ☢️
field     kekse (lenient)  python/mitmproxy
(stored)  rejected         stored
=v ☢️
field     kekse (lenient)  python/mitmproxy
(stored)  rejected         stored
naïve=v ☢️
field     kekse (lenient)  python/mitmproxy
(stored)  rejected         stored
S ID=abc ☢️
field     kekse (lenient)  python/mitmproxy
(stored)  rejected         stored
SID=a\x7fb ☢️
field     kekse (lenient)  python/mitmproxy
(stored)  rejected         stored
SID=abcSID=abc ;Path=/a\0btoken[]=nested ☢️
field     kekse (lenient)  python/mitmproxy
(stored)  rejected         stored
data={"testdata":"JSON"} ☢️
field     kekse (lenient)  python/mitmproxy
(stored)  rejected         stored
data=[nested]data=<img src=x />"sid=surrounded-b…<27 chars> ;Secure ☢️
field     kekse (lenient)  python/mitmproxy
(stored)  rejected         stored
node/tough-cookieSID=abcSID=abcSID=abcSID=abcSID=abc ;SecureSID=abc ;Path=/bSID=abc ;Secure;PartitionedSID=abc ;PartitionedSID=abc ;PartitionedSID=abc ;Secure;Partitioned__Secure-SID=abc ;Secure__Secure-SID=abc__Host-SID=abc ;Secure;Path=/__Host-SID=abc ;Path=/__Host-SID=abc ;Secure;Path=/;Domain=example.com__Host-SID=abc ;Secure;Path=/app__host-SID=abc__host-SID=abc ;Secure;Path=/SID=abc ;Secure;Partitioned;SameSite=none__Host-SID=abc ;Secure;Partitioned;Path=/SID=abc ;Secure;Partitioned;Domain=example.comSID=abc ;Secure;PartitionedSID=abc ;Secure;PartitionedSID=abc ;Secure;PartitionedPartitioned=falseSID=abc%3B%20Partitioned ;Secure ☢️
field  kekse (lenient)   node/tough-cookie
value  abc; Partitioned  abc%3B%20Partitioned
SID="abc ;Secure ☢️
field     kekse (lenient)  node/tough-cookie
(stored)  rejected         stored
parse returned undefined
SID=abc ;SameSite=strictSID=abc ;SameSite=laxSID=abc ;SameSite=noneSID=abc ;Secure;SameSite=noneSID=abc ;SameSite=laxSID=abcSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abcSID=abc ;Expires=Thu, 03 Mar 1994 00:00:00 GMTSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abc ;Expires=Tue, 01 Jan 2069 00:00:00 GMTSID=abc ;Expires=Thu, 01 Jan 1970 00:00:00 GMTSID=abc ;Expires=Mon, 01 Jan 1601 00:00:00 GMTSID=abcSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abcSID=abcSID=abcSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Wed, 08 Nov 2006 07:00:00 GMTSID=abc ;Domain=comSID=abc ;Domain=co.ukSID=abc ;Domain=example.co.ukSID=abc ;Domain=xn--mnchen-3ya.deSID=abc ;Domain=mã¼nchen.deSID=abc ;Domain=ð\x9f\x8dª.euSID=abc ;Domain=xn--hj8h.euSID=abc ;Domain=xn--SID=abc ;Domain=ex_ample.comSID=abc ;Domain=b.example.comSID=abc ;Domain=cafã© ☢️
field   kekse (lenient)    node/tough-cookie
Domain  valid.example.com  cafã©
SID=abcSID=abcSID=abcSID=abc ;Path=/aaa...aaaSID=abc ;HttpOnly;Secure;Partitioned;SameSite=lax;Path=/p;Domain=example.com;Max-Age=60SID=a ☢️
field     kekse (lenient)  node/tough-cookie
(stored)  rejected         stored
SID=vSID=SID=a ☢️
field     kekse (lenient)  node/tough-cookie
(stored)  rejected         stored
parse returned undefined
SID=a"b ☢️
field     kekse (lenient)  node/tough-cookie
(stored)  rejected         stored
SID=café ☢️
field     kekse (lenient)  node/tough-cookie
(stored)  rejected         stored
parse returned undefined
parse returned undefined
naïve=v ☢️
field     kekse (lenient)  node/tough-cookie
(stored)  rejected         stored
S ID=abc ☢️
field     kekse (lenient)  node/tough-cookie
(stored)  rejected         stored
SID=a\x7fb ☢️
field     kekse (lenient)  node/tough-cookie
(stored)  rejected         stored
SID=abcSID=abc ;Path=/a\0btoken[]=nested ☢️
field     kekse (lenient)  node/tough-cookie
(stored)  rejected         stored
data={"testdata":"JSON"} ☢️
field     kekse (lenient)  node/tough-cookie
(stored)  rejected         stored
data=[nested]data="<img src=x />" ☢️
field  kekse (lenient)  node/tough-cookie
value  <img src=x />    "<img src=x />"
"sid=surrounded-b…<26 chars> ;Secure ☢️
field     kekse (lenient)  node/tough-cookie
(stored)  rejected         stored
node/set-cookie-parserSID=abcSID=abcSID=abcSID=abc ;SameSite=Bogus ☢️
field     kekse (lenient)  node/set-cookie-parser
SameSite  —                Bogus
SID=abc ;SecureSID=abc ;Path=/bSID=abc ;Secure;PartitionedSID=abc ;PartitionedSID=abc ;PartitionedSID=abc ;Secure;Partitioned__Secure-SID=abc ;Secure__Secure-SID=abc__Host-SID=abc ;Secure;Path=/__Host-SID=abc ;Path=/__Host-SID=abc ;Secure;Path=/;Domain=example.com__Host-SID=abc ;Secure;Path=/app__host-SID=abc__host-SID=abc ;Secure;Path=/SID=abc ;Secure;Partitioned;SameSite=None__Host-SID=abc ;Secure;Partitioned;Path=/SID=abc ;Secure;Partitioned;Domain=example.comSID=abc ;Secure;PartitionedSID=abc ;Secure;PartitionedSID=abc ;Secure;PartitionedPartitioned=falseSID=abc; Partitioned ;SecureSID="abc ;Secure ☢️
field     kekse (lenient)  node/set-cookie-parser
(stored)  rejected         stored
no cookie parsed
SID=abc ;SameSite=StrictSID=abc ;SameSite=LaxSID=abc ;SameSite=NoneSID=abc ;Secure;SameSite=NoneSID=abc ;SameSite=lAxSID=abcSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abcSID=abc ;Expires=Thu, 03 Mar 1994 00:00:00 GMTSID=abc ;Expires=Mon, 06 Nov 1600 08:49:37 GMTSID=abcSID=abc ;Expires=Sun, 06 Nov 1994 08:49:00 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sat, 11 Jun 1994 08:49:37 GMTSID=abcSID=abc ;Expires=Wed, 01 Jan 1969 00:00:00 GMTSID=abc ;Expires=Thu, 01 Jan 1970 00:00:00 GMTSID=abc ;Expires=Mon, 01 Jan 1601 00:00:00 GMTSID=abc ;Expires=Mon, 07 Nov 1994 00:00:00 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abcSID=abc ;Expires=567105180577SID=abc ;Expires=Tue, 06 Nov 2001 08:49:37 GMTSID=abcSID=abc ;Expires=Sun, 06 Nov 1994 07:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abcSID=abc ;Domain=.comSID=abc ;Domain=co.ukSID=abc ;Domain=example.co.ukSID=abc ;Domain=xn--mnchen-3ya.deSID=abc ;Domain=münchen.deSID=abc ;Domain=ð\x9f\x8dª.euSID=abc ;Domain=xn--hj8h.euSID=abc ;Domain=xn--SID=abc ;Domain=ex_ample.comSID=abc ;Domain=b.example.comSID=abc ;Domain=café ☢️
field   kekse (lenient)    node/set-cookie-parser
Domain  valid.example.com  café
SID=abc ;Path=file:///etc/passwdSID=abcSID=abc ;Path=.SID=abc ;Path=/aaa...aaaSID=abc ;HttpOnly;Secure;Partitioned;SameSite=Lax;Path=/p;Domain=example.com;Max-Age=60SID=a\r\nb ☢️
field     kekse (lenient)  node/set-cookie-parser
(stored)  rejected         stored
SID = v ☢️
field  kekse (lenient)  node/set-cookie-parser
name   SID                SID  
value  v                  v  
SID=SID=a\0b ☢️
field     kekse (lenient)  node/set-cookie-parser
(stored)  rejected         stored
SID=a\x01b ☢️
field     kekse (lenient)  node/set-cookie-parser
(stored)  rejected         stored
SID=a"b ☢️
field     kekse (lenient)  node/set-cookie-parser
(stored)  rejected         stored
SID=café ☢️
field     kekse (lenient)  node/set-cookie-parser
(stored)  rejected         stored
no cookie parsed
no cookie parsed
naïve=v ☢️
field     kekse (lenient)  node/set-cookie-parser
(stored)  rejected         stored
S ID=abc ☢️
field     kekse (lenient)  node/set-cookie-parser
(stored)  rejected         stored
SID=a\x7fb ☢️
field     kekse (lenient)  node/set-cookie-parser
(stored)  rejected         stored
SID=abcSID=abc ;Path=/a\0btoken[]=nested ☢️
field     kekse (lenient)  node/set-cookie-parser
(stored)  rejected         stored
data={"testdata":"JSON"} ☢️
field     kekse (lenient)  node/set-cookie-parser
(stored)  rejected         stored
data=[nested]data="<img src=x />" ☢️
field  kekse (lenient)  node/set-cookie-parser
value  <img src=x />    "<img src=x />"
"sid=surrounded-b…<27 chars> ;Secure ☢️
field     kekse (lenient)  node/set-cookie-parser
(stored)  rejected         stored
go/net/httpSID=abcSID=abcSID=abcSID=abcSID=abc ;SecureSID=abc ;Path=/bSID=abc ;Secure;PartitionedSID=abc ;PartitionedSID=abc ;PartitionedSID=abc ;Secure;Partitioned__Secure-SID=abc ;Secure__Secure-SID=abc__Host-SID=abc ;Secure;Path=/__Host-SID=abc ;Path=/__Host-SID=abc ;Secure;Path=/;Domain=example.com__Host-SID=abc ;Secure;Path=/app__host-SID=abc__host-SID=abc ;Secure;Path=/SID=abc ;Secure;Partitioned;SameSite=None__Host-SID=abc ;Secure;Partitioned;Path=/SID=abc ;Secure;Partitioned;Domain=example.comSID=abc ;Secure;PartitionedSID=abc ;Secure;PartitionedSID=abc ;Secure;PartitionedPartitioned=falseSID=abc%3B%20Partitioned ;Secure ☢️
field  kekse (lenient)   go/net/http
value  abc; Partitioned  abc%3B%20Partitioned
http: invalid cookie value
http: '=' not found in cookie
SID=abc ;SameSite=StrictSID=abc ;SameSite=LaxSID=abc ;SameSite=NoneSID=abc ;Secure;SameSite=NoneSID=abc ;SameSite=LaxSID=abcSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abcSID=abcSID=abcSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abc ;Expires=Mon, 06 Nov 1600 08:49:37 GMTSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abc ;Expires=Mon, 01 Jan 1601 00:00:00 GMTSID=abcSID=abcSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abc ;Domain=.comSID=abc ;Domain=co.ukSID=abc ;Domain=example.co.ukSID=abc ;Domain=xn--mnchen-3ya.deSID=abcSID=abcSID=abc ;Domain=xn--hj8h.euSID=abc ;Domain=xn--SID=abc ;Domain=ex_ample.comSID=abc ;Domain=b.example.comSID=abc ;Domain=valid.example.comSID=abc ;Path=file:///etc/passwdSID=abcSID=abc ;Path=.SID=abc ;Path=/aaa...aaaSID=abc ;HttpOnly;Secure;Partitioned;SameSite=Lax;Path=/p;Domain=example.com;Max-Age=60
http: invalid cookie value
SID= v ☢️
field  kekse (lenient)  go/net/http
value  v                  v
SID=
http: invalid cookie value
http: invalid cookie value
http: invalid cookie value
http: invalid cookie value
http: '=' not found in cookie
http: invalid cookie name
http: invalid cookie name
http: invalid cookie name
http: invalid cookie value
SID=abcSID=abc
http: invalid cookie name
http: invalid cookie value
data=[nested]data=<img src=x />
http: invalid cookie name
dotnet/Microsoft.Net.Http.HeadersSID=abcSID=abc
SetCookieHeaderValue.TryParse returned false
SID=abc
SetCookieHeaderValue.TryParse returned false
SID=abc ;Path=/bSID=abc ;SecureSID=abcSID=abcSID=abc ;Secure__Secure-SID=abc ;Secure__Secure-SID=abc__Host-SID=abc ;Secure;Path=/__Host-SID=abc ;Path=/__Host-SID=abc ;Secure;Path=/;Domain=example.com__Host-SID=abc ;Secure;Path=/app__host-SID=abc__host-SID=abc ;Secure;Path=/SID=abc ;Secure;SameSite=None__Host-SID=abc ;Secure;Path=/SID=abc ;Secure;Domain=example.comSID=abc ;SecureSID=abc ;SecureSID=abc ;SecurePartitioned=falseSID=abc%3B%20Partitioned ;Secure ☢️
field  kekse (lenient)   dotnet/Microsoft.Net.Http.Headers
value  abc; Partitioned  abc%3B%20Partitioned
SID= ;Secure ☢️
field     kekse (lenient)  dotnet/Microsoft.Net.Http.Headers
(stored)  rejected         stored
SetCookieHeaderValue.TryParse returned false
SID=abc ;SameSite=StrictSID=abc ;SameSite=LaxSID=abc ;SameSite=NoneSID=abc ;Secure;SameSite=NoneSID=abc ;SameSite=LaxSID=abcSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMT
SetCookieHeaderValue.TryParse returned false
SetCookieHeaderValue.TryParse returned false
SID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMT
SetCookieHeaderValue.TryParse returned false
SID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMT
SetCookieHeaderValue.TryParse returned false
SetCookieHeaderValue.TryParse returned false
SetCookieHeaderValue.TryParse returned false
SetCookieHeaderValue.TryParse returned false
SetCookieHeaderValue.TryParse returned false
SetCookieHeaderValue.TryParse returned false
SetCookieHeaderValue.TryParse returned false
SetCookieHeaderValue.TryParse returned false
SetCookieHeaderValue.TryParse returned false
SetCookieHeaderValue.TryParse returned false
SetCookieHeaderValue.TryParse returned false
SetCookieHeaderValue.TryParse returned false
SID=abc ;Expires=Thu, 01 Jan 1970 00:00:00 GMTSID=abc ;Expires=Mon, 01 Jan 1601 00:00:00 GMT
SetCookieHeaderValue.TryParse returned false
SID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMT
SetCookieHeaderValue.TryParse returned false
SetCookieHeaderValue.TryParse returned false
SetCookieHeaderValue.TryParse returned false
SetCookieHeaderValue.TryParse returned false
SetCookieHeaderValue.TryParse returned false
SetCookieHeaderValue.TryParse returned false
SID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMT
SetCookieHeaderValue.TryParse returned false
SID=abc ;Domain=.comSID=abc ;Domain=co.ukSID=abc ;Domain=example.co.ukSID=abc ;Domain=xn--mnchen-3ya.deSID=abc ;Domain=münchen.deSID=abc ;Domain=ð\x9f\x8dª.euSID=abc ;Domain=xn--hj8h.euSID=abc ;Domain=xn--SID=abc ;Domain=ex_ample.comSID=abc ;Domain=b.example.comSID=abc ;Domain=café ☢️
field   kekse (lenient)    dotnet/Microsoft.Net.Http.Headers
Domain  valid.example.com  café
SID=abc ;Path=file:///etc/passwdSID=abc ;Path=SID=abc ;Path=.SID=abc ;Path=/aaa...aaaSID=abc ;HttpOnly;Secure;SameSite=Lax;Path=/p;Domain=example.com;Max-Age=60
SetCookieHeaderValue.TryParse returned false
SetCookieHeaderValue.TryParse returned false
SID=
SetCookieHeaderValue.TryParse returned false
SetCookieHeaderValue.TryParse returned false
SetCookieHeaderValue.TryParse returned false
SetCookieHeaderValue.TryParse returned false
SetCookieHeaderValue.TryParse returned false
SetCookieHeaderValue.TryParse returned false
SetCookieHeaderValue.TryParse returned false
SetCookieHeaderValue.TryParse returned false
SetCookieHeaderValue.TryParse returned false
SID=abcSID=abc ;Path=/a\0b
SetCookieHeaderValue.TryParse returned false
SetCookieHeaderValue.TryParse returned false
data=[nested]
SetCookieHeaderValue.TryParse returned false
SetCookieHeaderValue.TryParse returned false
nginx/proxy (Set-Cookie)≠ SID=a%0D%0Ab≠ SID = v≠ SID=a%00b≠ SID=a%01b≠ SID=a%7Fb≠ SID=abc; Pa%00th=/≠ SID=abc; Path=/a%00b
java/Jakarta RESTEasySID=abcSID=abc
NumberFormatException: For input string: "banana"
IllegalArgumentException: No enum constant jakarta.ws.rs.core.NewCookie.SameSite.BOGUS
SID=abc ;SecureSID=abc ;Path=/bSID=abc ;SecureSID=abcSID=abcSID=abc ;Secure__Secure-SID=abc ;Secure__Secure-SID=abc__Host-SID=abc ;Secure;Path=/__Host-SID=abc ;Path=/__Host-SID=abc ;Secure;Path=/;Domain=example.com__Host-SID=abc ;Secure;Path=/app__host-SID=abc__host-SID=abc ;Secure;Path=/SID=abc ;Secure;SameSite=None__Host-SID=abc ;Secure;Path=/SID=abc ;Secure;Domain=example.comSID=abc ;SecureSID=abc ;SecureSID=abc ;SecurePartitioned=falseSID=abc%3B%20Partitioned ;Secure ☢️
field  kekse (lenient)   java/Jakarta RESTEasy
value  abc; Partitioned  abc%3B%20Partitioned
SID=abc; Partitioned ;Secure ☢️
field     kekse (lenient)  java/Jakarta RESTEasy
(stored)  rejected         stored
Partitioned= ☢️
field     kekse (lenient)  java/Jakarta RESTEasy
(stored)  rejected         stored
SID=abc ;SameSite=StrictSID=abc ;SameSite=LaxSID=abc ;SameSite=NoneSID=abc ;Secure;SameSite=NoneSID=abc ;SameSite=Lax
NullPointerException: Cannot invoke "String.toUpperCase(java.util.Locale)" because "value" is null
SID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abc
NullPointerException: Cannot invoke "String.length()" because "<parameter1>" is null
SID=abcSID=abcSID=abcSID=abc ;Domain=.comSID=abc ;Domain=co.ukSID=abc ;Domain=example.co.ukSID=abc ;Domain=xn--mnchen-3ya.deSID=abc ;Domain=münchen.deSID=abc ;Domain=ð\x9f\x8dª.euSID=abc ;Domain=xn--hj8h.euSID=abc ;Domain=xn--SID=abc ;Domain=ex_ample.comSID=abc ;Domain=b.example.comSID=abc ;Domain=café ☢️
field   kekse (lenient)    java/Jakarta RESTEasy
Domain  valid.example.com  café
SID=abc ;Path=file:///etc/passwdSID=abcSID=abc ;Path=.SID=abc ;Path=/aaa...aaaSID=abc ;HttpOnly;Secure;SameSite=Lax;Path=/p;Domain=example.com;Max-Age=60SID=a\r\nb ☢️
field     kekse (lenient)  java/Jakarta RESTEasy
(stored)  rejected         stored
SID=vSID=SID=a\0b ☢️
field     kekse (lenient)  java/Jakarta RESTEasy
(stored)  rejected         stored
SID=a\x01b ☢️
field     kekse (lenient)  java/Jakarta RESTEasy
(stored)  rejected         stored
SID=a"b ☢️
field     kekse (lenient)  java/Jakarta RESTEasy
(stored)  rejected         stored
SID=café ☢️
field     kekse (lenient)  java/Jakarta RESTEasy
(stored)  rejected         stored
justvalue= ☢️
field     kekse (lenient)  java/Jakarta RESTEasy
(stored)  rejected         stored
IllegalArgumentException: name==null
naïve=v ☢️
field     kekse (lenient)  java/Jakarta RESTEasy
(stored)  rejected         stored
S ID=abc ☢️
field     kekse (lenient)  java/Jakarta RESTEasy
(stored)  rejected         stored
SID=a\x7fb ☢️
field     kekse (lenient)  java/Jakarta RESTEasy
(stored)  rejected         stored
SID=abcSID=abc ;Path=/a\0btoken[]=nested ☢️
field     kekse (lenient)  java/Jakarta RESTEasy
(stored)  rejected         stored
data={"testdata":"JSON"} ☢️
field     kekse (lenient)  java/Jakarta RESTEasy
(stored)  rejected         stored
data=[nested]data=<img src=x />"sid=surrounded-b…<35 chars> ☢️
field     kekse (lenient)  java/Jakarta RESTEasy
(stored)  rejected         stored
java/Jakarta JerseySID=abcSID=abc
NumberFormatException: For input string: "banana"
IllegalArgumentException: No enum constant jakarta.ws.rs.core.NewCookie.SameSite.BOGUS
SID=abc ;SecureSID=abc ;Path=/bSID=abc ;SecureSID=abcSID=abcSID=abc ;Secure__Secure-SID=abc ;Secure__Secure-SID=abc__Host-SID=abc ;Secure;Path=/__Host-SID=abc ;Path=/__Host-SID=abc ;Secure;Path=/;Domain=example.com__Host-SID=abc ;Secure;Path=/app__host-SID=abc__host-SID=abc ;Secure;Path=/SID=abc ;Secure;SameSite=None__Host-SID=abc ;Secure;Path=/SID=abc ;Secure;Domain=example.comSID=abc ;SecureSID=abc ;SecureSID=abc ;SecurePartitioned=falseSID=abc%3B%20Partitioned ;Secure ☢️
field  kekse (lenient)   java/Jakarta Jersey
value  abc; Partitioned  abc%3B%20Partitioned
SID="abc ;Secure ☢️
field     kekse (lenient)  java/Jakarta Jersey
(stored)  rejected         stored
Partitioned= ☢️
field     kekse (lenient)  java/Jakarta Jersey
(stored)  rejected         stored
SID=abc ;SameSite=StrictSID=abc ;SameSite=LaxSID=abc ;SameSite=NoneSID=abc ;Secure;SameSite=NoneSID=abc ;SameSite=Lax
IllegalArgumentException: No enum constant jakarta.ws.rs.core.NewCookie.SameSite.
SID=abcSID=abc
ArrayIndexOutOfBoundsException: Index 2 out of bounds for length 2
ArrayIndexOutOfBoundsException: Index 2 out of bounds for length 2
SID=abcSID=abcSID=abc
ArrayIndexOutOfBoundsException: Index 2 out of bounds for length 2
SID=abcSID=abc
ArrayIndexOutOfBoundsException: Index 2 out of bounds for length 2
ArrayIndexOutOfBoundsException: Index 2 out of bounds for length 2
SID=abcSID=abcSID=abcSID=abc
ArrayIndexOutOfBoundsException: Index 2 out of bounds for length 2
ArrayIndexOutOfBoundsException: Index 2 out of bounds for length 2
ArrayIndexOutOfBoundsException: Index 2 out of bounds for length 2
ArrayIndexOutOfBoundsException: Index 2 out of bounds for length 2
SID=abcSID=abcSID=abcSID=abcSID=abcSID=abc
ArrayIndexOutOfBoundsException: Index 2 out of bounds for length 2
ArrayIndexOutOfBoundsException: Index 2 out of bounds for length 2
ArrayIndexOutOfBoundsException: Index 2 out of bounds for length 2
SID=abc
ArrayIndexOutOfBoundsException: Index 2 out of bounds for length 2
SID=abcSID=abc
ArrayIndexOutOfBoundsException: Index 2 out of bounds for length 2
SID=abc ;Domain=.comSID=abc ;Domain=co.ukSID=abc ;Domain=example.co.ukSID=abc ;Domain=xn--mnchen-3ya.deSID=abc ;Domain=münchen.deSID=abc ;Domain=ð\x9f\x8dª.euSID=abc ;Domain=xn--hj8h.euSID=abc ;Domain=xn--SID=abc ;Domain=ex_ample.comSID=abc ;Domain=b.example.comSID=abc ;Domain=café ☢️
field   kekse (lenient)    java/Jakarta Jersey
Domain  valid.example.com  café
SID=abc ;Path=file:///etc/passwdSID=abc ;Path=SID=abc ;Path=.SID=abc ;Path=/aaa...aaaSID=abc ;HttpOnly;Secure;SameSite=Lax;Path=/p;Domain=example.com;Max-Age=60SID=a\r\nb ☢️
field     kekse (lenient)  java/Jakarta Jersey
(stored)  rejected         stored
SID=vSID=SID=a\0b ☢️
field     kekse (lenient)  java/Jakarta Jersey
(stored)  rejected         stored
SID=a\x01b ☢️
field     kekse (lenient)  java/Jakarta Jersey
(stored)  rejected         stored
SID=a"b ☢️
field     kekse (lenient)  java/Jakarta Jersey
(stored)  rejected         stored
SID=café ☢️
field     kekse (lenient)  java/Jakarta Jersey
(stored)  rejected         stored
justvalue= ☢️
field     kekse (lenient)  java/Jakarta Jersey
(stored)  rejected         stored
=v ☢️
field     kekse (lenient)  java/Jakarta Jersey
(stored)  rejected         stored
naïve=v ☢️
field     kekse (lenient)  java/Jakarta Jersey
(stored)  rejected         stored
S ID=abc ☢️
field     kekse (lenient)  java/Jakarta Jersey
(stored)  rejected         stored
SID=a\x7fb ☢️
field     kekse (lenient)  java/Jakarta Jersey
(stored)  rejected         stored
SID=abcSID=abc ;Path=/a\0btoken[]=nested ☢️
field     kekse (lenient)  java/Jakarta Jersey
(stored)  rejected         stored
data={"testdata":"JSON"} ☢️
field     kekse (lenient)  java/Jakarta Jersey
(stored)  rejected         stored
data=[nested]data=<img src=x />"sid=surrounded-b…<26 chars> ;Secure ☢️
field     kekse (lenient)  java/Jakarta Jersey
(stored)  rejected         stored
java/java.net.HttpCookieSID=abcSID=abc
IllegalArgumentException: Illegal cookie max-age attribute
SID=abcSID=abc ;SecureSID=abc ;Path=/a ☢️
field  kekse (lenient)  java/java.net.HttpCookie
Path   /b               /a
SID=abc ;SecureSID=abcSID=abcSID=abc ;Secure__Secure-SID=abc ;Secure__Secure-SID=abc__Host-SID=abc ;Secure;Path=/__Host-SID=abc ;Path=/__Host-SID=abc ;Secure;Path=/;Domain=example.com__Host-SID=abc ;Secure;Path=/app__host-SID=abc__host-SID=abc ;Secure;Path=/SID=abc ;Secure__Host-SID=abc ;Secure;Path=/SID=abc ;Secure;Domain=example.comSID=abc ;SecureSID=abc ;SecureSID=abc ;SecurePartitioned=falseSID=abc%3B%20Partitioned ;Secure ☢️
field  kekse (lenient)   java/java.net.HttpCookie
value  abc; Partitioned  abc%3B%20Partitioned
SID="abc ;Secure ☢️
field     kekse (lenient)  java/java.net.HttpCookie
(stored)  rejected         stored
IllegalArgumentException: Invalid cookie name-value pair
SID=abcSID=abcSID=abcSID=abc ;SecureSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abc ;Domain=.comSID=abc ;Domain=co.ukSID=abc ;Domain=example.co.ukSID=abc ;Domain=xn--mnchen-3ya.deSID=abc ;Domain=mã¼nchen.deSID=abc ;Domain=ð\x9f\x8dª.euSID=abc ;Domain=xn--hj8h.euSID=abc ;Domain=xn--SID=abc ;Domain=ex_ample.comSID=abc ;Domain=a.example.com ☢️
field   kekse (lenient)  java/java.net.HttpCookie
Domain  b.example.com    a.example.com
SID=abc ;Domain=valid.example.comSID=abc ;Path=file:///etc/passwdSID=abc ;Path=SID=abc ;Path=.SID=abc ;Path=/aaa...aaaSID=abc ;HttpOnly;Secure;Path=/p;Domain=example.com;Max-Age=60SID=a\r\nb ☢️
field     kekse (lenient)  java/java.net.HttpCookie
(stored)  rejected         stored
SID=vSID=SID=a\0b ☢️
field     kekse (lenient)  java/java.net.HttpCookie
(stored)  rejected         stored
SID=a\x01b ☢️
field     kekse (lenient)  java/java.net.HttpCookie
(stored)  rejected         stored
SID=a"b ☢️
field     kekse (lenient)  java/java.net.HttpCookie
(stored)  rejected         stored
SID=café ☢️
field     kekse (lenient)  java/java.net.HttpCookie
(stored)  rejected         stored
IllegalArgumentException: Invalid cookie name-value pair
IllegalArgumentException: Illegal cookie name
IllegalArgumentException: Illegal cookie name
IllegalArgumentException: Illegal cookie name
SID=a\x7fb ☢️
field     kekse (lenient)  java/java.net.HttpCookie
(stored)  rejected         stored
SID=abcSID=abc ;Path=/a\0btoken[]=nested ☢️
field     kekse (lenient)  java/java.net.HttpCookie
(stored)  rejected         stored
data={"testdata":"JSON"} ☢️
field     kekse (lenient)  java/java.net.HttpCookie
(stored)  rejected         stored
data=[nested]data=<img src=x />"sid=surrounded-b…<26 chars> ;Secure ☢️
field     kekse (lenient)  java/java.net.HttpCookie
(stored)  rejected         stored
java/Apache HttpClient5SID=abc ;Domain=example.comSID=abc ;Domain=example.comSID=abc ;Domain=example.comSID=abc ;SameSite=Bogus;Domain=example.com ☢️
field     kekse (lenient)  java/Apache HttpClient5
SameSite  —                Bogus
Domain    —                example.com (effective)
SID=abc ;Secure;Domain=example.comSID=abc ;Path=/b;Domain=example.comSID=abc ;Secure;Domain=example.comSID=abc ;Domain=example.comSID=abc ;Domain=example.comSID=abc ;Secure;Domain=example.com__Secure-SID=abc ;Secure;Domain=example.com__Secure-SID=abc ;Domain=example.com__Host-SID=abc ;Secure;Path=/;Domain=example.com__Host-SID=abc ;Path=/;Domain=example.com__Host-SID=abc ;Secure;Path=/;Domain=example.com__Host-SID=abc ;Secure;Path=/app;Domain=example.com__host-SID=abc ;Domain=example.com__host-SID=abc ;Secure;Path=/;Domain=example.comSID=abc ;Secure;SameSite=None;Domain=example.com__Host-SID=abc ;Secure;Path=/;Domain=example.comSID=abc ;Secure;Domain=example.comSID=abc ;Secure;Domain=example.comSID=abc ;Secure;Domain=example.comSID=abc ;Secure;Domain=example.comPartitioned=false ;Domain=example.comSID=abc%3B%20Partitioned ;Secure;Domain=example.com ☢️
field   kekse (lenient)   java/Apache HttpClient5
value   abc; Partitioned  abc%3B%20Partitioned
Domain  —                 example.com (effective)
SID=abc; Partitioned ;Secure;Domain=example.com ☢️
field     kekse (lenient)  java/Apache HttpClient5
(stored)  rejected         stored
MalformedCookieException: Cookie value is invalid: 'Set-Cookie: Partitioned; SID=abc'
SID=abc ;SameSite=Strict;Domain=example.comSID=abc ;SameSite=Lax;Domain=example.comSID=abc ;SameSite=None;Domain=example.comSID=abc ;Secure;SameSite=None;Domain=example.comSID=abc ;SameSite=lAx;Domain=example.comSID=abc ;SameSite=;Domain=example.com ☢️
field     kekse (lenient)  java/Apache HttpClient5
SameSite  —                
Domain    —                example.com (effective)
SID=abc ;Domain=example.comSID=abc ;Domain=example.comSID=abc ;Domain=example.comSID=abc ;Domain=example.comSID=abc ;Domain=example.comSID=abc ;Domain=example.comSID=abc ;Domain=example.comSID=abc ;Domain=example.comSID=abc ;Domain=example.comSID=abc ;Domain=example.comSID=abc ;Domain=example.com
MalformedCookieException: Invalid 'expires' attribute: not-a-date
DateTimeException: Invalid date 'FEBRUARY 31'
MalformedCookieException: Invalid 'expires' attribute: Sun, 06 Nov 1600 08:49:37 GMT
MalformedCookieException: Invalid 'expires' attribute: Sun, 06 Nov 1994 08:60:00 GMT
MalformedCookieException: Invalid 'expires' attribute: Sun, 06 Nov 1994 08:49:60 GMT
MalformedCookieException: Invalid 'expires' attribute: 1994-11-06T08:49:37Z
MalformedCookieException: Invalid 'expires' attribute: 11/06/1994 08:49:37
MalformedCookieException: Invalid 'expires' attribute: 06.11.1994 08:49:37
MalformedCookieException: Invalid 'expires' attribute: 784108177
SID=abc ;Domain=example.comSID=abc ;Domain=example.comSID=abc ;Domain=example.com
MalformedCookieException: Invalid 'expires' attribute: Sun, 06 Nov 1994 24:00:00 GMT
SID=abc ;Domain=example.comSID=abc ;Domain=example.comSID=abc ;Domain=example.comSID=abc ;Domain=example.com
MalformedCookieException: Invalid 'expires' attribute: 06 Nov 19940 08:49:37
MalformedCookieException: Invalid 'expires' attribute: Sun, 06 Nov 08:49:37 GMT
SID=abc ;Domain=example.comSID=abc ;Domain=example.comSID=abc ;Domain=example.comSID=abc ;Domain=example.comSID=abc ;Domain=comSID=abc ;Domain=co.ukSID=abc ;Domain=example.co.ukSID=abc ;Domain=xn--mnchen-3ya.deSID=abc ;Domain=mã¼nchen.deSID=abc ;Domain=ð\x9f\x8dª.euSID=abc ;Domain=xn--hj8h.euSID=abc ;Domain=xn--SID=abc ;Domain=ex_ample.comSID=abc ;Domain=b.example.comSID=abc ;Domain=cafã© ☢️
field   kekse (lenient)    java/Apache HttpClient5
Domain  valid.example.com  cafã©
SID=abc ;Path=file:///etc/passwd;Domain=example.comSID=abc ;Path⇒default;Domain=example.comSID=abc ;Path=.;Domain=example.comSID=abc ;Path=/aaa...aaa;Domain=example.comSID=abc ;Secure;SameSite=Lax;Path=/p;Domain=example.com;Max-Age=60SID=a b ;Domain=example.com ☢️
field     kekse (lenient)  java/Apache HttpClient5
(stored)  rejected         stored
SID=v ;Domain=example.comSID= ;Domain=example.comSID=a\0b ;Domain=example.com ☢️
field     kekse (lenient)  java/Apache HttpClient5
(stored)  rejected         stored
SID=a\x01b ;Domain=example.com ☢️
field     kekse (lenient)  java/Apache HttpClient5
(stored)  rejected         stored
SID=ab ;Domain=example.com ☢️
field     kekse (lenient)  java/Apache HttpClient5
(stored)  rejected         stored
SID=café ;Domain=example.com ☢️
field     kekse (lenient)  java/Apache HttpClient5
(stored)  rejected         stored
no cookie parsed
no cookie parsed
naïve=v ;Domain=example.com ☢️
field     kekse (lenient)  java/Apache HttpClient5
(stored)  rejected         stored
S ID=abc ;Domain=example.com ☢️
field     kekse (lenient)  java/Apache HttpClient5
(stored)  rejected         stored
SID=a\x7fb ;Domain=example.com ☢️
field     kekse (lenient)  java/Apache HttpClient5
(stored)  rejected         stored
SID=abc ;Domain=example.comSID=abc ;Path=/a\0b;Domain=example.comtoken[]=nested ;Domain=example.com ☢️
field     kekse (lenient)  java/Apache HttpClient5
(stored)  rejected         stored
data={testdata:JSON} ;Domain=example.com ☢️
field     kekse (lenient)  java/Apache HttpClient5
(stored)  rejected         stored
data=[nested] ;Domain=example.comdata=<img src=x /> ;Domain=example.com"sid=surrounded-b…<34 chars> ;Domain=example.com ☢️
field     kekse (lenient)  java/Apache HttpClient5
(stored)  rejected         stored
c/libcurl
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
SID=abc ;Secure;Domain=.example.com
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
SID=abc ;Domain=.comSID=abc ;Domain=.co.ukSID=abc ;Domain=.example.co.ukSID=abc ;Domain=.xn--mnchen-3ya.deSID=abc ;Domain=.münchen.deSID=abc ;Domain=.ð\x9f\x8dª.euSID=abc ;Domain=.xn--hj8h.euSID=abc ;Domain=.xn--SID=abc ;Domain=.ex_ample.comSID=abc ;Domain=.b.example.comSID=abc ;Domain=.café ☢️
field   kekse (lenient)    c/libcurl
Domain  valid.example.com  .café
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
SID=abc ;HttpOnly;Secure;Path=/p;Domain=.example.com
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
client/curlSID=abcSID=abc
no cookie accepted
SID=abcSID=abcSID=abc ;Path=/bSID=abc ;SecureSID=abcSID=abcSID=abc ;Secure__Secure-SID=abc ;Secure
no cookie accepted
__Host-SID=abc ;Secure;Path=/
no cookie accepted
no cookie accepted
no cookie accepted
__host-SID=abc__host-SID=abc ;Secure;Path=/SID=abc ;Secure__Host-SID=abc ;Secure;Path=/
no cookie accepted
SID=abc ;SecureSID=abc ;SecureSID=abc ;SecurePartitioned=falseSID=abc%3B%20Partitioned ;Secure ☢️
field  kekse (lenient)   client/curl
value  abc; Partitioned  abc%3B%20Partitioned
SID="abc ;Secure ☢️
field     kekse (lenient)  client/curl
(stored)  rejected         stored
no cookie accepted
SID=abcSID=abcSID=abcSID=abc ;SecureSID=abcSID=abc
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
SID=abc
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
SID=abc
no cookie accepted
SID=abcSID=abc
no cookie accepted
SID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abc
no cookie accepted
no cookie accepted
SID=abcSID=abcSID=abcSID=abcSID=abc
no cookie accepted
no cookie accepted
SID=abc
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
SID=abc ;Path=file:///etc/passwdSID=abcSID=abc ;Path=.SID=abc ;Path=/aaa...aaa
no cookie accepted
SID=a ☢️
field     kekse (lenient)  client/curl
(stored)  rejected         stored
SID=vSID=
no cookie accepted
no cookie accepted
SID=a"b ☢️
field     kekse (lenient)  client/curl
(stored)  rejected         stored
SID=café ☢️
field     kekse (lenient)  client/curl
(stored)  rejected         stored
no cookie accepted
=v ☢️
field     kekse (lenient)  client/curl
(stored)  rejected         stored
naïve=v ☢️
field     kekse (lenient)  client/curl
(stored)  rejected         stored
S ID=abc ☢️
field     kekse (lenient)  client/curl
(stored)  rejected         stored
no cookie accepted
no cookie accepted
no cookie accepted
token[]=nested ☢️
field     kekse (lenient)  client/curl
(stored)  rejected         stored
data={"testdata":"JSON"} ☢️
field     kekse (lenient)  client/curl
(stored)  rejected         stored
data=[nested]data="<img src=x />" ☢️
field  kekse (lenient)  client/curl
value  <img src=x />    "<img src=x />"
"sid=surrounded-b…<26 chars> ;Secure ☢️
field     kekse (lenient)  client/curl
(stored)  rejected         stored
client/wgetSID=abcSID=abc
no cookie accepted
SID=abcSID=abc ;Secure
no cookie accepted
SID=abc ;SecureSID=abcSID=abcSID=abc ;Secure__Secure-SID=abc ;Secure__Secure-SID=abc__Host-SID=abc ;Secure;Path=/__Host-SID=abc ;Path=/
no cookie accepted
no cookie accepted
__host-SID=abc__host-SID=abc ;Secure;Path=/SID=abc ;Secure__Host-SID=abc ;Secure;Path=/
no cookie accepted
SID=abc ;SecureSID=abc ;SecureSID=abc ;SecurePartitioned=falseSID=abc%3B%20Partitioned ;Secure ☢️
field  kekse (lenient)   client/wget
value  abc; Partitioned  abc%3B%20Partitioned
SID="abc; Partitioned" ;Secure ☢️
field     kekse (lenient)  client/wget
(stored)  rejected         stored
no cookie accepted
SID=abcSID=abcSID=abcSID=abc ;SecureSID=abcSID=abc
no cookie accepted
no cookie accepted
no cookie accepted
SID=abc
no cookie accepted
SID=abc
no cookie accepted
SID=abc
no cookie accepted
no cookie accepted
SID=abcSID=abc
no cookie accepted
no cookie accepted
SID=abc
no cookie accepted
SID=abcSID=abcSID=abcSID=abc
no cookie accepted
no cookie accepted
no cookie accepted
SID=abc
no cookie accepted
no cookie accepted
SID=abcSID=abcSID=abcSID=abc
no cookie accepted
no cookie accepted
no cookie accepted
SID=abc
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
SID=a ☢️
field     kekse (lenient)  client/wget
(stored)  rejected         stored
SID=vSID=SID=a ☢️
field     kekse (lenient)  client/wget
(stored)  rejected         stored
SID=a\x01b ☢️
field     kekse (lenient)  client/wget
(stored)  rejected         stored
SID=a"b ☢️
field     kekse (lenient)  client/wget
(stored)  rejected         stored
SID=café ☢️
field     kekse (lenient)  client/wget
(stored)  rejected         stored
no cookie accepted
no cookie accepted
naïve=v ☢️
field     kekse (lenient)  client/wget
(stored)  rejected         stored
no cookie accepted
SID=a\x7fb ☢️
field     kekse (lenient)  client/wget
(stored)  rejected         stored
SID=abc
no cookie accepted
token[]=nested ☢️
field     kekse (lenient)  client/wget
(stored)  rejected         stored
data={"testdata":"JSON"} ☢️
field     kekse (lenient)  client/wget
(stored)  rejected         stored
data=[nested]data="<img src=x />" ☢️
field  kekse (lenient)  client/wget
value  <img src=x />    "<img src=x />"
"sid=surrounded-b…<26 chars> ;Secure ☢️
field     kekse (lenient)  client/wget
(stored)  rejected         stored
browser/chromiumSID=abcSID=abcSID=abcSID=abc ;SameSite=Lax ☢️
field     kekse (lenient)  browser/chromium
SameSite  —                Lax
SID=abc ;SecureSID=abc ;Path=/bSID=abc ;Secure
no cookie accepted
no cookie accepted
SID=abc ;Secure__Secure-SID=abc ;Secure
no cookie accepted
__Host-SID=abc ;Secure;Path=/
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
__host-SID=abc ;Secure;Path=/SID=abc ;Secure;SameSite=None__Host-SID=abc ;Secure;Path=/
no cookie accepted
SID=abc ;SecureSID=abc ;SecureSID=abc ;SecurePartitioned=falseSID=abc%3B%20Partitioned ;Secure ☢️
field  kekse (lenient)   browser/chromium
value  abc; Partitioned  abc%3B%20Partitioned
SID="abc ;Secure ☢️
field     kekse (lenient)  browser/chromium
(stored)  rejected         stored
=Partitioned ☢️
field     kekse (lenient)  browser/chromium
(stored)  rejected         stored
SID=abc ;SameSite=StrictSID=abc ;SameSite=Lax
no cookie accepted
SID=abc ;Secure;SameSite=NoneSID=abc ;SameSite=LaxSID=abc ;SameSite=Lax ☢️
field     kekse (lenient)  browser/chromium
SameSite  —                Lax
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
SID=abcSID=abc
no cookie accepted
SID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abc
no cookie accepted
no cookie accepted
SID=abc
no cookie accepted
no cookie accepted
no cookie accepted
SID=abcSID=abcSID=abcSID=abc
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
SID=abc ;Path⇒defaultSID=abc ;Path⇒defaultSID=abc ;Path⇒defaultSID=abc ;Path⇒default
no cookie accepted
SID=a ☢️
field     kekse (lenient)  browser/chromium
(stored)  rejected         stored
SID=vSID=
no cookie accepted
no cookie accepted
SID=a"b ☢️
field     kekse (lenient)  browser/chromium
(stored)  rejected         stored
SID=café ☢️
field     kekse (lenient)  browser/chromium
(stored)  rejected         stored
=justvalue ☢️
field     kekse (lenient)  browser/chromium
(stored)  rejected         stored
=v ☢️
field     kekse (lenient)  browser/chromium
(stored)  rejected         stored
naïve=v ☢️
field     kekse (lenient)  browser/chromium
(stored)  rejected         stored
S ID=abc ☢️
field     kekse (lenient)  browser/chromium
(stored)  rejected         stored
no cookie accepted
no cookie accepted
no cookie accepted
token[]=nested ☢️
field     kekse (lenient)  browser/chromium
(stored)  rejected         stored
data={"testdata":"JSON"} ☢️
field     kekse (lenient)  browser/chromium
(stored)  rejected         stored
data=[nested]data="<img src=x />" ☢️
field  kekse (lenient)  browser/chromium
value  <img src=x />    "<img src=x />"
"sid=surrounded-b…<26 chars> ;Secure ☢️
field     kekse (lenient)  browser/chromium
(stored)  rejected         stored
browser/firefoxSID=abcSID=abcSID=abcSID=abc ;SameSite=None ☢️
field     kekse (lenient)  browser/firefox
SameSite  —                None
SID=abc ;SecureSID=abc ;Path=/bSID=abc ;Secure
no cookie accepted
no cookie accepted
SID=abc ;Secure__Secure-SID=abc ;Secure
no cookie accepted
__Host-SID=abc ;Secure;Path=/
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
__host-SID=abc ;Secure;Path=/SID=abc ;Secure;SameSite=None__Host-SID=abc ;Secure;Path=/
no cookie accepted
SID=abc ;SecureSID=abc ;SecureSID=abc ;SecurePartitioned=falseSID=abc%3B%20Partitioned ;Secure ☢️
field  kekse (lenient)   browser/firefox
value  abc; Partitioned  abc%3B%20Partitioned
SID="abc ;Secure ☢️
field     kekse (lenient)  browser/firefox
(stored)  rejected         stored
Partitioned= ☢️
field     kekse (lenient)  browser/firefox
(stored)  rejected         stored
SID=abc ;SameSite=StrictSID=abc ;SameSite=Lax
no cookie accepted
SID=abc ;Secure;SameSite=NoneSID=abc ;SameSite=LaxSID=abc ;SameSite=None ☢️
field     kekse (lenient)  browser/firefox
SameSite  —                None
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
SID=abc
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
SID=abc
no cookie accepted
SID=abcSID=abcSID=abc
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
SID=abcSID=abcSID=abcSID=abc
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
SID=abc ;Path⇒defaultSID=abc ;Path⇒defaultSID=abc ;Path⇒defaultSID=abc ;Path⇒default
no cookie accepted
SID=a ☢️
field     kekse (lenient)  browser/firefox
(stored)  rejected         stored
SID=vSID=
unknown error: Reached error page: about:neterror?e=invalidHeaderValue&u=https%3A//wire.keksbruch.example/r/263&c=UTF-8&d=https%3A//wire.keksbruch.example/r/263%20sent%20back%20a%20header%20with%20empty%20characters%20not%20allowed%20by%20web%20security%20standards.&a=
no cookie accepted
SID=a"b ☢️
field     kekse (lenient)  browser/firefox
(stored)  rejected         stored
SID=café ☢️
field     kekse (lenient)  browser/firefox
(stored)  rejected         stored
justvalue= ☢️
field     kekse (lenient)  browser/firefox
(stored)  rejected         stored
no cookie accepted
naïve=v ☢️
field     kekse (lenient)  browser/firefox
(stored)  rejected         stored
S ID=abc ☢️
field     kekse (lenient)  browser/firefox
(stored)  rejected         stored
no cookie accepted
unknown error: Reached error page: about:neterror?e=invalidHeaderValue&u=https%3A//wire.keksbruch.example/r/290&c=UTF-8&d=https%3A//wire.keksbruch.example/r/290%20sent%20back%20a%20header%20with%20empty%20characters%20not%20allowed%20by%20web%20security%20standards.&a=
unknown error: Reached error page: about:neterror?e=invalidHeaderValue&u=https%3A//wire.keksbruch.example/r/293&c=UTF-8&d=https%3A//wire.keksbruch.example/r/293%20sent%20back%20a%20header%20with%20empty%20characters%20not%20allowed%20by%20web%20security%20standards.&a=
token[]=nested ☢️
field     kekse (lenient)  browser/firefox
(stored)  rejected         stored
data={"testdata":"JSON"} ☢️
field     kekse (lenient)  browser/firefox
(stored)  rejected         stored
data=[nested]data="<img src=x />" ☢️
field  kekse (lenient)  browser/firefox
value  <img src=x />    "<img src=x />"
"sid=surrounded-b…<26 chars> ;Secure ☢️
field     kekse (lenient)  browser/firefox
(stored)  rejected         stored
browser/edgeSID=abcSID=abcSID=abcSID=abc ;SameSite=Lax ☢️
field     kekse (lenient)  browser/edge
SameSite  —                Lax
SID=abc ;SecureSID=abc ;Path=/bSID=abc ;Secure
no cookie accepted
no cookie accepted
SID=abc ;Secure__Secure-SID=abc ;Secure
no cookie accepted
__Host-SID=abc ;Secure;Path=/
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
__host-SID=abc ;Secure;Path=/SID=abc ;Secure;SameSite=None__Host-SID=abc ;Secure;Path=/
no cookie accepted
SID=abc ;SecureSID=abc ;SecureSID=abc ;SecurePartitioned=falseSID=abc%3B%20Partitioned ;Secure ☢️
field  kekse (lenient)   browser/edge
value  abc; Partitioned  abc%3B%20Partitioned
SID="abc ;Secure ☢️
field     kekse (lenient)  browser/edge
(stored)  rejected         stored
=Partitioned ☢️
field     kekse (lenient)  browser/edge
(stored)  rejected         stored
SID=abc ;SameSite=StrictSID=abc ;SameSite=Lax
no cookie accepted
SID=abc ;Secure;SameSite=NoneSID=abc ;SameSite=LaxSID=abc ;SameSite=Lax ☢️
field     kekse (lenient)  browser/edge
SameSite  —                Lax
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
SID=abcSID=abc
no cookie accepted
SID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abc
no cookie accepted
no cookie accepted
SID=abc
no cookie accepted
no cookie accepted
no cookie accepted
SID=abcSID=abcSID=abcSID=abc
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
no cookie accepted
SID=abc ;Path⇒defaultSID=abc ;Path⇒defaultSID=abc ;Path⇒defaultSID=abc ;Path⇒default
no cookie accepted
SID=a ☢️
field     kekse (lenient)  browser/edge
(stored)  rejected         stored
SID=vSID=
no cookie accepted
no cookie accepted
SID=a"b ☢️
field     kekse (lenient)  browser/edge
(stored)  rejected         stored
SID=café ☢️
field     kekse (lenient)  browser/edge
(stored)  rejected         stored
=justvalue ☢️
field     kekse (lenient)  browser/edge
(stored)  rejected         stored
=v ☢️
field     kekse (lenient)  browser/edge
(stored)  rejected         stored
naïve=v ☢️
field     kekse (lenient)  browser/edge
(stored)  rejected         stored
S ID=abc ☢️
field     kekse (lenient)  browser/edge
(stored)  rejected         stored
no cookie accepted
no cookie accepted
no cookie accepted
token[]=nested ☢️
field     kekse (lenient)  browser/edge
(stored)  rejected         stored
data={"testdata":"JSON"} ☢️
field     kekse (lenient)  browser/edge
(stored)  rejected         stored
data=[nested]data="<img src=x />" ☢️
field  kekse (lenient)  browser/edge
value  <img src=x />    "<img src=x />"
"sid=surrounded-b…<26 chars> ;Secure ☢️
field     kekse (lenient)  browser/edge
(stored)  rejected         stored

Jar probes — domain & path matching (§5.1.3 / §5.1.4)

Domain- and path-matching are two-input relations, so they cannot ride a single wire: each probe stores one Set-Cookie as if received from origin, then asks which cookies the jar would attach to a request to request. [SID=abc] = the cookie is sent; = it is not — whether the jar refused storage or the match failed (one observable, so the consensus vote works unchanged). rust/rfc_6265 (reference) executes the RFC 6265 §5.3/§5.4 algorithm built directly from that crate's primitives (domain_matches, path_matches, default_path). In the default build it is the bare RFC algorithm — which attaches even a Domain=com supercookie, because rejecting a public suffix is the optional §5.3 step 5; the hardened build applies that policy, like the PSL-aware jars. Codec-only parsers have no jar and drop out of this table. Expiry, eviction, HttpOnly, and SameSite are out of scope here — they are API or time axes, not matching.

jarjar-host-only-exactjar-host-only-subdomainjar-domain-exactjar-domain-parentjar-domain-supersetjar-domain-label-boundaryjar-domain-casejar-domain-leading-dotjar-domain-ipjar-domain-supercookiejar-path-prefix-boundaryjar-path-non-boundaryjar-path-trailing-slashjar-path-default-siblingjar-path-default-outsidejar-path-not-absolutejar-secure-on-http
Set-CookieSID=abcSID=abcSID=abc; Domain=example.comSID=abc; Domain=example.comSID=abc; Domain=sub.example.comSID=abc; Domain=example.comSID=abc; Domain=EXAMPLE.COMSID=abc; Domain=.example.comSID=abc; Domain=127.0.0.1SID=abc; Domain=comSID=abc; Path=/aSID=abc; Path=/aSID=abc; Path=/a/SID=abcSID=abcSID=abc; Path=nameSID=abc; Secure
originhttps://example.com/https://example.com/https://example.com/https://sub.example.com/https://example.com/https://badexample.com/https://example.com/https://sub.example.com/http://127.0.0.1/https://example.com/https://example.com/https://example.com/https://example.com/https://example.com/dir/pagehttps://example.com/dir/pagehttps://example.com/dir/pagehttps://example.com/
requesthttps://example.com/https://sub.example.com/https://example.com/https://other.example.com/https://sub.example.com/https://example.com/https://example.com/https://example.com/http://127.0.0.1/https://not-example.com/https://example.com/a/bhttps://example.com/abhttps://example.com/ahttps://example.com/dir/otherhttps://example.com/elsewherehttps://example.com/dir/otherhttp://example.com/
RFC (standard)host-only: the same host attaches (§5.4)host-only never flows to subdomains (§5.4)a Domain cookie flows to matching hosts (§5.1.3)a Domain cookie flows to matching hosts (§5.1.3)the origin must domain-match Domain (§5.3 step 6)a suffix counts only at a label boundary (§5.1.3)Domain is canonicalized lower-case (§5.1.2)a leading dot is stripped (§5.2.3)an IP host matches only by identity (§5.1.3)rejecting a public-suffix Domain is optional (§5.3 step 5)a path prefix matches at a / boundary (§5.1.4)a prefix without a boundary never matches (§5.1.4)/a/ does not match its parent /a (§5.1.4)no Path → the origin's default-path (§5.3 step 7)no Path → the origin's default-path (§5.3 step 7)a non-/ Path is ignored → default-path (§5.2.4)Secure needs a secure channel (§5.4)
consensus[SID=abc][SID=abc][SID=abc][SID=abc][SID=abc][SID=abc][SID=abc][SID=abc][SID=abc]
rust/cookie_store[SID=abc][SID=abc][SID=abc][SID=abc][SID=abc][SID=abc][SID=abc][SID=abc][SID=abc][SID=abc]
rust/rfc_6265 (reference)[SID=abc][SID=abc][SID=abc][SID=abc][SID=abc][SID=abc][SID=abc][SID=abc][SID=abc][SID=abc]
rust/kekse (store)[SID=abc][SID=abc][SID=abc][SID=abc][SID=abc][SID=abc][SID=abc][SID=abc][SID=abc][SID=abc]
python/http.cookiejar[SID=abc][SID=abc][SID=abc][SID=abc][SID=abc][SID=abc][SID=abc][SID=abc][SID=abc]
node/tough-cookie[SID=abc][SID=abc][SID=abc][SID=abc][SID=abc][SID=abc][SID=abc][SID=abc]
browser/chromium[SID=abc][SID=abc][SID=abc][SID=abc][SID=abc][SID=abc][SID=abc][SID=abc][SID=abc][SID=abc]
browser/firefox[SID=abc][SID=abc][SID=abc][SID=abc][SID=abc][SID=abc][SID=abc][SID=abc][SID=abc]
browser/edge[SID=abc][SID=abc][SID=abc][SID=abc][SID=abc][SID=abc][SID=abc][SID=abc][SID=abc]

Attribute fidelity

resp-all-attrs sets all seven non-date attributes; this is which each parser surfaces. marks an attribute the driver's reporting channel cannot observe (classic WebDriver and the Netscape jar format carry no Partitioned field) — not a drop. = dropped — except the client jars' Max-Age, which they fold into an absolute expiry rather than report as such. The eighth attribute, Expires, is shown per parser in the date-* columns of the Set-Cookie table above rather than here. Parsers that rejected the cookie outright are omitted.

parserHttpOnlySecureSameSitePathDomainMax-AgePartitioned
rust/kekse (lenient)
rust/kekse (strict)
rust/kekse (fail-hard)
rust/cookie
rust/cookie_store
python/http.cookiejar
python/mitmproxy
node/tough-cookie
node/set-cookie-parser
go/net/http
dotnet/Microsoft.Net.Http.Headers
java/Jakarta RESTEasy
java/Jakarta Jersey
java/java.net.HttpCookie
java/Apache HttpClient5
c/libcurl

Calibration

kekse's two dials graded against the answering parse columns, per response row: a wire strict parses clean must be majority-accepted (law A — strict-clean means universally sendable), and a majority-accepted wire must be lenient-accepted (law B — lenient is calibrated to reality) unless it is a listed deliberate deviation with its reason. Store-backed columns (client jars, browsers, cookie_store) report storage policy, not parse verdicts, so they do not vote; subjects never vote. A violation of either law fails the matrix run.

Both laws hold over this run's answering columns (12 deliberate lenient deviation(s) listed below).

scenarioverdictacceptingrejectingreason
resp-quoted-attr-textdeliberate deviation11 (rust/cookie, python/SimpleCookie, python/http.cookiejar, python/mitmproxy, node/tough-cookie, node/set-cookie-parser, dotnet/Microsoft.Net.Http.Headers, java/Jakarta RESTEasy, java/Jakarta Jersey, java/java.net.HttpCookie, java/Apache HttpClient5)2 (go/net/http, c/libcurl)§5.2 splits before any unquoting, leaving a bare `"abc` value the octet rule refuses; quote-spanning parsers swallow the attribute into the value instead (with the raw `;` re-emission hazard that carries)
resp-crlfdeliberate deviation9 (rust/cookie, python/http.cookiejar, python/mitmproxy, node/tough-cookie, node/set-cookie-parser, java/Jakarta RESTEasy, java/Jakarta Jersey, java/java.net.HttpCookie, java/Apache HttpClient5)4 (python/SimpleCookie, go/net/http, dotnet/Microsoft.Net.Http.Headers, c/libcurl)a raw CR/LF, NUL, or other control byte in a value is the header-injection / log-poison vector kekse refuses in every mode — the permissive majority keeps it, and re-emission then splits or poisons the carrying header
resp-ctl-nuldeliberate deviation9 (rust/cookie, python/http.cookiejar, python/mitmproxy, node/tough-cookie, node/set-cookie-parser, java/Jakarta RESTEasy, java/Jakarta Jersey, java/java.net.HttpCookie, java/Apache HttpClient5)4 (python/SimpleCookie, go/net/http, dotnet/Microsoft.Net.Http.Headers, c/libcurl)a raw CR/LF, NUL, or other control byte in a value is the header-injection / log-poison vector kekse refuses in every mode — the permissive majority keeps it, and re-emission then splits or poisons the carrying header
resp-ctl-otherdeliberate deviation8 (rust/cookie, python/http.cookiejar, python/mitmproxy, node/set-cookie-parser, java/Jakarta RESTEasy, java/Jakarta Jersey, java/java.net.HttpCookie, java/Apache HttpClient5)5 (python/SimpleCookie, node/tough-cookie, go/net/http, dotnet/Microsoft.Net.Http.Headers, c/libcurl)a raw CR/LF, NUL, or other control byte in a value is the header-injection / log-poison vector kekse refuses in every mode — the permissive majority keeps it, and re-emission then splits or poisons the carrying header
resp-quote-interiordeliberate deviation9 (rust/cookie, python/http.cookiejar, python/mitmproxy, node/tough-cookie, node/set-cookie-parser, java/Jakarta RESTEasy, java/Jakarta Jersey, java/java.net.HttpCookie, java/Apache HttpClient5)4 (python/SimpleCookie, go/net/http, dotnet/Microsoft.Net.Http.Headers, c/libcurl)a bare DQUOTE is outside the cookie-octet alphabet in both gradings; quote-tolerant parsers keep it and diverge on where the value ends
resp-non-asciideliberate deviation9 (rust/cookie, python/http.cookiejar, python/mitmproxy, node/tough-cookie, node/set-cookie-parser, java/Jakarta RESTEasy, java/Jakarta Jersey, java/java.net.HttpCookie, java/Apache HttpClient5)4 (python/SimpleCookie, go/net/http, dotnet/Microsoft.Net.Http.Headers, c/libcurl)a raw non-ASCII byte is outside the cookie-octet alphabet; percent-encoding is the lossless carrier kekse insists on
resp-non-ascii-namedeliberate deviation8 (rust/cookie, python/http.cookiejar, python/mitmproxy, node/tough-cookie, node/set-cookie-parser, java/Jakarta RESTEasy, java/Jakarta Jersey, java/Apache HttpClient5)5 (python/SimpleCookie, go/net/http, dotnet/Microsoft.Net.Http.Headers, java/java.net.HttpCookie, c/libcurl)kekse requires an RFC 7230 token as the cookie-name (deliberately stricter than §5.2's anything-before-`=`): a non-token name has no wire form kekse's own writer could emit, so the pair is refused as unusable
resp-space-in-namedeliberate deviation8 (rust/cookie, python/http.cookiejar, python/mitmproxy, node/tough-cookie, node/set-cookie-parser, java/Jakarta RESTEasy, java/Jakarta Jersey, java/Apache HttpClient5)5 (python/SimpleCookie, go/net/http, dotnet/Microsoft.Net.Http.Headers, java/java.net.HttpCookie, c/libcurl)kekse requires an RFC 7230 token as the cookie-name (deliberately stricter than §5.2's anything-before-`=`): a non-token name has no wire form kekse's own writer could emit, so the pair is refused as unusable
resp-del-bytedeliberate deviation9 (rust/cookie, python/http.cookiejar, python/mitmproxy, node/tough-cookie, node/set-cookie-parser, java/Jakarta RESTEasy, java/Jakarta Jersey, java/java.net.HttpCookie, java/Apache HttpClient5)4 (python/SimpleCookie, go/net/http, dotnet/Microsoft.Net.Http.Headers, c/libcurl)a raw CR/LF, NUL, or other control byte in a value is the header-injection / log-poison vector kekse refuses in every mode — the permissive majority keeps it, and re-emission then splits or poisons the carrying header
resp-array-namedeliberate deviation9 (rust/cookie, python/http.cookiejar, python/mitmproxy, node/tough-cookie, node/set-cookie-parser, java/Jakarta RESTEasy, java/Jakarta Jersey, java/java.net.HttpCookie, java/Apache HttpClient5)4 (python/SimpleCookie, go/net/http, dotnet/Microsoft.Net.Http.Headers, c/libcurl)kekse requires an RFC 7230 token as the cookie-name (deliberately stricter than §5.2's anything-before-`=`): a non-token name has no wire form kekse's own writer could emit, so the pair is refused as unusable
resp-json-valuedeliberate deviation9 (rust/cookie, python/http.cookiejar, python/mitmproxy, node/tough-cookie, node/set-cookie-parser, java/Jakarta RESTEasy, java/Jakarta Jersey, java/java.net.HttpCookie, java/Apache HttpClient5)4 (python/SimpleCookie, go/net/http, dotnet/Microsoft.Net.Http.Headers, c/libcurl)a bare DQUOTE is outside the cookie-octet alphabet in both gradings; quote-tolerant parsers keep it and diverge on where the value ends
resp-quoted-pair-flagdeliberate deviation9 (rust/cookie, python/http.cookiejar, python/mitmproxy, node/tough-cookie, node/set-cookie-parser, java/Jakarta RESTEasy, java/Jakarta Jersey, java/java.net.HttpCookie, java/Apache HttpClient5)4 (python/SimpleCookie, go/net/http, dotnet/Microsoft.Net.Http.Headers, c/libcurl)kekse requires an RFC 7230 token as the cookie-name (deliberately stricter than §5.2's anything-before-`=`): a non-token name has no wire form kekse's own writer could emit, so the pair is refused as unusable

Tested scenarios

One line per test — the id each matrix column is headed by, and what its wire probes. Outcomes are not repeated here; read them from the tables above (a bold cell diverges from the consensus).

Request Cookie: scenarios

Response Set-Cookie: scenarios

Jar probe scenarios

Remarks

Date/expiry behaviour — what a client cares about — lives in the Set-Cookie section, where Expires is meaningful; the request side carries none. A parsed Expires renders in the cell as ;Expires=<UTC date>; a client jar that folds Expires and Max-Age into one effective (possibly now-relative) expiry reports none, so cells stay reproducible.

Request side: the cookie crate runs in percent-decoding (*_encoded) mode so its values are comparable to kekse's. biscotti is fail-hard and exposes no general iterator, so its accepted pairs are enumerated by name. PHP's $_COOKIE is parsed natively behind its built-in server (php -S), showing PHP's own quirks — value urldecoding, cookie-name mangling, and transport-layer rejection of CR/LF/NUL. A bracketed name (name[]/name[k]) makes PHP build an array/map — the only non-string types here, shown by type name (⟨array⟩/⟨object⟩); every other parser keeps a bracketed name a flat string or drops it. Go (net/http, since 1.23) and .NET (Microsoft.Net.Http.Headers) parse both directions; a toolchain absent from the run shows SKIP (the CI matrix job has them all).

nginx is exercised behind a real openresty server, replayed over a socket like PHP. Its $cookie_<name> column is nginx's native by-name lookup; lua-resty-cookie is an OpenResty Lua library that parses the raw header. nginx/proxy is a fidelity axis — did a proxy_pass forward the request Cookie verbatim (), alter it (), or refuse it () — and nginx/proxy (Set-Cookie) asks the same of an upstream Set-Cookie forwarded back to a client (nginx exposes no parsed Set-Cookie to Lua, so it is fidelity, not a parse — it escapes a smuggled CR/LF to %0D%0A rather than dropping it). Both are off the consensus vote.

The Java sidecar runs from a JVM image and adds six columns. Two Tomcat request-cookie processors — Tomcat RFC6265 (strict) and Tomcat legacy (lenient) — and the jakarta.ws.rs cookie API via two providers (RESTEasy + Jersey), which parse both directions. For Set-Cookie it also runs the JDK's java.net.HttpCookie and Apache HttpClient5's RFC 6265 spec — the realistic redistributable stand-in for the proprietary BurpSuite parser, which cannot be bundled or run headless.

Set-Cookie side: alongside the pure parsers (kekse, the cookie crate, tough-cookie, SimpleCookie, mitmproxy, Go, .NET, the Java columns) sit the real C HTTP clients. c/libcurl drives libcurl's cookie engine offline in C — it cannot export a cookie injected without a Domain, so host-only cookies show ; client/curl and client/wget fetch from a loopback server, the transfer view, where the request host supplies the domain (so host-only cookies parse, while a Domain= mismatching 127.0.0.1 is refused) — the two views are complementary. The browser rows (browser/chromium, browser/firefox, browser/edge) are the engine transfer view: a real headless browser fetches the wire from a loopback https origin (wire.keksbruch.example) and its stored cookie is read back through WebDriver. They run release defaults, so RFC 6265bis policy shows through — the 4096-byte name+value cap, control-byte rejection, the public-suffix list, and each engine's SameSite stance — and a Domain= naming a foreign host is refused at storage like the client columns, though the https origin lets Secure cookies store. Every host also resolves to loopback (127.0.0.1), and a browser may treat a localhost/loopback origin as a potentially-trustworthy secure context even over plain http, relaxing the Secure-attribute channel rule — the likely reason Chromium attaches the cookie on jar-secure-on-http, where §5.4 and the client columns refuse it, so read that browser cell as an artifact of the loopback harness rather than a real-world verdict. A browser cell reports an attribute only when the wire engaged it, because the jar holds effective state rather than attribute text: an unlabeled cookie shows no SameSite even though the engine enforces one, an engaged degenerate value reveals the engine's fallback (Chromium assumes Lax, Firefox None — Lax-by-default is unshipped there), and Path⇒default marks a Path the engine could not use, so the cookie took the request's default-path (§5.1.4) — the fall-back is stated, not the origin's own directory (/r here). Edge shares Chromium's net/cookies unchanged; its column exists to demonstrate that equivalence cell by cell. A parser that crashes on a payload — a panic, a signal, a hang — is marked ☠️ and pinned to that exact payload, distinct from a clean rejection () or an unavailable tool (SKIP).

Reading a browser's date rows: a Set-Cookie with a past Expires is stored and then expired on arrival, so it reads back as a rejection (), whereas an unparsable date drops the attribute and leaves a session cookie that stores (a name=value cell). So on the past-dated rows a means the engine parsed the date and a stored cell means it could not — the reverse of the intuitive reading — which turns the date-* rows into an engine date-parser map (Firefox, for one, accepts 24:00:00, 31 Feb, and 11/06/1994 where Chromium refuses them).

The ☢️ marker is the expectation-compliance axis, mirroring consensus onto kekse: it flags a response cell whose tool parsed the wire differently than kekse did, kekse being the reference we assert is correct. Most fire where a tool stores a cookie kekse refuses as malformed — an interior ", a raw non-ASCII or DEL byte, a smuggled CR/LF (stored as the truncated prefix), a SameSite token kekse drops as unknown — so the rows where real clients are more permissive than kekse are visible at a glance rather than buried in a divergent cell. A jar's storage-effective values — a substituted default-path (rendered Path⇒default, uniform across the browser, curl/wget/libcurl and HttpClient5 columns), a derived host — and its folded Max-Age/Expires are not parse disagreements and never raise the marker; the HTML report's hover shows every field, contradiction and lossy alike.

Jar probes: the rfc_6265 reference, Rust's cookie_store, Python's http.cookiejar, Node's tough-cookie, and the three browser engines (a real store-then-navigate round trip — the server reports the Cookie header the engine actually attached) answer today; the Go, .NET, and Java client jars and the curl/wget transfer view are follow-ups (their sidecars answer n/a per protocol v2).

The same matrix is written beside this file as COOKIE_MATRIX.csv.

Tested against

gronke/kekse · MIT licensed