[{"data":1,"prerenderedAt":3348},["ShallowReactive",2],{"docs-nav":3,"doc-\u002Fdocs\u002Fdeployment":79,"content-query-rOrBwyaJ4b":1861},[4,10,15,19,23,28,34,38,43,47,52,57,61,66,70,74],{"_path":5,"title":6,"description":7,"order":8,"category":9},"\u002Fdocs\u002Fapi-reference","API Reference","Overview of the Vaultaris REST API — endpoints, authentication, response conventions, and rate limiting.",1,"Reference",{"_path":11,"title":12,"description":13,"order":14,"category":9},"\u002Fdocs\u002Farchitecture","Architecture","System design overview — components, request lifecycle, background workers, and data flow in Vaultaris.",4,{"_path":16,"title":17,"description":18,"order":8,"category":17},"\u002Fdocs\u002Fconcepts","Core Concepts","Understand the building blocks of Vaultaris — tenants, users, roles, groups, applications, sessions, and the security primitives that connect them.",{"_path":20,"title":21,"description":22,"order":8,"category":21},"\u002Fdocs\u002Fconfiguration","Configuration","Complete reference for all Vaultaris environment variables.",{"_path":24,"title":25,"description":26,"order":8,"category":27},"\u002Fdocs\u002Fdeployment","Deployment Guide","Deploy Vaultaris to production using Docker Compose, bare metal, or a managed container platform.","Deployment",{"_path":29,"title":30,"description":31,"order":32,"category":33},"\u002Fdocs\u002Finstallation","Installation","Install Vaultaris using Docker, a pre-built binary, or by compiling from source.",3,"Getting Started",{"_path":35,"title":36,"description":37,"order":8,"category":33},"\u002Fdocs\u002Fintroduction","Introduction","Vaultaris is an open-source, enterprise-grade Identity and Access Management platform written in Rust — a self-hostable alternative to Keycloak and Auth0.",{"_path":39,"title":40,"description":41,"order":42,"category":27},"\u002Fdocs\u002Fkubernetes","Kubernetes","Deploy Vaultaris on Kubernetes using the official Helm chart or plain manifests.",2,{"_path":44,"title":45,"description":46,"order":42,"category":17},"\u002Fdocs\u002Fmulti-tenancy","Multi-Tenancy","How Vaultaris isolates organizations, supports SaaS use cases, and manages license-driven resource freezing.",{"_path":48,"title":49,"description":50,"order":8,"category":51},"\u002Fdocs\u002Foauth-oidc","OAuth 2.0 & OpenID Connect","How to integrate Vaultaris as an authorization server — authorization code, client credentials, password flows, DPoP sender-constrained tokens, and hosted login.","Authentication & Authorization",{"_path":53,"title":54,"description":55,"order":8,"category":56},"\u002Fdocs\u002Fplugins","Plugin Development","Extend Vaultaris with type-safe native Rust plugins.","Plugins",{"_path":58,"title":59,"description":60,"order":42,"category":33},"\u002Fdocs\u002Fquickstart","Quickstart","Run Vaultaris locally in under five minutes using Docker Compose.",{"_path":62,"title":63,"description":64,"order":42,"category":65},"\u002Fdocs\u002Fsdk-nodejs","Node.js SDK","Use the vaultaris-sdk package to integrate Vaultaris into your Node.js or TypeScript applications. Includes transparent DPoP support.","SDKs",{"_path":67,"title":68,"description":69,"order":8,"category":65},"\u002Fdocs\u002Fsdk-rust","Rust SDK","Use the vaultaris-sdk crate to interact with Vaultaris from your Rust applications. Includes transparent DPoP support.",{"_path":71,"title":72,"description":73,"order":32,"category":9},"\u002Fdocs\u002Fsecurity","Security","Security architecture, cryptographic choices, and hardening recommendations for Vaultaris.",{"_path":75,"title":76,"description":77,"order":78,"category":51},"\u002Fdocs\u002Fwebauthn","WebAuthn \u002F Passkeys \u002F FIDO2","Complete guide to integrating WebAuthn passwordless authentication and passkeys with Vaultaris.",5,{"_path":24,"_dir":80,"_draft":81,"_partial":81,"_locale":82,"title":25,"description":26,"order":8,"category":27,"body":83,"_type":1855,"_id":1856,"_source":1857,"_file":1858,"_stem":1859,"_extension":1860},"docs",false,"",{"type":84,"children":85,"toc":1844},"root",[86,95,101,254,260,1001,1014,1204,1209,1239,1245,1286,1291,1297,1423,1429,1453,1482,1494,1499,1512,1518,1638,1652,1658,1663,1714,1719,1725,1806,1811,1838],{"type":87,"tag":88,"props":89,"children":91},"element","h2",{"id":90},"production-checklist",[92],{"type":93,"value":94},"text","Production checklist",{"type":87,"tag":96,"props":97,"children":98},"p",{},[99],{"type":93,"value":100},"Before going live:",{"type":87,"tag":102,"props":103,"children":106},"ul",{"className":104},[105],"contains-task-list",[107,138,160,177,186,203,212,221,237],{"type":87,"tag":108,"props":109,"children":112},"li",{"className":110},[111],"task-list-item",[113,119,121,128,130,136],{"type":87,"tag":114,"props":115,"children":118},"input",{"disabled":116,"type":117},true,"checkbox",[],{"type":93,"value":120}," Set a strong, random ",{"type":87,"tag":122,"props":123,"children":125},"code",{"className":124},[],[126],{"type":93,"value":127},"JWT_SECRET",{"type":93,"value":129}," (",{"type":87,"tag":122,"props":131,"children":133},{"className":132},[],[134],{"type":93,"value":135},"openssl rand -hex 32",{"type":93,"value":137},")",{"type":87,"tag":108,"props":139,"children":141},{"className":140},[111],[142,145,146,152,153,159],{"type":87,"tag":114,"props":143,"children":144},{"disabled":116,"type":117},[],{"type":93,"value":120},{"type":87,"tag":122,"props":147,"children":149},{"className":148},[],[150],{"type":93,"value":151},"ENCRYPTION_KEY",{"type":93,"value":129},{"type":87,"tag":122,"props":154,"children":156},{"className":155},[],[157],{"type":93,"value":158},"openssl rand -hex 16",{"type":93,"value":137},{"type":87,"tag":108,"props":161,"children":163},{"className":162},[111],[164,167,169,175],{"type":87,"tag":114,"props":165,"children":166},{"disabled":116,"type":117},[],{"type":93,"value":168}," Set ",{"type":87,"tag":122,"props":170,"children":172},{"className":171},[],[173],{"type":93,"value":174},"EXTERNAL_URL",{"type":93,"value":176}," to your public HTTPS domain",{"type":87,"tag":108,"props":178,"children":180},{"className":179},[111],[181,184],{"type":87,"tag":114,"props":182,"children":183},{"disabled":116,"type":117},[],{"type":93,"value":185}," Configure SMTP for transactional email",{"type":87,"tag":108,"props":187,"children":189},{"className":188},[111],[190,193,195,201],{"type":87,"tag":114,"props":191,"children":192},{"disabled":116,"type":117},[],{"type":93,"value":194}," Enable Redis (",{"type":87,"tag":122,"props":196,"children":198},{"className":197},[],[199],{"type":93,"value":200},"REDIS_URL",{"type":93,"value":202},") for distributed rate limiting if running multiple nodes",{"type":87,"tag":108,"props":204,"children":206},{"className":205},[111],[207,210],{"type":87,"tag":114,"props":208,"children":209},{"disabled":116,"type":117},[],{"type":93,"value":211}," Set up TLS termination (nginx, Caddy, or a load balancer)",{"type":87,"tag":108,"props":213,"children":215},{"className":214},[111],[216,219],{"type":87,"tag":114,"props":217,"children":218},{"disabled":116,"type":117},[],{"type":93,"value":220}," Configure backups for PostgreSQL",{"type":87,"tag":108,"props":222,"children":224},{"className":223},[111],[225,228,229,235],{"type":87,"tag":114,"props":226,"children":227},{"disabled":116,"type":117},[],{"type":93,"value":168},{"type":87,"tag":122,"props":230,"children":232},{"className":231},[],[233],{"type":93,"value":234},"RUST_LOG=info",{"type":93,"value":236}," (not debug) in production",{"type":87,"tag":108,"props":238,"children":240},{"className":239},[111],[241,244,246,252],{"type":87,"tag":114,"props":242,"children":243},{"disabled":116,"type":117},[],{"type":93,"value":245}," Optionally set ",{"type":87,"tag":122,"props":247,"children":249},{"className":248},[],[250],{"type":93,"value":251},"GEOIP_DATABASE_PATH",{"type":93,"value":253}," for offline IP geolocation",{"type":87,"tag":88,"props":255,"children":257},{"id":256},"docker-compose-single-node",[258],{"type":93,"value":259},"Docker Compose (single node)",{"type":87,"tag":261,"props":262,"children":266},"pre",{"className":263,"code":264,"language":265,"meta":82,"style":82},"language-yaml shiki shiki-themes github-dark-dimmed github-light","# docker-compose.yml\nversion: \"3.9\"\n\nservices:\n  postgres:\n    image: postgres:16-alpine\n    environment:\n      POSTGRES_DB: vaultaris\n      POSTGRES_USER: vaultaris\n      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}\n    volumes:\n      - postgres-data:\u002Fvar\u002Flib\u002Fpostgresql\u002Fdata\n    healthcheck:\n      test: [\"CMD\", \"pg_isready\", \"-U\", \"vaultaris\"]\n      interval: 5s\n      retries: 10\n\n  redis:\n    image: redis:7-alpine\n    command: redis-server --requirepass ${REDIS_PASSWORD}\n    volumes:\n      - redis-data:\u002Fdata\n\n  vaultaris:\n    image: ghcr.io\u002Frustlanges\u002Fvaultaris:latest\n    depends_on:\n      postgres:\n        condition: service_healthy\n    ports:\n      - \"8080:8080\"\n    environment:\n      DATABASE_URL: postgres:\u002F\u002Fvaultaris:${POSTGRES_PASSWORD}@postgres:5432\u002Fvaultaris\n      REDIS_URL: redis:\u002F\u002F:${REDIS_PASSWORD}@redis:6379\n      JWT_SECRET: ${JWT_SECRET}\n      ENCRYPTION_KEY: ${ENCRYPTION_KEY}\n      EXTERNAL_URL: ${EXTERNAL_URL}\n      EMAIL_ENABLED: \"true\"\n      SMTP_HOST: ${SMTP_HOST}\n      SMTP_USERNAME: ${SMTP_USERNAME}\n      SMTP_PASSWORD: ${SMTP_PASSWORD}\n      GEOIP_DATABASE_PATH: \u002Fdata\u002FGeoLite2-Country.mmdb\n    volumes:\n      - .\u002FGeoLite2-Country.mmdb:\u002Fdata\u002FGeoLite2-Country.mmdb:ro\n\nvolumes:\n  postgres-data:\n  redis-data:\n","yaml",[267],{"type":87,"tag":122,"props":268,"children":269},{"__ignoreMap":82},[270,281,302,310,323,335,353,366,384,401,419,432,446,459,511,529,548,556,569,586,604,616,629,637,650,667,680,693,711,724,737,749,767,785,803,821,839,857,875,893,911,929,941,954,962,975,988],{"type":87,"tag":271,"props":272,"children":274},"span",{"class":273,"line":8},"line",[275],{"type":87,"tag":271,"props":276,"children":278},{"style":277},"--shiki-default:#768390;--shiki-light:#6A737D",[279],{"type":93,"value":280},"# docker-compose.yml\n",{"type":87,"tag":271,"props":282,"children":283},{"class":273,"line":42},[284,290,296],{"type":87,"tag":271,"props":285,"children":287},{"style":286},"--shiki-default:#8DDB8C;--shiki-light:#22863A",[288],{"type":93,"value":289},"version",{"type":87,"tag":271,"props":291,"children":293},{"style":292},"--shiki-default:#ADBAC7;--shiki-light:#24292E",[294],{"type":93,"value":295},": ",{"type":87,"tag":271,"props":297,"children":299},{"style":298},"--shiki-default:#96D0FF;--shiki-light:#032F62",[300],{"type":93,"value":301},"\"3.9\"\n",{"type":87,"tag":271,"props":303,"children":304},{"class":273,"line":32},[305],{"type":87,"tag":271,"props":306,"children":307},{"emptyLinePlaceholder":116},[308],{"type":93,"value":309},"\n",{"type":87,"tag":271,"props":311,"children":312},{"class":273,"line":14},[313,318],{"type":87,"tag":271,"props":314,"children":315},{"style":286},[316],{"type":93,"value":317},"services",{"type":87,"tag":271,"props":319,"children":320},{"style":292},[321],{"type":93,"value":322},":\n",{"type":87,"tag":271,"props":324,"children":325},{"class":273,"line":78},[326,331],{"type":87,"tag":271,"props":327,"children":328},{"style":286},[329],{"type":93,"value":330},"  postgres",{"type":87,"tag":271,"props":332,"children":333},{"style":292},[334],{"type":93,"value":322},{"type":87,"tag":271,"props":336,"children":338},{"class":273,"line":337},6,[339,344,348],{"type":87,"tag":271,"props":340,"children":341},{"style":286},[342],{"type":93,"value":343},"    image",{"type":87,"tag":271,"props":345,"children":346},{"style":292},[347],{"type":93,"value":295},{"type":87,"tag":271,"props":349,"children":350},{"style":298},[351],{"type":93,"value":352},"postgres:16-alpine\n",{"type":87,"tag":271,"props":354,"children":356},{"class":273,"line":355},7,[357,362],{"type":87,"tag":271,"props":358,"children":359},{"style":286},[360],{"type":93,"value":361},"    environment",{"type":87,"tag":271,"props":363,"children":364},{"style":292},[365],{"type":93,"value":322},{"type":87,"tag":271,"props":367,"children":369},{"class":273,"line":368},8,[370,375,379],{"type":87,"tag":271,"props":371,"children":372},{"style":286},[373],{"type":93,"value":374},"      POSTGRES_DB",{"type":87,"tag":271,"props":376,"children":377},{"style":292},[378],{"type":93,"value":295},{"type":87,"tag":271,"props":380,"children":381},{"style":298},[382],{"type":93,"value":383},"vaultaris\n",{"type":87,"tag":271,"props":385,"children":387},{"class":273,"line":386},9,[388,393,397],{"type":87,"tag":271,"props":389,"children":390},{"style":286},[391],{"type":93,"value":392},"      POSTGRES_USER",{"type":87,"tag":271,"props":394,"children":395},{"style":292},[396],{"type":93,"value":295},{"type":87,"tag":271,"props":398,"children":399},{"style":298},[400],{"type":93,"value":383},{"type":87,"tag":271,"props":402,"children":404},{"class":273,"line":403},10,[405,410,414],{"type":87,"tag":271,"props":406,"children":407},{"style":286},[408],{"type":93,"value":409},"      POSTGRES_PASSWORD",{"type":87,"tag":271,"props":411,"children":412},{"style":292},[413],{"type":93,"value":295},{"type":87,"tag":271,"props":415,"children":416},{"style":298},[417],{"type":93,"value":418},"${POSTGRES_PASSWORD}\n",{"type":87,"tag":271,"props":420,"children":422},{"class":273,"line":421},11,[423,428],{"type":87,"tag":271,"props":424,"children":425},{"style":286},[426],{"type":93,"value":427},"    volumes",{"type":87,"tag":271,"props":429,"children":430},{"style":292},[431],{"type":93,"value":322},{"type":87,"tag":271,"props":433,"children":435},{"class":273,"line":434},12,[436,441],{"type":87,"tag":271,"props":437,"children":438},{"style":292},[439],{"type":93,"value":440},"      - ",{"type":87,"tag":271,"props":442,"children":443},{"style":298},[444],{"type":93,"value":445},"postgres-data:\u002Fvar\u002Flib\u002Fpostgresql\u002Fdata\n",{"type":87,"tag":271,"props":447,"children":449},{"class":273,"line":448},13,[450,455],{"type":87,"tag":271,"props":451,"children":452},{"style":286},[453],{"type":93,"value":454},"    healthcheck",{"type":87,"tag":271,"props":456,"children":457},{"style":292},[458],{"type":93,"value":322},{"type":87,"tag":271,"props":460,"children":462},{"class":273,"line":461},14,[463,468,473,478,483,488,492,497,501,506],{"type":87,"tag":271,"props":464,"children":465},{"style":286},[466],{"type":93,"value":467},"      test",{"type":87,"tag":271,"props":469,"children":470},{"style":292},[471],{"type":93,"value":472},": [",{"type":87,"tag":271,"props":474,"children":475},{"style":298},[476],{"type":93,"value":477},"\"CMD\"",{"type":87,"tag":271,"props":479,"children":480},{"style":292},[481],{"type":93,"value":482},", ",{"type":87,"tag":271,"props":484,"children":485},{"style":298},[486],{"type":93,"value":487},"\"pg_isready\"",{"type":87,"tag":271,"props":489,"children":490},{"style":292},[491],{"type":93,"value":482},{"type":87,"tag":271,"props":493,"children":494},{"style":298},[495],{"type":93,"value":496},"\"-U\"",{"type":87,"tag":271,"props":498,"children":499},{"style":292},[500],{"type":93,"value":482},{"type":87,"tag":271,"props":502,"children":503},{"style":298},[504],{"type":93,"value":505},"\"vaultaris\"",{"type":87,"tag":271,"props":507,"children":508},{"style":292},[509],{"type":93,"value":510},"]\n",{"type":87,"tag":271,"props":512,"children":514},{"class":273,"line":513},15,[515,520,524],{"type":87,"tag":271,"props":516,"children":517},{"style":286},[518],{"type":93,"value":519},"      interval",{"type":87,"tag":271,"props":521,"children":522},{"style":292},[523],{"type":93,"value":295},{"type":87,"tag":271,"props":525,"children":526},{"style":298},[527],{"type":93,"value":528},"5s\n",{"type":87,"tag":271,"props":530,"children":532},{"class":273,"line":531},16,[533,538,542],{"type":87,"tag":271,"props":534,"children":535},{"style":286},[536],{"type":93,"value":537},"      retries",{"type":87,"tag":271,"props":539,"children":540},{"style":292},[541],{"type":93,"value":295},{"type":87,"tag":271,"props":543,"children":545},{"style":544},"--shiki-default:#6CB6FF;--shiki-light:#005CC5",[546],{"type":93,"value":547},"10\n",{"type":87,"tag":271,"props":549,"children":551},{"class":273,"line":550},17,[552],{"type":87,"tag":271,"props":553,"children":554},{"emptyLinePlaceholder":116},[555],{"type":93,"value":309},{"type":87,"tag":271,"props":557,"children":559},{"class":273,"line":558},18,[560,565],{"type":87,"tag":271,"props":561,"children":562},{"style":286},[563],{"type":93,"value":564},"  redis",{"type":87,"tag":271,"props":566,"children":567},{"style":292},[568],{"type":93,"value":322},{"type":87,"tag":271,"props":570,"children":572},{"class":273,"line":571},19,[573,577,581],{"type":87,"tag":271,"props":574,"children":575},{"style":286},[576],{"type":93,"value":343},{"type":87,"tag":271,"props":578,"children":579},{"style":292},[580],{"type":93,"value":295},{"type":87,"tag":271,"props":582,"children":583},{"style":298},[584],{"type":93,"value":585},"redis:7-alpine\n",{"type":87,"tag":271,"props":587,"children":589},{"class":273,"line":588},20,[590,595,599],{"type":87,"tag":271,"props":591,"children":592},{"style":286},[593],{"type":93,"value":594},"    command",{"type":87,"tag":271,"props":596,"children":597},{"style":292},[598],{"type":93,"value":295},{"type":87,"tag":271,"props":600,"children":601},{"style":298},[602],{"type":93,"value":603},"redis-server --requirepass ${REDIS_PASSWORD}\n",{"type":87,"tag":271,"props":605,"children":607},{"class":273,"line":606},21,[608,612],{"type":87,"tag":271,"props":609,"children":610},{"style":286},[611],{"type":93,"value":427},{"type":87,"tag":271,"props":613,"children":614},{"style":292},[615],{"type":93,"value":322},{"type":87,"tag":271,"props":617,"children":619},{"class":273,"line":618},22,[620,624],{"type":87,"tag":271,"props":621,"children":622},{"style":292},[623],{"type":93,"value":440},{"type":87,"tag":271,"props":625,"children":626},{"style":298},[627],{"type":93,"value":628},"redis-data:\u002Fdata\n",{"type":87,"tag":271,"props":630,"children":632},{"class":273,"line":631},23,[633],{"type":87,"tag":271,"props":634,"children":635},{"emptyLinePlaceholder":116},[636],{"type":93,"value":309},{"type":87,"tag":271,"props":638,"children":640},{"class":273,"line":639},24,[641,646],{"type":87,"tag":271,"props":642,"children":643},{"style":286},[644],{"type":93,"value":645},"  vaultaris",{"type":87,"tag":271,"props":647,"children":648},{"style":292},[649],{"type":93,"value":322},{"type":87,"tag":271,"props":651,"children":653},{"class":273,"line":652},25,[654,658,662],{"type":87,"tag":271,"props":655,"children":656},{"style":286},[657],{"type":93,"value":343},{"type":87,"tag":271,"props":659,"children":660},{"style":292},[661],{"type":93,"value":295},{"type":87,"tag":271,"props":663,"children":664},{"style":298},[665],{"type":93,"value":666},"ghcr.io\u002Frustlanges\u002Fvaultaris:latest\n",{"type":87,"tag":271,"props":668,"children":670},{"class":273,"line":669},26,[671,676],{"type":87,"tag":271,"props":672,"children":673},{"style":286},[674],{"type":93,"value":675},"    depends_on",{"type":87,"tag":271,"props":677,"children":678},{"style":292},[679],{"type":93,"value":322},{"type":87,"tag":271,"props":681,"children":683},{"class":273,"line":682},27,[684,689],{"type":87,"tag":271,"props":685,"children":686},{"style":286},[687],{"type":93,"value":688},"      postgres",{"type":87,"tag":271,"props":690,"children":691},{"style":292},[692],{"type":93,"value":322},{"type":87,"tag":271,"props":694,"children":696},{"class":273,"line":695},28,[697,702,706],{"type":87,"tag":271,"props":698,"children":699},{"style":286},[700],{"type":93,"value":701},"        condition",{"type":87,"tag":271,"props":703,"children":704},{"style":292},[705],{"type":93,"value":295},{"type":87,"tag":271,"props":707,"children":708},{"style":298},[709],{"type":93,"value":710},"service_healthy\n",{"type":87,"tag":271,"props":712,"children":714},{"class":273,"line":713},29,[715,720],{"type":87,"tag":271,"props":716,"children":717},{"style":286},[718],{"type":93,"value":719},"    ports",{"type":87,"tag":271,"props":721,"children":722},{"style":292},[723],{"type":93,"value":322},{"type":87,"tag":271,"props":725,"children":727},{"class":273,"line":726},30,[728,732],{"type":87,"tag":271,"props":729,"children":730},{"style":292},[731],{"type":93,"value":440},{"type":87,"tag":271,"props":733,"children":734},{"style":298},[735],{"type":93,"value":736},"\"8080:8080\"\n",{"type":87,"tag":271,"props":738,"children":740},{"class":273,"line":739},31,[741,745],{"type":87,"tag":271,"props":742,"children":743},{"style":286},[744],{"type":93,"value":361},{"type":87,"tag":271,"props":746,"children":747},{"style":292},[748],{"type":93,"value":322},{"type":87,"tag":271,"props":750,"children":752},{"class":273,"line":751},32,[753,758,762],{"type":87,"tag":271,"props":754,"children":755},{"style":286},[756],{"type":93,"value":757},"      DATABASE_URL",{"type":87,"tag":271,"props":759,"children":760},{"style":292},[761],{"type":93,"value":295},{"type":87,"tag":271,"props":763,"children":764},{"style":298},[765],{"type":93,"value":766},"postgres:\u002F\u002Fvaultaris:${POSTGRES_PASSWORD}@postgres:5432\u002Fvaultaris\n",{"type":87,"tag":271,"props":768,"children":770},{"class":273,"line":769},33,[771,776,780],{"type":87,"tag":271,"props":772,"children":773},{"style":286},[774],{"type":93,"value":775},"      REDIS_URL",{"type":87,"tag":271,"props":777,"children":778},{"style":292},[779],{"type":93,"value":295},{"type":87,"tag":271,"props":781,"children":782},{"style":298},[783],{"type":93,"value":784},"redis:\u002F\u002F:${REDIS_PASSWORD}@redis:6379\n",{"type":87,"tag":271,"props":786,"children":788},{"class":273,"line":787},34,[789,794,798],{"type":87,"tag":271,"props":790,"children":791},{"style":286},[792],{"type":93,"value":793},"      JWT_SECRET",{"type":87,"tag":271,"props":795,"children":796},{"style":292},[797],{"type":93,"value":295},{"type":87,"tag":271,"props":799,"children":800},{"style":298},[801],{"type":93,"value":802},"${JWT_SECRET}\n",{"type":87,"tag":271,"props":804,"children":806},{"class":273,"line":805},35,[807,812,816],{"type":87,"tag":271,"props":808,"children":809},{"style":286},[810],{"type":93,"value":811},"      ENCRYPTION_KEY",{"type":87,"tag":271,"props":813,"children":814},{"style":292},[815],{"type":93,"value":295},{"type":87,"tag":271,"props":817,"children":818},{"style":298},[819],{"type":93,"value":820},"${ENCRYPTION_KEY}\n",{"type":87,"tag":271,"props":822,"children":824},{"class":273,"line":823},36,[825,830,834],{"type":87,"tag":271,"props":826,"children":827},{"style":286},[828],{"type":93,"value":829},"      EXTERNAL_URL",{"type":87,"tag":271,"props":831,"children":832},{"style":292},[833],{"type":93,"value":295},{"type":87,"tag":271,"props":835,"children":836},{"style":298},[837],{"type":93,"value":838},"${EXTERNAL_URL}\n",{"type":87,"tag":271,"props":840,"children":842},{"class":273,"line":841},37,[843,848,852],{"type":87,"tag":271,"props":844,"children":845},{"style":286},[846],{"type":93,"value":847},"      EMAIL_ENABLED",{"type":87,"tag":271,"props":849,"children":850},{"style":292},[851],{"type":93,"value":295},{"type":87,"tag":271,"props":853,"children":854},{"style":298},[855],{"type":93,"value":856},"\"true\"\n",{"type":87,"tag":271,"props":858,"children":860},{"class":273,"line":859},38,[861,866,870],{"type":87,"tag":271,"props":862,"children":863},{"style":286},[864],{"type":93,"value":865},"      SMTP_HOST",{"type":87,"tag":271,"props":867,"children":868},{"style":292},[869],{"type":93,"value":295},{"type":87,"tag":271,"props":871,"children":872},{"style":298},[873],{"type":93,"value":874},"${SMTP_HOST}\n",{"type":87,"tag":271,"props":876,"children":878},{"class":273,"line":877},39,[879,884,888],{"type":87,"tag":271,"props":880,"children":881},{"style":286},[882],{"type":93,"value":883},"      SMTP_USERNAME",{"type":87,"tag":271,"props":885,"children":886},{"style":292},[887],{"type":93,"value":295},{"type":87,"tag":271,"props":889,"children":890},{"style":298},[891],{"type":93,"value":892},"${SMTP_USERNAME}\n",{"type":87,"tag":271,"props":894,"children":896},{"class":273,"line":895},40,[897,902,906],{"type":87,"tag":271,"props":898,"children":899},{"style":286},[900],{"type":93,"value":901},"      SMTP_PASSWORD",{"type":87,"tag":271,"props":903,"children":904},{"style":292},[905],{"type":93,"value":295},{"type":87,"tag":271,"props":907,"children":908},{"style":298},[909],{"type":93,"value":910},"${SMTP_PASSWORD}\n",{"type":87,"tag":271,"props":912,"children":914},{"class":273,"line":913},41,[915,920,924],{"type":87,"tag":271,"props":916,"children":917},{"style":286},[918],{"type":93,"value":919},"      GEOIP_DATABASE_PATH",{"type":87,"tag":271,"props":921,"children":922},{"style":292},[923],{"type":93,"value":295},{"type":87,"tag":271,"props":925,"children":926},{"style":298},[927],{"type":93,"value":928},"\u002Fdata\u002FGeoLite2-Country.mmdb\n",{"type":87,"tag":271,"props":930,"children":932},{"class":273,"line":931},42,[933,937],{"type":87,"tag":271,"props":934,"children":935},{"style":286},[936],{"type":93,"value":427},{"type":87,"tag":271,"props":938,"children":939},{"style":292},[940],{"type":93,"value":322},{"type":87,"tag":271,"props":942,"children":944},{"class":273,"line":943},43,[945,949],{"type":87,"tag":271,"props":946,"children":947},{"style":292},[948],{"type":93,"value":440},{"type":87,"tag":271,"props":950,"children":951},{"style":298},[952],{"type":93,"value":953},".\u002FGeoLite2-Country.mmdb:\u002Fdata\u002FGeoLite2-Country.mmdb:ro\n",{"type":87,"tag":271,"props":955,"children":957},{"class":273,"line":956},44,[958],{"type":87,"tag":271,"props":959,"children":960},{"emptyLinePlaceholder":116},[961],{"type":93,"value":309},{"type":87,"tag":271,"props":963,"children":965},{"class":273,"line":964},45,[966,971],{"type":87,"tag":271,"props":967,"children":968},{"style":286},[969],{"type":93,"value":970},"volumes",{"type":87,"tag":271,"props":972,"children":973},{"style":292},[974],{"type":93,"value":322},{"type":87,"tag":271,"props":976,"children":978},{"class":273,"line":977},46,[979,984],{"type":87,"tag":271,"props":980,"children":981},{"style":286},[982],{"type":93,"value":983},"  postgres-data",{"type":87,"tag":271,"props":985,"children":986},{"style":292},[987],{"type":93,"value":322},{"type":87,"tag":271,"props":989,"children":991},{"class":273,"line":990},47,[992,997],{"type":87,"tag":271,"props":993,"children":994},{"style":286},[995],{"type":93,"value":996},"  redis-data",{"type":87,"tag":271,"props":998,"children":999},{"style":292},[1000],{"type":93,"value":322},{"type":87,"tag":96,"props":1002,"children":1003},{},[1004,1006,1012],{"type":93,"value":1005},"Create a ",{"type":87,"tag":122,"props":1007,"children":1009},{"className":1008},[],[1010],{"type":93,"value":1011},".env",{"type":93,"value":1013}," file:",{"type":87,"tag":261,"props":1015,"children":1019},{"className":1016,"code":1017,"language":1018,"meta":82,"style":82},"language-bash shiki shiki-themes github-dark-dimmed github-light","POSTGRES_PASSWORD=strong-db-password\nREDIS_PASSWORD=strong-redis-password\nJWT_SECRET=$(openssl rand -hex 32)\nENCRYPTION_KEY=$(openssl rand -hex 16)\nEXTERNAL_URL=https:\u002F\u002Fauth.example.com\nSMTP_HOST=smtp.sendgrid.net\nSMTP_USERNAME=apikey\nSMTP_PASSWORD=SG.xxxxxxxxxx\n","bash",[1020],{"type":87,"tag":122,"props":1021,"children":1022},{"__ignoreMap":82},[1023,1042,1059,1101,1137,1153,1170,1187],{"type":87,"tag":271,"props":1024,"children":1025},{"class":273,"line":8},[1026,1031,1037],{"type":87,"tag":271,"props":1027,"children":1028},{"style":292},[1029],{"type":93,"value":1030},"POSTGRES_PASSWORD",{"type":87,"tag":271,"props":1032,"children":1034},{"style":1033},"--shiki-default:#F47067;--shiki-light:#D73A49",[1035],{"type":93,"value":1036},"=",{"type":87,"tag":271,"props":1038,"children":1039},{"style":298},[1040],{"type":93,"value":1041},"strong-db-password\n",{"type":87,"tag":271,"props":1043,"children":1044},{"class":273,"line":42},[1045,1050,1054],{"type":87,"tag":271,"props":1046,"children":1047},{"style":292},[1048],{"type":93,"value":1049},"REDIS_PASSWORD",{"type":87,"tag":271,"props":1051,"children":1052},{"style":1033},[1053],{"type":93,"value":1036},{"type":87,"tag":271,"props":1055,"children":1056},{"style":298},[1057],{"type":93,"value":1058},"strong-redis-password\n",{"type":87,"tag":271,"props":1060,"children":1061},{"class":273,"line":32},[1062,1066,1070,1075,1081,1086,1091,1096],{"type":87,"tag":271,"props":1063,"children":1064},{"style":292},[1065],{"type":93,"value":127},{"type":87,"tag":271,"props":1067,"children":1068},{"style":1033},[1069],{"type":93,"value":1036},{"type":87,"tag":271,"props":1071,"children":1072},{"style":292},[1073],{"type":93,"value":1074},"$(",{"type":87,"tag":271,"props":1076,"children":1078},{"style":1077},"--shiki-default:#F69D50;--shiki-light:#6F42C1",[1079],{"type":93,"value":1080},"openssl",{"type":87,"tag":271,"props":1082,"children":1083},{"style":298},[1084],{"type":93,"value":1085}," rand",{"type":87,"tag":271,"props":1087,"children":1088},{"style":544},[1089],{"type":93,"value":1090}," -hex",{"type":87,"tag":271,"props":1092,"children":1093},{"style":544},[1094],{"type":93,"value":1095}," 32",{"type":87,"tag":271,"props":1097,"children":1098},{"style":292},[1099],{"type":93,"value":1100},")\n",{"type":87,"tag":271,"props":1102,"children":1103},{"class":273,"line":14},[1104,1108,1112,1116,1120,1124,1128,1133],{"type":87,"tag":271,"props":1105,"children":1106},{"style":292},[1107],{"type":93,"value":151},{"type":87,"tag":271,"props":1109,"children":1110},{"style":1033},[1111],{"type":93,"value":1036},{"type":87,"tag":271,"props":1113,"children":1114},{"style":292},[1115],{"type":93,"value":1074},{"type":87,"tag":271,"props":1117,"children":1118},{"style":1077},[1119],{"type":93,"value":1080},{"type":87,"tag":271,"props":1121,"children":1122},{"style":298},[1123],{"type":93,"value":1085},{"type":87,"tag":271,"props":1125,"children":1126},{"style":544},[1127],{"type":93,"value":1090},{"type":87,"tag":271,"props":1129,"children":1130},{"style":544},[1131],{"type":93,"value":1132}," 16",{"type":87,"tag":271,"props":1134,"children":1135},{"style":292},[1136],{"type":93,"value":1100},{"type":87,"tag":271,"props":1138,"children":1139},{"class":273,"line":78},[1140,1144,1148],{"type":87,"tag":271,"props":1141,"children":1142},{"style":292},[1143],{"type":93,"value":174},{"type":87,"tag":271,"props":1145,"children":1146},{"style":1033},[1147],{"type":93,"value":1036},{"type":87,"tag":271,"props":1149,"children":1150},{"style":298},[1151],{"type":93,"value":1152},"https:\u002F\u002Fauth.example.com\n",{"type":87,"tag":271,"props":1154,"children":1155},{"class":273,"line":337},[1156,1161,1165],{"type":87,"tag":271,"props":1157,"children":1158},{"style":292},[1159],{"type":93,"value":1160},"SMTP_HOST",{"type":87,"tag":271,"props":1162,"children":1163},{"style":1033},[1164],{"type":93,"value":1036},{"type":87,"tag":271,"props":1166,"children":1167},{"style":298},[1168],{"type":93,"value":1169},"smtp.sendgrid.net\n",{"type":87,"tag":271,"props":1171,"children":1172},{"class":273,"line":355},[1173,1178,1182],{"type":87,"tag":271,"props":1174,"children":1175},{"style":292},[1176],{"type":93,"value":1177},"SMTP_USERNAME",{"type":87,"tag":271,"props":1179,"children":1180},{"style":1033},[1181],{"type":93,"value":1036},{"type":87,"tag":271,"props":1183,"children":1184},{"style":298},[1185],{"type":93,"value":1186},"apikey\n",{"type":87,"tag":271,"props":1188,"children":1189},{"class":273,"line":368},[1190,1195,1199],{"type":87,"tag":271,"props":1191,"children":1192},{"style":292},[1193],{"type":93,"value":1194},"SMTP_PASSWORD",{"type":87,"tag":271,"props":1196,"children":1197},{"style":1033},[1198],{"type":93,"value":1036},{"type":87,"tag":271,"props":1200,"children":1201},{"style":298},[1202],{"type":93,"value":1203},"SG.xxxxxxxxxx\n",{"type":87,"tag":96,"props":1205,"children":1206},{},[1207],{"type":93,"value":1208},"Start:",{"type":87,"tag":261,"props":1210,"children":1212},{"className":1016,"code":1211,"language":1018,"meta":82,"style":82},"docker compose up -d\n",[1213],{"type":87,"tag":122,"props":1214,"children":1215},{"__ignoreMap":82},[1216],{"type":87,"tag":271,"props":1217,"children":1218},{"class":273,"line":8},[1219,1224,1229,1234],{"type":87,"tag":271,"props":1220,"children":1221},{"style":1077},[1222],{"type":93,"value":1223},"docker",{"type":87,"tag":271,"props":1225,"children":1226},{"style":298},[1227],{"type":93,"value":1228}," compose",{"type":87,"tag":271,"props":1230,"children":1231},{"style":298},[1232],{"type":93,"value":1233}," up",{"type":87,"tag":271,"props":1235,"children":1236},{"style":544},[1237],{"type":93,"value":1238}," -d\n",{"type":87,"tag":88,"props":1240,"children":1242},{"id":1241},"tls-with-caddy",[1243],{"type":93,"value":1244},"TLS with Caddy",{"type":87,"tag":261,"props":1246,"children":1250},{"className":1247,"code":1248,"language":1249,"meta":82,"style":82},"language-caddyfile shiki shiki-themes github-dark-dimmed github-light","# Caddyfile\nauth.example.com {\n  reverse_proxy localhost:8080\n}\n","caddyfile",[1251],{"type":87,"tag":122,"props":1252,"children":1253},{"__ignoreMap":82},[1254,1262,1270,1278],{"type":87,"tag":271,"props":1255,"children":1256},{"class":273,"line":8},[1257],{"type":87,"tag":271,"props":1258,"children":1259},{},[1260],{"type":93,"value":1261},"# Caddyfile\n",{"type":87,"tag":271,"props":1263,"children":1264},{"class":273,"line":42},[1265],{"type":87,"tag":271,"props":1266,"children":1267},{},[1268],{"type":93,"value":1269},"auth.example.com {\n",{"type":87,"tag":271,"props":1271,"children":1272},{"class":273,"line":32},[1273],{"type":87,"tag":271,"props":1274,"children":1275},{},[1276],{"type":93,"value":1277},"  reverse_proxy localhost:8080\n",{"type":87,"tag":271,"props":1279,"children":1280},{"class":273,"line":14},[1281],{"type":87,"tag":271,"props":1282,"children":1283},{},[1284],{"type":93,"value":1285},"}\n",{"type":87,"tag":96,"props":1287,"children":1288},{},[1289],{"type":93,"value":1290},"Caddy automatically obtains and renews Let's Encrypt certificates.",{"type":87,"tag":88,"props":1292,"children":1294},{"id":1293},"tls-with-nginx",[1295],{"type":93,"value":1296},"TLS with nginx",{"type":87,"tag":261,"props":1298,"children":1302},{"className":1299,"code":1300,"language":1301,"meta":82,"style":82},"language-nginx shiki shiki-themes github-dark-dimmed github-light","server {\n    listen 443 ssl;\n    server_name auth.example.com;\n\n    ssl_certificate     \u002Fetc\u002Fletsencrypt\u002Flive\u002Fauth.example.com\u002Ffullchain.pem;\n    ssl_certificate_key \u002Fetc\u002Fletsencrypt\u002Flive\u002Fauth.example.com\u002Fprivkey.pem;\n\n    location \u002F {\n        proxy_pass http:\u002F\u002Flocalhost:8080;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n    }\n}\n","nginx",[1303],{"type":87,"tag":122,"props":1304,"children":1305},{"__ignoreMap":82},[1306,1314,1322,1330,1337,1345,1353,1360,1368,1376,1384,1392,1400,1408,1416],{"type":87,"tag":271,"props":1307,"children":1308},{"class":273,"line":8},[1309],{"type":87,"tag":271,"props":1310,"children":1311},{},[1312],{"type":93,"value":1313},"server {\n",{"type":87,"tag":271,"props":1315,"children":1316},{"class":273,"line":42},[1317],{"type":87,"tag":271,"props":1318,"children":1319},{},[1320],{"type":93,"value":1321},"    listen 443 ssl;\n",{"type":87,"tag":271,"props":1323,"children":1324},{"class":273,"line":32},[1325],{"type":87,"tag":271,"props":1326,"children":1327},{},[1328],{"type":93,"value":1329},"    server_name auth.example.com;\n",{"type":87,"tag":271,"props":1331,"children":1332},{"class":273,"line":14},[1333],{"type":87,"tag":271,"props":1334,"children":1335},{"emptyLinePlaceholder":116},[1336],{"type":93,"value":309},{"type":87,"tag":271,"props":1338,"children":1339},{"class":273,"line":78},[1340],{"type":87,"tag":271,"props":1341,"children":1342},{},[1343],{"type":93,"value":1344},"    ssl_certificate     \u002Fetc\u002Fletsencrypt\u002Flive\u002Fauth.example.com\u002Ffullchain.pem;\n",{"type":87,"tag":271,"props":1346,"children":1347},{"class":273,"line":337},[1348],{"type":87,"tag":271,"props":1349,"children":1350},{},[1351],{"type":93,"value":1352},"    ssl_certificate_key \u002Fetc\u002Fletsencrypt\u002Flive\u002Fauth.example.com\u002Fprivkey.pem;\n",{"type":87,"tag":271,"props":1354,"children":1355},{"class":273,"line":355},[1356],{"type":87,"tag":271,"props":1357,"children":1358},{"emptyLinePlaceholder":116},[1359],{"type":93,"value":309},{"type":87,"tag":271,"props":1361,"children":1362},{"class":273,"line":368},[1363],{"type":87,"tag":271,"props":1364,"children":1365},{},[1366],{"type":93,"value":1367},"    location \u002F {\n",{"type":87,"tag":271,"props":1369,"children":1370},{"class":273,"line":386},[1371],{"type":87,"tag":271,"props":1372,"children":1373},{},[1374],{"type":93,"value":1375},"        proxy_pass http:\u002F\u002Flocalhost:8080;\n",{"type":87,"tag":271,"props":1377,"children":1378},{"class":273,"line":403},[1379],{"type":87,"tag":271,"props":1380,"children":1381},{},[1382],{"type":93,"value":1383},"        proxy_set_header Host $host;\n",{"type":87,"tag":271,"props":1385,"children":1386},{"class":273,"line":421},[1387],{"type":87,"tag":271,"props":1388,"children":1389},{},[1390],{"type":93,"value":1391},"        proxy_set_header X-Real-IP $remote_addr;\n",{"type":87,"tag":271,"props":1393,"children":1394},{"class":273,"line":434},[1395],{"type":87,"tag":271,"props":1396,"children":1397},{},[1398],{"type":93,"value":1399},"        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n",{"type":87,"tag":271,"props":1401,"children":1402},{"class":273,"line":448},[1403],{"type":87,"tag":271,"props":1404,"children":1405},{},[1406],{"type":93,"value":1407},"        proxy_set_header X-Forwarded-Proto $scheme;\n",{"type":87,"tag":271,"props":1409,"children":1410},{"class":273,"line":461},[1411],{"type":87,"tag":271,"props":1412,"children":1413},{},[1414],{"type":93,"value":1415},"    }\n",{"type":87,"tag":271,"props":1417,"children":1418},{"class":273,"line":513},[1419],{"type":87,"tag":271,"props":1420,"children":1421},{},[1422],{"type":93,"value":1285},{"type":87,"tag":88,"props":1424,"children":1426},{"id":1425},"multi-node-deployment",[1427],{"type":93,"value":1428},"Multi-node deployment",{"type":87,"tag":1430,"props":1431,"children":1432},"ol",{},[1433,1438,1443,1448],{"type":87,"tag":108,"props":1434,"children":1435},{},[1436],{"type":93,"value":1437},"Provision a shared PostgreSQL instance (or managed service like RDS, Cloud SQL)",{"type":87,"tag":108,"props":1439,"children":1440},{},[1441],{"type":93,"value":1442},"Provision a shared Redis instance (or managed service like ElastiCache, Upstash)",{"type":87,"tag":108,"props":1444,"children":1445},{},[1446],{"type":93,"value":1447},"Run identical Vaultaris containers across nodes, all pointing to the same DB and Redis",{"type":87,"tag":108,"props":1449,"children":1450},{},[1451],{"type":93,"value":1452},"Load-balance with nginx, HAProxy, or your cloud LB",{"type":87,"tag":96,"props":1454,"children":1455},{},[1456,1458,1464,1466,1472,1474,1480],{"type":93,"value":1457},"Each node gets a random ",{"type":87,"tag":122,"props":1459,"children":1461},{"className":1460},[],[1462],{"type":93,"value":1463},"node_id",{"type":93,"value":1465}," UUID at startup for log correlation. The ",{"type":87,"tag":122,"props":1467,"children":1469},{"className":1468},[],[1470],{"type":93,"value":1471},"X-Node-Id",{"type":93,"value":1473}," response header is emitted when ",{"type":87,"tag":122,"props":1475,"children":1477},{"className":1476},[],[1478],{"type":93,"value":1479},"NODE_ID_IN_HEADERS=true",{"type":93,"value":1481},".",{"type":87,"tag":96,"props":1483,"children":1484},{},[1485,1487,1493],{"type":93,"value":1486},"Database pool sizing: ",{"type":87,"tag":122,"props":1488,"children":1490},{"className":1489},[],[1491],{"type":93,"value":1492},"nodes × DATABASE_MAX_CONNECTIONS ≤ postgres max_connections",{"type":93,"value":1481},{"type":87,"tag":88,"props":1495,"children":1497},{"id":1496},"kubernetes",[1498],{"type":93,"value":40},{"type":87,"tag":96,"props":1500,"children":1501},{},[1502,1504,1510],{"type":93,"value":1503},"See the ",{"type":87,"tag":1505,"props":1506,"children":1507},"a",{"href":39},[1508],{"type":93,"value":1509},"Kubernetes guide",{"type":93,"value":1511}," for the Helm chart.",{"type":87,"tag":88,"props":1513,"children":1515},{"id":1514},"database-backups",[1516],{"type":93,"value":1517},"Database backups",{"type":87,"tag":261,"props":1519,"children":1521},{"className":1016,"code":1520,"language":1018,"meta":82,"style":82},"# Daily backup with pg_dump\npg_dump -Fc -U vaultaris vaultaris > backup-$(date +%Y%m%d).dump\n\n# Restore\npg_restore -U vaultaris -d vaultaris backup-20260101.dump\n",[1522],{"type":87,"tag":122,"props":1523,"children":1524},{"__ignoreMap":82},[1525,1533,1593,1600,1608],{"type":87,"tag":271,"props":1526,"children":1527},{"class":273,"line":8},[1528],{"type":87,"tag":271,"props":1529,"children":1530},{"style":277},[1531],{"type":93,"value":1532},"# Daily backup with pg_dump\n",{"type":87,"tag":271,"props":1534,"children":1535},{"class":273,"line":42},[1536,1541,1546,1551,1556,1560,1565,1570,1574,1579,1584,1588],{"type":87,"tag":271,"props":1537,"children":1538},{"style":1077},[1539],{"type":93,"value":1540},"pg_dump",{"type":87,"tag":271,"props":1542,"children":1543},{"style":544},[1544],{"type":93,"value":1545}," -Fc",{"type":87,"tag":271,"props":1547,"children":1548},{"style":544},[1549],{"type":93,"value":1550}," -U",{"type":87,"tag":271,"props":1552,"children":1553},{"style":298},[1554],{"type":93,"value":1555}," vaultaris",{"type":87,"tag":271,"props":1557,"children":1558},{"style":298},[1559],{"type":93,"value":1555},{"type":87,"tag":271,"props":1561,"children":1562},{"style":1033},[1563],{"type":93,"value":1564}," >",{"type":87,"tag":271,"props":1566,"children":1567},{"style":298},[1568],{"type":93,"value":1569}," backup-",{"type":87,"tag":271,"props":1571,"children":1572},{"style":292},[1573],{"type":93,"value":1074},{"type":87,"tag":271,"props":1575,"children":1576},{"style":1077},[1577],{"type":93,"value":1578},"date",{"type":87,"tag":271,"props":1580,"children":1581},{"style":298},[1582],{"type":93,"value":1583}," +%Y%m%d",{"type":87,"tag":271,"props":1585,"children":1586},{"style":292},[1587],{"type":93,"value":137},{"type":87,"tag":271,"props":1589,"children":1590},{"style":298},[1591],{"type":93,"value":1592},".dump\n",{"type":87,"tag":271,"props":1594,"children":1595},{"class":273,"line":32},[1596],{"type":87,"tag":271,"props":1597,"children":1598},{"emptyLinePlaceholder":116},[1599],{"type":93,"value":309},{"type":87,"tag":271,"props":1601,"children":1602},{"class":273,"line":14},[1603],{"type":87,"tag":271,"props":1604,"children":1605},{"style":277},[1606],{"type":93,"value":1607},"# Restore\n",{"type":87,"tag":271,"props":1609,"children":1610},{"class":273,"line":78},[1611,1616,1620,1624,1629,1633],{"type":87,"tag":271,"props":1612,"children":1613},{"style":1077},[1614],{"type":93,"value":1615},"pg_restore",{"type":87,"tag":271,"props":1617,"children":1618},{"style":544},[1619],{"type":93,"value":1550},{"type":87,"tag":271,"props":1621,"children":1622},{"style":298},[1623],{"type":93,"value":1555},{"type":87,"tag":271,"props":1625,"children":1626},{"style":544},[1627],{"type":93,"value":1628}," -d",{"type":87,"tag":271,"props":1630,"children":1631},{"style":298},[1632],{"type":93,"value":1555},{"type":87,"tag":271,"props":1634,"children":1635},{"style":298},[1636],{"type":93,"value":1637}," backup-20260101.dump\n",{"type":87,"tag":96,"props":1639,"children":1640},{},[1641,1643,1651],{"type":93,"value":1642},"For production, use managed snapshots (RDS automated backups, Cloud SQL point-in-time recovery, etc.) or a tool like ",{"type":87,"tag":1505,"props":1644,"children":1648},{"href":1645,"rel":1646},"https:\u002F\u002Fpgbackrest.org",[1647],"nofollow",[1649],{"type":93,"value":1650},"pgBackRest",{"type":93,"value":1481},{"type":87,"tag":88,"props":1653,"children":1655},{"id":1654},"upgrading",[1656],{"type":93,"value":1657},"Upgrading",{"type":87,"tag":96,"props":1659,"children":1660},{},[1661],{"type":93,"value":1662},"Vaultaris auto-migrates on startup. To upgrade:",{"type":87,"tag":261,"props":1664,"children":1666},{"className":1016,"code":1665,"language":1018,"meta":82,"style":82},"docker compose pull vaultaris\ndocker compose up -d vaultaris\n",[1667],{"type":87,"tag":122,"props":1668,"children":1669},{"__ignoreMap":82},[1670,1691],{"type":87,"tag":271,"props":1671,"children":1672},{"class":273,"line":8},[1673,1677,1681,1686],{"type":87,"tag":271,"props":1674,"children":1675},{"style":1077},[1676],{"type":93,"value":1223},{"type":87,"tag":271,"props":1678,"children":1679},{"style":298},[1680],{"type":93,"value":1228},{"type":87,"tag":271,"props":1682,"children":1683},{"style":298},[1684],{"type":93,"value":1685}," pull",{"type":87,"tag":271,"props":1687,"children":1688},{"style":298},[1689],{"type":93,"value":1690}," vaultaris\n",{"type":87,"tag":271,"props":1692,"children":1693},{"class":273,"line":42},[1694,1698,1702,1706,1710],{"type":87,"tag":271,"props":1695,"children":1696},{"style":1077},[1697],{"type":93,"value":1223},{"type":87,"tag":271,"props":1699,"children":1700},{"style":298},[1701],{"type":93,"value":1228},{"type":87,"tag":271,"props":1703,"children":1704},{"style":298},[1705],{"type":93,"value":1233},{"type":87,"tag":271,"props":1707,"children":1708},{"style":544},[1709],{"type":93,"value":1628},{"type":87,"tag":271,"props":1711,"children":1712},{"style":298},[1713],{"type":93,"value":1690},{"type":87,"tag":96,"props":1715,"children":1716},{},[1717],{"type":93,"value":1718},"Always back up the database before upgrading across major versions.",{"type":87,"tag":88,"props":1720,"children":1722},{"id":1721},"health-monitoring",[1723],{"type":93,"value":1724},"Health monitoring",{"type":87,"tag":261,"props":1726,"children":1728},{"className":1016,"code":1727,"language":1018,"meta":82,"style":82},"# Liveness probe\ncurl http:\u002F\u002Flocalhost:8080\u002Fhealth\n\n# Readiness (same endpoint, checks DB connectivity)\ncurl http:\u002F\u002Flocalhost:8080\u002Fhealth\n\n# Prometheus scrape\ncurl http:\u002F\u002Flocalhost:8080\u002Fmetrics\n",[1729],{"type":87,"tag":122,"props":1730,"children":1731},{"__ignoreMap":82},[1732,1740,1753,1760,1768,1779,1786,1794],{"type":87,"tag":271,"props":1733,"children":1734},{"class":273,"line":8},[1735],{"type":87,"tag":271,"props":1736,"children":1737},{"style":277},[1738],{"type":93,"value":1739},"# Liveness probe\n",{"type":87,"tag":271,"props":1741,"children":1742},{"class":273,"line":42},[1743,1748],{"type":87,"tag":271,"props":1744,"children":1745},{"style":1077},[1746],{"type":93,"value":1747},"curl",{"type":87,"tag":271,"props":1749,"children":1750},{"style":298},[1751],{"type":93,"value":1752}," http:\u002F\u002Flocalhost:8080\u002Fhealth\n",{"type":87,"tag":271,"props":1754,"children":1755},{"class":273,"line":32},[1756],{"type":87,"tag":271,"props":1757,"children":1758},{"emptyLinePlaceholder":116},[1759],{"type":93,"value":309},{"type":87,"tag":271,"props":1761,"children":1762},{"class":273,"line":14},[1763],{"type":87,"tag":271,"props":1764,"children":1765},{"style":277},[1766],{"type":93,"value":1767},"# Readiness (same endpoint, checks DB connectivity)\n",{"type":87,"tag":271,"props":1769,"children":1770},{"class":273,"line":78},[1771,1775],{"type":87,"tag":271,"props":1772,"children":1773},{"style":1077},[1774],{"type":93,"value":1747},{"type":87,"tag":271,"props":1776,"children":1777},{"style":298},[1778],{"type":93,"value":1752},{"type":87,"tag":271,"props":1780,"children":1781},{"class":273,"line":337},[1782],{"type":87,"tag":271,"props":1783,"children":1784},{"emptyLinePlaceholder":116},[1785],{"type":93,"value":309},{"type":87,"tag":271,"props":1787,"children":1788},{"class":273,"line":355},[1789],{"type":87,"tag":271,"props":1790,"children":1791},{"style":277},[1792],{"type":93,"value":1793},"# Prometheus scrape\n",{"type":87,"tag":271,"props":1795,"children":1796},{"class":273,"line":368},[1797,1801],{"type":87,"tag":271,"props":1798,"children":1799},{"style":1077},[1800],{"type":93,"value":1747},{"type":87,"tag":271,"props":1802,"children":1803},{"style":298},[1804],{"type":93,"value":1805}," http:\u002F\u002Flocalhost:8080\u002Fmetrics\n",{"type":87,"tag":96,"props":1807,"children":1808},{},[1809],{"type":93,"value":1810},"Configure your monitoring system (Prometheus + Grafana, Datadog, etc.) to alert on:",{"type":87,"tag":102,"props":1812,"children":1813},{},[1814,1823,1828,1833],{"type":87,"tag":108,"props":1815,"children":1816},{},[1817],{"type":87,"tag":122,"props":1818,"children":1820},{"className":1819},[],[1821],{"type":93,"value":1822},"vaultaris_up = 0",{"type":87,"tag":108,"props":1824,"children":1825},{},[1826],{"type":93,"value":1827},"HTTP 5xx rate > threshold",{"type":87,"tag":108,"props":1829,"children":1830},{},[1831],{"type":93,"value":1832},"PostgreSQL connection pool exhaustion",{"type":87,"tag":108,"props":1834,"children":1835},{},[1836],{"type":93,"value":1837},"JWT secret rotation lag",{"type":87,"tag":1839,"props":1840,"children":1841},"style",{},[1842],{"type":93,"value":1843},"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 .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);}",{"title":82,"searchDepth":32,"depth":32,"links":1845},[1846,1847,1848,1849,1850,1851,1852,1853,1854],{"id":90,"depth":42,"text":94},{"id":256,"depth":42,"text":259},{"id":1241,"depth":42,"text":1244},{"id":1293,"depth":42,"text":1296},{"id":1425,"depth":42,"text":1428},{"id":1496,"depth":42,"text":40},{"id":1514,"depth":42,"text":1517},{"id":1654,"depth":42,"text":1657},{"id":1721,"depth":42,"text":1724},"markdown","content:docs:deployment.md","content","docs\u002Fdeployment.md","docs\u002Fdeployment","md",{"_path":24,"_dir":80,"_draft":81,"_partial":81,"_locale":82,"title":25,"description":26,"order":8,"category":27,"body":1862,"_type":1855,"_id":1856,"_source":1857,"_file":1858,"_stem":1859,"_extension":1860},{"type":84,"children":1863,"toc":3337},[1864,1868,1872,1996,2000,2619,2629,2795,2799,2824,2828,2862,2866,2870,2981,2985,3004,3026,3036,3040,3049,3053,3158,3168,3172,3176,3224,3228,3232,3306,3310,3333],{"type":87,"tag":88,"props":1865,"children":1866},{"id":90},[1867],{"type":93,"value":94},{"type":87,"tag":96,"props":1869,"children":1870},{},[1871],{"type":93,"value":100},{"type":87,"tag":102,"props":1873,"children":1875},{"className":1874},[105],[1876,1896,1916,1930,1938,1952,1960,1968,1982],{"type":87,"tag":108,"props":1877,"children":1879},{"className":1878},[111],[1880,1883,1884,1889,1890,1895],{"type":87,"tag":114,"props":1881,"children":1882},{"disabled":116,"type":117},[],{"type":93,"value":120},{"type":87,"tag":122,"props":1885,"children":1887},{"className":1886},[],[1888],{"type":93,"value":127},{"type":93,"value":129},{"type":87,"tag":122,"props":1891,"children":1893},{"className":1892},[],[1894],{"type":93,"value":135},{"type":93,"value":137},{"type":87,"tag":108,"props":1897,"children":1899},{"className":1898},[111],[1900,1903,1904,1909,1910,1915],{"type":87,"tag":114,"props":1901,"children":1902},{"disabled":116,"type":117},[],{"type":93,"value":120},{"type":87,"tag":122,"props":1905,"children":1907},{"className":1906},[],[1908],{"type":93,"value":151},{"type":93,"value":129},{"type":87,"tag":122,"props":1911,"children":1913},{"className":1912},[],[1914],{"type":93,"value":158},{"type":93,"value":137},{"type":87,"tag":108,"props":1917,"children":1919},{"className":1918},[111],[1920,1923,1924,1929],{"type":87,"tag":114,"props":1921,"children":1922},{"disabled":116,"type":117},[],{"type":93,"value":168},{"type":87,"tag":122,"props":1925,"children":1927},{"className":1926},[],[1928],{"type":93,"value":174},{"type":93,"value":176},{"type":87,"tag":108,"props":1931,"children":1933},{"className":1932},[111],[1934,1937],{"type":87,"tag":114,"props":1935,"children":1936},{"disabled":116,"type":117},[],{"type":93,"value":185},{"type":87,"tag":108,"props":1939,"children":1941},{"className":1940},[111],[1942,1945,1946,1951],{"type":87,"tag":114,"props":1943,"children":1944},{"disabled":116,"type":117},[],{"type":93,"value":194},{"type":87,"tag":122,"props":1947,"children":1949},{"className":1948},[],[1950],{"type":93,"value":200},{"type":93,"value":202},{"type":87,"tag":108,"props":1953,"children":1955},{"className":1954},[111],[1956,1959],{"type":87,"tag":114,"props":1957,"children":1958},{"disabled":116,"type":117},[],{"type":93,"value":211},{"type":87,"tag":108,"props":1961,"children":1963},{"className":1962},[111],[1964,1967],{"type":87,"tag":114,"props":1965,"children":1966},{"disabled":116,"type":117},[],{"type":93,"value":220},{"type":87,"tag":108,"props":1969,"children":1971},{"className":1970},[111],[1972,1975,1976,1981],{"type":87,"tag":114,"props":1973,"children":1974},{"disabled":116,"type":117},[],{"type":93,"value":168},{"type":87,"tag":122,"props":1977,"children":1979},{"className":1978},[],[1980],{"type":93,"value":234},{"type":93,"value":236},{"type":87,"tag":108,"props":1983,"children":1985},{"className":1984},[111],[1986,1989,1990,1995],{"type":87,"tag":114,"props":1987,"children":1988},{"disabled":116,"type":117},[],{"type":93,"value":245},{"type":87,"tag":122,"props":1991,"children":1993},{"className":1992},[],[1994],{"type":93,"value":251},{"type":93,"value":253},{"type":87,"tag":88,"props":1997,"children":1998},{"id":256},[1999],{"type":93,"value":259},{"type":87,"tag":261,"props":2001,"children":2002},{"className":263,"code":264,"language":265,"meta":82,"style":82},[2003],{"type":87,"tag":122,"props":2004,"children":2005},{"__ignoreMap":82},[2006,2013,2028,2035,2046,2057,2072,2083,2098,2113,2128,2139,2150,2161,2204,2219,2234,2241,2252,2267,2282,2293,2304,2311,2322,2337,2348,2359,2374,2385,2396,2407,2422,2437,2452,2467,2482,2497,2512,2527,2542,2557,2568,2579,2586,2597,2608],{"type":87,"tag":271,"props":2007,"children":2008},{"class":273,"line":8},[2009],{"type":87,"tag":271,"props":2010,"children":2011},{"style":277},[2012],{"type":93,"value":280},{"type":87,"tag":271,"props":2014,"children":2015},{"class":273,"line":42},[2016,2020,2024],{"type":87,"tag":271,"props":2017,"children":2018},{"style":286},[2019],{"type":93,"value":289},{"type":87,"tag":271,"props":2021,"children":2022},{"style":292},[2023],{"type":93,"value":295},{"type":87,"tag":271,"props":2025,"children":2026},{"style":298},[2027],{"type":93,"value":301},{"type":87,"tag":271,"props":2029,"children":2030},{"class":273,"line":32},[2031],{"type":87,"tag":271,"props":2032,"children":2033},{"emptyLinePlaceholder":116},[2034],{"type":93,"value":309},{"type":87,"tag":271,"props":2036,"children":2037},{"class":273,"line":14},[2038,2042],{"type":87,"tag":271,"props":2039,"children":2040},{"style":286},[2041],{"type":93,"value":317},{"type":87,"tag":271,"props":2043,"children":2044},{"style":292},[2045],{"type":93,"value":322},{"type":87,"tag":271,"props":2047,"children":2048},{"class":273,"line":78},[2049,2053],{"type":87,"tag":271,"props":2050,"children":2051},{"style":286},[2052],{"type":93,"value":330},{"type":87,"tag":271,"props":2054,"children":2055},{"style":292},[2056],{"type":93,"value":322},{"type":87,"tag":271,"props":2058,"children":2059},{"class":273,"line":337},[2060,2064,2068],{"type":87,"tag":271,"props":2061,"children":2062},{"style":286},[2063],{"type":93,"value":343},{"type":87,"tag":271,"props":2065,"children":2066},{"style":292},[2067],{"type":93,"value":295},{"type":87,"tag":271,"props":2069,"children":2070},{"style":298},[2071],{"type":93,"value":352},{"type":87,"tag":271,"props":2073,"children":2074},{"class":273,"line":355},[2075,2079],{"type":87,"tag":271,"props":2076,"children":2077},{"style":286},[2078],{"type":93,"value":361},{"type":87,"tag":271,"props":2080,"children":2081},{"style":292},[2082],{"type":93,"value":322},{"type":87,"tag":271,"props":2084,"children":2085},{"class":273,"line":368},[2086,2090,2094],{"type":87,"tag":271,"props":2087,"children":2088},{"style":286},[2089],{"type":93,"value":374},{"type":87,"tag":271,"props":2091,"children":2092},{"style":292},[2093],{"type":93,"value":295},{"type":87,"tag":271,"props":2095,"children":2096},{"style":298},[2097],{"type":93,"value":383},{"type":87,"tag":271,"props":2099,"children":2100},{"class":273,"line":386},[2101,2105,2109],{"type":87,"tag":271,"props":2102,"children":2103},{"style":286},[2104],{"type":93,"value":392},{"type":87,"tag":271,"props":2106,"children":2107},{"style":292},[2108],{"type":93,"value":295},{"type":87,"tag":271,"props":2110,"children":2111},{"style":298},[2112],{"type":93,"value":383},{"type":87,"tag":271,"props":2114,"children":2115},{"class":273,"line":403},[2116,2120,2124],{"type":87,"tag":271,"props":2117,"children":2118},{"style":286},[2119],{"type":93,"value":409},{"type":87,"tag":271,"props":2121,"children":2122},{"style":292},[2123],{"type":93,"value":295},{"type":87,"tag":271,"props":2125,"children":2126},{"style":298},[2127],{"type":93,"value":418},{"type":87,"tag":271,"props":2129,"children":2130},{"class":273,"line":421},[2131,2135],{"type":87,"tag":271,"props":2132,"children":2133},{"style":286},[2134],{"type":93,"value":427},{"type":87,"tag":271,"props":2136,"children":2137},{"style":292},[2138],{"type":93,"value":322},{"type":87,"tag":271,"props":2140,"children":2141},{"class":273,"line":434},[2142,2146],{"type":87,"tag":271,"props":2143,"children":2144},{"style":292},[2145],{"type":93,"value":440},{"type":87,"tag":271,"props":2147,"children":2148},{"style":298},[2149],{"type":93,"value":445},{"type":87,"tag":271,"props":2151,"children":2152},{"class":273,"line":448},[2153,2157],{"type":87,"tag":271,"props":2154,"children":2155},{"style":286},[2156],{"type":93,"value":454},{"type":87,"tag":271,"props":2158,"children":2159},{"style":292},[2160],{"type":93,"value":322},{"type":87,"tag":271,"props":2162,"children":2163},{"class":273,"line":461},[2164,2168,2172,2176,2180,2184,2188,2192,2196,2200],{"type":87,"tag":271,"props":2165,"children":2166},{"style":286},[2167],{"type":93,"value":467},{"type":87,"tag":271,"props":2169,"children":2170},{"style":292},[2171],{"type":93,"value":472},{"type":87,"tag":271,"props":2173,"children":2174},{"style":298},[2175],{"type":93,"value":477},{"type":87,"tag":271,"props":2177,"children":2178},{"style":292},[2179],{"type":93,"value":482},{"type":87,"tag":271,"props":2181,"children":2182},{"style":298},[2183],{"type":93,"value":487},{"type":87,"tag":271,"props":2185,"children":2186},{"style":292},[2187],{"type":93,"value":482},{"type":87,"tag":271,"props":2189,"children":2190},{"style":298},[2191],{"type":93,"value":496},{"type":87,"tag":271,"props":2193,"children":2194},{"style":292},[2195],{"type":93,"value":482},{"type":87,"tag":271,"props":2197,"children":2198},{"style":298},[2199],{"type":93,"value":505},{"type":87,"tag":271,"props":2201,"children":2202},{"style":292},[2203],{"type":93,"value":510},{"type":87,"tag":271,"props":2205,"children":2206},{"class":273,"line":513},[2207,2211,2215],{"type":87,"tag":271,"props":2208,"children":2209},{"style":286},[2210],{"type":93,"value":519},{"type":87,"tag":271,"props":2212,"children":2213},{"style":292},[2214],{"type":93,"value":295},{"type":87,"tag":271,"props":2216,"children":2217},{"style":298},[2218],{"type":93,"value":528},{"type":87,"tag":271,"props":2220,"children":2221},{"class":273,"line":531},[2222,2226,2230],{"type":87,"tag":271,"props":2223,"children":2224},{"style":286},[2225],{"type":93,"value":537},{"type":87,"tag":271,"props":2227,"children":2228},{"style":292},[2229],{"type":93,"value":295},{"type":87,"tag":271,"props":2231,"children":2232},{"style":544},[2233],{"type":93,"value":547},{"type":87,"tag":271,"props":2235,"children":2236},{"class":273,"line":550},[2237],{"type":87,"tag":271,"props":2238,"children":2239},{"emptyLinePlaceholder":116},[2240],{"type":93,"value":309},{"type":87,"tag":271,"props":2242,"children":2243},{"class":273,"line":558},[2244,2248],{"type":87,"tag":271,"props":2245,"children":2246},{"style":286},[2247],{"type":93,"value":564},{"type":87,"tag":271,"props":2249,"children":2250},{"style":292},[2251],{"type":93,"value":322},{"type":87,"tag":271,"props":2253,"children":2254},{"class":273,"line":571},[2255,2259,2263],{"type":87,"tag":271,"props":2256,"children":2257},{"style":286},[2258],{"type":93,"value":343},{"type":87,"tag":271,"props":2260,"children":2261},{"style":292},[2262],{"type":93,"value":295},{"type":87,"tag":271,"props":2264,"children":2265},{"style":298},[2266],{"type":93,"value":585},{"type":87,"tag":271,"props":2268,"children":2269},{"class":273,"line":588},[2270,2274,2278],{"type":87,"tag":271,"props":2271,"children":2272},{"style":286},[2273],{"type":93,"value":594},{"type":87,"tag":271,"props":2275,"children":2276},{"style":292},[2277],{"type":93,"value":295},{"type":87,"tag":271,"props":2279,"children":2280},{"style":298},[2281],{"type":93,"value":603},{"type":87,"tag":271,"props":2283,"children":2284},{"class":273,"line":606},[2285,2289],{"type":87,"tag":271,"props":2286,"children":2287},{"style":286},[2288],{"type":93,"value":427},{"type":87,"tag":271,"props":2290,"children":2291},{"style":292},[2292],{"type":93,"value":322},{"type":87,"tag":271,"props":2294,"children":2295},{"class":273,"line":618},[2296,2300],{"type":87,"tag":271,"props":2297,"children":2298},{"style":292},[2299],{"type":93,"value":440},{"type":87,"tag":271,"props":2301,"children":2302},{"style":298},[2303],{"type":93,"value":628},{"type":87,"tag":271,"props":2305,"children":2306},{"class":273,"line":631},[2307],{"type":87,"tag":271,"props":2308,"children":2309},{"emptyLinePlaceholder":116},[2310],{"type":93,"value":309},{"type":87,"tag":271,"props":2312,"children":2313},{"class":273,"line":639},[2314,2318],{"type":87,"tag":271,"props":2315,"children":2316},{"style":286},[2317],{"type":93,"value":645},{"type":87,"tag":271,"props":2319,"children":2320},{"style":292},[2321],{"type":93,"value":322},{"type":87,"tag":271,"props":2323,"children":2324},{"class":273,"line":652},[2325,2329,2333],{"type":87,"tag":271,"props":2326,"children":2327},{"style":286},[2328],{"type":93,"value":343},{"type":87,"tag":271,"props":2330,"children":2331},{"style":292},[2332],{"type":93,"value":295},{"type":87,"tag":271,"props":2334,"children":2335},{"style":298},[2336],{"type":93,"value":666},{"type":87,"tag":271,"props":2338,"children":2339},{"class":273,"line":669},[2340,2344],{"type":87,"tag":271,"props":2341,"children":2342},{"style":286},[2343],{"type":93,"value":675},{"type":87,"tag":271,"props":2345,"children":2346},{"style":292},[2347],{"type":93,"value":322},{"type":87,"tag":271,"props":2349,"children":2350},{"class":273,"line":682},[2351,2355],{"type":87,"tag":271,"props":2352,"children":2353},{"style":286},[2354],{"type":93,"value":688},{"type":87,"tag":271,"props":2356,"children":2357},{"style":292},[2358],{"type":93,"value":322},{"type":87,"tag":271,"props":2360,"children":2361},{"class":273,"line":695},[2362,2366,2370],{"type":87,"tag":271,"props":2363,"children":2364},{"style":286},[2365],{"type":93,"value":701},{"type":87,"tag":271,"props":2367,"children":2368},{"style":292},[2369],{"type":93,"value":295},{"type":87,"tag":271,"props":2371,"children":2372},{"style":298},[2373],{"type":93,"value":710},{"type":87,"tag":271,"props":2375,"children":2376},{"class":273,"line":713},[2377,2381],{"type":87,"tag":271,"props":2378,"children":2379},{"style":286},[2380],{"type":93,"value":719},{"type":87,"tag":271,"props":2382,"children":2383},{"style":292},[2384],{"type":93,"value":322},{"type":87,"tag":271,"props":2386,"children":2387},{"class":273,"line":726},[2388,2392],{"type":87,"tag":271,"props":2389,"children":2390},{"style":292},[2391],{"type":93,"value":440},{"type":87,"tag":271,"props":2393,"children":2394},{"style":298},[2395],{"type":93,"value":736},{"type":87,"tag":271,"props":2397,"children":2398},{"class":273,"line":739},[2399,2403],{"type":87,"tag":271,"props":2400,"children":2401},{"style":286},[2402],{"type":93,"value":361},{"type":87,"tag":271,"props":2404,"children":2405},{"style":292},[2406],{"type":93,"value":322},{"type":87,"tag":271,"props":2408,"children":2409},{"class":273,"line":751},[2410,2414,2418],{"type":87,"tag":271,"props":2411,"children":2412},{"style":286},[2413],{"type":93,"value":757},{"type":87,"tag":271,"props":2415,"children":2416},{"style":292},[2417],{"type":93,"value":295},{"type":87,"tag":271,"props":2419,"children":2420},{"style":298},[2421],{"type":93,"value":766},{"type":87,"tag":271,"props":2423,"children":2424},{"class":273,"line":769},[2425,2429,2433],{"type":87,"tag":271,"props":2426,"children":2427},{"style":286},[2428],{"type":93,"value":775},{"type":87,"tag":271,"props":2430,"children":2431},{"style":292},[2432],{"type":93,"value":295},{"type":87,"tag":271,"props":2434,"children":2435},{"style":298},[2436],{"type":93,"value":784},{"type":87,"tag":271,"props":2438,"children":2439},{"class":273,"line":787},[2440,2444,2448],{"type":87,"tag":271,"props":2441,"children":2442},{"style":286},[2443],{"type":93,"value":793},{"type":87,"tag":271,"props":2445,"children":2446},{"style":292},[2447],{"type":93,"value":295},{"type":87,"tag":271,"props":2449,"children":2450},{"style":298},[2451],{"type":93,"value":802},{"type":87,"tag":271,"props":2453,"children":2454},{"class":273,"line":805},[2455,2459,2463],{"type":87,"tag":271,"props":2456,"children":2457},{"style":286},[2458],{"type":93,"value":811},{"type":87,"tag":271,"props":2460,"children":2461},{"style":292},[2462],{"type":93,"value":295},{"type":87,"tag":271,"props":2464,"children":2465},{"style":298},[2466],{"type":93,"value":820},{"type":87,"tag":271,"props":2468,"children":2469},{"class":273,"line":823},[2470,2474,2478],{"type":87,"tag":271,"props":2471,"children":2472},{"style":286},[2473],{"type":93,"value":829},{"type":87,"tag":271,"props":2475,"children":2476},{"style":292},[2477],{"type":93,"value":295},{"type":87,"tag":271,"props":2479,"children":2480},{"style":298},[2481],{"type":93,"value":838},{"type":87,"tag":271,"props":2483,"children":2484},{"class":273,"line":841},[2485,2489,2493],{"type":87,"tag":271,"props":2486,"children":2487},{"style":286},[2488],{"type":93,"value":847},{"type":87,"tag":271,"props":2490,"children":2491},{"style":292},[2492],{"type":93,"value":295},{"type":87,"tag":271,"props":2494,"children":2495},{"style":298},[2496],{"type":93,"value":856},{"type":87,"tag":271,"props":2498,"children":2499},{"class":273,"line":859},[2500,2504,2508],{"type":87,"tag":271,"props":2501,"children":2502},{"style":286},[2503],{"type":93,"value":865},{"type":87,"tag":271,"props":2505,"children":2506},{"style":292},[2507],{"type":93,"value":295},{"type":87,"tag":271,"props":2509,"children":2510},{"style":298},[2511],{"type":93,"value":874},{"type":87,"tag":271,"props":2513,"children":2514},{"class":273,"line":877},[2515,2519,2523],{"type":87,"tag":271,"props":2516,"children":2517},{"style":286},[2518],{"type":93,"value":883},{"type":87,"tag":271,"props":2520,"children":2521},{"style":292},[2522],{"type":93,"value":295},{"type":87,"tag":271,"props":2524,"children":2525},{"style":298},[2526],{"type":93,"value":892},{"type":87,"tag":271,"props":2528,"children":2529},{"class":273,"line":895},[2530,2534,2538],{"type":87,"tag":271,"props":2531,"children":2532},{"style":286},[2533],{"type":93,"value":901},{"type":87,"tag":271,"props":2535,"children":2536},{"style":292},[2537],{"type":93,"value":295},{"type":87,"tag":271,"props":2539,"children":2540},{"style":298},[2541],{"type":93,"value":910},{"type":87,"tag":271,"props":2543,"children":2544},{"class":273,"line":913},[2545,2549,2553],{"type":87,"tag":271,"props":2546,"children":2547},{"style":286},[2548],{"type":93,"value":919},{"type":87,"tag":271,"props":2550,"children":2551},{"style":292},[2552],{"type":93,"value":295},{"type":87,"tag":271,"props":2554,"children":2555},{"style":298},[2556],{"type":93,"value":928},{"type":87,"tag":271,"props":2558,"children":2559},{"class":273,"line":931},[2560,2564],{"type":87,"tag":271,"props":2561,"children":2562},{"style":286},[2563],{"type":93,"value":427},{"type":87,"tag":271,"props":2565,"children":2566},{"style":292},[2567],{"type":93,"value":322},{"type":87,"tag":271,"props":2569,"children":2570},{"class":273,"line":943},[2571,2575],{"type":87,"tag":271,"props":2572,"children":2573},{"style":292},[2574],{"type":93,"value":440},{"type":87,"tag":271,"props":2576,"children":2577},{"style":298},[2578],{"type":93,"value":953},{"type":87,"tag":271,"props":2580,"children":2581},{"class":273,"line":956},[2582],{"type":87,"tag":271,"props":2583,"children":2584},{"emptyLinePlaceholder":116},[2585],{"type":93,"value":309},{"type":87,"tag":271,"props":2587,"children":2588},{"class":273,"line":964},[2589,2593],{"type":87,"tag":271,"props":2590,"children":2591},{"style":286},[2592],{"type":93,"value":970},{"type":87,"tag":271,"props":2594,"children":2595},{"style":292},[2596],{"type":93,"value":322},{"type":87,"tag":271,"props":2598,"children":2599},{"class":273,"line":977},[2600,2604],{"type":87,"tag":271,"props":2601,"children":2602},{"style":286},[2603],{"type":93,"value":983},{"type":87,"tag":271,"props":2605,"children":2606},{"style":292},[2607],{"type":93,"value":322},{"type":87,"tag":271,"props":2609,"children":2610},{"class":273,"line":990},[2611,2615],{"type":87,"tag":271,"props":2612,"children":2613},{"style":286},[2614],{"type":93,"value":996},{"type":87,"tag":271,"props":2616,"children":2617},{"style":292},[2618],{"type":93,"value":322},{"type":87,"tag":96,"props":2620,"children":2621},{},[2622,2623,2628],{"type":93,"value":1005},{"type":87,"tag":122,"props":2624,"children":2626},{"className":2625},[],[2627],{"type":93,"value":1011},{"type":93,"value":1013},{"type":87,"tag":261,"props":2630,"children":2631},{"className":1016,"code":1017,"language":1018,"meta":82,"style":82},[2632],{"type":87,"tag":122,"props":2633,"children":2634},{"__ignoreMap":82},[2635,2650,2665,2700,2735,2750,2765,2780],{"type":87,"tag":271,"props":2636,"children":2637},{"class":273,"line":8},[2638,2642,2646],{"type":87,"tag":271,"props":2639,"children":2640},{"style":292},[2641],{"type":93,"value":1030},{"type":87,"tag":271,"props":2643,"children":2644},{"style":1033},[2645],{"type":93,"value":1036},{"type":87,"tag":271,"props":2647,"children":2648},{"style":298},[2649],{"type":93,"value":1041},{"type":87,"tag":271,"props":2651,"children":2652},{"class":273,"line":42},[2653,2657,2661],{"type":87,"tag":271,"props":2654,"children":2655},{"style":292},[2656],{"type":93,"value":1049},{"type":87,"tag":271,"props":2658,"children":2659},{"style":1033},[2660],{"type":93,"value":1036},{"type":87,"tag":271,"props":2662,"children":2663},{"style":298},[2664],{"type":93,"value":1058},{"type":87,"tag":271,"props":2666,"children":2667},{"class":273,"line":32},[2668,2672,2676,2680,2684,2688,2692,2696],{"type":87,"tag":271,"props":2669,"children":2670},{"style":292},[2671],{"type":93,"value":127},{"type":87,"tag":271,"props":2673,"children":2674},{"style":1033},[2675],{"type":93,"value":1036},{"type":87,"tag":271,"props":2677,"children":2678},{"style":292},[2679],{"type":93,"value":1074},{"type":87,"tag":271,"props":2681,"children":2682},{"style":1077},[2683],{"type":93,"value":1080},{"type":87,"tag":271,"props":2685,"children":2686},{"style":298},[2687],{"type":93,"value":1085},{"type":87,"tag":271,"props":2689,"children":2690},{"style":544},[2691],{"type":93,"value":1090},{"type":87,"tag":271,"props":2693,"children":2694},{"style":544},[2695],{"type":93,"value":1095},{"type":87,"tag":271,"props":2697,"children":2698},{"style":292},[2699],{"type":93,"value":1100},{"type":87,"tag":271,"props":2701,"children":2702},{"class":273,"line":14},[2703,2707,2711,2715,2719,2723,2727,2731],{"type":87,"tag":271,"props":2704,"children":2705},{"style":292},[2706],{"type":93,"value":151},{"type":87,"tag":271,"props":2708,"children":2709},{"style":1033},[2710],{"type":93,"value":1036},{"type":87,"tag":271,"props":2712,"children":2713},{"style":292},[2714],{"type":93,"value":1074},{"type":87,"tag":271,"props":2716,"children":2717},{"style":1077},[2718],{"type":93,"value":1080},{"type":87,"tag":271,"props":2720,"children":2721},{"style":298},[2722],{"type":93,"value":1085},{"type":87,"tag":271,"props":2724,"children":2725},{"style":544},[2726],{"type":93,"value":1090},{"type":87,"tag":271,"props":2728,"children":2729},{"style":544},[2730],{"type":93,"value":1132},{"type":87,"tag":271,"props":2732,"children":2733},{"style":292},[2734],{"type":93,"value":1100},{"type":87,"tag":271,"props":2736,"children":2737},{"class":273,"line":78},[2738,2742,2746],{"type":87,"tag":271,"props":2739,"children":2740},{"style":292},[2741],{"type":93,"value":174},{"type":87,"tag":271,"props":2743,"children":2744},{"style":1033},[2745],{"type":93,"value":1036},{"type":87,"tag":271,"props":2747,"children":2748},{"style":298},[2749],{"type":93,"value":1152},{"type":87,"tag":271,"props":2751,"children":2752},{"class":273,"line":337},[2753,2757,2761],{"type":87,"tag":271,"props":2754,"children":2755},{"style":292},[2756],{"type":93,"value":1160},{"type":87,"tag":271,"props":2758,"children":2759},{"style":1033},[2760],{"type":93,"value":1036},{"type":87,"tag":271,"props":2762,"children":2763},{"style":298},[2764],{"type":93,"value":1169},{"type":87,"tag":271,"props":2766,"children":2767},{"class":273,"line":355},[2768,2772,2776],{"type":87,"tag":271,"props":2769,"children":2770},{"style":292},[2771],{"type":93,"value":1177},{"type":87,"tag":271,"props":2773,"children":2774},{"style":1033},[2775],{"type":93,"value":1036},{"type":87,"tag":271,"props":2777,"children":2778},{"style":298},[2779],{"type":93,"value":1186},{"type":87,"tag":271,"props":2781,"children":2782},{"class":273,"line":368},[2783,2787,2791],{"type":87,"tag":271,"props":2784,"children":2785},{"style":292},[2786],{"type":93,"value":1194},{"type":87,"tag":271,"props":2788,"children":2789},{"style":1033},[2790],{"type":93,"value":1036},{"type":87,"tag":271,"props":2792,"children":2793},{"style":298},[2794],{"type":93,"value":1203},{"type":87,"tag":96,"props":2796,"children":2797},{},[2798],{"type":93,"value":1208},{"type":87,"tag":261,"props":2800,"children":2801},{"className":1016,"code":1211,"language":1018,"meta":82,"style":82},[2802],{"type":87,"tag":122,"props":2803,"children":2804},{"__ignoreMap":82},[2805],{"type":87,"tag":271,"props":2806,"children":2807},{"class":273,"line":8},[2808,2812,2816,2820],{"type":87,"tag":271,"props":2809,"children":2810},{"style":1077},[2811],{"type":93,"value":1223},{"type":87,"tag":271,"props":2813,"children":2814},{"style":298},[2815],{"type":93,"value":1228},{"type":87,"tag":271,"props":2817,"children":2818},{"style":298},[2819],{"type":93,"value":1233},{"type":87,"tag":271,"props":2821,"children":2822},{"style":544},[2823],{"type":93,"value":1238},{"type":87,"tag":88,"props":2825,"children":2826},{"id":1241},[2827],{"type":93,"value":1244},{"type":87,"tag":261,"props":2829,"children":2830},{"className":1247,"code":1248,"language":1249,"meta":82,"style":82},[2831],{"type":87,"tag":122,"props":2832,"children":2833},{"__ignoreMap":82},[2834,2841,2848,2855],{"type":87,"tag":271,"props":2835,"children":2836},{"class":273,"line":8},[2837],{"type":87,"tag":271,"props":2838,"children":2839},{},[2840],{"type":93,"value":1261},{"type":87,"tag":271,"props":2842,"children":2843},{"class":273,"line":42},[2844],{"type":87,"tag":271,"props":2845,"children":2846},{},[2847],{"type":93,"value":1269},{"type":87,"tag":271,"props":2849,"children":2850},{"class":273,"line":32},[2851],{"type":87,"tag":271,"props":2852,"children":2853},{},[2854],{"type":93,"value":1277},{"type":87,"tag":271,"props":2856,"children":2857},{"class":273,"line":14},[2858],{"type":87,"tag":271,"props":2859,"children":2860},{},[2861],{"type":93,"value":1285},{"type":87,"tag":96,"props":2863,"children":2864},{},[2865],{"type":93,"value":1290},{"type":87,"tag":88,"props":2867,"children":2868},{"id":1293},[2869],{"type":93,"value":1296},{"type":87,"tag":261,"props":2871,"children":2872},{"className":1299,"code":1300,"language":1301,"meta":82,"style":82},[2873],{"type":87,"tag":122,"props":2874,"children":2875},{"__ignoreMap":82},[2876,2883,2890,2897,2904,2911,2918,2925,2932,2939,2946,2953,2960,2967,2974],{"type":87,"tag":271,"props":2877,"children":2878},{"class":273,"line":8},[2879],{"type":87,"tag":271,"props":2880,"children":2881},{},[2882],{"type":93,"value":1313},{"type":87,"tag":271,"props":2884,"children":2885},{"class":273,"line":42},[2886],{"type":87,"tag":271,"props":2887,"children":2888},{},[2889],{"type":93,"value":1321},{"type":87,"tag":271,"props":2891,"children":2892},{"class":273,"line":32},[2893],{"type":87,"tag":271,"props":2894,"children":2895},{},[2896],{"type":93,"value":1329},{"type":87,"tag":271,"props":2898,"children":2899},{"class":273,"line":14},[2900],{"type":87,"tag":271,"props":2901,"children":2902},{"emptyLinePlaceholder":116},[2903],{"type":93,"value":309},{"type":87,"tag":271,"props":2905,"children":2906},{"class":273,"line":78},[2907],{"type":87,"tag":271,"props":2908,"children":2909},{},[2910],{"type":93,"value":1344},{"type":87,"tag":271,"props":2912,"children":2913},{"class":273,"line":337},[2914],{"type":87,"tag":271,"props":2915,"children":2916},{},[2917],{"type":93,"value":1352},{"type":87,"tag":271,"props":2919,"children":2920},{"class":273,"line":355},[2921],{"type":87,"tag":271,"props":2922,"children":2923},{"emptyLinePlaceholder":116},[2924],{"type":93,"value":309},{"type":87,"tag":271,"props":2926,"children":2927},{"class":273,"line":368},[2928],{"type":87,"tag":271,"props":2929,"children":2930},{},[2931],{"type":93,"value":1367},{"type":87,"tag":271,"props":2933,"children":2934},{"class":273,"line":386},[2935],{"type":87,"tag":271,"props":2936,"children":2937},{},[2938],{"type":93,"value":1375},{"type":87,"tag":271,"props":2940,"children":2941},{"class":273,"line":403},[2942],{"type":87,"tag":271,"props":2943,"children":2944},{},[2945],{"type":93,"value":1383},{"type":87,"tag":271,"props":2947,"children":2948},{"class":273,"line":421},[2949],{"type":87,"tag":271,"props":2950,"children":2951},{},[2952],{"type":93,"value":1391},{"type":87,"tag":271,"props":2954,"children":2955},{"class":273,"line":434},[2956],{"type":87,"tag":271,"props":2957,"children":2958},{},[2959],{"type":93,"value":1399},{"type":87,"tag":271,"props":2961,"children":2962},{"class":273,"line":448},[2963],{"type":87,"tag":271,"props":2964,"children":2965},{},[2966],{"type":93,"value":1407},{"type":87,"tag":271,"props":2968,"children":2969},{"class":273,"line":461},[2970],{"type":87,"tag":271,"props":2971,"children":2972},{},[2973],{"type":93,"value":1415},{"type":87,"tag":271,"props":2975,"children":2976},{"class":273,"line":513},[2977],{"type":87,"tag":271,"props":2978,"children":2979},{},[2980],{"type":93,"value":1285},{"type":87,"tag":88,"props":2982,"children":2983},{"id":1425},[2984],{"type":93,"value":1428},{"type":87,"tag":1430,"props":2986,"children":2987},{},[2988,2992,2996,3000],{"type":87,"tag":108,"props":2989,"children":2990},{},[2991],{"type":93,"value":1437},{"type":87,"tag":108,"props":2993,"children":2994},{},[2995],{"type":93,"value":1442},{"type":87,"tag":108,"props":2997,"children":2998},{},[2999],{"type":93,"value":1447},{"type":87,"tag":108,"props":3001,"children":3002},{},[3003],{"type":93,"value":1452},{"type":87,"tag":96,"props":3005,"children":3006},{},[3007,3008,3013,3014,3019,3020,3025],{"type":93,"value":1457},{"type":87,"tag":122,"props":3009,"children":3011},{"className":3010},[],[3012],{"type":93,"value":1463},{"type":93,"value":1465},{"type":87,"tag":122,"props":3015,"children":3017},{"className":3016},[],[3018],{"type":93,"value":1471},{"type":93,"value":1473},{"type":87,"tag":122,"props":3021,"children":3023},{"className":3022},[],[3024],{"type":93,"value":1479},{"type":93,"value":1481},{"type":87,"tag":96,"props":3027,"children":3028},{},[3029,3030,3035],{"type":93,"value":1486},{"type":87,"tag":122,"props":3031,"children":3033},{"className":3032},[],[3034],{"type":93,"value":1492},{"type":93,"value":1481},{"type":87,"tag":88,"props":3037,"children":3038},{"id":1496},[3039],{"type":93,"value":40},{"type":87,"tag":96,"props":3041,"children":3042},{},[3043,3044,3048],{"type":93,"value":1503},{"type":87,"tag":1505,"props":3045,"children":3046},{"href":39},[3047],{"type":93,"value":1509},{"type":93,"value":1511},{"type":87,"tag":88,"props":3050,"children":3051},{"id":1514},[3052],{"type":93,"value":1517},{"type":87,"tag":261,"props":3054,"children":3055},{"className":1016,"code":1520,"language":1018,"meta":82,"style":82},[3056],{"type":87,"tag":122,"props":3057,"children":3058},{"__ignoreMap":82},[3059,3066,3117,3124,3131],{"type":87,"tag":271,"props":3060,"children":3061},{"class":273,"line":8},[3062],{"type":87,"tag":271,"props":3063,"children":3064},{"style":277},[3065],{"type":93,"value":1532},{"type":87,"tag":271,"props":3067,"children":3068},{"class":273,"line":42},[3069,3073,3077,3081,3085,3089,3093,3097,3101,3105,3109,3113],{"type":87,"tag":271,"props":3070,"children":3071},{"style":1077},[3072],{"type":93,"value":1540},{"type":87,"tag":271,"props":3074,"children":3075},{"style":544},[3076],{"type":93,"value":1545},{"type":87,"tag":271,"props":3078,"children":3079},{"style":544},[3080],{"type":93,"value":1550},{"type":87,"tag":271,"props":3082,"children":3083},{"style":298},[3084],{"type":93,"value":1555},{"type":87,"tag":271,"props":3086,"children":3087},{"style":298},[3088],{"type":93,"value":1555},{"type":87,"tag":271,"props":3090,"children":3091},{"style":1033},[3092],{"type":93,"value":1564},{"type":87,"tag":271,"props":3094,"children":3095},{"style":298},[3096],{"type":93,"value":1569},{"type":87,"tag":271,"props":3098,"children":3099},{"style":292},[3100],{"type":93,"value":1074},{"type":87,"tag":271,"props":3102,"children":3103},{"style":1077},[3104],{"type":93,"value":1578},{"type":87,"tag":271,"props":3106,"children":3107},{"style":298},[3108],{"type":93,"value":1583},{"type":87,"tag":271,"props":3110,"children":3111},{"style":292},[3112],{"type":93,"value":137},{"type":87,"tag":271,"props":3114,"children":3115},{"style":298},[3116],{"type":93,"value":1592},{"type":87,"tag":271,"props":3118,"children":3119},{"class":273,"line":32},[3120],{"type":87,"tag":271,"props":3121,"children":3122},{"emptyLinePlaceholder":116},[3123],{"type":93,"value":309},{"type":87,"tag":271,"props":3125,"children":3126},{"class":273,"line":14},[3127],{"type":87,"tag":271,"props":3128,"children":3129},{"style":277},[3130],{"type":93,"value":1607},{"type":87,"tag":271,"props":3132,"children":3133},{"class":273,"line":78},[3134,3138,3142,3146,3150,3154],{"type":87,"tag":271,"props":3135,"children":3136},{"style":1077},[3137],{"type":93,"value":1615},{"type":87,"tag":271,"props":3139,"children":3140},{"style":544},[3141],{"type":93,"value":1550},{"type":87,"tag":271,"props":3143,"children":3144},{"style":298},[3145],{"type":93,"value":1555},{"type":87,"tag":271,"props":3147,"children":3148},{"style":544},[3149],{"type":93,"value":1628},{"type":87,"tag":271,"props":3151,"children":3152},{"style":298},[3153],{"type":93,"value":1555},{"type":87,"tag":271,"props":3155,"children":3156},{"style":298},[3157],{"type":93,"value":1637},{"type":87,"tag":96,"props":3159,"children":3160},{},[3161,3162,3167],{"type":93,"value":1642},{"type":87,"tag":1505,"props":3163,"children":3165},{"href":1645,"rel":3164},[1647],[3166],{"type":93,"value":1650},{"type":93,"value":1481},{"type":87,"tag":88,"props":3169,"children":3170},{"id":1654},[3171],{"type":93,"value":1657},{"type":87,"tag":96,"props":3173,"children":3174},{},[3175],{"type":93,"value":1662},{"type":87,"tag":261,"props":3177,"children":3178},{"className":1016,"code":1665,"language":1018,"meta":82,"style":82},[3179],{"type":87,"tag":122,"props":3180,"children":3181},{"__ignoreMap":82},[3182,3201],{"type":87,"tag":271,"props":3183,"children":3184},{"class":273,"line":8},[3185,3189,3193,3197],{"type":87,"tag":271,"props":3186,"children":3187},{"style":1077},[3188],{"type":93,"value":1223},{"type":87,"tag":271,"props":3190,"children":3191},{"style":298},[3192],{"type":93,"value":1228},{"type":87,"tag":271,"props":3194,"children":3195},{"style":298},[3196],{"type":93,"value":1685},{"type":87,"tag":271,"props":3198,"children":3199},{"style":298},[3200],{"type":93,"value":1690},{"type":87,"tag":271,"props":3202,"children":3203},{"class":273,"line":42},[3204,3208,3212,3216,3220],{"type":87,"tag":271,"props":3205,"children":3206},{"style":1077},[3207],{"type":93,"value":1223},{"type":87,"tag":271,"props":3209,"children":3210},{"style":298},[3211],{"type":93,"value":1228},{"type":87,"tag":271,"props":3213,"children":3214},{"style":298},[3215],{"type":93,"value":1233},{"type":87,"tag":271,"props":3217,"children":3218},{"style":544},[3219],{"type":93,"value":1628},{"type":87,"tag":271,"props":3221,"children":3222},{"style":298},[3223],{"type":93,"value":1690},{"type":87,"tag":96,"props":3225,"children":3226},{},[3227],{"type":93,"value":1718},{"type":87,"tag":88,"props":3229,"children":3230},{"id":1721},[3231],{"type":93,"value":1724},{"type":87,"tag":261,"props":3233,"children":3234},{"className":1016,"code":1727,"language":1018,"meta":82,"style":82},[3235],{"type":87,"tag":122,"props":3236,"children":3237},{"__ignoreMap":82},[3238,3245,3256,3263,3270,3281,3288,3295],{"type":87,"tag":271,"props":3239,"children":3240},{"class":273,"line":8},[3241],{"type":87,"tag":271,"props":3242,"children":3243},{"style":277},[3244],{"type":93,"value":1739},{"type":87,"tag":271,"props":3246,"children":3247},{"class":273,"line":42},[3248,3252],{"type":87,"tag":271,"props":3249,"children":3250},{"style":1077},[3251],{"type":93,"value":1747},{"type":87,"tag":271,"props":3253,"children":3254},{"style":298},[3255],{"type":93,"value":1752},{"type":87,"tag":271,"props":3257,"children":3258},{"class":273,"line":32},[3259],{"type":87,"tag":271,"props":3260,"children":3261},{"emptyLinePlaceholder":116},[3262],{"type":93,"value":309},{"type":87,"tag":271,"props":3264,"children":3265},{"class":273,"line":14},[3266],{"type":87,"tag":271,"props":3267,"children":3268},{"style":277},[3269],{"type":93,"value":1767},{"type":87,"tag":271,"props":3271,"children":3272},{"class":273,"line":78},[3273,3277],{"type":87,"tag":271,"props":3274,"children":3275},{"style":1077},[3276],{"type":93,"value":1747},{"type":87,"tag":271,"props":3278,"children":3279},{"style":298},[3280],{"type":93,"value":1752},{"type":87,"tag":271,"props":3282,"children":3283},{"class":273,"line":337},[3284],{"type":87,"tag":271,"props":3285,"children":3286},{"emptyLinePlaceholder":116},[3287],{"type":93,"value":309},{"type":87,"tag":271,"props":3289,"children":3290},{"class":273,"line":355},[3291],{"type":87,"tag":271,"props":3292,"children":3293},{"style":277},[3294],{"type":93,"value":1793},{"type":87,"tag":271,"props":3296,"children":3297},{"class":273,"line":368},[3298,3302],{"type":87,"tag":271,"props":3299,"children":3300},{"style":1077},[3301],{"type":93,"value":1747},{"type":87,"tag":271,"props":3303,"children":3304},{"style":298},[3305],{"type":93,"value":1805},{"type":87,"tag":96,"props":3307,"children":3308},{},[3309],{"type":93,"value":1810},{"type":87,"tag":102,"props":3311,"children":3312},{},[3313,3321,3325,3329],{"type":87,"tag":108,"props":3314,"children":3315},{},[3316],{"type":87,"tag":122,"props":3317,"children":3319},{"className":3318},[],[3320],{"type":93,"value":1822},{"type":87,"tag":108,"props":3322,"children":3323},{},[3324],{"type":93,"value":1827},{"type":87,"tag":108,"props":3326,"children":3327},{},[3328],{"type":93,"value":1832},{"type":87,"tag":108,"props":3330,"children":3331},{},[3332],{"type":93,"value":1837},{"type":87,"tag":1839,"props":3334,"children":3335},{},[3336],{"type":93,"value":1843},{"title":82,"searchDepth":32,"depth":32,"links":3338},[3339,3340,3341,3342,3343,3344,3345,3346,3347],{"id":90,"depth":42,"text":94},{"id":256,"depth":42,"text":259},{"id":1241,"depth":42,"text":1244},{"id":1293,"depth":42,"text":1296},{"id":1425,"depth":42,"text":1428},{"id":1496,"depth":42,"text":40},{"id":1514,"depth":42,"text":1517},{"id":1654,"depth":42,"text":1657},{"id":1721,"depth":42,"text":1724},1780603565212]