Created
March 30, 2026 08:48
-
-
Save unnitallman/473f6a85e155f5348b41f11fd71681ed to your computer and use it in GitHub Desktop.
NeetoDeploy Rate Limiting Architecture Diagrams
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <?xml version="1.0" encoding="utf-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-d2-version="0.7.1" preserveAspectRatio="xMinYMin meet" viewBox="0 0 3825 1294"><svg class="d2-2784127954 d2-svg" width="3825" height="1294" viewBox="44 -154 3825 1294"><rect x="44.000000" y="-154.000000" width="3825.000000" height="1294.000000" rx="0.000000" fill="#1E1E2E" class=" fill-N7" stroke-width="0" /><style type="text/css"><![CDATA[ | |
| .d2-2784127954 .text { | |
| font-family: "d2-2784127954-font-regular"; | |
| } | |
| @font-face { | |
| font-family: d2-2784127954-font-regular; | |
| src: url("data:application/font-woff;base64,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"); | |
| } | |
| @font-face { | |
| font-family: d2-2784127954-font-semibold; | |
| src: url("data:application/font-woff;base64,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"); | |
| } | |
| .d2-2784127954 .text-bold { | |
| font-family: "d2-2784127954-font-bold"; | |
| } | |
| @font-face { | |
| font-family: d2-2784127954-font-bold; | |
| src: url("data:application/font-woff;base64,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"); | |
| } | |
| .d2-2784127954 .text-italic { | |
| font-family: "d2-2784127954-font-italic"; | |
| } | |
| @font-face { | |
| font-family: d2-2784127954-font-italic; | |
| src: url("data:application/font-woff;base64,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"); | |
| } | |
| .d2-2784127954 .text-mono { | |
| font-family: "d2-2784127954-font-mono"; | |
| } | |
| @font-face { | |
| font-family: d2-2784127954-font-mono; | |
| src: url("data:application/font-woff;base64,d09GRgABAAAAABjoAAoAAAAAKLgAAgm6AAAAAAAAAAAAAAAAAAAAAAAAAABPUy8yAAAA9AAAAGAAAABgld/X+GNtYXAAAAFUAAAA4gAAAUoIJwo7Z2x5ZgAAAjgAAA4pAAATYCv+eTRoZWFkAAAQZAAAADYAAAA2GanOOmhoZWEAABCcAAAAJAAAACQGMwDKaG10eAAAEMAAAACnAAABDJ0IF1hsb2NhAAARaAAAAIgAAACIp3SsUG1heHAAABHwAAAAIAAAACAAdwJhbmFtZQAAEhAAAAa4AAAQztydAx9wb3N0AAAYyAAAACAAAAAg/7gAMwADAlgBkAAFAAACigJYAAAASwKKAlgAAAFeADIBIwAAAgsFCQMEAwICBCAAAvcCADgDAAAAAAAAAABBREJPAEAAIP//Au7/BgAAA9gBEWAAAZ8AAAAAAeYClAAAACAAA3icjNDLLqNxGMfxzzttZzrTTlHnOpU6FHVWtGhiISESaSysLFiKOyAuirVD3AhxGUTyF6+ka8/qWXwW3/wQSYiQlYwaqChKyioqmTZjzrwFVTV1u/Ydajp24tS5S1euQyDW5ZZejPWOPQeajmJ95uJbh1cFOXlpKZnwEd7Ce3gKj+Eh3Ie78BKew224+frjrp9fZNuadVuqVtRVWjVLlq36JSEp5bc/0v76JyPrv5w27TrkbWro1KVbj159+hUMGDRk2IiiUWNKxk2YNKUc7zNrQ41PAAAA//8BAAD//0cmM0sAAHicjFhrbBtXdj73DsUxLVoSRQ7HlCm+huRIfIgShzNDvUjxIVKSJUuiSEuWrYctWZLllyxv7DixXa/rPOy0W2Zh7Lqpk+zGWThBkCDpFnWyRbpAsAgc1NkmQRtksUkRZAOtsdtmW1UJGqw1LGZIvbZ/CmN8B5p7zz3nu9/5zrmEMogA4Bp8HQjQgBaqgQLgdHady86yDEmKLM2JImPFugj6VMoj1B1SCQ9duvSKqin++/jBP8PXV4+1XJmdHVi6/9b42bN/uYR+CRhsADiM86ABHYCe5Fi3m2XUakLP6RmWIe9bf2HV2StVVbZffTb+2Ujkqyg6OT0tHm9uPi6N4vzqwt27AAAETAFgBuehCkzgkP3igkYjZVCTlDIwBBcU+JCbYXRrL1M/SxxuDrd2DVw9cWZftruvd2w+O7Z/7zzO21ItTf2VqvI9yYMT6Lwg8r7VB62Jdh4AQaywgj34JtQClDncbj4kCFzQSJNuN+NQqymD0cgFBZFWq9HE4Hd7ex/LtR4wB0zx+uhYKDQW9XdZA+yUdvDG0fkbmUYbv8seO5PJnIu7Gc4fBAAMwwC4Hudhm4yHEoXsPbvm9PAL12/+zdND3adOnjzVjfMv33z2teRT588/BrJviwC4GuehXDkXau3fIvqB9I+oSvpP1IvzqV+mv0oDgn4ArFmbK58ip2N0dl1/FlVns9JXOC/9B9KvLiBe+ifF9gQA+rY0n+d0DG+nGB1HTdy6hZ65dSuNiVRqdTUNytxDADiJ86At2uYQR+oZgqQOZQlkmPjg/vjPT+G8dAd1fysdQSNPfCiveRwA1+I8lJX8oR7PoE6cX71TstkFgKtwHnYp3/U0J+plj0OCIDIkwRAsY8GUrmvmgE1lHZsZKCMx4RpvO+DGhLoM56X78/No5+oC6rIN58yXJAnhS+bcsE16U7adAcBqnAf9mm23m5fxIFjGaKR0mQMfRTHWDBQHnJemn2w6GkLZ1QV088ngHCe9DBhmALBViZnaxD41w+jWCTfzbvfx9vYTXaeP7B3K5o7gvDPX1Tnqkx6grlgqLYJy/tOl868AejOL9QyxydL0vcRs60Di9sRzDx3vGxzsO47zzGCyd0wnfYEo6fdoX7QjFiriliisYBO+CX6Fr6yo8JMPud0s24C3slcmL01bsOw3aup6xBd0TYWTu628Y9we84kHo5E5p8+2h2tOMYL5QH2MDc9peV+Ly9/SwHjMFfU7PPHGYL/f7xRq7SGfta5GW1fljzWFckFA4AHADTgPJIC9xB6EP8GqT3BPKrX694qv/YUVhZNUKbd0nK6YT4LyqlYjf8fh5qwzytZFXIPNU9rQ4ji6Ic0kB53OwSR6RpobXwwBAi8A9uM87ADgCE5vNNKcIIh6jnjw4ci8zlytqq6tOpL7AOel51oOt7QcbkGHVhcAw2BhBRNoGczAAtCl7BYbMONQk6yCFKVjZHVig4LIV2DKYPzGv9ufvnkBmcKBwD6HzXW6Y/pggiTqpi31Q/VzZ5tiWnvEK3b7tttFh4sK72w4vl/6OG4NxN2OS9vsTbZ6F2AYK6xgM74LBrAXT4kh5dwiueKeBmVD+eAdipyhDmaQIch4hiDsw95Dc5HpdEe2o9vW7WbSWsYq4LvvjDvqHj81dCbSOTs6MMW4l601Mr4DhRW8Cy3/P7RrtPfhVM/57tYRS70l5g7nGgPZsH+3xVU3pW1bHMgstnlq+RpLIBcWswGniXfWKdxtK6ygP26KY20DjpUVowicyK/vhionvhM93OxLWQlVJkkSliFzV8wetXk663u1j53rPx2xW0b/YTXcYfV3di9bawJD4WFZ5iFZWME1aBnUYAVADjVpd7uJjYDkfLFvxBJpGy9HQtmeYPfZVOpU7MhDGEvf3Xak15e2W5xj6I2+rt09UqLt9GD/YvuF2Yqa7ZmsiRJ2Oor5MwuA4/hfwChnI8OLfEjggmsJQ3EUo1t+6qnJ6a6k3sLZYi337qFbkbL6fcfMkQpNstWXkMaK9amrYMMCWoZGaIPeEjoyFnxIKA2yXY5iSrrhcLMKSFyJAcQaAyiDUV+SgbU5qG7+zIDeajGbGH6Yq7e+d1G3M5jj9V5DtYFvPD6+P35uJBCLBRri8ebcITE8QbmqHObBz9MdkQZVudtKN+lV+g4vv8erTehCtaHddRpNuVlnNoci/j0B9EY0xEWjXCgqPdXmYnaqVPp6yu0HBGMAuBzfLSneOl9lWVa4qhvLlBHu4ea9mUyozZv04rvvnK4XpieljxDTmfD5pFcBoFCAUQD0HL6H3RAFADV0NBaxnwfAEXx3ax1hSWo+o0Lq8Xc+PfDT0/iuZEHwc+lXX5+6oqzpUfTuLlQVMdYxvCwiXFChwg/7hl4t8F5vI+UIa/ftRV8kVv+VbzS2V1Qqa1tkjULLMns5HUcr4dAbMSkhrcfWEiexPuhJUxTn4ZozIZPd0EvvMrmq0VKHw5Nl/X3d0otob87lln6E9nq88riGGVoGw6Y9tkCWJFXukXXI0NLQnyKm5Bk2o2WolKvhpkzeKhUyMXwdxxOJ4x3F/1O5XCqVy5UyuG0xM7DYlpwdys7NZYdkmsNYgVPsKvlLb3hX4iNDU/rNOjSWJAnHPv+h2ch0q6PfRqgux3JFGUq9j38asXmeOJU5E7FbDryI1Jt0SPafQ39c26eMFxnF/rpaiJyO2KITL6sIy6B/XBGLLgdBxn+9rhPvvzFq9Spa4bAJq31IvSEUCL4PgE1oGao3Y13KXVL3/SRJuBcSuwJGvclZKx72oaXTrUlNeVqzLdor/QYQpAsruAItQ93/qZ0K5Fsq51rdFNLnfW7PTCLSTsXi45Mz0+E5Z50jE4gEEz2Dw/bgpNZvFSxOv1VvMe8wJMTWfpeJp80es9VRpfMILjZep3Cxs7CCHfgy7CydMM/wosjJgiOLQknarqUzzNW/KE/+4Q98ignXVNu7tdxo21Kk7ObNxG9jSe32Nq0OEPQVVtC3aEnmHO0olVXZhK6kyt8MZ4a4dk9nXSZBqlwj2ulJ1CB91pnwBtCgVJPzCoCAA8AutCTXVPuWmorg/aGFyl07VDtMlQv976El6d9daYZJu5BBqinm8TYAPICWZLXeVI9Fjt6wwrBy20+Si/OZFrJcpSqr3NaWadlWrVKpNWRL79x8WKtVabUCWpKWHDGGiTkePCiOqEaquc+NjXH3lb06ADCNlsAEwIns+hYiR9JM6W5Bkh1vvbK/b0dtparCvKN7+NWfjeYq7VWqSkvlwIPfHdV7DQaf4ch/fb1ANVBGL72g2G0qBDCLlqBGxrBEBVHcgkQF/nOnWbedLuc6qit/M3S2wlqp2rFLO7/n42qh/8PtMULV6nei30r/bethmG472rG63Ngr62gaAOvREmjk3hrZeTuF7FQa9UmfoOekv0XDPnQ24ZOuJuQ6InNSh69BOdDArFXZYpJuznxx09+Rb/7RR+ePPvLI0UQul5Afk8tlMrlc2tee//FLL/34+dfil69eu3Dh2tXL/+y0WhnGanUqMR9U7hMXFf1Ven5BEGWhP/jmX4X7rO23k+hjfhtdtfpusnjOnQB4O76m9Oh8BJeUgl0XEVIQOI7qPvaDvmTa32cNeKcTkws9jw1b2s0fNU3mv8OLKb8t4ONnc22PPtGPVfI9pbmwgtX4mtw/bslBhl+XInZd/EiqlIXWzCnGYxttj43MXzw1mW71D9h8dbPtbRPhvlZv2hed04qMYGno4JtT0c5gQHDWhhi/uyvU0mNQabxxXzjjAyx3gdiOL4JGzhyRk8OX6aPn7TyScWCoy18hApVVOqpi0h0UHZmaWn63pr2GDtBS6HUR/VD6Tvx1QBAurODt+OJadyeWetqS93o7ZSc39BtZcsdc9bZsh7/HuzddF3b4KHRE+lxn5l3tU62JY1rBLpj9zrgv3mPQmxGXfltb4R3p7DxYvD/K/b5W4Uc9gL6Y54pG6Td2FjfrrZEyVOCnOxPuvez2oXTznoWWEVvDzriL2ytidqxp5ETrwXDqRMy3exK9HUvV+ccO9q3+D2sO0ebQwzNu39Sh9gOh5JOzk0/kWJkDvy6soAvwrHxPLNvCQUcg4HAEAtqAyx0IuF2BQqE4FxOYldUFzYBaHgsFyCEvJtARrIaYwqsPCgPo3/CnsvaUFTsmWikMNHpj7ty5Of/05OT064NfPv30l4Oe3HsXL76XK/LxkcIAerK4jmYVwGUEKIP6tv/wxMRh/9y5c6+XFniU5YDg4cIc+gb/AgJr/st6zxTZLEfDUaWqtPHbgtI4cxR6a3y/ho62tkZpzf7x9hAn6NVsKMSq9QIXuhHuE0eCBoYOIaNTHxgP9YUD1XV27/5AE6dRabgmLttgq68OKH5PFebQ50UfaL5ElY0+UXGI4Yu4Knc2at0jZorjBIPaHQq51QaB49rHR9dcGh2/EaiutzVkudKOgf1ee111INwXGg/onUYUohlDcETsC5d8mERf43eBAKARh6ZQV4/05o+ImQfPwJ9+L0McQq9Ib/agrrUJCLJwEquwDyoARFZkRVrkaJEmaZL9O8+xF6puaxo1t6teOOZ5+KTlJ6kG8e23xYbUTyzPr/8GQuJrQMgVQ8+JDCEyPKc8HKk8FKM8jMiQX16pvjJnGhiuzh2geeMVmjcq7ybBdMWEyq5Ls/ear7fcuXPnTsv15nv37sn8ehGH0TFCg9UQV3yV+8/voSUoK91NdajtCxRCtxJKAUPwO9yLTuB7MqfRFk6b3W6z2e3GvUxtLSM/RWxK/JWx0fN2KodeQ95IpPittLf8DbEijWLPtnwPh/86/NL/AgAA//8BAAD//xvdIvkAAAAAAQAAAAIJuo9B6KVfDzz1AAMD6AAAAADcHQ33AAAAANwcc0v/P/46AxkEJAAAAAMAAgAAAAAAAAABAAAD2P7vAAACWP8//z8DGQABAAAAAAAAAAAAAAAAAAAAQ3icTI9NKsZRHEZPZ2QZZoqRTNCbCJGSj8hJST6iDI1kARZgDe+CzO3AKvSvqwxOt557fvU8xpaBsWg8GDvGlfFqnBi3xr3xYRwa58aT8WjsGsvDWzHOjBvj1JgZe8bzuJvya+PFODI2Rzb7934aB8a+cWysGQvGtrE6/ibuhrNhLBnro8v34NL4Mt6Nt7Hrj4uxbz76/Ax//gsAAP//AQAA//9EwS7nAAAAACoAKgBOAIIAsgDQAOYA/gEUAS4BPgFsAY4BsgHaAh4CMAJUAnACrALgAxADRAN6A54ECAQsBDgEUgRwBKIExATwBSQFWAV4BbYF3AX+BhwGUgZ+BqwGwgb4BxAHOgd4B5wH0ggSCCgINAg8CFgIcgi0CPYJBgkWCTQJZAlsCXwJlAmiCbAAAQAAAEMB+AAqAGUABgABAAAAAAAAAAAAAAAAAAMAA3icnJZLbJPZFcd/zrkBv3gZVA0IVVcjhKYIjJ1JwE0g4JABwiBCSWbaClHVJMaxSOzIdmDoYhZdVl11XXUzXbQStAolaiaBQiCkagWq1EU1q666qLroqppFV9V3vuPEcRI6g5DI7z7O/57Xvf6Ai3ILIeKiEUiCcYQkSeMODvGOsZDklLEjyUXjTpKMGm8jyQ+Nt5Ni0jjKYT41jnGYXxrHOcKfjROc4D/GSQYjR4x30hupGO/iYORXxrvpiiwb72nxM8XByJfGe1d1YsBKR8o4wjc7vjDuYGfHl8bCZXHGrmVPJ+Ny1XgbR+SR8Xaeyd+No3S7XxjH6HZ/NU7Q1bnNeIf4zpzxTrqj3ws5ArujPzWOsDv6c+MODkTvGwvJ6IqxIxU1/Ugnqeg/jLeRilosQf5jUeMoh2IHjGP4WL9xnKOxHxgnyMR+YpwkHVsw3kFX7J/GO8nFmzq7OBy/ZrybU/FPjPe0+Jzi3bjlKrK3RXPfqub+CKTifzOOkIo35zt4N/5fY2Ff4qCx40AiY9zJgcQl420cSIwbb2df4lPjKJnEz4xjvJd4bhznaOJfxgm6k98wTpJLNjV3cir5Y+NdZJJ/MN7NxeS/jfe0+Jmia8cJ472BjszKM1mUV3gKLVyijOcwnkm8PJY5vMzKgizJnDyWV/JE5uS5fCb35bH8Hh+5JEvyQP4kT/DysIXnW3hFPpMHsiQP5XNZkKd4l5UFeSlL8rksyqLOvjL7WfmjvMZzveMLbgRnyCN5oCqhLwtyX+ZlTpYDHa6T4YYsy0t5Jk/ld2q/onq/wcszmZXXsiizuvPYFjufynON8YUsy5wsyW/lRXOW6xzhhryQ1/JYHspTWQxODc6Wl3h5pDOzahPObO7joS1Ovo+XOXkis5qFIMvLzXn196ie3pJfjqqna3VryXfbWknHG/PeUhXbsVpJfo2niwxZMniO2ahLR3nGqXKTIp4R7lGnQZEp6niGqDBGlRrT+n9B18bxvMcEDRpM08txjnNX/6UprKql1XKK43wr8Ie7lGkwgecaReoUqXHH1M5TpUIDzxUKTAW++HcYocoMNcYo+v2kW8d4zlFlXOkqNaqqWmKGSQrU6CJNhvfJ0UeeQQYYpm+dQtM+tD7WZh9aDTPAB3ysvtYpq5d+nfYEVRoaaYU7eLK6liZLlhP0MUWB2xR11y2KfKIeBwo9pDlBDye0Ll/ds/VZKGudCngaWp9xrV2w7zaeKrfeusJljTWoWGD3ERWtX7g2QsN2hqdXGOe42nuNdEIz5lV5Ritbo6y702/lzVUKGr9nkDSei6Ya9NWoZjf4O6P9FvhdpPI1+rPBPaYpMsqE5XOtH0c0hw3uak7XMj5JWStQ0U4OcjKjWQjjbmZthCEu4xlW/co65cvrFIJI2vssq32U1tgmNj13rf53KFDWDrnJpK6s3beCnpvnO8oNevFt2akzphWapqE1qqtWWmtQ4jjDnOdymyf/P0fj+jes/U1mVrsnjC7omuCW5xnRyo/4/XgGdDzEiGbkuwwxykWG+YhRHee5xjXyXGGUIT5Q22Gu6XswzBUG1WJIOVw7rzfgCt/H8yFDuifQLlp+wooFN3Nava+r72Evl5liWnMeeJ7WWIsa4devsOeWqTZt62ozRplbutNr/Sp61wuUrCum1cMpzWWzN9ZuXdgRUxpLUNu19RJVfV9renMDVc89ezuCbg19Cl+Ixleoavqteqa+msOi+rx+XLLfgbK+jeGr0/xGGdFfgrL+fo2p14FtEFHwe9k+M79hZkVrVeMm5bDXZIVz3NPTJu0eeW5qbGoRfplQ1yrUtUaBRz9SlWrzm8ReiyolfZ+mNXNjeqPu6SjsAv0q2XJvwV69mmb9dvN7ZMPZwVs1ae++19hKpn6IGxSYNJWKvZSeCjP6+1nT1fCuaWxk3+hPu1K99UtlQxWP6tveXpP22m62S79m2ivjsuuqvZndijvjzrp+l3cDrt99G+8y7TOU3Md4l8O7v+BdHu9OuozLux53wfW6jDvlci7vMkp51+tygVXkknK/ap3RHafdh8GKPNxyZX7LlRU976zLrp3gskpnXc71uT6Xcxdcj65m3DDe9bqzLuMGgnGzB9XvC6rT6067c24gVHenXb/rc5ebvegGXM6dcf3ufdUYbDmz2/W4wcCzZi9uujf04KTrcj3upOt2/WGmmv24pR8n3WmXcb16Tr9GlQlUm525hV89VpFTGn+wZ8D1BBlp7bWNdQ764Y012pBvtdjQHW/Umd+sM95osfI/AAAA//8BAAD//5uVuAcAAwAAAAAAAP+1ADIAAAABAAAAAAAAAAAAAAAAAAAAAA=="); | |
| }]]></style><style type="text/css"><![CDATA[.shape { | |
| shape-rendering: geometricPrecision; | |
| stroke-linejoin: round; | |
| } | |
| .connection { | |
| stroke-linecap: round; | |
| stroke-linejoin: round; | |
| } | |
| .blend { | |
| mix-blend-mode: multiply; | |
| opacity: 0.5; | |
| } | |
| .d2-2784127954 .fill-N1{fill:#CDD6F4;} | |
| .d2-2784127954 .fill-N2{fill:#BAC2DE;} | |
| .d2-2784127954 .fill-N3{fill:#A6ADC8;} | |
| .d2-2784127954 .fill-N4{fill:#585B70;} | |
| .d2-2784127954 .fill-N5{fill:#45475A;} | |
| .d2-2784127954 .fill-N6{fill:#313244;} | |
| .d2-2784127954 .fill-N7{fill:#1E1E2E;} | |
| .d2-2784127954 .fill-B1{fill:#CBA6f7;} | |
| .d2-2784127954 .fill-B2{fill:#CBA6f7;} | |
| .d2-2784127954 .fill-B3{fill:#6C7086;} | |
| .d2-2784127954 .fill-B4{fill:#585B70;} | |
| .d2-2784127954 .fill-B5{fill:#45475A;} | |
| .d2-2784127954 .fill-B6{fill:#313244;} | |
| .d2-2784127954 .fill-AA2{fill:#f38BA8;} | |
| .d2-2784127954 .fill-AA4{fill:#45475A;} | |
| .d2-2784127954 .fill-AA5{fill:#313244;} | |
| .d2-2784127954 .fill-AB4{fill:#45475A;} | |
| .d2-2784127954 .fill-AB5{fill:#313244;} | |
| .d2-2784127954 .stroke-N1{stroke:#CDD6F4;} | |
| .d2-2784127954 .stroke-N2{stroke:#BAC2DE;} | |
| .d2-2784127954 .stroke-N3{stroke:#A6ADC8;} | |
| .d2-2784127954 .stroke-N4{stroke:#585B70;} | |
| .d2-2784127954 .stroke-N5{stroke:#45475A;} | |
| .d2-2784127954 .stroke-N6{stroke:#313244;} | |
| .d2-2784127954 .stroke-N7{stroke:#1E1E2E;} | |
| .d2-2784127954 .stroke-B1{stroke:#CBA6f7;} | |
| .d2-2784127954 .stroke-B2{stroke:#CBA6f7;} | |
| .d2-2784127954 .stroke-B3{stroke:#6C7086;} | |
| .d2-2784127954 .stroke-B4{stroke:#585B70;} | |
| .d2-2784127954 .stroke-B5{stroke:#45475A;} | |
| .d2-2784127954 .stroke-B6{stroke:#313244;} | |
| .d2-2784127954 .stroke-AA2{stroke:#f38BA8;} | |
| .d2-2784127954 .stroke-AA4{stroke:#45475A;} | |
| .d2-2784127954 .stroke-AA5{stroke:#313244;} | |
| .d2-2784127954 .stroke-AB4{stroke:#45475A;} | |
| .d2-2784127954 .stroke-AB5{stroke:#313244;} | |
| .d2-2784127954 .background-color-N1{background-color:#CDD6F4;} | |
| .d2-2784127954 .background-color-N2{background-color:#BAC2DE;} | |
| .d2-2784127954 .background-color-N3{background-color:#A6ADC8;} | |
| .d2-2784127954 .background-color-N4{background-color:#585B70;} | |
| .d2-2784127954 .background-color-N5{background-color:#45475A;} | |
| .d2-2784127954 .background-color-N6{background-color:#313244;} | |
| .d2-2784127954 .background-color-N7{background-color:#1E1E2E;} | |
| .d2-2784127954 .background-color-B1{background-color:#CBA6f7;} | |
| .d2-2784127954 .background-color-B2{background-color:#CBA6f7;} | |
| .d2-2784127954 .background-color-B3{background-color:#6C7086;} | |
| .d2-2784127954 .background-color-B4{background-color:#585B70;} | |
| .d2-2784127954 .background-color-B5{background-color:#45475A;} | |
| .d2-2784127954 .background-color-B6{background-color:#313244;} | |
| .d2-2784127954 .background-color-AA2{background-color:#f38BA8;} | |
| .d2-2784127954 .background-color-AA4{background-color:#45475A;} | |
| .d2-2784127954 .background-color-AA5{background-color:#313244;} | |
| .d2-2784127954 .background-color-AB4{background-color:#45475A;} | |
| .d2-2784127954 .background-color-AB5{background-color:#313244;} | |
| .d2-2784127954 .color-N1{color:#CDD6F4;} | |
| .d2-2784127954 .color-N2{color:#BAC2DE;} | |
| .d2-2784127954 .color-N3{color:#A6ADC8;} | |
| .d2-2784127954 .color-N4{color:#585B70;} | |
| .d2-2784127954 .color-N5{color:#45475A;} | |
| .d2-2784127954 .color-N6{color:#313244;} | |
| .d2-2784127954 .color-N7{color:#1E1E2E;} | |
| .d2-2784127954 .color-B1{color:#CBA6f7;} | |
| .d2-2784127954 .color-B2{color:#CBA6f7;} | |
| .d2-2784127954 .color-B3{color:#6C7086;} | |
| .d2-2784127954 .color-B4{color:#585B70;} | |
| .d2-2784127954 .color-B5{color:#45475A;} | |
| .d2-2784127954 .color-B6{color:#313244;} | |
| .d2-2784127954 .color-AA2{color:#f38BA8;} | |
| .d2-2784127954 .color-AA4{color:#45475A;} | |
| .d2-2784127954 .color-AA5{color:#313244;} | |
| .d2-2784127954 .color-AB4{color:#45475A;} | |
| .d2-2784127954 .color-AB5{color:#313244;}.appendix text.text{fill:#CDD6F4}.md{--color-fg-default:#CDD6F4;--color-fg-muted:#BAC2DE;--color-fg-subtle:#A6ADC8;--color-canvas-default:#1E1E2E;--color-canvas-subtle:#313244;--color-border-default:#CBA6f7;--color-border-muted:#CBA6f7;--color-neutral-muted:#313244;--color-accent-fg:#CBA6f7;--color-accent-emphasis:#CBA6f7;--color-attention-subtle:#BAC2DE;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-normal-d2-2784127954);mix-blend-mode:color-burn}.sketch-overlay-B2{fill:url(#streaks-normal-d2-2784127954);mix-blend-mode:color-burn}.sketch-overlay-B3{fill:url(#streaks-dark-d2-2784127954);mix-blend-mode:overlay}.sketch-overlay-B4{fill:url(#streaks-dark-d2-2784127954);mix-blend-mode:overlay}.sketch-overlay-B5{fill:url(#streaks-darker-d2-2784127954);mix-blend-mode:lighten}.sketch-overlay-B6{fill:url(#streaks-darker-d2-2784127954);mix-blend-mode:lighten}.sketch-overlay-AA2{fill:url(#streaks-normal-d2-2784127954);mix-blend-mode:color-burn}.sketch-overlay-AA4{fill:url(#streaks-darker-d2-2784127954);mix-blend-mode:lighten}.sketch-overlay-AA5{fill:url(#streaks-darker-d2-2784127954);mix-blend-mode:lighten}.sketch-overlay-AB4{fill:url(#streaks-darker-d2-2784127954);mix-blend-mode:lighten}.sketch-overlay-AB5{fill:url(#streaks-darker-d2-2784127954);mix-blend-mode:lighten}.sketch-overlay-N1{fill:url(#streaks-normal-d2-2784127954);mix-blend-mode:color-burn}.sketch-overlay-N2{fill:url(#streaks-normal-d2-2784127954);mix-blend-mode:color-burn}.sketch-overlay-N3{fill:url(#streaks-normal-d2-2784127954);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-dark-d2-2784127954);mix-blend-mode:overlay}.sketch-overlay-N5{fill:url(#streaks-darker-d2-2784127954);mix-blend-mode:lighten}.sketch-overlay-N6{fill:url(#streaks-darker-d2-2784127954);mix-blend-mode:lighten}.sketch-overlay-N7{fill:url(#streaks-darker-d2-2784127954);mix-blend-mode:lighten}.light-code{display: none}.dark-code{display: block}]]></style><style type="text/css">.d2-2784127954 .md em, | |
| .d2-2784127954 .md dfn { | |
| font-family: "d2-2784127954-font-italic"; | |
| } | |
| .d2-2784127954 .md b, | |
| .d2-2784127954 .md strong { | |
| font-family: "d2-2784127954-font-bold"; | |
| } | |
| .d2-2784127954 .md code, | |
| .d2-2784127954 .md kbd, | |
| .d2-2784127954 .md pre, | |
| .d2-2784127954 .md samp { | |
| font-family: "d2-2784127954-font-mono"; | |
| font-size: 1em; | |
| } | |
| .d2-2784127954 .md { | |
| tab-size: 4; | |
| } | |
| /* variables are provided in d2renderers/d2svg/d2svg.go */ | |
| .d2-2784127954 .md { | |
| -ms-text-size-adjust: 100%; | |
| -webkit-text-size-adjust: 100%; | |
| margin: 0; | |
| background-color: transparent; /* we don't want to define the background color */ | |
| font-family: "d2-2784127954-font-regular"; | |
| font-size: 16px; | |
| line-height: 1.5; | |
| word-wrap: break-word; | |
| } | |
| .d2-2784127954 .md details, | |
| .d2-2784127954 .md figcaption, | |
| .d2-2784127954 .md figure { | |
| display: block; | |
| } | |
| .d2-2784127954 .md summary { | |
| display: list-item; | |
| } | |
| .d2-2784127954 .md [hidden] { | |
| display: none !important; | |
| } | |
| .d2-2784127954 .md a { | |
| background-color: transparent; | |
| color: var(--color-accent-fg); | |
| text-decoration: none; | |
| } | |
| .d2-2784127954 .md a:active, | |
| .d2-2784127954 .md a:hover { | |
| outline-width: 0; | |
| } | |
| .d2-2784127954 .md abbr[title] { | |
| border-bottom: none; | |
| text-decoration: underline dotted; | |
| } | |
| .d2-2784127954 .md dfn { | |
| font-style: italic; | |
| } | |
| .d2-2784127954 .md h1 { | |
| margin: 0.67em 0; | |
| padding-bottom: 0.3em; | |
| font-size: 2em; | |
| border-bottom: 1px solid var(--color-border-muted); | |
| } | |
| .d2-2784127954 .md mark { | |
| background-color: var(--color-attention-subtle); | |
| color: var(--color-text-primary); | |
| } | |
| .d2-2784127954 .md small { | |
| font-size: 90%; | |
| } | |
| .d2-2784127954 .md sub, | |
| .d2-2784127954 .md sup { | |
| font-size: 75%; | |
| line-height: 0; | |
| position: relative; | |
| vertical-align: baseline; | |
| } | |
| .d2-2784127954 .md sub { | |
| bottom: -0.25em; | |
| } | |
| .d2-2784127954 .md sup { | |
| top: -0.5em; | |
| } | |
| .d2-2784127954 .md img { | |
| border-style: none; | |
| max-width: 100%; | |
| box-sizing: content-box; | |
| background-color: var(--color-canvas-default); | |
| } | |
| .d2-2784127954 .md figure { | |
| margin: 1em 40px; | |
| } | |
| .d2-2784127954 .md hr { | |
| box-sizing: content-box; | |
| overflow: hidden; | |
| background: transparent; | |
| border-bottom: 1px solid var(--color-border-muted); | |
| height: 0.25em; | |
| padding: 0; | |
| margin: 24px 0; | |
| background-color: var(--color-border-default); | |
| border: 0; | |
| } | |
| .d2-2784127954 .md input { | |
| font: inherit; | |
| margin: 0; | |
| overflow: visible; | |
| font-family: inherit; | |
| font-size: inherit; | |
| line-height: inherit; | |
| } | |
| .d2-2784127954 .md [type="button"], | |
| .d2-2784127954 .md [type="reset"], | |
| .d2-2784127954 .md [type="submit"] { | |
| -webkit-appearance: button; | |
| } | |
| .d2-2784127954 .md [type="button"]::-moz-focus-inner, | |
| .d2-2784127954 .md [type="reset"]::-moz-focus-inner, | |
| .d2-2784127954 .md [type="submit"]::-moz-focus-inner { | |
| border-style: none; | |
| padding: 0; | |
| } | |
| .d2-2784127954 .md [type="button"]:-moz-focusring, | |
| .d2-2784127954 .md [type="reset"]:-moz-focusring, | |
| .d2-2784127954 .md [type="submit"]:-moz-focusring { | |
| outline: 1px dotted ButtonText; | |
| } | |
| .d2-2784127954 .md [type="checkbox"], | |
| .d2-2784127954 .md [type="radio"] { | |
| box-sizing: border-box; | |
| padding: 0; | |
| } | |
| .d2-2784127954 .md [type="number"]::-webkit-inner-spin-button, | |
| .d2-2784127954 .md [type="number"]::-webkit-outer-spin-button { | |
| height: auto; | |
| } | |
| .d2-2784127954 .md [type="search"] { | |
| -webkit-appearance: textfield; | |
| outline-offset: -2px; | |
| } | |
| .d2-2784127954 .md [type="search"]::-webkit-search-cancel-button, | |
| .d2-2784127954 .md [type="search"]::-webkit-search-decoration { | |
| -webkit-appearance: none; | |
| } | |
| .d2-2784127954 .md ::-webkit-input-placeholder { | |
| color: inherit; | |
| opacity: 0.54; | |
| } | |
| .d2-2784127954 .md ::-webkit-file-upload-button { | |
| -webkit-appearance: button; | |
| font: inherit; | |
| } | |
| .d2-2784127954 .md a:hover { | |
| text-decoration: underline; | |
| } | |
| .d2-2784127954 .md hr::before { | |
| display: table; | |
| content: ""; | |
| } | |
| .d2-2784127954 .md hr::after { | |
| display: table; | |
| clear: both; | |
| content: ""; | |
| } | |
| .d2-2784127954 .md table { | |
| border-spacing: 0; | |
| border-collapse: collapse; | |
| display: block; | |
| width: max-content; | |
| max-width: 100%; | |
| overflow: auto; | |
| } | |
| .d2-2784127954 .md td, | |
| .d2-2784127954 .md th { | |
| padding: 0; | |
| } | |
| .d2-2784127954 .md details summary { | |
| cursor: pointer; | |
| } | |
| .d2-2784127954 .md details:not([open]) > *:not(summary) { | |
| display: none !important; | |
| } | |
| .d2-2784127954 .md kbd { | |
| display: inline-block; | |
| padding: 3px 5px; | |
| color: var(--color-fg-default); | |
| vertical-align: middle; | |
| background-color: var(--color-canvas-subtle); | |
| border: solid 1px var(--color-neutral-muted); | |
| border-bottom-color: var(--color-neutral-muted); | |
| border-radius: 6px; | |
| box-shadow: inset 0 -1px 0 var(--color-neutral-muted); | |
| } | |
| .d2-2784127954 .md h1, | |
| .d2-2784127954 .md h2, | |
| .d2-2784127954 .md h3, | |
| .d2-2784127954 .md h4, | |
| .d2-2784127954 .md h5, | |
| .d2-2784127954 .md h6 { | |
| margin-top: 24px; | |
| margin-bottom: 16px; | |
| font-weight: 400; | |
| line-height: 1.25; | |
| font-family: "d2-2784127954-font-semibold"; | |
| } | |
| .d2-2784127954 .md h2 { | |
| padding-bottom: 0.3em; | |
| font-size: 1.5em; | |
| border-bottom: 1px solid var(--color-border-muted); | |
| } | |
| .d2-2784127954 .md h3 { | |
| font-size: 1.25em; | |
| } | |
| .d2-2784127954 .md h4 { | |
| font-size: 1em; | |
| } | |
| .d2-2784127954 .md h5 { | |
| font-size: 0.875em; | |
| } | |
| .d2-2784127954 .md h6 { | |
| font-size: 0.85em; | |
| color: var(--color-fg-muted); | |
| } | |
| .d2-2784127954 .md p { | |
| margin-top: 0; | |
| margin-bottom: 10px; | |
| } | |
| .d2-2784127954 .md blockquote { | |
| margin: 0; | |
| padding: 0 1em; | |
| color: var(--color-fg-muted); | |
| border-left: 0.25em solid var(--color-border-default); | |
| } | |
| .d2-2784127954 .md ul, | |
| .d2-2784127954 .md ol { | |
| margin-top: 0; | |
| margin-bottom: 0; | |
| padding-left: 2em; | |
| } | |
| .d2-2784127954 .md ol ol, | |
| .d2-2784127954 .md ul ol { | |
| list-style-type: lower-roman; | |
| } | |
| .d2-2784127954 .md ul ul ol, | |
| .d2-2784127954 .md ul ol ol, | |
| .d2-2784127954 .md ol ul ol, | |
| .d2-2784127954 .md ol ol ol { | |
| list-style-type: lower-alpha; | |
| } | |
| .d2-2784127954 .md dd { | |
| margin-left: 0; | |
| } | |
| .d2-2784127954 .md pre { | |
| margin-top: 0; | |
| margin-bottom: 0; | |
| word-wrap: normal; | |
| } | |
| .d2-2784127954 .md ::placeholder { | |
| color: var(--color-fg-subtle); | |
| opacity: 1; | |
| } | |
| .d2-2784127954 .md input::-webkit-outer-spin-button, | |
| .d2-2784127954 .md input::-webkit-inner-spin-button { | |
| margin: 0; | |
| -webkit-appearance: none; | |
| appearance: none; | |
| } | |
| .d2-2784127954 .md::before { | |
| display: table; | |
| content: ""; | |
| } | |
| .d2-2784127954 .md::after { | |
| display: table; | |
| clear: both; | |
| content: ""; | |
| } | |
| .d2-2784127954 .md > *:first-child { | |
| margin-top: 0 !important; | |
| } | |
| .d2-2784127954 .md > *:last-child { | |
| margin-bottom: 0 !important; | |
| } | |
| .d2-2784127954 .md a:not([href]) { | |
| color: inherit; | |
| text-decoration: none; | |
| } | |
| .d2-2784127954 .md .absent { | |
| color: var(--color-danger-fg); | |
| } | |
| .d2-2784127954 .md .anchor { | |
| float: left; | |
| padding-right: 4px; | |
| margin-left: -20px; | |
| line-height: 1; | |
| } | |
| .d2-2784127954 .md .anchor:focus { | |
| outline: none; | |
| } | |
| .d2-2784127954 .md p, | |
| .d2-2784127954 .md blockquote, | |
| .d2-2784127954 .md ul, | |
| .d2-2784127954 .md ol, | |
| .d2-2784127954 .md dl, | |
| .d2-2784127954 .md table, | |
| .d2-2784127954 .md pre, | |
| .d2-2784127954 .md details { | |
| margin-top: 0; | |
| margin-bottom: 16px; | |
| } | |
| .d2-2784127954 .md blockquote > :first-child { | |
| margin-top: 0; | |
| } | |
| .d2-2784127954 .md blockquote > :last-child { | |
| margin-bottom: 0; | |
| } | |
| .d2-2784127954 .md sup > a::before { | |
| content: "["; | |
| } | |
| .d2-2784127954 .md sup > a::after { | |
| content: "]"; | |
| } | |
| .d2-2784127954 .md h1:hover .anchor, | |
| .d2-2784127954 .md h2:hover .anchor, | |
| .d2-2784127954 .md h3:hover .anchor, | |
| .d2-2784127954 .md h4:hover .anchor, | |
| .d2-2784127954 .md h5:hover .anchor, | |
| .d2-2784127954 .md h6:hover .anchor { | |
| text-decoration: none; | |
| } | |
| .d2-2784127954 .md h1 tt, | |
| .d2-2784127954 .md h1 code, | |
| .d2-2784127954 .md h2 tt, | |
| .d2-2784127954 .md h2 code, | |
| .d2-2784127954 .md h3 tt, | |
| .d2-2784127954 .md h3 code, | |
| .d2-2784127954 .md h4 tt, | |
| .d2-2784127954 .md h4 code, | |
| .d2-2784127954 .md h5 tt, | |
| .d2-2784127954 .md h5 code, | |
| .d2-2784127954 .md h6 tt, | |
| .d2-2784127954 .md h6 code { | |
| padding: 0 0.2em; | |
| font-size: inherit; | |
| } | |
| .d2-2784127954 .md ul.no-list, | |
| .d2-2784127954 .md ol.no-list { | |
| padding: 0; | |
| list-style-type: none; | |
| } | |
| .d2-2784127954 .md ol[type="1"] { | |
| list-style-type: decimal; | |
| } | |
| .d2-2784127954 .md ol[type="a"] { | |
| list-style-type: lower-alpha; | |
| } | |
| .d2-2784127954 .md ol[type="i"] { | |
| list-style-type: lower-roman; | |
| } | |
| .d2-2784127954 .md div > ol:not([type]) { | |
| list-style-type: decimal; | |
| } | |
| .d2-2784127954 .md ul ul, | |
| .d2-2784127954 .md ul ol, | |
| .d2-2784127954 .md ol ol, | |
| .d2-2784127954 .md ol ul { | |
| margin-top: 0; | |
| margin-bottom: 0; | |
| } | |
| .d2-2784127954 .md li > p { | |
| margin-top: 16px; | |
| } | |
| .d2-2784127954 .md li + li { | |
| margin-top: 0.25em; | |
| } | |
| .d2-2784127954 .md dl { | |
| padding: 0; | |
| } | |
| .d2-2784127954 .md dl dt { | |
| padding: 0; | |
| margin-top: 16px; | |
| font-size: 1em; | |
| font-style: italic; | |
| font-family: "d2-2784127954-font-semibold"; | |
| } | |
| .d2-2784127954 .md dl dd { | |
| padding: 0 16px; | |
| margin-bottom: 16px; | |
| } | |
| .d2-2784127954 .md table th { | |
| font-family: "d2-2784127954-font-semibold"; | |
| } | |
| .d2-2784127954 .md table th, | |
| .d2-2784127954 .md table td { | |
| padding: 6px 13px; | |
| border: 1px solid var(--color-border-default); | |
| } | |
| .d2-2784127954 .md table tr { | |
| background-color: var(--color-canvas-default); | |
| border-top: 1px solid var(--color-border-muted); | |
| } | |
| .d2-2784127954 .md table tr:nth-child(2n) { | |
| background-color: var(--color-canvas-subtle); | |
| } | |
| .d2-2784127954 .md table img { | |
| background-color: transparent; | |
| } | |
| .d2-2784127954 .md img[align="right"] { | |
| padding-left: 20px; | |
| } | |
| .d2-2784127954 .md img[align="left"] { | |
| padding-right: 20px; | |
| } | |
| .d2-2784127954 .md span.frame { | |
| display: block; | |
| overflow: hidden; | |
| } | |
| .d2-2784127954 .md span.frame > span { | |
| display: block; | |
| float: left; | |
| width: auto; | |
| padding: 7px; | |
| margin: 13px 0 0; | |
| overflow: hidden; | |
| border: 1px solid var(--color-border-default); | |
| } | |
| .d2-2784127954 .md span.frame span img { | |
| display: block; | |
| float: left; | |
| } | |
| .d2-2784127954 .md span.frame span span { | |
| display: block; | |
| padding: 5px 0 0; | |
| clear: both; | |
| color: var(--color-fg-default); | |
| } | |
| .d2-2784127954 .md span.align-center { | |
| display: block; | |
| overflow: hidden; | |
| clear: both; | |
| } | |
| .d2-2784127954 .md span.align-center > span { | |
| display: block; | |
| margin: 13px auto 0; | |
| overflow: hidden; | |
| text-align: center; | |
| } | |
| .d2-2784127954 .md span.align-center span img { | |
| margin: 0 auto; | |
| text-align: center; | |
| } | |
| .d2-2784127954 .md span.align-right { | |
| display: block; | |
| overflow: hidden; | |
| clear: both; | |
| } | |
| .d2-2784127954 .md span.align-right > span { | |
| display: block; | |
| margin: 13px 0 0; | |
| overflow: hidden; | |
| text-align: right; | |
| } | |
| .d2-2784127954 .md span.align-right span img { | |
| margin: 0; | |
| text-align: right; | |
| } | |
| .d2-2784127954 .md span.float-left { | |
| display: block; | |
| float: left; | |
| margin-right: 13px; | |
| overflow: hidden; | |
| } | |
| .d2-2784127954 .md span.float-left span { | |
| margin: 13px 0 0; | |
| } | |
| .d2-2784127954 .md span.float-right { | |
| display: block; | |
| float: right; | |
| margin-left: 13px; | |
| overflow: hidden; | |
| } | |
| .d2-2784127954 .md span.float-right > span { | |
| display: block; | |
| margin: 13px auto 0; | |
| overflow: hidden; | |
| text-align: right; | |
| } | |
| .d2-2784127954 .md code, | |
| .d2-2784127954 .md tt { | |
| padding: 0.2em 0.4em; | |
| margin: 0; | |
| font-size: 85%; | |
| background-color: var(--color-neutral-muted); | |
| border-radius: 6px; | |
| } | |
| .d2-2784127954 .md code br, | |
| .d2-2784127954 .md tt br { | |
| display: none; | |
| } | |
| .d2-2784127954 .md del code { | |
| text-decoration: inherit; | |
| } | |
| .d2-2784127954 .md pre code { | |
| font-size: 100%; | |
| } | |
| .d2-2784127954 .md pre > code { | |
| padding: 0; | |
| margin: 0; | |
| word-break: normal; | |
| white-space: pre; | |
| background: transparent; | |
| border: 0; | |
| } | |
| .d2-2784127954 .md .highlight { | |
| margin-bottom: 16px; | |
| } | |
| .d2-2784127954 .md .highlight pre { | |
| margin-bottom: 0; | |
| word-break: normal; | |
| } | |
| .d2-2784127954 .md .highlight pre, | |
| .d2-2784127954 .md pre { | |
| padding: 16px; | |
| overflow: auto; | |
| font-size: 85%; | |
| line-height: 1.45; | |
| background-color: var(--color-canvas-subtle); | |
| border-radius: 6px; | |
| } | |
| .d2-2784127954 .md pre code, | |
| .d2-2784127954 .md pre tt { | |
| display: inline; | |
| max-width: auto; | |
| padding: 0; | |
| margin: 0; | |
| overflow: visible; | |
| line-height: inherit; | |
| word-wrap: normal; | |
| background-color: transparent; | |
| border: 0; | |
| } | |
| .d2-2784127954 .md .csv-data td, | |
| .d2-2784127954 .md .csv-data th { | |
| padding: 5px; | |
| overflow: hidden; | |
| font-size: 12px; | |
| line-height: 1; | |
| text-align: left; | |
| white-space: nowrap; | |
| } | |
| .d2-2784127954 .md .csv-data .blob-num { | |
| padding: 10px 8px 9px; | |
| text-align: right; | |
| background: var(--color-canvas-default); | |
| border: 0; | |
| } | |
| .d2-2784127954 .md .csv-data tr { | |
| border-top: 0; | |
| } | |
| .d2-2784127954 .md .csv-data th { | |
| font-family: "d2-2784127954-font-semibold"; | |
| background: var(--color-canvas-subtle); | |
| border-top: 0; | |
| } | |
| .d2-2784127954 .md .footnotes { | |
| font-size: 12px; | |
| color: var(--color-fg-muted); | |
| border-top: 1px solid var(--color-border-default); | |
| } | |
| .d2-2784127954 .md .footnotes ol { | |
| padding-left: 16px; | |
| } | |
| .d2-2784127954 .md .footnotes li { | |
| position: relative; | |
| } | |
| .d2-2784127954 .md .footnotes li:target::before { | |
| position: absolute; | |
| top: -8px; | |
| right: -8px; | |
| bottom: -8px; | |
| left: -24px; | |
| pointer-events: none; | |
| content: ""; | |
| border: 2px solid var(--color-accent-emphasis); | |
| border-radius: 6px; | |
| } | |
| .d2-2784127954 .md .footnotes li:target { | |
| color: var(--color-fg-default); | |
| } | |
| .d2-2784127954 .md .task-list-item { | |
| list-style-type: none; | |
| } | |
| .d2-2784127954 .md .task-list-item label { | |
| font-weight: 400; | |
| } | |
| .d2-2784127954 .md .task-list-item.enabled label { | |
| cursor: pointer; | |
| } | |
| .d2-2784127954 .md .task-list-item + .task-list-item { | |
| margin-top: 3px; | |
| } | |
| .d2-2784127954 .md .task-list-item .handle { | |
| display: none; | |
| } | |
| .d2-2784127954 .md .task-list-item-checkbox { | |
| margin: 0 0.2em 0.25em -1.6em; | |
| vertical-align: middle; | |
| } | |
| .d2-2784127954 .md .contains-task-list:dir(rtl) .task-list-item-checkbox { | |
| margin: 0 -1.6em 0.25em 0.2em; | |
| } | |
| </style><g class="dGl0bGU="><g class="shape" ></g><g><foreignObject requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" x="1546.000000" y="-113.000000" width="820" height="128"><div xmlns="http://www.w3.org/1999/xhtml" class="md color-N1" style="font-size:24px"><h1>NeetoDeploy Rate Limiting Architecture</h1> | |
| <p>Traefik middleware-based request filtering at the edge</p> | |
| </div></foreignObject></g></g><g class="Y2xpZW50"><g class="shape" ><path d="M 374 1058 H 178 V 1056 C 178 1034 200 1014 233 1004 C 215 996 204 984 204 970 C 204 946 236 927 276 927 C 316 927 348 946 348 970 C 348 984 337 996 318 1005 C 352 1015 373 1035 373 1057 V 1059 H 374 Z" stroke="#CBA6f7" fill="#E3F2FD" class=" stroke-B1" style="stroke-width:2;" /></g><text x="276.000000" y="1079.000000" fill="#CDD6F4" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px"><tspan x="276.000000" dy="0.000000">Client</tspan><tspan x="276.000000" dy="18.500000">(Browser / API Consumer)</tspan></text></g><g class="Y2x1c3Rlcg=="><g class="shape" ><rect x="85.000000" y="76.000000" width="3743.000000" height="745.000000" rx="12.000000" stroke="#666" fill="#F5F5F5" style="stroke-width:2;" /></g><text x="1956.500000" y="63.000000" fill="#CDD6F4" class="text fill-N1" style="text-anchor:middle;font-size:28px">Kubernetes Cluster</text></g><g class="Y2x1c3Rlci50cmFlZmlr"><g class="shape" ><rect x="772.000000" y="409.000000" width="2208.000000" height="246.000000" rx="8.000000" stroke="#E65100" fill="#FFF3E0" style="stroke-width:2;" /></g><text x="1876.000000" y="397.000000" fill="#CDD6F4" class="text fill-N1" style="text-anchor:middle;font-size:24px">Traefik Proxy</text></g><g class="Y2x1c3Rlci5zZXJ2aWNl"><g class="shape" ><path d="M 3299 466 L 3241 512 L 3299 559 L 3414 559 L 3472 512 L 3414 466 Z" stroke="#2E7D32" fill="#E8F5E9" style="stroke-width:2;" /></g><text x="3356.500000" y="510.000000" fill="#CDD6F4" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px"><tspan x="3356.500000" dy="0.000000">{app}-web-service</tspan><tspan x="3356.500000" dy="18.500000">ClusterIP :3000</tspan></text></g><g class="Y2x1c3Rlci5wb2Rz"><g class="shape" ><rect x="3659.000000" y="117.000000" width="139.000000" height="555.000000" rx="8.000000" stroke="#388E3C" fill="#C8E6C9" style="stroke-width:2;" /></g><text x="3728.500000" y="105.000000" fill="#CDD6F4" class="text fill-N1" style="text-anchor:middle;font-size:24px">App Pods</text></g><g class="Y2x1c3Rlci5yZWplY3Q="><g class="shape" ><path d="M 2127 688 H 2287 C 2288 688 2289 688 2290 689 L 2307 705 C 2308 706 2308 707 2308 708 V 791 C 2308 791 2308 791 2308 791 H 2127 C 2126 791 2126 791 2126 791 V 689 C 2126 688 2126 688 2127 688 Z" stroke="#C62828" fill="#FFCDD2" style="stroke-width:2;" /><path d="M 2307 791 H 2127 C 2126 791 2126 791 2126 790 V 689 C 2126 688 2126 688 2127 688 H 2286 C 2287 688 2287 688 2287 689 V 706 C 2287 707 2288 708 2289 708 H 2307 C 2308 708 2308 708 2308 709 V 790 C 2307 791 2308 791 2307 791 Z" stroke="#C62828" fill="#FFCDD2" style="stroke-width:2;" /></g><text x="2217.000000" y="737.000000" fill="#CDD6F4" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px"><tspan x="2217.000000" dy="0.000000">HTTP 429</tspan><tspan x="2217.000000" dy="18.500000">Too Many Requests</tspan></text></g><g class="Y2x1c3Rlci5taWRkbGV3YXJlX2NyZA=="><g class="shape" ><rect x="115.000000" y="297.000000" width="322.000000" height="185.000000" rx="8.000000" stroke="#0277BD" fill="#E1F5FE" style="stroke-width:2;" /></g><text x="276.000000" y="285.000000" fill="#CDD6F4" class="text fill-N1" style="text-anchor:middle;font-size:24px">Middleware CRD</text></g><g class="Y2x1c3Rlci50cmFlZmlrLmVudHJ5cG9pbnQ="><g class="shape" ><path d="M 826 543 H 997 C 1021 543 1021 580 1021 584 C 1021 588 1021 625 997 625 H 826 C 802 625 802 588 802 584 C 802 580 802 543 826 543 Z" stroke="#CBA6f7" fill="#FFE0B2" class=" stroke-B1" style="stroke-width:2;" /><path d="M 997 543 C 973 543 973 580 973 584 C 973 588 973 625 997 625" stroke="#CBA6f7" fill="#FFE0B2" class=" stroke-B1" style="stroke-width:2;" /></g><text x="899.500000" y="581.500000" fill="#CDD6F4" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px"><tspan x="899.500000" dy="0.000000">Entrypoint</tspan><tspan x="899.500000" dy="18.500000">(web/websecure)</tspan></text></g><g class="Y2x1c3Rlci50cmFlZmlrLmluZ3Jlc3M="><g class="shape" ><rect x="1209.000000" y="544.000000" width="313.000000" height="80.000000" stroke="#F57F17" fill="#FFF8E1" style="stroke-width:2;" /></g><text x="1365.500000" y="513.000000" fill="#CDD6F4" class="text fill-N1" style="text-anchor:middle;font-size:20px"><tspan x="1365.500000" dy="0.000000">IngressRoute</tspan><tspan x="1365.500000" dy="23.000000">(traefik.io/v1alpha1)</tspan></text></g><g class="Y2x1c3Rlci50cmFlZmlrLm1pZGRsZXdhcmVfY2hhaW4="><g class="shape" ><rect x="1752.000000" y="445.000000" width="1198.000000" height="150.000000" rx="8.000000" stroke="#FF8F00" fill="#FFECB3" style="stroke-width:2;" /></g><text x="2351.000000" y="434.000000" fill="#CDD6F4" class="text fill-N1" style="text-anchor:middle;font-size:20px">Middleware Chain</text></g><g class="Y2x1c3Rlci5wb2RzLnBvZDE="><g class="shape" ><path d="M 3689 171 C 3689 147 3725 147 3729 147 C 3732 147 3768 147 3768 171 V 248 C 3768 272 3732 272 3729 272 C 3725 272 3689 272 3689 248 V 171 Z" stroke="#CBA6f7" fill="#A5D6A7" class=" stroke-B1" style="stroke-width:2;" /><path d="M 3689 171 C 3689 195 3725 195 3729 195 C 3732 195 3768 195 3768 171" stroke="#CBA6f7" fill="#A5D6A7" class=" stroke-B1" style="stroke-width:2;" /></g><text x="3728.500000" y="219.500000" fill="#CDD6F4" class="text-bold fill-N1" style="text-anchor:middle;font-size:12px"><tspan x="3728.500000" dy="0.000000">Pod 1</tspan><tspan x="3728.500000" dy="14.000000">(Rails)</tspan></text></g><g class="Y2x1c3Rlci5wb2RzLnBvZDI="><g class="shape" ><path d="M 3689 356 C 3689 332 3725 332 3729 332 C 3732 332 3768 332 3768 356 V 433 C 3768 457 3732 457 3729 457 C 3725 457 3689 457 3689 433 V 356 Z" stroke="#CBA6f7" fill="#A5D6A7" class=" stroke-B1" style="stroke-width:2;" /><path d="M 3689 356 C 3689 380 3725 380 3729 380 C 3732 380 3768 380 3768 356" stroke="#CBA6f7" fill="#A5D6A7" class=" stroke-B1" style="stroke-width:2;" /></g><text x="3728.500000" y="404.500000" fill="#CDD6F4" class="text-bold fill-N1" style="text-anchor:middle;font-size:12px"><tspan x="3728.500000" dy="0.000000">Pod 2</tspan><tspan x="3728.500000" dy="14.000000">(Rails)</tspan></text></g><g class="Y2x1c3Rlci5wb2RzLnBvZDM="><g class="shape" ><path d="M 3689 541 C 3689 517 3725 517 3729 517 C 3732 517 3768 517 3768 541 V 618 C 3768 642 3732 642 3729 642 C 3725 642 3689 642 3689 618 V 541 Z" stroke="#CBA6f7" fill="#A5D6A7" class=" stroke-B1" style="stroke-width:2;" /><path d="M 3689 541 C 3689 565 3725 565 3729 565 C 3732 565 3768 565 3768 541" stroke="#CBA6f7" fill="#A5D6A7" class=" stroke-B1" style="stroke-width:2;" /></g><text x="3728.500000" y="589.500000" fill="#CDD6F4" class="text-bold fill-N1" style="text-anchor:middle;font-size:12px"><tspan x="3728.500000" dy="0.000000">Pod N</tspan><tspan x="3728.500000" dy="14.000000">(Rails)</tspan></text></g><g class="Y2x1c3Rlci5taWRkbGV3YXJlX2NyZC5zcGVj"><g class="shape" ></g><g transform="translate(145.000000 327.000000)" class="light-code" style="font-size:11"><rect width="262.000000" height="125.000000" stroke="#CDD6F4" class="shape stroke-N1" style="fill:#ffffff;stroke-width:2;" /><g transform="translate(5.500000 5.500000)"><text class="text-mono" x="0" y="1.000000em">kind: Middleware | |
| </text><text class="text-mono" x="0" y="2.300000em">apiVersion: traefik.io/v1alpha1 | |
| </text><text class="text-mono" x="0" y="3.600000em">metadata: | |
| </text><text class="text-mono" x="0" y="4.900000em">  name: {app}-rate-limit | |
| </text><text class="text-mono" x="0" y="6.200000em">spec: | |
| </text><text class="text-mono" x="0" y="7.500000em">  rateLimit: | |
| </text><text class="text-mono" x="0" y="8.800000em">    average: 5     # tokens/sec refill | |
| </text><text class="text-mono" x="0" y="10.100000em">    burst: 10      # bucket size</text></g></g><g transform="translate(145.000000 327.000000)" class="dark-code" style="font-size:11"><rect width="262.000000" height="125.000000" stroke="#CDD6F4" class="shape stroke-N1" style="fill:#1e1e2e;stroke-width:2;" /><g transform="translate(5.500000 5.500000)"><text class="text-mono" x="0" y="1.000000em"><tspan fill="#cdd6f4">kind: Middleware</tspan><tspan fill="#cdd6f4"> | |
| </tspan></text><text class="text-mono" x="0" y="2.300000em"><tspan fill="#cdd6f4"></tspan><tspan fill="#cdd6f4">apiVersion: traefik.io/v1alpha1</tspan><tspan fill="#cdd6f4"> | |
| </tspan></text><text class="text-mono" x="0" y="3.600000em"><tspan fill="#cdd6f4"></tspan><tspan fill="#cdd6f4">metadata:</tspan><tspan fill="#cdd6f4"> | |
| </tspan></text><text class="text-mono" x="0" y="4.900000em"><tspan fill="#cdd6f4"></tspan><tspan fill="#cdd6f4">  name: {app}-rate-limit</tspan><tspan fill="#cdd6f4"> | |
| </tspan></text><text class="text-mono" x="0" y="6.200000em"><tspan fill="#cdd6f4"></tspan><tspan fill="#cdd6f4">spec:</tspan><tspan fill="#cdd6f4"> | |
| </tspan></text><text class="text-mono" x="0" y="7.500000em"><tspan fill="#cdd6f4"></tspan><tspan fill="#cdd6f4">  rateLimit:</tspan><tspan fill="#cdd6f4"> | |
| </tspan></text><text class="text-mono" x="0" y="8.800000em"><tspan fill="#cdd6f4"></tspan><tspan fill="#cdd6f4">    average: 5     # tokens/sec refill</tspan><tspan fill="#cdd6f4"> | |
| </tspan></text><text class="text-mono" x="0" y="10.100000em"><tspan fill="#cdd6f4"></tspan><tspan fill="#cdd6f4">    burst: 10      # bucket size</tspan></text></g></g></g><g class="Y2x1c3Rlci50cmFlZmlrLmluZ3Jlc3MubWF0Y2g="><g class="shape" ></g><g><foreignObject requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" x="1239.000000" y="574.000000" width="253" height="20"><div xmlns="http://www.w3.org/1999/xhtml" class="md color-N1" style="font-size:13px"><p><strong>Match Rule</strong> | |
| <code>Host(\</code>app.neetodeploy.com`)`</p> | |
| </div></foreignObject></g></g><g class="Y2x1c3Rlci50cmFlZmlrLm1pZGRsZXdhcmVfY2hhaW4ucmF0ZV9saW1pdA=="><g class="shape" ><rect x="1782.000000" y="490.000000" width="136.000000" height="75.000000" stroke="#D84315" fill="#FFAB91" style="stroke-width:2;" /></g><text x="1850.000000" y="525.500000" fill="#CDD6F4" class="text-bold fill-N1" style="text-anchor:middle;font-size:13px"><tspan x="1850.000000" dy="0.000000">① Rate Limit</tspan><tspan x="1850.000000" dy="15.000000">{app}-rate-limit</tspan></text></g><g class="Y2x1c3Rlci50cmFlZmlrLm1pZGRsZXdhcmVfY2hhaW4uYmxvY2tfaXA="><g class="shape" ><rect x="2153.000000" y="475.000000" width="127.000000" height="75.000000" stroke="#E65100" fill="#FFCC80" style="stroke-width:2;" /></g><text x="2216.500000" y="510.500000" fill="#CDD6F4" class="text-bold fill-N1" style="text-anchor:middle;font-size:13px"><tspan x="2216.500000" dy="0.000000">② Block IP</tspan><tspan x="2216.500000" dy="15.000000">{app}-block-ip</tspan></text></g><g class="Y2x1c3Rlci50cmFlZmlrLm1pZGRsZXdhcmVfY2hhaW4uYmxvY2tfcGF0aA=="><g class="shape" ><rect x="2453.000000" y="475.000000" width="143.000000" height="75.000000" stroke="#F57F17" fill="#FFE082" style="stroke-width:2;" /></g><text x="2524.500000" y="510.500000" fill="#CDD6F4" class="text-bold fill-N1" style="text-anchor:middle;font-size:13px"><tspan x="2524.500000" dy="0.000000">③ Block Path</tspan><tspan x="2524.500000" dy="15.000000">{app}-block-path</tspan></text></g><g class="Y2x1c3Rlci50cmFlZmlrLm1pZGRsZXdhcmVfY2hhaW4uYmxvY2tfdWE="><g class="shape" ><rect x="2741.000000" y="475.000000" width="179.000000" height="75.000000" stroke="#F9A825" fill="#FFF59D" style="stroke-width:2;" /></g><text x="2830.500000" y="510.500000" fill="#CDD6F4" class="text-bold fill-N1" style="text-anchor:middle;font-size:13px"><tspan x="2830.500000" dy="0.000000">④ Block User Agent</tspan><tspan x="2830.500000" dy="15.000000">{app}-block-user-agent</tspan></text></g><g class="Y2x1c3Rlci50cmFlZmlrLm1pZGRsZXdhcmVfY2hhaW4uKHJhdGVfbGltaXQgLSZndDsgYmxvY2tfaXApWzBd"><marker id="mk-d2-2784127954-3488378134" markerWidth="10.000000" markerHeight="12.000000" refX="7.000000" refY="6.000000" viewBox="0.000000 0.000000 10.000000 12.000000" orient="auto" markerUnits="userSpaceOnUse"> <polygon points="0.000000,0.000000 10.000000,6.000000 0.000000,12.000000" fill="#CBA6f7" class="connection fill-B1" stroke-width="2" /> </marker><path d="M 1920.492035 521.541655 C 2000.900024 514.343994 2047.900024 512.500000 2149.500000 512.500000" stroke="#CBA6f7" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-2784127954-3488378134)" mask="url(#d2-2784127954)" /></g><g class="Y2x1c3Rlci50cmFlZmlrLm1pZGRsZXdhcmVfY2hhaW4uKGJsb2NrX2lwIC0mZ3Q7IGJsb2NrX3BhdGgpWzBd"><path d="M 2282.000000 512.500000 C 2360.000000 512.500000 2394.500000 512.500000 2448.500000 512.500000" stroke="#CBA6f7" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-2784127954-3488378134)" mask="url(#d2-2784127954)" /></g><g class="Y2x1c3Rlci50cmFlZmlrLm1pZGRsZXdhcmVfY2hhaW4uKGJsb2NrX3BhdGggLSZndDsgYmxvY2tfdWEpWzBd"><path d="M 2598.500000 512.500000 C 2653.699951 512.500000 2682.500000 512.500000 2736.500000 512.500000" stroke="#CBA6f7" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-2784127954-3488378134)" mask="url(#d2-2784127954)" /></g><g class="Y2x1c3Rlci50cmFlZmlrLihlbnRyeXBvaW50IC0mZ3Q7IGluZ3Jlc3MpWzBd"><path d="M 1022.999988 583.993103 C 1079.000000 583.799988 1116.699951 583.750000 1205.500000 583.750000" stroke="#CBA6f7" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-2784127954-3488378134)" mask="url(#d2-2784127954)" /></g><g class="Y2x1c3Rlci50cmFlZmlrLihpbmdyZXNzIC0mZ3Q7IG1pZGRsZXdhcmVfY2hhaW4pWzBd"><path d="M 1523.500000 583.750000 C 1613.500000 583.750000 1659.699951 583.750000 1748.500000 583.750000" stroke="#CBA6f7" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-2784127954-3488378134)" mask="url(#d2-2784127954)" /></g><g class="Y2x1c3Rlci4odHJhZWZpay5taWRkbGV3YXJlX2NoYWluIC0mZ3Q7IHNlcnZpY2UpWzBd"><marker id="mk-d2-2784127954-487057793" markerWidth="10.000000" markerHeight="12.000000" refX="7.000000" refY="6.000000" viewBox="0.000000 0.000000 10.000000 12.000000" orient="auto" markerUnits="userSpaceOnUse"> <polygon points="0.000000,0.000000 10.000000,6.000000 0.000000,12.000000" fill="#2E7D32" class="connection" stroke-width="2" /> </marker><path d="M 2951.500000 512.500000 C 3041.500000 512.500000 3170.399902 512.599976 3238.000062 512.977653" stroke="#2E7D32" fill="none" class="connection" style="stroke-width:2;" marker-end="url(#mk-d2-2784127954-487057793)" mask="url(#d2-2784127954)" /><text x="3095.500000" y="518.000000" fill="#BAC2DE" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px">Pass</text></g><g class="Y2x1c3Rlci4oc2VydmljZSAtJmd0OyBwb2RzKVswXQ=="><path d="M 3472.999953 512.013699 C 3529.399902 512.400024 3625.100098 512.500000 3655.500000 512.500000" stroke="#CBA6f7" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-2784127954-3488378134)" mask="url(#d2-2784127954)" /></g><g class="Y2x1c3Rlci4odHJhZWZpay5taWRkbGV3YXJlX2NoYWluLnJhdGVfbGltaXQgLSZndDsgcmVqZWN0KVswXQ=="><marker id="mk-d2-2784127954-1557190539" markerWidth="10.000000" markerHeight="12.000000" refX="7.000000" refY="6.000000" viewBox="0.000000 0.000000 10.000000 12.000000" orient="auto" markerUnits="userSpaceOnUse"> <polygon points="0.000000,0.000000 10.000000,6.000000 0.000000,12.000000" fill="#C62828" class="connection" stroke-width="2" /> </marker><path d="M 1920.481234 537.313312 C 2000.900024 548.408020 2049.800049 578.599976 2160.123709 685.220261" stroke="#C62828" fill="none" class="connection" style="stroke-width:2;stroke-dasharray:10.000000,9.865639;" marker-end="url(#mk-d2-2784127954-1557190539)" mask="url(#d2-2784127954)" /><text x="2055.500000" y="590.000000" fill="#BAC2DE" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px">Exceeded</text></g><g class="Y2x1c3Rlci4obWlkZGxld2FyZV9jcmQgLSZndDsgdHJhZWZpaylbMF0="><marker id="mk-d2-2784127954-269071338" markerWidth="10.000000" markerHeight="12.000000" refX="7.000000" refY="6.000000" viewBox="0.000000 0.000000 10.000000 12.000000" orient="auto" markerUnits="userSpaceOnUse"> <polygon points="0.000000,0.000000 10.000000,6.000000 0.000000,12.000000" fill="#0277BD" class="connection" stroke-width="2" /> </marker><path d="M 439.500000 430.500000 C 571.099976 430.500000 738.099976 430.500000 768.500000 430.500000" stroke="#0277BD" fill="none" class="connection" style="stroke-width:2;stroke-dasharray:6.000000,5.919384;" marker-end="url(#mk-d2-2784127954-269071338)" mask="url(#d2-2784127954)" /><text x="605.500000" y="428.000000" fill="#BAC2DE" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px"><tspan x="605.500000" dy="0.000000">Traefik watches</tspan><tspan x="605.500000" dy="18.500000">CRD changes</tspan></text></g><g class="KGNsaWVudCAtJmd0OyBjbHVzdGVyLnRyYWVmaWsuZW50cnlwb2ludClbMF0="><marker id="mk-d2-2784127954-3790674192" markerWidth="10.000000" markerHeight="12.000000" refX="7.000000" refY="6.000000" viewBox="0.000000 0.000000 10.000000 12.000000" orient="auto" markerUnits="userSpaceOnUse"> <polygon points="0.000000,0.000000 10.000000,6.000000 0.000000,12.000000" fill="#1565C0" class="connection" stroke-width="2" /> </marker><path d="M 312.012595 930.275283 C 445.799988 702.400024 504.500000 645.000000 542.000000 645.000000 C 579.500000 645.000000 745.799988 639.599976 807.202943 619.257919" stroke="#1565C0" fill="none" class="connection" style="stroke-width:2;" marker-end="url(#mk-d2-2784127954-3790674192)" mask="url(#d2-2784127954)" /><text x="490.500000" y="664.000000" fill="#BAC2DE" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px">HTTPS</text></g><mask id="d2-2784127954" maskUnits="userSpaceOnUse" x="44" y="-154" width="3825" height="1294"> | |
| <rect x="44" y="-154" width="3825" height="1294" fill="white"></rect> | |
| <rect x="3078.000000" y="502.000000" width="35" height="21" fill="black"></rect> | |
| <rect x="2022.000000" y="574.000000" width="67" height="21" fill="black"></rect> | |
| <rect x="551.000000" y="412.000000" width="109" height="37" fill="black"></rect> | |
| <rect x="466.000000" y="648.000000" width="49" height="21" fill="black"></rect> | |
| </mask></svg></svg> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment