[{"data":1,"prerenderedAt":2370},["ShallowReactive",2],{"navLinks":3,"sidebar_docs_navigation_\u002Fdocs\u002Fauth-h3client":64,"navigation":217,"navLinks_footer":829,"\u002Fdocs\u002Fauth-h3client\u002Fessentials\u002Fcookies_page":842,"\u002Fdocs\u002Fauth-h3client\u002Fessentials\u002Fcookies_surround":1722,"\u002Fdocs\u002Fauth-h3client\u002Fessentials\u002Fcookies":1725},{"id":4,"extension":5,"links":6,"meta":61,"stem":62,"__hash__":63},"navigationMenu\u002Fnavigation.json","json",[7,52,57],{"nested":8,"label":9,"icon":10,"to":11,"children":12},true,"Docs","i-lucide-book-open","\u002Fdocs\u002Fgetting-started",[13,19,26,32,39,45],{"label":14,"icon":15,"to":11,"description":16,"github":17,"badge":18},"Getting Started","i-lucide-rocket","An introduction to help you understand the core components.","https:\u002F\u002Fgithub.com\u002FSergo706\u002Fdocshub","Start Here",{"label":20,"icon":21,"to":22,"description":23,"github":24,"badge":25},"Auth H3 Client","i-lucide-key-round","\u002Fdocs\u002Fauth-h3client","Seamlessly enforce OAuth 2.0 authentication and session management integrated directly as the client of the IAM module.","https:\u002F\u002Fgithub.com\u002FSergo706\u002Fauth-h3client","Core",{"label":27,"icon":28,"to":29,"description":30,"github":31,"badge":25},"IAM","i-lucide-shield-check","\u002Fdocs\u002Fiam","Identity and Access Management featuring granular roles, permissions, and security policies.","https:\u002F\u002Fgithub.com\u002FSergo706\u002Fauth",{"label":33,"icon":34,"to":35,"description":36,"github":37,"badge":38},"Bot Detection","i-lucide-cpu","\u002Fdocs\u002Fbot-detection","Advanced behavioral analysis and request fingerprinting to stop malicious automated traffic.","https:\u002F\u002Fgithub.com\u002FSergo706\u002Fbot-detector","Security",{"label":40,"icon":41,"to":42,"description":43,"github":44,"badge":38},"Shield Base","i-lucide-database-zap","\u002Fdocs\u002Fshield-base","CLI and programmatic toolkit for compiling offline-ready IP intelligence databases from BGP, GeoIP, Tor, FireHOL, and other public threat feeds.","https:\u002F\u002Fgithub.com\u002FSergo706\u002Fshield-base-cli",{"label":46,"icon":47,"to":48,"description":49,"github":50,"badge":51},"Utils","i-lucide-wrench","\u002Fdocs\u002Futils","A standard library of highly optimized helpers for formatting, validation, and core logic.","https:\u002F\u002Fgithub.com\u002FSergo706\u002Futils","Library",{"nested":53,"label":54,"icon":55,"to":56},false,"Blog","i-lucide-pen-line","\u002Fblog",{"nested":53,"label":58,"icon":59,"to":60},"Website","lucide:app-window-mac","https:\u002F\u002Friavzon.com",{},"navigation","gkaQ0xRGxSLrLyM3kttLe0oBwkrR1EBjlepF8LSbwF8",[65],{"title":9,"path":66,"stem":67,"children":68,"page":53},"\u002Fdocs","docs",[69],{"title":20,"path":22,"stem":70,"children":71},"docs\u002Fauth-h3client\u002Findex",[72,73,82,119,145,167,170,191,195],{"title":20,"path":22,"stem":70},{"title":14,"path":74,"stem":75,"children":76},"\u002Fdocs\u002Fauth-h3client\u002Fgetting-started","docs\u002Fauth-h3client\u002F00.getting-started\u002Findex",[77,78],{"title":14,"path":74,"stem":75},{"title":79,"path":80,"stem":81},"Nuxt Module","\u002Fdocs\u002Fauth-h3client\u002Fgetting-started\u002Fnuxt","docs\u002Fauth-h3client\u002F00.getting-started\u002F00.nuxt",{"title":83,"path":84,"stem":85,"children":86},"Essentials","\u002Fdocs\u002Fauth-h3client\u002Fessentials","docs\u002Fauth-h3client\u002F01.essentials\u002Findex",[87,88,92,96,100,104,108,111,115],{"title":83,"path":84,"stem":85},{"title":89,"path":90,"stem":91},"Session Management","\u002Fdocs\u002Fauth-h3client\u002Fessentials\u002Fsession","docs\u002Fauth-h3client\u002F01.essentials\u002F00.session",{"title":93,"path":94,"stem":95},"Route Protection","\u002Fdocs\u002Fauth-h3client\u002Fessentials\u002Froute-protection","docs\u002Fauth-h3client\u002F01.essentials\u002F01.route-protection",{"title":97,"path":98,"stem":99},"CSRF Protection","\u002Fdocs\u002Fauth-h3client\u002Fessentials\u002Fcsrf","docs\u002Fauth-h3client\u002F01.essentials\u002F02.csrf",{"title":101,"path":102,"stem":103},"Auth Flows","\u002Fdocs\u002Fauth-h3client\u002Fessentials\u002Fauth-flows","docs\u002Fauth-h3client\u002F01.essentials\u002F03.auth-flows",{"title":105,"path":106,"stem":107},"OAuth and OIDC","\u002Fdocs\u002Fauth-h3client\u002Fessentials\u002Foauth","docs\u002Fauth-h3client\u002F01.essentials\u002F04.oauth",{"title":33,"path":109,"stem":110},"\u002Fdocs\u002Fauth-h3client\u002Fessentials\u002Fbot-detection","docs\u002Fauth-h3client\u002F01.essentials\u002F05.bot-detection",{"title":112,"path":113,"stem":114},"Cookies","\u002Fdocs\u002Fauth-h3client\u002Fessentials\u002Fcookies","docs\u002Fauth-h3client\u002F01.essentials\u002F06.cookies",{"title":116,"path":117,"stem":118},"Logging","\u002Fdocs\u002Fauth-h3client\u002Fessentials\u002Flogging","docs\u002Fauth-h3client\u002F01.essentials\u002F07.logging",{"title":120,"path":121,"stem":122,"children":123},"MFA","\u002Fdocs\u002Fauth-h3client\u002Fmfa","docs\u002Fauth-h3client\u002F02.mfa\u002Findex",[124,125,129,133,137,141],{"title":120,"path":121,"stem":122},{"title":126,"path":127,"stem":128},"Built-in MFA","\u002Fdocs\u002Fauth-h3client\u002Fmfa\u002Fbuilt-in-flow","docs\u002Fauth-h3client\u002F02.mfa\u002F01.built-in-flow",{"title":130,"path":131,"stem":132},"Password Reset","\u002Fdocs\u002Fauth-h3client\u002Fmfa\u002Fpassword-reset","docs\u002Fauth-h3client\u002F02.mfa\u002F02.password-reset",{"title":134,"path":135,"stem":136},"Email Change","\u002Fdocs\u002Fauth-h3client\u002Fmfa\u002Femail-change","docs\u002Fauth-h3client\u002F02.mfa\u002F03.email-change",{"title":138,"path":139,"stem":140},"Custom MFA Flow","\u002Fdocs\u002Fauth-h3client\u002Fmfa\u002Fcustom-flow","docs\u002Fauth-h3client\u002F02.mfa\u002F04.custom-flow",{"title":142,"path":143,"stem":144},"Client-Side MFA","\u002Fdocs\u002Fauth-h3client\u002Fmfa\u002Fclient-side","docs\u002Fauth-h3client\u002F02.mfa\u002F05.client-side",{"title":146,"path":147,"stem":148,"children":149},"Client-side","\u002Fdocs\u002Fauth-h3client\u002Fclient","docs\u002Fauth-h3client\u002F03.client\u002Findex",[150,151,155,159,163],{"title":146,"path":147,"stem":148},{"title":152,"path":153,"stem":154},"useAuthData","\u002Fdocs\u002Fauth-h3client\u002Fclient\u002Fuse-auth-data","docs\u002Fauth-h3client\u002F03.client\u002F00.use-auth-data",{"title":156,"path":157,"stem":158},"useMagicLink","\u002Fdocs\u002Fauth-h3client\u002Fclient\u002Fuse-magic-link","docs\u002Fauth-h3client\u002F03.client\u002F01.use-magic-link",{"title":160,"path":161,"stem":162},"executeRequest","\u002Fdocs\u002Fauth-h3client\u002Fclient\u002Fexecute-request","docs\u002Fauth-h3client\u002F03.client\u002F02.execute-request",{"title":164,"path":165,"stem":166},"getCsrfToken","\u002Fdocs\u002Fauth-h3client\u002Fclient\u002Fget-csrf-token","docs\u002Fauth-h3client\u002F03.client\u002F03.get-csrf-token",{"title":38,"path":168,"stem":169},"\u002Fdocs\u002Fauth-h3client\u002Fsecurity","docs\u002Fauth-h3client\u002F04.security",{"title":171,"path":172,"stem":173,"children":174,"page":53},"Guides","\u002Fdocs\u002Fauth-h3client\u002Fguides","docs\u002Fauth-h3client\u002F05.guides",[175,179,183,187],{"title":176,"path":177,"stem":178},"H3 and Nitro Setup","\u002Fdocs\u002Fauth-h3client\u002Fguides\u002Fh3-nitro","docs\u002Fauth-h3client\u002F05.guides\u002F00.h3-nitro",{"title":180,"path":181,"stem":182},"HMAC Inter-service Auth","\u002Fdocs\u002Fauth-h3client\u002Fguides\u002Fhmac","docs\u002Fauth-h3client\u002F05.guides\u002Fhmac",{"title":184,"path":185,"stem":186},"Image Upload","\u002Fdocs\u002Fauth-h3client\u002Fguides\u002Fimage-upload","docs\u002Fauth-h3client\u002F05.guides\u002Fimage-upload",{"title":188,"path":189,"stem":190},"mTLS Configuration","\u002Fdocs\u002Fauth-h3client\u002Fguides\u002Fmtls","docs\u002Fauth-h3client\u002F05.guides\u002Fmtls",{"title":192,"path":193,"stem":194},"Configuration","\u002Fdocs\u002Fauth-h3client\u002Fconfiguration","docs\u002Fauth-h3client\u002F06.configuration",{"title":196,"path":197,"stem":198,"children":199},"API Reference","\u002Fdocs\u002Fauth-h3client\u002Fapi","docs\u002Fauth-h3client\u002F07.api\u002Findex",[200,201,205,209,213],{"title":196,"path":197,"stem":198},{"title":202,"path":203,"stem":204},"Routes Reference","\u002Fdocs\u002Fauth-h3client\u002Fapi\u002Fcontrollers","docs\u002Fauth-h3client\u002F07.api\u002F00.controllers",{"title":206,"path":207,"stem":208},"Middleware Reference","\u002Fdocs\u002Fauth-h3client\u002Fapi\u002Fmiddleware","docs\u002Fauth-h3client\u002F07.api\u002F01.middleware",{"title":210,"path":211,"stem":212},"Client-side Reference","\u002Fdocs\u002Fauth-h3client\u002Fapi\u002Fcomposables","docs\u002Fauth-h3client\u002F07.api\u002F02.composables",{"title":214,"path":215,"stem":216},"Utilities","\u002Fdocs\u002Fauth-h3client\u002Fapi\u002Futilities","docs\u002Fauth-h3client\u002F07.api\u002F03.utilities",[218],{"title":9,"path":66,"stem":67,"children":219,"page":53},[220,268,386,391,569,636],{"title":20,"path":22,"stem":70,"children":221},[222,223,227,238,246,253,254,260,261],{"title":20,"path":22,"stem":70},{"title":14,"path":74,"stem":75,"children":224},[225,226],{"title":14,"path":74,"stem":75},{"title":79,"path":80,"stem":81},{"title":83,"path":84,"stem":85,"children":228},[229,230,231,232,233,234,235,236,237],{"title":83,"path":84,"stem":85},{"title":89,"path":90,"stem":91},{"title":93,"path":94,"stem":95},{"title":97,"path":98,"stem":99},{"title":101,"path":102,"stem":103},{"title":105,"path":106,"stem":107},{"title":33,"path":109,"stem":110},{"title":112,"path":113,"stem":114},{"title":116,"path":117,"stem":118},{"title":120,"path":121,"stem":122,"children":239},[240,241,242,243,244,245],{"title":120,"path":121,"stem":122},{"title":126,"path":127,"stem":128},{"title":130,"path":131,"stem":132},{"title":134,"path":135,"stem":136},{"title":138,"path":139,"stem":140},{"title":142,"path":143,"stem":144},{"title":146,"path":147,"stem":148,"children":247},[248,249,250,251,252],{"title":146,"path":147,"stem":148},{"title":152,"path":153,"stem":154},{"title":156,"path":157,"stem":158},{"title":160,"path":161,"stem":162},{"title":164,"path":165,"stem":166},{"title":38,"path":168,"stem":169},{"title":171,"path":172,"stem":173,"children":255,"page":53},[256,257,258,259],{"title":176,"path":177,"stem":178},{"title":180,"path":181,"stem":182},{"title":184,"path":185,"stem":186},{"title":188,"path":189,"stem":190},{"title":192,"path":193,"stem":194},{"title":196,"path":197,"stem":198,"children":262},[263,264,265,266,267],{"title":196,"path":197,"stem":198},{"title":202,"path":203,"stem":204},{"title":206,"path":207,"stem":208},{"title":210,"path":211,"stem":212},{"title":214,"path":215,"stem":216},{"title":269,"path":35,"stem":270,"children":271},"Bot Detector","docs\u002Fbot-detection\u002Findex",[272,273,276,280,284,303,377,380,383],{"title":269,"path":35,"stem":270},{"title":14,"path":274,"stem":275},"\u002Fdocs\u002Fbot-detection\u002Fgetting-started","docs\u002Fbot-detection\u002F00.getting-started",{"title":277,"path":278,"stem":279},"CLI","\u002Fdocs\u002Fbot-detection\u002Fcli","docs\u002Fbot-detection\u002F01.cli",{"title":281,"path":282,"stem":283},"Data Sources","\u002Fdocs\u002Fbot-detection\u002Fdata-sources","docs\u002Fbot-detection\u002F02.data-sources",{"title":171,"path":285,"stem":286,"children":287,"page":53},"\u002Fdocs\u002Fbot-detection\u002Fguides","docs\u002Fbot-detection\u002F03.guides",[288,292,296,299],{"title":289,"path":290,"stem":291},"Custom Checkers","\u002Fdocs\u002Fbot-detection\u002Fguides\u002Fcustom","docs\u002Fbot-detection\u002F03.guides\u002FCUSTOM",{"title":293,"path":294,"stem":295},"Scheduling Database Generation","\u002Fdocs\u002Fbot-detection\u002Fguides\u002Fgenerate","docs\u002Fbot-detection\u002F03.guides\u002FGENERATE",{"title":116,"path":297,"stem":298},"\u002Fdocs\u002Fbot-detection\u002Fguides\u002Flogging","docs\u002Fbot-detection\u002F03.guides\u002FLOGGING",{"title":300,"path":301,"stem":302},"Score Modes and Reputation Healing","\u002Fdocs\u002Fbot-detection\u002Fguides\u002Fscore","docs\u002Fbot-detection\u002F03.guides\u002FSCORE",{"title":304,"path":305,"stem":306,"children":307},"Checkers","\u002Fdocs\u002Fbot-detection\u002Fcheckers","docs\u002Fbot-detection\u002F04.checkers\u002Findex",[308,309,313,317,321,325,329,333,337,341,345,349,353,357,361,365,369,373],{"title":304,"path":305,"stem":306},{"title":310,"path":311,"stem":312},"IP Validation","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fip-validation","docs\u002Fbot-detection\u002F04.checkers\u002F01.ip-validation",{"title":314,"path":315,"stem":316},"Good \u002F Bad Bot Verification","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fgood-bots","docs\u002Fbot-detection\u002F04.checkers\u002F02.good-bots",{"title":318,"path":319,"stem":320},"Browser & Device Fingerprint","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fbrowser-device","docs\u002Fbot-detection\u002F04.checkers\u002F03.browser-device",{"title":322,"path":323,"stem":324},"Locale Map","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Flocale-map","docs\u002Fbot-detection\u002F04.checkers\u002F04.locale-map",{"title":326,"path":327,"stem":328},"Known Threats","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fknown-threats","docs\u002Fbot-detection\u002F04.checkers\u002F05.known-threats",{"title":330,"path":331,"stem":332},"ASN Classification","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fasn-classification","docs\u002Fbot-detection\u002F04.checkers\u002F06.asn-classification",{"title":334,"path":335,"stem":336},"Tor Analysis","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Ftor-analysis","docs\u002Fbot-detection\u002F04.checkers\u002F07.tor-analysis",{"title":338,"path":339,"stem":340},"Timezone Consistency","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Ftimezone-consistency","docs\u002Fbot-detection\u002F04.checkers\u002F08.timezone-consistency",{"title":342,"path":343,"stem":344},"Honeypot","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fhoneypot","docs\u002Fbot-detection\u002F04.checkers\u002F09.honeypot",{"title":346,"path":347,"stem":348},"Known Bad IPs","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fknown-bad-ips","docs\u002Fbot-detection\u002F04.checkers\u002F10.known-bad-ips",{"title":350,"path":351,"stem":352},"Behavior Rate","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fbehavior-rate","docs\u002Fbot-detection\u002F04.checkers\u002F11.behavior-rate",{"title":354,"path":355,"stem":356},"Proxy \u002F ISP \u002F Cookie","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fproxy-isp-cookies","docs\u002Fbot-detection\u002F04.checkers\u002F12.proxy-isp-cookies",{"title":358,"path":359,"stem":360},"Session Coherence","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fsession-coherence","docs\u002Fbot-detection\u002F04.checkers\u002F13.session-coherence",{"title":362,"path":363,"stem":364},"Velocity Fingerprint","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fvelocity-fingerprint","docs\u002Fbot-detection\u002F04.checkers\u002F14.velocity-fingerprint",{"title":366,"path":367,"stem":368},"UA & Header Analysis","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fua-header","docs\u002Fbot-detection\u002F04.checkers\u002F15.ua-header",{"title":370,"path":371,"stem":372},"Geolocation","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fgeolocation","docs\u002Fbot-detection\u002F04.checkers\u002F16.geolocation",{"title":374,"path":375,"stem":376},"Known Bad User-Agents","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fknown-bad-ua","docs\u002Fbot-detection\u002F04.checkers\u002F17.known-bad-ua",{"title":38,"path":378,"stem":379},"\u002Fdocs\u002Fbot-detection\u002Fsecurity","docs\u002Fbot-detection\u002F04.security",{"title":196,"path":381,"stem":382},"\u002Fdocs\u002Fbot-detection\u002Fapi","docs\u002Fbot-detection\u002F05.api",{"title":192,"path":384,"stem":385},"\u002Fdocs\u002Fbot-detection\u002Fconfiguration","docs\u002Fbot-detection\u002F06.configuration",{"title":387,"path":11,"stem":388,"children":389},"Introduction","docs\u002Fgetting-started\u002Findex",[390],{"title":387,"path":11,"stem":388},{"title":27,"path":29,"stem":392,"children":393},"docs\u002Fiam\u002Findex",[394,395,398,533,536,552,555],{"title":27,"path":29,"stem":392},{"title":14,"path":396,"stem":397},"\u002Fdocs\u002Fiam\u002Fgetting-started","docs\u002Fiam\u002F00.getting-started",{"title":83,"path":399,"stem":400,"children":401},"\u002Fdocs\u002Fiam\u002Fessentials","docs\u002Fiam\u002F01.essentials\u002Findex",[402,403,407,411,415,419,423,427,431,435,439,443,446,450,454,458,462,465,469,473,476,480,483],{"title":83,"path":399,"stem":400},{"title":404,"path":405,"stem":406},"Tokens","\u002Fdocs\u002Fiam\u002Fessentials\u002Ftokens","docs\u002Fiam\u002F01.essentials\u002F00.tokens",{"title":408,"path":409,"stem":410},"Access Tokens","\u002Fdocs\u002Fiam\u002Fessentials\u002Faccess-tokens","docs\u002Fiam\u002F01.essentials\u002F01.access-tokens",{"title":412,"path":413,"stem":414},"Refresh Tokens","\u002Fdocs\u002Fiam\u002Fessentials\u002Frefresh-tokens","docs\u002Fiam\u002F01.essentials\u002F02.refresh-tokens",{"title":416,"path":417,"stem":418},"Anomaly Detection","\u002Fdocs\u002Fiam\u002Fessentials\u002Fanomalies","docs\u002Fiam\u002F01.essentials\u002F03.anomalies",{"title":420,"path":421,"stem":422},"Signup","\u002Fdocs\u002Fiam\u002Fessentials\u002Fsignup","docs\u002Fiam\u002F01.essentials\u002F04.signup",{"title":424,"path":425,"stem":426},"Login","\u002Fdocs\u002Fiam\u002Fessentials\u002Flogin","docs\u002Fiam\u002F01.essentials\u002F05.login",{"title":428,"path":429,"stem":430},"Logout","\u002Fdocs\u002Fiam\u002Fessentials\u002Flogout","docs\u002Fiam\u002F01.essentials\u002F06.logout",{"title":432,"path":433,"stem":434},"OAuth","\u002Fdocs\u002Fiam\u002Fessentials\u002Foauth","docs\u002Fiam\u002F01.essentials\u002F07.oauth",{"title":436,"path":437,"stem":438},"Magic Links","\u002Fdocs\u002Fiam\u002Fessentials\u002Fmagic-links","docs\u002Fiam\u002F01.essentials\u002F08.magic-links",{"title":440,"path":441,"stem":442},"Emails","\u002Fdocs\u002Fiam\u002Fessentials\u002Femails","docs\u002Fiam\u002F01.essentials\u002F09.emails",{"title":120,"path":444,"stem":445},"\u002Fdocs\u002Fiam\u002Fessentials\u002Fmfa","docs\u002Fiam\u002F01.essentials\u002F10.mfa",{"title":447,"path":448,"stem":449},"Fingerprinting","\u002Fdocs\u002Fiam\u002Fessentials\u002Ffingerprinting","docs\u002Fiam\u002F01.essentials\u002F11.fingerprinting",{"title":451,"path":452,"stem":453},"Backend for Frontend","\u002Fdocs\u002Fiam\u002Fessentials\u002Fbff","docs\u002Fiam\u002F01.essentials\u002F12.bff",{"title":455,"path":456,"stem":457},"HMAC Authentication","\u002Fdocs\u002Fiam\u002Fessentials\u002Fhmac","docs\u002Fiam\u002F01.essentials\u002F13.hmac",{"title":459,"path":460,"stem":461},"XSS Protection","\u002Fdocs\u002Fiam\u002Fessentials\u002Fxss","docs\u002Fiam\u002F01.essentials\u002F14.xss",{"title":116,"path":463,"stem":464},"\u002Fdocs\u002Fiam\u002Fessentials\u002Flogging","docs\u002Fiam\u002F01.essentials\u002F15.logging",{"title":466,"path":467,"stem":468},"Rate Limiting","\u002Fdocs\u002Fiam\u002Fessentials\u002Frate-limiting","docs\u002Fiam\u002F01.essentials\u002F16.rate-limiting",{"title":470,"path":471,"stem":472},"Database","\u002Fdocs\u002Fiam\u002Fessentials\u002Fdatabase","docs\u002Fiam\u002F01.essentials\u002F17.database",{"title":112,"path":474,"stem":475},"\u002Fdocs\u002Fiam\u002Fessentials\u002Fcookies","docs\u002Fiam\u002F01.essentials\u002F18.cookies",{"title":477,"path":478,"stem":479},"Service Startup","\u002Fdocs\u002Fiam\u002Fessentials\u002Fservice","docs\u002Fiam\u002F01.essentials\u002F19.service",{"title":130,"path":481,"stem":482},"\u002Fdocs\u002Fiam\u002Fessentials\u002Fpassword-reset","docs\u002Fiam\u002F01.essentials\u002F20.password-reset",{"title":484,"path":485,"stem":486,"children":487},"API Tokens","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi","docs\u002Fiam\u002F01.essentials\u002F21.api\u002Findex",[488,489,493,497,527,530],{"title":484,"path":485,"stem":486},{"title":490,"path":491,"stem":492},"Creating Tokens","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fcreation","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F00.creation",{"title":494,"path":495,"stem":496},"Verifying Tokens","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fverification","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F01.verification",{"title":498,"path":499,"stem":500,"children":501},"Manage Tokens","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fmanagement","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F02.management\u002Findex",[502,503,507,511,515,519,523],{"title":498,"path":499,"stem":500},{"title":504,"path":505,"stem":506},"Privileges","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fmanagement\u002Fprivilege","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F02.management\u002F00.privilege",{"title":508,"path":509,"stem":510},"Revocation","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fmanagement\u002Frevocation","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F02.management\u002F01.revocation",{"title":512,"path":513,"stem":514},"Rotation","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fmanagement\u002Frotation","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F02.management\u002F02.rotation",{"title":516,"path":517,"stem":518},"IP Restriction","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fmanagement\u002Fip-updates","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F02.management\u002F03.ip-updates",{"title":520,"path":521,"stem":522},"Metadata","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fmanagement\u002Fmetadata","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F02.management\u002F04.metadata",{"title":524,"path":525,"stem":526},"Token Listing","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fmanagement\u002Flist","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F02.management\u002F05.list",{"title":466,"path":528,"stem":529},"\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Frate-limiting","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F03.rate-limiting",{"title":38,"path":531,"stem":532},"\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fsecurity","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F04.security",{"title":38,"path":534,"stem":535},"\u002Fdocs\u002Fiam\u002Fsecurity","docs\u002Fiam\u002F02.security",{"title":171,"path":537,"stem":538,"children":539,"page":53},"\u002Fdocs\u002Fiam\u002Fguides","docs\u002Fiam\u002F03.guides",[540,544,548],{"title":541,"path":542,"stem":543},"Deployment","\u002Fdocs\u002Fiam\u002Fguides\u002Fdeployment","docs\u002Fiam\u002F03.guides\u002Fdeployment",{"title":545,"path":546,"stem":547},"Operation Scripts","\u002Fdocs\u002Fiam\u002Fguides\u002Foperation-scripts","docs\u002Fiam\u002F03.guides\u002Foperation-scripts",{"title":549,"path":550,"stem":551},"Role-Based Access Control","\u002Fdocs\u002Fiam\u002Fguides\u002Frbac","docs\u002Fiam\u002F03.guides\u002Frbac",{"title":192,"path":553,"stem":554},"\u002Fdocs\u002Fiam\u002Fconfiguration","docs\u002Fiam\u002F04.configuration",{"title":556,"path":557,"stem":558,"children":559,"page":53},"Api","\u002Fdocs\u002Fiam\u002Fapi","docs\u002Fiam\u002F05.API",[560,563,566],{"title":196,"path":561,"stem":562},"\u002Fdocs\u002Fiam\u002Fapi\u002Fapi","docs\u002Fiam\u002F05.API\u002F00.api",{"title":206,"path":564,"stem":565},"\u002Fdocs\u002Fiam\u002Fapi\u002Fmiddlewares","docs\u002Fiam\u002F05.API\u002F02.middlewares",{"title":202,"path":567,"stem":568},"\u002Fdocs\u002Fiam\u002Fapi\u002Froutes","docs\u002Fiam\u002F05.API\u002F03.routes",{"title":40,"path":42,"stem":570,"children":571},"docs\u002Fshield-base\u002Findex",[572,573,576,580,621,625,629,633],{"title":40,"path":42,"stem":570},{"title":14,"path":574,"stem":575},"\u002Fdocs\u002Fshield-base\u002Fgetting-started","docs\u002Fshield-base\u002F00.getting-started",{"title":577,"path":578,"stem":579},"CLI Reference","\u002Fdocs\u002Fshield-base\u002Fcli","docs\u002Fshield-base\u002F01.cli",{"title":281,"path":581,"stem":582,"children":583},"\u002Fdocs\u002Fshield-base\u002Fdata-sources","docs\u002Fshield-base\u002F02.data-sources\u002Findex",[584,585,589,593,597,601,605,609,613,617],{"title":281,"path":581,"stem":582},{"title":586,"path":587,"stem":588},"BGP \u002F ASN","\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Fbgp","docs\u002Fshield-base\u002F02.data-sources\u002Fbgp",{"title":590,"path":591,"stem":592},"City Geolocation","\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Fcity","docs\u002Fshield-base\u002F02.data-sources\u002Fcity",{"title":594,"path":595,"stem":596},"Country Geolocation","\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Fcountry","docs\u002Fshield-base\u002F02.data-sources\u002Fcountry",{"title":598,"path":599,"stem":600},"Verified Crawlers","\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Fcrawlers","docs\u002Fshield-base\u002F02.data-sources\u002Fcrawlers",{"title":602,"path":603,"stem":604},"Disposable Emails","\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Femail","docs\u002Fshield-base\u002F02.data-sources\u002Femail",{"title":606,"path":607,"stem":608},"FireHOL Threat Intelligence","\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Ffirehol","docs\u002Fshield-base\u002F02.data-sources\u002Ffirehol",{"title":610,"path":611,"stem":612},"Proxy Detection","\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Fproxy","docs\u002Fshield-base\u002F02.data-sources\u002Fproxy",{"title":614,"path":615,"stem":616},"Tor Nodes","\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Ftor","docs\u002Fshield-base\u002F02.data-sources\u002Ftor",{"title":618,"path":619,"stem":620},"Suspicious User-Agents","\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Fuseragent","docs\u002Fshield-base\u002F02.data-sources\u002Fuseragent",{"title":622,"path":623,"stem":624},"Programmatic Usage","\u002Fdocs\u002Fshield-base\u002Fusage","docs\u002Fshield-base\u002F03.usage",{"title":626,"path":627,"stem":628},"Custom Data Sources","\u002Fdocs\u002Fshield-base\u002Fcustom-data-sources","docs\u002Fshield-base\u002F04.custom-data-sources",{"title":630,"path":631,"stem":632},"TypeScript Types","\u002Fdocs\u002Fshield-base\u002Ftypes","docs\u002Fshield-base\u002F05.types",{"title":196,"path":634,"stem":635},"\u002Fdocs\u002Fshield-base\u002Fapi","docs\u002Fshield-base\u002F06.api",{"title":214,"path":48,"stem":637,"children":638},"docs\u002Futils\u002Findex",[639,640,657,690,787],{"title":214,"path":48,"stem":637},{"title":641,"path":642,"stem":643,"children":644,"page":53},"Eslint","\u002Fdocs\u002Futils\u002Feslint","docs\u002Futils\u002Feslint",[645,649,653],{"title":646,"path":647,"stem":648},"React Config","\u002Fdocs\u002Futils\u002Feslint\u002Freact","docs\u002Futils\u002Feslint\u002Freact",{"title":650,"path":651,"stem":652},"TypeScript Config","\u002Fdocs\u002Futils\u002Feslint\u002Ftypescript","docs\u002Futils\u002Feslint\u002Ftypescript",{"title":654,"path":655,"stem":656},"Vue Config","\u002Fdocs\u002Futils\u002Feslint\u002Fvue","docs\u002Futils\u002Feslint\u002Fvue",{"title":658,"path":659,"stem":660,"children":661,"page":53},"Server","\u002Fdocs\u002Futils\u002Fserver","docs\u002Futils\u002Fserver",[662,666,670,674,678,682,686],{"title":663,"path":664,"stem":665},"Encryption","\u002Fdocs\u002Futils\u002Fserver\u002Fencryption","docs\u002Futils\u002Fserver\u002Fencryption",{"title":667,"path":668,"stem":669},"Path Resolver","\u002Fdocs\u002Futils\u002Fserver\u002Fpathresolver","docs\u002Futils\u002Fserver\u002FpathResolver",{"title":671,"path":672,"stem":673},"File Replacements","\u002Fdocs\u002Futils\u002Fserver\u002Freplace","docs\u002Futils\u002Fserver\u002Freplace",{"title":675,"path":676,"stem":677},"run","\u002Fdocs\u002Futils\u002Fserver\u002Frun","docs\u002Futils\u002Fserver\u002Frun",{"title":679,"path":680,"stem":681},"scheduleTask","\u002Fdocs\u002Futils\u002Fserver\u002Fscheduletask","docs\u002Futils\u002Fserver\u002FscheduleTask",{"title":683,"path":684,"stem":685},"spawnRun","\u002Fdocs\u002Futils\u002Fserver\u002Fspawnrun","docs\u002Futils\u002Fserver\u002FspawnRun",{"title":687,"path":688,"stem":689},"uploadCsv","\u002Fdocs\u002Futils\u002Fserver\u002Fuploadcsv","docs\u002Futils\u002Fserver\u002FuploadCsv",{"title":691,"path":692,"stem":693,"children":694,"page":53},"Shared","\u002Fdocs\u002Futils\u002Fshared","docs\u002Futils\u002Fshared",[695,699,703,707,711,715,719,723,727,731,735,739,743,747,751,755,759,763,767,771,775,779,783],{"title":696,"path":697,"stem":698},"BatchQueue","\u002Fdocs\u002Futils\u002Fshared\u002Fbatchqueue","docs\u002Futils\u002Fshared\u002FbatchQueue",{"title":700,"path":701,"stem":702},"capitalize","\u002Fdocs\u002Futils\u002Fshared\u002Fcapitalize","docs\u002Futils\u002Fshared\u002Fcapitalize",{"title":704,"path":705,"stem":706},"chunkProcess","\u002Fdocs\u002Futils\u002Fshared\u002Fchunkprocess","docs\u002Futils\u002Fshared\u002FchunkProcess",{"title":708,"path":709,"stem":710},"cleanObject","\u002Fdocs\u002Futils\u002Fshared\u002Fcleanobject","docs\u002Futils\u002Fshared\u002FcleanObject",{"title":712,"path":713,"stem":714},"createConfigManager","\u002Fdocs\u002Futils\u002Fshared\u002Fconfigurationdefiner","docs\u002Futils\u002Fshared\u002FconfigurationDefiner",{"title":716,"path":717,"stem":718},"debounce","\u002Fdocs\u002Futils\u002Fshared\u002Fdebounce","docs\u002Futils\u002Fshared\u002Fdebounce",{"title":720,"path":721,"stem":722},"ensureArray","\u002Fdocs\u002Futils\u002Fshared\u002Fensurearray","docs\u002Futils\u002Fshared\u002FensureArray",{"title":724,"path":725,"stem":726},"fetchWithRetry","\u002Fdocs\u002Futils\u002Fshared\u002Ffetchwithretry","docs\u002Futils\u002Fshared\u002FfetchWithRetry",{"title":728,"path":729,"stem":730},"filterEmptyValues","\u002Fdocs\u002Futils\u002Fshared\u002Ffilteremptyvalues","docs\u002Futils\u002Fshared\u002FfilterEmptyValues",{"title":732,"path":733,"stem":734},"findStringsInObject","\u002Fdocs\u002Futils\u002Fshared\u002Ffindobjectvalues","docs\u002Futils\u002Fshared\u002FfindObjectValues",{"title":736,"path":737,"stem":738},"fisherYatesShuffle","\u002Fdocs\u002Futils\u002Fshared\u002Ffisheryatesshuffle","docs\u002Futils\u002Fshared\u002FfisherYatesShuffle",{"title":740,"path":741,"stem":742},"getRandomImage","\u002Fdocs\u002Futils\u002Fshared\u002Fgetrandomimage","docs\u002Futils\u002Fshared\u002FgetRandomImage",{"title":744,"path":745,"stem":746},"isObjectHasValues","\u002Fdocs\u002Futils\u002Fshared\u002Fisobjecthasvalues","docs\u002Futils\u002Fshared\u002FisObjectHasValues",{"title":748,"path":749,"stem":750},"isAsyncOrPromise","\u002Fdocs\u002Futils\u002Fshared\u002Fispromise","docs\u002Futils\u002Fshared\u002FisPromise",{"title":752,"path":753,"stem":754},"MiniCache","\u002Fdocs\u002Futils\u002Fshared\u002Fminicache","docs\u002Futils\u002Fshared\u002FminiCache",{"title":756,"path":757,"stem":758},"parseCookies","\u002Fdocs\u002Futils\u002Fshared\u002Fparserawcookies","docs\u002Futils\u002Fshared\u002FparseRawCookies",{"title":760,"path":761,"stem":762},"safeAction","\u002Fdocs\u002Futils\u002Fshared\u002Fpromiselocker","docs\u002Futils\u002Fshared\u002FpromiseLocker",{"title":764,"path":765,"stem":766},"Random","\u002Fdocs\u002Futils\u002Fshared\u002Frandom","docs\u002Futils\u002Fshared\u002Frandom",{"title":768,"path":769,"stem":770},"range","\u002Fdocs\u002Futils\u002Fshared\u002Frange","docs\u002Futils\u002Fshared\u002Frange",{"title":772,"path":773,"stem":774},"rateLimiters","\u002Fdocs\u002Futils\u002Fshared\u002Fratelimiters","docs\u002Futils\u002Fshared\u002FrateLimiters",{"title":776,"path":777,"stem":778},"safeObjectMerge","\u002Fdocs\u002Futils\u002Fshared\u002Fsafemerge","docs\u002Futils\u002Fshared\u002FsafeMerge",{"title":780,"path":781,"stem":782},"textTruncation","\u002Fdocs\u002Futils\u002Fshared\u002Ftexttruncation","docs\u002Futils\u002Fshared\u002FtextTruncation",{"title":784,"path":785,"stem":786},"validateZodSchema","\u002Fdocs\u002Futils\u002Fshared\u002Fvalidatezodschema","docs\u002Futils\u002Fshared\u002FvalidateZodSchema",{"title":788,"path":789,"stem":790,"children":791},"Utility Types","\u002Fdocs\u002Futils\u002Ftypes","docs\u002Futils\u002Ftypes\u002Findex",[792,793,797,801,805,809,813,817,821,825],{"title":788,"path":789,"stem":790},{"title":794,"path":795,"stem":796},"Brand","\u002Fdocs\u002Futils\u002Ftypes\u002Fbrand","docs\u002Futils\u002Ftypes\u002FBrand",{"title":798,"path":799,"stem":800},"DeepPartial","\u002Fdocs\u002Futils\u002Ftypes\u002Fdeeppartial","docs\u002Futils\u002Ftypes\u002FDeepPartial",{"title":802,"path":803,"stem":804},"Merge","\u002Fdocs\u002Futils\u002Ftypes\u002Fmerge","docs\u002Futils\u002Ftypes\u002FMerge",{"title":806,"path":807,"stem":808},"NonNullable","\u002Fdocs\u002Futils\u002Ftypes\u002Fnonnullable","docs\u002Futils\u002Ftypes\u002FNonNullable",{"title":810,"path":811,"stem":812},"Prettify","\u002Fdocs\u002Futils\u002Ftypes\u002Fprettify","docs\u002Futils\u002Ftypes\u002FPrettify",{"title":814,"path":815,"stem":816},"PromiseType","\u002Fdocs\u002Futils\u002Ftypes\u002Fpromisetype","docs\u002Futils\u002Ftypes\u002FPromiseType",{"title":818,"path":819,"stem":820},"RequireKeys","\u002Fdocs\u002Futils\u002Ftypes\u002Frequirekeys","docs\u002Futils\u002Ftypes\u002FRequireKeys",{"title":822,"path":823,"stem":824},"StandardResponse","\u002Fdocs\u002Futils\u002Ftypes\u002Fstandardresponse","docs\u002Futils\u002Ftypes\u002FStandardResponse",{"title":826,"path":827,"stem":828},"ValueOf","\u002Fdocs\u002Futils\u002Ftypes\u002Fvalueof","docs\u002Futils\u002Ftypes\u002FValueOf",{"id":4,"extension":5,"links":830,"meta":841,"stem":62,"__hash__":63},[831,839,840],{"nested":8,"label":9,"icon":10,"to":11,"children":832},[833,834,835,836,837,838],{"label":14,"icon":15,"to":11,"description":16,"github":17,"badge":18},{"label":20,"icon":21,"to":22,"description":23,"github":24,"badge":25},{"label":27,"icon":28,"to":29,"description":30,"github":31,"badge":25},{"label":33,"icon":34,"to":35,"description":36,"github":37,"badge":38},{"label":40,"icon":41,"to":42,"description":43,"github":44,"badge":38},{"label":46,"icon":47,"to":48,"description":49,"github":50,"badge":51},{"nested":53,"label":54,"icon":55,"to":56},{"nested":53,"label":58,"icon":59,"to":60},{},{"id":843,"title":112,"body":844,"description":1714,"extension":1715,"icon":1716,"meta":1717,"module":1718,"navigation":8,"path":113,"rawbody":1719,"seo":1720,"stem":114,"__hash__":1721},"docs\u002Fdocs\u002Fauth-h3client\u002F01.essentials\u002F06.cookies.md",{"type":845,"value":846,"toc":1707},"minimark",[847,851,854,859,1078,1101,1124,1126,1132,1142,1287,1297,1299,1303,1306,1314,1317,1327,1337,1471,1592,1598,1600,1604,1627,1630,1661,1663,1667,1703],[848,849,850],"p",{},"The module uses a fixed set of cookies to manage session state. Each cookie has specific security attributes that enforce origin binding, transport security, and script isolation.",[852,853],"hr",{},[855,856,858],"h2",{"id":857},"cookie-inventory","Cookie inventory",[860,861,862,887],"table",{},[863,864,865],"thead",{},[866,867,868,872,875,878,881,884],"tr",{},[869,870,871],"th",{},"Name",[869,873,874],{},"Content",[869,876,877],{},"HttpOnly",[869,879,880],{},"SameSite",[869,882,883],{},"Secure",[869,885,886],{},"Set by",[888,889,890,913,931,950,972,997,1015,1038,1058],"tbody",{},[866,891,892,899,902,905,908,910],{},[893,894,895],"td",{},[896,897,898],"code",{},"__Secure-a",[893,900,901],{},"Access token",[893,903,904],{},"Yes",[893,906,907],{},"Strict",[893,909,904],{},[893,911,912],{},"Login, OAuth callback, token rotation",[866,914,915,920,923,925,927,929],{},[893,916,917],{},[896,918,919],{},"a-iat",[893,921,922],{},"Access token issued-at timestamp",[893,924,904],{},[893,926,907],{},[893,928,904],{},[893,930,912],{},[866,932,933,938,941,943,945,947],{},[893,934,935],{},[896,936,937],{},"session",[893,939,940],{},"Refresh token",[893,942,904],{},[893,944,907],{},[893,946,904],{},[893,948,949],{},"IAM service (forwarded)",[866,951,952,957,960,963,965,967],{},[893,953,954],{},[896,955,956],{},"__Host-csrf",[893,958,959],{},"Signed CSRF token",[893,961,962],{},"No",[893,964,907],{},[893,966,904],{},[893,968,969],{},[896,970,971],{},"generateCsrfCookie",[866,973,974,979,982,984,986,988],{},[893,975,976],{},[896,977,978],{},"__Host-dr_i_n",[893,980,981],{},"Signed visitor cookie (skips bot check)",[893,983,904],{},[893,985,907],{},[893,987,904],{},[893,989,990,993,994],{},[896,991,992],{},"botDetectorMiddleware"," \u002F ",[896,995,996],{},"checkForBots()",[866,998,999,1004,1007,1009,1011,1013],{},[893,1000,1001],{},[896,1002,1003],{},"canary_id",[893,1005,1006],{},"Visitor fingerprint identifier",[893,1008,904],{},[893,1010,907],{},[893,1012,904],{},[893,1014,949],{},[866,1016,1017,1022,1025,1027,1030,1032],{},[893,1018,1019],{},[896,1020,1021],{},"state{name}",[893,1023,1024],{},"OAuth state (signed)",[893,1026,904],{},[893,1028,1029],{},"Lax or None",[893,1031,904],{},[893,1033,1034,1037],{},[896,1035,1036],{},"OAuthRedirect"," (3 min TTL)",[866,1039,1040,1045,1048,1050,1052,1054],{},[893,1041,1042],{},[896,1043,1044],{},"pkce_v{name}",[893,1046,1047],{},"PKCE verifier",[893,1049,904],{},[893,1051,1029],{},[893,1053,904],{},[893,1055,1056,1037],{},[896,1057,1036],{},[866,1059,1060,1065,1068,1070,1072,1074],{},[893,1061,1062],{},[896,1063,1064],{},"nonce{name}",[893,1066,1067],{},"OIDC nonce",[893,1069,904],{},[893,1071,1029],{},[893,1073,904],{},[893,1075,1076,1037],{},[896,1077,1036],{},[848,1079,1080,1081,1084,1085,1088,1089,1092,1093,1096,1097,1100],{},"The ",[896,1082,1083],{},"__Secure-"," prefix requires ",[896,1086,1087],{},"Secure: true",". The ",[896,1090,1091],{},"__Host-"," prefix additionally requires ",[896,1094,1095],{},"Path: \u002F"," and no ",[896,1098,1099],{},"Domain"," attribute, meaning the cookie is scoped to the exact origin with no subdomain access.",[848,1102,1103,1104,1106,1107,1106,1109,1111,1112,1115,1116,1119,1120,1123],{},"OAuth flow cookies (",[896,1105,1021],{},", ",[896,1108,1044],{},[896,1110,1064],{},") use ",[896,1113,1114],{},"SameSite: None"," for providers that use ",[896,1117,1118],{},"response_mode: form_post",", and ",[896,1121,1122],{},"SameSite: Lax"," otherwise.",[852,1125],{},[855,1127,1129],{"id":1128},"makecookie",[896,1130,1131],{},"makeCookie",[848,1133,1134,1137,1138,1141],{},[896,1135,1136],{},"makeCookie(event, name, value, options)"," sets an HTTP cookie on the response. It is a thin wrapper around the H3 ",[896,1139,1140],{},"setCookie"," function with typed options.",[1143,1144,1150],"pre",{"className":1145,"code":1146,"filename":1147,"language":1148,"meta":1149,"style":1149},"language-ts shiki shiki-themes light-plus light-plus dracula","makeCookie(event, '__Secure-custom', value, {\n  httpOnly: true,\n  sameSite: 'strict',\n  secure: true,\n  path: '\u002F',\n  domain: domain,\n  maxAge: 900 \u002F\u002F 15 minutes\n})\n","server\u002Fapi\u002Fcustom.post.ts","ts","",[896,1151,1152,1188,1205,1223,1235,1252,1265,1281],{"__ignoreMap":1149},[1153,1154,1157,1160,1164,1168,1170,1174,1178,1180,1182,1185],"span",{"class":1155,"line":1156},"line",1,[1153,1158,1131],{"class":1159},"sHOzp",[1153,1161,1163],{"class":1162},"sDd4n","(",[1153,1165,1167],{"class":1166},"sjsA6","event",[1153,1169,1106],{"class":1162},[1153,1171,1173],{"class":1172},"sFkSl","'",[1153,1175,1177],{"class":1176},"sFB1V","__Secure-custom",[1153,1179,1173],{"class":1172},[1153,1181,1106],{"class":1162},[1153,1183,1184],{"class":1166},"value",[1153,1186,1187],{"class":1162},", {\n",[1153,1189,1191,1194,1198,1202],{"class":1155,"line":1190},2,[1153,1192,1193],{"class":1166},"  httpOnly",[1153,1195,1197],{"class":1196},"s34zl",":",[1153,1199,1201],{"class":1200},"sjR7W"," true",[1153,1203,1204],{"class":1162},",\n",[1153,1206,1208,1211,1213,1216,1219,1221],{"class":1155,"line":1207},3,[1153,1209,1210],{"class":1166},"  sameSite",[1153,1212,1197],{"class":1196},[1153,1214,1215],{"class":1172}," '",[1153,1217,1218],{"class":1176},"strict",[1153,1220,1173],{"class":1172},[1153,1222,1204],{"class":1162},[1153,1224,1226,1229,1231,1233],{"class":1155,"line":1225},4,[1153,1227,1228],{"class":1166},"  secure",[1153,1230,1197],{"class":1196},[1153,1232,1201],{"class":1200},[1153,1234,1204],{"class":1162},[1153,1236,1238,1241,1243,1245,1248,1250],{"class":1155,"line":1237},5,[1153,1239,1240],{"class":1166},"  path",[1153,1242,1197],{"class":1196},[1153,1244,1215],{"class":1172},[1153,1246,1247],{"class":1176},"\u002F",[1153,1249,1173],{"class":1172},[1153,1251,1204],{"class":1162},[1153,1253,1255,1258,1260,1263],{"class":1155,"line":1254},6,[1153,1256,1257],{"class":1166},"  domain",[1153,1259,1197],{"class":1196},[1153,1261,1262],{"class":1166}," domain",[1153,1264,1204],{"class":1162},[1153,1266,1268,1271,1273,1277],{"class":1155,"line":1267},7,[1153,1269,1270],{"class":1166},"  maxAge",[1153,1272,1197],{"class":1196},[1153,1274,1276],{"class":1275},"spgvN"," 900",[1153,1278,1280],{"class":1279},"sghk6"," \u002F\u002F 15 minutes\n",[1153,1282,1284],{"class":1155,"line":1283},8,[1153,1285,1286],{"class":1162},"})\n",[848,1288,1289,1290,1292,1293,1296],{},"Use ",[896,1291,1131],{}," in custom handlers whenever you need to set a cookie with the same attribute pattern as the session cookies. Pass ",[896,1294,1295],{},"maxAge"," in seconds.",[852,1298],{},[855,1300,1302],{"id":1301},"signed-cookies","Signed cookies",[848,1304,1305],{},"The module uses HMAC-signed cookies for the CSRF token and OAuth state. The signed format is:",[1143,1307,1312],{"className":1308,"code":1310,"language":1311},[1309],"language-text","base64(value).base64(keyword).expiry.hmac\n","text",[896,1313,1310],{"__ignoreMap":1149},[848,1315,1316],{},"Two functions manage this format:",[848,1318,1319,1322,1323,1326],{},[896,1320,1321],{},"createSignedValue(raw, ttlMs, keyword)"," creates a signed cookie string. The ",[896,1324,1325],{},"keyword"," binds the signature to a specific context so that a signed value from one context cannot be replayed in another.",[848,1328,1329,1332,1333,1336],{},[896,1330,1331],{},"verifySignedValue(cookie, keyword)"," parses and verifies the signature and expiry. It returns ",[896,1334,1335],{},"{ valid: boolean, payload: { value, exp } }",".",[1143,1338,1340],{"className":1145,"code":1339,"language":1148,"meta":1149,"style":1149},"const signed = createSignedValue('my-token', 1000 * 60 * 5, 'my-context')\n\nmakeCookie(event, '__Secure-custom', signed, {\n  httpOnly: true,\n  secure: true,\n  sameSite: 'strict',\n  maxAge: 300\n})\n",[896,1341,1342,1396,1401,1424,1434,1444,1458,1467],{"__ignoreMap":1149},[1153,1343,1344,1348,1352,1356,1359,1361,1363,1366,1368,1370,1373,1376,1379,1381,1384,1386,1388,1391,1393],{"class":1155,"line":1156},[1153,1345,1347],{"class":1346},"sl46w","const",[1153,1349,1351],{"class":1350},"s3JHE"," signed",[1153,1353,1355],{"class":1354},"saOXh"," =",[1153,1357,1358],{"class":1159}," createSignedValue",[1153,1360,1163],{"class":1162},[1153,1362,1173],{"class":1172},[1153,1364,1365],{"class":1176},"my-token",[1153,1367,1173],{"class":1172},[1153,1369,1106],{"class":1162},[1153,1371,1372],{"class":1275},"1000",[1153,1374,1375],{"class":1354}," *",[1153,1377,1378],{"class":1275}," 60",[1153,1380,1375],{"class":1354},[1153,1382,1383],{"class":1275}," 5",[1153,1385,1106],{"class":1162},[1153,1387,1173],{"class":1172},[1153,1389,1390],{"class":1176},"my-context",[1153,1392,1173],{"class":1172},[1153,1394,1395],{"class":1162},")\n",[1153,1397,1398],{"class":1155,"line":1190},[1153,1399,1400],{"emptyLinePlaceholder":8},"\n",[1153,1402,1403,1405,1407,1409,1411,1413,1415,1417,1419,1422],{"class":1155,"line":1207},[1153,1404,1131],{"class":1159},[1153,1406,1163],{"class":1162},[1153,1408,1167],{"class":1166},[1153,1410,1106],{"class":1162},[1153,1412,1173],{"class":1172},[1153,1414,1177],{"class":1176},[1153,1416,1173],{"class":1172},[1153,1418,1106],{"class":1162},[1153,1420,1421],{"class":1166},"signed",[1153,1423,1187],{"class":1162},[1153,1425,1426,1428,1430,1432],{"class":1155,"line":1225},[1153,1427,1193],{"class":1166},[1153,1429,1197],{"class":1196},[1153,1431,1201],{"class":1200},[1153,1433,1204],{"class":1162},[1153,1435,1436,1438,1440,1442],{"class":1155,"line":1237},[1153,1437,1228],{"class":1166},[1153,1439,1197],{"class":1196},[1153,1441,1201],{"class":1200},[1153,1443,1204],{"class":1162},[1153,1445,1446,1448,1450,1452,1454,1456],{"class":1155,"line":1254},[1153,1447,1210],{"class":1166},[1153,1449,1197],{"class":1196},[1153,1451,1215],{"class":1172},[1153,1453,1218],{"class":1176},[1153,1455,1173],{"class":1172},[1153,1457,1204],{"class":1162},[1153,1459,1460,1462,1464],{"class":1155,"line":1267},[1153,1461,1270],{"class":1166},[1153,1463,1197],{"class":1196},[1153,1465,1466],{"class":1275}," 300\n",[1153,1468,1469],{"class":1155,"line":1283},[1153,1470,1286],{"class":1162},[1143,1472,1474],{"className":1145,"code":1473,"language":1148,"meta":1149,"style":1149},"const { valid, payload } = verifySignedValue(cookieValue, 'my-context')\n\nif (!valid || !payload) {\n  throw createError({ statusCode: 403 })\n}\n\nconst rawToken = payload.value\n",[896,1475,1476,1515,1519,1544,1566,1571,1575],{"__ignoreMap":1149},[1153,1477,1478,1480,1483,1486,1488,1491,1494,1497,1500,1502,1505,1507,1509,1511,1513],{"class":1155,"line":1156},[1153,1479,1347],{"class":1346},[1153,1481,1482],{"class":1162}," { ",[1153,1484,1485],{"class":1350},"valid",[1153,1487,1106],{"class":1162},[1153,1489,1490],{"class":1350},"payload",[1153,1492,1493],{"class":1162}," } ",[1153,1495,1496],{"class":1354},"=",[1153,1498,1499],{"class":1159}," verifySignedValue",[1153,1501,1163],{"class":1162},[1153,1503,1504],{"class":1166},"cookieValue",[1153,1506,1106],{"class":1162},[1153,1508,1173],{"class":1172},[1153,1510,1390],{"class":1176},[1153,1512,1173],{"class":1172},[1153,1514,1395],{"class":1162},[1153,1516,1517],{"class":1155,"line":1190},[1153,1518,1400],{"emptyLinePlaceholder":8},[1153,1520,1521,1525,1528,1531,1533,1536,1539,1541],{"class":1155,"line":1207},[1153,1522,1524],{"class":1523},"sZ328","if",[1153,1526,1527],{"class":1162}," (",[1153,1529,1530],{"class":1354},"!",[1153,1532,1485],{"class":1166},[1153,1534,1535],{"class":1354}," ||",[1153,1537,1538],{"class":1354}," !",[1153,1540,1490],{"class":1166},[1153,1542,1543],{"class":1162},") {\n",[1153,1545,1546,1549,1552,1555,1558,1560,1563],{"class":1155,"line":1225},[1153,1547,1548],{"class":1523},"  throw",[1153,1550,1551],{"class":1159}," createError",[1153,1553,1554],{"class":1162},"({ ",[1153,1556,1557],{"class":1166},"statusCode",[1153,1559,1197],{"class":1196},[1153,1561,1562],{"class":1275}," 403",[1153,1564,1565],{"class":1162}," })\n",[1153,1567,1568],{"class":1155,"line":1237},[1153,1569,1570],{"class":1162},"}\n",[1153,1572,1573],{"class":1155,"line":1254},[1153,1574,1400],{"emptyLinePlaceholder":8},[1153,1576,1577,1579,1582,1584,1587,1589],{"class":1155,"line":1267},[1153,1578,1347],{"class":1346},[1153,1580,1581],{"class":1350}," rawToken",[1153,1583,1355],{"class":1354},[1153,1585,1586],{"class":1166}," payload",[1153,1588,1336],{"class":1162},[1153,1590,1591],{"class":1166},"value\n",[848,1593,1080,1594,1597],{},[896,1595,1596],{},"cryptoCookiesSecret"," field in the configuration is the HMAC key used for all signed cookies. It should be at least 32 bytes of random data and must remain stable across application restarts.",[852,1599],{},[855,1601,1603],{"id":1602},"cookie-domain-and-access-token-ttl","Cookie domain and access token TTL",[848,1605,1080,1606,1608,1609,1611,1612,1615,1616,1618,1619,1622,1623,1626],{},[896,1607,898],{}," access token cookie and ",[896,1610,919],{}," issued-at cookie are always set with the ",[896,1613,1614],{},"domain"," and ",[896,1617,1295],{}," values fetched from ",[896,1620,1621],{},"getOperationalConfig",". That function calls the IAM service at ",[896,1624,1625],{},"GET \u002Foperational\u002Fconfig",", parses the response, and caches the result for 24 hours keyed by the IAM server address. The cache means the IAM is called at most once per process lifetime for this data.",[848,1628,1629],{},"Two values come from that response:",[1631,1632,1633,1647],"ul",{},[1634,1635,1636,1638,1639,1641,1642,1615,1644,1646],"li",{},[896,1637,1614],{},": the cookie domain configured on the IAM service. Used as the ",[896,1640,1099],{}," attribute on ",[896,1643,898],{},[896,1645,919],{},", scoping them across subdomains of that domain.",[1634,1648,1649,1652,1653,1656,1657,1660],{},[896,1650,1651],{},"accessTokenTTL",": the IAM returns this value in milliseconds. The gateway converts it to seconds with ",[896,1654,1655],{},"Math.floor(ms \u002F 1000)"," and uses it as the ",[896,1658,1659],{},"MaxAge"," of both cookies.",[852,1662],{},[855,1664,1666],{"id":1665},"clearing-cookies-on-logout","Clearing cookies on logout",[848,1668,1669,1672,1673,1676,1677,1106,1679,1106,1682,1106,1685,1119,1688,1691,1692,1695,1696,1698,1699,1702],{},[896,1670,1671],{},"logoutHandler"," deletes all session cookies explicitly by calling ",[896,1674,1675],{},"deleteCookie"," with matching attributes. The cookie deletion must use the same ",[896,1678,1614],{},[896,1680,1681],{},"path",[896,1683,1684],{},"secure",[896,1686,1687],{},"httpOnly",[896,1689,1690],{},"sameSite"," values as the original ",[896,1693,1694],{},"Set-Cookie"," call. Using ",[896,1697,1131],{}," with an empty value and ",[896,1700,1701],{},"maxAge: 0"," achieves the same result for custom flows.",[1704,1705,1706],"style",{},"html pre.shiki code .sHOzp, html code.shiki .sHOzp{--shiki-light:#795E26;--shiki-default:#795E26;--shiki-dark:#50FA7B}html pre.shiki code .sDd4n, html code.shiki .sDd4n{--shiki-light:#000000;--shiki-default:#000000;--shiki-dark:#F8F8F2}html pre.shiki code .sjsA6, html code.shiki .sjsA6{--shiki-light:#001080;--shiki-default:#001080;--shiki-dark:#F8F8F2}html pre.shiki code .sFkSl, html code.shiki .sFkSl{--shiki-light:#A31515;--shiki-default:#A31515;--shiki-dark:#E9F284}html pre.shiki code .sFB1V, html code.shiki .sFB1V{--shiki-light:#A31515;--shiki-default:#A31515;--shiki-dark:#F1FA8C}html pre.shiki code .s34zl, html code.shiki .s34zl{--shiki-light:#001080;--shiki-default:#001080;--shiki-dark:#FF79C6}html pre.shiki code .sjR7W, html code.shiki .sjR7W{--shiki-light:#0000FF;--shiki-default:#0000FF;--shiki-dark:#BD93F9}html pre.shiki code .spgvN, html code.shiki .spgvN{--shiki-light:#098658;--shiki-default:#098658;--shiki-dark:#BD93F9}html pre.shiki code .sghk6, html code.shiki .sghk6{--shiki-light:#008000;--shiki-default:#008000;--shiki-dark:#6272A4}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sl46w, html code.shiki .sl46w{--shiki-light:#0000FF;--shiki-default:#0000FF;--shiki-dark:#FF79C6}html pre.shiki code .s3JHE, html code.shiki .s3JHE{--shiki-light:#0070C1;--shiki-default:#0070C1;--shiki-dark:#F8F8F2}html pre.shiki code .saOXh, html code.shiki .saOXh{--shiki-light:#000000;--shiki-default:#000000;--shiki-dark:#FF79C6}html pre.shiki code .sZ328, html code.shiki .sZ328{--shiki-light:#AF00DB;--shiki-default:#AF00DB;--shiki-dark:#FF79C6}",{"title":1149,"searchDepth":1190,"depth":1190,"links":1708},[1709,1710,1711,1712,1713],{"id":857,"depth":1190,"text":858},{"id":1128,"depth":1190,"text":1131},{"id":1301,"depth":1190,"text":1302},{"id":1602,"depth":1190,"text":1603},{"id":1665,"depth":1190,"text":1666},"Cookie names used by the module, their security attributes, the signed cookie format, and the makeCookie utility for setting cookies in custom handlers.","md","i-lucide-cookie",{},null,"---\ntitle: Cookies\ndescription: Cookie names used by the module, their security attributes, the signed cookie format, and the makeCookie utility for setting cookies in custom handlers.\nicon: i-lucide-cookie\n---\n\nThe module uses a fixed set of cookies to manage session state. Each cookie has specific security attributes that enforce origin binding, transport security, and script isolation.\n\n---\n\n## Cookie inventory\n\n| Name | Content | HttpOnly | SameSite | Secure | Set by |\n|---|---|---|---|---|---|\n| `__Secure-a` | Access token | Yes | Strict | Yes | Login, OAuth callback, token rotation |\n| `a-iat` | Access token issued-at timestamp | Yes | Strict | Yes | Login, OAuth callback, token rotation |\n| `session` | Refresh token | Yes | Strict | Yes | IAM service (forwarded) |\n| `__Host-csrf` | Signed CSRF token | No | Strict | Yes | `generateCsrfCookie` |\n| `__Host-dr_i_n` | Signed visitor cookie (skips bot check) | Yes | Strict | Yes | `botDetectorMiddleware` \u002F `checkForBots()` |\n| `canary_id` | Visitor fingerprint identifier | Yes | Strict | Yes | IAM service (forwarded) |\n| `state{name}` | OAuth state (signed) | Yes | Lax or None | Yes | `OAuthRedirect` (3 min TTL) |\n| `pkce_v{name}` | PKCE verifier | Yes | Lax or None | Yes | `OAuthRedirect` (3 min TTL) |\n| `nonce{name}` | OIDC nonce | Yes | Lax or None | Yes | `OAuthRedirect` (3 min TTL) |\n\nThe `__Secure-` prefix requires `Secure: true`. The `__Host-` prefix additionally requires `Path: \u002F` and no `Domain` attribute, meaning the cookie is scoped to the exact origin with no subdomain access.\n\nOAuth flow cookies (`state{name}`, `pkce_v{name}`, `nonce{name}`) use `SameSite: None` for providers that use `response_mode: form_post`, and `SameSite: Lax` otherwise.\n\n---\n\n## `makeCookie`\n\n`makeCookie(event, name, value, options)` sets an HTTP cookie on the response. It is a thin wrapper around the H3 `setCookie` function with typed options.\n\n```ts [server\u002Fapi\u002Fcustom.post.ts]\nmakeCookie(event, '__Secure-custom', value, {\n  httpOnly: true,\n  sameSite: 'strict',\n  secure: true,\n  path: '\u002F',\n  domain: domain,\n  maxAge: 900 \u002F\u002F 15 minutes\n})\n```\n\nUse `makeCookie` in custom handlers whenever you need to set a cookie with the same attribute pattern as the session cookies. Pass `maxAge` in seconds.\n\n---\n\n## Signed cookies\n\nThe module uses HMAC-signed cookies for the CSRF token and OAuth state. The signed format is:\n\n```\nbase64(value).base64(keyword).expiry.hmac\n```\n\nTwo functions manage this format:\n\n`createSignedValue(raw, ttlMs, keyword)` creates a signed cookie string. The `keyword` binds the signature to a specific context so that a signed value from one context cannot be replayed in another.\n\n`verifySignedValue(cookie, keyword)` parses and verifies the signature and expiry. It returns `{ valid: boolean, payload: { value, exp } }`.\n\n```ts\nconst signed = createSignedValue('my-token', 1000 * 60 * 5, 'my-context')\n\nmakeCookie(event, '__Secure-custom', signed, {\n  httpOnly: true,\n  secure: true,\n  sameSite: 'strict',\n  maxAge: 300\n})\n```\n\n```ts\nconst { valid, payload } = verifySignedValue(cookieValue, 'my-context')\n\nif (!valid || !payload) {\n  throw createError({ statusCode: 403 })\n}\n\nconst rawToken = payload.value\n```\n\nThe `cryptoCookiesSecret` field in the configuration is the HMAC key used for all signed cookies. It should be at least 32 bytes of random data and must remain stable across application restarts.\n\n---\n\n## Cookie domain and access token TTL\n\nThe `__Secure-a` access token cookie and `a-iat` issued-at cookie are always set with the `domain` and `maxAge` values fetched from `getOperationalConfig`. That function calls the IAM service at `GET \u002Foperational\u002Fconfig`, parses the response, and caches the result for 24 hours keyed by the IAM server address. The cache means the IAM is called at most once per process lifetime for this data.\n\nTwo values come from that response:\n\n- `domain`: the cookie domain configured on the IAM service. Used as the `Domain` attribute on `__Secure-a` and `a-iat`, scoping them across subdomains of that domain.\n- `accessTokenTTL`: the IAM returns this value in milliseconds. The gateway converts it to seconds with `Math.floor(ms \u002F 1000)` and uses it as the `MaxAge` of both cookies.\n\n---\n\n## Clearing cookies on logout\n\n`logoutHandler` deletes all session cookies explicitly by calling `deleteCookie` with matching attributes. The cookie deletion must use the same `domain`, `path`, `secure`, `httpOnly`, and `sameSite` values as the original `Set-Cookie` call. Using `makeCookie` with an empty value and `maxAge: 0` achieves the same result for custom flows.",{"title":112,"description":1714},"4gYSplyVuFl3I5OjkX6kAAjAvrGNqoQ7HwJlPekW8PI",[1723,1724],{"title":33,"path":109,"stem":110,"children":-1},{"title":116,"path":117,"stem":118,"children":-1},{"id":843,"title":112,"body":1726,"description":1714,"extension":1715,"icon":1716,"meta":2368,"module":1718,"navigation":8,"path":113,"rawbody":1719,"seo":2369,"stem":114,"__hash__":1721},{"type":845,"value":1727,"toc":2361},[1728,1730,1732,1734,1910,1922,1936,1938,1942,1948,2046,2052,2054,2056,2058,2063,2065,2071,2077,2193,2289,2293,2295,2297,2311,2313,2333,2335,2337,2359],[848,1729,850],{},[852,1731],{},[855,1733,858],{"id":857},[860,1735,1736,1752],{},[863,1737,1738],{},[866,1739,1740,1742,1744,1746,1748,1750],{},[869,1741,871],{},[869,1743,874],{},[869,1745,877],{},[869,1747,880],{},[869,1749,883],{},[869,1751,886],{},[888,1753,1754,1770,1786,1802,1820,1840,1856,1874,1892],{},[866,1755,1756,1760,1762,1764,1766,1768],{},[893,1757,1758],{},[896,1759,898],{},[893,1761,901],{},[893,1763,904],{},[893,1765,907],{},[893,1767,904],{},[893,1769,912],{},[866,1771,1772,1776,1778,1780,1782,1784],{},[893,1773,1774],{},[896,1775,919],{},[893,1777,922],{},[893,1779,904],{},[893,1781,907],{},[893,1783,904],{},[893,1785,912],{},[866,1787,1788,1792,1794,1796,1798,1800],{},[893,1789,1790],{},[896,1791,937],{},[893,1793,940],{},[893,1795,904],{},[893,1797,907],{},[893,1799,904],{},[893,1801,949],{},[866,1803,1804,1808,1810,1812,1814,1816],{},[893,1805,1806],{},[896,1807,956],{},[893,1809,959],{},[893,1811,962],{},[893,1813,907],{},[893,1815,904],{},[893,1817,1818],{},[896,1819,971],{},[866,1821,1822,1826,1828,1830,1832,1834],{},[893,1823,1824],{},[896,1825,978],{},[893,1827,981],{},[893,1829,904],{},[893,1831,907],{},[893,1833,904],{},[893,1835,1836,993,1838],{},[896,1837,992],{},[896,1839,996],{},[866,1841,1842,1846,1848,1850,1852,1854],{},[893,1843,1844],{},[896,1845,1003],{},[893,1847,1006],{},[893,1849,904],{},[893,1851,907],{},[893,1853,904],{},[893,1855,949],{},[866,1857,1858,1862,1864,1866,1868,1870],{},[893,1859,1860],{},[896,1861,1021],{},[893,1863,1024],{},[893,1865,904],{},[893,1867,1029],{},[893,1869,904],{},[893,1871,1872,1037],{},[896,1873,1036],{},[866,1875,1876,1880,1882,1884,1886,1888],{},[893,1877,1878],{},[896,1879,1044],{},[893,1881,1047],{},[893,1883,904],{},[893,1885,1029],{},[893,1887,904],{},[893,1889,1890,1037],{},[896,1891,1036],{},[866,1893,1894,1898,1900,1902,1904,1906],{},[893,1895,1896],{},[896,1897,1064],{},[893,1899,1067],{},[893,1901,904],{},[893,1903,1029],{},[893,1905,904],{},[893,1907,1908,1037],{},[896,1909,1036],{},[848,1911,1080,1912,1084,1914,1088,1916,1092,1918,1096,1920,1100],{},[896,1913,1083],{},[896,1915,1087],{},[896,1917,1091],{},[896,1919,1095],{},[896,1921,1099],{},[848,1923,1103,1924,1106,1926,1106,1928,1111,1930,1115,1932,1119,1934,1123],{},[896,1925,1021],{},[896,1927,1044],{},[896,1929,1064],{},[896,1931,1114],{},[896,1933,1118],{},[896,1935,1122],{},[852,1937],{},[855,1939,1940],{"id":1128},[896,1941,1131],{},[848,1943,1944,1137,1946,1141],{},[896,1945,1136],{},[896,1947,1140],{},[1143,1949,1950],{"className":1145,"code":1146,"filename":1147,"language":1148,"meta":1149,"style":1149},[896,1951,1952,1974,1984,1998,2008,2022,2032,2042],{"__ignoreMap":1149},[1153,1953,1954,1956,1958,1960,1962,1964,1966,1968,1970,1972],{"class":1155,"line":1156},[1153,1955,1131],{"class":1159},[1153,1957,1163],{"class":1162},[1153,1959,1167],{"class":1166},[1153,1961,1106],{"class":1162},[1153,1963,1173],{"class":1172},[1153,1965,1177],{"class":1176},[1153,1967,1173],{"class":1172},[1153,1969,1106],{"class":1162},[1153,1971,1184],{"class":1166},[1153,1973,1187],{"class":1162},[1153,1975,1976,1978,1980,1982],{"class":1155,"line":1190},[1153,1977,1193],{"class":1166},[1153,1979,1197],{"class":1196},[1153,1981,1201],{"class":1200},[1153,1983,1204],{"class":1162},[1153,1985,1986,1988,1990,1992,1994,1996],{"class":1155,"line":1207},[1153,1987,1210],{"class":1166},[1153,1989,1197],{"class":1196},[1153,1991,1215],{"class":1172},[1153,1993,1218],{"class":1176},[1153,1995,1173],{"class":1172},[1153,1997,1204],{"class":1162},[1153,1999,2000,2002,2004,2006],{"class":1155,"line":1225},[1153,2001,1228],{"class":1166},[1153,2003,1197],{"class":1196},[1153,2005,1201],{"class":1200},[1153,2007,1204],{"class":1162},[1153,2009,2010,2012,2014,2016,2018,2020],{"class":1155,"line":1237},[1153,2011,1240],{"class":1166},[1153,2013,1197],{"class":1196},[1153,2015,1215],{"class":1172},[1153,2017,1247],{"class":1176},[1153,2019,1173],{"class":1172},[1153,2021,1204],{"class":1162},[1153,2023,2024,2026,2028,2030],{"class":1155,"line":1254},[1153,2025,1257],{"class":1166},[1153,2027,1197],{"class":1196},[1153,2029,1262],{"class":1166},[1153,2031,1204],{"class":1162},[1153,2033,2034,2036,2038,2040],{"class":1155,"line":1267},[1153,2035,1270],{"class":1166},[1153,2037,1197],{"class":1196},[1153,2039,1276],{"class":1275},[1153,2041,1280],{"class":1279},[1153,2043,2044],{"class":1155,"line":1283},[1153,2045,1286],{"class":1162},[848,2047,1289,2048,1292,2050,1296],{},[896,2049,1131],{},[896,2051,1295],{},[852,2053],{},[855,2055,1302],{"id":1301},[848,2057,1305],{},[1143,2059,2061],{"className":2060,"code":1310,"language":1311},[1309],[896,2062,1310],{"__ignoreMap":1149},[848,2064,1316],{},[848,2066,2067,1322,2069,1326],{},[896,2068,1321],{},[896,2070,1325],{},[848,2072,2073,1332,2075,1336],{},[896,2074,1331],{},[896,2076,1335],{},[1143,2078,2079],{"className":1145,"code":1339,"language":1148,"meta":1149,"style":1149},[896,2080,2081,2121,2125,2147,2157,2167,2181,2189],{"__ignoreMap":1149},[1153,2082,2083,2085,2087,2089,2091,2093,2095,2097,2099,2101,2103,2105,2107,2109,2111,2113,2115,2117,2119],{"class":1155,"line":1156},[1153,2084,1347],{"class":1346},[1153,2086,1351],{"class":1350},[1153,2088,1355],{"class":1354},[1153,2090,1358],{"class":1159},[1153,2092,1163],{"class":1162},[1153,2094,1173],{"class":1172},[1153,2096,1365],{"class":1176},[1153,2098,1173],{"class":1172},[1153,2100,1106],{"class":1162},[1153,2102,1372],{"class":1275},[1153,2104,1375],{"class":1354},[1153,2106,1378],{"class":1275},[1153,2108,1375],{"class":1354},[1153,2110,1383],{"class":1275},[1153,2112,1106],{"class":1162},[1153,2114,1173],{"class":1172},[1153,2116,1390],{"class":1176},[1153,2118,1173],{"class":1172},[1153,2120,1395],{"class":1162},[1153,2122,2123],{"class":1155,"line":1190},[1153,2124,1400],{"emptyLinePlaceholder":8},[1153,2126,2127,2129,2131,2133,2135,2137,2139,2141,2143,2145],{"class":1155,"line":1207},[1153,2128,1131],{"class":1159},[1153,2130,1163],{"class":1162},[1153,2132,1167],{"class":1166},[1153,2134,1106],{"class":1162},[1153,2136,1173],{"class":1172},[1153,2138,1177],{"class":1176},[1153,2140,1173],{"class":1172},[1153,2142,1106],{"class":1162},[1153,2144,1421],{"class":1166},[1153,2146,1187],{"class":1162},[1153,2148,2149,2151,2153,2155],{"class":1155,"line":1225},[1153,2150,1193],{"class":1166},[1153,2152,1197],{"class":1196},[1153,2154,1201],{"class":1200},[1153,2156,1204],{"class":1162},[1153,2158,2159,2161,2163,2165],{"class":1155,"line":1237},[1153,2160,1228],{"class":1166},[1153,2162,1197],{"class":1196},[1153,2164,1201],{"class":1200},[1153,2166,1204],{"class":1162},[1153,2168,2169,2171,2173,2175,2177,2179],{"class":1155,"line":1254},[1153,2170,1210],{"class":1166},[1153,2172,1197],{"class":1196},[1153,2174,1215],{"class":1172},[1153,2176,1218],{"class":1176},[1153,2178,1173],{"class":1172},[1153,2180,1204],{"class":1162},[1153,2182,2183,2185,2187],{"class":1155,"line":1267},[1153,2184,1270],{"class":1166},[1153,2186,1197],{"class":1196},[1153,2188,1466],{"class":1275},[1153,2190,2191],{"class":1155,"line":1283},[1153,2192,1286],{"class":1162},[1143,2194,2195],{"className":1145,"code":1473,"language":1148,"meta":1149,"style":1149},[896,2196,2197,2229,2233,2251,2267,2271,2275],{"__ignoreMap":1149},[1153,2198,2199,2201,2203,2205,2207,2209,2211,2213,2215,2217,2219,2221,2223,2225,2227],{"class":1155,"line":1156},[1153,2200,1347],{"class":1346},[1153,2202,1482],{"class":1162},[1153,2204,1485],{"class":1350},[1153,2206,1106],{"class":1162},[1153,2208,1490],{"class":1350},[1153,2210,1493],{"class":1162},[1153,2212,1496],{"class":1354},[1153,2214,1499],{"class":1159},[1153,2216,1163],{"class":1162},[1153,2218,1504],{"class":1166},[1153,2220,1106],{"class":1162},[1153,2222,1173],{"class":1172},[1153,2224,1390],{"class":1176},[1153,2226,1173],{"class":1172},[1153,2228,1395],{"class":1162},[1153,2230,2231],{"class":1155,"line":1190},[1153,2232,1400],{"emptyLinePlaceholder":8},[1153,2234,2235,2237,2239,2241,2243,2245,2247,2249],{"class":1155,"line":1207},[1153,2236,1524],{"class":1523},[1153,2238,1527],{"class":1162},[1153,2240,1530],{"class":1354},[1153,2242,1485],{"class":1166},[1153,2244,1535],{"class":1354},[1153,2246,1538],{"class":1354},[1153,2248,1490],{"class":1166},[1153,2250,1543],{"class":1162},[1153,2252,2253,2255,2257,2259,2261,2263,2265],{"class":1155,"line":1225},[1153,2254,1548],{"class":1523},[1153,2256,1551],{"class":1159},[1153,2258,1554],{"class":1162},[1153,2260,1557],{"class":1166},[1153,2262,1197],{"class":1196},[1153,2264,1562],{"class":1275},[1153,2266,1565],{"class":1162},[1153,2268,2269],{"class":1155,"line":1237},[1153,2270,1570],{"class":1162},[1153,2272,2273],{"class":1155,"line":1254},[1153,2274,1400],{"emptyLinePlaceholder":8},[1153,2276,2277,2279,2281,2283,2285,2287],{"class":1155,"line":1267},[1153,2278,1347],{"class":1346},[1153,2280,1581],{"class":1350},[1153,2282,1355],{"class":1354},[1153,2284,1586],{"class":1166},[1153,2286,1336],{"class":1162},[1153,2288,1591],{"class":1166},[848,2290,1080,2291,1597],{},[896,2292,1596],{},[852,2294],{},[855,2296,1603],{"id":1602},[848,2298,1080,2299,1608,2301,1611,2303,1615,2305,1618,2307,1622,2309,1626],{},[896,2300,898],{},[896,2302,919],{},[896,2304,1614],{},[896,2306,1295],{},[896,2308,1621],{},[896,2310,1625],{},[848,2312,1629],{},[1631,2314,2315,2325],{},[1634,2316,2317,1638,2319,1641,2321,1615,2323,1646],{},[896,2318,1614],{},[896,2320,1099],{},[896,2322,898],{},[896,2324,919],{},[1634,2326,2327,1652,2329,1656,2331,1660],{},[896,2328,1651],{},[896,2330,1655],{},[896,2332,1659],{},[852,2334],{},[855,2336,1666],{"id":1665},[848,2338,2339,1672,2341,1676,2343,1106,2345,1106,2347,1106,2349,1119,2351,1691,2353,1695,2355,1698,2357,1702],{},[896,2340,1671],{},[896,2342,1675],{},[896,2344,1614],{},[896,2346,1681],{},[896,2348,1684],{},[896,2350,1687],{},[896,2352,1690],{},[896,2354,1694],{},[896,2356,1131],{},[896,2358,1701],{},[1704,2360,1706],{},{"title":1149,"searchDepth":1190,"depth":1190,"links":2362},[2363,2364,2365,2366,2367],{"id":857,"depth":1190,"text":858},{"id":1128,"depth":1190,"text":1131},{"id":1301,"depth":1190,"text":1302},{"id":1602,"depth":1190,"text":1603},{"id":1665,"depth":1190,"text":1666},{},{"title":112,"description":1714},1780436291262]